mirror of
https://git.pvv.ntnu.no/Drift/pvv-nixos-config.git
synced 2026-02-20 17:07:51 +01:00
Compare commits
1 Commits
main
...
e9c82b4625
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e9c82b4625 |
16
.sops.yaml
16
.sops.yaml
@@ -20,9 +20,8 @@ keys:
|
|||||||
- &host_lupine-3 age1j2u876z8hu87q5npfxzzpfgllyw8ypj66d7cgelmzmnrf3xud34qzkntp9
|
- &host_lupine-3 age1j2u876z8hu87q5npfxzzpfgllyw8ypj66d7cgelmzmnrf3xud34qzkntp9
|
||||||
- &host_lupine-4 age1t8zlawqkmhye737pn8yx0z3p9cl947d9ktv2cajdc6hnvn52d3fsc59s2k
|
- &host_lupine-4 age1t8zlawqkmhye737pn8yx0z3p9cl947d9ktv2cajdc6hnvn52d3fsc59s2k
|
||||||
- &host_lupine-5 age199zkqq4jp4yc3d0hx2q0ksxdtp42xhmjsqwyngh8tswuck34ke3smrfyqu
|
- &host_lupine-5 age199zkqq4jp4yc3d0hx2q0ksxdtp42xhmjsqwyngh8tswuck34ke3smrfyqu
|
||||||
- &host_skrott age1lpkju2e053aaddpgsr4ef83epclf4c9tp4m98d35ft2fswr8p4tq2ua0mf
|
- &host_skrott age1hlvwswsljxsvrtp4leuw8a8rf8l2q6y06xvxtafvzpq54xm9aegs0kqw2e
|
||||||
- &host_ustetind age1hffjafs4slznksefmtqrlj7rdaqgzqncn4un938rhr053237ry8s3rs0v8
|
- &host_ustetind age1hffjafs4slznksefmtqrlj7rdaqgzqncn4un938rhr053237ry8s3rs0v8
|
||||||
- &host_skrot age1hzkvnktkr8t5gvtq0ccw69e44z5z6wf00n3xhk3hj24emf07je5s6q2evr
|
|
||||||
|
|
||||||
creation_rules:
|
creation_rules:
|
||||||
# Global secrets
|
# Global secrets
|
||||||
@@ -145,18 +144,5 @@ creation_rules:
|
|||||||
- *user_pederbs_sopp
|
- *user_pederbs_sopp
|
||||||
- *user_pederbs_nord
|
- *user_pederbs_nord
|
||||||
- *user_pederbs_bjarte
|
- *user_pederbs_bjarte
|
||||||
- *user_vegardbm
|
|
||||||
pgp:
|
|
||||||
- *user_oysteikt
|
|
||||||
- path_regex: secrets/skrot/[^/]+\.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *host_skrot
|
|
||||||
- *user_danio
|
|
||||||
- *user_felixalb
|
|
||||||
- *user_pederbs_sopp
|
|
||||||
- *user_pederbs_nord
|
|
||||||
- *user_pederbs_bjarte
|
|
||||||
- *user_vegardbm
|
|
||||||
pgp:
|
pgp:
|
||||||
- *user_oysteikt
|
- *user_oysteikt
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ revert the changes on the next nightly rebuild (tends to happen when everybody i
|
|||||||
| [kommode][kom] | Virtual | Gitea + Gitea pages |
|
| [kommode][kom] | Virtual | Gitea + Gitea pages |
|
||||||
| [lupine][lup] | Physical | Gitea CI/CD runners |
|
| [lupine][lup] | Physical | Gitea CI/CD runners |
|
||||||
| shark | Virtual | Test host for authentication, absolutely horrendous |
|
| shark | Virtual | Test host for authentication, absolutely horrendous |
|
||||||
| [skrot/skrott][skr] | Physical | Kiosk, snacks and soda |
|
| [skrott][skr] | Physical | Kiosk, snacks and soda |
|
||||||
| [wenche][wen] | Virtual | Nix-builders, general purpose compute |
|
| [wenche][wen] | Virtual | Nix-builders, general purpose compute |
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|||||||
@@ -19,9 +19,6 @@
|
|||||||
# Check computer specs
|
# Check computer specs
|
||||||
lshw
|
lshw
|
||||||
|
|
||||||
# Check who is keeping open files
|
|
||||||
lsof
|
|
||||||
|
|
||||||
# Scan for open ports with netstat
|
# Scan for open ports with netstat
|
||||||
net-tools
|
net-tools
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
{
|
{
|
||||||
security.acme = {
|
security.acme = {
|
||||||
acceptTerms = true;
|
acceptTerms = true;
|
||||||
defaults.email = "acme-drift@pvv.ntnu.no";
|
defaults.email = "drift@pvv.ntnu.no";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Let's not spam LetsEncrypt in `nixos-rebuild build-vm` mode:
|
# Let's not spam LetsEncrypt in `nixos-rebuild build-vm` mode:
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ is up to date, you can do the following:
|
|||||||
|
|
||||||
```console
|
```console
|
||||||
# Fetch gpg (unless you have it already)
|
# Fetch gpg (unless you have it already)
|
||||||
nix shell nixpkgs#gnupg
|
nix-shell -p gpg
|
||||||
|
|
||||||
# Import oysteikts key to the gpg keychain
|
# Import oysteikts key to the gpg keychain
|
||||||
gpg --import ./keys/oysteikt.pub
|
gpg --import ./keys/oysteikt.pub
|
||||||
|
|||||||
40
flake.lock
generated
40
flake.lock
generated
@@ -7,11 +7,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770133120,
|
"lastModified": 1769510541,
|
||||||
"narHash": "sha256-RuAWONXb+U3omSsuIPCrPcgj0XYqv+2djG0cnPGEyKg=",
|
"narHash": "sha256-jxuQY0anT3YpwpnYB5w7p6EPS6UWIj4vGxzfsOJvC1I=",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"rev": "3123b8b474319bc75ee780e0357dcdea69dc85e6",
|
"rev": "ec43f67e58f049a709fa2c19601b8c637f38126f",
|
||||||
"revCount": 244,
|
"revCount": 232,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.pvv.ntnu.no/Projects/dibbler.git"
|
"url": "https://git.pvv.ntnu.no/Projects/dibbler.git"
|
||||||
},
|
},
|
||||||
@@ -195,11 +195,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770960722,
|
"lastModified": 1767906352,
|
||||||
"narHash": "sha256-IdhPsWFZUKSJh/nLjGLJvGM5d5Uta+k1FlVYPxTZi0E=",
|
"narHash": "sha256-wYsH9MMAPFG3XTL+3DwI39XMG0F2fTmn/5lt265a3Es=",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"rev": "c2e4aca7e1ba27cd09eeaeab47010d32a11841b2",
|
"rev": "d054c5d064b8ed6d53a0adb0cf6c0a72febe212e",
|
||||||
"revCount": 15,
|
"revCount": 13,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.pvv.ntnu.no/Drift/nix-gitea-themes.git"
|
"url": "https://git.pvv.ntnu.no/Drift/nix-gitea-themes.git"
|
||||||
},
|
},
|
||||||
@@ -233,11 +233,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769724120,
|
"lastModified": 1769484787,
|
||||||
"narHash": "sha256-oQBM04hQk1kotfv4qmIG1tHmuwODd1+hqRJE5TELeCE=",
|
"narHash": "sha256-ufhG9uSA8cCEk/97D/7xQEKcO/ftr4IPRH+HQFaKNdE=",
|
||||||
"rev": "8ec59ed5093c2a742d7744e9ecf58f358aa4a87d",
|
"rev": "999ca0e5484922624254294ea1adc2b90081579e",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://releases.nixos.org/nixos/25.11-small/nixos-25.11.4961.8ec59ed5093c/nixexprs.tar.xz"
|
"url": "https://releases.nixos.org/nixos/25.11-small/nixos-25.11.4804.999ca0e54849/nixexprs.tar.xz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
@@ -261,11 +261,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769813739,
|
"lastModified": 1769434638,
|
||||||
"narHash": "sha256-RmNWW1DQczvDwBHu11P0hGwJZxbngdoymVu7qkwq/2M=",
|
"narHash": "sha256-u19M4QdjvjEySkGhP4fUNyY6rqAbPCdQf/AFw04CkQU=",
|
||||||
"rev": "16a3cae5c2487b1afa240e5f2c1811f172419558",
|
"rev": "9c2822d7024c032e66000a8b8a47e91b4e63ffc8",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://releases.nixos.org/nixos/unstable-small/nixos-26.05pre937548.16a3cae5c248/nixexprs.tar.xz"
|
"url": "https://releases.nixos.org/nixos/unstable-small/nixos-26.05pre935000.9c2822d7024c/nixexprs.tar.xz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
@@ -364,11 +364,11 @@
|
|||||||
"rust-overlay": "rust-overlay_3"
|
"rust-overlay": "rust-overlay_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769834595,
|
"lastModified": 1769325266,
|
||||||
"narHash": "sha256-P1jrO7BxHyIKDuOXHuUb7bi4H2TuYnACW5eqf1gG47g=",
|
"narHash": "sha256-q2G2NG7I1tvfFK4GDnn3vt1CCg0GN4ncdo0NSY+Q2Nc=",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"rev": "def4eec2d59a69b4638b3f25d6d713b703b2fa56",
|
"rev": "23b163e828901cb981eec6f3262e922f437f850b",
|
||||||
"revCount": 49,
|
"revCount": 45,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.pvv.ntnu.no/Projects/roowho2.git"
|
"url": "https://git.pvv.ntnu.no/Projects/roowho2.git"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -184,13 +184,6 @@
|
|||||||
};
|
};
|
||||||
ildkule = stableNixosConfig "ildkule" { };
|
ildkule = stableNixosConfig "ildkule" { };
|
||||||
#ildkule-unstable = unstableNixosConfig "ildkule" { };
|
#ildkule-unstable = unstableNixosConfig "ildkule" { };
|
||||||
skrot = stableNixosConfig "skrot" {
|
|
||||||
modules = [
|
|
||||||
inputs.disko.nixosModules.disko
|
|
||||||
inputs.dibbler.nixosModules.default
|
|
||||||
];
|
|
||||||
overlays = [inputs.dibbler.overlays.default];
|
|
||||||
};
|
|
||||||
shark = stableNixosConfig "shark" { };
|
shark = stableNixosConfig "shark" { };
|
||||||
wenche = stableNixosConfig "wenche" { };
|
wenche = stableNixosConfig "wenche" { };
|
||||||
temmie = stableNixosConfig "temmie" { };
|
temmie = stableNixosConfig "temmie" { };
|
||||||
@@ -203,6 +196,7 @@
|
|||||||
modules = [
|
modules = [
|
||||||
inputs.nix-gitea-themes.nixosModules.default
|
inputs.nix-gitea-themes.nixosModules.default
|
||||||
inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
|
self.nixosModules.robots-txt
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ in {
|
|||||||
rrsyncArgs.ro = true;
|
rrsyncArgs.ro = true;
|
||||||
authorizedKeysAttrs = [
|
authorizedKeysAttrs = [
|
||||||
"restrict"
|
"restrict"
|
||||||
"from=\"principal.pvv.ntnu.no,${values.hosts.principal.ipv6},${values.hosts.principal.ipv4}\""
|
|
||||||
"no-agent-forwarding"
|
"no-agent-forwarding"
|
||||||
"no-port-forwarding"
|
"no-port-forwarding"
|
||||||
"no-pty"
|
"no-pty"
|
||||||
@@ -162,24 +161,6 @@ in {
|
|||||||
$wgDBserver = "${toString cfg.database.host}";
|
$wgDBserver = "${toString cfg.database.host}";
|
||||||
$wgAllowCopyUploads = true;
|
$wgAllowCopyUploads = true;
|
||||||
|
|
||||||
# Files
|
|
||||||
$wgFileExtensions = [
|
|
||||||
'bmp',
|
|
||||||
'gif',
|
|
||||||
'jpeg',
|
|
||||||
'jpg',
|
|
||||||
'mp3',
|
|
||||||
'odg',
|
|
||||||
'odp',
|
|
||||||
'ods',
|
|
||||||
'odt',
|
|
||||||
'pdf',
|
|
||||||
'png',
|
|
||||||
'tiff',
|
|
||||||
'webm',
|
|
||||||
'webp',
|
|
||||||
];
|
|
||||||
|
|
||||||
# Misc program paths
|
# Misc program paths
|
||||||
$wgFFmpegLocation = '${pkgs.ffmpeg}/bin/ffmpeg';
|
$wgFFmpegLocation = '${pkgs.ffmpeg}/bin/ffmpeg';
|
||||||
$wgExiftool = '${pkgs.exiftool}/bin/exiftool';
|
$wgExiftool = '${pkgs.exiftool}/bin/exiftool';
|
||||||
@@ -275,7 +256,6 @@ in {
|
|||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
BindReadOnlyPaths = [ "/run/credentials/mediawiki-init.service/secret-key:/var/lib/mediawiki/secret.key" ];
|
BindReadOnlyPaths = [ "/run/credentials/mediawiki-init.service/secret-key:/var/lib/mediawiki/secret.key" ];
|
||||||
LoadCredential = [ "secret-key:${config.sops.secrets."mediawiki/secret-key".path}" ];
|
LoadCredential = [ "secret-key:${config.sops.secrets."mediawiki/secret-key".path}" ];
|
||||||
UMask = lib.mkForce "0007";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -284,7 +264,6 @@ in {
|
|||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
BindReadOnlyPaths = [ "/run/credentials/phpfpm-mediawiki.service/secret-key:/var/lib/mediawiki/secret.key" ];
|
BindReadOnlyPaths = [ "/run/credentials/phpfpm-mediawiki.service/secret-key:/var/lib/mediawiki/secret.key" ];
|
||||||
LoadCredential = [ "secret-key:${config.sops.secrets."mediawiki/secret-key".path}" ];
|
LoadCredential = [ "secret-key:${config.sops.secrets."mediawiki/secret-key".path}" ];
|
||||||
UMask = lib.mkForce "0007";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, pkgs, lib, values, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
cfg = config.services.vaultwarden;
|
cfg = config.services.vaultwarden;
|
||||||
domain = "pw.pvv.ntnu.no";
|
domain = "pw.pvv.ntnu.no";
|
||||||
@@ -99,21 +99,4 @@ in {
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.rsync-pull-targets = {
|
|
||||||
enable = true;
|
|
||||||
locations."/var/lib/vaultwarden" = {
|
|
||||||
user = "root";
|
|
||||||
rrsyncArgs.ro = true;
|
|
||||||
authorizedKeysAttrs = [
|
|
||||||
"restrict"
|
|
||||||
"from=\"principal.pvv.ntnu.no,${values.hosts.principal.ipv6},${values.hosts.principal.ipv4}\""
|
|
||||||
"no-agent-forwarding"
|
|
||||||
"no-port-forwarding"
|
|
||||||
"no-pty"
|
|
||||||
"no-X11-forwarding"
|
|
||||||
];
|
|
||||||
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB2cDaW52gBtLVaNqoGijvN2ZAVkAWlII5AXUzT3Dswj vaultwarden rsync backup";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, lib, fp, pkgs, values, ... }:
|
{ config, lib, fp, pkgs, ... }:
|
||||||
let
|
let
|
||||||
cfg = config.services.snappymail;
|
cfg = config.services.snappymail;
|
||||||
in {
|
in {
|
||||||
@@ -14,21 +14,5 @@ in {
|
|||||||
enableACME = true;
|
enableACME = true;
|
||||||
kTLS = true;
|
kTLS = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.rsync-pull-targets = {
|
|
||||||
enable = true;
|
|
||||||
locations.${cfg.dataDir} = {
|
|
||||||
user = "root";
|
|
||||||
rrsyncArgs.ro = true;
|
|
||||||
authorizedKeysAttrs = [
|
|
||||||
"restrict"
|
|
||||||
"from=\"principal.pvv.ntnu.no,${values.hosts.principal.ipv6},${values.hosts.principal.ipv4}\""
|
|
||||||
"no-agent-forwarding"
|
|
||||||
"no-port-forwarding"
|
|
||||||
"no-pty"
|
|
||||||
"no-X11-forwarding"
|
|
||||||
];
|
|
||||||
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJENMnuNsHEeA91oX+cj7Qpex2defSXP/lxznxCAqV03 snappymail rsync backup";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,8 @@
|
|||||||
{ pkgs, lib, config, values, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
let
|
let
|
||||||
galleryDir = config.services.pvv-nettsiden.settings.GALLERY.DIR;
|
galleryDir = config.services.pvv-nettsiden.settings.GALLERY.DIR;
|
||||||
transferDir = "${config.services.pvv-nettsiden.settings.GALLERY.DIR}-transfer";
|
transferDir = "${config.services.pvv-nettsiden.settings.GALLERY.DIR}-transfer";
|
||||||
in {
|
in {
|
||||||
users.users.${config.services.pvv-nettsiden.user} = {
|
|
||||||
# NOTE: the user unfortunately needs a registered shell for rrsync to function...
|
|
||||||
# is there anything we can do to remove this?
|
|
||||||
useDefaultShell = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# This is pushed from microbel:/var/www/www-gallery/build-gallery.sh
|
# This is pushed from microbel:/var/www/www-gallery/build-gallery.sh
|
||||||
services.rsync-pull-targets = {
|
services.rsync-pull-targets = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -17,7 +11,6 @@ in {
|
|||||||
rrsyncArgs.wo = true;
|
rrsyncArgs.wo = true;
|
||||||
authorizedKeysAttrs = [
|
authorizedKeysAttrs = [
|
||||||
"restrict"
|
"restrict"
|
||||||
"from=\"microbel.pvv.ntnu.no,${values.hosts.microbel.ipv6},${values.hosts.microbel.ipv4}\""
|
|
||||||
"no-agent-forwarding"
|
"no-agent-forwarding"
|
||||||
"no-port-forwarding"
|
"no-port-forwarding"
|
||||||
"no-pty"
|
"no-pty"
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
./services/calendar-bot.nix
|
./services/calendar-bot.nix
|
||||||
#./services/git-mirrors
|
#./services/git-mirrors
|
||||||
./services/minecraft-heatmap.nix
|
./services/minecraft-heatmap.nix
|
||||||
./services/mysql
|
./services/mysql.nix
|
||||||
./services/postgresql
|
./services/postgres.nix
|
||||||
|
|
||||||
./services/matrix
|
./services/matrix
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ in
|
|||||||
keyFile = config.sops.templates."matrix-livekit-keyfile".path;
|
keyFile = config.sops.templates."matrix-livekit-keyfile".path;
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.lk-jwt-service.environment.LIVEKIT_FULL_ACCESS_HOMESERVERS = lib.mkIf cfg.enable (builtins.concatStringsSep "," [ "pvv.ntnu.no" "dodsorf.as" ]);
|
systemd.services.lk-jwt-service.environment.LIVEKIT_FULL_ACCESS_HOMESERVERS = lib.mkIf cfg.enable matrixDomain;
|
||||||
|
|
||||||
services.nginx.virtualHosts.${matrixDomain} = lib.mkIf cfg.enable {
|
services.nginx.virtualHosts.${matrixDomain} = lib.mkIf cfg.enable {
|
||||||
locations."^~ /livekit/jwt/" = {
|
locations."^~ /livekit/jwt/" = {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, pkgs, lib, values, fp, ... }:
|
{ config, pkgs, fp, ... }:
|
||||||
let
|
let
|
||||||
cfg = config.services.matrix-ooye;
|
cfg = config.services.matrix-ooye;
|
||||||
in
|
in
|
||||||
@@ -28,23 +28,6 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.rsync-pull-targets = lib.mkIf cfg.enable {
|
|
||||||
enable = true;
|
|
||||||
locations."/var/lib/private/matrix-ooye" = {
|
|
||||||
user = "root";
|
|
||||||
rrsyncArgs.ro = true;
|
|
||||||
authorizedKeysAttrs = [
|
|
||||||
"restrict"
|
|
||||||
"from=\"principal.pvv.ntnu.no,${values.hosts.principal.ipv6},${values.hosts.principal.ipv4}\""
|
|
||||||
"no-agent-forwarding"
|
|
||||||
"no-port-forwarding"
|
|
||||||
"no-pty"
|
|
||||||
"no-X11-forwarding"
|
|
||||||
];
|
|
||||||
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE5koYfor5+kKB30Dugj3dAWvmj8h/akQQ2XYDvLobFL matrix_ooye rsync backup";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.matrix-ooye = {
|
services.matrix-ooye = {
|
||||||
enable = true;
|
enable = true;
|
||||||
homeserver = "https://matrix.pvv.ntnu.no";
|
homeserver = "https://matrix.pvv.ntnu.no";
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ in {
|
|||||||
rrsyncArgs.ro = true;
|
rrsyncArgs.ro = true;
|
||||||
authorizedKeysAttrs = [
|
authorizedKeysAttrs = [
|
||||||
"restrict"
|
"restrict"
|
||||||
"from=\"principal.pvv.ntnu.no,${values.hosts.principal.ipv6},${values.hosts.principal.ipv4}\""
|
|
||||||
"no-agent-forwarding"
|
"no-agent-forwarding"
|
||||||
"no-port-forwarding"
|
"no-port-forwarding"
|
||||||
"no-pty"
|
"no-pty"
|
||||||
|
|||||||
@@ -4,8 +4,6 @@ let
|
|||||||
dataDir = "/data/mysql";
|
dataDir = "/data/mysql";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./backup.nix ];
|
|
||||||
|
|
||||||
sops.secrets."mysql/password" = {
|
sops.secrets."mysql/password" = {
|
||||||
owner = "mysql";
|
owner = "mysql";
|
||||||
group = "mysql";
|
group = "mysql";
|
||||||
@@ -44,6 +42,27 @@ in
|
|||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.mysqlBackup = lib.mkIf cfg.enable {
|
||||||
|
enable = true;
|
||||||
|
location = "/var/lib/mysql-backups";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.rsync-pull-targets = lib.mkIf cfg.enable {
|
||||||
|
enable = true;
|
||||||
|
locations.${config.services.mysqlBackup.location} = {
|
||||||
|
user = "root";
|
||||||
|
rrsyncArgs.ro = true;
|
||||||
|
authorizedKeysAttrs = [
|
||||||
|
"restrict"
|
||||||
|
"no-agent-forwarding"
|
||||||
|
"no-port-forwarding"
|
||||||
|
"no-pty"
|
||||||
|
"no-X11-forwarding"
|
||||||
|
];
|
||||||
|
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJgj55/7Cnj4cYMJ5sIkl+OwcGeBe039kXJTOf2wvo9j mysql rsync backup";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = lib.mkIf cfg.enable [ 3306 ];
|
networking.firewall.allowedTCPPorts = lib.mkIf cfg.enable [ 3306 ];
|
||||||
|
|
||||||
systemd.tmpfiles.settings."10-mysql".${dataDir}.d = lib.mkIf cfg.enable {
|
systemd.tmpfiles.settings."10-mysql".${dataDir}.d = lib.mkIf cfg.enable {
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
{ config, lib, pkgs, values, ... }:
|
|
||||||
let
|
|
||||||
cfg = config.services.mysql;
|
|
||||||
backupDir = "/data/mysql-backups";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# services.mysqlBackup = lib.mkIf cfg.enable {
|
|
||||||
# enable = true;
|
|
||||||
# location = "/var/lib/mysql-backups";
|
|
||||||
# };
|
|
||||||
|
|
||||||
systemd.tmpfiles.settings."10-mysql-backups".${backupDir}.d = {
|
|
||||||
user = "mysql";
|
|
||||||
group = "mysql";
|
|
||||||
mode = "700";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.rsync-pull-targets = lib.mkIf cfg.enable {
|
|
||||||
enable = true;
|
|
||||||
locations.${backupDir} = {
|
|
||||||
user = "root";
|
|
||||||
rrsyncArgs.ro = true;
|
|
||||||
authorizedKeysAttrs = [
|
|
||||||
"restrict"
|
|
||||||
"from=\"principal.pvv.ntnu.no,${values.hosts.principal.ipv6},${values.hosts.principal.ipv4}\""
|
|
||||||
"no-agent-forwarding"
|
|
||||||
"no-port-forwarding"
|
|
||||||
"no-pty"
|
|
||||||
"no-X11-forwarding"
|
|
||||||
];
|
|
||||||
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJgj55/7Cnj4cYMJ5sIkl+OwcGeBe039kXJTOf2wvo9j mysql rsync backup";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# NOTE: instead of having the upstream nixpkgs postgres backup unit trigger
|
|
||||||
# another unit, it was easier to just make one ourselves.
|
|
||||||
systemd.services."backup-mysql" = lib.mkIf cfg.enable {
|
|
||||||
description = "Backup MySQL data";
|
|
||||||
requires = [ "mysql.service" ];
|
|
||||||
|
|
||||||
path = with pkgs; [
|
|
||||||
cfg.package
|
|
||||||
coreutils
|
|
||||||
zstd
|
|
||||||
];
|
|
||||||
|
|
||||||
script = let
|
|
||||||
rotations = 2;
|
|
||||||
in ''
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
OUT_FILE="$STATE_DIRECTORY/mysql-dump-$(date --iso-8601).sql.zst"
|
|
||||||
|
|
||||||
mysqldump --all-databases | zstd --compress -9 --rsyncable -o "$OUT_FILE"
|
|
||||||
|
|
||||||
# NOTE: this needs to be a hardlink for rrsync to allow sending it
|
|
||||||
rm "$STATE_DIRECTORY/mysql-dump-latest.sql.zst" ||:
|
|
||||||
ln -T "$OUT_FILE" "$STATE_DIRECTORY/mysql-dump-latest.sql.zst"
|
|
||||||
|
|
||||||
while [ "$(find "$STATE_DIRECTORY" -type f -printf '.' | wc -c)" -gt ${toString (rotations + 1)} ]; do
|
|
||||||
rm "$(find "$STATE_DIRECTORY" -type f -printf '%T+ %p\n' | sort | head -n 1 | cut -d' ' -f2)"
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
User = "mysql";
|
|
||||||
Group = "mysql";
|
|
||||||
UMask = "0077";
|
|
||||||
|
|
||||||
Nice = 19;
|
|
||||||
IOSchedulingClass = "best-effort";
|
|
||||||
IOSchedulingPriority = 7;
|
|
||||||
|
|
||||||
StateDirectory = [ "mysql-backups" ];
|
|
||||||
BindPaths = [ "${backupDir}:/var/lib/mysql-backups" ];
|
|
||||||
|
|
||||||
# TODO: hardening
|
|
||||||
};
|
|
||||||
|
|
||||||
startAt = "*-*-* 02:15:00";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -3,8 +3,6 @@ let
|
|||||||
cfg = config.services.postgresql;
|
cfg = config.services.postgresql;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./backup.nix ];
|
|
||||||
|
|
||||||
services.postgresql = {
|
services.postgresql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.postgresql_18;
|
package = pkgs.postgresql_18;
|
||||||
@@ -123,4 +121,26 @@ in
|
|||||||
|
|
||||||
networking.firewall.allowedTCPPorts = lib.mkIf cfg.enable [ 5432 ];
|
networking.firewall.allowedTCPPorts = lib.mkIf cfg.enable [ 5432 ];
|
||||||
networking.firewall.allowedUDPPorts = lib.mkIf cfg.enable [ 5432 ];
|
networking.firewall.allowedUDPPorts = lib.mkIf cfg.enable [ 5432 ];
|
||||||
|
|
||||||
|
services.postgresqlBackup = lib.mkIf cfg.enable {
|
||||||
|
enable = true;
|
||||||
|
location = "/var/lib/postgres-backups";
|
||||||
|
backupAll = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.rsync-pull-targets = lib.mkIf cfg.enable {
|
||||||
|
enable = true;
|
||||||
|
locations.${config.services.postgresqlBackup.location} = {
|
||||||
|
user = "root";
|
||||||
|
rrsyncArgs.ro = true;
|
||||||
|
authorizedKeysAttrs = [
|
||||||
|
"restrict"
|
||||||
|
"no-agent-forwarding"
|
||||||
|
"no-port-forwarding"
|
||||||
|
"no-pty"
|
||||||
|
"no-X11-forwarding"
|
||||||
|
];
|
||||||
|
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGvO7QX7QmwSiGLXEsaxPIOpAqnJP3M+qqQRe5dzf8gJ postgresql rsync backup";
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
{ config, lib, pkgs, values, ... }:
|
|
||||||
let
|
|
||||||
cfg = config.services.postgresql;
|
|
||||||
backupDir = "/data/postgresql-backups";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# services.postgresqlBackup = lib.mkIf cfg.enable {
|
|
||||||
# enable = true;
|
|
||||||
# location = "/var/lib/postgresql-backups";
|
|
||||||
# backupAll = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
systemd.tmpfiles.settings."10-postgresql-backups".${backupDir}.d = {
|
|
||||||
user = "postgres";
|
|
||||||
group = "postgres";
|
|
||||||
mode = "700";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.rsync-pull-targets = lib.mkIf cfg.enable {
|
|
||||||
enable = true;
|
|
||||||
locations.${backupDir} = {
|
|
||||||
user = "root";
|
|
||||||
rrsyncArgs.ro = true;
|
|
||||||
authorizedKeysAttrs = [
|
|
||||||
"restrict"
|
|
||||||
"from=\"principal.pvv.ntnu.no,${values.hosts.principal.ipv6},${values.hosts.principal.ipv4}\""
|
|
||||||
"no-agent-forwarding"
|
|
||||||
"no-port-forwarding"
|
|
||||||
"no-pty"
|
|
||||||
"no-X11-forwarding"
|
|
||||||
];
|
|
||||||
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGvO7QX7QmwSiGLXEsaxPIOpAqnJP3M+qqQRe5dzf8gJ postgresql rsync backup";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# NOTE: instead of having the upstream nixpkgs postgres backup unit trigger
|
|
||||||
# another unit, it was easier to just make one ourselves
|
|
||||||
systemd.services."backup-postgresql" = {
|
|
||||||
description = "Backup PostgreSQL data";
|
|
||||||
requires = [ "postgresql.service" ];
|
|
||||||
|
|
||||||
path = with pkgs; [
|
|
||||||
coreutils
|
|
||||||
zstd
|
|
||||||
cfg.package
|
|
||||||
];
|
|
||||||
|
|
||||||
script = let
|
|
||||||
rotations = 2;
|
|
||||||
in ''
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
OUT_FILE="$STATE_DIRECTORY/postgresql-dump-$(date --iso-8601).sql.zst"
|
|
||||||
|
|
||||||
pg_dumpall -U postgres | zstd --compress -9 --rsyncable -o "$OUT_FILE"
|
|
||||||
|
|
||||||
# NOTE: this needs to be a hardlink for rrsync to allow sending it
|
|
||||||
rm "$STATE_DIRECTORY/postgresql-dump-latest.sql.zst" ||:
|
|
||||||
ln -T "$OUT_FILE" "$STATE_DIRECTORY/postgresql-dump-latest.sql.zst"
|
|
||||||
|
|
||||||
while [ "$(find "$STATE_DIRECTORY" -type f -printf '.' | wc -c)" -gt ${toString (rotations + 1)} ]; do
|
|
||||||
rm "$(find "$STATE_DIRECTORY" -type f -printf '%T+ %p\n' | sort | head -n 1 | cut -d' ' -f2)"
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
User = "postgres";
|
|
||||||
Group = "postgres";
|
|
||||||
UMask = "0077";
|
|
||||||
|
|
||||||
Nice = 19;
|
|
||||||
IOSchedulingClass = "best-effort";
|
|
||||||
IOSchedulingPriority = 7;
|
|
||||||
|
|
||||||
StateDirectory = [ "postgresql-backups" ];
|
|
||||||
BindPaths = [ "${backupDir}:/var/lib/postgresql-backups" ];
|
|
||||||
|
|
||||||
# TODO: hardening
|
|
||||||
};
|
|
||||||
|
|
||||||
startAt = "*-*-* 01:15:00";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" = {
|
||||||
device = "/dev/disk/by-uuid/933A-3005";
|
device = "/dev/disk/by-uuid/D00A-B488";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [
|
options = [
|
||||||
"fmask=0077"
|
"fmask=0077"
|
||||||
|
|||||||
1009
hosts/ildkule/services/monitoring/dashboards/go-processes.json
Normal file
1009
hosts/ildkule/services/monitoring/dashboards/go-processes.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -13,7 +13,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"description": "",
|
"description": "",
|
||||||
"editable": false,
|
"editable": true,
|
||||||
"gnetId": 11323,
|
"gnetId": 11323,
|
||||||
"graphTooltip": 1,
|
"graphTooltip": 1,
|
||||||
"id": 31,
|
"id": 31,
|
||||||
@@ -1899,7 +1899,7 @@
|
|||||||
"dashes": false,
|
"dashes": false,
|
||||||
"datasource": "$datasource",
|
"datasource": "$datasource",
|
||||||
"decimals": 0,
|
"decimals": 0,
|
||||||
"description": "***System Memory***: Total Memory for the system.\\\n***InnoDB Buffer Pool Data***: InnoDB maintains a storage area called the buffer pool for caching data and indexes in memory.\\\n***TokuDB Cache Size***: Similar in function to the InnoDB Buffer Pool, TokuDB will allocate 50% of the installed RAM for its own cache.\\\n***Key Buffer Size***: Index blocks for MYISAM tables are buffered and are shared by all threads. key_buffer_size is the size of the buffer used for index blocks.\\\n***Adaptive Hash Index Size***: When InnoDB notices that some index values are being accessed very frequently, it builds a hash index for them in memory on top of B-Tree indexes.\\\n ***Query Cache Size***: The query cache stores the text of a SELECT statement together with the corresponding result that was sent to the client. The query cache has huge scalability problems in that only one thread can do an operation in the query cache at the same time.\\\n***InnoDB Dictionary Size***: The data dictionary is InnoDB ‘s internal catalog of tables. InnoDB stores the data dictionary on disk, and loads entries into memory while the server is running.\\\n***InnoDB Log Buffer Size***: The MySQL InnoDB log buffer allows transactions to run without having to write the log to disk before the transactions commit.",
|
"description": "***System Memory***: Total Memory for the system.\\\n***InnoDB Buffer Pool Data***: InnoDB maintains a storage area called the buffer pool for caching data and indexes in memory.\\\n***TokuDB Cache Size***: Similar in function to the InnoDB Buffer Pool, TokuDB will allocate 50% of the installed RAM for its own cache.\\\n***Key Buffer Size***: Index blocks for MYISAM tables are buffered and are shared by all threads. key_buffer_size is the size of the buffer used for index blocks.\\\n***Adaptive Hash Index Size***: When InnoDB notices that some index values are being accessed very frequently, it builds a hash index for them in memory on top of B-Tree indexes.\\\n ***Query Cache Size***: The query cache stores the text of a SELECT statement together with the corresponding result that was sent to the client. The query cache has huge scalability problems in that only one thread can do an operation in the query cache at the same time.\\\n***InnoDB Dictionary Size***: The data dictionary is InnoDB 's internal catalog of tables. InnoDB stores the data dictionary on disk, and loads entries into memory while the server is running.\\\n***InnoDB Log Buffer Size***: The MySQL InnoDB log buffer allows transactions to run without having to write the log to disk before the transactions commit.",
|
||||||
"editable": true,
|
"editable": true,
|
||||||
"error": false,
|
"error": false,
|
||||||
"fieldConfig": {
|
"fieldConfig": {
|
||||||
@@ -3690,7 +3690,7 @@
|
|||||||
},
|
},
|
||||||
"hide": 0,
|
"hide": 0,
|
||||||
"includeAll": false,
|
"includeAll": false,
|
||||||
"label": "Data source",
|
"label": "Data Source",
|
||||||
"multi": false,
|
"multi": false,
|
||||||
"name": "datasource",
|
"name": "datasource",
|
||||||
"options": [],
|
"options": [],
|
||||||
@@ -3713,12 +3713,12 @@
|
|||||||
"definition": "label_values(mysql_up, job)",
|
"definition": "label_values(mysql_up, job)",
|
||||||
"hide": 0,
|
"hide": 0,
|
||||||
"includeAll": true,
|
"includeAll": true,
|
||||||
"label": "Job",
|
"label": "job",
|
||||||
"multi": true,
|
"multi": true,
|
||||||
"name": "job",
|
"name": "job",
|
||||||
"options": [],
|
"options": [],
|
||||||
"query": "label_values(mysql_up, job)",
|
"query": "label_values(mysql_up, job)",
|
||||||
"refresh": 2,
|
"refresh": 1,
|
||||||
"regex": "",
|
"regex": "",
|
||||||
"skipUrlSync": false,
|
"skipUrlSync": false,
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
@@ -3742,12 +3742,12 @@
|
|||||||
"definition": "label_values(mysql_up, instance)",
|
"definition": "label_values(mysql_up, instance)",
|
||||||
"hide": 0,
|
"hide": 0,
|
||||||
"includeAll": true,
|
"includeAll": true,
|
||||||
"label": "Instance",
|
"label": "instance",
|
||||||
"multi": true,
|
"multi": true,
|
||||||
"name": "instance",
|
"name": "instance",
|
||||||
"options": [],
|
"options": [],
|
||||||
"query": "label_values(mysql_up, instance)",
|
"query": "label_values(mysql_up, instance)",
|
||||||
"refresh": 2,
|
"refresh": 1,
|
||||||
"regex": "",
|
"regex": "",
|
||||||
"skipUrlSync": false,
|
"skipUrlSync": false,
|
||||||
"sort": 0,
|
"sort": 0,
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -328,7 +328,7 @@
|
|||||||
"rgba(50, 172, 45, 0.97)"
|
"rgba(50, 172, 45, 0.97)"
|
||||||
],
|
],
|
||||||
"datasource": "${DS_PROMETHEUS}",
|
"datasource": "${DS_PROMETHEUS}",
|
||||||
"format": "short",
|
"format": "decbytes",
|
||||||
"gauge": {
|
"gauge": {
|
||||||
"maxValue": 100,
|
"maxValue": 100,
|
||||||
"minValue": 0,
|
"minValue": 0,
|
||||||
@@ -411,7 +411,7 @@
|
|||||||
"rgba(50, 172, 45, 0.97)"
|
"rgba(50, 172, 45, 0.97)"
|
||||||
],
|
],
|
||||||
"datasource": "${DS_PROMETHEUS}",
|
"datasource": "${DS_PROMETHEUS}",
|
||||||
"format": "short",
|
"format": "decbytes",
|
||||||
"gauge": {
|
"gauge": {
|
||||||
"maxValue": 100,
|
"maxValue": 100,
|
||||||
"minValue": 0,
|
"minValue": 0,
|
||||||
@@ -1410,7 +1410,7 @@
|
|||||||
"tableColumn": "",
|
"tableColumn": "",
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "pg_settings_seq_page_cost{instance=\"$instance\"}",
|
"expr": "pg_settings_seq_page_cost",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 1,
|
"intervalFactor": 1,
|
||||||
"refId": "A"
|
"refId": "A"
|
||||||
@@ -1872,7 +1872,7 @@
|
|||||||
},
|
},
|
||||||
"yaxes": [
|
"yaxes": [
|
||||||
{
|
{
|
||||||
"format": "short",
|
"format": "bytes",
|
||||||
"label": null,
|
"label": null,
|
||||||
"logBase": 1,
|
"logBase": 1,
|
||||||
"max": null,
|
"max": null,
|
||||||
@@ -1966,7 +1966,7 @@
|
|||||||
},
|
},
|
||||||
"yaxes": [
|
"yaxes": [
|
||||||
{
|
{
|
||||||
"format": "short",
|
"format": "bytes",
|
||||||
"label": null,
|
"label": null,
|
||||||
"logBase": 1,
|
"logBase": 1,
|
||||||
"max": null,
|
"max": null,
|
||||||
@@ -2060,7 +2060,7 @@
|
|||||||
},
|
},
|
||||||
"yaxes": [
|
"yaxes": [
|
||||||
{
|
{
|
||||||
"format": "short",
|
"format": "bytes",
|
||||||
"label": null,
|
"label": null,
|
||||||
"logBase": 1,
|
"logBase": 1,
|
||||||
"max": null,
|
"max": null,
|
||||||
@@ -2251,7 +2251,7 @@
|
|||||||
},
|
},
|
||||||
"yaxes": [
|
"yaxes": [
|
||||||
{
|
{
|
||||||
"format": "short",
|
"format": "bytes",
|
||||||
"label": null,
|
"label": null,
|
||||||
"logBase": 1,
|
"logBase": 1,
|
||||||
"max": null,
|
"max": null,
|
||||||
@@ -2439,7 +2439,7 @@
|
|||||||
},
|
},
|
||||||
"yaxes": [
|
"yaxes": [
|
||||||
{
|
{
|
||||||
"format": "short",
|
"format": "bytes",
|
||||||
"label": null,
|
"label": null,
|
||||||
"logBase": 1,
|
"logBase": 1,
|
||||||
"max": null,
|
"max": null,
|
||||||
@@ -2589,35 +2589,35 @@
|
|||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "irate(pg_stat_bgwriter_buffers_backend_total{instance=\"$instance\"}[5m])",
|
"expr": "irate(pg_stat_bgwriter_buffers_backend{instance=\"$instance\"}[5m])",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 1,
|
"intervalFactor": 1,
|
||||||
"legendFormat": "buffers_backend",
|
"legendFormat": "buffers_backend",
|
||||||
"refId": "A"
|
"refId": "A"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "irate(pg_stat_bgwriter_buffers_alloc_total{instance=\"$instance\"}[5m])",
|
"expr": "irate(pg_stat_bgwriter_buffers_alloc{instance=\"$instance\"}[5m])",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 1,
|
"intervalFactor": 1,
|
||||||
"legendFormat": "buffers_alloc",
|
"legendFormat": "buffers_alloc",
|
||||||
"refId": "B"
|
"refId": "B"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "irate(pg_stat_bgwriter_buffers_backend_fsync_total{instance=\"$instance\"}[5m])",
|
"expr": "irate(pg_stat_bgwriter_buffers_backend_fsync{instance=\"$instance\"}[5m])",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 1,
|
"intervalFactor": 1,
|
||||||
"legendFormat": "backend_fsync",
|
"legendFormat": "backend_fsync",
|
||||||
"refId": "C"
|
"refId": "C"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "irate(pg_stat_bgwriter_buffers_checkpoint_total{instance=\"$instance\"}[5m])",
|
"expr": "irate(pg_stat_bgwriter_buffers_checkpoint{instance=\"$instance\"}[5m])",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 1,
|
"intervalFactor": 1,
|
||||||
"legendFormat": "buffers_checkpoint",
|
"legendFormat": "buffers_checkpoint",
|
||||||
"refId": "D"
|
"refId": "D"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "irate(pg_stat_bgwriter_buffers_clean_total{instance=\"$instance\"}[5m])",
|
"expr": "irate(pg_stat_bgwriter_buffers_clean{instance=\"$instance\"}[5m])",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 1,
|
"intervalFactor": 1,
|
||||||
"legendFormat": "buffers_clean",
|
"legendFormat": "buffers_clean",
|
||||||
@@ -2886,14 +2886,14 @@
|
|||||||
"steppedLine": false,
|
"steppedLine": false,
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"expr": "irate(pg_stat_bgwriter_checkpoint_write_time_total{instance=\"$instance\"}[5m])",
|
"expr": "irate(pg_stat_bgwriter_checkpoint_write_time{instance=\"$instance\"}[5m])",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 1,
|
"intervalFactor": 1,
|
||||||
"legendFormat": "write_time - Total amount of time that has been spent in the portion of checkpoint processing where files are written to disk.",
|
"legendFormat": "write_time - Total amount of time that has been spent in the portion of checkpoint processing where files are written to disk.",
|
||||||
"refId": "B"
|
"refId": "B"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"expr": "irate(pg_stat_bgwriter_checkpoint_sync_time_total{instance=\"$instance\"}[5m])",
|
"expr": "irate(pg_stat_bgwriter_checkpoint_sync_time{instance=\"$instance\"}[5m])",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
"intervalFactor": 1,
|
"intervalFactor": 1,
|
||||||
"legendFormat": "sync_time - Total amount of time that has been spent in the portion of checkpoint processing where files are synchronized to disk.",
|
"legendFormat": "sync_time - Total amount of time that has been spent in the portion of checkpoint processing where files are synchronized to disk.",
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -47,13 +47,13 @@ in {
|
|||||||
{
|
{
|
||||||
name = "Node Exporter Full";
|
name = "Node Exporter Full";
|
||||||
type = "file";
|
type = "file";
|
||||||
url = "https://grafana.com/api/dashboards/1860/revisions/42/download";
|
url = "https://grafana.com/api/dashboards/1860/revisions/29/download";
|
||||||
options.path = dashboards/node-exporter-full.json;
|
options.path = dashboards/node-exporter-full.json;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "Matrix Synapse";
|
name = "Matrix Synapse";
|
||||||
type = "file";
|
type = "file";
|
||||||
url = "https://github.com/element-hq/synapse/raw/refs/heads/develop/contrib/grafana/synapse.json";
|
url = "https://raw.githubusercontent.com/matrix-org/synapse/develop/contrib/grafana/synapse.json";
|
||||||
options.path = dashboards/synapse.json;
|
options.path = dashboards/synapse.json;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -65,9 +65,15 @@ in {
|
|||||||
{
|
{
|
||||||
name = "Postgresql";
|
name = "Postgresql";
|
||||||
type = "file";
|
type = "file";
|
||||||
url = "https://grafana.com/api/dashboards/9628/revisions/8/download";
|
url = "https://grafana.com/api/dashboards/9628/revisions/7/download";
|
||||||
options.path = dashboards/postgres.json;
|
options.path = dashboards/postgres.json;
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "Go Processes (gogs)";
|
||||||
|
type = "file";
|
||||||
|
url = "https://grafana.com/api/dashboards/240/revisions/3/download";
|
||||||
|
options.path = dashboards/go-processes.json;
|
||||||
|
}
|
||||||
{
|
{
|
||||||
name = "Gitea Dashboard";
|
name = "Gitea Dashboard";
|
||||||
type = "file";
|
type = "file";
|
||||||
|
|||||||
@@ -10,59 +10,6 @@ in
|
|||||||
catppuccin = pkgs.gitea-theme-catppuccin;
|
catppuccin = pkgs.gitea-theme-catppuccin;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.gitea.settings = {
|
|
||||||
ui = {
|
|
||||||
DEFAULT_THEME = "gitea-auto";
|
|
||||||
REACTIONS = lib.concatStringsSep "," [
|
|
||||||
"+1"
|
|
||||||
"-1"
|
|
||||||
"laugh"
|
|
||||||
"confused"
|
|
||||||
"heart"
|
|
||||||
"hooray"
|
|
||||||
"rocket"
|
|
||||||
"eyes"
|
|
||||||
"100"
|
|
||||||
"anger"
|
|
||||||
"astonished"
|
|
||||||
"no_good"
|
|
||||||
"ok_hand"
|
|
||||||
"pensive"
|
|
||||||
"pizza"
|
|
||||||
"point_up"
|
|
||||||
"sob"
|
|
||||||
"skull"
|
|
||||||
"upside_down_face"
|
|
||||||
"shrug"
|
|
||||||
"huh"
|
|
||||||
"bruh"
|
|
||||||
"okiedokie"
|
|
||||||
"grr"
|
|
||||||
];
|
|
||||||
|
|
||||||
CUSTOM_EMOJIS = lib.concatStringsSep "," [
|
|
||||||
"bruh"
|
|
||||||
"grr"
|
|
||||||
"huh"
|
|
||||||
"ohyeah"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"ui.meta" = {
|
|
||||||
AUTHOR = "Programvareverkstedet";
|
|
||||||
DESCRIPTION = "Bokstavelig talt programvareverkstedet";
|
|
||||||
KEYWORDS = lib.concatStringsSep "," [
|
|
||||||
"git"
|
|
||||||
"hackerspace"
|
|
||||||
"nix"
|
|
||||||
"open source"
|
|
||||||
"foss"
|
|
||||||
"organization"
|
|
||||||
"software"
|
|
||||||
"student"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.gitea-customization = lib.mkIf cfg.enable {
|
systemd.services.gitea-customization = lib.mkIf cfg.enable {
|
||||||
description = "Install extra customization in gitea's CUSTOM_DIR";
|
description = "Install extra customization in gitea's CUSTOM_DIR";
|
||||||
wantedBy = [ "gitea.service" ];
|
wantedBy = [ "gitea.service" ];
|
||||||
@@ -110,11 +57,6 @@ in
|
|||||||
install -Dm444 ${extraLinksFooter} ${cfg.customDir}/templates/custom/extra_links_footer.tmpl
|
install -Dm444 ${extraLinksFooter} ${cfg.customDir}/templates/custom/extra_links_footer.tmpl
|
||||||
install -Dm444 ${project-labels} ${cfg.customDir}/options/label/project-labels.yaml
|
install -Dm444 ${project-labels} ${cfg.customDir}/options/label/project-labels.yaml
|
||||||
|
|
||||||
install -Dm644 ${./emotes/bruh.png} ${cfg.customDir}/public/assets/img/emoji/bruh.png
|
|
||||||
install -Dm644 ${./emotes/huh.gif} ${cfg.customDir}/public/assets/img/emoji/huh.png
|
|
||||||
install -Dm644 ${./emotes/grr.png} ${cfg.customDir}/public/assets/img/emoji/grr.png
|
|
||||||
install -Dm644 ${./emotes/okiedokie.jpg} ${cfg.customDir}/public/assets/img/emoji/okiedokie.png
|
|
||||||
|
|
||||||
"${lib.getExe pkgs.rsync}" -a "${customTemplates}/" ${cfg.customDir}/templates/
|
"${lib.getExe pkgs.rsync}" -a "${customTemplates}/" ${cfg.customDir}/templates/
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 7.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 28 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 206 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 145 KiB |
@@ -83,24 +83,11 @@ in {
|
|||||||
AUTO_WATCH_NEW_REPOS = false;
|
AUTO_WATCH_NEW_REPOS = false;
|
||||||
};
|
};
|
||||||
admin.DEFAULT_EMAIL_NOTIFICATIONS = "onmention";
|
admin.DEFAULT_EMAIL_NOTIFICATIONS = "onmention";
|
||||||
|
session.COOKIE_SECURE = true;
|
||||||
security = {
|
security = {
|
||||||
SECRET_KEY = lib.mkForce "";
|
SECRET_KEY = lib.mkForce "";
|
||||||
SECRET_KEY_URI = "file:${config.sops.secrets."gitea/secret-key".path}";
|
SECRET_KEY_URI = "file:${config.sops.secrets."gitea/secret-key".path}";
|
||||||
};
|
};
|
||||||
cache = {
|
|
||||||
ADAPTER = "redis";
|
|
||||||
HOST = "redis+socket://${config.services.redis.servers.gitea.unixSocket}?db=0";
|
|
||||||
ITEM_TTL = "72h";
|
|
||||||
};
|
|
||||||
session = {
|
|
||||||
COOKIE_SECURE = true;
|
|
||||||
PROVIDER = "redis";
|
|
||||||
PROVIDER_CONFIG = "redis+socket://${config.services.redis.servers.gitea.unixSocket}?db=1";
|
|
||||||
};
|
|
||||||
queue = {
|
|
||||||
TYPE = "redis";
|
|
||||||
CONN_STR = "redis+socket://${config.services.redis.servers.gitea.unixSocket}?db=2";
|
|
||||||
};
|
|
||||||
database.LOG_SQL = false;
|
database.LOG_SQL = false;
|
||||||
repository = {
|
repository = {
|
||||||
PREFERRED_LICENSES = lib.concatStringsSep "," [
|
PREFERRED_LICENSES = lib.concatStringsSep "," [
|
||||||
@@ -141,6 +128,31 @@ in {
|
|||||||
AVATAR_MAX_ORIGIN_SIZE = 1024 * 1024 * 2;
|
AVATAR_MAX_ORIGIN_SIZE = 1024 * 1024 * 2;
|
||||||
};
|
};
|
||||||
actions.ENABLED = true;
|
actions.ENABLED = true;
|
||||||
|
ui = {
|
||||||
|
REACTIONS = lib.concatStringsSep "," [
|
||||||
|
"+1"
|
||||||
|
"-1"
|
||||||
|
"laugh"
|
||||||
|
"confused"
|
||||||
|
"heart"
|
||||||
|
"hooray"
|
||||||
|
"rocket"
|
||||||
|
"eyes"
|
||||||
|
"100"
|
||||||
|
"anger"
|
||||||
|
"astonished"
|
||||||
|
"no_good"
|
||||||
|
"ok_hand"
|
||||||
|
"pensive"
|
||||||
|
"pizza"
|
||||||
|
"point_up"
|
||||||
|
"sob"
|
||||||
|
"skull"
|
||||||
|
"upside_down_face"
|
||||||
|
"shrug"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"ui.meta".DESCRIPTION = "Bokstavelig talt programvareverkstedet";
|
||||||
};
|
};
|
||||||
|
|
||||||
dump = {
|
dump = {
|
||||||
@@ -152,26 +164,12 @@ in {
|
|||||||
|
|
||||||
environment.systemPackages = [ cfg.package ];
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
|
||||||
systemd.services.gitea = lib.mkIf cfg.enable {
|
systemd.services.gitea.serviceConfig.CPUSchedulingPolicy = "batch";
|
||||||
wants = [ "redis-gitea.service" ];
|
|
||||||
after = [ "redis-gitea.service" ];
|
|
||||||
|
|
||||||
serviceConfig = {
|
systemd.services.gitea.serviceConfig.CacheDirectory = "gitea/repo-archive";
|
||||||
CPUSchedulingPolicy = "batch";
|
systemd.services.gitea.serviceConfig.BindPaths = [
|
||||||
CacheDirectory = "gitea/repo-archive";
|
"%C/gitea/repo-archive:${cfg.stateDir}/data/repo-archive"
|
||||||
BindPaths = [
|
];
|
||||||
"%C/gitea/repo-archive:${cfg.stateDir}/data/repo-archive"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.redis.servers.gitea = lib.mkIf cfg.enable {
|
|
||||||
enable = true;
|
|
||||||
user = config.services.gitea.user;
|
|
||||||
save = [ ];
|
|
||||||
openFirewall = false;
|
|
||||||
port = 5698;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.nginx.virtualHosts."${domain}" = {
|
services.nginx.virtualHosts."${domain}" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
@@ -195,6 +193,109 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
environment.robots-txt."gitea" = {
|
||||||
|
virtualHost = domain;
|
||||||
|
rules = [
|
||||||
|
{
|
||||||
|
pre_comment = ''
|
||||||
|
Gitea internals
|
||||||
|
|
||||||
|
See these for more information:
|
||||||
|
- https://gitea.com/robots.txt
|
||||||
|
- https://codeberg.org/robots.txt
|
||||||
|
'';
|
||||||
|
User-agent = "*";
|
||||||
|
Disallow = [
|
||||||
|
"/api/*"
|
||||||
|
"/avatars"
|
||||||
|
"/*/*/src/commit/*"
|
||||||
|
"/*/*/commit/*"
|
||||||
|
"/*/*/*/refs/*"
|
||||||
|
"/*/*/*/star"
|
||||||
|
"/*/*/*/watch"
|
||||||
|
"/*/*/labels"
|
||||||
|
"/*/*/activity/*"
|
||||||
|
"/vendor/*"
|
||||||
|
"/swagger.*.json"
|
||||||
|
"/repo/create"
|
||||||
|
"/repo/migrate"
|
||||||
|
"/org/create"
|
||||||
|
"/*/*/fork"
|
||||||
|
"/*/*/watchers"
|
||||||
|
"/*/*/stargazers"
|
||||||
|
"/*/*/forks"
|
||||||
|
"*/.git/"
|
||||||
|
"/*.git"
|
||||||
|
"/*.atom"
|
||||||
|
"/*.rss"
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
pre_comment = "Language Spam";
|
||||||
|
Disallow = "/*?lang=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
pre_comment = ''
|
||||||
|
AI bots
|
||||||
|
|
||||||
|
Sourced from:
|
||||||
|
- https://www.vg.no/robots.txt
|
||||||
|
- https://codeberg.org/robots.txt
|
||||||
|
'';
|
||||||
|
User-agent = [
|
||||||
|
"AI2Bot"
|
||||||
|
"Ai2Bot-Dolma"
|
||||||
|
"Amazonbot"
|
||||||
|
"Applebot-Extended"
|
||||||
|
"Bytespider"
|
||||||
|
"CCBot"
|
||||||
|
"ChatGPT-User"
|
||||||
|
"Claude-Web"
|
||||||
|
"ClaudeBot"
|
||||||
|
"Crawlspace"
|
||||||
|
"Diffbot"
|
||||||
|
"FacebookBot"
|
||||||
|
"FriendlyCrawler"
|
||||||
|
"GPTBot"
|
||||||
|
"Google-Extended"
|
||||||
|
"ICC-Crawler"
|
||||||
|
"ImagesiftBot"
|
||||||
|
"Kangaroo Bot"
|
||||||
|
"Meta-ExternalAgent"
|
||||||
|
"OAI-SearchBot"
|
||||||
|
"Omgili"
|
||||||
|
"Omgilibot"
|
||||||
|
"PanguBot"
|
||||||
|
"PerplexityBot"
|
||||||
|
"PetalBot"
|
||||||
|
"Scrapy"
|
||||||
|
"SemrushBot-OCOB"
|
||||||
|
"Sidetrade indexer bot"
|
||||||
|
"Timpibot"
|
||||||
|
"VelenPublicWebCrawler"
|
||||||
|
"Webzio-Extended"
|
||||||
|
"YouBot"
|
||||||
|
"anthropic-ai"
|
||||||
|
"cohere-ai"
|
||||||
|
"cohere-training-data-crawler"
|
||||||
|
"facebookexternalhit"
|
||||||
|
"iaskspider/2.0"
|
||||||
|
"img2dataset"
|
||||||
|
"meta-externalagent"
|
||||||
|
"omgili"
|
||||||
|
"omgilibot"
|
||||||
|
];
|
||||||
|
Disallow = "/";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
Crawl-delay = "2";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
Sitemap = "https://${domain}/sitemap.xml";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [ sshPort ];
|
networking.firewall.allowedTCPPorts = [ sshPort ];
|
||||||
|
|
||||||
services.rsync-pull-targets = {
|
services.rsync-pull-targets = {
|
||||||
@@ -204,7 +305,6 @@ in {
|
|||||||
rrsyncArgs.ro = true;
|
rrsyncArgs.ro = true;
|
||||||
authorizedKeysAttrs = [
|
authorizedKeysAttrs = [
|
||||||
"restrict"
|
"restrict"
|
||||||
"from=\"principal.pvv.ntnu.no,${values.hosts.principal.ipv6},${values.hosts.principal.ipv4}\""
|
|
||||||
"no-agent-forwarding"
|
"no-agent-forwarding"
|
||||||
"no-port-forwarding"
|
"no-port-forwarding"
|
||||||
"no-pty"
|
"no-pty"
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ in
|
|||||||
users.users."gitea-web" = {
|
users.users."gitea-web" = {
|
||||||
group = "gitea-web";
|
group = "gitea-web";
|
||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
useDefaultShell = true;
|
shell = pkgs.bash;
|
||||||
};
|
};
|
||||||
|
|
||||||
sops.secrets."gitea/web-secret-provider/token" = {
|
sops.secrets."gitea/web-secret-provider/token" = {
|
||||||
|
|||||||
@@ -1,63 +0,0 @@
|
|||||||
{
|
|
||||||
fp,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
values,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
# Include the results of the hardware scan.
|
|
||||||
./hardware-configuration.nix
|
|
||||||
./disk-config.nix
|
|
||||||
(fp /base)
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.consoleLogLevel = 0;
|
|
||||||
|
|
||||||
sops.defaultSopsFile = fp /secrets/skrot/skrot.yaml;
|
|
||||||
|
|
||||||
systemd.network.networks."enp2s0" = values.defaultNetworkConfig // {
|
|
||||||
matchConfig.Name = "enp2s0";
|
|
||||||
address = with values.hosts.skrot; [
|
|
||||||
(ipv4 + "/25")
|
|
||||||
(ipv6 + "/64")
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
sops.secrets = {
|
|
||||||
"dibbler/postgresql/password" = {
|
|
||||||
owner = "dibbler";
|
|
||||||
group = "dibbler";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.dibbler = {
|
|
||||||
enable = true;
|
|
||||||
kioskMode = true;
|
|
||||||
limitScreenWidth = 80;
|
|
||||||
limitScreenHeight = 42;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
general.quit_allowed = false;
|
|
||||||
database = {
|
|
||||||
type = "postgresql";
|
|
||||||
postgresql = {
|
|
||||||
username = "pvv_vv";
|
|
||||||
dbname = "pvv_vv";
|
|
||||||
host = "postgres.pvv.ntnu.no";
|
|
||||||
password_file = config.sops.secrets."dibbler/postgresql/password".path;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services."serial-getty@ttyUSB0" = lib.mkIf (!config.virtualisation.isVmVariant) {
|
|
||||||
enable = true;
|
|
||||||
wantedBy = [ "getty.target" ]; # to start at boot
|
|
||||||
serviceConfig.Restart = "always"; # restart when session is closed
|
|
||||||
};
|
|
||||||
|
|
||||||
system.stateVersion = "25.11"; # Did you read the comment? Nah bro
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
{
|
|
||||||
disko.devices = {
|
|
||||||
disk = {
|
|
||||||
main = {
|
|
||||||
device = "/dev/sda";
|
|
||||||
type = "disk";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
ESP = {
|
|
||||||
type = "EF00";
|
|
||||||
size = "1G";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "vfat";
|
|
||||||
mountpoint = "/boot";
|
|
||||||
mountOptions = [ "umask=0077" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
plainSwap = {
|
|
||||||
size = "8G";
|
|
||||||
content = {
|
|
||||||
type = "swap";
|
|
||||||
discardPolicy = "both";
|
|
||||||
resumeDevice = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
root = {
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "ext4";
|
|
||||||
mountpoint = "/";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{ config, lib, pkgs, modulesPath, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "sd_mod" ];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
|
||||||
boot.kernelModules = [ "kvm-amd" ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
# zramSwap.enable = true;
|
# zramSwap.enable = true;
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "skrott";
|
hostName = "skrot";
|
||||||
defaultGateway = values.hosts.gateway;
|
defaultGateway = values.hosts.gateway;
|
||||||
defaultGateway6 = values.hosts.gateway6;
|
defaultGateway6 = values.hosts.gateway6;
|
||||||
interfaces.eth0 = {
|
interfaces.eth0 = {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{ lib, values, ... }:
|
{ lib, values, ... }:
|
||||||
let
|
let
|
||||||
# See microbel:/etc/exports
|
# See microbel:/etc/exports
|
||||||
letters = [ "a" "b" "c" "d" "h" "i" "j" "k" "l" "m" "z" ];
|
letters = [ "a" "b" "c" "d" "h" "i" "j" "k" "l" "m" "z" ];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
systemd.targets."pvv-homedirs" = {
|
systemd.targets."pvv-homedirs" = {
|
||||||
@@ -52,6 +52,9 @@ in
|
|||||||
# TODO: are there cgi scripts that modify stuff in peoples homedirs?
|
# TODO: are there cgi scripts that modify stuff in peoples homedirs?
|
||||||
# "ro"
|
# "ro"
|
||||||
"rw"
|
"rw"
|
||||||
|
|
||||||
|
# TODO: can we enable this and still run cgi stuff?
|
||||||
|
# "noexec"
|
||||||
];
|
];
|
||||||
}) letters;
|
}) letters;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,342 +1,27 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ ... }:
|
||||||
let
|
|
||||||
cfg = config.services.httpd;
|
|
||||||
|
|
||||||
homeLetters = [ "a" "b" "c" "d" "h" "i" "j" "k" "l" "m" "z" ];
|
|
||||||
|
|
||||||
# https://nixos.org/manual/nixpkgs/stable/#ssec-php-user-guide-installing-with-extensions
|
|
||||||
phpEnv = pkgs.php.buildEnv {
|
|
||||||
extensions = { all, ... }: with all; [
|
|
||||||
imagick
|
|
||||||
opcache
|
|
||||||
protobuf
|
|
||||||
];
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
display_errors=0
|
|
||||||
post_max_size = 40M
|
|
||||||
upload_max_filesize = 40M
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
perlEnv = pkgs.perl.withPackages (ps: with ps; [
|
|
||||||
pkgs.exiftool
|
|
||||||
pkgs.ikiwiki
|
|
||||||
pkgs.irssi
|
|
||||||
pkgs.nix.libs.nix-perl-bindings
|
|
||||||
|
|
||||||
AlgorithmDiff
|
|
||||||
AnyEvent
|
|
||||||
AnyEventI3
|
|
||||||
ArchiveZip
|
|
||||||
CGI
|
|
||||||
CPAN
|
|
||||||
CPANPLUS
|
|
||||||
DBDPg
|
|
||||||
DBDSQLite
|
|
||||||
DBI
|
|
||||||
EmailAddress
|
|
||||||
EmailSimple
|
|
||||||
Env
|
|
||||||
Git
|
|
||||||
HTMLMason
|
|
||||||
HTMLParser
|
|
||||||
HTMLTagset
|
|
||||||
HTTPDAV
|
|
||||||
HTTPDaemon
|
|
||||||
ImageMagick
|
|
||||||
JSON
|
|
||||||
LWP
|
|
||||||
MozillaCA
|
|
||||||
PathTiny
|
|
||||||
Switch
|
|
||||||
SysSyslog
|
|
||||||
TestPostgreSQL
|
|
||||||
TextPDF
|
|
||||||
TieFile
|
|
||||||
Tk
|
|
||||||
URI
|
|
||||||
XMLLibXML
|
|
||||||
]);
|
|
||||||
|
|
||||||
# https://nixos.org/manual/nixpkgs/stable/#python.buildenv-function
|
|
||||||
pythonEnv = pkgs.python3.buildEnv.override {
|
|
||||||
extraLibs = with pkgs.python3Packages; [
|
|
||||||
legacy-cgi
|
|
||||||
|
|
||||||
matplotlib
|
|
||||||
requests
|
|
||||||
];
|
|
||||||
ignoreCollisions = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# https://nixos.org/manual/nixpkgs/stable/#sec-building-environment
|
|
||||||
fhsEnv = pkgs.buildEnv {
|
|
||||||
name = "userweb-env";
|
|
||||||
paths = with pkgs; [
|
|
||||||
bash
|
|
||||||
|
|
||||||
perlEnv
|
|
||||||
pythonEnv
|
|
||||||
|
|
||||||
phpEnv
|
|
||||||
]
|
|
||||||
++ (with phpEnv.packages; [
|
|
||||||
# composer
|
|
||||||
])
|
|
||||||
++ [
|
|
||||||
acl
|
|
||||||
aspell
|
|
||||||
autoconf
|
|
||||||
autotrash
|
|
||||||
bazel
|
|
||||||
bintools
|
|
||||||
bison
|
|
||||||
bsd-finger
|
|
||||||
catdoc
|
|
||||||
ccache
|
|
||||||
clang
|
|
||||||
cmake
|
|
||||||
coreutils-full
|
|
||||||
curl
|
|
||||||
devcontainer
|
|
||||||
diffutils
|
|
||||||
emacs
|
|
||||||
# exiftags
|
|
||||||
exiftool
|
|
||||||
ffmpeg
|
|
||||||
file
|
|
||||||
findutils
|
|
||||||
gawk
|
|
||||||
gcc
|
|
||||||
glibc
|
|
||||||
gnugrep
|
|
||||||
gnumake
|
|
||||||
gnupg
|
|
||||||
gnuplot
|
|
||||||
gnused
|
|
||||||
gnutar
|
|
||||||
gzip
|
|
||||||
html-tidy
|
|
||||||
imagemagick
|
|
||||||
inetutils
|
|
||||||
iproute2
|
|
||||||
jhead
|
|
||||||
less
|
|
||||||
libgcc
|
|
||||||
lndir
|
|
||||||
mailutils
|
|
||||||
man # TODO: does this one want a mandb instance?
|
|
||||||
meson
|
|
||||||
more
|
|
||||||
mpc
|
|
||||||
mpi
|
|
||||||
mplayer
|
|
||||||
ninja
|
|
||||||
nix
|
|
||||||
openssh
|
|
||||||
openssl
|
|
||||||
patchelf
|
|
||||||
pkg-config
|
|
||||||
ppp
|
|
||||||
procmail
|
|
||||||
procps
|
|
||||||
qemu
|
|
||||||
rc
|
|
||||||
rhash
|
|
||||||
rsync
|
|
||||||
ruby # TODO: does this one want systemwide packages?
|
|
||||||
salt
|
|
||||||
sccache
|
|
||||||
sourceHighlight
|
|
||||||
spamassassin
|
|
||||||
strace
|
|
||||||
subversion
|
|
||||||
system-sendmail
|
|
||||||
systemdMinimal
|
|
||||||
texliveMedium
|
|
||||||
tmux
|
|
||||||
unzip
|
|
||||||
util-linux
|
|
||||||
valgrind
|
|
||||||
vim
|
|
||||||
wget
|
|
||||||
which
|
|
||||||
wine
|
|
||||||
xdg-utils
|
|
||||||
zip
|
|
||||||
zstd
|
|
||||||
];
|
|
||||||
|
|
||||||
extraOutputsToInstall = [
|
|
||||||
"man"
|
|
||||||
"doc"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
services.httpd = {
|
services.httpd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
adminAddr = "drift@pvv.ntnu.no";
|
|
||||||
|
|
||||||
# TODO: consider upstreaming systemd support
|
# extraModules = [];
|
||||||
# TODO: mod_log_journald in v2.5
|
|
||||||
package = pkgs.apacheHttpd.overrideAttrs (prev: {
|
|
||||||
nativeBuildInputs = prev.nativeBuildInputs ++ [ pkgs.pkg-config ];
|
|
||||||
buildInputs = prev.buildInputs ++ [ pkgs.systemdLibs ];
|
|
||||||
configureFlags = prev.configureFlags ++ [ "--enable-systemd" ];
|
|
||||||
});
|
|
||||||
|
|
||||||
enablePHP = true;
|
|
||||||
phpPackage = phpEnv;
|
|
||||||
|
|
||||||
enablePerl = true;
|
|
||||||
|
|
||||||
# TODO: mod_log_journald in v2.5
|
|
||||||
extraModules = [
|
|
||||||
"systemd"
|
|
||||||
"userdir"
|
|
||||||
# TODO: I think the compilation steps of pkgs.apacheHttpdPackages.mod_perl might have some
|
|
||||||
# incorrect or restrictive assumptions upstream, either nixpkgs or source
|
|
||||||
# {
|
|
||||||
# name = "perl";
|
|
||||||
# path = let
|
|
||||||
# mod_perl = pkgs.apacheHttpdPackages.mod_perl.override {
|
|
||||||
# apacheHttpd = cfg.package.out;
|
|
||||||
# perl = perlEnv;
|
|
||||||
# };
|
|
||||||
# in "${mod_perl}/modules/mod_perl.so";
|
|
||||||
# }
|
|
||||||
];
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
TraceEnable on
|
|
||||||
LogLevel warn rewrite:trace3
|
|
||||||
ScriptLog ${cfg.logDir}/cgi.log
|
|
||||||
'';
|
|
||||||
|
|
||||||
# virtualHosts."userweb.pvv.ntnu.no" = {
|
# virtualHosts."userweb.pvv.ntnu.no" = {
|
||||||
virtualHosts."temmie.pvv.ntnu.no" = {
|
virtualHosts."temmie.pvv.ntnu.no" = {
|
||||||
|
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
UserDir ${lib.concatMapStringsSep " " (l: "/home/pvv/${l}/*/web-docs") homeLetters}
|
|
||||||
UserDir disabled root
|
|
||||||
AddHandler cgi-script .cgi
|
|
||||||
DirectoryIndex index.html index.html.var index.php index.php3 index.cgi index.phtml index.shtml meg.html
|
|
||||||
|
|
||||||
<Directory "/home/pvv/?/*/web-docs">
|
|
||||||
Options MultiViews Indexes SymLinksIfOwnerMatch ExecCGI IncludesNoExec
|
|
||||||
AllowOverride All
|
|
||||||
Require all granted
|
|
||||||
</Directory>
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
80
|
|
||||||
443
|
|
||||||
];
|
|
||||||
|
|
||||||
# socket activation comes in v2.5
|
|
||||||
# systemd.sockets.httpd = {
|
|
||||||
# wantedBy = [ "sockets.target" ];
|
|
||||||
# description = "HTTPD socket";
|
|
||||||
# listenStreams = [
|
|
||||||
# "0.0.0.0:80"
|
|
||||||
# "0.0.0.0:443"
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
|
|
||||||
systemd.services.httpd = {
|
systemd.services.httpd = {
|
||||||
after = [ "pvv-homedirs.target" ];
|
after = [ "pvv-homedirs.target" ];
|
||||||
requires = [ "pvv-homedirs.target" ];
|
requires = [ "pvv-homedirs.target" ];
|
||||||
|
|
||||||
environment = {
|
|
||||||
PATH = lib.mkForce "/usr/bin";
|
|
||||||
};
|
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = lib.mkForce "notify";
|
|
||||||
|
|
||||||
ExecStart = lib.mkForce "${cfg.package}/bin/httpd -D FOREGROUND -f /etc/httpd/httpd.conf -k start";
|
|
||||||
ExecReload = lib.mkForce "${cfg.package}/bin/httpd -f /etc/httpd/httpd.conf -k graceful";
|
|
||||||
ExecStop = lib.mkForce "";
|
|
||||||
KillMode = "mixed";
|
|
||||||
|
|
||||||
ConfigurationDirectory = [ "httpd" ];
|
|
||||||
LogsDirectory = [ "httpd" ];
|
|
||||||
LogsDirectoryMode = "0700";
|
|
||||||
|
|
||||||
CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" ];
|
|
||||||
LockPersonality = true;
|
|
||||||
PrivateDevices = true;
|
|
||||||
PrivateTmp = true;
|
|
||||||
# NOTE: this removes CAP_NET_BIND_SERVICE...
|
|
||||||
# PrivateUsers = true;
|
|
||||||
ProtectClock = true;
|
|
||||||
ProtectControlGroups = true;
|
|
||||||
ProtectHome = "tmpfs";
|
ProtectHome = "tmpfs";
|
||||||
ProtectKernelLogs = true;
|
BindPaths = let
|
||||||
ProtectKernelModules = true;
|
letters = [ "a" "b" "c" "d" "h" "i" "j" "k" "l" "m" "z" ];
|
||||||
ProtectSystem = true;
|
in map (l: "/run/pvv-home-mounts/${l}:/home/pvv/${l}") letters;
|
||||||
RemoveIPC = true;
|
|
||||||
RestrictAddressFamilies = [
|
|
||||||
"AF_INET"
|
|
||||||
"AF_INET6"
|
|
||||||
"AF_UNIX"
|
|
||||||
"AF_NETLINK"
|
|
||||||
];
|
|
||||||
RestrictNamespaces = true;
|
|
||||||
RestrictRealtime = true;
|
|
||||||
RestrictSUIDSGID = true;
|
|
||||||
SocketBindDeny = "any";
|
|
||||||
SocketBindAllow = [
|
|
||||||
"tcp:80"
|
|
||||||
"tcp:443"
|
|
||||||
];
|
|
||||||
SystemCallArchitectures = "native";
|
|
||||||
SystemCallFilter = [
|
|
||||||
"@system-service"
|
|
||||||
];
|
|
||||||
UMask = "0077";
|
|
||||||
|
|
||||||
RuntimeDirectory = [ "httpd/root-mnt" ];
|
|
||||||
RootDirectory = "/run/httpd/root-mnt";
|
|
||||||
MountAPIVFS = true;
|
|
||||||
BindReadOnlyPaths = [
|
|
||||||
builtins.storeDir
|
|
||||||
"/etc"
|
|
||||||
# NCSD socket
|
|
||||||
"/var/run"
|
|
||||||
"/var/lib/acme"
|
|
||||||
|
|
||||||
"${fhsEnv}/bin:/bin"
|
|
||||||
"${fhsEnv}/sbin:/sbin"
|
|
||||||
"${fhsEnv}/lib:/lib"
|
|
||||||
"${fhsEnv}/share:/share"
|
|
||||||
] ++ (lib.mapCartesianProduct ({ parent, child }: "${fhsEnv}${child}:${parent}${child}") {
|
|
||||||
parent = [
|
|
||||||
"/local"
|
|
||||||
"/opt"
|
|
||||||
"/opt/local"
|
|
||||||
"/store"
|
|
||||||
"/store/gnu"
|
|
||||||
"/usr"
|
|
||||||
"/usr/local"
|
|
||||||
];
|
|
||||||
child = [
|
|
||||||
"/bin"
|
|
||||||
"/sbin"
|
|
||||||
"/lib"
|
|
||||||
"/libexec"
|
|
||||||
"/include"
|
|
||||||
"/share"
|
|
||||||
];
|
|
||||||
});
|
|
||||||
BindPaths = map (l: "/run/pvv-home-mounts/${l}:/home/pvv/${l}") homeLetters;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -33,63 +33,63 @@ in
|
|||||||
lib.mergeAttrsList [
|
lib.mergeAttrsList [
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "CodeEditor";
|
name = "CodeEditor";
|
||||||
commit = "83e1d0c13f34746f0d7049e38b00e9ab0a47c23f";
|
commit = "6e5b06e8cf2d040c0abb53ac3735f9f3c96a7a4f";
|
||||||
hash = "sha256-qH9fSQZGA+z6tBSh1DaTKLcujqA6K/vQmZML9w5X8mU=";
|
hash = "sha256-Jee+Ws9REUohywhbuemixXKaTRc54+cIlyUNDCyYcEM=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "CodeMirror";
|
name = "CodeMirror";
|
||||||
commit = "af2b08b9ad2b89a64b2626cf80b026c5b45e9922";
|
commit = "da9c5d4f03e6425f6f2cf68b75d21311e0f7e77e";
|
||||||
hash = "sha256-CxXPwCKUlF9Tg4JhwLaKQyvt43owq75jCugVtb3VX+I=";
|
hash = "sha256-aL+v9xeqKHGmQVUWVczh54BkReu+fP49PT1NP7eTC6k=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "DeleteBatch";
|
name = "DeleteBatch";
|
||||||
commit = "3d6f2fd0e3efdae1087dd0cc8b1f96fe0edf734f";
|
commit = "122072bbfb4eab96ed8c1451a3e74b5557054c58";
|
||||||
hash = "sha256-iD9EjDIW7AGpZan74SIRcr54dV8W7xMKIDjatjdVkKs=";
|
hash = "sha256-L6AXoyFJEZoAQpLO6knJvYtQ6JJPMtaa+WhpnwbJeNU=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "PluggableAuth";
|
name = "PluggableAuth";
|
||||||
commit = "85e96acd1ac0ebcdaa29c20eae721767a938f426";
|
commit = "5caf605b9dfdd482cb439d1ba2000cba37f8b018";
|
||||||
hash = "sha256-bMVhrg8FsfWhXF605Cj5TgI0A6Jy/MIQ5aaUcLQQ0Ss=";
|
hash = "sha256-TYJqR9ZvaWJ7i1t0XfgUS05qqqCgxAH8tRTklz/Bmlg=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "Popups";
|
name = "Popups";
|
||||||
commit = "410e2343c32a7b18dcdc2bbd995b0bfdf3bf5f37";
|
commit = "7ed940a09f83f869cbc0bc20f3ca92f85b534951";
|
||||||
hash = "sha256-u2AlR75x54rCpiK9Mz00D9odJCn8fmi6DRU4QKmKqSc=";
|
hash = "sha256-pcDPcu4kSvMHfSOuShrod694TKI9Oo3AEpMP9DXp9oY=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "Scribunto";
|
name = "Scribunto";
|
||||||
commit = "904f323f343dba5ff6a6cdd143c4a8ef5b7d2c55";
|
commit = "e755852a8e28a030a21ded2d5dd7270eb933b683";
|
||||||
hash = "sha256-ZOVYhjMMyWbqwZOBb39hMIRmzzCPEnz2y8Q2jgyeERw=";
|
hash = "sha256-zyI5nSE+KuodJOWyV0CQM7G0GfkKEgfoF/czi2/qk98=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "SimpleSAMLphp";
|
name = "SimpleSAMLphp";
|
||||||
kebab-name = "simple-saml-php";
|
kebab-name = "simple-saml-php";
|
||||||
commit = "a2f77374713473d594e368de24539aebcc1a800a";
|
commit = "d41b4efd3cc44ca3f9f12e35385fc64337873c2a";
|
||||||
hash = "sha256-5+t3VQFKcrIffDNPJ4RWBIWS6K1gTOcEleYWmM6xWms=";
|
hash = "sha256-wfzXtsEEEjQlW5QE4Rf8pasAW/KSJsLkrez13baxeqA=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "TemplateData";
|
name = "TemplateData";
|
||||||
commit = "76a6a04bd13a606923847ba68750b5d98372cacd";
|
commit = "fd7cf4d95a70ef564130266f2a6b18f33a2a2ff9";
|
||||||
hash = "sha256-X2+U5PMqzkSljw2ypIvJUSaPDaonTkQx89OgKzf5scw=";
|
hash = "sha256-5OhDPFhIi55Eh5+ovMP1QTjNBb9Sm/3vyArNCApAgSw=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "TemplateStyles";
|
name = "TemplateStyles";
|
||||||
commit = "7de60a8da6576d7930f293d19ef83529abf52704";
|
commit = "0f7b94a0b094edee1c2a9063a3c42a1bdc0282d9";
|
||||||
hash = "sha256-iPmFDoO5V4964CVyd1mBSQcNlW34odbvpm2CfDBlPBU=";
|
hash = "sha256-R406FgNcIip9St1hurtZoPPykRQXBrkJRKA9hapG81I=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "UserMerge";
|
name = "UserMerge";
|
||||||
commit = "71eb53ff4289ac4efaa31685ab8b6483c165a584";
|
commit = "d1917817dd287e7d883e879459d2d2d7bc6966f2";
|
||||||
hash = "sha256-OfKSEPgctfr659oh5jf99T0Rzqn+60JhNaZq+2gfubk=";
|
hash = "sha256-la3/AQ38DMsrZ2f24T/z3yKzIrbyi3w6FIB5YfxGK9U=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "VisualEditor";
|
name = "VisualEditor";
|
||||||
commit = "a6a63f53605c4d596c3df1dcc2583ffd3eb8d929";
|
commit = "032364cfdff33818e6ae0dfa251fe3973b0ae4f3";
|
||||||
hash = "sha256-4d8picO66uzKoxh1TdyvKLHebc6ZL7N2DdXLV2vgBL4=";
|
hash = "sha256-AQDdq9r6rSo8h4u1ERonH14/1i1BgLGdzANEiQ065PU=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "WikiEditor";
|
name = "WikiEditor";
|
||||||
commit = "0a5719bb95326123dd0fee1f88658358321ed7be";
|
commit = "cb9f7e06a9c59b6d3b31c653e5886b7f53583d01";
|
||||||
hash = "sha256-eQMyjhdm1E6TkktIHad1NMeMo8QNoO8z4A05FYOMCwQ=";
|
hash = "sha256-UWi3Ac+LCOLliLkXnS8YL0rD/HguuPH5MseqOm0z7s4=";
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,93 +0,0 @@
|
|||||||
dibbler:
|
|
||||||
postgresql:
|
|
||||||
password: ENC[AES256_GCM,data:3X9A3jOpFVRuBg0gRiCEsZVKfLI=,iv:XC7LBNUhALk9IEhItV8fO5p/m7VKL0REBY1W2IZt7G4=,tag:l18R7EhbOlucZHFQiEvpHw==,type:str]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- recipient: age1hzkvnktkr8t5gvtq0ccw69e44z5z6wf00n3xhk3hj24emf07je5s6q2evr
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvTk5YU3Z2Yy9HS1R4ME5I
|
|
||||||
UU1PRWVncHJYcXY5RlFpOWVQUWZsdy93ZDFBCnlxWkpaL1g5WmNSckNYd202WE40
|
|
||||||
RkwwSEM1YUNNZmozejlrdW8yY1JiekkKLS0tIHVWY0JKZm9CNWhzVGl4cG82UXZs
|
|
||||||
ZnllQzJiK1ZkRmFndmtYdW9IclFWY1EK82f1iGt3nt8dJnEQlMujNqConf6Qq6GX
|
|
||||||
hqoqPoc2EM4kun28Bbpq4pAY7eEPRrWFqOkjYVvgIRoS88D7xT3LWg==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1ug30gg4y7ftuya0wdv7q0vh4egn00wlv2th7mt7cgc2ze46wmvyq9lq6ge
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5WTJIOUcxRlBuNmRrNUZo
|
|
||||||
MXFxeVJBTEhDK00yTUw1U2dHckNFYWZKWkhNCnYxYmtrUEVvd1RaYUI5WTRTRW16
|
|
||||||
S2NhbDdpdDZhSkVWeUhjZDhKd3ZpTmcKLS0tIFovWm5lOXBzcnN3Zm5GQlBhNmlp
|
|
||||||
eTB4WldMNW9GNUwwaEUzRThsemxRVzQKGpa0J2PBzDRdHijm0e3nFAaxQCHUjz+L
|
|
||||||
KataXJEMCijJ6k+7vpb5QMxe2jB1J2PMxNGFp0bWAy2Al3p/Ez2Kww==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1mrnldl334l2nszuta6ywvewng0fswv2dz9l5g4qcwe3nj4yxf92qjskdx6
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZaW1ZSXhVeFVTQW9WYzVh
|
|
||||||
WkVUM2JkOU5VNU9oQXE2Y2pvcFlOWTdvbnpJClduS0RHL2xja291a2doQ0wzbzhQ
|
|
||||||
NmJOSGVvQUdxM3IvaS8zRW1VbVhvYmsKLS0tIHoyOUdvT0xXWXo3SWcyQ1lqTmJS
|
|
||||||
ZUdnS2RvOXI1dGNYQTl6ZHE1cUdMWHMK4ycAJQLyKCgJIzjQ02bPjz4Ct9eO6ivw
|
|
||||||
kfWhyMaoWwM9PhFcwSak0cLpX0C/IOzSzO78pf3WhG16pV7aXapdog==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1hmpdk4h69wxpwqk9tkud39f66hprhehxtzhgw97r6dvr7v0mx5jscsuhkn
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqaml0OVlhcUJSU1hSY3lP
|
|
||||||
bkM0cUV4Z2ZLeERHZ3BUNExuYS9KSU5CekQ4CmQ3SE1vdDBtdFJ6czZYR3U5Tk1X
|
|
||||||
SFJmTVlERjBzV0hFalFLMmVLQzNNdXMKLS0tIDdJLzZveFdnYTI0azk1UXJZLzZF
|
|
||||||
Sy9XbjhwOFR6SFpaNHZLd3ZxdmxOVUEKBBbGmdVVlKHxO+/iODznLP3+dJGppybW
|
|
||||||
+1k9uenVHzie+pDKcrQpSyX2WDnmgg7hUAUiXPuz1eEWmwbRJnU/5w==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1wrssr4z4g6vl3fd3qme5cewchmmhm0j2xe6wf2meu4r6ycn37anse98mfs
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXK01vOVV5YlhsZ2ljYS91
|
|
||||||
OUVEaEpTbXFKOHVNVDVoMTlrS05wRmsyM2dvCjZHOXlCUGowd0J4UlQzSzM5dWJ0
|
|
||||||
eU50SHdtZ2ZyUE1JVHdvODFxWDYvRWsKLS0tIDhlRVQ0Mm5Ua0J2aExqMzRyUGlP
|
|
||||||
RUR6Yi9SUDFCUkZmRk5hYTVFeGloZXcKY/XtaSoW8Pu2wS4oistLSc0T5JvMnt+w
|
|
||||||
s3yfe/zx9/1K6OtbeljF9FZVOB/dOamvk+Qlfl0T5qush7/WgGzErA==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1zhxul786an743u0fascv4wtc5xduu7qfy803lfs539yzhgmlq5ds2lznt5
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOM0pFb2tRTURtWmp6elRN
|
|
||||||
M0xtajlzMTNPMnppcGhJMVlsNHdwWmNGbFVFCnlxM1JQTkR2elAvdytKUEJ3djBS
|
|
||||||
UnlhL0tLLzY3Z05RU3phNDZIOGtTMFEKLS0tIEpOZDUxU1JQVXJTbmVFQlVkOUcy
|
|
||||||
eWlyWGhaS1JCNitUSVVScFk2WGEvOG8K2rpYPGx5jhyyRK4UkeJR96wDFr4Frzsr
|
|
||||||
QWz7fYZRWKWf0H0qn+bm9IfVJiBAlS5i16D1FnipZVmdWefFaZSEPg==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1sqs7urnzsdy64efmd0zukzv3gs5pnjksuxd7nqmdwdy5l0nqnunq6hyune
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJVFV0WVZrK0wzbnhkcmcz
|
|
||||||
c2lIdVlKcFpoYjZIWlNPN0M5N2g2WG9YdlRJCjg5YlNoSzQ5YW5yRUVSeTEzRThY
|
|
||||||
WklKQzlzRXdrUUlFNzF4M1BFZCtPT28KLS0tIDlUOTVIQVZJNFJwTnQxN0Z1ZlQx
|
|
||||||
MmxPMWNPYzJiOFRqY2VYczhvRm5IR3cKpUVV+zsMolsHI2YK9YqC6ecNT6QXv0TV
|
|
||||||
d1SpXRAexZBeWCCHBjSdvQBl8AT4EwrAIP2M2o++6i5DaGoGiEIWZQ==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
lastmodified: "2026-02-10T20:02:28Z"
|
|
||||||
mac: ENC[AES256_GCM,data:i8CjVxoD7zdkLNJlI9DCo/tDV5DUI7JdpozLtYZzI7Cu51GayaE2Y3Wg4de6P0L7C3FER04WfRe/h+G9PLZICX/CfSipQysyrEq3Pjt9IKsjytDhP9VYJ36QFGF0PuHUQAMSLts/tAoAvLue6MP+V82l5js9ghvyBrzyBGxoyJw=,iv:QFNxvCYxrSkwy7iT+2BEacNPftDXju1cibprVPDjic0=,tag:496E+oCy/VwTylyaWhQD+A==,type:str]
|
|
||||||
pgp:
|
|
||||||
- created_at: "2026-02-10T20:01:32Z"
|
|
||||||
enc: |-
|
|
||||||
-----BEGIN PGP MESSAGE-----
|
|
||||||
|
|
||||||
hQIMA0av/duuklWYARAAnSjSeI8BybEl1PwNt3KTGcUjpCI+XZPWgNWuvjIymVBv
|
|
||||||
ZgNESNktJB4loNvd/+TIADE7TqGFQK9ev6IPRoDHHkSMdmJ9Bc/lu2HPO+rJa1yD
|
|
||||||
vLXbjf8vRa+GkBDV8DTrPPFvSrHY+jv9vQIzY3nQPKMlyV58E85N262q/2gJUfm9
|
|
||||||
cy/dYE2BUWMQC1DfiGbBRC4xGHhp94XccOMBkIpchP+BL90ZVpocnxeSrSjBsSLE
|
|
||||||
wuhMQPRQSI4PFm8ZYajf6tF001HDa5zaqF1lqkTxtxypDDUr8BVb9n/ObaD8omDI
|
|
||||||
QHQUiPmVgpDs7w2Ph5UgJxK1c+dOcG+mXsl1CHOLldA29sNzDBuh94PKfRl1B3cY
|
|
||||||
KPoPIqntdn59zzRDbuVJxWeJal7Ffynwsrx4h7w7muIR/FYeaFphsokE5Q6gqwTO
|
|
||||||
ZqWY2tuQ0CFRtMl7HB7ZVdSsKv6D5DlesXPXdrhQBKRrNylBpSBmcZH8KRAuHGNj
|
|
||||||
4GFZRN++GFuq54d7wB689kn+F7+pbNom7CDILXiCrz8+9DjFw0maDRoas8OaUyW6
|
|
||||||
kfyJe/YnK94EyCPitkJWYc9uvA2t9y25Rm9uUSvh7WnTFAEK9mJLOal4VgHbqCtg
|
|
||||||
zSGbdw79U4H0Umbi5eSCvEYNtv7eBzKaS/t6irfDRr1WajNhThcd1wmnvjZYxl3S
|
|
||||||
XgHOucYvQvxXjqG0B0Qbd12ucYthPO1+gozEzWxJx2wtiL3gClPYOaiteRlO/XQA
|
|
||||||
WTG6A36X3IxB6qW8lEx12geyjHxFYb82BjyrBnnlj+YcViIBpPQqd8Dz6sl4Rls=
|
|
||||||
=tCoI
|
|
||||||
-----END PGP MESSAGE-----
|
|
||||||
fp: F7D37890228A907440E1FD4846B9228E814A2AAC
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.11.0
|
|
||||||
@@ -3,90 +3,81 @@ dibbler:
|
|||||||
password: ENC[AES256_GCM,data:2n85TO709GJc7/qoYp2RXO8Ttfo=,iv:5ZCZPEQQXPGYfDd1qPhDwDfm1Gds1M8PEX9IiCsHcrw=,tag:PAseyFBAe56pLj5Uv8Jd7A==,type:str]
|
password: ENC[AES256_GCM,data:2n85TO709GJc7/qoYp2RXO8Ttfo=,iv:5ZCZPEQQXPGYfDd1qPhDwDfm1Gds1M8PEX9IiCsHcrw=,tag:PAseyFBAe56pLj5Uv8Jd7A==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- recipient: age1lpkju2e053aaddpgsr4ef83epclf4c9tp4m98d35ft2fswr8p4tq2ua0mf
|
- recipient: age1hlvwswsljxsvrtp4leuw8a8rf8l2q6y06xvxtafvzpq54xm9aegs0kqw2e
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNdjk1L1N4QU5SK3pjTit6
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4WllOQ1dRSUJ6a1pvNFg2
|
||||||
V0hIZHhyOW9Rc2xWdE9yN0tmMG93V0IzZzA4Ck5OSUlRTE5mVGZtMTl3NDh1QzA2
|
N0YrQVBtMFZKRml0dG5PUGVhcU9VUXVHc25nClNFSXowUVRRVVhNeHUrTVVZRGRC
|
||||||
Uk9RVnRENmVnQUZuQUVSeGxBS0VaK2sKLS0tIHRHbUUzcmlQbW0weXU0eWJKVmVT
|
YkpVYlcrZm1NTE1IT1pSTDdOZGNHYlEKLS0tIHlJbkNBb3o0TlJlbEtsQ2ZsYlJn
|
||||||
ZUxJKzV3UDVVSW11SHRrWGxOSmgrZk0KyWxjEmCvNhiZfgXfObQfQ5riscy0mLFn
|
Wis3T2V5QVYvQi9laUdoaE1DbUZZZE0K/liRzp6TJeufyTzemv+zBTOwzkeJRID4
|
||||||
3pslIN7fbxgxnEVyAhl9FOUS65GrmWrrhvN0pkIpgMw1cqtCrZHxyw==
|
ZviYwwODWopB9/rCd8sIQaNXvEtvuXNWwcV1/p8DsJ9NHwqtdYHpmw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1ug30gg4y7ftuya0wdv7q0vh4egn00wlv2th7mt7cgc2ze46wmvyq9lq6ge
|
- recipient: age1ug30gg4y7ftuya0wdv7q0vh4egn00wlv2th7mt7cgc2ze46wmvyq9lq6ge
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoVFh2WC9iVHpURDBzckdB
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSByY0dTMWc2VEVRdTJyOXo4
|
||||||
UjVGcHkyR3V6VHVMbXc4c21ob1lSMDRWeW44ClgzRXhLY2RYN2hleDNLWHoyeXVm
|
R3BYb1VETHI2RktGVnVJUzg4WUsxbTNsK2tVCjVqVml3d29lK21wUXFnRm5GNHdX
|
||||||
T2xJMlNZMml2NGZDNmlQWGp6RXJRQ1EKLS0tIGNmK0lGdjRLM3l4S3JVazZ0MkFU
|
blV4NEFZU01ZS3Qwc2FSMlVDRlU0SEEKLS0tIExwWXFJZGRTaTBSbjZtdTBXSXNJ
|
||||||
SzZOMFNvcGZRcjJsU242cnZ4NU9OZmcKxlRdhZlXP4KQBHFLFt195H5R33hLuQ0O
|
TUhJWkIrdGg5UDdDQkdnQk50YTQ0M0UKqoMwtPlOSIqMcLvII/EVuZGrNDeULJHK
|
||||||
bVHtQk00IZmMPq4R4aOc0WMkuJxcFaLi0YDQigcFtReSvWDhTHns7A==
|
l7xCzQM0n72E/zxPuO7koVXVcUNwn4kNQCRLOHLcuqx2ZRD8Oc+zNA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1mrnldl334l2nszuta6ywvewng0fswv2dz9l5g4qcwe3nj4yxf92qjskdx6
|
- recipient: age1mrnldl334l2nszuta6ywvewng0fswv2dz9l5g4qcwe3nj4yxf92qjskdx6
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBua0cvc21qeFp4d1NZZ0Vw
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxNy8rcHpJclk1b0h2T0dw
|
||||||
aWhldXVjUm1wSmJPdnpZV1JvTVowSWw4RVU0CngzUWkrcXA1TkpZN1M4QVBCS0pX
|
U0pBYlJvQXlZTG1PeTRCV2hONEJlUWFqdUIwClJ4QnQyOGt4d1NEcVZYek9JUC9X
|
||||||
Z0w5aURoQU9Xck1RckNsRTlGeWk2N2cKLS0tIFlSdG05V2l6eStURDJVTXEzc0Zh
|
UW0wNjArK2YvZDRMMGpRU1N1dk9jSDQKLS0tIGJMbkZxLzZBVm4wNXVTNFpoRDNo
|
||||||
U2tFemF1djFGeVFQYWg5NjFhdW13Vm8K/QztsuBUcmJNBta3R7uYHGzqKOCRus3s
|
a3dwemI2Wlh2RE8zN0xsbmY5YnJUeTAKhkSpB4RgrfbDpK7IwLs1KGXCj8v0Rze3
|
||||||
bFd2AOC0PNqvAe8e5q2XYf87MUt/U6AaFjroaDpoC3IUI2+qLJDXDA==
|
YZh3BHW2WZLS7uQcIe/tnpIHwPrQnadKeYIw7xBmXu9dWyim9/5RyQ==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1hmpdk4h69wxpwqk9tkud39f66hprhehxtzhgw97r6dvr7v0mx5jscsuhkn
|
- recipient: age1hmpdk4h69wxpwqk9tkud39f66hprhehxtzhgw97r6dvr7v0mx5jscsuhkn
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkcUVib2tsd3lNS0VmOGNS
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxUnA5SXNucGN4bi9zeGlU
|
||||||
WWR6NDE5RWw3bStqVjRtdWFSM1E2QUp2cEg0Cm0zdjE3eVpUS3M1L241akM3cyta
|
TzJPUGk5SWVONFVVYnNnejJBdFJmL3d1S0Y0Ci9SOVZmVUMzRWNicGN2dE5aRy80
|
||||||
WGVFVGtQVnQ1d2U1QVRSYXE1YUYrTU0KLS0tIGRTK29EdzVka3hmaFIrSnVUQ1c5
|
MFh3MUNTSE5EWEhQcUFsUENDdWlWYkkKLS0tIDYrb2RzVm9OTHlzKzBCdEtPYnF3
|
||||||
c0YxcWZIRHRxZEVjVk9MckJMVisyS28KGH6+9IXIBeXrrZ3AoL3zU1v6EA5TNwN5
|
L2VmNm5ITEUwUVJ3WXRmVGZnY0RSNE0KraXjJSZ9HKV8SO93khWVjBJcEYQLI0Rm
|
||||||
8DgPO9+yfVesZiEJ0MNhs6tXAA4ODInpU1CUdsjKWRA6/QXBbmEUQw==
|
lQuagfkZ5oaedsPGNqaXWo/cd3g2SZOfhmmRxY9R9gxmnjpP4L6gGg==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1wrssr4z4g6vl3fd3qme5cewchmmhm0j2xe6wf2meu4r6ycn37anse98mfs
|
- recipient: age1wrssr4z4g6vl3fd3qme5cewchmmhm0j2xe6wf2meu4r6ycn37anse98mfs
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLS0RnMDNOZzBIZzF4VG1R
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKTlgxOGJwbDYrbXNDWmNY
|
||||||
T083bXFOdE1JSzl0SE1SUGlxdnFFQVluWVgwCnRLMThOSU45RTRFMVZybm9YV01n
|
YzZGTTdlQXBFRUEySW1Rd0Z4bi90akZIOGpBCjdseUJIeGlJZVB1WDNFeU5LZDE0
|
||||||
K1pCMThGUFhMMzZhUEszRlZlK2FoQXcKLS0tIHdJRGw4aEU5UkgrU3ZEZXl4bDhi
|
cExQSFBPTWlUbVRjREdJaXROTjRwWTgKLS0tIENPM2VnZGtyaUowZmx5ZVdZVjRz
|
||||||
dCtIVkdSWmg1dGNzNmhjZDBiWUJVWkEKSZySabmhM3HDXdduzFGAbOPR6m1CjwWb
|
SW9kSTVBbDJUWHBzV0xBYTlReGloSkEKq6Q3HVKRnw2B0CUvgXlUkQUBgmCNLP80
|
||||||
ttMA9hTvl+T/UqYjxSHj8hmsyTfDY7a4sfHaFcMBJMJrjuEllm/L9g==
|
fY5/ePAWZKt4P6TxzPNFH3aANWcnVC2/QxF2RgYfDXKKp1AVlAIlTA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1zhxul786an743u0fascv4wtc5xduu7qfy803lfs539yzhgmlq5ds2lznt5
|
- recipient: age1zhxul786an743u0fascv4wtc5xduu7qfy803lfs539yzhgmlq5ds2lznt5
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBEYmF6cm5xUHVKMWw3MHJD
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvS2gzN0ZyakcyVjlYRUZU
|
||||||
cWsvZTNWUjRZNDQxbFdDWGh5dUpCc2lGTTNjCm1uV0FCVEgxOG5WbXJUdXlkYTZW
|
OFNmUHhsTysxV0JIV1JlM3hLNW9KRm9oY0gwCkh3SWxUV3ZqRXluVVRyRC9OQzVa
|
||||||
KzFzaDNma3RJWEtlUmFHNGxNVUFKN28KLS0tIFFCSi82Q3EvV01UeHg4bG96K1Jm
|
ODE0NnE2ZHdZc1Qrdkp0YWZFZ0xnMWMKLS0tIFFsNElqVlZ3Sm56b2ZNcEpQMXo4
|
||||||
S2JrZlcwcGsrTzdFTDlHcktJd0hmUVUKt0W/8r+L1m25kHKbh5RcweKbl4JB5xqX
|
RGJCWmpyd1g1NC9Ud3I3TWRBZ2llblEKVrHE0kPVjapor98D4Z1gCtQsuWS/iAuE
|
||||||
DYUhUW1Rh1EI63CgVzriz4HZjuNGiuqG9cFv72wIg9Hl2lBPpkC4LQ==
|
5cje1AZdpYVdHoRtzRxKwPekfm9xa/knzFckjjO0JizTQWTPYg0gsQ==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1sqs7urnzsdy64efmd0zukzv3gs5pnjksuxd7nqmdwdy5l0nqnunq6hyune
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQYUtHY1djWno1MG1zQTRB
|
|
||||||
ZHNjbitQbTUwVjFkZWtHU0gwUFFMTTIrQUVZCkUwd3UrbmpyMndXcVl6MEFsSktX
|
|
||||||
L1ZBM2ZPbGMycXd0MDRyWGI1SHh2NVkKLS0tIHFKcS82cUJYZ2V6dHJ6djJSajFy
|
|
||||||
RkIzYUI3dUZjenpxRnplOTZKZmhoS0kKDw9Zuf57k+MAINMReYcCN1DoTtFMgKGJ
|
|
||||||
CWwkNN59Ojgz757xS+2cmK6oxAkDRcN+KZc3sANdj0LY//rXq/UJgw==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2026-01-25T14:03:57Z"
|
lastmodified: "2026-01-25T14:03:57Z"
|
||||||
mac: ENC[AES256_GCM,data:RBf3LjVNSclsPN7I4QPaDUjWbKlaccjk3rzsRNdRe3+OvJSd7MsS9RfpUFCqUtO7ZkkocXHmkHA8z8LNxs6vejT9czMsLLQD14qHZS6fFdTnToOx3Kt5UuviPO/2UryVI+6HWORkH1aqFJhzkSMop2TO5mzuOTfbCEBLYUUuS6s=,iv:NQs8O1hIbjzGBTZo+gCuisj3edraFGk/Y146HmfPmQY=,tag:4g9IXw2UFC5V9EIHuWJqdA==,type:str]
|
mac: ENC[AES256_GCM,data:RBf3LjVNSclsPN7I4QPaDUjWbKlaccjk3rzsRNdRe3+OvJSd7MsS9RfpUFCqUtO7ZkkocXHmkHA8z8LNxs6vejT9czMsLLQD14qHZS6fFdTnToOx3Kt5UuviPO/2UryVI+6HWORkH1aqFJhzkSMop2TO5mzuOTfbCEBLYUUuS6s=,iv:NQs8O1hIbjzGBTZo+gCuisj3edraFGk/Y146HmfPmQY=,tag:4g9IXw2UFC5V9EIHuWJqdA==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-02-07T21:15:24Z"
|
- created_at: "2026-01-26T04:52:39Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
hQIMA0av/duuklWYARAAsIJXQn91VrFoSuu0ppgC79T2juR6mA7H5Z2NSGypbild
|
hQIMA0av/duuklWYARAAtSg5bRhk7DN14CpdTtG9XPwQfZAP2EvCpFqXcU1LnIqi
|
||||||
BsNPlWy+q8rpctGkria2Jm37Wz8Qu+sUNQ8Y2w6Z8Bv+M5tks62wc7qBjJkcZKmw
|
odRqr1vzFlgXH/A/36C/c/JN7M0673PWivUidiMU38/WExgzxPTe/mpwoTHqRRgG
|
||||||
IjumrbsEmKQsZKS2YzGFcTjuwpBTGnACAMjUTz1rqnRcaq4U8Wqfi+mmf81yRSnR
|
aSP5or2UjhwbN7M844JGbTMNAIUh9bVG2/Qm6cLFhv2HalAVhhnWsbIdJIjUmpjU
|
||||||
F0emN015EmGCAUQYD6YRFMAw0PGbP3HiQrXQxdmv8zObbCg9d3+ZozurqFO2RmB4
|
cMjCfxO36uTVp1SajeJKd9x9n+AbWY84SzN/7HYrFcJQomOyb6FcioIwHcIe2YdN
|
||||||
SeZIUEtxgVDuMsr87AmHgbCr8Ux9eZmHU0qv+ejgbnXE7/MaUbppa1gy3RdcwHqG
|
GEdNkA13+hTNBR2ZYW3wrPxr39qK4R3mEJambwZLhQfRwUaqIB6PqvXICdqeLbRc
|
||||||
DaETVa6YLUQqP9GOuTVy4gVr3AHtaGwMYRz30gjgQuoGUlQOG1U38PRtqe/94iHF
|
2OfzR5oN5HE3Z7QGwDDM8x8diegLYUyTyY3yhJ8PcCs44mXL2XN6XGefgNWuxxDd
|
||||||
1lo14e31BSfHTnv66vupvWdfDXZme/1rOBJw0lM8Q+wHHJrr3mKmiLus85bJsMD7
|
o8189NRNXD2xloiIcbBJQ6Mpix+qlEI4VRnaxiGI3huv/vpKqSxBZFCu4x4kxGwj
|
||||||
M4Cn+5n3lE4kSrup8Y5fOsYSwq1WM9GYUfkVR+x2eHNmNdXLVHS0No6kA2TpKeqg
|
OuaX3cPsvjzj0WEFsAvmrUB/Qdabfhhdm1TgY1PqoXfCudyLuDYqRg8sjIIUjmtA
|
||||||
zbTyL59i+VBPfANCPehVYxFv7JM9pTFYQXDzMEAJcFerWBmB70HUoYXPZxeDEpiC
|
/EyXTO6Ah+vc/NP3mLcHeFAh91Lzvxvm6jEmpN7/jg9zbIzs0jNeVchFYxxVZuRn
|
||||||
6seUT9lXM733QGbxwZLXRhXX4sDhJ7rMQJOvrxSvVDhiJx+Arqhz5srM8FlQHdjG
|
J6ySrkQ5x4FC1DdJlxv36uOLdbsosgia8q3WHOfbt/Lyp/n1RuQX2Kjysi/C79ap
|
||||||
kfC507phCarRqXoef55G4trYjrr3zf+sWHRnPuh1IdFch3U+2CMrBUZIRU+C1nXS
|
xYaozqRmuJIy4Ph4PbhA737PFS4GEyKsHfvskWeGvpGiu/XHP+R+AfE45Mac1O/S
|
||||||
XgHnubHvfLECTWfeEZUQvZaTtio1K3NSWqv/KBivBBRMfNI20A5erQXnocCYXB7o
|
XgEgpNsTDb4GS70fjYBjaSyLcgCeAhqt4Mm4O3UTrYWLfziVLMI7vl9zTznGmY9n
|
||||||
RYisThHMQomNI7bT8vbf5/N/xlqEra5par0SDX16jl4FuU6dgKRuQ3SrpzFjQTA=
|
fS70cnezoSWVj9Nfz+EmmsRWwAYRebzqLWaAtPmrrS5IbWZkLgpay7ga1y9cACo=
|
||||||
=ySHN
|
=0Z+d
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: F7D37890228A907440E1FD4846B9228E814A2AAC
|
fp: F7D37890228A907440E1FD4846B9228E814A2AAC
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
|
|||||||
@@ -228,7 +228,7 @@ in {
|
|||||||
(mkConnection "demiurgen" "eno1")
|
(mkConnection "demiurgen" "eno1")
|
||||||
(mkConnection "sanctuary" "ethernet_0")
|
(mkConnection "sanctuary" "ethernet_0")
|
||||||
(mkConnection "torskas" "eth0")
|
(mkConnection "torskas" "eth0")
|
||||||
(mkConnection "skrott" "eth0")
|
(mkConnection "skrot" "eth0")
|
||||||
(mkConnection "homeassistant" "eth0")
|
(mkConnection "homeassistant" "eth0")
|
||||||
(mkConnection "orchid" "eth0")
|
(mkConnection "orchid" "eth0")
|
||||||
(mkConnection "principal" "em0")
|
(mkConnection "principal" "em0")
|
||||||
|
|||||||
10
values.nix
10
values.nix
@@ -73,10 +73,6 @@ in rec {
|
|||||||
ipv4 = pvv-ipv4 179;
|
ipv4 = pvv-ipv4 179;
|
||||||
ipv6 = pvv-ipv6 "1:2";
|
ipv6 = pvv-ipv6 "1:2";
|
||||||
};
|
};
|
||||||
principal = {
|
|
||||||
ipv4 = pvv-ipv4 233;
|
|
||||||
ipv6 = pvv-ipv6 "4:233";
|
|
||||||
};
|
|
||||||
ustetind = {
|
ustetind = {
|
||||||
ipv4 = pvv-ipv4 234;
|
ipv4 = pvv-ipv4 234;
|
||||||
ipv6 = pvv-ipv6 234;
|
ipv6 = pvv-ipv6 234;
|
||||||
@@ -85,17 +81,13 @@ in rec {
|
|||||||
ipv4 = pvv-ipv4 235;
|
ipv4 = pvv-ipv4 235;
|
||||||
ipv6 = pvv-ipv6 235;
|
ipv6 = pvv-ipv6 235;
|
||||||
};
|
};
|
||||||
skrot = {
|
|
||||||
ipv4 = pvv-ipv4 237;
|
|
||||||
ipv6 = pvv-ipv6 237;
|
|
||||||
};
|
|
||||||
temmie = {
|
temmie = {
|
||||||
ipv4 = pvv-ipv4 167;
|
ipv4 = pvv-ipv4 167;
|
||||||
ipv6 = pvv-ipv6 167;
|
ipv6 = pvv-ipv6 167;
|
||||||
};
|
};
|
||||||
gluttony = {
|
gluttony = {
|
||||||
ipv4 = "129.241.100.118";
|
ipv4 = "129.241.100.118";
|
||||||
ipv4_internal = "192.168.20.77";
|
ipv4_internal = "192.168.20.11";
|
||||||
ipv4_internal_gw = "192.168.20.1";
|
ipv4_internal_gw = "192.168.20.1";
|
||||||
ipv6 = "2001:700:305:aa07::3b3";
|
ipv6 = "2001:700:305:aa07::3b3";
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user