mirror of
https://git.pvv.ntnu.no/Drift/pvv-nixos-config.git
synced 2026-05-25 07:41:13 +02:00
Compare commits
85 Commits
38c62cb5e7
...
userweb-se
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
110096abff | ||
|
|
7429b334ca | ||
|
|
1595f67c55 | ||
|
|
3f5eadcb87 | ||
|
|
70c0ad8724 | ||
|
|
61ea0181a1 | ||
|
|
3e22c1a47e | ||
|
|
0319858cad | ||
|
|
efd50868e0 | ||
|
|
7a23cf7f25 | ||
|
|
57963fadd7 | ||
|
|
792f111a5d | ||
|
|
b27859c0fa | ||
|
|
eb0eb6d93b | ||
|
|
6a943dd7b0 | ||
|
|
c59c00f3fc | ||
|
|
53670b4d05 | ||
|
|
d92a5f13ad | ||
|
|
16d3251ee2 | ||
|
|
09163b77da | ||
|
|
6cca1db3b3 | ||
|
|
bfd83c4c64 | ||
|
|
9a6fdecb03 | ||
|
|
82ab97fb45 | ||
|
|
543fd19f8d | ||
|
|
6f99fa575d | ||
|
|
3141b1f76b | ||
|
|
475f6a8c9b | ||
|
|
9c1687f8f2 | ||
|
|
0f53bcd731 | ||
|
|
f433ae1e15 | ||
|
|
5745648f87 | ||
|
|
2c34a93abf | ||
|
|
9ebc947eab | ||
|
|
6fcc19f0a2 | ||
|
|
9224f04bd1 | ||
|
|
9c93f15569 | ||
|
|
5d6c153007 | ||
|
|
8b483a92f8 | ||
|
|
0d7f05e56d | ||
|
|
4a67eddf52 | ||
|
|
08a23bd380 | ||
|
|
28b67c3578 | ||
|
|
e5804c043a | ||
|
|
9c227f3022 | ||
|
|
69fdf709d7 | ||
|
|
30ec70fa5f | ||
|
|
1024b428ac | ||
|
|
1e6b692fbf | ||
|
|
beac6e91dd | ||
|
|
0fd41c214a | ||
|
|
5c1ee958ea | ||
|
|
d8e97715c9 | ||
|
|
33297b0436 | ||
|
|
be33c95c83 | ||
|
|
2abf36a9af | ||
|
|
a60be532ce | ||
|
|
9c142fd56f | ||
|
|
b98e8679e6 | ||
|
|
ea092ec0b3 | ||
|
|
5e50b617fb | ||
|
|
258c5a7b25 | ||
|
|
b9eda3dc56 | ||
|
|
2fcaf5893f | ||
|
|
b009da31af | ||
|
|
e9a267e2a3 | ||
|
|
338c2f2531 | ||
| 8db3034baf | |||
|
|
f64f9c944e | ||
|
|
baeb1e5e60 | ||
|
|
86ca8dcdc3 | ||
|
|
11d1f8b442 | ||
|
|
d8115c4031 | ||
|
|
0d41326d9f | ||
| 7baf3ffcb4 | |||
|
|
45f10be9b4 | ||
|
|
06cd860d2f | ||
|
|
ebd8b871f4 | ||
|
|
14994485c5 | ||
|
|
f2752ee9a6 | ||
|
|
bb20f32df8 | ||
|
|
f83ae6de37 | ||
|
|
f490e64516 | ||
|
|
61c6639d3a | ||
|
|
eee7e9ad7b |
@@ -7,16 +7,13 @@ jobs:
|
|||||||
evals:
|
evals:
|
||||||
runs-on: debian-latest
|
runs-on: debian-latest
|
||||||
steps:
|
steps:
|
||||||
|
- name: Install sudo
|
||||||
|
run: apt-get install --update --assume-yes sudo
|
||||||
|
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Install sudo
|
|
||||||
run: apt-get update && apt-get -y install sudo
|
|
||||||
|
|
||||||
- uses: https://github.com/cachix/install-nix-action@v31
|
- uses: https://github.com/cachix/install-nix-action@v31
|
||||||
|
|
||||||
- name: Configure Nix
|
|
||||||
run: echo -e "show-trace = true\nmax-jobs = auto\ntrusted-users = root\nexperimental-features = nix-command flakes\nbuild-users-group =" > /etc/nix/nix.conf
|
|
||||||
|
|
||||||
- name: Build topology graph
|
- name: Build topology graph
|
||||||
run: nix build .#topology -L
|
run: nix build .#topology -L
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,11 @@ jobs:
|
|||||||
evals:
|
evals:
|
||||||
runs-on: debian-latest
|
runs-on: debian-latest
|
||||||
steps:
|
steps:
|
||||||
|
- name: Install sudo
|
||||||
|
run: apt-get install --update --assume-yes sudo
|
||||||
|
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
- run: apt-get update && apt-get -y install sudo
|
|
||||||
- uses: https://github.com/cachix/install-nix-action@v31
|
- uses: https://github.com/cachix/install-nix-action@v31
|
||||||
- run: echo -e "show-trace = true\nmax-jobs = auto\ntrusted-users = root\nexperimental-features = nix-command flakes\nbuild-users-group =" > /etc/nix/nix.conf
|
|
||||||
- run: nix flake check
|
- run: nix flake check
|
||||||
|
|||||||
57
.sops.yaml
57
.sops.yaml
@@ -10,19 +10,17 @@ keys:
|
|||||||
- &user_vegardbm age1sqs7urnzsdy64efmd0zukzv3gs5pnjksuxd7nqmdwdy5l0nqnunq6hyune
|
- &user_vegardbm age1sqs7urnzsdy64efmd0zukzv3gs5pnjksuxd7nqmdwdy5l0nqnunq6hyune
|
||||||
|
|
||||||
# Hosts
|
# Hosts
|
||||||
- &host_bakke age1syted6kt48sumjjucggh6r3uca4x2ppp4mfungf3lamkt2le05csc99633
|
|
||||||
- &host_bekkalokk age12nj59tguy9wg882updc2vjdusx5srnxmjyfaqve4zx6jnnsaw3qsyjq6zd
|
- &host_bekkalokk age12nj59tguy9wg882updc2vjdusx5srnxmjyfaqve4zx6jnnsaw3qsyjq6zd
|
||||||
- &host_bicep age19nk55kcs7s0358jpkn75xnr57dfq6fq3p43nartvsprx0su22v7qcgcjdx
|
- &host_bicep age19nk55kcs7s0358jpkn75xnr57dfq6fq3p43nartvsprx0su22v7qcgcjdx
|
||||||
- &host_ildkule age1x28hmzvuv6f2n66c0jtqcca3h9rput8d7j5uek6jcpx8n9egd52sqpejq0
|
- &host_ildkule age102e6y8gah0ntr6fxqnkpepc8ar29p6ls7ks9ka7v8w87q8scm9yqmc2u8d
|
||||||
- &host_kommode age1mt4d0hg5g76qp7j0884llemy0k2ymr5up8vfudz6vzvsflk5nptqqd32ly
|
- &host_kommode age1mt4d0hg5g76qp7j0884llemy0k2ymr5up8vfudz6vzvsflk5nptqqd32ly
|
||||||
- &host_lupine-1 age18lta9d683yekz487xwtd99da236d8mgk4ftlmv2jffx858p9qf2s9j868l
|
- &host_lupine-1 age18lta9d683yekz487xwtd99da236d8mgk4ftlmv2jffx858p9qf2s9j868l
|
||||||
- &host_lupine-2 age1e0a4ru707v637wzmuxqv0xywmlkhunzgyfy4mrkjc7a23qq8msgq7nqtvt
|
- &host_lupine-2 age1e0a4ru707v637wzmuxqv0xywmlkhunzgyfy4mrkjc7a23qq8msgq7nqtvt
|
||||||
- &host_lupine-3 age1wmrrhd5deatmgflkas636u3rzuk46u9knl02v4t39ncs37xqquhq9vwzye
|
- &host_lupine-3 age1wmrrhd5deatmgflkas636u3rzuk46u9knl02v4t39ncs37xqquhq9vwzye
|
||||||
- &host_lupine-4 age1ml48zztcmnrdrhrdsjrlyxf09jtmjgz46u8td4zm59wn3fm4g57qs4wg0l
|
- &host_lupine-4 age1ml48zztcmnrdrhrdsjrlyxf09jtmjgz46u8td4zm59wn3fm4g57qs4wg0l
|
||||||
- &host_lupine-5 age12gws5nws69vxryd3kt7q0ayngch90efmhqcrfhnnsmj00lkgxd4qsdkvqn
|
- &host_lupine-5 age12gws5nws69vxryd3kt7q0ayngch90efmhqcrfhnnsmj00lkgxd4qsdkvqn
|
||||||
- &host_skrott age1lpkju2e053aaddpgsr4ef83epclf4c9tp4m98d35ft2fswr8p4tq2ua0mf
|
|
||||||
- &host_ustetind age1hffjafs4slznksefmtqrlj7rdaqgzqncn4un938rhr053237ry8s3rs0v8
|
|
||||||
- &host_skrot age1hzkvnktkr8t5gvtq0ccw69e44z5z6wf00n3xhk3hj24emf07je5s6q2evr
|
- &host_skrot age1hzkvnktkr8t5gvtq0ccw69e44z5z6wf00n3xhk3hj24emf07je5s6q2evr
|
||||||
|
- &host_gluttony age12czfkvuw9pjk5qny5c6m2hjhd634cj9r4dsa3ss5zkux5h4vvc7s7k4urq
|
||||||
|
|
||||||
creation_rules:
|
creation_rules:
|
||||||
# Global secrets
|
# Global secrets
|
||||||
@@ -93,19 +91,6 @@ creation_rules:
|
|||||||
pgp:
|
pgp:
|
||||||
- *user_oysteikt
|
- *user_oysteikt
|
||||||
|
|
||||||
- path_regex: secrets/ustetind/[^/]+\.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *host_ustetind
|
|
||||||
- *user_danio
|
|
||||||
- *user_felixalb
|
|
||||||
- *user_pederbs_sopp
|
|
||||||
- *user_pederbs_nord
|
|
||||||
- *user_pederbs_bjarte
|
|
||||||
- *user_vegardbm
|
|
||||||
pgp:
|
|
||||||
- *user_oysteikt
|
|
||||||
|
|
||||||
- path_regex: secrets/lupine/[^/]+\.yaml$
|
- path_regex: secrets/lupine/[^/]+\.yaml$
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
@@ -123,31 +108,6 @@ creation_rules:
|
|||||||
pgp:
|
pgp:
|
||||||
- *user_oysteikt
|
- *user_oysteikt
|
||||||
|
|
||||||
- path_regex: secrets/bakke/[^/]+\.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *host_bakke
|
|
||||||
- *user_danio
|
|
||||||
- *user_felixalb
|
|
||||||
- *user_pederbs_sopp
|
|
||||||
- *user_pederbs_nord
|
|
||||||
- *user_pederbs_bjarte
|
|
||||||
- *user_vegardbm
|
|
||||||
pgp:
|
|
||||||
- *user_oysteikt
|
|
||||||
|
|
||||||
- path_regex: secrets/skrott/[^/]+\.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *host_skrott
|
|
||||||
- *user_danio
|
|
||||||
- *user_felixalb
|
|
||||||
- *user_pederbs_sopp
|
|
||||||
- *user_pederbs_nord
|
|
||||||
- *user_pederbs_bjarte
|
|
||||||
- *user_vegardbm
|
|
||||||
pgp:
|
|
||||||
- *user_oysteikt
|
|
||||||
- path_regex: secrets/skrot/[^/]+\.yaml$
|
- path_regex: secrets/skrot/[^/]+\.yaml$
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
@@ -160,3 +120,16 @@ creation_rules:
|
|||||||
- *user_vegardbm
|
- *user_vegardbm
|
||||||
pgp:
|
pgp:
|
||||||
- *user_oysteikt
|
- *user_oysteikt
|
||||||
|
|
||||||
|
- path_regex: secrets/gluttony/[^/]+\.yaml$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *host_gluttony
|
||||||
|
- *user_danio
|
||||||
|
- *user_felixalb
|
||||||
|
- *user_pederbs_sopp
|
||||||
|
- *user_pederbs_nord
|
||||||
|
- *user_pederbs_bjarte
|
||||||
|
- *user_vegardbm
|
||||||
|
pgp:
|
||||||
|
- *user_oysteikt
|
||||||
|
|||||||
@@ -39,11 +39,13 @@ revert the changes on the next nightly rebuild (tends to happen when everybody i
|
|||||||
| bikkje | Virtual | Experimental login box |
|
| bikkje | Virtual | Experimental login box |
|
||||||
| [brzeczyszczykiewicz][brz] | Physical | Shared music player |
|
| [brzeczyszczykiewicz][brz] | Physical | Shared music player |
|
||||||
| [georg][geo] | Physical | Shared music player |
|
| [georg][geo] | Physical | Shared music player |
|
||||||
|
| [gluttony][glu] | Virtual | General purpose compute |
|
||||||
| [ildkule][ild] | Virtual | Logging and monitoring host, prometheus, grafana, ... |
|
| [ildkule][ild] | Virtual | Logging and monitoring host, prometheus, grafana, ... |
|
||||||
| [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 |
|
| [skrot][skr] | Physical | Kiosk, snacks and soda |
|
||||||
|
| [temmie][tem] | Virtual | User websites |
|
||||||
| [wenche][wen] | Virtual | Nix-builders, general purpose compute |
|
| [wenche][wen] | Virtual | Nix-builders, general purpose compute |
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
@@ -57,8 +59,10 @@ revert the changes on the next nightly rebuild (tends to happen when everybody i
|
|||||||
[bic]: https://wiki.pvv.ntnu.no/wiki/Maskiner/bicep
|
[bic]: https://wiki.pvv.ntnu.no/wiki/Maskiner/bicep
|
||||||
[brz]: https://wiki.pvv.ntnu.no/wiki/Maskiner/brzęczyszczykiewicz
|
[brz]: https://wiki.pvv.ntnu.no/wiki/Maskiner/brzęczyszczykiewicz
|
||||||
[geo]: https://wiki.pvv.ntnu.no/wiki/Maskiner/georg
|
[geo]: https://wiki.pvv.ntnu.no/wiki/Maskiner/georg
|
||||||
|
[glu]: https://wiki.pvv.ntnu.no/wiki/Maskiner/gluttony
|
||||||
[ild]: https://wiki.pvv.ntnu.no/wiki/Maskiner/ildkule
|
[ild]: https://wiki.pvv.ntnu.no/wiki/Maskiner/ildkule
|
||||||
[kom]: https://wiki.pvv.ntnu.no/wiki/Maskiner/kommode
|
[kom]: https://wiki.pvv.ntnu.no/wiki/Maskiner/kommode
|
||||||
[lup]: https://wiki.pvv.ntnu.no/wiki/Maskiner/lupine
|
[lup]: https://wiki.pvv.ntnu.no/wiki/Maskiner/lupine
|
||||||
[skr]: https://wiki.pvv.ntnu.no/wiki/Maskiner/Skrott
|
[skr]: https://wiki.pvv.ntnu.no/wiki/Maskiner/Skrot
|
||||||
|
[tem]: https://wiki.pvv.ntnu.no/wiki/Maskiner/temmie
|
||||||
[wen]: https://wiki.pvv.ntnu.no/wiki/Maskiner/wenche
|
[wen]: https://wiki.pvv.ntnu.no/wiki/Maskiner/wenche
|
||||||
|
|||||||
@@ -10,7 +10,10 @@
|
|||||||
(fp /users)
|
(fp /users)
|
||||||
(fp /modules/snakeoil-certs.nix)
|
(fp /modules/snakeoil-certs.nix)
|
||||||
|
|
||||||
|
./mitigations.nix
|
||||||
|
|
||||||
./flake-input-exporter.nix
|
./flake-input-exporter.nix
|
||||||
|
./hardening.nix
|
||||||
./networking.nix
|
./networking.nix
|
||||||
./nix.nix
|
./nix.nix
|
||||||
./programs.nix
|
./programs.nix
|
||||||
@@ -20,6 +23,7 @@
|
|||||||
./services/acme.nix
|
./services/acme.nix
|
||||||
./services/auto-upgrade.nix
|
./services/auto-upgrade.nix
|
||||||
./services/dbus.nix
|
./services/dbus.nix
|
||||||
|
./services/fluentbit.nix
|
||||||
./services/fwupd.nix
|
./services/fwupd.nix
|
||||||
./services/irqbalance.nix
|
./services/irqbalance.nix
|
||||||
./services/journald-upload.nix
|
./services/journald-upload.nix
|
||||||
@@ -30,7 +34,6 @@
|
|||||||
./services/postfix.nix
|
./services/postfix.nix
|
||||||
./services/prometheus-node-exporter.nix
|
./services/prometheus-node-exporter.nix
|
||||||
./services/prometheus-systemd-exporter.nix
|
./services/prometheus-systemd-exporter.nix
|
||||||
./services/promtail.nix
|
|
||||||
./services/roowho2.nix
|
./services/roowho2.nix
|
||||||
./services/smartd.nix
|
./services/smartd.nix
|
||||||
./services/thermald.nix
|
./services/thermald.nix
|
||||||
@@ -68,18 +71,16 @@
|
|||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# security.lockKernelModules = true;
|
|
||||||
security.protectKernelImage = true;
|
|
||||||
security.sudo.execWheelOnly = true;
|
security.sudo.execWheelOnly = true;
|
||||||
security.sudo.extraConfig = ''
|
security.sudo.extraConfig = ''
|
||||||
Defaults lecture = never
|
Defaults lecture = never
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# These are servers, sleep is for the weak
|
# These are servers, sleep is for the weak
|
||||||
systemd.sleep.extraConfig = lib.mkDefault ''
|
systemd.sleep.settings.Sleep = {
|
||||||
AllowSuspend=no
|
AllowSuspend = lib.mkDefault false;
|
||||||
AllowHibernation=no
|
AllowHibernation = lib.mkDefault false;
|
||||||
'';
|
};
|
||||||
|
|
||||||
# users.mutableUsers = lib.mkDefault false;
|
# users.mutableUsers = lib.mkDefault false;
|
||||||
|
|
||||||
|
|||||||
71
base/hardening.nix
Normal file
71
base/hardening.nix
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
boot.blacklistedKernelModules = [
|
||||||
|
# Obscure network protocols
|
||||||
|
"appletalk"
|
||||||
|
"atm"
|
||||||
|
"ax25"
|
||||||
|
"batman-adv"
|
||||||
|
"can"
|
||||||
|
"dccp"
|
||||||
|
"ipx"
|
||||||
|
"llc"
|
||||||
|
"n-hdlc"
|
||||||
|
"netrom"
|
||||||
|
"p8022"
|
||||||
|
"p8023"
|
||||||
|
"psnap"
|
||||||
|
"rds"
|
||||||
|
"rose"
|
||||||
|
"sctp"
|
||||||
|
"tipc"
|
||||||
|
|
||||||
|
# Filesystems we don't use
|
||||||
|
"adfs"
|
||||||
|
"affs"
|
||||||
|
"befs"
|
||||||
|
"bfs"
|
||||||
|
"cifs"
|
||||||
|
"cramfs"
|
||||||
|
"efs"
|
||||||
|
"exofs"
|
||||||
|
"freevxfs"
|
||||||
|
"gfs2"
|
||||||
|
"hfs"
|
||||||
|
"hfsplus"
|
||||||
|
"hpfs"
|
||||||
|
"jffs2"
|
||||||
|
"jfs"
|
||||||
|
"minix"
|
||||||
|
"nilfs2"
|
||||||
|
"ntfs"
|
||||||
|
"omfs"
|
||||||
|
"orangefs"
|
||||||
|
"qnx4"
|
||||||
|
"qnx6"
|
||||||
|
"sysv"
|
||||||
|
"ubifs"
|
||||||
|
"udf"
|
||||||
|
"ufs"
|
||||||
|
|
||||||
|
# Legacy hardware
|
||||||
|
"pcspkr"
|
||||||
|
"floppy"
|
||||||
|
"parport"
|
||||||
|
"ppdev"
|
||||||
|
|
||||||
|
# Other stuff we don't use
|
||||||
|
"firewire-core"
|
||||||
|
"firewire-ohci"
|
||||||
|
"ksmbd"
|
||||||
|
"ib_core"
|
||||||
|
"l2tp_eth"
|
||||||
|
"l2tp_netlink"
|
||||||
|
"l2tp_ppp"
|
||||||
|
"nfc"
|
||||||
|
"soundwire"
|
||||||
|
];
|
||||||
|
|
||||||
|
# security.lockKernelModules = true;
|
||||||
|
security.protectKernelImage = true;
|
||||||
|
}
|
||||||
24
base/mitigations.nix
Normal file
24
base/mitigations.nix
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{ pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
modulesToBan = [
|
||||||
|
# copy.fail
|
||||||
|
"af_alg"
|
||||||
|
"algif_aead"
|
||||||
|
"algif_hash"
|
||||||
|
"algif_rng"
|
||||||
|
"algif_skcipher"
|
||||||
|
|
||||||
|
# dirtyfrag / Fragnesia
|
||||||
|
"esp4"
|
||||||
|
"esp6"
|
||||||
|
"rxrpc"
|
||||||
|
|
||||||
|
# PinTheft
|
||||||
|
"rds"
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
boot.blacklistedKernelModules = modulesToBan;
|
||||||
|
|
||||||
|
boot.extraModprobeConfig = lib.concatMapStringsSep "\n" (mod: "install ${mod} ${lib.getExe' pkgs.coreutils "false"}") modulesToBan;
|
||||||
|
}
|
||||||
@@ -8,6 +8,6 @@
|
|||||||
|
|
||||||
services.resolved = {
|
services.resolved = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
dnssec = "false"; # Supposdly this keeps breaking and the default is to allow downgrades anyways...
|
settings.Resolve.DNSSEC = false; # Supposdly this keeps breaking and the default is to allow downgrades anyways...
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
135
base/services/fluentbit.nix
Normal file
135
base/services/fluentbit.nix
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.services.fluent-bit;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
services.fluent-bit = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
settings = {
|
||||||
|
service = {
|
||||||
|
flush = 1;
|
||||||
|
log_level = "warn";
|
||||||
|
|
||||||
|
http_server = "on";
|
||||||
|
http_listen = "127.0.0.1";
|
||||||
|
http_port = 28183;
|
||||||
|
|
||||||
|
# filesystem-backed buffering so logs survives potential outages.
|
||||||
|
"storage.path" = "/var/lib/fluent-bit/storage";
|
||||||
|
"storage.sync" = "normal";
|
||||||
|
"storage.max_chunks_up" = 64;
|
||||||
|
"storage.backlog.mem_limit" = "16M";
|
||||||
|
};
|
||||||
|
|
||||||
|
pipeline = {
|
||||||
|
inputs = [{
|
||||||
|
name = "systemd";
|
||||||
|
tag = "journal.*";
|
||||||
|
|
||||||
|
db = "/var/lib/fluent-bit/journal.db";
|
||||||
|
read_from_tail = true;
|
||||||
|
strip_underscores = true;
|
||||||
|
lowercase = true;
|
||||||
|
max_entries = 1000;
|
||||||
|
"storage.type" = "filesystem";
|
||||||
|
}];
|
||||||
|
|
||||||
|
filters = [{
|
||||||
|
name = "modify";
|
||||||
|
match = "journal.*";
|
||||||
|
rename = [
|
||||||
|
"hostname host"
|
||||||
|
"priority level"
|
||||||
|
"systemd_unit unit"
|
||||||
|
];
|
||||||
|
}] ++ (lib.mapAttrsToList (k: v: {
|
||||||
|
name = "modify";
|
||||||
|
match = "journal.*";
|
||||||
|
condition = "Key_value_equals level ${k}";
|
||||||
|
set = "level ${v}";
|
||||||
|
}) {
|
||||||
|
"7" = "debug";
|
||||||
|
"6" = "info";
|
||||||
|
"5" = "notice";
|
||||||
|
"4" = "warning";
|
||||||
|
"3" = "error";
|
||||||
|
"2" = "crit";
|
||||||
|
"1" = "alert";
|
||||||
|
"0" = "emergency";
|
||||||
|
});
|
||||||
|
|
||||||
|
outputs = [{
|
||||||
|
name = "loki";
|
||||||
|
match = "*";
|
||||||
|
|
||||||
|
host = "ildkule.pvv.ntnu.no";
|
||||||
|
port = 3100;
|
||||||
|
uri = "/loki/api/v1/push";
|
||||||
|
compress = "gzip";
|
||||||
|
|
||||||
|
labels = lib.concatStringsSep ", " [
|
||||||
|
"job=systemd-journal"
|
||||||
|
];
|
||||||
|
label_keys = lib.concatMapStringsSep "," (k: "$" + k) [
|
||||||
|
"host"
|
||||||
|
"unit"
|
||||||
|
"level"
|
||||||
|
];
|
||||||
|
|
||||||
|
# JSON is probably fine for now, then we just extract the keys we want with the grafana web ui
|
||||||
|
# line_format = "key_value";
|
||||||
|
# drop_single_key = true;
|
||||||
|
|
||||||
|
"storage.total_limit_size" = "256M";
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.fluent-bit = lib.mkIf cfg.enable {
|
||||||
|
serviceConfig = {
|
||||||
|
StateDirectory = "fluent-bit";
|
||||||
|
|
||||||
|
# NOTE: This hardening might be way too strong for general purpose use, don't upstream this.
|
||||||
|
AmbientCapabilities = [ "" ];
|
||||||
|
CapabilityBoundingSet = [ "" ];
|
||||||
|
DeviceAllow = [ "" ];
|
||||||
|
LockPersonality = true;
|
||||||
|
# Lua JIT, maybe other things
|
||||||
|
MemoryDenyWriteExecute = false;
|
||||||
|
NoNewPrivileges = true;
|
||||||
|
PrivateDevices = true;
|
||||||
|
PrivateMounts = true;
|
||||||
|
PrivateTmp = true;
|
||||||
|
PrivateUsers = true;
|
||||||
|
ProtectClock = true;
|
||||||
|
ProtectControlGroups = true;
|
||||||
|
ProtectHome = true;
|
||||||
|
ProtectHostname = true;
|
||||||
|
ProtectKernelLogs = true;
|
||||||
|
ProtectKernelModules = true;
|
||||||
|
ProtectKernelTunables = true;
|
||||||
|
ProtectProc = "invisible";
|
||||||
|
ProtectSystem = "strict";
|
||||||
|
RestrictAddressFamilies = [
|
||||||
|
"AF_INET"
|
||||||
|
"AF_INET6"
|
||||||
|
"AF_UNIX"
|
||||||
|
];
|
||||||
|
RestrictNamespaces = true;
|
||||||
|
RestrictRealtime = true;
|
||||||
|
RestrictSUIDSGID = true;
|
||||||
|
SystemCallArchitectures = "native";
|
||||||
|
SystemCallFilter = [
|
||||||
|
"@system-service"
|
||||||
|
"~@privileged"
|
||||||
|
"~@resources"
|
||||||
|
];
|
||||||
|
UMask = "0077";
|
||||||
|
|
||||||
|
BindReadOnlyPaths = [
|
||||||
|
"/run/systemd/journal"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -6,8 +6,7 @@ in
|
|||||||
services.journald.upload = {
|
services.journald.upload = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
settings.Upload = {
|
settings.Upload = {
|
||||||
# URL = "https://journald.pvv.ntnu.no:${toString config.services.journald.remote.port}";
|
URL = "https://journald.pvv.ntnu.no:${toString config.services.journald.remote.port}";
|
||||||
URL = "https://${values.hosts.ildkule.ipv4}:${toString config.services.journald.remote.port}";
|
|
||||||
ServerKeyFile = "-";
|
ServerKeyFile = "-";
|
||||||
ServerCertificateFile = "-";
|
ServerCertificateFile = "-";
|
||||||
TrustedCertificateFile = "-";
|
TrustedCertificateFile = "-";
|
||||||
|
|||||||
@@ -1,38 +0,0 @@
|
|||||||
{ config, lib, values, ... }:
|
|
||||||
let
|
|
||||||
cfg = config.services.prometheus.exporters.node;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
services.promtail = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
configuration = {
|
|
||||||
server = {
|
|
||||||
http_listen_port = 28183;
|
|
||||||
grpc_listen_port = 0;
|
|
||||||
};
|
|
||||||
clients = [{
|
|
||||||
url = "http://ildkule.pvv.ntnu.no:3100/loki/api/v1/push";
|
|
||||||
}];
|
|
||||||
scrape_configs = [{
|
|
||||||
job_name = "systemd-journal";
|
|
||||||
journal = {
|
|
||||||
max_age = "12h";
|
|
||||||
labels = {
|
|
||||||
job = "systemd-journal";
|
|
||||||
host = config.networking.hostName;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
relabel_configs = [
|
|
||||||
{
|
|
||||||
source_labels = [ "__journal__systemd_unit" ];
|
|
||||||
target_label = "unit";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
source_labels = [ "__journal_priority_keyword" ];
|
|
||||||
target_label = "level";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
93
flake.lock
generated
93
flake.lock
generated
@@ -2,11 +2,11 @@
|
|||||||
"nodes": {
|
"nodes": {
|
||||||
"crane": {
|
"crane": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770419512,
|
"lastModified": 1776635034,
|
||||||
"narHash": "sha256-o8Vcdz6B6bkiGUYkZqFwH3Pv1JwZyXht3dMtS7RchIo=",
|
"narHash": "sha256-OEOJrT3ZfwbChzODfIH4GzlNTtOFuZFWPtW7jIeR8xU=",
|
||||||
"owner": "ipetkov",
|
"owner": "ipetkov",
|
||||||
"repo": "crane",
|
"repo": "crane",
|
||||||
"rev": "2510f2cbc3ccd237f700bb213756a8f35c32d8d7",
|
"rev": "dc7496d8ea6e526b1254b55d09b966e94673750f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -43,16 +43,16 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736864502,
|
"lastModified": 1768920986,
|
||||||
"narHash": "sha256-ItkIZyebGvNH2dK9jVGzJHGPtb6BSWLN8Gmef16NeY0=",
|
"narHash": "sha256-CNzzBsRhq7gg4BMBuTDObiWDH/rFYHEuDRVOwCcwXw4=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"rev": "0141aabed359f063de7413f80d906e1d98c0c123",
|
"rev": "de5708739256238fb912c62f03988815db89ec9a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "v1.11.0",
|
"ref": "v1.13.0",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -78,15 +78,15 @@
|
|||||||
"gergle": {
|
"gergle": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs-unstable"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770617355,
|
"lastModified": 1777067150,
|
||||||
"narHash": "sha256-lauV1yKA67WxnlbiJiwhOT9xI8nTiUqqrrRlgA+rMis=",
|
"narHash": "sha256-vqPz8jCS1zTQlvmgctUFpvnr6f9ISR5h7CPG/HgQvf0=",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"rev": "36af0316a7370d19db05ef7c0a87e826f4a222d5",
|
"rev": "b452a854fb78d6df9fe062b45e23a968657d115d",
|
||||||
"revCount": 24,
|
"revCount": 35,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.pvv.ntnu.no/Grzegorz/gergle.git"
|
"url": "https://git.pvv.ntnu.no/Grzegorz/gergle.git"
|
||||||
},
|
},
|
||||||
@@ -99,16 +99,16 @@
|
|||||||
"greg-ng": {
|
"greg-ng": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs-unstable"
|
||||||
],
|
],
|
||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770617867,
|
"lastModified": 1777019032,
|
||||||
"narHash": "sha256-xPLm4C13KUl0zmm1OA+A8UwDSixwtNQ/caRx/WjN+WY=",
|
"narHash": "sha256-29lw7THThWb5DW01rVRj1b816Apwz/P4m2wVWaSIadU=",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"rev": "155752914d81a3a3c02fcfc5d840cfdfda07216d",
|
"rev": "55262afca46c96f75a834d4e00e30d5fb20affb6",
|
||||||
"revCount": 62,
|
"revCount": 61,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.pvv.ntnu.no/Grzegorz/greg-ng.git"
|
"url": "https://git.pvv.ntnu.no/Grzegorz/greg-ng.git"
|
||||||
},
|
},
|
||||||
@@ -232,11 +232,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774824790,
|
"lastModified": 1778407980,
|
||||||
"narHash": "sha256-3R2aoykbutdJ7YQaZiU7uO8w4O8b6RjztTPNo8isLTI=",
|
"narHash": "sha256-r980BhsReZQe6FkmyNZkwCZpvzARo5jZgTl8HxjAssY=",
|
||||||
"owner": "oddlama",
|
"owner": "oddlama",
|
||||||
"repo": "nix-topology",
|
"repo": "nix-topology",
|
||||||
"rev": "5765ce41be8a4fb5471a57671c2b740a350c5da0",
|
"rev": "ca0a602f650306d00d6f3e3c76d0f4c48a5c5adc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -248,15 +248,15 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775064210,
|
"lastModified": 1779622335,
|
||||||
"narHash": "sha256-bEqbUNAnoyNZzd8rrhS8QETdDWr+vYzZeaggBLmFLIA=",
|
"narHash": "sha256-06G98ieM6l+OI7EMhlvchgDBDn+DvIWCNj40LDhKpmc=",
|
||||||
"rev": "9d1c3efdc713c1ed9679796c08a1a8a193e4704e",
|
"rev": "705e9929918b43bd7b715dc0a878ac870449bb03",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://releases.nixos.org/nixos/25.11-small/nixos-25.11.8497.9d1c3efdc713/nixexprs.tar.xz"
|
"url": "https://releases.nixos.org/nixos/26.05-small/nixos-26.05beta1.705e9929918b/nixexprs.tar.xz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://nixos.org/channels/nixos-25.11-small/nixexprs.tar.xz"
|
"url": "https://nixos.org/channels/nixos-26.05-small/nixexprs.tar.xz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
@@ -276,11 +276,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775064351,
|
"lastModified": 1778586796,
|
||||||
"narHash": "sha256-KHkwW/A1+H23YBMQGDmPb8cw5LwZFnszVKg5eZ4JWhg=",
|
"narHash": "sha256-XmDljcG4x8slQDlsWOc77pCA1YVuYn8JGumkYlhfTxI=",
|
||||||
"rev": "1e6f1bb5bb05d14aea16063ab587c599a68241c2",
|
"rev": "b25e938b89759b5f9466fc53c4a970244f84dc39",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://releases.nixos.org/nixos/unstable-small/nixos-26.05pre973082.1e6f1bb5bb05/nixexprs.tar.xz"
|
"url": "https://releases.nixos.org/nixos/unstable-small/nixos-26.05pre996582.b25e938b8975/nixexprs.tar.xz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
@@ -315,11 +315,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769009806,
|
"lastModified": 1778960428,
|
||||||
"narHash": "sha256-52xTtAOc9B+MBRMRZ8HI6ybNsRLMlHHLh+qwAbaJjRY=",
|
"narHash": "sha256-YAs3LbFGlBLJW3xHeoQfTq2GBBXTvuSKl2WXDtloczU=",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"rev": "aa8adfc6a4d5b6222752e2d15d4a6d3b3b85252e",
|
"rev": "927748790b1f7159adfe32a3ad9ec01d22e9c5a2",
|
||||||
"revCount": 575,
|
"revCount": 583,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.pvv.ntnu.no/Projects/nettsiden.git"
|
"url": "https://git.pvv.ntnu.no/Projects/nettsiden.git"
|
||||||
},
|
},
|
||||||
@@ -380,16 +380,17 @@
|
|||||||
"rust-overlay": "rust-overlay_3"
|
"rust-overlay": "rust-overlay_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770912859,
|
"lastModified": 1778600367,
|
||||||
"narHash": "sha256-wtf7YgthGVDY7dhWe8cO42+CD7Y2Pkngvzirwjwvfzg=",
|
"narHash": "sha256-YB0b2xUf4D8792D5Ay//7C3AjHyv+9yoy8K1mTe+wvE=",
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
"rev": "9361dcf941fabb14e94f472754b0e0a26cc56e13",
|
"rev": "8e5f2849ff7c9616100fe928261512a7ad647939",
|
||||||
"revCount": 59,
|
"revCount": 91,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.pvv.ntnu.no/Projects/roowho2.git"
|
"url": "https://git.pvv.ntnu.no/Projects/roowho2.git"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"ref": "main",
|
"ref": "main",
|
||||||
|
"rev": "8e5f2849ff7c9616100fe928261512a7ad647939",
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.pvv.ntnu.no/Projects/roowho2.git"
|
"url": "https://git.pvv.ntnu.no/Projects/roowho2.git"
|
||||||
}
|
}
|
||||||
@@ -402,11 +403,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770606655,
|
"lastModified": 1777000482,
|
||||||
"narHash": "sha256-rpJf+kxvLWv32ivcgu8d+JeJooog3boJCT8J3joJvvM=",
|
"narHash": "sha256-CZ5FKUSA8FCJf0h9GWdPJXoVVDL9H5yC74GkVc5ubIM=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "11a396520bf911e4ed01e78e11633d3fc63b350e",
|
"rev": "403c09094a877e6c4816462d00b1a56ff8198e06",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -444,11 +445,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769309768,
|
"lastModified": 1776914043,
|
||||||
"narHash": "sha256-AbOIlNO+JoqRJkK1VrnDXhxuX6CrdtIu2hSuy4pxi3g=",
|
"narHash": "sha256-qug5r56yW1qOsjSI99l3Jm15JNT9CvS2otkXNRNtrPI=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "140c9dc582cb73ada2d63a2180524fcaa744fad5",
|
"rev": "2d35c4358d7de3a0e606a6e8b27925d981c01cc3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -464,11 +465,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1774910634,
|
"lastModified": 1777944972,
|
||||||
"narHash": "sha256-B+rZDPyktGEjOMt8PcHKYmgmKoF+GaNAFJhguktXAo0=",
|
"narHash": "sha256-VfGRo1qTBKOe3s2gOv8LSoA6Fk19PvBlwQ1ECN0Evn8=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "19bf3d8678fbbfbc173beaa0b5b37d37938db301",
|
"rev": "c591bf665727040c6cc5cb409079acb22dcce33c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
538
flake.nix
538
flake.nix
@@ -2,13 +2,13 @@
|
|||||||
description = "PVV System flake";
|
description = "PVV System flake";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "https://nixos.org/channels/nixos-25.11-small/nixexprs.tar.xz";
|
nixpkgs.url = "https://nixos.org/channels/nixos-26.05-small/nixexprs.tar.xz";
|
||||||
nixpkgs-unstable.url = "https://nixos.org/channels/nixos-unstable-small/nixexprs.tar.xz";
|
nixpkgs-unstable.url = "https://nixos.org/channels/nixos-unstable-small/nixexprs.tar.xz";
|
||||||
|
|
||||||
sops-nix.url = "github:Mic92/sops-nix/master";
|
sops-nix.url = "github:Mic92/sops-nix/master";
|
||||||
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
disko.url = "github:nix-community/disko/v1.11.0";
|
disko.url = "github:nix-community/disko/v1.13.0";
|
||||||
disko.inputs.nixpkgs.follows = "nixpkgs";
|
disko.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
nix-topology.url = "github:oddlama/nix-topology/main";
|
nix-topology.url = "github:oddlama/nix-topology/main";
|
||||||
@@ -32,13 +32,13 @@
|
|||||||
minecraft-heatmap.url = "git+https://git.pvv.ntnu.no/Projects/minecraft-heatmap.git?ref=main";
|
minecraft-heatmap.url = "git+https://git.pvv.ntnu.no/Projects/minecraft-heatmap.git?ref=main";
|
||||||
minecraft-heatmap.inputs.nixpkgs.follows = "nixpkgs";
|
minecraft-heatmap.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
roowho2.url = "git+https://git.pvv.ntnu.no/Projects/roowho2.git?ref=main";
|
roowho2.url = "git+https://git.pvv.ntnu.no/Projects/roowho2.git?ref=main&rev=8e5f2849ff7c9616100fe928261512a7ad647939";
|
||||||
roowho2.inputs.nixpkgs.follows = "nixpkgs";
|
roowho2.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
greg-ng.url = "git+https://git.pvv.ntnu.no/Grzegorz/greg-ng.git?ref=main";
|
greg-ng.url = "git+https://git.pvv.ntnu.no/Grzegorz/greg-ng.git?ref=main";
|
||||||
greg-ng.inputs.nixpkgs.follows = "nixpkgs";
|
greg-ng.inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||||
gergle.url = "git+https://git.pvv.ntnu.no/Grzegorz/gergle.git?ref=main";
|
gergle.url = "git+https://git.pvv.ntnu.no/Grzegorz/gergle.git?ref=main";
|
||||||
gergle.inputs.nixpkgs.follows = "nixpkgs";
|
gergle.inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||||
grzegorz-clients.url = "git+https://git.pvv.ntnu.no/Grzegorz/grzegorz-clients.git?ref=master";
|
grzegorz-clients.url = "git+https://git.pvv.ntnu.no/Grzegorz/grzegorz-clients.git?ref=master";
|
||||||
grzegorz-clients.inputs.nixpkgs.follows = "nixpkgs";
|
grzegorz-clients.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
@@ -49,8 +49,14 @@
|
|||||||
qotd.inputs.nixpkgs.follows = "nixpkgs";
|
qotd.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, nixpkgs-unstable, sops-nix, disko, ... }@inputs:
|
outputs = {
|
||||||
let
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
nixpkgs-unstable,
|
||||||
|
sops-nix,
|
||||||
|
disko,
|
||||||
|
...
|
||||||
|
} @ inputs: let
|
||||||
inherit (nixpkgs) lib;
|
inherit (nixpkgs) lib;
|
||||||
systems = [
|
systems = [
|
||||||
"x86_64-linux"
|
"x86_64-linux"
|
||||||
@@ -62,217 +68,203 @@
|
|||||||
importantMachines = [
|
importantMachines = [
|
||||||
"bekkalokk"
|
"bekkalokk"
|
||||||
"bicep"
|
"bicep"
|
||||||
"brzeczyszczykiewicz"
|
|
||||||
"georg"
|
"georg"
|
||||||
"ildkule"
|
"ildkule"
|
||||||
|
"kommode"
|
||||||
|
"lupine-1"
|
||||||
|
"skrot"
|
||||||
];
|
];
|
||||||
in {
|
in {
|
||||||
inputs = lib.mapAttrs (_: src: src.outPath) inputs;
|
inputs = lib.mapAttrs (_: src: src.outPath) inputs;
|
||||||
|
|
||||||
pkgs = forAllSystems (system: import nixpkgs {
|
pkgs = forAllSystems (system:
|
||||||
inherit system;
|
import nixpkgs {
|
||||||
config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg)
|
inherit system;
|
||||||
[
|
config.allowUnfreePredicate = pkg:
|
||||||
"nvidia-x11"
|
builtins.elem (lib.getName pkg)
|
||||||
"nvidia-settings"
|
[
|
||||||
];
|
"nvidia-x11"
|
||||||
});
|
"nvidia-settings"
|
||||||
|
"nvidia-kernel-modules"
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
nixosConfigurations = let
|
nixosConfigurations = let
|
||||||
nixosConfig =
|
nixosConfig = nixpkgs: name: configurationPath: extraArgs @ {
|
||||||
nixpkgs:
|
localSystem ? "x86_64-linux", # buildPlatform
|
||||||
name:
|
crossSystem ? "x86_64-linux", # hostPlatform
|
||||||
configurationPath:
|
specialArgs ? {},
|
||||||
extraArgs@{
|
modules ? [],
|
||||||
localSystem ? "x86_64-linux", # buildPlatform
|
overlays ? [],
|
||||||
crossSystem ? "x86_64-linux", # hostPlatform
|
enableDefaults ? true,
|
||||||
specialArgs ? { },
|
...
|
||||||
modules ? [ ],
|
}: let
|
||||||
overlays ? [ ],
|
commonPkgsConfig =
|
||||||
enableDefaults ? true,
|
{
|
||||||
...
|
config.allowUnfreePredicate = pkg:
|
||||||
}:
|
builtins.elem (lib.getName pkg)
|
||||||
let
|
|
||||||
commonPkgsConfig = {
|
|
||||||
config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg)
|
|
||||||
[
|
[
|
||||||
"nvidia-x11"
|
"nvidia-x11"
|
||||||
"nvidia-settings"
|
"nvidia-settings"
|
||||||
|
"nvidia-kernel-modules"
|
||||||
];
|
];
|
||||||
overlays = (lib.optionals enableDefaults [
|
overlays =
|
||||||
# Global overlays go here
|
(lib.optionals enableDefaults [
|
||||||
inputs.roowho2.overlays.default
|
# Global overlays go here
|
||||||
]) ++ overlays;
|
inputs.roowho2.overlays.default
|
||||||
} // (if localSystem != crossSystem then {
|
])
|
||||||
inherit localSystem crossSystem;
|
++ overlays;
|
||||||
} else {
|
}
|
||||||
system = crossSystem;
|
// (
|
||||||
});
|
if localSystem != crossSystem
|
||||||
pkgs = import nixpkgs commonPkgsConfig;
|
then {
|
||||||
unstablePkgs = import nixpkgs-unstable commonPkgsConfig;
|
inherit localSystem crossSystem;
|
||||||
in
|
|
||||||
lib.nixosSystem (lib.recursiveUpdate
|
|
||||||
{
|
|
||||||
system = crossSystem;
|
|
||||||
|
|
||||||
inherit pkgs;
|
|
||||||
|
|
||||||
specialArgs = {
|
|
||||||
inherit inputs unstablePkgs;
|
|
||||||
values = import ./values.nix;
|
|
||||||
fp = path: ./${path};
|
|
||||||
} // specialArgs;
|
|
||||||
|
|
||||||
modules = [
|
|
||||||
{
|
|
||||||
networking.hostName = lib.mkDefault name;
|
|
||||||
}
|
}
|
||||||
configurationPath
|
else {
|
||||||
] ++ (lib.optionals enableDefaults [
|
system = crossSystem;
|
||||||
sops-nix.nixosModules.sops
|
}
|
||||||
inputs.roowho2.nixosModules.default
|
);
|
||||||
self.nixosModules.rsync-pull-targets
|
pkgs = import nixpkgs commonPkgsConfig;
|
||||||
]) ++ modules;
|
unstablePkgs = import nixpkgs-unstable commonPkgsConfig;
|
||||||
}
|
in
|
||||||
(builtins.removeAttrs extraArgs [
|
lib.nixosSystem (
|
||||||
"localSystem"
|
lib.recursiveUpdate
|
||||||
"crossSystem"
|
{
|
||||||
"modules"
|
system = crossSystem;
|
||||||
"overlays"
|
|
||||||
"specialArgs"
|
inherit pkgs;
|
||||||
"enableDefaults"
|
|
||||||
])
|
specialArgs =
|
||||||
);
|
{
|
||||||
|
inherit inputs unstablePkgs;
|
||||||
|
values = import ./values.nix;
|
||||||
|
fp = path: ./${path};
|
||||||
|
}
|
||||||
|
// specialArgs;
|
||||||
|
|
||||||
|
modules =
|
||||||
|
[
|
||||||
|
{
|
||||||
|
networking.hostName = lib.mkDefault name;
|
||||||
|
}
|
||||||
|
configurationPath
|
||||||
|
]
|
||||||
|
++ (lib.optionals enableDefaults [
|
||||||
|
sops-nix.nixosModules.sops
|
||||||
|
inputs.roowho2.nixosModules.default
|
||||||
|
self.nixosModules.rsync-pull-targets
|
||||||
|
])
|
||||||
|
++ modules;
|
||||||
|
}
|
||||||
|
(builtins.removeAttrs extraArgs [
|
||||||
|
"localSystem"
|
||||||
|
"crossSystem"
|
||||||
|
"modules"
|
||||||
|
"overlays"
|
||||||
|
"specialArgs"
|
||||||
|
"enableDefaults"
|
||||||
|
])
|
||||||
|
);
|
||||||
|
|
||||||
stableNixosConfig = name: extraArgs:
|
stableNixosConfig = name: extraArgs:
|
||||||
nixosConfig nixpkgs name ./hosts/${name}/configuration.nix extraArgs;
|
nixosConfig nixpkgs name ./hosts/${name}/configuration.nix extraArgs;
|
||||||
in {
|
in
|
||||||
bicep = stableNixosConfig "bicep" {
|
{
|
||||||
modules = [
|
bicep = stableNixosConfig "bicep" {
|
||||||
inputs.matrix-next.nixosModules.default
|
modules = [
|
||||||
inputs.pvv-calendar-bot.nixosModules.default
|
inputs.matrix-next.nixosModules.default
|
||||||
inputs.minecraft-heatmap.nixosModules.default
|
inputs.pvv-calendar-bot.nixosModules.default
|
||||||
self.nixosModules.gickup
|
inputs.minecraft-heatmap.nixosModules.default
|
||||||
self.nixosModules.matrix-ooye
|
self.nixosModules.gickup
|
||||||
];
|
self.nixosModules.matrix-ooye
|
||||||
overlays = [
|
];
|
||||||
inputs.pvv-calendar-bot.overlays.default
|
overlays = [
|
||||||
inputs.minecraft-heatmap.overlays.default
|
inputs.pvv-calendar-bot.overlays.default
|
||||||
(final: prev: {
|
inputs.minecraft-heatmap.overlays.default
|
||||||
inherit (self.packages.${prev.stdenv.hostPlatform.system}) out-of-your-element;
|
(final: prev: {
|
||||||
})
|
inherit (self.packages.${prev.stdenv.hostPlatform.system}) out-of-your-element;
|
||||||
];
|
})
|
||||||
};
|
];
|
||||||
bekkalokk = stableNixosConfig "bekkalokk" {
|
};
|
||||||
overlays = [
|
bekkalokk = stableNixosConfig "bekkalokk" {
|
||||||
(final: prev: {
|
overlays = [
|
||||||
mediawiki-extensions = final.callPackage ./packages/mediawiki-extensions { };
|
(final: prev: {
|
||||||
simplesamlphp = final.callPackage ./packages/simplesamlphp { };
|
mediawiki-extensions = final.callPackage ./packages/mediawiki-extensions {};
|
||||||
bluemap = final.callPackage ./packages/bluemap.nix { };
|
simplesamlphp = final.callPackage ./packages/simplesamlphp {};
|
||||||
})
|
})
|
||||||
inputs.pvv-nettsiden.overlays.default
|
inputs.pvv-nettsiden.overlays.default
|
||||||
inputs.qotd.overlays.default
|
inputs.qotd.overlays.default
|
||||||
];
|
];
|
||||||
modules = [
|
modules = [
|
||||||
inputs.pvv-nettsiden.nixosModules.default
|
inputs.pvv-nettsiden.nixosModules.default
|
||||||
self.nixosModules.bluemap
|
inputs.qotd.nixosModules.default
|
||||||
inputs.qotd.nixosModules.default
|
];
|
||||||
];
|
};
|
||||||
};
|
ildkule = stableNixosConfig "ildkule" {
|
||||||
ildkule = stableNixosConfig "ildkule" { };
|
modules = [
|
||||||
#ildkule-unstable = unstableNixosConfig "ildkule" { };
|
inputs.disko.nixosModules.disko
|
||||||
skrot = stableNixosConfig "skrot" {
|
];
|
||||||
modules = [
|
};
|
||||||
inputs.disko.nixosModules.disko
|
skrot = stableNixosConfig "skrot" {
|
||||||
inputs.dibbler.nixosModules.default
|
modules = [
|
||||||
];
|
inputs.disko.nixosModules.disko
|
||||||
overlays = [inputs.dibbler.overlays.default];
|
inputs.dibbler.nixosModules.default
|
||||||
};
|
];
|
||||||
shark = stableNixosConfig "shark" { };
|
overlays = [inputs.dibbler.overlays.default];
|
||||||
wenche = stableNixosConfig "wenche" { };
|
};
|
||||||
temmie = stableNixosConfig "temmie" { };
|
shark = stableNixosConfig "shark" {};
|
||||||
gluttony = stableNixosConfig "gluttony" { };
|
wenche = stableNixosConfig "wenche" {};
|
||||||
|
temmie = stableNixosConfig "temmie" {};
|
||||||
|
gluttony = stableNixosConfig "gluttony" {
|
||||||
|
overlays = [
|
||||||
|
(final: prev: { bluemap = final.callPackage ./packages/bluemap.nix {}; })
|
||||||
|
];
|
||||||
|
modules = [ self.nixosModules.bluemap ];
|
||||||
|
};
|
||||||
|
|
||||||
kommode = stableNixosConfig "kommode" {
|
kommode = stableNixosConfig "kommode" {
|
||||||
overlays = [
|
overlays = [
|
||||||
inputs.nix-gitea-themes.overlays.default
|
inputs.nix-gitea-themes.overlays.default
|
||||||
];
|
];
|
||||||
modules = [
|
modules = [
|
||||||
inputs.nix-gitea-themes.nixosModules.default
|
inputs.nix-gitea-themes.nixosModules.default
|
||||||
inputs.disko.nixosModules.disko
|
inputs.disko.nixosModules.disko
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
ustetind = stableNixosConfig "ustetind" {
|
brzeczyszczykiewicz = stableNixosConfig "brzeczyszczykiewicz" {
|
||||||
modules = [
|
modules = [
|
||||||
"${nixpkgs}/nixos/modules/virtualisation/lxc-container.nix"
|
inputs.grzegorz-clients.nixosModules.grzegorz-webui
|
||||||
];
|
inputs.gergle.nixosModules.default
|
||||||
};
|
inputs.greg-ng.nixosModules.default
|
||||||
|
];
|
||||||
brzeczyszczykiewicz = stableNixosConfig "brzeczyszczykiewicz" {
|
overlays = [
|
||||||
modules = [
|
inputs.greg-ng.overlays.default
|
||||||
inputs.grzegorz-clients.nixosModules.grzegorz-webui
|
inputs.gergle.overlays.default
|
||||||
inputs.gergle.nixosModules.default
|
];
|
||||||
inputs.greg-ng.nixosModules.default
|
};
|
||||||
];
|
georg = stableNixosConfig "georg" {
|
||||||
overlays = [
|
modules = [
|
||||||
inputs.greg-ng.overlays.default
|
inputs.grzegorz-clients.nixosModules.grzegorz-webui
|
||||||
inputs.gergle.overlays.default
|
inputs.gergle.nixosModules.default
|
||||||
];
|
inputs.greg-ng.nixosModules.default
|
||||||
};
|
];
|
||||||
georg = stableNixosConfig "georg" {
|
overlays = [
|
||||||
modules = [
|
inputs.greg-ng.overlays.default
|
||||||
inputs.grzegorz-clients.nixosModules.grzegorz-webui
|
inputs.gergle.overlays.default
|
||||||
inputs.gergle.nixosModules.default
|
];
|
||||||
inputs.greg-ng.nixosModules.default
|
};
|
||||||
];
|
}
|
||||||
overlays = [
|
// (let
|
||||||
inputs.greg-ng.overlays.default
|
machineNames = map (i: "lupine-${toString i}") (lib.range 1 5);
|
||||||
inputs.gergle.overlays.default
|
stableLupineNixosConfig = name: extraArgs:
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
//
|
|
||||||
(let
|
|
||||||
skrottConfig = {
|
|
||||||
modules = [
|
|
||||||
(nixpkgs + "/nixos/modules/installer/sd-card/sd-image-aarch64.nix")
|
|
||||||
inputs.dibbler.nixosModules.default
|
|
||||||
];
|
|
||||||
overlays = [
|
|
||||||
inputs.dibbler.overlays.default
|
|
||||||
(final: prev: {
|
|
||||||
# NOTE: Yeetus (these break crosscompile ¯\_(ツ)_/¯)
|
|
||||||
atool = prev.emptyDirectory;
|
|
||||||
micro = prev.emptyDirectory;
|
|
||||||
ncdu = prev.emptyDirectory;
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
skrott = self.nixosConfigurations.skrott-native;
|
|
||||||
skrott-native = stableNixosConfig "skrott" (skrottConfig // {
|
|
||||||
localSystem = "aarch64-linux";
|
|
||||||
crossSystem = "aarch64-linux";
|
|
||||||
});
|
|
||||||
skrott-cross = stableNixosConfig "skrott" (skrottConfig // {
|
|
||||||
localSystem = "x86_64-linux";
|
|
||||||
crossSystem = "aarch64-linux";
|
|
||||||
});
|
|
||||||
skrott-x86_64 = stableNixosConfig "skrott" (skrottConfig // {
|
|
||||||
localSystem = "x86_64-linux";
|
|
||||||
crossSystem = "x86_64-linux";
|
|
||||||
});
|
|
||||||
})
|
|
||||||
//
|
|
||||||
(let
|
|
||||||
machineNames = map (i: "lupine-${toString i}") (lib.range 1 5);
|
|
||||||
stableLupineNixosConfig = name: extraArgs:
|
|
||||||
nixosConfig nixpkgs name ./hosts/lupine/configuration.nix extraArgs;
|
nixosConfig nixpkgs name ./hosts/lupine/configuration.nix extraArgs;
|
||||||
in lib.genAttrs machineNames (name: stableLupineNixosConfig name {
|
in
|
||||||
modules = [{ networking.hostName = name; }];
|
lib.genAttrs machineNames (name:
|
||||||
specialArgs.lupineName = name;
|
stableLupineNixosConfig name {
|
||||||
}));
|
modules = [{networking.hostName = name;}];
|
||||||
|
specialArgs.lupineName = name;
|
||||||
|
}));
|
||||||
|
|
||||||
nixosModules = {
|
nixosModules = {
|
||||||
bluemap = ./modules/bluemap.nix;
|
bluemap = ./modules/bluemap.nix;
|
||||||
@@ -294,7 +286,8 @@
|
|||||||
})
|
})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
in pkgs.callPackage ./shell.nix { };
|
in
|
||||||
|
pkgs.callPackage ./shell.nix {};
|
||||||
cuda = let
|
cuda = let
|
||||||
cuda-pkgs = import nixpkgs-unstable {
|
cuda-pkgs = import nixpkgs-unstable {
|
||||||
inherit system;
|
inherit system;
|
||||||
@@ -303,91 +296,88 @@
|
|||||||
cudaSupport = true;
|
cudaSupport = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in cuda-pkgs.callPackage ./shells/cuda.nix { };
|
in
|
||||||
|
cuda-pkgs.callPackage ./shells/cuda.nix {};
|
||||||
});
|
});
|
||||||
|
|
||||||
packages = {
|
packages = {
|
||||||
"x86_64-linux" = let
|
"x86_64-linux" = let
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
in rec {
|
in
|
||||||
default = important-machines;
|
rec {
|
||||||
important-machines = pkgs.linkFarm "important-machines"
|
default = important-machines;
|
||||||
(lib.getAttrs importantMachines self.packages.${system});
|
important-machines =
|
||||||
all-machines = pkgs.linkFarm "all-machines"
|
pkgs.linkFarm "important-machines"
|
||||||
(lib.getAttrs allMachines self.packages.${system});
|
(lib.getAttrs importantMachines self.packages.${system});
|
||||||
|
all-machines =
|
||||||
|
pkgs.linkFarm "all-machines"
|
||||||
|
(lib.getAttrs allMachines self.packages.${system});
|
||||||
|
|
||||||
simplesamlphp = pkgs.callPackage ./packages/simplesamlphp { };
|
simplesamlphp = pkgs.callPackage ./packages/simplesamlphp {};
|
||||||
|
|
||||||
bluemap = pkgs.callPackage ./packages/bluemap.nix { };
|
bluemap = pkgs.callPackage ./packages/bluemap.nix {};
|
||||||
|
|
||||||
out-of-your-element = pkgs.callPackage ./packages/ooye/package.nix { };
|
out-of-your-element = pkgs.callPackage ./packages/ooye/package.nix {};
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
# Mediawiki extensions
|
# Mediawiki extensions
|
||||||
(lib.pipe null [
|
(lib.pipe null [
|
||||||
(_: pkgs.callPackage ./packages/mediawiki-extensions { })
|
(_: pkgs.callPackage ./packages/mediawiki-extensions {})
|
||||||
(lib.flip builtins.removeAttrs ["override" "overrideDerivation"])
|
(lib.flip builtins.removeAttrs ["override" "overrideDerivation"])
|
||||||
(lib.mapAttrs' (name: lib.nameValuePair "mediawiki-${name}"))
|
(lib.mapAttrs' (name: lib.nameValuePair "mediawiki-${name}"))
|
||||||
])
|
])
|
||||||
//
|
//
|
||||||
# Machines
|
# Machines
|
||||||
lib.genAttrs allMachines
|
lib.genAttrs allMachines
|
||||||
(machine: self.nixosConfigurations.${machine}.config.system.build.toplevel)
|
(machine: self.nixosConfigurations.${machine}.config.system.build.toplevel)
|
||||||
//
|
//
|
||||||
# Skrott is exception
|
# Nix-topology
|
||||||
{
|
(let
|
||||||
skrott = self.packages.${system}.skrott-native-sd;
|
topology' = import inputs.nix-topology {
|
||||||
skrott-native = self.nixosConfigurations.skrott-native.config.system.build.toplevel;
|
pkgs = import nixpkgs {
|
||||||
skrott-native-sd = self.nixosConfigurations.skrott-native.config.system.build.sdImage;
|
inherit system;
|
||||||
skrott-cross = self.nixosConfigurations.skrott-cross.config.system.build.toplevel;
|
overlays = [
|
||||||
skrott-cross-sd = self.nixosConfigurations.skrott-cross.config.system.build.sdImage;
|
inputs.nix-topology.overlays.default
|
||||||
skrott-x86_64 = self.nixosConfigurations.skrott-x86_64.config.system.build.toplevel;
|
(final: prev: {
|
||||||
}
|
inherit (nixpkgs-unstable.legacyPackages.${system}) super-tiny-icons;
|
||||||
//
|
})
|
||||||
# Nix-topology
|
];
|
||||||
(let
|
};
|
||||||
topology' = import inputs.nix-topology {
|
|
||||||
pkgs = import nixpkgs {
|
specialArgs = {
|
||||||
inherit system;
|
values = import ./values.nix;
|
||||||
overlays = [
|
};
|
||||||
inputs.nix-topology.overlays.default
|
|
||||||
(final: prev: {
|
modules = [
|
||||||
inherit (nixpkgs-unstable.legacyPackages.${system}) super-tiny-icons;
|
./topology
|
||||||
})
|
{
|
||||||
|
nixosConfigurations = lib.mapAttrs (_name: nixosCfg:
|
||||||
|
nixosCfg.extendModules {
|
||||||
|
modules = [
|
||||||
|
inputs.nix-topology.nixosModules.default
|
||||||
|
./topology/service-extractors/greg-ng.nix
|
||||||
|
./topology/service-extractors/postgresql.nix
|
||||||
|
./topology/service-extractors/mysql.nix
|
||||||
|
./topology/service-extractors/gitea-runners.nix
|
||||||
|
];
|
||||||
|
})
|
||||||
|
self.nixosConfigurations;
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
in {
|
||||||
specialArgs = {
|
topology = topology'.config.output;
|
||||||
values = import ./values.nix;
|
topology-png =
|
||||||
};
|
pkgs.runCommand "pvv-config-topology-png" {
|
||||||
|
nativeBuildInputs = [pkgs.writableTmpDirAsHomeHook];
|
||||||
modules = [
|
} ''
|
||||||
./topology
|
mkdir -p "$out"
|
||||||
{
|
for file in '${topology'.config.output}'/*.svg; do
|
||||||
nixosConfigurations = lib.mapAttrs (_name: nixosCfg: nixosCfg.extendModules {
|
${lib.getExe pkgs.imagemagick} -density 300 -background none "$file" "$out"/"$(basename "''${file%.svg}.png")"
|
||||||
modules = [
|
done
|
||||||
inputs.nix-topology.nixosModules.default
|
'';
|
||||||
./topology/service-extractors/greg-ng.nix
|
});
|
||||||
./topology/service-extractors/postgresql.nix
|
|
||||||
./topology/service-extractors/mysql.nix
|
|
||||||
./topology/service-extractors/gitea-runners.nix
|
|
||||||
];
|
|
||||||
}) self.nixosConfigurations;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
topology = topology'.config.output;
|
|
||||||
topology-png = pkgs.runCommand "pvv-config-topology-png" {
|
|
||||||
nativeBuildInputs = [ pkgs.writableTmpDirAsHomeHook ];
|
|
||||||
} ''
|
|
||||||
mkdir -p "$out"
|
|
||||||
for file in '${topology'.config.output}'/*.svg; do
|
|
||||||
${lib.getExe pkgs.imagemagick} -density 300 -background none "$file" "$out"/"$(basename "''${file%.svg}.png")"
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,83 +0,0 @@
|
|||||||
{
|
|
||||||
# https://github.com/nix-community/disko/blob/master/example/boot-raid1.nix
|
|
||||||
# Note: Disko was used to create the initial md raid, but is no longer in active use on this host.
|
|
||||||
disko.devices = {
|
|
||||||
disk = {
|
|
||||||
one = {
|
|
||||||
type = "disk";
|
|
||||||
device = "/dev/disk/by-id/ata-WDC_WD40EFRX-68WT0N0_WD-WCC4E2EER6N6";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
ESP = {
|
|
||||||
size = "500M";
|
|
||||||
type = "EF00";
|
|
||||||
content = {
|
|
||||||
type = "mdraid";
|
|
||||||
name = "boot";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
mdadm = {
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "mdraid";
|
|
||||||
name = "raid1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
two = {
|
|
||||||
type = "disk";
|
|
||||||
device = "/dev/disk/by-id/ata-WDC_WD40EFRX-68WT0N0_WD-WCC4E7LPLU71";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
ESP = {
|
|
||||||
size = "500M";
|
|
||||||
type = "EF00";
|
|
||||||
content = {
|
|
||||||
type = "mdraid";
|
|
||||||
name = "boot";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
mdadm = {
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "mdraid";
|
|
||||||
name = "raid1";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
mdadm = {
|
|
||||||
boot = {
|
|
||||||
type = "mdadm";
|
|
||||||
level = 1;
|
|
||||||
metadata = "1.0";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "vfat";
|
|
||||||
mountpoint = "/boot";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
raid1 = {
|
|
||||||
type = "mdadm";
|
|
||||||
level = 1;
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions.primary = {
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "ext4";
|
|
||||||
mountpoint = "/";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
{ pkgs,... }:
|
|
||||||
{
|
|
||||||
# Boot drives:
|
|
||||||
boot.swraid.enable = true;
|
|
||||||
|
|
||||||
# ZFS Data pool:
|
|
||||||
boot = {
|
|
||||||
zfs = {
|
|
||||||
extraPools = [ "tank" ];
|
|
||||||
requestEncryptionCredentials = false;
|
|
||||||
};
|
|
||||||
supportedFilesystems.zfs = true;
|
|
||||||
# Use stable linux packages, these work with zfs
|
|
||||||
kernelPackages = pkgs.linuxPackages;
|
|
||||||
};
|
|
||||||
services.zfs.autoScrub = {
|
|
||||||
enable = true;
|
|
||||||
interval = "Wed *-*-8..14 00:00:00";
|
|
||||||
};
|
|
||||||
|
|
||||||
# NFS Exports:
|
|
||||||
#TODO
|
|
||||||
|
|
||||||
# NFS Import mounts:
|
|
||||||
#TODO
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
# Do not modify this file! It was generated by 'nixos-generate-config'
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
|
|
||||||
fileSystems."/" =
|
|
||||||
{ device = "/dev/disk/by-uuid/0f63c3d2-fc12-4ed5-a5a5-141bfd67a571";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [ "subvol=root" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/home" =
|
|
||||||
{ device = "/dev/disk/by-uuid/0f63c3d2-fc12-4ed5-a5a5-141bfd67a571";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [ "subvol=home" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/nix" =
|
|
||||||
{ device = "/dev/disk/by-uuid/0f63c3d2-fc12-4ed5-a5a5-141bfd67a571";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [ "subvol=nix" "noatime" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" =
|
|
||||||
{ device = "/dev/sdc2";
|
|
||||||
fsType = "vfat";
|
|
||||||
options = [ "fmask=0022" "dmask=0022" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [ ];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault false;
|
|
||||||
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.enp2s0.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
||||||
@@ -1,105 +1,10 @@
|
|||||||
{ config, lib, pkgs, inputs, ... }:
|
{ values, ... }:
|
||||||
let
|
let
|
||||||
vanillaSurvival = "/var/lib/bluemap/vanilla_survival_world";
|
webExport = "/var/lib/bluemap/web";
|
||||||
format = pkgs.formats.hocon { };
|
|
||||||
in {
|
in {
|
||||||
# NOTE: our versino of the module gets added in flake.nix
|
# NOTE: our version of the module gets added in flake.nix
|
||||||
disabledModules = [ "services/web-apps/bluemap.nix" ];
|
disabledModules = [ "services/web-apps/bluemap.nix" ];
|
||||||
|
|
||||||
sops.secrets."bluemap/ssh-key" = { };
|
|
||||||
sops.secrets."bluemap/ssh-known-hosts" = { };
|
|
||||||
|
|
||||||
services.bluemap = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
eula = true;
|
|
||||||
onCalendar = "*-*-* 05:45:00"; # a little over an hour after auto-upgrade
|
|
||||||
|
|
||||||
host = "minecraft.pvv.ntnu.no";
|
|
||||||
|
|
||||||
maps = let
|
|
||||||
inherit (inputs.minecraft-kartverket.packages.${pkgs.stdenv.hostPlatform.system}) bluemap-export;
|
|
||||||
in {
|
|
||||||
"verden" = {
|
|
||||||
extraHoconMarkersFile = "${bluemap-export}/overworld.hocon";
|
|
||||||
settings = {
|
|
||||||
world = vanillaSurvival;
|
|
||||||
dimension = "minecraft:overworld";
|
|
||||||
name = "Verden";
|
|
||||||
sorting = 0;
|
|
||||||
start-pos = {
|
|
||||||
x = 0;
|
|
||||||
z = 0;
|
|
||||||
};
|
|
||||||
ambient-light = 0.1;
|
|
||||||
cave-detection-ocean-floor = -5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"underverden" = {
|
|
||||||
extraHoconMarkersFile = "${bluemap-export}/nether.hocon";
|
|
||||||
settings = {
|
|
||||||
world = vanillaSurvival;
|
|
||||||
dimension = "minecraft:the_nether";
|
|
||||||
name = "Underverden";
|
|
||||||
sorting = 100;
|
|
||||||
start-pos = {
|
|
||||||
x = 0;
|
|
||||||
z = 0;
|
|
||||||
};
|
|
||||||
sky-color = "#290000";
|
|
||||||
void-color = "#150000";
|
|
||||||
sky-light = 1;
|
|
||||||
ambient-light = 0.6;
|
|
||||||
remove-caves-below-y = -10000;
|
|
||||||
cave-detection-ocean-floor = -5;
|
|
||||||
cave-detection-uses-block-light = true;
|
|
||||||
render-mask = [{
|
|
||||||
max-y = 90;
|
|
||||||
}];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"enden" = {
|
|
||||||
extraHoconMarkersFile = "${bluemap-export}/the-end.hocon";
|
|
||||||
settings = {
|
|
||||||
world = vanillaSurvival;
|
|
||||||
dimension = "minecraft:the_end";
|
|
||||||
name = "Enden";
|
|
||||||
sorting = 200;
|
|
||||||
start-pos = {
|
|
||||||
x = 0;
|
|
||||||
z = 0;
|
|
||||||
};
|
|
||||||
sky-color = "#080010";
|
|
||||||
void-color = "#080010";
|
|
||||||
sky-light = 1;
|
|
||||||
ambient-light = 0.6;
|
|
||||||
remove-caves-below-y = -10000;
|
|
||||||
cave-detection-ocean-floor = -5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services."render-bluemap-maps" = {
|
|
||||||
serviceConfig = {
|
|
||||||
StateDirectory = [ "bluemap/world" ];
|
|
||||||
ExecStartPre = let
|
|
||||||
rsyncArgs = lib.cli.toCommandLineShellGNU { } {
|
|
||||||
archive = true;
|
|
||||||
compress = true;
|
|
||||||
verbose = true;
|
|
||||||
no-owner = true;
|
|
||||||
no-group = true;
|
|
||||||
rsh = "${pkgs.openssh}/bin/ssh -o UserKnownHostsFile=%d/ssh-known-hosts -i %d/sshkey";
|
|
||||||
};
|
|
||||||
in "${lib.getExe pkgs.rsync} ${rsyncArgs} root@innovation.pvv.ntnu.no:/ ${vanillaSurvival}";
|
|
||||||
LoadCredential = [
|
|
||||||
"sshkey:${config.sops.secrets."bluemap/ssh-key".path}"
|
|
||||||
"ssh-known-hosts:${config.sops.secrets."bluemap/ssh-known-hosts".path}"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.nginx.virtualHosts."minecraft.pvv.ntnu.no" = {
|
services.nginx.virtualHosts."minecraft.pvv.ntnu.no" = {
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
@@ -115,6 +20,30 @@ in {
|
|||||||
quic_retry on;
|
quic_retry on;
|
||||||
add_header Alt-Svc 'h3=":$server_port"; ma=86400';
|
add_header Alt-Svc 'h3=":$server_port"; ma=86400';
|
||||||
'';
|
'';
|
||||||
|
root = webExport;
|
||||||
|
locations = {
|
||||||
|
"~* ^/maps/[^/]*/tiles/".extraConfig = ''
|
||||||
|
error_page 404 = @empty;
|
||||||
|
'';
|
||||||
|
"@empty".return = "204";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.rsync-pull-targets = {
|
||||||
|
enable = true;
|
||||||
|
locations.${webExport} = {
|
||||||
|
user = "root";
|
||||||
|
rrsyncArgs.wo = true;
|
||||||
|
authorizedKeysAttrs = [
|
||||||
|
"restrict"
|
||||||
|
"from=\"gluttony.pvv.ntnu.no,${values.hosts.gluttony.ipv6},${values.hosts.gluttony.ipv4}\""
|
||||||
|
"no-agent-forwarding"
|
||||||
|
"no-port-forwarding"
|
||||||
|
"no-pty"
|
||||||
|
"no-X11-forwarding"
|
||||||
|
];
|
||||||
|
publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH5jrqMovXlWaFWZAV/aKyQReHvUQp5kb+7Ja4gnevSr root@gluttony bluemap";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.firewall.allowedUDPPorts = [ 443 ];
|
networking.firewall.allowedUDPPorts = [ 443 ];
|
||||||
|
|||||||
@@ -210,6 +210,8 @@ in {
|
|||||||
|
|
||||||
# EXT:WikiEditor
|
# EXT:WikiEditor
|
||||||
$wgWikiEditorRealtimePreview = true;
|
$wgWikiEditorRealtimePreview = true;
|
||||||
|
|
||||||
|
$wgSecretKey = file_get_contents("${config.sops.secrets."mediawiki/secret-key".path}");
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -273,8 +275,6 @@ in {
|
|||||||
systemd.services.mediawiki-init = lib.mkIf cfg.enable {
|
systemd.services.mediawiki-init = lib.mkIf cfg.enable {
|
||||||
after = [ "sops-install-secrets.service" ];
|
after = [ "sops-install-secrets.service" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
BindReadOnlyPaths = [ "/run/credentials/mediawiki-init.service/secret-key:/var/lib/mediawiki/secret.key" ];
|
|
||||||
LoadCredential = [ "secret-key:${config.sops.secrets."mediawiki/secret-key".path}" ];
|
|
||||||
UMask = lib.mkForce "0007";
|
UMask = lib.mkForce "0007";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -282,8 +282,6 @@ in {
|
|||||||
systemd.services.phpfpm-mediawiki = lib.mkIf cfg.enable {
|
systemd.services.phpfpm-mediawiki = lib.mkIf cfg.enable {
|
||||||
after = [ "sops-install-secrets.service" ];
|
after = [ "sops-install-secrets.service" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
BindReadOnlyPaths = [ "/run/credentials/phpfpm-mediawiki.service/secret-key:/var/lib/mediawiki/secret.key" ];
|
|
||||||
LoadCredential = [ "secret-key:${config.sops.secrets."mediawiki/secret-key".path}" ];
|
|
||||||
UMask = lib.mkForce "0007";
|
UMask = lib.mkForce "0007";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,40 +6,58 @@ let
|
|||||||
port = 3011;
|
port = 3011;
|
||||||
wsPort = 3012;
|
wsPort = 3012;
|
||||||
in {
|
in {
|
||||||
sops.secrets."vaultwarden/environ" = {
|
sops.secrets."vaultwarden/rsa_key.pem" = {
|
||||||
owner = "vaultwarden";
|
owner = "vaultwarden";
|
||||||
group = "vaultwarden";
|
group = "vaultwarden";
|
||||||
|
mode = "440";
|
||||||
|
restartUnits = [ "vaultwarden.service" ];
|
||||||
|
};
|
||||||
|
sops.secrets."vaultwarden/rsa_key.pub.pem" = {
|
||||||
|
owner = "vaultwarden";
|
||||||
|
group = "vaultwarden";
|
||||||
|
mode = "440";
|
||||||
|
restartUnits = [ "vaultwarden.service" ];
|
||||||
|
};
|
||||||
|
sops.secrets."vaultwarden/env/DATABASE_PASSWORD" = { };
|
||||||
|
sops.secrets."vaultwarden/env/SMTP_PASSWORD" = { };
|
||||||
|
sops.templates."vaultwarden/environment_file" = {
|
||||||
|
owner = "vaultwarden";
|
||||||
|
group = "vaultwarden";
|
||||||
|
mode = "440";
|
||||||
|
restartUnits = [ "vaultwarden.service" ];
|
||||||
|
content = ''
|
||||||
|
DATABASE_URL=postgresql://vaultwarden:${config.sops.placeholder."vaultwarden/env/DATABASE_PASSWORD"}@postgres.pvv.ntnu.no/vaultwarden
|
||||||
|
SMTP_PASSWORD=${config.sops.placeholder."vaultwarden/env/SMTP_PASSWORD"}
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
services.vaultwarden = {
|
services.vaultwarden = {
|
||||||
enable = true;
|
enable = true;
|
||||||
dbBackend = "postgresql";
|
dbBackend = "postgresql";
|
||||||
environmentFile = config.sops.secrets."vaultwarden/environ".path;
|
environmentFile = config.sops.templates."vaultwarden/environment_file".path;
|
||||||
config = {
|
config = {
|
||||||
domain = "https://${domain}";
|
DOMAIN = "https://${domain}";
|
||||||
|
|
||||||
rocketAddress = address;
|
ROCKET_ADDRESS = address;
|
||||||
rocketPort = port;
|
ROCKET_PORT = port;
|
||||||
|
|
||||||
websocketEnabled = true;
|
WEBSOCKET_ENABLED = true;
|
||||||
websocketAddress = address;
|
WEBSOCKET_ADDRESS = address;
|
||||||
websocketPort = wsPort;
|
WEBSOCKET_PORT = wsPort;
|
||||||
|
|
||||||
signupsAllowed = true;
|
SIGNUPS_ALLOWED = true;
|
||||||
signupsVerify = true;
|
SIGNUPS_VERIFY = true;
|
||||||
signupsDomainsWhitelist = "pvv.ntnu.no";
|
SIGNUPS_DOMAINS_WHITELIST = "pvv.ntnu.no";
|
||||||
|
|
||||||
smtpFrom = "vaultwarden@pvv.ntnu.no";
|
SMTP_FROM = "vaultwarden@pvv.ntnu.no";
|
||||||
smtpFromName = "VaultWarden PVV";
|
SMTP_FROM_NAME = "VaultWarden PVV";
|
||||||
|
|
||||||
smtpHost = "smtp.pvv.ntnu.no";
|
SMTP_HOST = "smtp.pvv.ntnu.no";
|
||||||
smtpUsername = "vaultwarden";
|
SMTP_USERNAME = "vaultwarden";
|
||||||
smtpSecurity = "force_tls";
|
SMTP_SECURITY = "force_tls";
|
||||||
smtpAuthMechanism = "Login";
|
SMTP_AUTH_MECHANISM = "Login";
|
||||||
|
|
||||||
# Configured in environ:
|
RSA_KEY_FILENAME = lib.removeSuffix ".pem" config.sops.secrets."vaultwarden/rsa_key.pem".path;
|
||||||
# databaseUrl = "postgresql://vaultwarden@/vaultwarden";
|
|
||||||
# smtpPassword = hemli
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -66,40 +84,6 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.vaultwarden = lib.mkIf cfg.enable {
|
|
||||||
serviceConfig = {
|
|
||||||
AmbientCapabilities = [ "" ];
|
|
||||||
CapabilityBoundingSet = [ "" ];
|
|
||||||
DeviceAllow = [ "" ];
|
|
||||||
LockPersonality = true;
|
|
||||||
NoNewPrivileges = true;
|
|
||||||
# MemoryDenyWriteExecute = true;
|
|
||||||
PrivateMounts = true;
|
|
||||||
PrivateUsers = true;
|
|
||||||
ProcSubset = "pid";
|
|
||||||
ProtectClock = true;
|
|
||||||
ProtectControlGroups = true;
|
|
||||||
ProtectHostname = true;
|
|
||||||
ProtectKernelLogs = true;
|
|
||||||
ProtectKernelModules = true;
|
|
||||||
ProtectKernelTunables = true;
|
|
||||||
RestrictAddressFamilies = [
|
|
||||||
"AF_INET"
|
|
||||||
"AF_INET6"
|
|
||||||
"AF_UNIX"
|
|
||||||
];
|
|
||||||
RemoveIPC = true;
|
|
||||||
RestrictNamespaces = true;
|
|
||||||
RestrictRealtime = true;
|
|
||||||
RestrictSUIDSGID = true;
|
|
||||||
SystemCallArchitectures = "native";
|
|
||||||
SystemCallFilter = [
|
|
||||||
"@system-service"
|
|
||||||
"~@privileged"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.rsync-pull-targets = {
|
services.rsync-pull-targets = {
|
||||||
enable = true;
|
enable = true;
|
||||||
locations."/var/lib/vaultwarden" = {
|
locations."/var/lib/vaultwarden" = {
|
||||||
|
|||||||
@@ -9,6 +9,12 @@ in
|
|||||||
sops.secrets."roundcube/postgres_password" = {
|
sops.secrets."roundcube/postgres_password" = {
|
||||||
owner = "nginx";
|
owner = "nginx";
|
||||||
group = "nginx";
|
group = "nginx";
|
||||||
|
restartUnits = [ "phpfpm-roundcube.service" ];
|
||||||
|
};
|
||||||
|
sops.secrets."roundcube/des_key" = {
|
||||||
|
owner = "nginx";
|
||||||
|
group = "nginx";
|
||||||
|
restartUnits = [ "phpfpm-roundcube.service" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
services.roundcube = {
|
services.roundcube = {
|
||||||
@@ -39,6 +45,7 @@ in
|
|||||||
$config['mail_domain'] = "pvv.ntnu.no";
|
$config['mail_domain'] = "pvv.ntnu.no";
|
||||||
$config['smtp_user'] = "%u";
|
$config['smtp_user'] = "%u";
|
||||||
$config['support_url'] = "";
|
$config['support_url'] = "";
|
||||||
|
$config['des_key'] = "${config.sops.secrets."roundcube/des_key".path}";
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -80,9 +80,40 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
services.phpfpm.pools."pvv-nettsiden".settings = {
|
services.phpfpm.pools."pvv-nettsiden".settings = {
|
||||||
# "php_admin_value[error_log]" = "stderr";
|
"php_admin_value[error_log]" = "syslog";
|
||||||
"php_admin_flag[log_errors]" = true;
|
"php_admin_flag[log_errors]" = true;
|
||||||
"catch_workers_output" = true;
|
"catch_workers_output" = true;
|
||||||
|
|
||||||
|
"php_admin_value[max_execution_time]" = "30";
|
||||||
|
"request_terminate_timeout" = "60s";
|
||||||
|
|
||||||
|
"php_admin_value[sendmail_path]" = let
|
||||||
|
fakeSendmail = pkgs.writeShellApplication {
|
||||||
|
name = "fake-sendmail";
|
||||||
|
text = ''
|
||||||
|
TIMESTAMP="$(date +%Y-%m-%d-%H-%M-%S-%N)"
|
||||||
|
(
|
||||||
|
echo "SENDMAIL ARGS:"
|
||||||
|
echo "$@"
|
||||||
|
echo "SENDMAIL STDIN:"
|
||||||
|
cat -
|
||||||
|
) > "/var/lib/pvv-nettsiden/emails/$TIMESTAMP.mail"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in lib.getExe fakeSendmail;
|
||||||
|
|
||||||
|
"php_admin_value[disable_functions]" = lib.concatStringsSep "," [
|
||||||
|
"curl_exec"
|
||||||
|
"curl_multi_exec"
|
||||||
|
"exec"
|
||||||
|
"parse_ini_file"
|
||||||
|
"passthru"
|
||||||
|
"popen"
|
||||||
|
"proc_open"
|
||||||
|
"shell_exec"
|
||||||
|
"show_source"
|
||||||
|
"system"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
services.nginx.virtualHosts."pvv.ntnu.no" = {
|
services.nginx.virtualHosts."pvv.ntnu.no" = {
|
||||||
|
|||||||
@@ -40,15 +40,15 @@ in {
|
|||||||
path = with pkgs; [ imagemagick gnutar gzip ];
|
path = with pkgs; [ imagemagick gnutar gzip ];
|
||||||
|
|
||||||
script = ''
|
script = ''
|
||||||
tar ${lib.cli.toGNUCommandLineShell {} {
|
tar ${lib.cli.toCommandLineShellGNU { } {
|
||||||
extract = true;
|
extract = true;
|
||||||
file = "${transferDir}/gallery.tar.gz";
|
file = "${transferDir}/gallery.tar.gz";
|
||||||
directory = ".";
|
directory = ".";
|
||||||
}}
|
}}
|
||||||
|
|
||||||
# Delete files and directories that exists in the gallery that don't exist in the tarball
|
# Delete files and directories that exists in the gallery that don't exist in the tarball
|
||||||
filesToRemove=$(uniq -u <(sort <(find . -not -path "./.thumbnails*") <(tar -tf ${transferDir}/gallery.tar.gz | sed 's|/$||')))
|
filesToRemove=$(uniq -u <(sort <(find . -not -path './.thumbnails*') <(tar -tf '${transferDir}/gallery.tar.gz' | sed 's|/$||')))
|
||||||
while IFS= read fname; do
|
while IFS= read -r fname; do
|
||||||
rm -f "$fname" ||:
|
rm -f "$fname" ||:
|
||||||
rm -f ".thumbnails/$fname.png" ||:
|
rm -f ".thumbnails/$fname.png" ||:
|
||||||
done <<< "$filesToRemove"
|
done <<< "$filesToRemove"
|
||||||
@@ -56,9 +56,9 @@ in {
|
|||||||
find . -type d -empty -delete
|
find . -type d -empty -delete
|
||||||
|
|
||||||
mkdir -p .thumbnails
|
mkdir -p .thumbnails
|
||||||
images=$(find . -type f -not -path "./.thumbnails*")
|
images=$(find . -type f -not -path './.thumbnails*')
|
||||||
|
|
||||||
while IFS= read fname; do
|
while IFS= read -r fname; do
|
||||||
# Skip this file if an up-to-date thumbnail already exists
|
# Skip this file if an up-to-date thumbnail already exists
|
||||||
if [ -f ".thumbnails/$fname.png" ] && \
|
if [ -f ".thumbnails/$fname.png" ] && \
|
||||||
[ "$(date -R -r "$fname")" == "$(date -R -r ".thumbnails/$fname.png")" ]
|
[ "$(date -R -r "$fname")" == "$(date -R -r ".thumbnails/$fname.png")" ]
|
||||||
@@ -67,7 +67,7 @@ in {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Creating thumbnail for $fname"
|
echo "Creating thumbnail for $fname"
|
||||||
mkdir -p $(dirname ".thumbnails/$fname")
|
mkdir -p "$(dirname ".thumbnails/$fname")"
|
||||||
magick -define jpeg:size=200x200 "$fname" -thumbnail 300 -auto-orient ".thumbnails/$fname.png" ||:
|
magick -define jpeg:size=200x200 "$fname" -thumbnail 300 -auto-orient ".thumbnails/$fname.png" ||:
|
||||||
touch -m -d "$(date -R -r "$fname")" ".thumbnails/$fname.png"
|
touch -m -d "$(date -R -r "$fname")" ".thumbnails/$fname.png"
|
||||||
done <<< "$images"
|
done <<< "$images"
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ in
|
|||||||
rm "$STATE_DIRECTORY/mysql-dump-latest.sql.zst" ||:
|
rm "$STATE_DIRECTORY/mysql-dump-latest.sql.zst" ||:
|
||||||
ln -T "$OUT_FILE" "$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
|
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)"
|
rm "$(find "$STATE_DIRECTORY" -type f -printf '%T+ %p\n' | sort | head -n 1 | cut -d' ' -f2)"
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ in
|
|||||||
rm "$STATE_DIRECTORY/postgresql-dump-latest.sql.zst" ||:
|
rm "$STATE_DIRECTORY/postgresql-dump-latest.sql.zst" ||:
|
||||||
ln -T "$OUT_FILE" "$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
|
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)"
|
rm "$(find "$STATE_DIRECTORY" -type f -printf '%T+ %p\n' | sort | head -n 1 | cut -d' ' -f2)"
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
|||||||
37
hosts/bicep/services/postgresql/cleanup-timers.nix
Normal file
37
hosts/bicep/services/postgresql/cleanup-timers.nix
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.services.postgresql;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
systemd.services = {
|
||||||
|
postgresql-repack = {
|
||||||
|
requires = [ "postgresql.service" ];
|
||||||
|
after = [ "postgresql.target" ];
|
||||||
|
description = "Repack all PostgreSQL databases";
|
||||||
|
startAt = "Mon 06:00:00";
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "postgres";
|
||||||
|
Group = "postgres";
|
||||||
|
|
||||||
|
ExecStart = "${lib.getExe cfg.package.pkgs.pg_repack} --host=/run/postgresql --no-kill-backend --wait-timeout=30 --all";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
postgresql-vacuum-analyze = {
|
||||||
|
requires = [ "postgresql.service" ];
|
||||||
|
after = [ "postgresql.target" ];
|
||||||
|
description = "Vacuum and analyze all PostgreSQL databases";
|
||||||
|
startAt = "Tue 06:00:00";
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "postgres";
|
||||||
|
Group = "postgres";
|
||||||
|
|
||||||
|
ExecStart = "${lib.getExe' cfg.package "psql"} --port=${builtins.toString cfg.settings.port} -tAc 'VACUUM ANALYZE'";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -3,11 +3,15 @@ let
|
|||||||
cfg = config.services.postgresql;
|
cfg = config.services.postgresql;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./backup.nix ];
|
imports = [
|
||||||
|
./backup.nix
|
||||||
|
./cleanup-timers.nix
|
||||||
|
];
|
||||||
|
|
||||||
services.postgresql = {
|
services.postgresql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.postgresql_18;
|
package = pkgs.postgresql_18;
|
||||||
|
extensions = ps: with ps; [ pg_repack ];
|
||||||
enableTCPIP = true;
|
enableTCPIP = true;
|
||||||
|
|
||||||
authentication = ''
|
authentication = ''
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
./services/bluemap.nix
|
||||||
(fp /base)
|
(fp /base)
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
"sd_mod"
|
"sd_mod"
|
||||||
];
|
];
|
||||||
boot.initrd.kernelModules = [ "dm-snapshot" ];
|
boot.initrd.kernelModules = [ "dm-snapshot" ];
|
||||||
boot.kernelModules = [ ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
fileSystems."/boot" = {
|
||||||
device = "/dev/disk/by-uuid/933A-3005";
|
device = "/dev/disk/by-uuid/BD97-FCA0";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [
|
options = [
|
||||||
"fmask=0077"
|
"fmask=0077"
|
||||||
|
|||||||
113
hosts/gluttony/services/bluemap.nix
Normal file
113
hosts/gluttony/services/bluemap.nix
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
{ config, lib, pkgs, inputs, ... }:
|
||||||
|
let
|
||||||
|
vanillaSurvival = "/var/lib/bluemap/vanilla_survival_world";
|
||||||
|
in {
|
||||||
|
# NOTE: our version of the module gets added in flake.nix
|
||||||
|
disabledModules = [ "services/web-apps/bluemap.nix" ];
|
||||||
|
|
||||||
|
sops.secrets."bluemap/ssh-key" = { };
|
||||||
|
sops.secrets."bluemap/ssh-known-hosts" = { };
|
||||||
|
|
||||||
|
services.bluemap = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
eula = true;
|
||||||
|
onCalendar = "*-*-* 05:45:00"; # a little over an hour after auto-upgrade
|
||||||
|
|
||||||
|
enableNginx = false;
|
||||||
|
|
||||||
|
host = "minecraft.pvv.ntnu.no";
|
||||||
|
|
||||||
|
maps = let
|
||||||
|
inherit (inputs.minecraft-kartverket.packages.${pkgs.stdenv.hostPlatform.system}) bluemap-export;
|
||||||
|
in {
|
||||||
|
"verden" = {
|
||||||
|
extraHoconMarkersFile = "${bluemap-export}/overworld.hocon";
|
||||||
|
settings = {
|
||||||
|
world = vanillaSurvival;
|
||||||
|
dimension = "minecraft:overworld";
|
||||||
|
name = "Verden";
|
||||||
|
sorting = 0;
|
||||||
|
start-pos = {
|
||||||
|
x = 0;
|
||||||
|
z = 0;
|
||||||
|
};
|
||||||
|
ambient-light = 0.1;
|
||||||
|
cave-detection-ocean-floor = -5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"underverden" = {
|
||||||
|
extraHoconMarkersFile = "${bluemap-export}/nether.hocon";
|
||||||
|
settings = {
|
||||||
|
world = vanillaSurvival;
|
||||||
|
dimension = "minecraft:the_nether";
|
||||||
|
name = "Underverden";
|
||||||
|
sorting = 100;
|
||||||
|
start-pos = {
|
||||||
|
x = 0;
|
||||||
|
z = 0;
|
||||||
|
};
|
||||||
|
sky-color = "#290000";
|
||||||
|
void-color = "#150000";
|
||||||
|
sky-light = 1;
|
||||||
|
ambient-light = 0.6;
|
||||||
|
remove-caves-below-y = -10000;
|
||||||
|
cave-detection-ocean-floor = -5;
|
||||||
|
cave-detection-uses-block-light = true;
|
||||||
|
render-mask = [{
|
||||||
|
max-y = 90;
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"enden" = {
|
||||||
|
extraHoconMarkersFile = "${bluemap-export}/the-end.hocon";
|
||||||
|
settings = {
|
||||||
|
world = vanillaSurvival;
|
||||||
|
dimension = "minecraft:the_end";
|
||||||
|
name = "Enden";
|
||||||
|
sorting = 200;
|
||||||
|
start-pos = {
|
||||||
|
x = 0;
|
||||||
|
z = 0;
|
||||||
|
};
|
||||||
|
sky-color = "#080010";
|
||||||
|
void-color = "#080010";
|
||||||
|
sky-light = 1;
|
||||||
|
ambient-light = 0.6;
|
||||||
|
remove-caves-below-y = -10000;
|
||||||
|
cave-detection-ocean-floor = -5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services."render-bluemap-maps" = {
|
||||||
|
serviceConfig = {
|
||||||
|
StateDirectory = [ "bluemap/world" ];
|
||||||
|
ExecStartPre = let
|
||||||
|
rsyncArgs = lib.cli.toCommandLineShellGNU { } {
|
||||||
|
archive = true;
|
||||||
|
compress = true;
|
||||||
|
verbose = true;
|
||||||
|
no-owner = true;
|
||||||
|
no-group = true;
|
||||||
|
rsh = "${pkgs.openssh}/bin/ssh -o UserKnownHostsFile=%d/ssh-known-hosts -i %d/sshkey";
|
||||||
|
};
|
||||||
|
in "${lib.getExe pkgs.rsync} ${rsyncArgs} root@innovation.pvv.ntnu.no:/ ${vanillaSurvival}";
|
||||||
|
ExecStartPost = let
|
||||||
|
rsyncArgs = lib.cli.toCommandLineShellGNU { } {
|
||||||
|
archive = true;
|
||||||
|
compress = true;
|
||||||
|
verbose = true;
|
||||||
|
no-owner = true;
|
||||||
|
no-group = true;
|
||||||
|
rsh = "${pkgs.openssh}/bin/ssh -o UserKnownHostsFile=%d/ssh-known-hosts -i %d/sshkey";
|
||||||
|
};
|
||||||
|
in "${lib.getExe pkgs.rsync} ${rsyncArgs} --groupmap=root:nginx ${config.services.bluemap.webRoot}/ root@bekkalokk.pvv.ntnu.no:/";
|
||||||
|
LoadCredential = [
|
||||||
|
"sshkey:${config.sops.secrets."bluemap/ssh-key".path}"
|
||||||
|
"ssh-known-hosts:${config.sops.secrets."bluemap/ssh-known-hosts".path}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,17 +1,23 @@
|
|||||||
{ config, fp, pkgs, lib, values, ... }:
|
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
fp,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
values,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
# Include the results of the hardware scan.
|
./hardware-configuration.nix
|
||||||
./hardware-configuration.nix
|
./disks.nix
|
||||||
(fp /base)
|
(fp /base)
|
||||||
|
|
||||||
./services/monitoring
|
./services/monitoring
|
||||||
./services/nginx
|
./services/nginx
|
||||||
./services/journald-remote.nix
|
./services/journald-remote.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader.systemd-boot.enable = false;
|
boot.loader.grub.enable = true;
|
||||||
boot.loader.grub.device = "/dev/vda";
|
boot.loader.systemd-boot.enable = lib.mkForce false;
|
||||||
boot.tmp.cleanOnBoot = true;
|
boot.tmp.cleanOnBoot = true;
|
||||||
zramSwap.enable = true;
|
zramSwap.enable = true;
|
||||||
|
|
||||||
@@ -27,13 +33,22 @@
|
|||||||
nameservers = values.defaultNetworkConfig.dns;
|
nameservers = values.defaultNetworkConfig.dns;
|
||||||
defaultGateway.address = hostConf.ipv4_internal_gw;
|
defaultGateway.address = hostConf.ipv4_internal_gw;
|
||||||
|
|
||||||
interfaces."ens4" = {
|
interfaces."ens3" = {
|
||||||
ipv4.addresses = [
|
ipv4.addresses = [
|
||||||
{ address = hostConf.ipv4; prefixLength = 32; }
|
{
|
||||||
{ address = hostConf.ipv4_internal; prefixLength = 24; }
|
address = hostConf.ipv4;
|
||||||
|
prefixLength = 32;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
address = hostConf.ipv4_internal;
|
||||||
|
prefixLength = 24;
|
||||||
|
}
|
||||||
];
|
];
|
||||||
ipv6.addresses = [
|
ipv6.addresses = [
|
||||||
{ address = hostConf.ipv6; prefixLength = 64; }
|
{
|
||||||
|
address = hostConf.ipv6;
|
||||||
|
prefixLength = 64;
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
27
hosts/ildkule/disks.nix
Normal file
27
hosts/ildkule/disks.nix
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
disko.devices = {
|
||||||
|
disk = {
|
||||||
|
sda = {
|
||||||
|
device = "/dev/sda";
|
||||||
|
type = "disk";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
bios = {
|
||||||
|
size = "1M";
|
||||||
|
type = "EF02";
|
||||||
|
};
|
||||||
|
root = {
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "ext4";
|
||||||
|
mountpoint = "/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,16 +1,24 @@
|
|||||||
{ modulesPath, lib, ... }:
|
# Do not modify this file! It was generated by 'nixos-generate-config'
|
||||||
{
|
# and may be overwritten by future invocations. Please make changes
|
||||||
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
|
# to /etc/nixos/configuration.nix instead.
|
||||||
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi" ];
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
boot.initrd.kernelModules = [ "nvme" ];
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/e35eb4ce-aac3-4f91-8383-6e7cd8bbf942";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
fileSystems."/data" = {
|
|
||||||
device = "/dev/disk/by-uuid/0a4c1234-02d3-4b53-aeca-d95c4c8d534b";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.ens3.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ in {
|
|||||||
|
|
||||||
fileSystems."/var/lib/prometheus2" = {
|
fileSystems."/var/lib/prometheus2" = {
|
||||||
device = stateDir;
|
device = stateDir;
|
||||||
|
fsType = "bind";
|
||||||
options = [ "bind" ];
|
options = [ "bind" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,11 +27,8 @@ in {
|
|||||||
(mkHostScrapeConfig "lupine-4" [ defaultNodeExporterPort defaultSystemdExporterPort defaultNixosExporterPort ])
|
(mkHostScrapeConfig "lupine-4" [ defaultNodeExporterPort defaultSystemdExporterPort defaultNixosExporterPort ])
|
||||||
(mkHostScrapeConfig "lupine-5" [ defaultNodeExporterPort defaultSystemdExporterPort defaultNixosExporterPort ])
|
(mkHostScrapeConfig "lupine-5" [ defaultNodeExporterPort defaultSystemdExporterPort defaultNixosExporterPort ])
|
||||||
(mkHostScrapeConfig "temmie" [ defaultNodeExporterPort defaultSystemdExporterPort defaultNixosExporterPort ])
|
(mkHostScrapeConfig "temmie" [ defaultNodeExporterPort defaultSystemdExporterPort defaultNixosExporterPort ])
|
||||||
(mkHostScrapeConfig "ustetind" [ defaultNodeExporterPort defaultSystemdExporterPort defaultNixosExporterPort ])
|
|
||||||
(mkHostScrapeConfig "wenche" [ defaultNodeExporterPort defaultSystemdExporterPort defaultNixosExporterPort ])
|
(mkHostScrapeConfig "wenche" [ defaultNodeExporterPort defaultSystemdExporterPort defaultNixosExporterPort ])
|
||||||
|
|
||||||
(mkHostScrapeConfig "skrott" [ defaultNodeExporterPort defaultSystemdExporterPort ])
|
|
||||||
|
|
||||||
(mkHostScrapeConfig "hildring" [ defaultNodeExporterPort ])
|
(mkHostScrapeConfig "hildring" [ defaultNodeExporterPort ])
|
||||||
(mkHostScrapeConfig "isvegg" [ defaultNodeExporterPort ])
|
(mkHostScrapeConfig "isvegg" [ defaultNodeExporterPort ])
|
||||||
(mkHostScrapeConfig "microbel" [ defaultNodeExporterPort ])
|
(mkHostScrapeConfig "microbel" [ defaultNodeExporterPort ])
|
||||||
|
|||||||
@@ -19,8 +19,9 @@ in {
|
|||||||
locations."/".proxyPass = "http://${cfg.settings.HOST}:${cfg.settings.PORT}";
|
locations."/".proxyPass = "http://${cfg.settings.HOST}:${cfg.settings.PORT}";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/var/lib/uptime-kuma" = {
|
fileSystems."/var/lib/private/uptime-kuma" = {
|
||||||
device = stateDir;
|
device = stateDir;
|
||||||
|
fsType = "bind";
|
||||||
options = [ "bind" ];
|
options = [ "bind" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,23 +99,23 @@ in
|
|||||||
];
|
];
|
||||||
} ''
|
} ''
|
||||||
# Bigger icons
|
# Bigger icons
|
||||||
install -Dm444 "${cfg.package.src}/templates/repo/icon.tmpl" "$out/repo/icon.tmpl"
|
install -Dm444 '${cfg.package.src}/templates/repo/icon.tmpl' "$out/repo/icon.tmpl"
|
||||||
sed -i -e 's/24/60/g' "$out/repo/icon.tmpl"
|
sed -i -e 's/24/60/g' "$out/repo/icon.tmpl"
|
||||||
'';
|
'';
|
||||||
in ''
|
in ''
|
||||||
install -Dm444 ${logo-svg} ${cfg.customDir}/public/assets/img/logo.svg
|
install -Dm444 '${logo-svg}' '${cfg.customDir}/public/assets/img/logo.svg'
|
||||||
install -Dm444 ${logo-png} ${cfg.customDir}/public/assets/img/logo.png
|
install -Dm444 '${logo-png}' '${cfg.customDir}/public/assets/img/logo.png'
|
||||||
install -Dm444 ${./loading.apng} ${cfg.customDir}/public/assets/img/loading.png
|
install -Dm444 '${./loading.apng}' '${cfg.customDir}/public/assets/img/loading.png'
|
||||||
install -Dm444 ${extraLinks} ${cfg.customDir}/templates/custom/extra_links.tmpl
|
install -Dm444 '${extraLinks}' '${cfg.customDir}/templates/custom/extra_links.tmpl'
|
||||||
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/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/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/grr.png}' '${cfg.customDir}/public/assets/img/emoji/grr.png'
|
||||||
install -Dm644 ${./emotes/okiedokie.jpg} ${cfg.customDir}/public/assets/img/emoji/okiedokie.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/'
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,9 +134,6 @@ in {
|
|||||||
ALLOW_FORK_INTO_SAME_OWNER = true;
|
ALLOW_FORK_INTO_SAME_OWNER = true;
|
||||||
};
|
};
|
||||||
picture = {
|
picture = {
|
||||||
DISABLE_GRAVATAR = true;
|
|
||||||
ENABLE_FEDERATED_AVATAR = false;
|
|
||||||
|
|
||||||
AVATAR_MAX_FILE_SIZE = 1024 * 1024 * 5;
|
AVATAR_MAX_FILE_SIZE = 1024 * 1024 * 5;
|
||||||
# NOTE: go any bigger than this, and gitea will freeze your gif >:(
|
# NOTE: go any bigger than this, and gitea will freeze your gif >:(
|
||||||
AVATAR_MAX_ORIGIN_SIZE = 1024 * 1024 * 2;
|
AVATAR_MAX_ORIGIN_SIZE = 1024 * 1024 * 2;
|
||||||
@@ -217,7 +214,7 @@ in {
|
|||||||
|
|
||||||
systemd.services.gitea-dump = {
|
systemd.services.gitea-dump = {
|
||||||
serviceConfig.ExecStart = let
|
serviceConfig.ExecStart = let
|
||||||
args = lib.cli.toGNUCommandLineShell { } {
|
args = lib.cli.toCommandLineShellGNU { } {
|
||||||
type = cfg.dump.type;
|
type = cfg.dump.type;
|
||||||
|
|
||||||
# This should be declarative on nixos, no need to backup.
|
# This should be declarative on nixos, no need to backup.
|
||||||
@@ -229,16 +226,11 @@ in {
|
|||||||
# Logs are stored in the systemd journal
|
# Logs are stored in the systemd journal
|
||||||
skip-log = true;
|
skip-log = true;
|
||||||
};
|
};
|
||||||
in lib.mkForce "${lib.getExe cfg.package} ${args}";
|
in lib.mkForce "${lib.getExe cfg.package} dump ${args}";
|
||||||
|
|
||||||
# Only keep n backup files at a time
|
# Only keep a single backup file at a time.
|
||||||
postStop = let
|
postStop = ''
|
||||||
cu = prog: "'${lib.getExe' pkgs.coreutils prog}'";
|
${lib.getExe' pkgs.coreutils "mv"} '${cfg.dump.backupDir}'/gitea-dump-*.tar.gz gitea-dump.tar.gz
|
||||||
backupCount = 3;
|
'';
|
||||||
in ''
|
|
||||||
for file in $(${cu "ls"} -t1 '${cfg.dump.backupDir}' | ${cu "sort"} --reverse | ${cu "tail"} -n+${toString (backupCount + 1)}); do
|
|
||||||
${cu "rm"} "$file"
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ in
|
|||||||
Slice = "system-giteaweb.slice";
|
Slice = "system-giteaweb.slice";
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
ExecStart = let
|
ExecStart = let
|
||||||
args = lib.cli.toGNUCommandLineShell { } {
|
args = lib.cli.toCommandLineShellGNU { } {
|
||||||
org = "%i";
|
org = "%i";
|
||||||
token-path = "%d/token";
|
token-path = "%d/token";
|
||||||
api-url = "${giteaCfg.settings.server.ROOT_URL}api/v1";
|
api-url = "${giteaCfg.settings.server.ROOT_URL}api/v1";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by 'nixos-generate-config'
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by 'nixos-generate-config'
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by 'nixos-generate-config'
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|||||||
@@ -39,17 +39,22 @@
|
|||||||
"debian-bullseye-slim:docker://node:current-bullseye-slim"
|
"debian-bullseye-slim:docker://node:current-bullseye-slim"
|
||||||
|
|
||||||
"alpine-latest:docker://node:current-alpine"
|
"alpine-latest:docker://node:current-alpine"
|
||||||
|
"alpine-3.23:docker://node:current-alpine3.23"
|
||||||
"alpine-3.22:docker://node:current-alpine3.22"
|
"alpine-3.22:docker://node:current-alpine3.22"
|
||||||
"alpine-3.21:docker://node:current-alpine3.21"
|
"alpine-3.21:docker://node:current-alpine3.21"
|
||||||
|
|
||||||
# See https://gitea.com/gitea/runner-images
|
# See https://gitea.com/gitea/runner-images
|
||||||
"ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest"
|
"ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest"
|
||||||
|
"ubuntu-26.04:docker://docker.gitea.com/runner-images:ubuntu-26.04"
|
||||||
|
"ubuntu-resolute:docker://docker.gitea.com/runner-images:ubuntu-26.04"
|
||||||
"ubuntu-24.04:docker://docker.gitea.com/runner-images:ubuntu-24.04"
|
"ubuntu-24.04:docker://docker.gitea.com/runner-images:ubuntu-24.04"
|
||||||
"ubuntu-noble:docker://docker.gitea.com/runner-images:ubuntu-24.04"
|
"ubuntu-noble:docker://docker.gitea.com/runner-images:ubuntu-24.04"
|
||||||
"ubuntu-22.04:docker://docker.gitea.com/runner-images:ubuntu-22.04"
|
"ubuntu-22.04:docker://docker.gitea.com/runner-images:ubuntu-22.04"
|
||||||
"ubuntu-jammy:docker://docker.gitea.com/runner-images:ubuntu-22.04"
|
"ubuntu-jammy:docker://docker.gitea.com/runner-images:ubuntu-22.04"
|
||||||
|
|
||||||
"ubuntu-latest-slim:docker://docker.gitea.com/runner-images:ubuntu-latest-slim"
|
"ubuntu-latest-slim:docker://docker.gitea.com/runner-images:ubuntu-latest-slim"
|
||||||
|
"ubuntu-26.04-slim:docker://docker.gitea.com/runner-images:ubuntu-26.04-slim"
|
||||||
|
"ubuntu-resolute-slim:docker://docker.gitea.com/runner-images:ubuntu-26.04-slim"
|
||||||
"ubuntu-24.04-slim:docker://docker.gitea.com/runner-images:ubuntu-24.04-slim"
|
"ubuntu-24.04-slim:docker://docker.gitea.com/runner-images:ubuntu-24.04-slim"
|
||||||
"ubuntu-noble-slim:docker://docker.gitea.com/runner-images:ubuntu-24.04-slim"
|
"ubuntu-noble-slim:docker://docker.gitea.com/runner-images:ubuntu-24.04-slim"
|
||||||
"ubuntu-22.04-slim:docker://docker.gitea.com/runner-images:ubuntu-22.04-slim"
|
"ubuntu-22.04-slim:docker://docker.gitea.com/runner-images:ubuntu-22.04-slim"
|
||||||
|
|||||||
@@ -1,112 +0,0 @@
|
|||||||
{ config, pkgs, lib, modulesPath, fp, values, ... }: {
|
|
||||||
imports = [
|
|
||||||
(modulesPath + "/profiles/perlless.nix")
|
|
||||||
|
|
||||||
(fp /base)
|
|
||||||
];
|
|
||||||
|
|
||||||
# Disable import of a bunch of tools we don't need from nixpkgs.
|
|
||||||
disabledModules = [ "profiles/base.nix" ];
|
|
||||||
|
|
||||||
sops.defaultSopsFile = fp /secrets/skrott/skrott.yaml;
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
consoleLogLevel = 0;
|
|
||||||
enableContainers = false;
|
|
||||||
loader.grub.enable = false;
|
|
||||||
loader.systemd-boot.enable = false;
|
|
||||||
kernelPackages = pkgs.linuxPackages;
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware = {
|
|
||||||
enableAllHardware = lib.mkForce false;
|
|
||||||
firmware = [ pkgs.raspberrypiWirelessFirmware ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Now turn off a bunch of stuff lol
|
|
||||||
# TODO: can we reduce further?
|
|
||||||
# See also https://nixcademy.com/posts/minimizing-nixos-images/
|
|
||||||
system.autoUpgrade.enable = lib.mkForce false;
|
|
||||||
services.irqbalance.enable = lib.mkForce false;
|
|
||||||
services.logrotate.enable = lib.mkForce false;
|
|
||||||
services.nginx.enable = lib.mkForce false;
|
|
||||||
services.postfix.enable = lib.mkForce false;
|
|
||||||
services.smartd.enable = lib.mkForce false;
|
|
||||||
services.udisks2.enable = lib.mkForce false;
|
|
||||||
services.thermald.enable = lib.mkForce false;
|
|
||||||
services.promtail.enable = lib.mkForce false;
|
|
||||||
# There aren't really that many firmware updates for rbpi3 anyway
|
|
||||||
services.fwupd.enable = lib.mkForce false;
|
|
||||||
|
|
||||||
documentation.enable = lib.mkForce false;
|
|
||||||
|
|
||||||
environment.enableAllTerminfo = lib.mkForce false;
|
|
||||||
|
|
||||||
programs.neovim.enable = lib.mkForce false;
|
|
||||||
programs.zsh.enable = lib.mkForce false;
|
|
||||||
programs.git.package = pkgs.gitMinimal;
|
|
||||||
|
|
||||||
nix.registry = lib.mkForce { };
|
|
||||||
nix.nixPath = lib.mkForce [ ];
|
|
||||||
|
|
||||||
sops.secrets = {
|
|
||||||
"dibbler/postgresql/password" = {
|
|
||||||
owner = "dibbler";
|
|
||||||
group = "dibbler";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# zramSwap.enable = true;
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
hostName = "skrott";
|
|
||||||
defaultGateway = values.hosts.gateway;
|
|
||||||
defaultGateway6 = values.hosts.gateway6;
|
|
||||||
interfaces.eth0 = {
|
|
||||||
useDHCP = false;
|
|
||||||
ipv4.addresses = [{
|
|
||||||
address = values.hosts.skrott.ipv4;
|
|
||||||
prefixLength = 25;
|
|
||||||
}];
|
|
||||||
ipv6.addresses = [{
|
|
||||||
address = values.hosts.skrott.ipv6;
|
|
||||||
prefixLength = 25;
|
|
||||||
}];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# https://github.com/NixOS/nixpkgs/issues/84105
|
|
||||||
boot.kernelParams = lib.mkIf (!config.virtualisation.isVmVariant) [
|
|
||||||
"console=ttyUSB0,9600"
|
|
||||||
# "console=tty1" # Already part of the module
|
|
||||||
];
|
|
||||||
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
|
|
||||||
};
|
|
||||||
|
|
||||||
# Don't change (even during upgrades) unless you know what you are doing.
|
|
||||||
# See https://search.nixos.org/options?show=system.stateVersion
|
|
||||||
system.stateVersion = "25.11";
|
|
||||||
}
|
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
(fp /base)
|
(fp /base)
|
||||||
|
|
||||||
./services/nfs-mounts.nix
|
./services/nfs-mounts.nix
|
||||||
./services/userweb.nix
|
./services/userweb
|
||||||
];
|
];
|
||||||
|
|
||||||
systemd.network.networks."30-ens18" = values.defaultNetworkConfig // {
|
systemd.network.networks."30-ens18" = values.defaultNetworkConfig // {
|
||||||
|
|||||||
@@ -4,19 +4,39 @@ let
|
|||||||
|
|
||||||
homeLetters = [ "a" "b" "c" "d" "h" "i" "j" "k" "l" "m" "z" ];
|
homeLetters = [ "a" "b" "c" "d" "h" "i" "j" "k" "l" "m" "z" ];
|
||||||
|
|
||||||
|
phpOptions = lib.concatStringsSep "\n" (lib.mapAttrsToList (k: v: "${k} = ${v}"){
|
||||||
|
display_errors = "Off";
|
||||||
|
display_startup_errors = "Off";
|
||||||
|
post_max_size = "40M";
|
||||||
|
upload_max_filesize = "40M";
|
||||||
|
});
|
||||||
|
|
||||||
# https://nixos.org/manual/nixpkgs/stable/#ssec-php-user-guide-installing-with-extensions
|
# https://nixos.org/manual/nixpkgs/stable/#ssec-php-user-guide-installing-with-extensions
|
||||||
phpEnv = pkgs.php.buildEnv {
|
phpEnv = pkgs.php.buildEnv {
|
||||||
extensions = { all, ... }: with all; [
|
extensions = { all, ... }: with all; [
|
||||||
|
bz2
|
||||||
|
curl
|
||||||
|
decimal
|
||||||
|
gd
|
||||||
imagick
|
imagick
|
||||||
opcache
|
mysqli
|
||||||
protobuf
|
mysqlnd
|
||||||
|
pgsql
|
||||||
|
posix
|
||||||
|
protobuf sqlite3
|
||||||
|
uuid
|
||||||
|
xml
|
||||||
|
xsl
|
||||||
|
zlib
|
||||||
|
zstd
|
||||||
|
|
||||||
|
pdo
|
||||||
|
pdo_mysql
|
||||||
|
pdo_pgsql
|
||||||
|
pdo_sqlite
|
||||||
];
|
];
|
||||||
|
|
||||||
extraConfig = ''
|
extraConfig = phpOptions;
|
||||||
display_errors=0
|
|
||||||
post_max_size = 40M
|
|
||||||
upload_max_filesize = 40M
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
perlEnv = pkgs.perl.withPackages (ps: with ps; [
|
perlEnv = pkgs.perl.withPackages (ps: with ps; [
|
||||||
@@ -25,38 +45,15 @@ let
|
|||||||
pkgs.irssi
|
pkgs.irssi
|
||||||
pkgs.nix.libs.nix-perl-bindings
|
pkgs.nix.libs.nix-perl-bindings
|
||||||
|
|
||||||
AlgorithmDiff
|
|
||||||
AnyEvent
|
|
||||||
AnyEventI3
|
|
||||||
ArchiveZip
|
|
||||||
CGI
|
CGI
|
||||||
CPAN
|
|
||||||
CPANPLUS
|
|
||||||
DBDPg
|
DBDPg
|
||||||
DBDSQLite
|
DBDSQLite
|
||||||
|
DBDmysql
|
||||||
DBI
|
DBI
|
||||||
EmailAddress
|
|
||||||
EmailSimple
|
|
||||||
Env
|
|
||||||
Git
|
Git
|
||||||
HTMLMason
|
|
||||||
HTMLParser
|
|
||||||
HTMLTagset
|
|
||||||
HTTPDAV
|
|
||||||
HTTPDaemon
|
|
||||||
ImageMagick
|
ImageMagick
|
||||||
JSON
|
JSON
|
||||||
LWP
|
TemplateToolkit
|
||||||
MozillaCA
|
|
||||||
PathTiny
|
|
||||||
Switch
|
|
||||||
SysSyslog
|
|
||||||
TestPostgreSQL
|
|
||||||
TextPDF
|
|
||||||
TieFile
|
|
||||||
Tk
|
|
||||||
URI
|
|
||||||
XMLLibXML
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
# https://nixos.org/manual/nixpkgs/stable/#python.buildenv-function
|
# https://nixos.org/manual/nixpkgs/stable/#python.buildenv-function
|
||||||
@@ -70,102 +67,88 @@ let
|
|||||||
ignoreCollisions = true;
|
ignoreCollisions = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sendmailWrapper = pkgs.writeShellApplication {
|
||||||
|
name = "sendmail";
|
||||||
|
runtimeInputs = [ ];
|
||||||
|
text = ''
|
||||||
|
args=("$@")
|
||||||
|
|
||||||
|
if [[ -z "$USERDIR_USER" ]] && [[ "$USERDIR_USER" != "pvv" ]]; then
|
||||||
|
# Prepend -fusername to the argument list, so bounces go to the user
|
||||||
|
args=("-f$USERDIR_USER" "''${args[@]}")
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec '${lib.getExe pkgs.system-sendmail}' "''${args[@]}"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
# https://nixos.org/manual/nixpkgs/stable/#sec-building-environment
|
# https://nixos.org/manual/nixpkgs/stable/#sec-building-environment
|
||||||
fhsEnv = pkgs.buildEnv {
|
fhsEnv = pkgs.buildEnv {
|
||||||
name = "userweb-env";
|
name = "userweb-env";
|
||||||
|
ignoreCollisions = true;
|
||||||
paths = with pkgs; [
|
paths = with pkgs; [
|
||||||
bash
|
bash
|
||||||
|
|
||||||
|
sendmailWrapper
|
||||||
|
|
||||||
perlEnv
|
perlEnv
|
||||||
pythonEnv
|
pythonEnv
|
||||||
|
|
||||||
phpEnv
|
phpEnv
|
||||||
]
|
]
|
||||||
++ (with phpEnv.packages; [
|
++ (with phpEnv.packages; [
|
||||||
# composer
|
# composer
|
||||||
])
|
])
|
||||||
++ [
|
++ [
|
||||||
|
# Useful packages for homepages
|
||||||
|
exiftool
|
||||||
|
gnuplot
|
||||||
|
ikiwiki-full
|
||||||
|
imagemagick
|
||||||
|
jhead
|
||||||
|
ruby
|
||||||
|
sbcl
|
||||||
|
sourceHighlight
|
||||||
|
|
||||||
|
# Missing packages from tom
|
||||||
|
# blosxom
|
||||||
|
# pyblosxom
|
||||||
|
# mediawiki (TODO: do people host their own mediawikis in userweb?)
|
||||||
|
# nanoblogger
|
||||||
|
|
||||||
|
# Version control
|
||||||
|
cvs
|
||||||
|
rcs
|
||||||
|
git
|
||||||
|
|
||||||
|
# Compression/Archival
|
||||||
|
bzip2
|
||||||
|
gnutar
|
||||||
|
gzip
|
||||||
|
lz4
|
||||||
|
unzip
|
||||||
|
xz
|
||||||
|
zip
|
||||||
|
zstd
|
||||||
|
|
||||||
|
# Other tools you might expect to find on a normal system
|
||||||
acl
|
acl
|
||||||
aspell
|
|
||||||
autoconf
|
|
||||||
autotrash
|
|
||||||
bazel
|
|
||||||
bintools
|
|
||||||
bison
|
|
||||||
bsd-finger
|
|
||||||
catdoc
|
|
||||||
ccache
|
|
||||||
clang
|
|
||||||
cmake
|
|
||||||
coreutils-full
|
coreutils-full
|
||||||
curl
|
curl
|
||||||
devcontainer
|
|
||||||
diffutils
|
diffutils
|
||||||
emacs
|
|
||||||
# exiftags
|
|
||||||
exiftool
|
|
||||||
ffmpeg
|
|
||||||
file
|
file
|
||||||
findutils
|
findutils
|
||||||
gawk
|
gawk
|
||||||
gcc
|
|
||||||
glibc
|
|
||||||
gnugrep
|
gnugrep
|
||||||
gnumake
|
gnumake
|
||||||
gnupg
|
gnupg
|
||||||
gnuplot
|
|
||||||
gnused
|
gnused
|
||||||
gnutar
|
|
||||||
gzip
|
|
||||||
html-tidy
|
|
||||||
imagemagick
|
|
||||||
inetutils
|
|
||||||
iproute2
|
|
||||||
jhead
|
|
||||||
less
|
less
|
||||||
libgcc
|
man
|
||||||
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
|
util-linux
|
||||||
valgrind
|
|
||||||
vim
|
vim
|
||||||
wget
|
wget
|
||||||
which
|
which
|
||||||
wine
|
|
||||||
xdg-utils
|
xdg-utils
|
||||||
zip
|
|
||||||
zstd
|
|
||||||
];
|
];
|
||||||
|
|
||||||
extraOutputsToInstall = [
|
extraOutputsToInstall = [
|
||||||
@@ -175,6 +158,10 @@ let
|
|||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
imports = [
|
||||||
|
./mail.nix
|
||||||
|
];
|
||||||
|
|
||||||
services.httpd = {
|
services.httpd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
adminAddr = "drift@pvv.ntnu.no";
|
adminAddr = "drift@pvv.ntnu.no";
|
||||||
@@ -189,6 +176,7 @@ in
|
|||||||
|
|
||||||
enablePHP = true;
|
enablePHP = true;
|
||||||
phpPackage = phpEnv;
|
phpPackage = phpEnv;
|
||||||
|
inherit phpOptions;
|
||||||
|
|
||||||
enablePerl = true;
|
enablePerl = true;
|
||||||
|
|
||||||
@@ -225,12 +213,32 @@ in
|
|||||||
UserDir disabled root
|
UserDir disabled root
|
||||||
AddHandler cgi-script .cgi
|
AddHandler cgi-script .cgi
|
||||||
DirectoryIndex index.html index.html.var index.php index.php3 index.cgi index.phtml index.shtml meg.html
|
DirectoryIndex index.html index.html.var index.php index.php3 index.cgi index.phtml index.shtml meg.html
|
||||||
|
SetEnvIf Request_URI "^/~([^/]+)" USERDIR_USER=$1
|
||||||
|
|
||||||
<Directory "/home/pvv/?/*/web-docs">
|
<Directory "/home/pvv/?/*/web-docs">
|
||||||
Options MultiViews Indexes SymLinksIfOwnerMatch ExecCGI IncludesNoExec
|
Options MultiViews Indexes SymLinksIfOwnerMatch ExecCGI IncludesNoExec
|
||||||
AllowOverride All
|
AllowOverride All
|
||||||
Require all granted
|
Require all granted
|
||||||
</Directory>
|
</Directory>
|
||||||
|
|
||||||
|
<DirectoryMatch "^/home/pvv/.*/web-docs/(${lib.concatStringsSep "|" [
|
||||||
|
"\\.git"
|
||||||
|
"\\.hg"
|
||||||
|
"\\.svn"
|
||||||
|
"\\.ssh"
|
||||||
|
"\\.env"
|
||||||
|
"\\.envrc"
|
||||||
|
"\\.bzr"
|
||||||
|
"\\.venv"
|
||||||
|
"CVS"
|
||||||
|
"RCS"
|
||||||
|
".*\\.swp"
|
||||||
|
".*\\.bak"
|
||||||
|
".*~"
|
||||||
|
]})(/|$)">
|
||||||
|
AllowOverride All
|
||||||
|
Require all denied
|
||||||
|
</DirectoryMatch>
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
34
hosts/temmie/services/userweb/mail.nix
Normal file
34
hosts/temmie/services/userweb/mail.nix
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
{
|
||||||
|
services.postfix.enable = lib.mkForce false;
|
||||||
|
|
||||||
|
services.nullmailer = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
me = config.networking.fqdn;
|
||||||
|
remotes = "mail.pvv.ntnu.no smtp --port=25";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.sockets.userweb-sendmail-sandbox-proxy = {
|
||||||
|
wantedBy = [ "sockets.target" ];
|
||||||
|
listenStreams = [ "/run/userweb-sendmail-sandbox-proxy.sock" ];
|
||||||
|
socketConfig = {
|
||||||
|
# Accept = true;
|
||||||
|
SocketUser = "httpd";
|
||||||
|
SocketGroup = "httpd"; # TODO: is wwwrun(54) in this group?
|
||||||
|
SocketMode = "0660";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.userweb-sendmail-sandbox-proxy = {
|
||||||
|
serviceConfig = {
|
||||||
|
User = "root";
|
||||||
|
Group = "root";
|
||||||
|
Sockets = [
|
||||||
|
"userweb-sendmail-sandbox-proxy.socket"
|
||||||
|
];
|
||||||
|
ExecStart = "${lib.getExe pkgs.hello}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
{ config, fp, pkgs, lib, values, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
(fp /base)
|
|
||||||
|
|
||||||
./services/gitea-runners.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.loader.systemd-boot.enable = false;
|
|
||||||
|
|
||||||
networking.useHostResolvConf = lib.mkForce false;
|
|
||||||
|
|
||||||
systemd.network.networks = {
|
|
||||||
"30-lxc-eth" = values.defaultNetworkConfig // {
|
|
||||||
matchConfig = {
|
|
||||||
Type = "ether";
|
|
||||||
Kind = "veth";
|
|
||||||
Name = [
|
|
||||||
"eth*"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
address = with values.hosts.ustetind; [ (ipv4 + "/25") (ipv6 + "/64") ];
|
|
||||||
};
|
|
||||||
"40-podman-veth" = values.defaultNetworkConfig // {
|
|
||||||
matchConfig = {
|
|
||||||
Type = "ether";
|
|
||||||
Kind = "veth";
|
|
||||||
Name = [
|
|
||||||
"veth*"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
DHCP = "yes";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Don't change (even during upgrades) unless you know what you are doing.
|
|
||||||
# See https://search.nixos.org/options?show=system.stateVersion
|
|
||||||
system.stateVersion = "24.11";
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
{ config, lib, values, ... }:
|
|
||||||
let
|
|
||||||
mkRunner = name: {
|
|
||||||
# This is unfortunately state, and has to be generated one at a time :(
|
|
||||||
# To do that, comment out all except one of the runners, fill in its token
|
|
||||||
# inside the sops file, rebuild the system, and only after this runner has
|
|
||||||
# successfully registered will gitea give you the next token.
|
|
||||||
# - oysteikt Sep 2023
|
|
||||||
sops.secrets."gitea/runners/${name}".restartUnits = [
|
|
||||||
"gitea-runner-${name}.service"
|
|
||||||
];
|
|
||||||
|
|
||||||
services.gitea-actions-runner.instances = {
|
|
||||||
${name} = {
|
|
||||||
enable = true;
|
|
||||||
name = "git-runner-${name}"; url = "https://git.pvv.ntnu.no";
|
|
||||||
labels = [
|
|
||||||
"debian-latest:docker://node:current-bookworm"
|
|
||||||
"ubuntu-latest:docker://node:current-bookworm"
|
|
||||||
];
|
|
||||||
tokenFile = config.sops.secrets."gitea/runners/${name}".path;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
lib.mkMerge [
|
|
||||||
(mkRunner "alpha")
|
|
||||||
(mkRunner "beta")
|
|
||||||
(mkRunner "epsilon")
|
|
||||||
{
|
|
||||||
virtualisation.podman = {
|
|
||||||
enable = true;
|
|
||||||
defaultNetwork.settings.dns_enabled = true;
|
|
||||||
autoPrune.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.dhcpcd.IPv6rs = false;
|
|
||||||
|
|
||||||
networking.firewall.interfaces."podman+".allowedUDPPorts = [53 5353];
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -376,7 +376,7 @@ in {
|
|||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
CPUSchedulingPolicy = "batch";
|
CPUSchedulingPolicy = "batch";
|
||||||
Group = "nginx";
|
Group = lib.mkIf cfg.enableNginx "nginx";
|
||||||
UMask = "026";
|
UMask = "026";
|
||||||
ExecStart = [
|
ExecStart = [
|
||||||
# If web folder doesnt exist generate it
|
# If web folder doesnt exist generate it
|
||||||
|
|||||||
@@ -77,29 +77,29 @@ in
|
|||||||
|
|
||||||
id
|
id
|
||||||
echo "Before if statement"
|
echo "Before if statement"
|
||||||
stat ''${REGISTRATION_FILE}
|
stat "''${REGISTRATION_FILE}"
|
||||||
|
|
||||||
if [[ ! -f ''${REGISTRATION_FILE} ]]; then
|
if [[ ! -f "''${REGISTRATION_FILE}" ]]; then
|
||||||
echo "No registration file found at '$REGISTRATION_FILE'"
|
echo "No registration file found at '$REGISTRATION_FILE'"
|
||||||
cp --no-preserve=mode,ownership ${baseConfig} ''${REGISTRATION_FILE}
|
cp --no-preserve=mode,ownership "${baseConfig}" "''${REGISTRATION_FILE}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "After if statement"
|
echo "After if statement"
|
||||||
stat ''${REGISTRATION_FILE}
|
stat "''${REGISTRATION_FILE}"
|
||||||
|
|
||||||
AS_TOKEN=$(${lib.getExe pkgs.jq} -r .as_token ''${REGISTRATION_FILE})
|
AS_TOKEN="$('${lib.getExe pkgs.jq}' -r .as_token "''${REGISTRATION_FILE}")"
|
||||||
HS_TOKEN=$(${lib.getExe pkgs.jq} -r .hs_token ''${REGISTRATION_FILE})
|
HS_TOKEN="$('${lib.getExe pkgs.jq}' -r .hs_token "''${REGISTRATION_FILE}")"
|
||||||
DISCORD_TOKEN=$(cat /run/credentials/matrix-ooye-pre-start.service/discord_token)
|
DISCORD_TOKEN="$(cat /run/credentials/matrix-ooye-pre-start.service/discord_token)"
|
||||||
DISCORD_CLIENT_SECRET=$(cat /run/credentials/matrix-ooye-pre-start.service/discord_client_secret)
|
DISCORD_CLIENT_SECRET="$(cat /run/credentials/matrix-ooye-pre-start.service/discord_client_secret)"
|
||||||
|
|
||||||
# Check if we have all required tokens
|
# Check if we have all required tokens
|
||||||
if [[ -z "$AS_TOKEN" || "$AS_TOKEN" == "null" ]]; then
|
if [[ -z "$AS_TOKEN" || "$AS_TOKEN" == "null" ]]; then
|
||||||
AS_TOKEN=$(${lib.getExe pkgs.openssl} rand -hex 64)
|
AS_TOKEN="$('${lib.getExe pkgs.openssl}' rand -hex 64)"
|
||||||
echo "Generated new AS token: ''${AS_TOKEN}"
|
echo "Generated new AS token: ''${AS_TOKEN}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z "$HS_TOKEN" || "$HS_TOKEN" == "null" ]]; then
|
if [[ -z "$HS_TOKEN" || "$HS_TOKEN" == "null" ]]; then
|
||||||
HS_TOKEN=$(${lib.getExe pkgs.openssl} rand -hex 64)
|
HS_TOKEN="$('${lib.getExe pkgs.openssl}' rand -hex 64)"
|
||||||
echo "Generated new HS token: ''${HS_TOKEN}"
|
echo "Generated new HS token: ''${HS_TOKEN}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -115,13 +115,13 @@ in
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
shred -u ''${REGISTRATION_FILE}
|
shred -u "''${REGISTRATION_FILE}"
|
||||||
cp --no-preserve=mode,ownership ${baseConfig} ''${REGISTRATION_FILE}
|
cp --no-preserve=mode,ownership "${baseConfig}" "''${REGISTRATION_FILE}"
|
||||||
|
|
||||||
${lib.getExe pkgs.jq} '.as_token = "'$AS_TOKEN'" | .hs_token = "'$HS_TOKEN'" | .ooye.discord_token = "'$DISCORD_TOKEN'" | .ooye.discord_client_secret = "'$DISCORD_CLIENT_SECRET'"' ''${REGISTRATION_FILE} > ''${REGISTRATION_FILE}.tmp
|
'${lib.getExe pkgs.jq}' '.as_token = "'$AS_TOKEN'" | .hs_token = "'$HS_TOKEN'" | .ooye.discord_token = "'$DISCORD_TOKEN'" | .ooye.discord_client_secret = "'$DISCORD_CLIENT_SECRET'"' "''${REGISTRATION_FILE}" > "''${REGISTRATION_FILE}.tmp"
|
||||||
|
|
||||||
shred -u ''${REGISTRATION_FILE}
|
shred -u "''${REGISTRATION_FILE}"
|
||||||
mv ''${REGISTRATION_FILE}.tmp ''${REGISTRATION_FILE}
|
mv "''${REGISTRATION_FILE}.tmp" "''${REGISTRATION_FILE}"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -51,24 +51,24 @@ in
|
|||||||
script = let
|
script = let
|
||||||
openssl = lib.getExe pkgs.openssl;
|
openssl = lib.getExe pkgs.openssl;
|
||||||
in lib.concatMapStringsSep "\n" ({ name, value }: ''
|
in lib.concatMapStringsSep "\n" ({ name, value }: ''
|
||||||
mkdir -p $(dirname "${value.certificate}") $(dirname "${value.certificateKey}")
|
mkdir -p "$(dirname '${value.certificate}')" "$(dirname '${value.certificateKey}')"
|
||||||
if ! ${openssl} x509 -checkend 86400 -noout -in ${value.certificate}
|
if ! ${openssl} x509 -checkend 86400 -noout -in '${value.certificate}'
|
||||||
then
|
then
|
||||||
echo "Regenerating '${value.certificate}'"
|
echo "Regenerating '${value.certificate}'"
|
||||||
${openssl} req \
|
${openssl} req \
|
||||||
-newkey rsa:4096 \
|
-newkey rsa:4096 \
|
||||||
-new -x509 \
|
-new -x509 \
|
||||||
-days "${toString value.daysValid}" \
|
-days '${toString value.daysValid}' \
|
||||||
-nodes \
|
-nodes \
|
||||||
-subj "${value.subject}" \
|
-subj '${value.subject}' \
|
||||||
-out "${value.certificate}" \
|
-out '${value.certificate}' \
|
||||||
-keyout "${value.certificateKey}" \
|
-keyout '${value.certificateKey}' \
|
||||||
${lib.escapeShellArgs value.extraOpenSSLArgs}
|
${lib.escapeShellArgs value.extraOpenSSLArgs}
|
||||||
fi
|
fi
|
||||||
chown "${value.owner}:${value.group}" "${value.certificate}"
|
chown '${value.owner}:${value.group}' '${value.certificate}'
|
||||||
chown "${value.owner}:${value.group}" "${value.certificateKey}"
|
chown '${value.owner}:${value.group}' '${value.certificateKey}'
|
||||||
chmod "${value.mode}" "${value.certificate}"
|
chmod '${value.mode}' '${value.certificate}'
|
||||||
chmod "${value.mode}" "${value.certificateKey}"
|
chmod '${value.mode}' '${value.certificateKey}'
|
||||||
|
|
||||||
echo "\n-----------------\n"
|
echo "\n-----------------\n"
|
||||||
'') (lib.attrsToList cfg);
|
'') (lib.attrsToList cfg);
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ let
|
|||||||
name
|
name
|
||||||
, commit
|
, commit
|
||||||
, hash
|
, hash
|
||||||
, tracking-branch ? "REL1_44"
|
, tracking-branch ? "REL1_45"
|
||||||
, kebab-name ? kebab-case-name name
|
, kebab-name ? kebab-case-name name
|
||||||
, fetchgit ? pkgs.fetchgit
|
, fetchgit ? pkgs.fetchgit
|
||||||
}:
|
}:
|
||||||
@@ -33,63 +33,63 @@ in
|
|||||||
lib.mergeAttrsList [
|
lib.mergeAttrsList [
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "CodeEditor";
|
name = "CodeEditor";
|
||||||
commit = "83e1d0c13f34746f0d7049e38b00e9ab0a47c23f";
|
commit = "af7e82f24ba4b68393712fece6f1b5fa4bb049ec";
|
||||||
hash = "sha256-qH9fSQZGA+z6tBSh1DaTKLcujqA6K/vQmZML9w5X8mU=";
|
hash = "sha256-XT8E4O6MEZYHSs6Q+A/dfYaUvJ4kY13Kd/cq30dA5NA=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "CodeMirror";
|
name = "CodeMirror";
|
||||||
commit = "af2b08b9ad2b89a64b2626cf80b026c5b45e9922";
|
commit = "f06dfd40a08562a841ddf11b4ae3444ef06c98c7";
|
||||||
hash = "sha256-CxXPwCKUlF9Tg4JhwLaKQyvt43owq75jCugVtb3VX+I=";
|
hash = "sha256-5zXkBjOwFdoQezkPRJ2AcBZLZEEpGG6FawO2K3KzllI=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "DeleteBatch";
|
name = "DeleteBatch";
|
||||||
commit = "3d6f2fd0e3efdae1087dd0cc8b1f96fe0edf734f";
|
commit = "9bc75a753efefedfc88c598fb01f18a7e4b61f00";
|
||||||
hash = "sha256-iD9EjDIW7AGpZan74SIRcr54dV8W7xMKIDjatjdVkKs=";
|
hash = "sha256-1xA758fsvoioN9xuq0hRqZKtPXMQViVLtuRINDtowdk=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "PluggableAuth";
|
name = "PluggableAuth";
|
||||||
commit = "85e96acd1ac0ebcdaa29c20eae721767a938f426";
|
commit = "64133683b73d8eeea8069fe7ed9cb7237fd5c212";
|
||||||
hash = "sha256-bMVhrg8FsfWhXF605Cj5TgI0A6Jy/MIQ5aaUcLQQ0Ss=";
|
hash = "sha256-wqpfgVLenZp6XC510nrsrbvK1IMEPcWVYq5YuAOt5+c=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "Popups";
|
name = "Popups";
|
||||||
commit = "410e2343c32a7b18dcdc2bbd995b0bfdf3bf5f37";
|
commit = "f74a8639f57232898978d9f3792293eb2d370e40";
|
||||||
hash = "sha256-u2AlR75x54rCpiK9Mz00D9odJCn8fmi6DRU4QKmKqSc=";
|
hash = "sha256-uunUtN3M/ksW/kcbeIzDVTdb1P/PHTeTwaTsvspMLko=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "Scribunto";
|
name = "Scribunto";
|
||||||
commit = "904f323f343dba5ff6a6cdd143c4a8ef5b7d2c55";
|
commit = "cbab0c740e03c8e6184fd647d95e24e0826d20cb";
|
||||||
hash = "sha256-ZOVYhjMMyWbqwZOBb39hMIRmzzCPEnz2y8Q2jgyeERw=";
|
hash = "sha256-vXS3+wrUBVtPsETa19pMvud9sALGt4Ao9mM5rQRbBQc=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "SimpleSAMLphp";
|
name = "SimpleSAMLphp";
|
||||||
kebab-name = "simple-saml-php";
|
kebab-name = "simple-saml-php";
|
||||||
commit = "a2f77374713473d594e368de24539aebcc1a800a";
|
commit = "fc5ad4501434fe85198f0b1f0087d798efa91f9f";
|
||||||
hash = "sha256-5+t3VQFKcrIffDNPJ4RWBIWS6K1gTOcEleYWmM6xWms=";
|
hash = "sha256-se0krTglo1fShJXj38bPLhw65tZC5P54Ywt7oeZrLes=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "TemplateData";
|
name = "TemplateData";
|
||||||
commit = "76a6a04bd13a606923847ba68750b5d98372cacd";
|
commit = "d37b02f6ed194138ac7193a0782bbf6efb9164f8";
|
||||||
hash = "sha256-X2+U5PMqzkSljw2ypIvJUSaPDaonTkQx89OgKzf5scw=";
|
hash = "sha256-NpzVBzX7qfXkIE+jh33ndooS9GE8ZF3/Jynm22in7IQ=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "TemplateStyles";
|
name = "TemplateStyles";
|
||||||
commit = "7de60a8da6576d7930f293d19ef83529abf52704";
|
commit = "f85614c26a0057a9f418342f89214a04c9de9988";
|
||||||
hash = "sha256-iPmFDoO5V4964CVyd1mBSQcNlW34odbvpm2CfDBlPBU=";
|
hash = "sha256-XZOtM3iadjE5vavsjkx7kfJNhLZlnnFt1CN+mv6XVHQ=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "UserMerge";
|
name = "UserMerge";
|
||||||
commit = "71eb53ff4289ac4efaa31685ab8b6483c165a584";
|
commit = "2f2432c909a36691ca0002daf6fb304d6c182beb";
|
||||||
hash = "sha256-OfKSEPgctfr659oh5jf99T0Rzqn+60JhNaZq+2gfubk=";
|
hash = "sha256-ZP8Tp6u+uJxx3I39YGMmkP0sTnjAQUSaxImAJaRv+Ek=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "VisualEditor";
|
name = "VisualEditor";
|
||||||
commit = "a6a63f53605c4d596c3df1dcc2583ffd3eb8d929";
|
commit = "1508d49d0dd71fdc1d18badd23671441b3bc327b";
|
||||||
hash = "sha256-4d8picO66uzKoxh1TdyvKLHebc6ZL7N2DdXLV2vgBL4=";
|
hash = "sha256-VNiCVNrCAImAr1tS9T28KPPzzNsKPz5ELFRIBtng+So=";
|
||||||
})
|
})
|
||||||
(mw-ext {
|
(mw-ext {
|
||||||
name = "WikiEditor";
|
name = "WikiEditor";
|
||||||
commit = "0a5719bb95326123dd0fee1f88658358321ed7be";
|
commit = "aba5e7c6701877a6b43583709751658fec606d47";
|
||||||
hash = "sha256-eQMyjhdm1E6TkktIHad1NMeMo8QNoO8z4A05FYOMCwQ=";
|
hash = "sha256-XmbQy0NXuY3oVGkkgC233kkzfBfx32HDylloGYXU/Nc=";
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ def get_newest_commit(project_name: str, tracking_branch: str) -> str:
|
|||||||
content = requests.get(f"{BASE_WEB_URL}/{project_name}/+log/refs/heads/{tracking_branch}/").text
|
content = requests.get(f"{BASE_WEB_URL}/{project_name}/+log/refs/heads/{tracking_branch}/").text
|
||||||
soup = bs4.BeautifulSoup(content, features="html.parser")
|
soup = bs4.BeautifulSoup(content, features="html.parser")
|
||||||
try:
|
try:
|
||||||
a = soup.find('li').findChild('a')
|
a = soup.find('li').find('a')
|
||||||
commit_sha = a['href'].split('/')[-1]
|
commit_sha = a['href'].split('/')[-1]
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
print(f"ERROR: Could not parse page for {project_name}:")
|
print(f"ERROR: Could not parse page for {project_name}:")
|
||||||
|
|||||||
@@ -8,18 +8,18 @@
|
|||||||
|
|
||||||
php.buildComposerProject rec {
|
php.buildComposerProject rec {
|
||||||
pname = "simplesamlphp";
|
pname = "simplesamlphp";
|
||||||
version = "2.4.3";
|
version = "2.5.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "simplesamlphp";
|
owner = "simplesamlphp";
|
||||||
repo = "simplesamlphp";
|
repo = "simplesamlphp";
|
||||||
tag = "v${version}";
|
tag = "v${version}";
|
||||||
hash = "sha256-vv4gzcnPfMapd8gER2Vsng1SBloHKWrJJltnw2HUnX4=";
|
hash = "sha256-Md07vWhB/5MDUH+SPQEs8PYiUrkEgAyqQl+LO+ap0Sw=";
|
||||||
};
|
};
|
||||||
|
|
||||||
composerStrictValidation = false;
|
composerStrictValidation = false;
|
||||||
|
|
||||||
vendorHash = "sha256-vu3Iz6fRk3Gnh9Psn46jgRYKkmqGte+5xHBRmvdgKG4=";
|
vendorHash = "sha256-GrEoGJXEyI1Ib+06GIuo5eRwxQ0UMKeX5RswShu2CHM=";
|
||||||
|
|
||||||
# TODO: metadata could be fetched automagically with these:
|
# TODO: metadata could be fetched automagically with these:
|
||||||
# - https://simplesamlphp.org/docs/contrib_modules/metarefresh/simplesamlphp-automated_metadata.html
|
# - https://simplesamlphp.org/docs/contrib_modules/metarefresh/simplesamlphp-automated_metadata.html
|
||||||
|
|||||||
@@ -1,99 +0,0 @@
|
|||||||
hello: ENC[AES256_GCM,data:+GWORSIf9TxmJLw1ytZwPbve2yz5H9ewVE5sOpQzkrRpct6Wes+vTE19Ij8W1g==,iv:C/WhXNBBM/bidC9xynZzk34nYXF3mUjAd4nPXpUlYHs=,tag:OJXSwuI8aNDnHFFTkwyGBQ==,type:str]
|
|
||||||
example_key: ENC[AES256_GCM,data:ojSsrFYo5YD0YtiqcA==,iv:nvNtG6c0OqnQovzWQLMjcn9vbQ4PPYSv2B43Y8z0h5s=,tag:+h7YUNRA2MTvwGJq1VZW8g==,type:str]
|
|
||||||
#ENC[AES256_GCM,data:6EvhlBtrl5wqyf6UAGwY8Q==,iv:fzLUjBzyuT17FcP8jlmLrsKW46pu6/lAvAVLHBxje6k=,tag:n+qR1NUqa91uFRIpALKlmw==,type:comment]
|
|
||||||
example_array:
|
|
||||||
- ENC[AES256_GCM,data:A38KXABxJzMoKitKpHo=,iv:OlRap3R//9tvKdPLz7uP+lvBa/fD0W8xFzdxIKKFi4E=,tag:QKizPN1fYOv5zZlMVgTIOQ==,type:str]
|
|
||||||
- ENC[AES256_GCM,data:8X2iVkHQtQMReopWdgM=,iv:2Wq3QOadwd3G3ROXNe7JQD4AL/5H/WV19TBEbxijG/8=,tag:tikKT9Wvzm4Vz5aoy6w9WQ==,type:str]
|
|
||||||
example_number: ENC[AES256_GCM,data:0K05hiSPh2Ok1A==,iv:IVRo61xkKugv4OiPm0vt9ODm5DC1DzJFdlgQJb1TfTg=,tag:o3xXygVEUD4jaGSJr0Nxtw==,type:float]
|
|
||||||
example_booleans:
|
|
||||||
- ENC[AES256_GCM,data:zoykmQ==,iv:1JGy1Cg5GdAiod9qPSzW+wsG6rUgUJyYMEE4k576Tlk=,tag:RUCbytPpo78bqlAVEUsbLg==,type:bool]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- recipient: age1syted6kt48sumjjucggh6r3uca4x2ppp4mfungf3lamkt2le05csc99633
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsOE50MkkxV1p0UlVUT0dE
|
|
||||||
WCtLMEk0ZSttY25UMjNHSHB1QzJ4N2l5WnpFCkNpdmlCY1VxWVo0ZStVclZ0amo4
|
|
||||||
dGhSRWY1SElRZXZzdWo5UDNjUHMzUjAKLS0tIDI3elNXSXJHQU5qb3hCSHYwWnoy
|
|
||||||
N3BhNmJQZjIrbWlVRytxZ3dFMjBtL1kKn7/DTPfJtdBomSplnBomYhsxJbX7kJQa
|
|
||||||
1Qsr+bmugWxHFIPhoDwPIBpChQkLvAo8exQpduos18FsXgvMmB0guQ==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1ug30gg4y7ftuya0wdv7q0vh4egn00wlv2th7mt7cgc2ze46wmvyq9lq6ge
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXdnNSSEJoaUQwdTNTMDY4
|
|
||||||
QUxuLzRIWVNkM25QNTZ5VTBwQlYvT2p3SURzCnJmd2g1YUY0cmdLL3FkQTQ4NURL
|
|
||||||
YncyY3VROTFUeDc5ZlB1aWdXVGNNdjgKLS0tIEtXeDdRLzl4RXhpS2o5ZUE4YkpI
|
|
||||||
RjBObVhlWncrRnVidEtGN2N0ZitzNlUK/ooEeWCY5nDgny43q45wvl/e6qq/X4B/
|
|
||||||
7Q/DPj13BcrWRgoCYeHlq6VlIerz5ERNgxyR/qKuVSGAVroSVY6spA==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1mrnldl334l2nszuta6ywvewng0fswv2dz9l5g4qcwe3nj4yxf92qjskdx6
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoRy9CaHY1WEEzOXdUSjd2
|
|
||||||
aFlGU3NGcW5MeHg3U2d0UEk0SXJIcmg4RVFzCkpwODhBWld6T1VNS2haSkpxL0hn
|
|
||||||
b0VRWVNFcTE5c0t3VkFZQ1R1d2dnbmMKLS0tIDdNMHBrU0RRSmlBZUJobXQxZUt2
|
|
||||||
MzZSYlM5bjYzUlRYNXkzNzZlWmx3L0UKkH6WOXHFRRbCprSjxcONSVUN/9NEQvtS
|
|
||||||
Jg+dJSMviq6GvUfUNmNvPJHfyy+CYT6a2Zd+4NdYCetRLsRJPc6p3A==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1hmpdk4h69wxpwqk9tkud39f66hprhehxtzhgw97r6dvr7v0mx5jscsuhkn
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUckpiMzYrU1NnNFJ4MGps
|
|
||||||
OEt0c0o3Ty9QejhEM29wZFMrNTNyMHlHWlRBCnBHUUdvcmxoL0FqVEtBSHlma25P
|
|
||||||
c2tITUtZTGVzOGdidC84OUYvRlpxSjAKLS0tIFNMVmdiWmJNZUdLS1g3T3ZINUh6
|
|
||||||
Mjg5RHdKYnV3Z2V0L3E3ZlA2WDB0WlkKJr4Vg6rnKqGpL6N143QYfLqS4lQIED/J
|
|
||||||
SYQds8mCiyCNGvV6ON4k096jXcuMAZ1w+0bA16AHlTXnqgIgfaHpKA==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1wrssr4z4g6vl3fd3qme5cewchmmhm0j2xe6wf2meu4r6ycn37anse98mfs
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHL1QvSUlWUTN4OTBKOURa
|
|
||||||
VkVVb29McWgxa3gwb2lkVTdSZmUrVVZpSERjCm9oTTFRckg3SUM1a0tJRVlaU3RL
|
|
||||||
dUtsU0FpY1JyNkx6K1U1MWcrSjNYbUUKLS0tICtvTjJVdG1PSXF4TVltZ204SnVu
|
|
||||||
VE9aT3l2dGgxMWNHUXQ0bDN2RjVOek0KwOa/vczHZa+SRr8j6KvkfZZ0kajxXOq0
|
|
||||||
5AoDz2Mtcs+qBctTuogdLCZoL2ZpRVV7v1dGI+Fm1cVLoutV19IvTQ==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1zhxul786an743u0fascv4wtc5xduu7qfy803lfs539yzhgmlq5ds2lznt5
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWVFp0ZlRhU29DNUhMSmRy
|
|
||||||
Y3VVV2pmajJmaU9qN0tHR1E3ekFMS3o0K2pRClIwek5GYzNNZEliK2ZTT1NVZklQ
|
|
||||||
YWpqY3poN0E1ZTVOTVRhL3FQSVZmZW8KLS0tIHpuWktoa1EwcXc1bEJJYk5VbEw3
|
|
||||||
blE2VXBuTDdlbHJTVjRzOWdyem1UWTQKg5uZRhcLpmiVcadqdJoscqsBD2u6UGx+
|
|
||||||
qT0IoSVOzsBlJw2t9rH1zR7WfRSlCXT1NYzu9aTWGqQaB8qvEtyk4g==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1sqs7urnzsdy64efmd0zukzv3gs5pnjksuxd7nqmdwdy5l0nqnunq6hyune
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFdjhMM1ZpM2xFVXlvOXZK
|
|
||||||
MlRZT2U5YzhMUVR1L0FqVVdiSTFTYUpyN25rCjB6ajMwTnNTaWk5d21vM0Zza243
|
|
||||||
dHhSOHM0c3cwS1c5dGxhbzBNVm9DeFEKLS0tIEpOY1lWVE04UkNYNDdCcUdnTUhI
|
|
||||||
NC9xOENWZUNyay9SeXRjSUdkMlE4UXcKiygSIWelRUZQPbiK2ASQya7poe1KCXmo
|
|
||||||
XIlgOaUe1+lvY8s2bjdud0+7QlPOKeyciCSFNNqIxzHMYSEKwNCbpg==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
lastmodified: "2025-03-15T21:42:17Z"
|
|
||||||
mac: ENC[AES256_GCM,data:2gH/ZaxSA6ShRu53dxj7V3jk7FsVdYS+PSHQyFT8qMvKM1hsQ/nWrKt00PUl9I7Gb4uomP9Ga3SyphYOXRBzKoV+x52oEWOJE3Q4iPrwdCkyHlxEezhTd/ZRQVatG6dvHpLuDNS9Dyph4f7Mw5USI+m4WeVdgCvHTydw+4KIfP4=,iv:yimfq96WVsagvKr8HTg1RdZBSrVGcCWPvv8XOXkOfcg=,tag:zHzdrE0PX5+AeD2lpqeJVQ==,type:str]
|
|
||||||
pgp:
|
|
||||||
- created_at: "2026-01-16T06:34:38Z"
|
|
||||||
enc: |-
|
|
||||||
-----BEGIN PGP MESSAGE-----
|
|
||||||
|
|
||||||
hQIMA0av/duuklWYAQ/+O1tft/OfS52K8cmcQE7I7aFb85P2L+7u1TdmTjHwNFkC
|
|
||||||
3jhvzPkNDQDkMIc5EPZKX5WLUS8F1UaqCw4b8zZtqoTqKDpu0S92KL500iXwBxft
|
|
||||||
D3cRMFFb6GBoSlPJVBt6LMRJjGLWCkBihlYL1AknoVV7VERj8m1cvcstdp3qbEd7
|
|
||||||
c+X6t5B+7N0/QPdh2KyrHWXyCzFc/6emVjNGy2EoXRt7idFF2yTbafobCs/hZ8LZ
|
|
||||||
RJyhpGyR9QPtAwFP9Und62tCd4ZwG5FazZBLevRrmD7AOW1WnQhyYvxBvqQp/Oz+
|
|
||||||
lFmhcirLw5CaC1AbF2k3uNoAHXVWyexaQeu2gsNYXq+lpsdCWT8WtrAtNCyC2StI
|
|
||||||
PtdrdQ9oikJptmoWQ0zEBXKXdV8AhukLSX0wtis74KbmcS+2YyNKvQksGF2ZfHBh
|
|
||||||
U9ycfJr1kwm7TAg5Lg6XOmKrdOJkPoIcUCk2QW7MfS3nwwMLt3BjhhpRVUfeUmjB
|
|
||||||
Jjjs+jUXEusnmwmvGGgEU2pT944FLuFClSI8JTnIZ61YkjF7zAtrURvsNKlqu/UG
|
|
||||||
JLrWR+dnnh1YK0qQEcqt6giNSX2IWrw5SpJ8Jekt0TWfB1HDHybQUyFC/n/je/XK
|
|
||||||
0ouAeDL9oqh0eRU3ng4KKhOXNn+WO3/HrnG//KFwokc//BNNvP8qM0CTtPQbQ1HS
|
|
||||||
XgFjhTfzV0T4LyUryuict4rLVI+DDbzWGRp0umdobvQE1CGLhKCanrd2/Ng6fAny
|
|
||||||
9G09vYF5zK95uzqFBCTh1zFr6+rhfbMI501TwBu1KxOaJdYs3vzLiTGWoyI48JM=
|
|
||||||
=5fyo
|
|
||||||
-----END PGP MESSAGE-----
|
|
||||||
fp: F7D37890228A907440E1FD4846B9228E814A2AAC
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.8.1
|
|
||||||
@@ -18,6 +18,7 @@ mediawiki:
|
|||||||
admin_password: ENC[AES256_GCM,data:4eUXvcO7NLOWke9XShfKzj+x3FvqPONa,iv:3iZ+BTBTZ7yMJ0HT14cEMebKZattWUcYEevRsl/6WOk=,tag:CU0iDhPP2ndztdX5U5A4cw==,type:str]
|
admin_password: ENC[AES256_GCM,data:4eUXvcO7NLOWke9XShfKzj+x3FvqPONa,iv:3iZ+BTBTZ7yMJ0HT14cEMebKZattWUcYEevRsl/6WOk=,tag:CU0iDhPP2ndztdX5U5A4cw==,type:str]
|
||||||
roundcube:
|
roundcube:
|
||||||
postgres_password: ENC[AES256_GCM,data:fGHmq6r/ZCeIseHL8/gmm5DfWQYorI3OJq1TW0EHvh7rHL62M4TE+Lrlrmq8AIlmGLSWtO8AQzOP3toxidL6xWX3pcwLxtTefa1gom2oQf6ZL4TbAZLidHksdiro6pWtpMOO66bb8O9eXvZmns4=,iv:Irnb2/bgx8WilDyRLleWfo6HHafZ+vlDEwxIcgm1f18=,tag:eTNBUELmLwO7DsQN9CLX7Q==,type:str]
|
postgres_password: ENC[AES256_GCM,data:fGHmq6r/ZCeIseHL8/gmm5DfWQYorI3OJq1TW0EHvh7rHL62M4TE+Lrlrmq8AIlmGLSWtO8AQzOP3toxidL6xWX3pcwLxtTefa1gom2oQf6ZL4TbAZLidHksdiro6pWtpMOO66bb8O9eXvZmns4=,iv:Irnb2/bgx8WilDyRLleWfo6HHafZ+vlDEwxIcgm1f18=,tag:eTNBUELmLwO7DsQN9CLX7Q==,type:str]
|
||||||
|
des_key: ENC[AES256_GCM,data:U5AHdFgDtidjN7XqPSJkT/anS/q29/9p,iv:okLPMdnNW3dawiqirLA6VmnhXsbPyP4QnqbRo0wfd58=,tag:ZVmCzJK9uhw6CvxK1On1Sg==,type:str]
|
||||||
idp:
|
idp:
|
||||||
cookie_salt: ENC[AES256_GCM,data:cyV6HDCPHKQIa8T1+rFBFh6EuHtG5B508lg6uFYENK7qVpYuiTUIokdVQhY8SRLs2mECx/ampgnUHxCRB/Cc/A==,iv:QRrRUhzRQrLkmg38rrYtCEfF8U4/7ZHZUDSEq++BlbI=,tag:fLqFSLd+CKqJvmCh1fx8vg==,type:str]
|
cookie_salt: ENC[AES256_GCM,data:cyV6HDCPHKQIa8T1+rFBFh6EuHtG5B508lg6uFYENK7qVpYuiTUIokdVQhY8SRLs2mECx/ampgnUHxCRB/Cc/A==,iv:QRrRUhzRQrLkmg38rrYtCEfF8U4/7ZHZUDSEq++BlbI=,tag:fLqFSLd+CKqJvmCh1fx8vg==,type:str]
|
||||||
admin_password: ENC[AES256_GCM,data:Vf33Oenk6x6BIij1uW8RQDjTPcKhUVYA,iv:RNeyCNpTAYdBPrZwE3Y6CCjoAML/3XUvjfJCrr06IEU=,tag:zVOrx1oXnEyr/VwFCFaCDQ==,type:str]
|
admin_password: ENC[AES256_GCM,data:Vf33Oenk6x6BIij1uW8RQDjTPcKhUVYA,iv:RNeyCNpTAYdBPrZwE3Y6CCjoAML/3XUvjfJCrr06IEU=,tag:zVOrx1oXnEyr/VwFCFaCDQ==,type:str]
|
||||||
@@ -31,10 +32,11 @@ nettsiden:
|
|||||||
cookie_salt: ENC[AES256_GCM,data:VmODSLOP1YDBrpHdk/49qx9BS+aveEYDQ1D24d4zCi06kZsCENCr+vdPAnTeM1pw98RTr3yZAEQTh4s90b6v8Q==,iv:vRClu6neyYPFdtD63kjnvK2iNOIHMbh+9qEGph7CI60=,tag:66fgppVxY0egs4+9XfDBPA==,type:str]
|
cookie_salt: ENC[AES256_GCM,data:VmODSLOP1YDBrpHdk/49qx9BS+aveEYDQ1D24d4zCi06kZsCENCr+vdPAnTeM1pw98RTr3yZAEQTh4s90b6v8Q==,iv:vRClu6neyYPFdtD63kjnvK2iNOIHMbh+9qEGph7CI60=,tag:66fgppVxY0egs4+9XfDBPA==,type:str]
|
||||||
admin_password: ENC[AES256_GCM,data:SADr/zN3F0tW339kSK1nD9Pb38rw7hz8,iv:s5jgl1djXd5JKwx1WG/w2Q4STMMpjJP91qxOwAoNcL0=,tag:N8bKnO9N0ei06HDkSGt6XQ==,type:str]
|
admin_password: ENC[AES256_GCM,data:SADr/zN3F0tW339kSK1nD9Pb38rw7hz8,iv:s5jgl1djXd5JKwx1WG/w2Q4STMMpjJP91qxOwAoNcL0=,tag:N8bKnO9N0ei06HDkSGt6XQ==,type:str]
|
||||||
vaultwarden:
|
vaultwarden:
|
||||||
environ: ENC[AES256_GCM,data:CST5I8x8qAkrTy/wbMLL6aFSPDPIU7aWsD1L1MnIATRmk7fcUhfTSFds7quJmIpb2znsIT/WxNI/V/7UW+9ZdPKI64hfPR8MtvrJcbOhU5Fe2IiytFymFbhcOgWAXjbGzs7knQmpfMxSl98sU71oLkRuFdkousdnh4VQFZhUCYM=,iv:Is6xQ7DGdcAQgrrXCS9NbJk67O2uR82rbKOXBTzZHWw=,tag:XVEjCEM5t8qJl6jL89zrkw==,type:str]
|
env:
|
||||||
bluemap:
|
DATABASE_PASSWORD: ENC[AES256_GCM,data:uSaQuyx4yn1QfUABWpEjf8x97Imh6A==,iv:pukLl3k8X+ITRZ4bZfOPjsWKCHjVCo8Zd6qEHRERAYc=,tag:4y03dQbEhS+mTXUhzt54bA==,type:str]
|
||||||
ssh-key: ENC[AES256_GCM,data:nPwsT4RYbMbGp2MChLUh6NXW4ckYr7SQcd6Gy2G8CEU+ugew5pt4d6GOK1fyekspDtet3EkPL2F1AsoPFBB2Rv0boARMslAhBqwWSsbBJTXeTEgAABSMxTPJRBtfJucvv426nyIj3uApoknz6mDCQh1OI6mER0fis7MPaM1506HlDlnIT0FV9EairEsaAmbd0yddByGJSccKIza2vW0qWqrz83P+xrakEONxFz0fJlkO5PRXCcQJVBCqWQfnaHNrWeBWv0QA7vAHlT0yjqJCpDRxN2KYrPWsz7sUbB4UZOtykCRM5kKFq73GUaOKqVECJQhcJi6tERhpJELwjjS8MSqvBD90UTKTshGugfuygTaOyUx4wou3atxMR2Rah9+uZ6mBrLAOLX3JKiAtyhFewPMWjd/UhbMPuzNageVBNz2EMpa4POSVwz5MyViKNSgr9cPcNGqmrnjvr/W/lnj6Ec+W80RiXQlADSE4Q6diLLwB9nlHvKs8NTDgv6sUafcPHpJ2+N4Jkb96dE14bMffQ385SI4vLDcQ8xCQ,iv:WdJIHRzjlm8bEldolCx1Q7pZJvjxGkNZALSOy3IjizU=,tag:5ZAikiqttq/76+thG+4LMw==,type:str]
|
SMTP_PASSWORD: ENC[AES256_GCM,data:Nr+4wZSvq6KjfzB169v4ojvWHa25Aw==,iv:HM4VYLUCI0HaBT8cDzusYA+49LpuJeg7v/Pz4nfulmM=,tag:T4TkDt+NdWnqbCDaRUERJw==,type:str]
|
||||||
ssh-known-hosts: ENC[AES256_GCM,data:J6V+NJ9TvYUL2gmcqWWYt8X+n0M7i0RpDpBelWAbFMH64+e9ztHNnC491sm+RogDxqKk0kwQyX2Mz00iq3Gc3wDYyozGOdv3tBKrp7/LcfjUQ9T9hi0yTD3eNV0LAjlAWMTdlW65VGHqGst8ncKbUuVxbBASVlh3A321toZgD+xxUAtNz7qKFa6fDbOS0xLD1+CmTwVp+aPos//QIKzjuk1HqxfBNK82maKtD4JHPS+Y3be2wIEjGWq3H6JYN/RDojD88D/jzo9RwvEjpqLXoOVfy8uX/fbEsgkgfAmPiaG+ePCnchSExEe3a6Y0E+I6YIzvP+tGThJpu4HaT/yW2Rww/jvsxKrXSUhtBZI/SIX5ZAIFB3sFjJXQefJjfNpQTQWhbspLfdemafGaRiDnzVgKDhNL1HNMNsXKDfWa0SLs4//dqerom/QCCNsaqV+4HVzv5x44srChGERadQI/Wh4UG2R19xxbdyIsKPHzv7BhEKufJkjc5upBjWygQrGAkTRHugFpw2Tdkz9yUQSujMkaeRKhVkA+ZUAjwnY5TwqNZBj7U3K2JXoNVHAq194XmrA2dNghh0OmRrvKGwM3HKexX22SXT0bPlpdWRQpMbUgV+uHLMerlDpNMFTIueEBkaF/FWeSW2N5WUrUb1uJ91QcJ8JBgN1riuD1Oxv9RRPrY9VVNJMrYjpAAREN8i8brMTOCJ35s7jnqIei0dNmnNXOoQZPs9kUMeEtUc/Df1E8/aO2Y4yU9gHUuevXnAJWFAiu2IxssgPk6CcNxvapJEmlwkLK/JyuDsWwFxVOHfw5QIEsoDVWXt6eMhquqUgzJI1q7QrTWUQsBb5A5sQKYWQHempOaXuQn1bzA7mU3Gzsr8bNNc6tpy+6j3zTXYR067EX00yqPG+kqRn4QVIuhByxXP3cwXLUG9uD1lsqWrGzs6WCnHr7txhRBXf4WbBVmXModO3uf36cDYEwrUa6yBsARtSl8PJ0UadfY/xULcT5PFvu9+Hi2qj3vp4IU3JCJa9AvXB+11pbSdawprjuDhwQtPwkJ4CQyvZsom3/BOrmwYM5+EyMDIluEQ0z6eDE5buiIVbX6IvXnDCKbrnqVwavX2wqyiDduFLjRfWL/3U2O1yRim78smrDMJABJZvtW+a+GfmlnTd/gnFvS70Fmm/lgtY051ISL/iFx6toJRoBMMiI/Zvy13uQry+w/HbyFl42DIank8tf7kuN3E9M7ADGMubRJJ0AZOcQddrFnR4Gl2nU2+3RS5fLHaBf9QHK6W92/n//xmPkYqrkPacew4eBjUqM32jVGuBpDc964fK9kdtIdw8q5P1s/ph3I79Y24kGeuO1AVJuZvkaTv1Z7GgI9+K9TstKJ9XpRCidLpLSP+uHOWkqcNsQlt6ilTlfHj+MKoD85dKZ315QMmpiuYEvzCSP1aYTb9dpd61Su/IVuM3r2NuINNEZ166YlHQVsLNpDn8E5ahk3ZInOAg6/kaKTmjUI8KEvX4BR3PbbViAlJJb3suJ0oZBGPUlrW5uLRmADvf2mMDVO5zY7/m9DQwxjt4Miu0l8ZaUc0YJQ850lBKucQ==,iv:GI8w7h7xX8gMHuAoWUyrW+BQb85LNlASoYvGBPlCZaI=,tag:WnHNMevfFSMc0ikBZwWn/g==,type:str]
|
rsa_key.pem: ENC[AES256_GCM,data:bYZzFj2ImB0jfiIP9N9V+nk1ROjql4PEuDcJIhVV96BeE++Kq+DGORrnfCyJaubNlqT7+nlMGN/D6bfzwKWivuXDd7T5s6wXplk480anOrFU4cJ9NYXHJjoT8Cn+jKSb7JEWO42cVwraB+qGWFZevOrRtdBM328ffOH4IDqVYgIonnM+pHe7oGglg2Xc97x3GQ46ODWKFZsAqU3ZZv+4SGJXJJorPv+cOIoVvXpqec7TuD2MnfdXvLQEl6o/zsGuV/yQkbJus/BqKUUR+RZ9i/0xuzCd/hJS9yFbHHBj82fDh6+D4TG+1PM+dVRSolkkxhcBvvBJtUPqRewTe5cNO9wZP1ocf9GNmXMbvopaNdAxh6uPJNH1Z6aZ+kLShF5ddE4FuKSvucEPgUdscZw01LeJIehZ7uzHCC99jmojU8rlsWFPvJqUfp0xAZDFDJgCIGt6AbKwBCCeFGuvqYT6w5GQ8uT8OQVBmRxUCZuplcDTUMsBXDxa/Q/5Q/O2zIev7jw7Rm0cJ23ovllu40VvLD+Xu/uQVYzivOOHkvUhQkjVkfbk073ZjrhlIMO3BOuA7PDKUsMBz3UVndtrYU+OOtCI0CoCVVP/K/CamNBGGHdvBoQ13bVn04OgdgJYgz04gP6MqFkr8AWoPFHVZe8+Z/tlW5DtV6SRoUfGFlnROWhiBVZpNuUj/ef1gUY1OoFuqY4GRc3nkC/Fwxi81+lSbAQ2ZdtqroJxquoVJhoUWuSonNDBtOYU0yczvF70R84AFzWKh1eJ7hr2iwcMJPSkhTzTm7LTrr0mQqU8qMxUz4pa0yxOZW0UkC2koz6jKdYlwXHMjjyiUZqfc2y9DrRF6Sa/NUPTrzIvikYk9yr3thnh4VtcsYdqvwlsnkbM/HtGvcmmtZjT4npLyD5t/7tUOs453Ntoo1BOto7+X+0IrFs9yHheBOqfj8dA1M2am0cjrS9LyaSnqBREgBFWVJdpSB0aDdh0M8vmpCBcdrzGPLCUXhNWihiZFEVh1ZrwzXWndRtqmhFLFfXmnEAhtEQL6l/GuA5WEYPHIThq+33BDhXAUB5oBcQQSI8TGPWw0IkOci8Q+SlUd81h2JtAmek/L+1kGZwmyolg1iA9c0LVxapM9cpSNVnmON/O2q3tFisQS82/ysKnNggeyD/ByY0dGMUZILAeONBqm41UcVGoAP5N5KE6Cb7FlppBRitn4QejVvLExPtK8NwQl503Yjq+yBTjSjhuZbB2mQaFgJeKhXrm34I3ZMKKm58j+NAGVJTi7RPzSfTW3kvPvtfm8GvM+vuOOxvNzdid8jR241pQl35d6hOYS3wvbkDVmkvbcjTJBPslvq6pGmAVPyHLHshgyTvvTweX1yodoV+4Z3dtrBb9wZKADT6VfTmEo4RXNjIoZFQrTJTdBeVQbgxejySKHAy2G0/8ZipvToj7zRULSOHh6yS4no8b7U7ZY9tEdxs8uxhDob0nkGy7VQUGG8YNXuwGsjLjVsTiawXiWnqdxeFLuTkKEvtMEEmDUfIRErY2juZbra4AKKWdjegc4ayW1ZyUq5i12eRdnpNbdXBQBtBjagvo3A29bse1TMV3Hww+B7oZ0wsHFD72byD159DdEqnLYlxzRjXns3E2qX8f5xvIUFkBIFNDqkKVaq9wqCrmS0vpbHvuiEJDwyr+nu32nWYT9M+RO41Ri/W63juukd/wf75QKVNNjV5WVrJaN2lgr1+3ux0LE5qs01nZZKqv0jzk4P2SnrPJLMq9NbEgXgKjmwqABnQm8KkeHpPQ8ns4JAY7L5pV6faf1rKWQnE71t9qpKSNMlOgtcv2Jd+5HZuUYbYw5SdDYmwsd+OT0cVu0jURz22k/OmT9GY09SnYpvgHrXLNjvEtY0Tr2vpX1SL5qTx6MWDs/nr47+t/DUEMC/JmUrIOE3OSZXpS9AO4BsBmTV0DF5SlvYBDnHAqkHuJbzRdQ1FjGg/wZLFDmIUy3F7m7bGB+5NX+1ZO1BmG2f0ICpHiR1SGnaK81mY3gmfUD8al7gmmKmAltfvw2kP+Z+Hv2d+XGqVk2csRlfq9e5wu0jFKgcGIs4NuA71V0oKfwL7a3gN0Drd270frH1lYzET0NRSQkqw4oeTt0y4my5TvYGmLEHE05IORdrmHUkHefUtomTEB6YQYY+wLyxVBo6z6MFLN7eCe1HtxjUBp8LFxTT+2l7IusDgIs+6I05Krrrz5GHgNHdMBhw==,iv:CtmysYvEFew/839Gj+vZEDoqu6TvrZ9bUIg9GwejIX0=,tag:CnTEOKLYDsVGRVrQDwfFKQ==,type:str]
|
||||||
|
rsa_key.pub.pem: ENC[AES256_GCM,data:B/2SQrEQ4zRie6A89jneHl5tXfHraYzVEBshY+IrRoufI9YpQw16VjGgrNVCpaG5+PSsCNjz8lXM33oQwg7HU1IWHmvrZdEgkguYv722Ngdb4D8IKHL1nsL9/gkVQFFFvty9ru3LDTfrFKF3cLX+6eIQMFk5W+qLuVO5Pbxh3LKWmN7zG8XHa/b+tvMQclHrtY2iomIThyxKi8w03uE1Fs6V80hyuMA/3TdIz9nUwl5WpiGxaelwaJyts2b5KoBzJ0zZbdR4IHCTYYqBkdjo8929M/gfPS6ZqZS2FPDReoWiujJSAyyoC9xZxglUk/g7vU/8CVwcrtVzn5DEbUot/om98p/1Hq/1Hk4zli49Ysy8nbPhlshZeH5RNSQIDkY6wT7TYD5m3QXjXV+siH7ClKAfri2zp4S4k9uEXvL27NTPqvoXKIUpSEl1b0A/ApQt761PODEMtEXx2PmlRKhg9T9cvLRNYbJavg3FMNivZ+2oQNZXeJZWUEjtqsEoPBAbEHklMtKJiQiThtIPHL3eEdTAhOVhjxBGYU2Kase2hU7g2YvgC3+8u48OarXZbZYgcJkoCHrm+hocYm5DZJ64rxURZQ==,iv:6x0vx8tiGOsQxHsp+qO+nvdUmqNKWINdFO1wXOnORVo=,tag:zuPNh7IfEG/c4lsFVNRYog==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- recipient: age12nj59tguy9wg882updc2vjdusx5srnxmjyfaqve4zx6jnnsaw3qsyjq6zd
|
- recipient: age12nj59tguy9wg882updc2vjdusx5srnxmjyfaqve4zx6jnnsaw3qsyjq6zd
|
||||||
@@ -100,8 +102,8 @@ sops:
|
|||||||
SU5zanlva1p2QjVndVJwUnlkdkFuTDAKbQRrSfG9MGsGvF2ywoGhDSuriDsbQ+k2
|
SU5zanlva1p2QjVndVJwUnlkdkFuTDAKbQRrSfG9MGsGvF2ywoGhDSuriDsbQ+k2
|
||||||
29mxere0efSSGGq8y9YrPC8UX5hZRfqg/dfbL+PFc4NHfbxB/oSzQw==
|
29mxere0efSSGGq8y9YrPC8UX5hZRfqg/dfbL+PFc4NHfbxB/oSzQw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2026-01-26T08:40:13Z"
|
lastmodified: "2026-05-24T07:03:34Z"
|
||||||
mac: ENC[AES256_GCM,data:ppgpARft/YDKP24QF4bLYVhxN4nRrCsf4wBug3UD4MXgQwdFyWPAHn086uONeMbVOvH8IdwlaNBc8h36I7M66cqwK1VsRc/vf9Ud2VnD/WkWijMSrJ80frIvuvREp7aMNlYbD20bjrp4sYohjcJ8KPqyPUFPj71dA+9LZvXJthQ=,iv:lr3R14lRx7RzclknKbOa/bHa6axGbMPqj1FRTjx34xE=,tag:pBHzSArxYs4bqq355T4yog==,type:str]
|
mac: ENC[AES256_GCM,data:J9RFBasxTwjIMIV5ou7eEytKY4YBCmGq7DEw/thDIxd5nfPmM/T8OIyFYE9130OsMJu5LabmskaypxTQ2d7sW5ovqMfs3BVCI8FNjUiCmWfmwnFZ29hlDWMD3BYShgOVxI6XTlPiY/2AakQ4T5OwvQfO0sqIGReP+zhT1FIzZFk=,iv:J6v6qhRYFKq76OctU4zOCFqiaYcHbclQcfWMlj6Tig0=,tag:TYc0JcXheOlAidBZC3D6Sg==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-01-16T06:34:44Z"
|
- created_at: "2026-01-16T06:34:44Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
@@ -124,4 +126,4 @@ sops:
|
|||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: F7D37890228A907440E1FD4846B9228E814A2AAC
|
fp: F7D37890228A907440E1FD4846B9228E814A2AAC
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.11.0
|
version: 3.13.0
|
||||||
|
|||||||
93
secrets/gluttony/gluttony.yaml
Normal file
93
secrets/gluttony/gluttony.yaml
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
bluemap:
|
||||||
|
ssh-key: ENC[AES256_GCM,data:UzXcgraLe6A+BjVx6Zzj4aX2M5J3mt5Rpc8iuNOYwWGz+SCzrfLNcCKGXtp5MkAu/CbxovptxqKYLb42fdjFT1TjOV4TipxUYN0e+PtKV16jfY4INJ+rqUykYXEcMTQc9Bwaor5yKxRV8+/V+T1qo9uHpr54n9o0mnU1cMZ/2yVBouSWIBuHXNxeG5STqe+0sqtFurMREUelLEHqMLIq4TtO3obf8l6vWQSUOvHBGINKjByIu38WtJ3eLKrZp+BQ6/t5vSgMUNlugrh8JQvgIyQanNCZbfT3/Q2oK4RsRJ6lLe6Z3wxsIQCvsYqgoX1/9xSZXt9JIuzJo+QP+bBEgk7JgKyW/UBdJlZnoPuRJc16fDbuJjZsWmSMNQ7wtbqNXY4gnwp9eoCUGaK6OScKBg9IzOj1tevlzg1jEcjU0em515m8mIySRWyBWlYyp4PLyyiBLgnwlCQDFHoNqL6hl3ZUO/zXxr55EFFtwsZtYMf5GttlUvaVPoxUXKOVMb33Y4CCmt1YpXzIY1NPaVQomIF8oritefL6PDm5,iv:y54tfAJqR9Qrv015wPl76jqRvfJfor+5BdsKMkYBMXY=,tag:QWNW2GsJDXl4Af64kPo42w==,type:str]
|
||||||
|
ssh-known-hosts: ENC[AES256_GCM,data:0RhRWtrj3U8ZJk40MvFwvUnbRzdAbVB7Z0DUsXJME7Hw4Gbg+CYX3JOQLwD3DZMMEKXcjyP6tkJdR9U1R2BwDs1GVUFgmIuNNE/Qz/5HTCIKHWmE3ZwMMKJhqBrEecr2wWABHMZbLscLoimvjX8CIKxxbsBFIFlsucG9PuIRMGXHE9VRhJxR/wMFVn7a6Ez0iLt8j4G8ebQQi1JJjyCvEjLCkoDvJ7XH3MoZ3PsMR2RCOvNzVACAsDE9GLIat/10/e26xTZ/C1HAC9OUDcQUSQIp6cWxcD4E3w6n02Zhl6att3sJm3eboJMp+0GfsqhC8AlUpvc/VXTeZIvmrKTN29mPv+KAcjgnHroicznVdv9rnNP5Rp0I/3fXBD9yZSedZtucNpX8O6CvYX8NOdItJMz/ya4TFuXaTrFOfuqhL5UvJ/JleU3DdELr+QStgtIUpUvIrTn/XrakSrDRprtje9d8+kFVRYM3V4nCLwWkP26xabiBeRLRrnpuiBj8e2j7g55AaDivBdYo24h57oxglgy0WrJt08+MKRPlek5QQl/E2dBCYcyh7pGaarKVYVvi4yjMlA0wvX4GPgAZkm345lWHS/pXKyGsrlRRUi9Pcghw2uO9zw2iaKecphK/Sps/zsShOQyaPd7TM8qfeUHRGPMxxbMo+N5Zxdy4X7c5z5UdgYJWrc0TZS3im9KHL4iOGQw38LisSD2hWjrzEjfQk4ijShJEDxM20TCkVsCJeIm4xlj3cODMX0c2T+PeFrqKqTlp44w4EFes/QNhsCofP4FVhxXT25mWK2pygtzspPfYb/Z9pqbFFtDC7/WZJ4sZXThkG1yMvf9SJCDWWWt/TDp5I6U7Z0525nBAyRxtvXa8T7PjS9dhBBh7nFIa8ZofRgZ2Ci0TAAuC2fD8uOvRoQTmvVr6In/6EpBpHZG9CCKvMRu3BPBOPqPEywop3fgRglRaJhnvpJ4eOQQNNQ3pgSX5hmxUQoSMM/IkOuwp6VaxyTlji0JJFUdiHIe83u17ZZ2BxYMmdqO7lRRCnEARgro6bKOnhoscbvPzcy8486DUYwwptdjUO6HVzLknFSCLd0318Tpm7fXdlrdK846mkZZ1INZ7aIB1oSnDR/0BS31oXRijJFQ/E0j8/5Cmoxqj0TP+JkLpkOnYPUXN07+HKB9Zx75StXeorGUQFuu++OZcYfyjTrparMVJDJaMEgtQ52L1dlqmdhEhS3TNMzxYmd4pQQt89Woe+mck3t2nFDj6pqC++wDJov0xhdnf+DMW/7LFT/mVdgy3/Ni6Z2/8SZd8Qh3CVdaMh8Tv/vF28uAd9ptGiE2KT2Zbu89n9wzyihrBf3DwK9mj+5DLPkCVbV048C/3SOcwuDzSrFuYZvikfhxT86bmHeHbNDi50Y3WmNoEPUuIyrDjKdUr/xp9V/i32X/OMr2IzLSeX23/pTKjLnGHnvje2MYTi+aIWJZxfFYH2Kkn5RqOt8pNZLT5c69zswsz9wRkyVbQwgwqk7VIsxiB64M44Nq2XoRwUtb3jHfGqsiS8tQmWYOUI5DM5erisqd0EKeOSUgzXEi6XmdpikSdSHiiVl1OqR3LE7/k9l4as8x3zwP9JT1Elv0Rf96fnW87s6UPrK0XU3OQiQjm+Csga5ZvHXXtQk2d+JVJ5G0bqNiQ2Oc5Exqjs6xgE4ES2bIZy/6mHd+bd0MoryOx4cs6F6tXiGw3wPgmjy20saCadICzdG2kHXu9tFK3oJCq5bgJH9XEbxvgptVlOU4MFjbaAnHs8ARo+oHHmvIFkQz2JBnhM3uwKGTraX1oHa+J1yW7Fv6wzKXKP/UDZhMaGtdu9egTpZANOzHay/l1ggdtIW6rVyUjHgUIMxpLV9qswldb1Yos+bhNofULrqV+p7CpJu/UKtP7i5luTiH2AOTiqBVxPvH79OSaG9IWLrF+6K/zxSlpCGG77LmxwTWRcMW/h0HVOYnZCvYs8QB0wnK5lriO3RSj5BHWibQLmMndOKx3+hk8RatbIIwAyGm9fGGdDX2Cuij+Ys6rQtHeEgEdnWgY9OF59TDPg8TbeCD1DjNnXpveGapDmNVlQoXkRteHmGpmI3sxmGB9hFplNJuQFJffxdoGXN9+DDqscqYwnxpre8JtGvC8AK2k5dnooOCLEUafr+XdTQa1s3I7p3v6FKI+8QcpyARIrQPLNAzO43ftRjtQf8GTeV7mjLfZiI6malOnZWTgHNhiOtbQuWN/JGfVw9KxndwkkXgt0mYjKD4heOZ4NWNMfkmWxNSp3Gr3X9tCvXgIrJKXqURDAd+y7ad0buZyuPpSiX5EbgznFGTctmTzZ/mPBwk2gQTcaLiz4RxJsmfrgA3xRv91jHWgeRbuk6eeBW9C9AlUC52b9LuUOR8EUGdo2sh0K5As9rUnqxZ0nNYc6Fg5zJW+xJ9GkcVUdBvUCOikOnMvJYmGxMtQ8VlqRcUukdGhPwLnDBjDIzOBMQlwaEYPpHNqIz4S9S4kr92VhXe0KOh9TF3HDODURt/VSdoit+FTWSHdAINjfkE0nlqfpE7fpFJbR309gnLKF8Pt/hTgweApiv3UAC4Be98Vkazs/aiuOOyML8fZykjiJboIcRqwznkoYp1AXeufyQBTn3fqRh+xU89HVyQtqyXxofaJXj2OqK6tOzbcu1JvgNGN9xK/L386SjWzLrhpmKo9fkV+JXSUBY99CClTSueLZ2H2pBOOsYfX+lwAJ491avUDVvwnWMcFL3uNNOozMAqSvz/0lCbtduhk2mSxwFYIplTgpXCKxrg=,iv:8Jcg3GQCTzOfVc47rlD9QXcsC+3Jxjsmyi6YDjQisNQ=,tag:KjZmgsi6HlVp6BiwI9BuKA==,type:str]
|
||||||
|
sops:
|
||||||
|
age:
|
||||||
|
- recipient: age12czfkvuw9pjk5qny5c6m2hjhd634cj9r4dsa3ss5zkux5h4vvc7s7k4urq
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPeHFDb2xERDdQa3FDT1Ni
|
||||||
|
OFBBb1MzUXNqMktTVUlDWHhRWithYkN3OEcwCkd3OWlaSks4bnFhRzJud3AwZ1Bo
|
||||||
|
c0xNYXdDVzVxRjZna3FaMEJuR3hMbVUKLS0tIGNoZGpKUFBldDBDaGF5bG1SS3R2
|
||||||
|
VzBDc296WmFkdHcvVWVILzNFUzJKY2cKIHUNTXL28jYIgo7tMsR64gpydX6bg+1f
|
||||||
|
PntcQBsVXmjW/XOWg0XTa23BRkuL9a8wkWPKV+EvVaRAHLA+NdrCzw==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
- recipient: age1ug30gg4y7ftuya0wdv7q0vh4egn00wlv2th7mt7cgc2ze46wmvyq9lq6ge
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMNXJnNGxEaUtvazVyWVBn
|
||||||
|
NkZLbk0zYytTcmFVek5hWElPUUZ2NDc5S0J3Cll6NkRZbHBkREVtYmxSQjRiTG1w
|
||||||
|
THJRYXE2VzhhTUtqZUQ1Q2k5d1V0c00KLS0tIEpjb3gybTVSMlpnT0pHK3U5bkFP
|
||||||
|
aW9YZVZpbXE1Ty9tZjZWRTJXcDN1UTAK7NC7zqWWfsjwsg4RC6+pHgIRSr2NYdJU
|
||||||
|
JnSODgTDeRWNWTnlOsGLVBB4G4cs3sr+G1TTU6ECNeScVHjm5LEXpA==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
- recipient: age1mrnldl334l2nszuta6ywvewng0fswv2dz9l5g4qcwe3nj4yxf92qjskdx6
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhamk3VWVheTZOUXVwUnU3
|
||||||
|
YnAzSzF0UDFNVTJycHJTdk1zNmtkWWVHeVJBCnZTQ0xEM1hSQ3dTcHhQYmt1UDdr
|
||||||
|
TWEzeE5SZ1FUVlhsd0N0NUdzNXB1V1kKLS0tIFlzRE4wNUdYN3kremxNUHlMRzVx
|
||||||
|
WWRKRGZza0hlU3JXQkdwY2psQkdqbGsK7XHA7aO7AN+fK65phQ2Wjuoz0/CylAKb
|
||||||
|
aEo6e2DDlEKoHyel6VtncYU7IytU8vx4f2KdBQuDIsypQqOCyjpcYg==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
- recipient: age1hmpdk4h69wxpwqk9tkud39f66hprhehxtzhgw97r6dvr7v0mx5jscsuhkn
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQcXhaNVJrUnlSVTQvVE9T
|
||||||
|
RnpDa2JBZFQwVG5oaVpUWG9ZeGM0UkNZakF3CmhsK3ByK1JaamV2cWgweTZUVjNk
|
||||||
|
QWdtREtiVnd4TllycDQybWxSb05IaFEKLS0tIDJXZzNKZzZJL3M4bTNiV1lHQ2lq
|
||||||
|
MW9uSUo2dzR4VzhmK09yU2Y3Vkl6T0UKz9PygM7wNx+SDO4ea4RKwENSpnzGC8jP
|
||||||
|
5N7p/MQZQjclpNyIUO3OKQECMQD8jPqN+OlBmctQqDR4vTSq4HmCvw==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
- recipient: age1wrssr4z4g6vl3fd3qme5cewchmmhm0j2xe6wf2meu4r6ycn37anse98mfs
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBjRVVucnNNVEk1TkRvb1V0
|
||||||
|
ZjlCMjcyVHdVVzRwVUxmQnFSSThZblcxc1JFCnVPS1NKRGxERzNPUmpOOUZWd0pa
|
||||||
|
bFJGZVVObzhNdEx5ZWFlWkdaOUZrS3cKLS0tIGdqV2FaNVNJM2Z0TUV3VklodDM3
|
||||||
|
SDQ5d2p4SnB4REdTbWRRZjYxVURqNkUK3wcPruP459YHsffOw8vWHNlOleUA0Iv5
|
||||||
|
/370YCc4uA3wp8YyLvotGsjn65IWlaZ1R9wUEiQTNa3wvChBYmtLVg==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
- recipient: age1zhxul786an743u0fascv4wtc5xduu7qfy803lfs539yzhgmlq5ds2lznt5
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYTW04bUZrMFMxVTdkbDNk
|
||||||
|
Z2dWTTgrUERRT243NkZtTmY1ZkFjQ0w5bVJBCnh6cmM0Z2hwcVRyL3R0YXdSbzRa
|
||||||
|
cFc5MmowbVhTMTZTZzFsK3ZpNXdxN1EKLS0tIERxYzN4S0dsYi9mU1UvVzRNZGZw
|
||||||
|
TXlrR3FKWlJLQ0NpWDdQVEo0aHFNZWsK1lUGm0uye00S07JYBPGvIZtdNFuknZv3
|
||||||
|
bViaCBUH8GKV7w+sWtnBoQlaD1F8rpoVd+l4SIW0pouEYdze4u/v9Q==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
- recipient: age1sqs7urnzsdy64efmd0zukzv3gs5pnjksuxd7nqmdwdy5l0nqnunq6hyune
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0RVFKdjNDMURPVHY0eFc1
|
||||||
|
c0JUbk93RlppNjg5ZTlIMEdmRWI5Q3prWlh3CjdTNXk0YUtFeWtuNkkxVGpndVBu
|
||||||
|
WTIrdFh0QThQWkJTc1llSWN0OUtzWVEKLS0tIHF1NytpSUtnQ2xoSUlMR3NIdytV
|
||||||
|
WWE5WUVPVXVwMW9QY0F4RUo4K1JJSzgKu8KUfNcYkVPTIIy+AsqmbNsRwhe2OVH+
|
||||||
|
iTBo4DixGc4XFsflBYxTmu212DE8/Mr2spqZpa4brfbblF4JAmak6A==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2026-05-24T04:34:10Z"
|
||||||
|
mac: ENC[AES256_GCM,data:FUX4TsCKt41KnV1Cgo2E6ucL558fVgH0pEEoITM/5g3Pj4cMKPHIalzqt3U12pBbxzNpuQm+HIwcwx8jktsmWnb9KaSxNLSfnhf7RlyxVOS+S17yTV6O89/lyTqub9Z2tybLeEeGSTbghPrCEgNb4d2NswPYXW/rZawpvgQlc84=,iv:I+NJ0t3n9x3gA/3s0PgRMX4AI/3X8M89UqN+QKAxfoM=,tag:6X+LT5FyfL7xZUSUiz3lpw==,type:str]
|
||||||
|
pgp:
|
||||||
|
- created_at: "2026-05-23T17:17:16Z"
|
||||||
|
enc: |-
|
||||||
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
|
hQIMA0av/duuklWYAQ/+ISNrWiNzl986g1c2S8x65xCWuJ8ntbb9k0nm56/Ve1TI
|
||||||
|
5bkkovKFUFCBUrcVEoRPA+uVDdnd/KWkwF6BX3me8jkhe9ogXNvNJh7FVWiPa70U
|
||||||
|
nxt0wL2TGDdj0RD2gneqTEsN3GtuwNw3gUcdRBg03vG9rmmNa3eWvVmwk/XNZ7J+
|
||||||
|
7LEyG21tLicB5ZPBYiGLznsQPbGvLg+FguCRngvjmz0IgvpNkNpylmlkkc6pmHka
|
||||||
|
T5UAekNgBY0H6H22T1xmD5O4/ZVsmyETHc+6TJn4jIS2fENVtfApbwJuF5B+x+Xf
|
||||||
|
fNIx8soxYOBLjN9CdPXWw+/nAuCQVnsOYxUVcHBoNvQ3KDm8c6R4Yv8B+gndpvUN
|
||||||
|
eRo3XQTGNCX2mvEdRHDlvJjMHgmP3a8qBsFVdKnS/7138HKO4dyIX8Ca+9gWvEmz
|
||||||
|
UGdTXtYjRl8Wxp+8mePAsR6OaDGLqRfyIveCsSAJiwsQDaVqnVElXUZBp93QySxq
|
||||||
|
RPY8yNrVayiw3lPLe2Q0iHJLfpUEqvIGz0WjfqCkfhMXb93lrjTywsvMRf6ocZOY
|
||||||
|
Xb4paiRlKsJo9a6ZvyH+vuIXv75SUVtdzWs7P998TGo/C8+0Tf/dVgvGB/UfnB0p
|
||||||
|
JkGndpicaJ98Xb+vTrE+/MNpMD0hBzWIbsKs6c50Hfml7Xjb8ngewuKAqXpvdE/S
|
||||||
|
XAEl1l+gnC44ekV0CBWbyWXcsBHopt4plVC1VIH4CgsnHz5xPxTfrrJCTWAvTDpI
|
||||||
|
arHX/6qD+QOMXpT4/W37WxIyTEICBUEGtn6gMbb1xU96WJ3zqp7EYjxO/IOU
|
||||||
|
=Mkw8
|
||||||
|
-----END PGP MESSAGE-----
|
||||||
|
fp: F7D37890228A907440E1FD4846B9228E814A2AAC
|
||||||
|
unencrypted_suffix: _unencrypted
|
||||||
|
version: 3.12.2
|
||||||
@@ -9,90 +9,90 @@ keys:
|
|||||||
postgres_exporter_knakelibrak_env: ENC[AES256_GCM,data:xjC7DGXrW2GIJq8XioIZb+jSe/Hzcz0tv9cUHmX/n1nhI+D64lYt+EKnq1+RX/vJzU4sTaKjveKBh88Qqnv6RQm+MZC//dIxcvnnAdl50qnHZyBCaFFEzSNI8I8vGyArMk8Ja72clBq3kMpUz/pLBP0qDrjblKDoWkU=,iv:ZW98hJy8A5t4Oxtu17R3tM7gou183VLbgBsHA8LFuJY=,tag:VMOvQz3X/XDylV1YFg2Jsg==,type:str]
|
postgres_exporter_knakelibrak_env: ENC[AES256_GCM,data:xjC7DGXrW2GIJq8XioIZb+jSe/Hzcz0tv9cUHmX/n1nhI+D64lYt+EKnq1+RX/vJzU4sTaKjveKBh88Qqnv6RQm+MZC//dIxcvnnAdl50qnHZyBCaFFEzSNI8I8vGyArMk8Ja72clBq3kMpUz/pLBP0qDrjblKDoWkU=,iv:ZW98hJy8A5t4Oxtu17R3tM7gou183VLbgBsHA8LFuJY=,tag:VMOvQz3X/XDylV1YFg2Jsg==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
- recipient: age1x28hmzvuv6f2n66c0jtqcca3h9rput8d7j5uek6jcpx8n9egd52sqpejq0
|
- recipient: age102e6y8gah0ntr6fxqnkpepc8ar29p6ls7ks9ka7v8w87q8scm9yqmc2u8d
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBIRm5XY3kydDJSRUYrcmRk
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyTWRSM3IwMmxtTmZVcCsw
|
||||||
K21WUEZSSEpYOHFrVkFyOVJYYnRUSU1aYkV3CkVEUllvUm0wZjlmOFU0VSt3OStL
|
OUhlakxHZzgrSEhEdUZFTXE1anNjQ2wvdkZFCnB6S1l3TXQ3ZGFYWmtYM1cwMFZT
|
||||||
Tmdkc3JHRWplS3lnQWlkT3ROVkxkVUEKLS0tIFRJRkFEeE15Q3A1Z24wQzNlbUx1
|
V2UrTkk0Z1BVQ1U2N1hsaTc5NjFsVUEKLS0tIGZYV041M01DYndQWUNCVGxUVXZa
|
||||||
a2tmd21zSWUzbmw5NDdSRUVDcmVwbHcKn+DJ1PnlQApX8fwJoN9DtMqeKzoih6Hr
|
YlltQ3FBU3RBYUx4TnNPRk1SUWNqZG8KAJjc09x553ncaWduGLsnIHdroaOmMasP
|
||||||
sSh2z6rsTj1UmXocbBm1SduattqZFjvO5XGpp25mM9ZBlpcnVjB/hg==
|
/fq0GzW6UNfmE2rQ6qrQti21B37/sN0WMLCSPLUPG45kBgx20GG4hQ==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1ug30gg4y7ftuya0wdv7q0vh4egn00wlv2th7mt7cgc2ze46wmvyq9lq6ge
|
- recipient: age1ug30gg4y7ftuya0wdv7q0vh4egn00wlv2th7mt7cgc2ze46wmvyq9lq6ge
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVaEdlWnJCdHVpM0ZHTlJj
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTOWFvcFFzc1lmNVdmV3lX
|
||||||
WmNrQnIxYmxmWlJ4Z29WKytHd1plUURPSDBFCnBHU1MyMS9FNnRCMmJ6Ymd4UWcr
|
cVVLNHowcGdENzI5UUJLZTNSMHhjNlI2c0FnCmdwOS9oL1kwTnhwbXRodWxxWVE3
|
||||||
RGV6QmhrbDFObDM1MW1NdTdDU3ZIVU0KLS0tIEtBR01OOVdITExFcUN1dHEyaklD
|
TEtzVmMyN0lkdDBPNzhSR0J6SVhwM3MKLS0tIHhSOFA2TEdMdEd5TlpJb3h0N2xr
|
||||||
TVFnZXRva3FUZjcxYlRuQnpFTDhpZzQKxZM0ZB6dVwFr5QkT6YmEA+3RhhsX0pl4
|
eDVwd2dKMG9FRW1OY1pyUkhLeWw3b0EKtJpsQ/Ss39ZLiRNqUhn8sdB3hpQy7Syv
|
||||||
SolLZXFal1BluDERtZ2Clb5VzrcV3PUfFo8Yx6ncFjcisyFXUHVnYg==
|
ererqhMkqmDugGEHPk6KpZuj7DVSK1di7JgA2qZOUPzI7UpxjaC0Kg==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1mrnldl334l2nszuta6ywvewng0fswv2dz9l5g4qcwe3nj4yxf92qjskdx6
|
- recipient: age1mrnldl334l2nszuta6ywvewng0fswv2dz9l5g4qcwe3nj4yxf92qjskdx6
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvYmNZSTBrUzg5d3NPSHhM
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOQU1iVXRkQmo4b3F1Vngz
|
||||||
Z2s4KzlVZldKVitmL3RFNHFiQnJlcmlCS3k0CkZ4YlBvbW1DTzEzRTZMUVBOWDNT
|
S0pkNkVFR1FUb1djdmI0eHh3V3BBTDJTSTJZClA0S0Z0cTdFRmRaOEZQdHQzdGZ3
|
||||||
SHQwcTBQL0NQbXA3WHVZcFhjZW5ZeE0KLS0tIHU2TVErZ0I0dGRuTGIzZkVoeDJC
|
SC9HRkF3eHQ3MHh6VUFiTW1MZmZoQ2sKLS0tIGlXcWtCczBuOXZBTE9IcVQ1aFJz
|
||||||
MHJkcXlGdFN2Y1p4Q08rT0phODlLOVEKhSEO8hUZ0d3SA1tFvXN2HuZR35SRzhUq
|
REdjRFZyY2pNdEd6cmgvQisyVDhLUEkKRItJ0CGbzlEB5RNAyem4feMVhTfcLef3
|
||||||
+J3eN/qUBu0LcuiBq+qbGYIAHggXy9ZSGCGfrNw35czzGpzfbK/fwQ==
|
QIqltZ2l4LLexnkECi3FCJZHxrbUa+/RF6p1DsueUw7LLUnOcphB9A==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1hmpdk4h69wxpwqk9tkud39f66hprhehxtzhgw97r6dvr7v0mx5jscsuhkn
|
- recipient: age1hmpdk4h69wxpwqk9tkud39f66hprhehxtzhgw97r6dvr7v0mx5jscsuhkn
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhdDBxd3J5MWZ0R1IwVWRw
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvZTBpaWM0c1hmODBaK0Iw
|
||||||
cklOOENFM2R4Q01JdFd2cDZCQ2pSTGNucmhrClgra0tCSGdqZExLbWNoaDZkSzJD
|
bmp1NzRacklXMHU0K2J2d0g5ajBiNlRNWGhRCm1DOWI0cm5BdTdlNmFzM2JVekNk
|
||||||
aDc3YXdOZi9jMDdwc1duTWdKbEdUVDgKLS0tIGxKbTYzRnAyRVlwbUxGS3JySFJS
|
U0VnQmJKMU9ZczZBN0o3czAxOXc4TkkKLS0tIDA1aFRsS3VHdmFtUDY3S25qK01p
|
||||||
VXNrSldhMDV4V2preEJ3ZDk5UlZ1YzgK8K2R4LETFFKpUZVdofJoE6eXw/tlz3+9
|
U0ZCT2toZ1ZMZ3E0bXRhSTQvNGFWNVkKhxfQDIDe2LQW7OMBJv0J267AW1wI32df
|
||||||
k0iXQX6zMj1uSDmenjztU04FIfRxzIur5xifd8hCJnWmxlOCFDqLag==
|
ZQxd657TEqzm7i19azrCS0jyRbfj2MYzEJAtTGiGZaNC9uKDFzBhKw==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1wrssr4z4g6vl3fd3qme5cewchmmhm0j2xe6wf2meu4r6ycn37anse98mfs
|
- recipient: age1wrssr4z4g6vl3fd3qme5cewchmmhm0j2xe6wf2meu4r6ycn37anse98mfs
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPc2dCdGNSeWo4RkovV1Vn
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmRlJROHRKb21YUnlicmc1
|
||||||
ckRYYW1xZldjVDRuSjM4elQyRVFROWduL1QwCmNSVzk3aG90MHNWZWlzVDg5RE55
|
MlptQllEcXFhajNKS1krMDdUMWk5QWo4eVJBCndGSlhXS1Vaa2RSTllIcmF1ZVpl
|
||||||
L3JKODZlMDJudTZYNGVNQldaNEhPcjQKLS0tIE41dDYxWE84Wk9XbG9iMUhpMHBu
|
V28wUGpPVE04Q3VPdzFYdlNpdXBPWHMKLS0tIGJLNStURVJ2NkZKNHVURXh3SjBL
|
||||||
VlJZM1VMYkRkQXNlSVVoT3RYZXRaRU0KqqIjxe05oO67IUt/LMIYsUAaZw1qQFNv
|
TE41aFdjU0h0ekQ2Zjg4Z3VQVjFWcnMK6zjSalqeYjyc4NH6nOeghlhYJydrz4pM
|
||||||
mmVu5GvHdpSrp3PttxlZC7OiP84Jzj7zM/idj0wBIeVCWedWO59aKQ==
|
N5ZcXjRbrIVFdhbYnvQGKvGKZm0kK6vjzBjdT7BM6ctr8cq/qrz1xQ==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1zhxul786an743u0fascv4wtc5xduu7qfy803lfs539yzhgmlq5ds2lznt5
|
- recipient: age1zhxul786an743u0fascv4wtc5xduu7qfy803lfs539yzhgmlq5ds2lznt5
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHL3RId3Q4SGJkYjM5STJu
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBIRXpBa2tYc2xEeldub0VK
|
||||||
ZU9BbkgxaXdva3g5ek1hZUF5YWcvZHI5c0VRClhLazhueTRLU2N0T2c2REllT0R1
|
bkFwOFdlUGRZM0FVT0tyUW1RWnl0TjRUTUh3CnZlMC92MU1hRW1yZU1NSUdoUEZh
|
||||||
LzFrdDdiVVhLQ3BPdkwvVTg1RjdscG8KLS0tIHRYTmg4NFF2c2FpVHphUFdqWmhH
|
YmhHN3pjd0lhOXk3KzFqRVhaU2IvWFUKLS0tIGxVRGNmZmd1QS9sc0NMVFZMNGVB
|
||||||
TFNhSDNUMEo0Z05mbmlwRUs5VHhUWHMKJUCyLDJx2voDttv4UrpFKYyNz+HhtyFj
|
aXFQWlNVQ2laVm1ETStRemNZRXc3TUEKlPYSU3gp67dsPfbEJkru4ieMvspC7+pu
|
||||||
X3OrNbmJQYuNpq4hzQs7jN5UD/4YCtFi9mb5pmFr8MTHLb6UsZN++A==
|
rfp315HLyj1FGhrA8f2qOxE/PYI2rn0yKm80KffWBV7ylX/uonm4Fg==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1sqs7urnzsdy64efmd0zukzv3gs5pnjksuxd7nqmdwdy5l0nqnunq6hyune
|
- recipient: age1sqs7urnzsdy64efmd0zukzv3gs5pnjksuxd7nqmdwdy5l0nqnunq6hyune
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKNzZ4Y2U2NXpXWHA3Y3Zw
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsaTEzOFBEeG9LVThSVmQ5
|
||||||
S1BKbTNXaGxRaE55QkZNSFV6b3VURFBXWlEwCmpJUjM3VVJRc0dwdjFLOGdQQTlz
|
VXBoaFpueFRCbFJ1akE4RWc1aE1HUmVGcXdZCjFnbU0wd2drazNsTmNBMHNuOFhO
|
||||||
a0hVUC9tSXNDQ3NyTnlnVlNNalFOZmcKLS0tIFNXYThsRHd2eUQyOGtVT1RLaTdR
|
b21MZmNPSVNDU2RycEtXTys1V3BVVVEKLS0tIG5oc0VoTXlzeVh3b2NjcFl6WE9U
|
||||||
RmlST2JZS2gwbDBpZ2xMblpWNzB5ZWcKTkKF9aonrBMolxqcj9a5d9JLoCj229KU
|
dC9meDZlc3d3aUJEVjc4REF0Y1BLcGcK79LbJzc5KVgEgyJR11crGuX8YcVoJBbT
|
||||||
It2KjhlzBcgcJUIiIPWMoV9VbEpKkTsCLkWxFSLle++ryOUYh3kgaA==
|
Fin7Zoon06L7qx0Zw5u27wV7RKMnYT7hOMiWs6660ZTLcYJ5M1aEZQ==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2025-03-16T20:08:18Z"
|
lastmodified: "2025-03-16T20:08:18Z"
|
||||||
mac: ENC[AES256_GCM,data:C2tpWppc13jKJq5d4nmAKQOaNWHm27TKwxAxm1fi2lejN1lqUaoz5bHfTBA7MfaWvuP5uZnfbtG32eeu48mnlWpo58XRUFFecAhb9JUpW9s5IR3/nbzLNkGU7H5C0oWPrxI4thd+bAVduIgBjjFyGj1pe6J9db3c0yUWRwNlwGU=,iv:YpoQ4psiFYOWLGipxv1QvRvr034XFsyn2Bhyy39HmOo=,tag:ByiCWygFC/VokVTbdLoLgg==,type:str]
|
mac: ENC[AES256_GCM,data:C2tpWppc13jKJq5d4nmAKQOaNWHm27TKwxAxm1fi2lejN1lqUaoz5bHfTBA7MfaWvuP5uZnfbtG32eeu48mnlWpo58XRUFFecAhb9JUpW9s5IR3/nbzLNkGU7H5C0oWPrxI4thd+bAVduIgBjjFyGj1pe6J9db3c0yUWRwNlwGU=,iv:YpoQ4psiFYOWLGipxv1QvRvr034XFsyn2Bhyy39HmOo=,tag:ByiCWygFC/VokVTbdLoLgg==,type:str]
|
||||||
pgp:
|
pgp:
|
||||||
- created_at: "2026-01-16T06:34:50Z"
|
- created_at: "2026-05-20T17:35:58Z"
|
||||||
enc: |-
|
enc: |-
|
||||||
-----BEGIN PGP MESSAGE-----
|
-----BEGIN PGP MESSAGE-----
|
||||||
|
|
||||||
hQIMA0av/duuklWYARAAgrn0irD12kqDfIEvpLpa0Ys/hMG9GwCMeU186iFfJ193
|
hQIMA0av/duuklWYAQ/+ONarLX0spY0m0iLGEp4Qe9YcfKrf4G0QLbiYMW8Bko7M
|
||||||
72UVEzx2GwIfSt0qQlpBFZtueL9Bb7ka81IrqhAepq8J5//WxEGvv6H9aIm8V7ov
|
iV5PSn4MeDlu5vIkNy1vbYqN2kCQZJDNtirtVqggoq+h/lEvXlkgmkJXeMnnVugy
|
||||||
ZkS4eZpFksu0ZRFP5HWQvEQwRKj8WxYQY/TS/5QGNSPeHOZYnpQcBhAVLjn9Uj/O
|
xJZCG1SnGnx9BD/tWaFZp4IY9m8sQtEqcpQIvitQTCgovdWPb7NddlDaHbn4R95t
|
||||||
6ojnIVoKxDdo235fuDQdiLwCpPXsKi2OQuSFOwq7Acg/fm1pvc76h9dqr5DqrspZ
|
SeTZxnxT2MCYiGHyESMrdy8JEFER81O4XIGuccBV4GyoDcEAxDD7PXf7Y5YlwUQk
|
||||||
c3stdbYwVOedgYjRrdSYpkplGSqNeVtYYJ3apdauMSRNaKmgMwbkxkzXO9YrWASa
|
/sQ3awgsy1WJF4YzQ4zCvK8dO4meiD6asEijQEXNTyrXrkkIX6pS14l9HLzg8HLT
|
||||||
beYilvhNgr0rnQB617IhgBZrgik9CvqrqGZqim0fWI+s4bcbgfvK8UORt4+QgJjO
|
ZLelRyCYeIGEPyEJtbBKxMEu28SAmCMESCdLImqz3RnT0Z6QV1Z+DqAPck3aij2v
|
||||||
FPqAtVE6sNGzElKQ6ZZPWZoXeK7vfIfxwxU+oLcijAnUmLy88zqIUjUZKzmyhDZa
|
VCeJZgK7tmjuusThzi0ymSb0tC14JS7eK/BNGIvVK/41TlzI0qBeA1yYf8Fdtsqt
|
||||||
YAAwxBL1nh+UzIbn4GGeVbYHLbKJ6XnznF7zfTWph6GbeFfdWuaSwxmnGjE6n1y2
|
7OGfCR7aUdBn7yweGuo9L9eHRFiJvoB9tNiPnw7rdr/SrptL0ovsML7m1nvg6mO1
|
||||||
ye3GQaW2aeq7RKoqyLJO3oIHyGHZXFe4pB4adz60uKNPJz47/gtA5OofNs0qbxqQ
|
os1JCL5E6u7d6cGbqaTmjwKLhvNuI1keJoVGtlOYt95tfEAwWeuG2ML6wJ6u6oJ4
|
||||||
Dp5fmrvZZtDa/TYIV9o1bSp7cYk49TGKHPbX7tLjEIIfRxd4y6rYgwNpPdukjZsk
|
WAw/g5Tqb4jeLpcgw8iclhK5JzAL9Uz3G95VXkS6CcTrOfQfvIJHxs5JtsxFC98l
|
||||||
bbdxypWrJkMx+9xk84DGo3e+RY738JgLjc0ylDO+pIzThUruBOcDjUKeGNmVQYnS
|
xMgnMY4SNQ6sHAHZ+6Wku8X+lnZ0uKZkYlRqpH95/VTp+I6QpuqydIOeZ+ILn+jS
|
||||||
XAGofG3JSI97wFdYOB+4yoYPqs5rovgPbkGGuT5SBIxH5zVv3X+SE4wCGu3CLFC4
|
XAHa6CahC07yA93g8kgTeMhI3ezqOQD0gYnY3QROX5kKVD/bNu3JwNTprO5b/kRK
|
||||||
A4cdwXmuERPxszVZW+V8CSGq9XnH/OzrpiWVhzqXCRH03F2BmnAx9Fp/zMTH
|
2Ehg8D0wdaJ9OM+pShGyf6CK5wVBvSq2VQHKxjEIifi62RYtUvnf+sx/ob9h
|
||||||
=DooK
|
=9nB8
|
||||||
-----END PGP MESSAGE-----
|
-----END PGP MESSAGE-----
|
||||||
fp: F7D37890228A907440E1FD4846B9228E814A2AAC
|
fp: F7D37890228A907440E1FD4846B9228E814A2AAC
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
|
|||||||
@@ -1,93 +0,0 @@
|
|||||||
dibbler:
|
|
||||||
postgresql:
|
|
||||||
password: ENC[AES256_GCM,data:2n85TO709GJc7/qoYp2RXO8Ttfo=,iv:5ZCZPEQQXPGYfDd1qPhDwDfm1Gds1M8PEX9IiCsHcrw=,tag:PAseyFBAe56pLj5Uv8Jd7A==,type:str]
|
|
||||||
sops:
|
|
||||||
age:
|
|
||||||
- recipient: age1lpkju2e053aaddpgsr4ef83epclf4c9tp4m98d35ft2fswr8p4tq2ua0mf
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNdjk1L1N4QU5SK3pjTit6
|
|
||||||
V0hIZHhyOW9Rc2xWdE9yN0tmMG93V0IzZzA4Ck5OSUlRTE5mVGZtMTl3NDh1QzA2
|
|
||||||
Uk9RVnRENmVnQUZuQUVSeGxBS0VaK2sKLS0tIHRHbUUzcmlQbW0weXU0eWJKVmVT
|
|
||||||
ZUxJKzV3UDVVSW11SHRrWGxOSmgrZk0KyWxjEmCvNhiZfgXfObQfQ5riscy0mLFn
|
|
||||||
3pslIN7fbxgxnEVyAhl9FOUS65GrmWrrhvN0pkIpgMw1cqtCrZHxyw==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1ug30gg4y7ftuya0wdv7q0vh4egn00wlv2th7mt7cgc2ze46wmvyq9lq6ge
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoVFh2WC9iVHpURDBzckdB
|
|
||||||
UjVGcHkyR3V6VHVMbXc4c21ob1lSMDRWeW44ClgzRXhLY2RYN2hleDNLWHoyeXVm
|
|
||||||
T2xJMlNZMml2NGZDNmlQWGp6RXJRQ1EKLS0tIGNmK0lGdjRLM3l4S3JVazZ0MkFU
|
|
||||||
SzZOMFNvcGZRcjJsU242cnZ4NU9OZmcKxlRdhZlXP4KQBHFLFt195H5R33hLuQ0O
|
|
||||||
bVHtQk00IZmMPq4R4aOc0WMkuJxcFaLi0YDQigcFtReSvWDhTHns7A==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1mrnldl334l2nszuta6ywvewng0fswv2dz9l5g4qcwe3nj4yxf92qjskdx6
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBua0cvc21qeFp4d1NZZ0Vw
|
|
||||||
aWhldXVjUm1wSmJPdnpZV1JvTVowSWw4RVU0CngzUWkrcXA1TkpZN1M4QVBCS0pX
|
|
||||||
Z0w5aURoQU9Xck1RckNsRTlGeWk2N2cKLS0tIFlSdG05V2l6eStURDJVTXEzc0Zh
|
|
||||||
U2tFemF1djFGeVFQYWg5NjFhdW13Vm8K/QztsuBUcmJNBta3R7uYHGzqKOCRus3s
|
|
||||||
bFd2AOC0PNqvAe8e5q2XYf87MUt/U6AaFjroaDpoC3IUI2+qLJDXDA==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1hmpdk4h69wxpwqk9tkud39f66hprhehxtzhgw97r6dvr7v0mx5jscsuhkn
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkcUVib2tsd3lNS0VmOGNS
|
|
||||||
WWR6NDE5RWw3bStqVjRtdWFSM1E2QUp2cEg0Cm0zdjE3eVpUS3M1L241akM3cyta
|
|
||||||
WGVFVGtQVnQ1d2U1QVRSYXE1YUYrTU0KLS0tIGRTK29EdzVka3hmaFIrSnVUQ1c5
|
|
||||||
c0YxcWZIRHRxZEVjVk9MckJMVisyS28KGH6+9IXIBeXrrZ3AoL3zU1v6EA5TNwN5
|
|
||||||
8DgPO9+yfVesZiEJ0MNhs6tXAA4ODInpU1CUdsjKWRA6/QXBbmEUQw==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1wrssr4z4g6vl3fd3qme5cewchmmhm0j2xe6wf2meu4r6ycn37anse98mfs
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLS0RnMDNOZzBIZzF4VG1R
|
|
||||||
T083bXFOdE1JSzl0SE1SUGlxdnFFQVluWVgwCnRLMThOSU45RTRFMVZybm9YV01n
|
|
||||||
K1pCMThGUFhMMzZhUEszRlZlK2FoQXcKLS0tIHdJRGw4aEU5UkgrU3ZEZXl4bDhi
|
|
||||||
dCtIVkdSWmg1dGNzNmhjZDBiWUJVWkEKSZySabmhM3HDXdduzFGAbOPR6m1CjwWb
|
|
||||||
ttMA9hTvl+T/UqYjxSHj8hmsyTfDY7a4sfHaFcMBJMJrjuEllm/L9g==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1zhxul786an743u0fascv4wtc5xduu7qfy803lfs539yzhgmlq5ds2lznt5
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBEYmF6cm5xUHVKMWw3MHJD
|
|
||||||
cWsvZTNWUjRZNDQxbFdDWGh5dUpCc2lGTTNjCm1uV0FCVEgxOG5WbXJUdXlkYTZW
|
|
||||||
KzFzaDNma3RJWEtlUmFHNGxNVUFKN28KLS0tIFFCSi82Q3EvV01UeHg4bG96K1Jm
|
|
||||||
S2JrZlcwcGsrTzdFTDlHcktJd0hmUVUKt0W/8r+L1m25kHKbh5RcweKbl4JB5xqX
|
|
||||||
DYUhUW1Rh1EI63CgVzriz4HZjuNGiuqG9cFv72wIg9Hl2lBPpkC4LQ==
|
|
||||||
-----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-----
|
|
||||||
lastmodified: "2026-01-25T14:03:57Z"
|
|
||||||
mac: ENC[AES256_GCM,data:RBf3LjVNSclsPN7I4QPaDUjWbKlaccjk3rzsRNdRe3+OvJSd7MsS9RfpUFCqUtO7ZkkocXHmkHA8z8LNxs6vejT9czMsLLQD14qHZS6fFdTnToOx3Kt5UuviPO/2UryVI+6HWORkH1aqFJhzkSMop2TO5mzuOTfbCEBLYUUuS6s=,iv:NQs8O1hIbjzGBTZo+gCuisj3edraFGk/Y146HmfPmQY=,tag:4g9IXw2UFC5V9EIHuWJqdA==,type:str]
|
|
||||||
pgp:
|
|
||||||
- created_at: "2026-02-07T21:15:24Z"
|
|
||||||
enc: |-
|
|
||||||
-----BEGIN PGP MESSAGE-----
|
|
||||||
|
|
||||||
hQIMA0av/duuklWYARAAsIJXQn91VrFoSuu0ppgC79T2juR6mA7H5Z2NSGypbild
|
|
||||||
BsNPlWy+q8rpctGkria2Jm37Wz8Qu+sUNQ8Y2w6Z8Bv+M5tks62wc7qBjJkcZKmw
|
|
||||||
IjumrbsEmKQsZKS2YzGFcTjuwpBTGnACAMjUTz1rqnRcaq4U8Wqfi+mmf81yRSnR
|
|
||||||
F0emN015EmGCAUQYD6YRFMAw0PGbP3HiQrXQxdmv8zObbCg9d3+ZozurqFO2RmB4
|
|
||||||
SeZIUEtxgVDuMsr87AmHgbCr8Ux9eZmHU0qv+ejgbnXE7/MaUbppa1gy3RdcwHqG
|
|
||||||
DaETVa6YLUQqP9GOuTVy4gVr3AHtaGwMYRz30gjgQuoGUlQOG1U38PRtqe/94iHF
|
|
||||||
1lo14e31BSfHTnv66vupvWdfDXZme/1rOBJw0lM8Q+wHHJrr3mKmiLus85bJsMD7
|
|
||||||
M4Cn+5n3lE4kSrup8Y5fOsYSwq1WM9GYUfkVR+x2eHNmNdXLVHS0No6kA2TpKeqg
|
|
||||||
zbTyL59i+VBPfANCPehVYxFv7JM9pTFYQXDzMEAJcFerWBmB70HUoYXPZxeDEpiC
|
|
||||||
6seUT9lXM733QGbxwZLXRhXX4sDhJ7rMQJOvrxSvVDhiJx+Arqhz5srM8FlQHdjG
|
|
||||||
kfC507phCarRqXoef55G4trYjrr3zf+sWHRnPuh1IdFch3U+2CMrBUZIRU+C1nXS
|
|
||||||
XgHnubHvfLECTWfeEZUQvZaTtio1K3NSWqv/KBivBBRMfNI20A5erQXnocCYXB7o
|
|
||||||
RYisThHMQomNI7bT8vbf5/N/xlqEra5par0SDX16jl4FuU6dgKRuQ3SrpzFjQTA=
|
|
||||||
=ySHN
|
|
||||||
-----END PGP MESSAGE-----
|
|
||||||
fp: F7D37890228A907440E1FD4846B9228E814A2AAC
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.11.0
|
|
||||||
@@ -22,12 +22,12 @@ pkgs.mkShell {
|
|||||||
stdenv.cc
|
stdenv.cc
|
||||||
unzip
|
unzip
|
||||||
util-linux
|
util-linux
|
||||||
xorg.libX11
|
libX11
|
||||||
xorg.libXext
|
libXext
|
||||||
xorg.libXi
|
libXi
|
||||||
xorg.libXmu
|
libXmu
|
||||||
xorg.libXrandr
|
libXrandr
|
||||||
xorg.libXv
|
libXv
|
||||||
zlib
|
zlib
|
||||||
|
|
||||||
cudatoolkit
|
cudatoolkit
|
||||||
|
|||||||
@@ -176,26 +176,6 @@ in {
|
|||||||
interfaces.ens18.network = "pvv";
|
interfaces.ens18.network = "pvv";
|
||||||
};
|
};
|
||||||
|
|
||||||
nodes.ustetind = {
|
|
||||||
guestType = "proxmox LXC";
|
|
||||||
parent = config.nodes.powerpuff-cluster.id;
|
|
||||||
|
|
||||||
# TODO: the interface name is likely wrong
|
|
||||||
# interfaceGroups = [ [ "eth0" ] ];
|
|
||||||
interfaces.eth0 = {
|
|
||||||
network = "pvv";
|
|
||||||
# mac = "";
|
|
||||||
addresses = [
|
|
||||||
"129.241.210.234"
|
|
||||||
"2001:700:300:1900::234"
|
|
||||||
];
|
|
||||||
gateways = [
|
|
||||||
values.hosts.gateway
|
|
||||||
values.hosts.gateway6
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
### PVV
|
### PVV
|
||||||
|
|
||||||
nodes.ntnu-veggen = mkRouter "NTNU-Veggen" {
|
nodes.ntnu-veggen = mkRouter "NTNU-Veggen" {
|
||||||
@@ -228,7 +208,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" "enp2s0")
|
||||||
(mkConnection "homeassistant" "eth0")
|
(mkConnection "homeassistant" "eth0")
|
||||||
(mkConnection "orchid" "eth0")
|
(mkConnection "orchid" "eth0")
|
||||||
(mkConnection "principal" "em0")
|
(mkConnection "principal" "em0")
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
users.users.alfhj = {
|
|
||||||
isNormalUser = true;
|
|
||||||
extraGroups = [ "wheel" ];
|
|
||||||
shell = if config.programs.zsh.enable then pkgs.zsh else pkgs.bash;
|
|
||||||
openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMCAYE0U3sFizm/NSbKCs0jEhZ1mpAWPcijFevejiFL1 alfhj"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
users.users.amalieem = {
|
|
||||||
isNormalUser = true;
|
|
||||||
extraGroups = [ "wheel" ];
|
|
||||||
shell = if config.programs.zsh.enable then pkgs.zsh else pkgs.bash;
|
|
||||||
openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPsMtFIj4Dem/onwMoWYbosOcU4y7A5nTjVwqWaU33E1 amalieem@matey-aug22"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
30
values.nix
30
values.nix
@@ -37,10 +37,10 @@ in rec {
|
|||||||
ipv6 = pvv-ipv6 168;
|
ipv6 = pvv-ipv6 168;
|
||||||
};
|
};
|
||||||
ildkule = {
|
ildkule = {
|
||||||
ipv4 = "129.241.153.213";
|
ipv4 = "129.241.100.145";
|
||||||
ipv4_internal = "192.168.12.209";
|
ipv4_internal = "192.168.1.17";
|
||||||
ipv4_internal_gw = "192.168.12.1";
|
ipv4_internal_gw = "192.168.1.1";
|
||||||
ipv6 = "2001:700:300:6026:f816:3eff:fe58:f1e8";
|
ipv6 = "2001:700:305:8a0f:f816:3eff:fef5:e400";
|
||||||
};
|
};
|
||||||
bicep = {
|
bicep = {
|
||||||
ipv4 = pvv-ipv4 209;
|
ipv4 = pvv-ipv4 209;
|
||||||
@@ -73,14 +73,6 @@ in rec {
|
|||||||
ipv4 = pvv-ipv4 233;
|
ipv4 = pvv-ipv4 233;
|
||||||
ipv6 = pvv-ipv6 "4:233";
|
ipv6 = pvv-ipv6 "4:233";
|
||||||
};
|
};
|
||||||
ustetind = {
|
|
||||||
ipv4 = pvv-ipv4 234;
|
|
||||||
ipv6 = pvv-ipv6 234;
|
|
||||||
};
|
|
||||||
skrott = {
|
|
||||||
ipv4 = pvv-ipv4 235;
|
|
||||||
ipv6 = pvv-ipv6 235;
|
|
||||||
};
|
|
||||||
skrot = {
|
skrot = {
|
||||||
ipv4 = pvv-ipv4 237;
|
ipv4 = pvv-ipv4 237;
|
||||||
ipv6 = pvv-ipv6 237;
|
ipv6 = pvv-ipv6 237;
|
||||||
@@ -90,10 +82,10 @@ in rec {
|
|||||||
ipv6 = pvv-ipv6 167;
|
ipv6 = pvv-ipv6 167;
|
||||||
};
|
};
|
||||||
gluttony = {
|
gluttony = {
|
||||||
ipv4 = "129.241.100.118";
|
ipv4 = "129.241.100.37";
|
||||||
ipv4_internal = "192.168.20.77";
|
ipv4_internal = "192.168.1.219";
|
||||||
ipv4_internal_gw = "192.168.20.1";
|
ipv4_internal_gw = "192.168.1.1";
|
||||||
ipv6 = "2001:700:305:aa07::3b3";
|
ipv6 = "2001:700:305:8a0f:f816:3eff:fe9b:7a46";
|
||||||
};
|
};
|
||||||
wenche = {
|
wenche = {
|
||||||
ipv4 = pvv-ipv4 240;
|
ipv4 = pvv-ipv4 240;
|
||||||
@@ -122,9 +114,9 @@ in rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
defaultNetworkConfig = {
|
defaultNetworkConfig = {
|
||||||
dns = [ "129.241.0.200" "129.241.0.201" "2001:700:300:1900::200" "2001:700:300:1900::201" ];
|
dns = ["129.241.0.200" "129.241.0.201" "2001:700:300:1900::200" "2001:700:300:1900::201"];
|
||||||
domains = [ "pvv.ntnu.no" "pvv.org" ];
|
domains = ["pvv.ntnu.no" "pvv.org"];
|
||||||
gateway = [ hosts.gateway hosts.gateway6 ];
|
gateway = [hosts.gateway hosts.gateway6];
|
||||||
|
|
||||||
networkConfig.IPv6AcceptRA = "no";
|
networkConfig.IPv6AcceptRA = "no";
|
||||||
DHCP = "no";
|
DHCP = "no";
|
||||||
|
|||||||
Reference in New Issue
Block a user