Compare commits
10 commits
b5d6919c62
...
f268e1e462
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f268e1e462 | ||
|
|
a3a0b824b5 | ||
|
|
583a858015 | ||
|
|
447fb84758 | ||
|
|
ea2a2d81e5 | ||
|
|
888cf87c0f | ||
|
|
0df36891b1 | ||
|
|
11d6faae70 | ||
|
|
3a561cd1aa | ||
|
|
949a8d3d9c |
10 changed files with 137 additions and 91 deletions
18
flake.lock
generated
18
flake.lock
generated
|
|
@ -31,11 +31,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773190009,
|
"lastModified": 1774411715,
|
||||||
"narHash": "sha256-QDBoepUZNQaIEvOqCGku6XjUp2sSh+7xamA8vNe9HlQ=",
|
"narHash": "sha256-mceIHtVMXpLAfr1W0VK9ceTBX5yKu4gGWpVbThWTsAA=",
|
||||||
"owner": "9001",
|
"owner": "9001",
|
||||||
"repo": "copyparty",
|
"repo": "copyparty",
|
||||||
"rev": "8a9066c35cd94226ee0e99d5d36e8b630ed8d2a3",
|
"rev": "26e663d111e39ca96c63702ad27a05b6736607cf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -129,11 +129,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773179137,
|
"lastModified": 1774626137,
|
||||||
"narHash": "sha256-EdW2bwzlfme0vbMOcStnNmKlOAA05Bp6su2O8VLGT0k=",
|
"narHash": "sha256-1WelwA45Xm4glTG8R9IX9jYeFKDG2HbR79jAauLezUE=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "3f98e2bbc661ec0aaf558d8a283d6955f05f1d09",
|
"rev": "9df3a639007cfe0d074433f7fc225ea94f877d08",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -144,11 +144,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772963539,
|
"lastModified": 1774386573,
|
||||||
"narHash": "sha256-9jVDGZnvCckTGdYT53d/EfznygLskyLQXYwJLKMPsZs=",
|
"narHash": "sha256-4hAV26quOxdC6iyG7kYaZcM3VOskcPUrdCQd/nx8obc=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9dcb002ca1690658be4a04645215baea8b95f31d",
|
"rev": "46db2e09e1d3f113a13c0d7b81e2f221c63b8ce9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,15 @@
|
||||||
imports = [
|
imports = [
|
||||||
inputs.agenix.nixosModules.default
|
inputs.agenix.nixosModules.default
|
||||||
inputs.copyparty.nixosModules.default
|
inputs.copyparty.nixosModules.default
|
||||||
|
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
../../modules/nixos
|
|
||||||
|
../../modules/nixos/tailscale.nix
|
||||||
|
../../modules/nixos/jellyfin.nix
|
||||||
|
../../modules/nixos/immich.nix
|
||||||
|
../../modules/nixos/paperless.nix
|
||||||
|
../../modules/nixos/copyparty.nix
|
||||||
|
../../modules/nixos/samba.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,13 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.agenix.nixosModules.default
|
inputs.agenix.nixosModules.default
|
||||||
|
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
||||||
../../modules/nixos/tailscale.nix
|
../../modules/nixos/tailscale.nix
|
||||||
|
../../modules/nixos/caddy.nix
|
||||||
../../modules/nixos/matrix.nix
|
../../modules/nixos/matrix.nix
|
||||||
../../modules/nixos/website.nix
|
../../modules/nixos/forgejo.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# Workaround for https://github.com/NixOS/nix/issues/8502
|
# Workaround for https://github.com/NixOS/nix/issues/8502
|
||||||
|
|
@ -22,6 +25,13 @@
|
||||||
|
|
||||||
zramSwap.enable = true;
|
zramSwap.enable = true;
|
||||||
|
|
||||||
|
swapDevices = [
|
||||||
|
{
|
||||||
|
device = "/swapfile";
|
||||||
|
size = 1 * 1024; # 1GB
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
security.sudo.extraConfig = ''
|
security.sudo.extraConfig = ''
|
||||||
Defaults lecture = never
|
Defaults lecture = never
|
||||||
Defaults pwfeedback
|
Defaults pwfeedback
|
||||||
|
|
|
||||||
74
modules/nixos/caddy.nix
Normal file
74
modules/nixos/caddy.nix
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
{
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d /var/www/jankremer.de 755 jan users -"
|
||||||
|
];
|
||||||
|
|
||||||
|
services.caddy = {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts = {
|
||||||
|
"jankremer.de:8448".extraConfig = # caddyfile
|
||||||
|
''
|
||||||
|
reverse_proxy localhost:6167
|
||||||
|
'';
|
||||||
|
|
||||||
|
"jankremer.de".extraConfig = # caddyfile
|
||||||
|
''
|
||||||
|
handle /_matrix/* {
|
||||||
|
reverse_proxy localhost:6167
|
||||||
|
}
|
||||||
|
|
||||||
|
handle /.well-known/matrix/server {
|
||||||
|
header Content-Type application/json
|
||||||
|
respond `{"m.server": "jankremer.de:443"}` 200
|
||||||
|
}
|
||||||
|
|
||||||
|
handle /.well-known/matrix/client {
|
||||||
|
header Content-Type application/json
|
||||||
|
header Access-Control-Allow-Origin *
|
||||||
|
respond `{"m.homeserver": {"base_url": "https://jankremer.de"}}` 200
|
||||||
|
}
|
||||||
|
|
||||||
|
handle {
|
||||||
|
root * /var/www/jankremer.de
|
||||||
|
file_server
|
||||||
|
|
||||||
|
@static {
|
||||||
|
path *.css *.js *.woff2 *.woff *.ttf *.png *.jpg *.jpeg *.svg *.ico *.webp
|
||||||
|
}
|
||||||
|
header @static Cache-Control "public, max-age=31536000, immutable"
|
||||||
|
|
||||||
|
@html {
|
||||||
|
path *.html
|
||||||
|
}
|
||||||
|
header @html Cache-Control "no-cache"
|
||||||
|
}
|
||||||
|
|
||||||
|
handle_errors {
|
||||||
|
rewrite * /404.html
|
||||||
|
file_server
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
"git.jankremer.de".extraConfig = # caddyfile
|
||||||
|
''
|
||||||
|
reverse_proxy localhost:3000
|
||||||
|
'';
|
||||||
|
|
||||||
|
"jankremer.eu".extraConfig = # caddyfile
|
||||||
|
''
|
||||||
|
redir https://jankremer.de{uri} permanent
|
||||||
|
'';
|
||||||
|
|
||||||
|
"git.jankremer.eu".extraConfig = # caddyfile
|
||||||
|
''
|
||||||
|
redir https://git.jankremer.de{uri} permanent
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [
|
||||||
|
80
|
||||||
|
443
|
||||||
|
8448
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./copyparty.nix
|
|
||||||
# ./forgejo.nix
|
|
||||||
./immich.nix
|
|
||||||
./jellyfin.nix
|
|
||||||
# ./minecraft.nix
|
|
||||||
./paperless.nix
|
|
||||||
./samba.nix
|
|
||||||
./tailscale.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +1,13 @@
|
||||||
{ config, ... }:
|
{ config, ... }:
|
||||||
|
let
|
||||||
|
domain = "git.jankremer.de";
|
||||||
|
in
|
||||||
{
|
{
|
||||||
|
age.secrets.forgejo-mailer = {
|
||||||
|
file = ../../modules/secrets/forgejo-mailer.age;
|
||||||
|
owner = "forgejo";
|
||||||
|
};
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
forgejo = {
|
forgejo = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -8,14 +16,25 @@
|
||||||
settings = {
|
settings = {
|
||||||
service.DISABLE_REGISTRATION = true;
|
service.DISABLE_REGISTRATION = true;
|
||||||
server = {
|
server = {
|
||||||
DOMAIN = "git.alpine-centauri.ts.net";
|
DOMAIN = domain;
|
||||||
ROOT_URL = "https://${config.services.forgejo.settings.server.DOMAIN}";
|
ROOT_URL = "https://${domain}";
|
||||||
HTTP_PORT = 3010;
|
START_SSH_SERVER = false;
|
||||||
|
SSH_PORT = 22;
|
||||||
};
|
};
|
||||||
actions = {
|
mailer = {
|
||||||
ENABLED = true;
|
ENABLED = true;
|
||||||
DEFAULT_ACTIONS_URL = "github";
|
SMTP_ADDR = "smtp.mail.me.com";
|
||||||
|
SMTP_PORT = 587;
|
||||||
|
FROM = "git@jankremer.de";
|
||||||
|
USER = "janurskremer@me.com";
|
||||||
};
|
};
|
||||||
|
# actions = {
|
||||||
|
# ENABLED = true;
|
||||||
|
# DEFAULT_ACTIONS_URL = "github";
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
secrets = {
|
||||||
|
mailer.PASSWD = config.age.secrets.forgejo-mailer.path;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -17,40 +17,4 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.caddy = {
|
|
||||||
enable = true;
|
|
||||||
## Matrix federation
|
|
||||||
virtualHosts = {
|
|
||||||
"jankremer.de:8448" = {
|
|
||||||
extraConfig = ''
|
|
||||||
reverse_proxy localhost:6167
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
"jankremer.de" = {
|
|
||||||
extraConfig = ''
|
|
||||||
handle /_matrix/* {
|
|
||||||
reverse_proxy localhost:6167
|
|
||||||
}
|
|
||||||
|
|
||||||
handle /.well-known/matrix/server {
|
|
||||||
header Content-Type application/json
|
|
||||||
respond `{"m.server": "jankremer.de:443"}` 200
|
|
||||||
}
|
|
||||||
|
|
||||||
handle /.well-known/matrix/client {
|
|
||||||
header Content-Type application/json
|
|
||||||
header Access-Control-Allow-Origin *
|
|
||||||
respond `{"m.homeserver": {"base_url": "https://jankremer.de"}}` 200
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
80
|
|
||||||
443
|
|
||||||
8448
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
{
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d /var/www/jankremer.de 755 jan users -"
|
|
||||||
];
|
|
||||||
|
|
||||||
services.caddy.virtualHosts."jankremer.de".extraConfig = ''
|
|
||||||
handle {
|
|
||||||
root * /var/www/jankremer.de
|
|
||||||
file_server
|
|
||||||
|
|
||||||
@static {
|
|
||||||
path *.css *.js *.woff2 *.woff *.ttf *.png *.jpg *.jpeg *.svg *.ico *.webp
|
|
||||||
}
|
|
||||||
header @static Cache-Control "public, max-age=31536000, immutable"
|
|
||||||
|
|
||||||
@html {
|
|
||||||
path *.html
|
|
||||||
}
|
|
||||||
header @html Cache-Control "no-cache"
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
80
|
|
||||||
443
|
|
||||||
];
|
|
||||||
}
|
|
||||||
9
modules/secrets/forgejo-mailer.age
Normal file
9
modules/secrets/forgejo-mailer.age
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
age-encryption.org/v1
|
||||||
|
-> ssh-ed25519 2otpcg 3/3V9NuhhEEvC5Czd52LroF3gb+5R8kVMwUQEdjQPz4
|
||||||
|
W69B15eEI4+0v+TRKzS9mCs1+Gwjd2XeS9lykr5pxyQ
|
||||||
|
-> ssh-ed25519 40YjXQ Ie0rCVXk2DtsE/V8pcL3o7UXD1U/1Ag/knDrDOr0REw
|
||||||
|
Zuc42+JOtssFl7puQvHRdLuPpA51qgykiQ9/9xJlSK0
|
||||||
|
-> ssh-ed25519 wbs2Dw qwhCUJQmXljIcEO8ysfSFpFPWqdmW5ysMhYxEW9QmUU
|
||||||
|
w5nSiL+pAX36RG2A/V4QijFjqVzIZ+5/HsbS/C2I8S0
|
||||||
|
--- Rm8JLyJwpZp1BBfARjKFz7vnJjGagN1VOgpHSmI7zDU
|
||||||
|
‚C_.¹¡Ìâ"׋:
`F…ƒU¤Ø_ÀŒ_)ÚžŸkRÉ7|I.b±áö)4:
|
||||||
|
|
@ -2,6 +2,7 @@ let
|
||||||
malus = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPTpgedzJ7vs3GMOjUeQGkAzGhNZRhvMMz9Z1whaWieE";
|
malus = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPTpgedzJ7vs3GMOjUeQGkAzGhNZRhvMMz9Z1whaWieE";
|
||||||
galanthus = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIZYQao2OKQxyic+I327VZ7lQECh9hSS9cgsls3e/a1u";
|
galanthus = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIZYQao2OKQxyic+I327VZ7lQECh9hSS9cgsls3e/a1u";
|
||||||
nimbus = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDIjr3r9RVTzMPNvfBWxVei8aGMlay3smMhhuGxEMRaj";
|
nimbus = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDIjr3r9RVTzMPNvfBWxVei8aGMlay3smMhhuGxEMRaj";
|
||||||
|
|
||||||
all = [
|
all = [
|
||||||
malus
|
malus
|
||||||
galanthus
|
galanthus
|
||||||
|
|
@ -13,4 +14,5 @@ in
|
||||||
"paperless-admin.age".publicKeys = all;
|
"paperless-admin.age".publicKeys = all;
|
||||||
"tailscale.age".publicKeys = all;
|
"tailscale.age".publicKeys = all;
|
||||||
"matrix-registration-token.age".publicKeys = all;
|
"matrix-registration-token.age".publicKeys = all;
|
||||||
|
"forgejo-mailer.age".publicKeys = all;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue