1
0

591 Commits

Author SHA1 Message Date
Flake Update Bot
1f1a79a614 Update from updated-inputs-2025-03-22-02-03 2025-03-22 03:03:07 +01:00
Flake Update Bot
3d66c50392 Update nixpkgs 2025-03-22-02-03 2025-03-22 03:03:05 +01:00
Flake Update Bot
7a1c166995 Update from updated-inputs-2025-03-21-02-03 2025-03-21 03:04:05 +01:00
Flake Update Bot
b9dd198835 Update nixpkgs 2025-03-21-02-03 2025-03-21 03:04:03 +01:00
Flake Update Bot
8b4d68626a Update from updated-inputs-2025-03-20-02-03 2025-03-20 03:04:08 +01:00
Flake Update Bot
a32e30bb73 Update nixpkgs 2025-03-20-02-03 2025-03-20 03:04:06 +01:00
Flake Update Bot
19bcdce837 Update from updated-inputs-2025-03-19-02-03 2025-03-19 03:03:07 +01:00
Flake Update Bot
8535c24d36 Update from updated-inputs-2025-03-17-02-03 2025-03-17 03:04:02 +01:00
Flake Update Bot
24623e1a75 Update from updated-inputs-2025-03-14-02-03 2025-03-14 03:04:24 +01:00
Flake Update Bot
0be63b0982 Update nixpkgs 2025-03-14-02-03 2025-03-14 03:04:22 +01:00
Flake Update Bot
06c34775b4 Update from updated-inputs-2025-03-13-02-03 2025-03-13 03:03:08 +01:00
Flake Update Bot
27e58ff4a1 Update nixpkgs 2025-03-13-02-03 2025-03-13 03:03:06 +01:00
Flake Update Bot
e741cc4a2c Update from updated-inputs-2025-03-11-02-03 2025-03-11 03:04:16 +01:00
Flake Update Bot
fdf1d4206a Update nixpkgs 2025-03-11-02-03 2025-03-11 03:04:13 +01:00
Flake Update Bot
0f81261ddf Update from updated-inputs-2025-03-09-02-03 2025-03-09 03:04:32 +01:00
Flake Update Bot
3dc7cb33b9 Update nixpkgs 2025-03-09-02-03 2025-03-09 03:04:29 +01:00
Flake Update Bot
b9d6ce1aa7 Update from updated-inputs-2025-03-08-02-03 2025-03-08 03:04:20 +01:00
Flake Update Bot
05fd86d004 Update nixpkgs 2025-03-08-02-03 2025-03-08 03:04:18 +01:00
Flake Update Bot
bba9712842 Update from updated-inputs-2025-03-07-02-03 2025-03-07 03:04:21 +01:00
Flake Update Bot
ccda80b746 Update nixpkgs 2025-03-07-02-03 2025-03-07 03:04:18 +01:00
Flake Update Bot
05c4f429ec Update from updated-inputs-2025-03-04-02-03 2025-03-04 03:04:16 +01:00
Flake Update Bot
a1302a5cc4 Update nixpkgs 2025-03-04-02-03 2025-03-04 03:04:14 +01:00
Flake Update Bot
a89b7dba45 Update from updated-inputs-2025-03-03-02-03 2025-03-03 03:04:14 +01:00
Flake Update Bot
928dbffb1e Update nixpkgs 2025-03-03-02-03 2025-03-03 03:04:12 +01:00
Flake Update Bot
e4d893545f Update from updated-inputs-2025-03-01-02-03 2025-03-01 03:04:24 +01:00
Flake Update Bot
50c9176084 Update nixpkgs 2025-03-01-02-03 2025-03-01 03:04:22 +01:00
Flake Update Bot
87044e7267 Update from updated-inputs-2025-02-28-02-03 2025-02-28 03:04:18 +01:00
Flake Update Bot
215bd79bb6 Update nixpkgs 2025-02-28-02-03 2025-02-28 03:04:16 +01:00
Flake Update Bot
3a3504ec0f Update from updated-inputs-2025-02-26-02-03 2025-02-26 03:03:08 +01:00
Flake Update Bot
1f40cc9008 Update nixpkgs 2025-02-26-02-03 2025-02-26 03:03:06 +01:00
Flake Update Bot
0f075be374 Update from updated-inputs-2025-02-25-02-03 2025-02-25 03:04:20 +01:00
Flake Update Bot
6ce6126b01 Update nixpkgs 2025-02-25-02-03 2025-02-25 03:04:17 +01:00
Flake Update Bot
8c37d5c17a Update from updated-inputs-2025-02-24-02-03 2025-02-24 03:04:14 +01:00
Flake Update Bot
00f446d5b6 Update nixpkgs 2025-02-24-02-03 2025-02-24 03:04:12 +01:00
Flake Update Bot
801e8de895 Update from updated-inputs-2025-02-22-02-03 2025-02-22 03:03:08 +01:00
Flake Update Bot
142fd8aaa0 Update from updated-inputs-2025-02-21-02-03 2025-02-21 03:03:08 +01:00
Flake Update Bot
e42947e389 Update nixpkgs 2025-02-21-02-03 2025-02-21 03:03:06 +01:00
Flake Update Bot
2a49030f0f Update from updated-inputs-2025-02-20-02-03 2025-02-20 03:04:22 +01:00
Flake Update Bot
02c2492e46 Update nixpkgs 2025-02-20-02-03 2025-02-20 03:04:20 +01:00
Flake Update Bot
a8bd50b7ae Update from updated-inputs-2025-02-18-02-03 2025-02-18 03:04:17 +01:00
Flake Update Bot
c7ab6e80e4 Update nixpkgs 2025-02-18-02-03 2025-02-18 03:04:14 +01:00
Flake Update Bot
f91326122e Update from updated-inputs-2025-02-17-02-03 2025-02-17 03:04:17 +01:00
Flake Update Bot
6188cec90d Update nixpkgs 2025-02-17-02-03 2025-02-17 03:04:15 +01:00
Flake Update Bot
790cd52cd9 Update from updated-inputs-2025-02-15-02-03 2025-02-15 03:03:08 +01:00
Flake Update Bot
36fbfac843 Update nixpkgs 2025-02-15-02-03 2025-02-15 03:03:06 +01:00
Flake Update Bot
bb0ba232c7 Update from updated-inputs-2025-02-14-02-03 2025-02-14 03:04:20 +01:00
Flake Update Bot
b54aac0160 Update nixpkgs 2025-02-14-02-03 2025-02-14 03:04:18 +01:00
Flake Update Bot
dbabae3fc6 Update from updated-inputs-2025-02-12-02-03 2025-02-12 03:04:13 +01:00
Flake Update Bot
d47fd59762 Update nixpkgs 2025-02-12-02-03 2025-02-12 03:04:10 +01:00
Flake Update Bot
21930d74c2 Update from updated-inputs-2025-02-09-02-03 2025-02-09 03:04:24 +01:00
Flake Update Bot
79c9a9c485 Update nixpkgs 2025-02-09-02-03 2025-02-09 03:04:21 +01:00
Flake Update Bot
6027d0a3d3 Update from updated-inputs-2025-02-08-02-03 2025-02-08 03:04:17 +01:00
Flake Update Bot
5811137ca6 Update nixpkgs 2025-02-08-02-03 2025-02-08 03:04:15 +01:00
Flake Update Bot
0903fc233e Update from updated-inputs-2025-02-06-02-03 2025-02-06 03:03:08 +01:00
Flake Update Bot
7ca9ee8d4e Update nixpkgs 2025-02-06-02-03 2025-02-06 03:03:06 +01:00
Flake Update Bot
4be4197f90 Update from updated-inputs-2025-02-05-02-03 2025-02-05 03:04:09 +01:00
Flake Update Bot
738feee47c Update nixpkgs 2025-02-05-02-03 2025-02-05 03:04:07 +01:00
Flake Update Bot
36f71846f6 Update from updated-inputs-2025-02-02-02-03 2025-02-02 03:04:13 +01:00
Flake Update Bot
67e0549eeb Update nixpkgs 2025-02-02-02-03 2025-02-02 03:04:11 +01:00
Flake Update Bot
65fe780680 Update from updated-inputs-2025-02-01-02-03 2025-02-01 03:03:08 +01:00
Flake Update Bot
542adc2e78 Update nixpkgs 2025-02-01-02-03 2025-02-01 03:03:06 +01:00
Flake Update Bot
3481ea614b Update from updated-inputs-2025-01-30-02-03 2025-01-30 03:04:07 +01:00
Flake Update Bot
388eb69d34 Update nixpkgs 2025-01-30-02-03 2025-01-30 03:04:05 +01:00
Flake Update Bot
d6fb216188 Update from updated-inputs-2025-01-27-02-03 2025-01-27 03:04:06 +01:00
Flake Update Bot
300bea150b Update nixpkgs 2025-01-27-02-03 2025-01-27 03:04:03 +01:00
Flake Update Bot
224a87d879 Update from updated-inputs-2025-01-26-02-03 2025-01-26 03:04:07 +01:00
Flake Update Bot
e65d414063 Update nixpkgs 2025-01-26-02-03 2025-01-26 03:04:05 +01:00
Flake Update Bot
b8c278444f Update from updated-inputs-2025-01-25-02-03 2025-01-25 03:04:11 +01:00
Flake Update Bot
945efd84f6 Update nixpkgs 2025-01-25-02-03 2025-01-25 03:04:09 +01:00
Flake Update Bot
ac3eb3f6e2 Update from updated-inputs-2025-01-23-02-03 2025-01-23 03:04:07 +01:00
Flake Update Bot
6580b40825 Update nixpkgs 2025-01-23-02-03 2025-01-23 03:04:04 +01:00
Flake Update Bot
adde2b1cfa Update from updated-inputs-2025-01-22-02-03 2025-01-22 03:03:08 +01:00
Flake Update Bot
d4d594cc5e Update nixpkgs 2025-01-22-02-03 2025-01-22 03:03:06 +01:00
Flake Update Bot
4f4e49e277 Update from updated-inputs-2025-01-18-02-03 2025-01-18 03:04:54 +01:00
Flake Update Bot
30f2175fc6 Update nixpkgs 2025-01-18-02-03 2025-01-18 03:04:51 +01:00
Flake Update Bot
b1dcf04097 Update from updated-inputs-2025-01-17-02-03 2025-01-17 03:03:20 +01:00
Flake Update Bot
a9226977dd Update nixpkgs 2025-01-17-02-03 2025-01-17 03:03:17 +01:00
Flake Update Bot
dfdf0c3da2 Update from updated-inputs-2025-01-16-02-03 2025-01-16 03:04:18 +01:00
Flake Update Bot
f4e31212ab Update nixpkgs 2025-01-16-02-03 2025-01-16 03:04:16 +01:00
Flake Update Bot
6d8e91b1e1 Update from updated-inputs-2025-01-15-02-03 2025-01-15 03:04:13 +01:00
Flake Update Bot
4456b98039 Update nixpkgs 2025-01-15-02-03 2025-01-15 03:04:11 +01:00
Flake Update Bot
5493f5bff0 Update from updated-inputs-2025-01-14-02-03 2025-01-14 03:04:12 +01:00
Flake Update Bot
d8679cda9c Update from updated-inputs-2025-01-13-02-03 2025-01-13 03:04:06 +01:00
Flake Update Bot
4c0d658a1c Update nixpkgs 2025-01-13-02-03 2025-01-13 03:04:04 +01:00
Flake Update Bot
a07489533d Update from updated-inputs-2025-01-12-02-03 2025-01-12 03:03:06 +01:00
Flake Update Bot
baa0ce6174 Update nixpkgs 2025-01-12-02-03 2025-01-12 03:03:04 +01:00
Flake Update Bot
3314c2d291 Update from updated-inputs-2025-01-10-02-03 2025-01-10 03:04:05 +01:00
Flake Update Bot
72d93ffe55 Update nixpkgs 2025-01-10-02-03 2025-01-10 03:04:03 +01:00
Flake Update Bot
ad4e357a31 Update from updated-inputs-2025-01-07-02-03 2025-01-07 03:04:05 +01:00
Flake Update Bot
92209fd597 Update nixpkgs 2025-01-07-02-03 2025-01-07 03:04:03 +01:00
Flake Update Bot
8bfe46aedc Update from updated-inputs-2025-01-06-02-03 2025-01-06 03:04:03 +01:00
Flake Update Bot
40c5ab439c Update nixpkgs 2025-01-06-02-03 2025-01-06 03:04:01 +01:00
Flake Update Bot
20ceed8dae Update from updated-inputs-2025-01-04-02-03 2025-01-04 03:04:58 +01:00
Flake Update Bot
48f950b152 Update nixpkgs 2025-01-04-02-03 2025-01-04 03:04:56 +01:00
Flake Update Bot
522a18f1da Update from updated-inputs-2025-01-02-17-23 2025-01-02 18:23:37 +01:00
Flake Update Bot
60a82f327d Update nixpkgs 2025-01-02-17-23 2025-01-02 18:23:34 +01:00
Flake Update Bot
6d91cf5b86 Update from updated-inputs-2025-01-01-02-03 2025-01-01 03:03:06 +01:00
Flake Update Bot
6aa3688de2 Update nixpkgs 2025-01-01-02-03 2025-01-01 03:03:04 +01:00
Flake Update Bot
fae43288b5 Update from updated-inputs-2024-12-31-02-03 2024-12-31 03:04:08 +01:00
Flake Update Bot
3528b4f463 Update nixpkgs 2024-12-31-02-03 2024-12-31 03:04:06 +01:00
Flake Update Bot
f03808cd54 Update from updated-inputs-2024-12-28-02-03 2024-12-28 03:04:10 +01:00
Flake Update Bot
5acb2e4dfd Update nixpkgs 2024-12-28-02-03 2024-12-28 03:04:08 +01:00
Flake Update Bot
d34334f5da Update from updated-inputs-2024-12-23-02-03 2024-12-23 03:04:01 +01:00
Flake Update Bot
7be9c7b1eb Update nixpkgs 2024-12-23-02-03 2024-12-23 03:03:59 +01:00
Flake Update Bot
1f2f75c194 Update from updated-inputs-2024-12-19-02-03 2024-12-19 03:04:07 +01:00
Flake Update Bot
2ed461c335 Update nixpkgs 2024-12-19-02-03 2024-12-19 03:04:05 +01:00
Flake Update Bot
e4df775b1f Update from updated-inputs-2024-12-18-02-03 2024-12-18 03:03:05 +01:00
Flake Update Bot
1572e65b53 Update nixpkgs 2024-12-18-02-03 2024-12-18 03:03:03 +01:00
Flake Update Bot
f0a948a034 Update from updated-inputs-2024-12-17-02-03 2024-12-17 03:03:05 +01:00
Flake Update Bot
69358ecbe0 Update nixpkgs 2024-12-17-02-03 2024-12-17 03:03:03 +01:00
Flake Update Bot
d7c9a50d90 Update from updated-inputs-2024-12-16-02-03 2024-12-16 03:04:00 +01:00
Flake Update Bot
f3dd12cedf Update nixpkgs 2024-12-16-02-03 2024-12-16 03:03:57 +01:00
Flake Update Bot
eb8bc89e41 Update from updated-inputs-2024-12-14-02-03 2024-12-14 03:04:09 +01:00
Flake Update Bot
6c6305948c Update nixpkgs 2024-12-14-02-03 2024-12-14 03:04:06 +01:00
Flake Update Bot
576c3f91c2 Update from updated-inputs-2024-12-11-02-03 2024-12-11 03:04:06 +01:00
Flake Update Bot
1225b14178 Update nixpkgs 2024-12-11-02-03 2024-12-11 03:04:04 +01:00
Flake Update Bot
1354d60199 Update from updated-inputs-2024-12-10-02-03 2024-12-10 03:03:05 +01:00
Flake Update Bot
d307c72f3c Update nixpkgs 2024-12-10-02-03 2024-12-10 03:03:03 +01:00
Flake Update Bot
9a69d50076 Update from updated-inputs-2024-12-09-02-03 2024-12-09 03:04:04 +01:00
Flake Update Bot
7140403dfe Update nixpkgs 2024-12-09-02-03 2024-12-09 03:04:02 +01:00
Flake Update Bot
8bdb9b8f17 Update from updated-inputs-2024-12-07-02-03 2024-12-07 03:04:03 +01:00
Flake Update Bot
b875145185 Update nixpkgs 2024-12-07-02-03 2024-12-07 03:04:01 +01:00
Flake Update Bot
359d09df8c Update from updated-inputs-2024-12-04-02-03 2024-12-04 03:04:02 +01:00
Flake Update Bot
60e468c385 Update nixpkgs 2024-12-04-02-03 2024-12-04 03:04:00 +01:00
Flake Update Bot
baf3e26c07 Update from updated-inputs-2024-12-03-02-03 2024-12-03 03:04:00 +01:00
Flake Update Bot
a3d9f374af Update nixpkgs 2024-12-03-02-03 2024-12-03 03:03:58 +01:00
Flake Update Bot
c4d768aae4 Update from updated-inputs-2024-12-02-02-03 2024-12-02 03:04:01 +01:00
Flake Update Bot
18df56c1a8 Update nixpkgs 2024-12-02-02-03 2024-12-02 03:03:59 +01:00
Flake Update Bot
e2fb4684e2 Update from updated-inputs-2024-12-01-02-03 2024-12-01 03:04:06 +01:00
Flake Update Bot
a216a299ab Update nixpkgs 2024-12-01-02-03 2024-12-01 03:04:04 +01:00
Flake Update Bot
f2d49e763a Update from updated-inputs-2024-11-30-02-03 2024-11-30 03:03:05 +01:00
Flake Update Bot
af57dc2787 Update from updated-inputs-2024-11-27-02-03 2024-11-27 03:04:07 +01:00
Flake Update Bot
fd7c98216c Update from updated-inputs-2024-11-25-02-03 2024-11-25 03:04:01 +01:00
Flake Update Bot
7bcb078848 Update nixpkgs 2024-11-25-02-03 2024-11-25 03:03:59 +01:00
Flake Update Bot
f2bd8ef2a5 Update from updated-inputs-2024-11-24-02-03 2024-11-24 03:03:05 +01:00
Flake Update Bot
ec964956f3 Update nixpkgs 2024-11-24-02-03 2024-11-24 03:03:03 +01:00
Flake Update Bot
00cf922de1 Update from updated-inputs-2024-11-23-02-03 2024-11-23 03:03:05 +01:00
Flake Update Bot
ed16fe723d Update nixpkgs 2024-11-23-02-03 2024-11-23 03:03:03 +01:00
Flake Update Bot
b933d7b7b7 Update from updated-inputs-2024-11-22-02-03 2024-11-22 03:03:05 +01:00
Flake Update Bot
f8e3e03987 Update nixpkgs 2024-11-22-02-03 2024-11-22 03:03:03 +01:00
Flake Update Bot
a168a18199 Update from updated-inputs-2024-11-21-02-03 2024-11-21 03:04:04 +01:00
Flake Update Bot
1ec5017c2b Update nixpkgs 2024-11-21-02-03 2024-11-21 03:04:02 +01:00
Flake Update Bot
1e23635ccd Update from updated-inputs-2024-11-17-02-03 2024-11-17 03:04:08 +01:00
Flake Update Bot
822fdcb42e Update nixpkgs 2024-11-17-02-03 2024-11-17 03:04:06 +01:00
Flake Update Bot
fbdf478170 Update from updated-inputs-2024-11-15-02-03 2024-11-15 03:04:01 +01:00
Flake Update Bot
6857e12778 Update nixpkgs 2024-11-15-02-03 2024-11-15 03:03:59 +01:00
Flake Update Bot
d2ae13ec56 Update from updated-inputs-2024-11-13-02-03 2024-11-13 03:03:05 +01:00
Flake Update Bot
1644650c17 Update nixpkgs 2024-11-13-02-03 2024-11-13 03:03:03 +01:00
Flake Update Bot
e31044b74d Update from updated-inputs-2024-11-11-02-03 2024-11-11 03:03:59 +01:00
Flake Update Bot
ff3228414b Update nixpkgs 2024-11-11-02-03 2024-11-11 03:03:57 +01:00
Flake Update Bot
2feeb28f60 Update from updated-inputs-2024-11-07-02-03 2024-11-07 03:04:03 +01:00
Flake Update Bot
a0730b4606 Update nixpkgs 2024-11-07-02-03 2024-11-07 03:04:01 +01:00
Flake Update Bot
da8e3c64a4 Update from updated-inputs-2024-11-04-02-03 2024-11-04 03:03:59 +01:00
Flake Update Bot
c3ad0e1276 Update nixpkgs 2024-11-04-02-03 2024-11-04 03:03:57 +01:00
Flake Update Bot
65970c187f Update from updated-inputs-2024-11-01-02-03 2024-11-01 03:04:05 +01:00
Flake Update Bot
4ccc9acde1 Update nixpkgs 2024-11-01-02-03 2024-11-01 03:03:58 +01:00
Flake Update Bot
d93054696d Update from updated-inputs-2024-10-28-02-03 2024-10-28 03:03:55 +01:00
Flake Update Bot
f96220ef89 Update nixpkgs 2024-10-28-02-03 2024-10-28 03:03:53 +01:00
Flake Update Bot
e1ae756928 Update from updated-inputs-2024-10-26-01-03 2024-10-26 03:03:05 +02:00
Flake Update Bot
092a4cc277 Update nixpkgs 2024-10-26-01-03 2024-10-26 03:03:03 +02:00
Flake Update Bot
2a9486fcfc Update from updated-inputs-2024-10-25-01-03 2024-10-25 03:04:00 +02:00
Flake Update Bot
74a67811d7 Update nixpkgs 2024-10-25-01-03 2024-10-25 03:03:58 +02:00
Flake Update Bot
181394b8c9 Update from updated-inputs-2024-10-23-01-03 2024-10-23 03:04:10 +02:00
Flake Update Bot
6dab743d79 Update nixpkgs 2024-10-23-01-03 2024-10-23 03:04:07 +02:00
Flake Update Bot
c3e1bf4a95 Update from updated-inputs-2024-10-20-01-03 2024-10-20 03:04:11 +02:00
Flake Update Bot
889e6dc10c Update nixpkgs 2024-10-20-01-03 2024-10-20 03:04:09 +02:00
Flake Update Bot
3a00159650 Update from updated-inputs-2024-10-19-01-03 2024-10-19 03:04:13 +02:00
Flake Update Bot
6a707c6db6 Update nixpkgs 2024-10-19-01-03 2024-10-19 03:04:10 +02:00
Flake Update Bot
d2fb61bae0 Update from updated-inputs-2024-10-16-01-03 2024-10-16 03:04:07 +02:00
Flake Update Bot
37c6c9bed4 Update nixpkgs 2024-10-16-01-03 2024-10-16 03:04:05 +02:00
Flake Update Bot
abac22a420 Update from updated-inputs-2024-10-11-01-03 2024-10-11 03:04:09 +02:00
Flake Update Bot
c1fca4ef50 Update nixpkgs 2024-10-11-01-03 2024-10-11 03:04:07 +02:00
Flake Update Bot
f7887c6266 Update from updated-inputs-2024-10-09-01-03 2024-10-09 03:04:07 +02:00
Flake Update Bot
4f6af63ce6 Update nixpkgs 2024-10-09-01-03 2024-10-09 03:04:05 +02:00
Flake Update Bot
b436b170b1 Update from updated-inputs-2024-10-06-01-03 2024-10-06 03:04:16 +02:00
Flake Update Bot
0c9d6812d9 Update nixpkgs 2024-10-06-01-03 2024-10-06 03:04:14 +02:00
Flake Update Bot
c9fa4477fa Update from updated-inputs-2024-10-03-01-03 2024-10-03 03:04:10 +02:00
Flake Update Bot
bb8bca6a6a Update nixpkgs 2024-10-03-01-03 2024-10-03 03:04:08 +02:00
Flake Update Bot
ac36104e91 Update from updated-inputs-2024-10-01-01-03 2024-10-01 03:04:14 +02:00
Flake Update Bot
062a21cdd3 Update nixpkgs 2024-10-01-01-03 2024-10-01 03:04:12 +02:00
Flake Update Bot
c4d0e86c50 Update from updated-inputs-2024-09-28-01-03 2024-09-28 03:04:12 +02:00
Flake Update Bot
3793ae083e Update nixpkgs 2024-09-28-01-03 2024-09-28 03:04:10 +02:00
Flake Update Bot
5e76c539e3 Update from updated-inputs-2024-09-27-01-03 2024-09-27 03:04:19 +02:00
Flake Update Bot
b92508049b Update nixpkgs 2024-09-27-01-03 2024-09-27 03:04:16 +02:00
Flake Update Bot
67ae5b60b4 Update from updated-inputs-2024-09-24-01-03 2024-09-24 03:04:08 +02:00
Flake Update Bot
711c8238ae Update nixpkgs 2024-09-24-01-03 2024-09-24 03:04:06 +02:00
Flake Update Bot
ee9cee0210 Update from updated-inputs-2024-09-21-01-03 2024-09-21 03:04:14 +02:00
Flake Update Bot
3a9c6c9586 Update nixpkgs 2024-09-21-01-03 2024-09-21 03:04:12 +02:00
Flake Update Bot
4482772797 Update from updated-inputs-2024-09-18-01-03 2024-09-18 03:04:04 +02:00
Flake Update Bot
d1f52b3882 Update nixpkgs 2024-09-18-01-03 2024-09-18 03:04:02 +02:00
Flake Update Bot
cb3f7ea152 Update from updated-inputs-2024-09-17-01-03 2024-09-17 03:03:05 +02:00
Flake Update Bot
37ce9ac44a Update nixpkgs 2024-09-17-01-03 2024-09-17 03:03:03 +02:00
Flake Update Bot
a362ea66da Update from updated-inputs-2024-09-16-01-03 2024-09-16 03:04:04 +02:00
Flake Update Bot
8a0fcf0386 Update nixpkgs 2024-09-16-01-03 2024-09-16 03:04:02 +02:00
Flake Update Bot
1ba8e57b36 Update from updated-inputs-2024-09-14-01-03 2024-09-14 03:04:11 +02:00
Flake Update Bot
3acc745a2d Update nixpkgs 2024-09-14-01-03 2024-09-14 03:04:09 +02:00
Flake Update Bot
fe6464c7b1 Update from updated-inputs-2024-09-13-01-03 2024-09-13 03:03:05 +02:00
Flake Update Bot
c8c8c14422 Update from updated-inputs-2024-09-12-01-03 2024-09-12 03:04:07 +02:00
Flake Update Bot
de0ce4d58f Update nixpkgs 2024-09-12-01-03 2024-09-12 03:04:05 +02:00
Flake Update Bot
6cccf29a75 Update from updated-inputs-2024-09-08-01-03 2024-09-08 03:04:14 +02:00
Flake Update Bot
cd4a18f2df Update nixpkgs 2024-09-08-01-03 2024-09-08 03:04:12 +02:00
Flake Update Bot
0a95d368e9 Update from updated-inputs-2024-09-06-01-03 2024-09-06 03:04:04 +02:00
Flake Update Bot
78a76b116e Update nixpkgs 2024-09-06-01-03 2024-09-06 03:04:02 +02:00
Flake Update Bot
a9d0694439 Update from updated-inputs-2024-09-02-01-03 2024-09-02 03:03:59 +02:00
Flake Update Bot
882eae2225 Update from updated-inputs-2024-08-30-01-03 2024-08-30 03:04:07 +02:00
Flake Update Bot
99e0209396 Update nixpkgs 2024-08-30-01-03 2024-08-30 03:04:05 +02:00
Flake Update Bot
bd9b6474b7 Update from updated-inputs-2024-08-29-01-03 2024-08-29 03:03:05 +02:00
Flake Update Bot
236a495f83 Update nixpkgs 2024-08-29-01-03 2024-08-29 03:03:03 +02:00
Flake Update Bot
b3ff10b0ba Update from updated-inputs-2024-08-27-01-03 2024-08-27 03:04:13 +02:00
Flake Update Bot
140c0eda49 Update nixpkgs 2024-08-27-01-03 2024-08-27 03:04:11 +02:00
Flake Update Bot
cca8e2cc57 Update from updated-inputs-2024-08-25-01-03 2024-08-25 03:03:05 +02:00
Flake Update Bot
8cc8600c0a Update nixpkgs 2024-08-25-01-03 2024-08-25 03:03:03 +02:00
Flake Update Bot
cbed65a601 Update from updated-inputs-2024-08-24-01-03 2024-08-24 03:03:05 +02:00
Flake Update Bot
1dce42c252 Update nixpkgs 2024-08-24-01-03 2024-08-24 03:03:03 +02:00
Flake Update Bot
1a410dfaa1 Update from updated-inputs-2024-08-23-01-03 2024-08-23 03:04:10 +02:00
Flake Update Bot
4e25034765 Update nixpkgs 2024-08-23-01-03 2024-08-23 03:04:08 +02:00
Flake Update Bot
9af692c19a Update from updated-inputs-2024-08-20-01-03 2024-08-20 03:04:12 +02:00
Flake Update Bot
2f08617058 Update nixpkgs 2024-08-20-01-03 2024-08-20 03:04:09 +02:00
Flake Update Bot
58b8f27cbd Update from updated-inputs-2024-08-16-01-03 2024-08-16 03:04:06 +02:00
Flake Update Bot
f67be8aa8a Update nixpkgs 2024-08-16-01-03 2024-08-16 03:04:04 +02:00
Flake Update Bot
c3ed11df9f Update from updated-inputs-2024-08-14-01-03 2024-08-14 03:04:08 +02:00
Flake Update Bot
02bfbab29b Update nixpkgs 2024-08-14-01-03 2024-08-14 03:04:05 +02:00
Flake Update Bot
91dad776a4 Update from updated-inputs-2024-08-11-01-03 2024-08-11 03:04:14 +02:00
Flake Update Bot
799d654427 Update nixpkgs 2024-08-11-01-03 2024-08-11 03:04:11 +02:00
Flake Update Bot
c7a6eb10de Update from updated-inputs-2024-08-10-01-03 2024-08-10 03:03:05 +02:00
Flake Update Bot
1cd8f11597 Update nixpkgs 2024-08-10-01-03 2024-08-10 03:03:03 +02:00
Flake Update Bot
d1fffe1c99 Update from updated-inputs-2024-08-07-01-03 2024-08-07 03:04:09 +02:00
Flake Update Bot
aae7b95894 Update nixpkgs 2024-08-07-01-03 2024-08-07 03:04:07 +02:00
Flake Update Bot
2b3abf677a Update from updated-inputs-2024-08-06-01-03 2024-08-06 03:03:05 +02:00
Flake Update Bot
a34a1ca997 Update nixpkgs 2024-08-06-01-03 2024-08-06 03:03:03 +02:00
Flake Update Bot
711c2e4ccf Update from updated-inputs-2024-08-05-01-03 2024-08-05 03:03:59 +02:00
Flake Update Bot
93f557a5ec Update nixpkgs 2024-08-05-01-03 2024-08-05 03:03:57 +02:00
Flake Update Bot
d9d501d34c Update from updated-inputs-2024-08-02-01-03 2024-08-02 03:04:09 +02:00
Flake Update Bot
034edf43ed Update from updated-inputs-2024-08-01-01-03 2024-08-01 03:03:05 +02:00
Flake Update Bot
9c17854d0a Update nixpkgs 2024-08-01-01-03 2024-08-01 03:03:03 +02:00
Flake Update Bot
820fa65986 Update from updated-inputs-2024-07-31-01-03 2024-07-31 03:04:05 +02:00
Flake Update Bot
a41ae92b09 Update nixpkgs 2024-07-31-01-03 2024-07-31 03:04:03 +02:00
Flake Update Bot
9f29c59e0b Update from updated-inputs-2024-07-30-01-03 2024-07-30 03:03:05 +02:00
Flake Update Bot
693b92f68f Update nixpkgs 2024-07-30-01-03 2024-07-30 03:03:03 +02:00
Flake Update Bot
aba854931a Update from updated-inputs-2024-07-28-01-03 2024-07-28 03:04:11 +02:00
Flake Update Bot
061be6052f Update nixpkgs 2024-07-28-01-03 2024-07-28 03:04:09 +02:00
Flake Update Bot
1208738a8e Update from updated-inputs-2024-07-27-01-03 2024-07-27 03:04:06 +02:00
Flake Update Bot
9e2d1239a7 Update nixpkgs 2024-07-27-01-03 2024-07-27 03:04:04 +02:00
Flake Update Bot
04f66d4d2c Update from updated-inputs-2024-07-26-01-03 2024-07-26 03:04:09 +02:00
Flake Update Bot
2c813d7475 Update nixpkgs 2024-07-26-01-03 2024-07-26 03:04:07 +02:00
Flake Update Bot
f2bb03bde6 Update from updated-inputs-2024-07-24-01-03 2024-07-24 03:03:05 +02:00
Flake Update Bot
0bf1a7df74 Update nixpkgs 2024-07-24-01-03 2024-07-24 03:03:03 +02:00
Flake Update Bot
7c6842f93c Update from updated-inputs-2024-07-23-01-03 2024-07-23 03:04:03 +02:00
Flake Update Bot
37b403910a Update nixpkgs 2024-07-23-01-03 2024-07-23 03:04:00 +02:00
Flake Update Bot
40b2b4ee36 Update from updated-inputs-2024-07-22-01-03 2024-07-22 03:04:07 +02:00
Flake Update Bot
f1ecf4873e Update nixpkgs 2024-07-22-01-03 2024-07-22 03:04:05 +02:00
Flake Update Bot
4c1c87c828 Update from updated-inputs-2024-07-21-01-03 2024-07-21 03:03:05 +02:00
Flake Update Bot
0f6610ef3c Update nixpkgs 2024-07-21-01-03 2024-07-21 03:03:03 +02:00
Flake Update Bot
b68dae5301 Update from updated-inputs-2024-07-20-01-03 2024-07-20 03:04:59 +02:00
Flake Update Bot
75075a6118 Update nixpkgs 2024-07-20-01-03 2024-07-20 03:04:56 +02:00
Flake Update Bot
73e3e8afff Update from updated-inputs-2024-07-19-01-03 2024-07-19 03:04:08 +02:00
Flake Update Bot
55c5930769 Update nixpkgs 2024-07-19-01-03 2024-07-19 03:04:06 +02:00
Flake Update Bot
98ac891e24 Update from updated-inputs-2024-07-16-01-03 2024-07-16 03:04:00 +02:00
Flake Update Bot
df0ed63fa9 Update from updated-inputs-2024-07-14-01-03 2024-07-14 03:03:05 +02:00
Flake Update Bot
9d63422c8c Update nixpkgs 2024-07-14-01-03 2024-07-14 03:03:03 +02:00
Flake Update Bot
d2824f259e Update from updated-inputs-2024-07-13-23-05 2024-07-14 01:07:12 +02:00
Flake Update Bot
3a3105a58e Update nixpkgs 2024-07-13-23-05 2024-07-14 01:07:09 +02:00
6dabb715dc Update from updated-inputs-2024-07-12-01-03 2024-07-12 03:04:42 +02:00
Flake Update Bot
5d799f9330 Update nixpkgs 2024-07-12-01-03 2024-07-12 03:04:39 +02:00
ff389e7643 Update from updated-inputs-2024-07-09-01-03 2024-07-09 03:03:59 +02:00
Flake Update Bot
cb6c3ff8f4 Update nixpkgs 2024-07-09-01-03 2024-07-09 03:03:57 +02:00
4d439487e0 Update from updated-inputs-2024-07-05-01-03 2024-07-05 03:04:01 +02:00
Flake Update Bot
0077f078aa Update nixpkgs 2024-07-05-01-03 2024-07-05 03:03:59 +02:00
0f800b1751 Update from updated-inputs-2024-07-03-01-03 2024-07-03 03:04:04 +02:00
bf1fa709cf Update from updated-inputs-2024-07-02-01-03 2024-07-02 03:03:59 +02:00
Flake Update Bot
812aeeb0b4 Update nixpkgs 2024-07-02-01-03 2024-07-02 03:03:57 +02:00
4fd2403afc Update from updated-inputs-2024-06-30-01-03 2024-06-30 03:03:57 +02:00
Flake Update Bot
48ce404d41 Update nixpkgs 2024-06-30-01-03 2024-06-30 03:03:55 +02:00
dd6d23f0c8 Update from updated-inputs-2024-06-26-01-03 2024-06-26 03:03:56 +02:00
a70ff1b7e6 Update from updated-inputs-2024-06-24-01-03 2024-06-24 03:03:56 +02:00
Flake Update Bot
44bc74bc94 Update nixpkgs 2024-06-24-01-03 2024-06-24 03:03:54 +02:00
99e40e41c5 Update from updated-inputs-2024-06-23-01-03 2024-06-23 03:03:05 +02:00
Flake Update Bot
d35296e37c Update nixpkgs 2024-06-23-01-03 2024-06-23 03:03:03 +02:00
309a8d2fe7 Update from updated-inputs-2024-06-22-01-03 2024-06-22 03:04:04 +02:00
Flake Update Bot
c2f605d975 Update nixpkgs 2024-06-22-01-03 2024-06-22 03:04:02 +02:00
d256930c54 Update from updated-inputs-2024-06-21-01-03 2024-06-21 03:03:57 +02:00
Flake Update Bot
9a6b2d029c Update nixpkgs 2024-06-21-01-03 2024-06-21 03:03:55 +02:00
70121ea935 Update from updated-inputs-2024-06-18-01-03 2024-06-18 03:04:04 +02:00
Flake Update Bot
9752a0367d Update nixpkgs 2024-06-18-01-03 2024-06-18 03:04:01 +02:00
91c4036a21 Update from updated-inputs-2024-06-15-01-03 2024-06-15 03:03:57 +02:00
Flake Update Bot
1219c9a25e Update nixpkgs 2024-06-15-01-03 2024-06-15 03:03:55 +02:00
b874978ed2 Update from updated-inputs-2024-06-13-01-03 2024-06-13 03:04:02 +02:00
Flake Update Bot
26c29880bf Update nixpkgs 2024-06-13-01-03 2024-06-13 03:04:00 +02:00
98ac65c9be Update from updated-inputs-2024-06-12-01-03 2024-06-12 03:04:35 +02:00
Flake Update Bot
78f9280352 Update nixpkgs 2024-06-12-01-03 2024-06-12 03:04:32 +02:00
324f57fe36 Update from updated-inputs-2024-06-11-01-03 2024-06-11 03:03:04 +02:00
8e47b6466d Update from updated-inputs-2024-06-09-01-03 2024-06-09 03:04:05 +02:00
f703f527b9 Update from updated-inputs-2024-06-07-01-03 2024-06-07 03:04:04 +02:00
Flake Update Bot
4d9e7ca491 Update nixpkgs 2024-06-07-01-03 2024-06-07 03:04:02 +02:00
a84d74d2e8 Update from updated-inputs-2024-06-04-01-03 2024-06-04 03:04:12 +02:00
d94c5d69b2 Update from updated-inputs-2024-05-31-01-03 2024-05-31 03:04:11 +02:00
Flake Update Bot
e07e7c9e31 Update nixpkgs 2024-05-31-01-03 2024-05-31 03:04:08 +02:00
94259096a9 Update from updated-inputs-2024-05-30-01-03 2024-05-30 03:04:09 +02:00
Flake Update Bot
03a0fb87fd Update nixpkgs 2024-05-30-01-03 2024-05-30 03:04:06 +02:00
c86125095a Update from updated-inputs-2024-05-27-01-03 2024-05-27 03:04:09 +02:00
Flake Update Bot
6709c726f1 Update nixpkgs 2024-05-27-01-03 2024-05-27 03:04:07 +02:00
18894e237f Update from updated-inputs-2024-05-26-01-03 2024-05-26 03:04:13 +02:00
Flake Update Bot
69666ec8e4 Update nixpkgs 2024-05-26-01-03 2024-05-26 03:04:10 +02:00
f56762bad1 Update from updated-inputs-2024-05-24-01-03 2024-05-24 03:03:05 +02:00
Flake Update Bot
141e79e0b1 Update nixpkgs 2024-05-24-01-03 2024-05-24 03:03:03 +02:00
386ff0ff18 Update from updated-inputs-2024-05-23-01-03 2024-05-23 03:04:09 +02:00
Flake Update Bot
d6a4efd9e0 Update nixpkgs 2024-05-23-01-03 2024-05-23 03:04:07 +02:00
0c654091bb Update from updated-inputs-2024-05-22-01-03 2024-05-22 03:04:19 +02:00
def2051a98 Update from updated-inputs-2024-05-21-01-03 2024-05-21 03:04:17 +02:00
Flake Update Bot
cca7e36399 Update nixpkgs 2024-05-21-01-03 2024-05-21 03:04:15 +02:00
babca2f046 Update from updated-inputs-2024-05-19-01-03 2024-05-19 03:04:09 +02:00
Flake Update Bot
e687b5d4ef Update nixpkgs 2024-05-19-01-03 2024-05-19 03:04:07 +02:00
f48178a8ce Update from updated-inputs-2024-05-17-01-03 2024-05-17 03:04:12 +02:00
Flake Update Bot
ebc9d51817 Update nixpkgs 2024-05-17-01-03 2024-05-17 03:04:10 +02:00
643d9ff028 Update from updated-inputs-2024-05-14-01-03 2024-05-14 03:04:12 +02:00
Flake Update Bot
d219d97389 Update nixpkgs 2024-05-14-01-03 2024-05-14 03:04:09 +02:00
f16829ad74 Update from updated-inputs-2024-05-13-01-03 2024-05-13 03:04:19 +02:00
Flake Update Bot
dd26377783 Update nixpkgs 2024-05-13-01-03 2024-05-13 03:04:16 +02:00
79f78cbec7 Update from updated-inputs-2024-05-11-01-03 2024-05-11 03:05:07 +02:00
Flake Update Bot
cc0e575c58 Update nixpkgs 2024-05-11-01-03 2024-05-11 03:05:05 +02:00
6a5c340016 Update from updated-inputs-2024-05-09-01-03 2024-05-09 03:04:15 +02:00
Flake Update Bot
934b8d7e49 Update nixpkgs 2024-05-09-01-03 2024-05-09 03:04:13 +02:00
5e2600b8de Update from updated-inputs-2024-05-06-01-03 2024-05-06 03:04:13 +02:00
Flake Update Bot
60ad2f0e7d Update nixpkgs 2024-05-06-01-03 2024-05-06 03:04:11 +02:00
9ccec046d9 Update from updated-inputs-2024-05-05-01-03 2024-05-05 03:03:05 +02:00
Flake Update Bot
793122bdbf Update nixpkgs 2024-05-05-01-03 2024-05-05 03:03:03 +02:00
6a2954b7d8 Update from updated-inputs-2024-05-03-01-03 2024-05-03 03:04:11 +02:00
Flake Update Bot
4639d23f10 Update nixpkgs 2024-05-03-01-03 2024-05-03 03:04:09 +02:00
e7d912ea78 Update from updated-inputs-2024-05-02-01-03 2024-05-02 03:03:05 +02:00
Flake Update Bot
b1fe15f4c9 Update nixpkgs 2024-05-02-01-03 2024-05-02 03:03:03 +02:00
98433cca60 Update from updated-inputs-2024-04-29-01-03 2024-04-29 03:04:11 +02:00
Flake Update Bot
2ac4cfb134 Update nixpkgs 2024-04-29-01-03 2024-04-29 03:04:08 +02:00
7b802253d4 Update from updated-inputs-2024-04-28-08-46 2024-04-28 10:46:39 +02:00
Flake Update Bot
e91b60194c Update nixpkgs 2024-04-28-08-46 2024-04-28 10:46:37 +02:00
4ad23f2410 Update from updated-inputs-2024-04-28-01-03 2024-04-28 03:03:05 +02:00
Flake Update Bot
f47c1ae001 Update nixpkgs 2024-04-28-01-03 2024-04-28 03:03:03 +02:00
4d7dd1c3a6 Update from updated-inputs-2024-04-27-01-03 2024-04-27 03:04:15 +02:00
Flake Update Bot
03de7bdb88 Update nixpkgs 2024-04-27-01-03 2024-04-27 03:04:13 +02:00
4705d84e9c Update from updated-inputs-2024-04-25-01-03 2024-04-25 03:04:12 +02:00
Flake Update Bot
5bb5b7d351 Update nixpkgs 2024-04-25-01-03 2024-04-25 03:04:10 +02:00
c3b8b09919 Update from updated-inputs-2024-04-23-01-03 2024-04-23 03:04:05 +02:00
Flake Update Bot
2faef93c91 Update nixpkgs 2024-04-23-01-03 2024-04-23 03:04:03 +02:00
57548d56c1 Update from updated-inputs-2024-04-22-01-03 2024-04-22 03:04:09 +02:00
Flake Update Bot
da371f50be Update nixpkgs 2024-04-22-01-03 2024-04-22 03:04:07 +02:00
96cd7dc989 Update from updated-inputs-2024-04-21-01-03 2024-04-21 03:04:13 +02:00
Flake Update Bot
04cf2bb039 Update nixpkgs 2024-04-21-01-03 2024-04-21 03:04:10 +02:00
1fa4ddead1 Update from updated-inputs-2024-04-19-01-03 2024-04-19 03:04:12 +02:00
Flake Update Bot
90f29fa1d1 Update nixpkgs 2024-04-19-01-03 2024-04-19 03:04:10 +02:00
2979f07a00 Update from updated-inputs-2024-04-18-01-03 2024-04-18 03:03:05 +02:00
Flake Update Bot
02b2c8f75a Update nixpkgs 2024-04-18-01-03 2024-04-18 03:03:03 +02:00
51e569cf5a Update from updated-inputs-2024-04-17-01-03 2024-04-17 03:04:12 +02:00
Flake Update Bot
d942fd12c7 Update nixpkgs 2024-04-17-01-03 2024-04-17 03:04:10 +02:00
f84b363547 Update from updated-inputs-2024-04-16-01-03 2024-04-16 03:03:05 +02:00
94ef76d3f6 Update from updated-inputs-2024-04-15-01-03 2024-04-15 03:04:07 +02:00
Flake Update Bot
2974b4f18e Update nixpkgs 2024-04-15-01-03 2024-04-15 03:04:05 +02:00
e9f75f73a2 Update from updated-inputs-2024-04-13-01-03 2024-04-13 03:04:05 +02:00
Flake Update Bot
d03525d6a4 Update nixpkgs 2024-04-13-01-03 2024-04-13 03:04:03 +02:00
b6f07ccb3e Update from updated-inputs-2024-04-10-01-03 2024-04-10 03:04:11 +02:00
Flake Update Bot
1549e57971 Update nixpkgs 2024-04-10-01-03 2024-04-10 03:04:09 +02:00
07526cec2c Update from updated-inputs-2024-04-09-01-03 2024-04-09 03:03:05 +02:00
Flake Update Bot
816aa0b86d Update nixpkgs 2024-04-09-01-03 2024-04-09 03:03:03 +02:00
4a20ffc5f1 Update from updated-inputs-2024-04-08-01-03 2024-04-08 03:03:59 +02:00
Flake Update Bot
9f26dc2121 Update nixpkgs 2024-04-08-01-03 2024-04-08 03:03:57 +02:00
3c0e1052f7 Update from updated-inputs-2024-04-05-01-03 2024-04-05 03:04:03 +02:00
Flake Update Bot
243a1f3217 Update nixpkgs 2024-04-05-01-03 2024-04-05 03:04:01 +02:00
2279574ed4 Update from updated-inputs-2024-04-04-01-03 2024-04-04 03:04:03 +02:00
Flake Update Bot
f14ca9ec4d Update nixpkgs 2024-04-04-01-03 2024-04-04 03:04:01 +02:00
6658fe1f59 Update from updated-inputs-2024-04-03-01-03 2024-04-03 03:03:05 +02:00
Flake Update Bot
db4c58f0f9 Update nixpkgs 2024-04-03-01-03 2024-04-03 03:03:03 +02:00
22b95fec3e Update from updated-inputs-2024-03-30-02-03 2024-03-30 03:04:09 +01:00
Flake Update Bot
7d39df3a42 Update nixpkgs 2024-03-30-02-03 2024-03-30 03:04:07 +01:00
f3398f8a4d Update from updated-inputs-2024-03-29-02-03 2024-03-29 03:04:06 +01:00
Flake Update Bot
4d5540b00a Update nixpkgs 2024-03-29-02-03 2024-03-29 03:04:04 +01:00
9cc7389298 Update from updated-inputs-2024-03-28-02-03 2024-03-28 03:03:05 +01:00
Flake Update Bot
b61f1d52cf Update nixpkgs 2024-03-28-02-03 2024-03-28 03:03:03 +01:00
287789bbee Update from updated-inputs-2024-03-27-02-03 2024-03-27 03:04:01 +01:00
Flake Update Bot
4617a4da4c Update nixpkgs 2024-03-27-02-03 2024-03-27 03:03:58 +01:00
78350d0dd8 Update from updated-inputs-2024-03-25-02-03 2024-03-25 03:04:00 +01:00
Flake Update Bot
4506600be0 Update nixpkgs 2024-03-25-02-03 2024-03-25 03:03:58 +01:00
5e788373b1 Update from updated-inputs-2024-03-24-02-03 2024-03-24 03:04:13 +01:00
Flake Update Bot
3e9346f2d3 Update nixpkgs 2024-03-24-02-03 2024-03-24 03:04:11 +01:00
ba874deec5 Update from updated-inputs-2024-03-23-02-03 2024-03-23 03:04:07 +01:00
Flake Update Bot
35fe2f1286 Update nixpkgs 2024-03-23-02-03 2024-03-23 03:04:04 +01:00
dcf94ffb39 Update from updated-inputs-2024-03-20-02-03 2024-03-20 03:04:08 +01:00
Flake Update Bot
3d0de79926 Update nixpkgs 2024-03-20-02-03 2024-03-20 03:04:05 +01:00
5e69eba537 Update from updated-inputs-2024-03-18-02-03 2024-03-18 03:04:10 +01:00
Flake Update Bot
c31b5ca88f Update nixpkgs 2024-03-18-02-03 2024-03-18 03:04:08 +01:00
168dbfe770 Update from updated-inputs-2024-03-17-15-59 2024-03-17 17:00:02 +01:00
Flake Update Bot
b945893d50 Update nixpkgs 2024-03-17-15-59 2024-03-17 17:00:00 +01:00
b045babff4 Update from updated-inputs-2024-03-17-15-55 2024-03-17 16:56:02 +01:00
Flake Update Bot
a9e4cc9760 Update nixpkgs 2024-03-17-15-55 2024-03-17 16:56:01 +01:00
Flake Update Bot
d835f49a60 Update from updated-inputs-2024-03-17-14-40 2024-03-17 15:40:11 +01:00
Flake Update Bot
0a69c32a57 Update nixpkgs 2024-03-17-14-40 2024-03-17 15:40:09 +01:00
Flake Update Bot
2bac86be95 Update from updated-inputs-2024-03-17-14-34 2024-03-17 15:36:45 +01:00
Flake Update Bot
987a65fe2b Update nixpkgs 2024-03-17-14-34 2024-03-17 15:34:55 +01:00
Flake Update Bot
9aff1c7e6d Update from updated-inputs-2024-03-01-22-00 2024-03-01 23:00:51 +01:00
Flake Update Bot
1c7653b2b8 Update nixpkgs 2024-03-01-22-00 2024-03-01 23:00:49 +01:00
Flake Update Bot
5492d89c74 Update from updated-inputs-2024-03-01-21-59 2024-03-01 22:59:31 +01:00
Flake Update Bot
c61ff2bb95 Update nixpkgs 2024-03-01-21-59 2024-03-01 22:59:29 +01:00
Flake Update Bot
b8751b0c54 Update from updated-inputs-2024-03-01-21-56 2024-03-01 22:56:59 +01:00
Flake Update Bot
973d041bbb Update nixpkgs 2024-03-01-21-56 2024-03-01 22:56:57 +01:00
09bba3ab5b Merge branch 'bbb' into updated-inputs 2024-03-01 22:49:50 +01:00
018c05a584 bbb 2024-03-01 22:46:02 +01:00
4f34198671 Merge branch 'aaa' into updated-inputs 2024-03-01 22:44:58 +01:00
50d54f66a2 aaa 2024-03-01 22:44:36 +01:00
Flake Update Bot
60fcff8529 Update from updated-inputs-2024-02-26-19-41 2024-02-26 20:41:25 +01:00
Flake Update Bot
62e3f589aa Update nixpkgs 2024-02-26-19-41 2024-02-26 20:41:23 +01:00
Flake Update Bot
6930d2ab09 Update from updated-inputs-2024-02-26-19-40 2024-02-26 20:40:54 +01:00
Flake Update Bot
e0b7db13e7 Update nixpkgs 2024-02-26-19-40 2024-02-26 20:40:51 +01:00
Flake Update Bot
b95f21d3d8 Update from updated-inputs-2024-02-26-02-03 2024-02-26 03:03:59 +01:00
Flake Update Bot
aaa400c738 Update nixpkgs 2024-02-26-02-03 2024-02-26 03:03:57 +01:00
Flake Update Bot
5673cfc679 Update from updated-inputs-2024-02-25-02-03 2024-02-25 03:03:04 +01:00
Flake Update Bot
5d282b41bc Update nixpkgs 2024-02-25-02-03 2024-02-25 03:03:02 +01:00
Flake Update Bot
329dc12c9e Update from updated-inputs-2024-02-24-02-03 2024-02-24 03:04:41 +01:00
Flake Update Bot
f74aa6f1d8 Update nixpkgs 2024-02-24-02-03 2024-02-24 03:04:39 +01:00
Flake Update Bot
73d669c3fb Update from updated-inputs-2024-02-23-02-03 2024-02-23 03:03:04 +01:00
Flake Update Bot
539e555429 Update nixpkgs 2024-02-23-02-03 2024-02-23 03:03:02 +01:00
Flake Update Bot
90dee7fd3f Update from updated-inputs-2024-02-22-02-03 2024-02-22 03:04:02 +01:00
Flake Update Bot
3a0af4103e Update nixpkgs 2024-02-22-02-03 2024-02-22 03:04:00 +01:00
Flake Update Bot
510545f837 Update from updated-inputs-2024-02-21-02-03 2024-02-21 03:03:04 +01:00
Flake Update Bot
22e3577baf Update nixpkgs 2024-02-21-02-03 2024-02-21 03:03:02 +01:00
Flake Update Bot
b52b2f129d Update from updated-inputs-2024-02-20-02-03 2024-02-20 03:04:10 +01:00
Flake Update Bot
80524f83c3 Update nixpkgs 2024-02-20-02-03 2024-02-20 03:04:08 +01:00
Flake Update Bot
675e0bbfcd Update from updated-inputs-2024-02-19-02-03 2024-02-19 03:03:04 +01:00
Flake Update Bot
a6554dc498 Update from update-inputs-2024-02-18-19-03 2024-02-18 20:04:46 +01:00
Flake Update Bot
e9d4f37d16 Update from update-inputs-2024-02-18-16-57 2024-02-18 17:57:19 +01:00
Flake Update Bot
eaccce56eb Flake update 2024-02-18T02:03+00:00 2024-02-18 03:04:11 +01:00
Flake Update Bot
cfc9b79c33 Update from master 2024-02-18T02:03+00:00 2024-02-18 03:03:02 +01:00
Flake Update Bot
a886581a43 Flake update 2024-02-17T02:03+00:00 2024-02-17 03:03:07 +01:00
Flake Update Bot
35be56e015 Flake update 2024-02-16T02:03+00:00 2024-02-16 03:04:05 +01:00
Flake Update Bot
78477659f4 Flake update 2024-02-15T02:03+00:00 2024-02-15 03:04:07 +01:00
Flake Update Bot
c9c9277cbb Flake update 2024-02-14T02:03+00:00 2024-02-14 03:03:08 +01:00
Flake Update Bot
d715eced4c Update from master 2024-02-14T02:03+00:00 2024-02-14 03:03:02 +01:00
Flake Update Bot
77a844592e Flake update 2024-02-13T02:03+00:00 2024-02-13 03:04:19 +01:00
Flake Update Bot
338d934672 Update from master 2024-02-13T02:03+00:00 2024-02-13 03:03:02 +01:00
Flake Update Bot
13c94f1b66 Flake update 2024-02-12T02:03+00:00 2024-02-12 03:04:03 +01:00
Flake Update Bot
c0a4234c92 Update from master 2024-02-10T02:03+00:00 2024-02-10 03:03:02 +01:00
Flake Update Bot
8ea06d03a3 Flake update 2024-02-09T02:03+00:00 2024-02-09 03:04:01 +01:00
Flake Update Bot
f0271b86c0 Flake update 2024-02-08T02:03+00:00 2024-02-08 03:03:08 +01:00
Flake Update Bot
acaddbfec4 Update from master 2024-02-08T02:03+00:00 2024-02-08 03:03:02 +01:00
Flake Update Bot
a2b942e440 Flake update 2024-02-07T02:03+00:00 2024-02-07 03:04:06 +01:00
Flake Update Bot
0dcf1680f0 Flake update 2024-02-06T02:03+00:00 2024-02-06 03:03:07 +01:00
Flake Update Bot
7ece34bb63 Flake update 2024-02-05T02:03+00:00 2024-02-05 03:04:08 +01:00
Flake Update Bot
3a9b7adc57 Flake update 2024-02-03T02:03+00:00 2024-02-03 03:04:04 +01:00
Flake Update Bot
7b8996e5fb Flake update 2024-02-02T02:03+00:00 2024-02-02 03:03:07 +01:00
Flake Update Bot
3b0be0fc49 Flake update 2024-02-01T02:03+00:00 2024-02-01 03:04:00 +01:00
Flake Update Bot
f868c157c5 Update from master 2024-01-31T02:03+00:00 2024-01-31 03:03:02 +01:00
Flake Update Bot
eb3af3b1f9 Flake update 2024-01-30T02:03+00:00 2024-01-30 03:04:03 +01:00
Flake Update Bot
9881a4f6bd Flake update 2024-01-27T02:03+00:00 2024-01-27 03:03:59 +01:00
Flake Update Bot
b9a6b9a00e Flake update 2024-01-26T02:03+00:00 2024-01-26 03:03:07 +01:00
Flake Update Bot
2c830d1366 Flake update 2024-01-25T02:03+00:00 2024-01-25 03:03:07 +01:00
Flake Update Bot
67ff27ff74 Flake update 2024-01-23T02:03+00:00 2024-01-23 03:04:01 +01:00
Flake Update Bot
a4459b2916 Flake update 2024-01-21T02:03+00:00 2024-01-21 03:04:16 +01:00
Flake Update Bot
88591acdcd Update from master 2024-01-21T02:03+00:00 2024-01-21 03:03:06 +01:00
Flake Update Bot
f53958080a Flake update 2024-01-19T02:03+00:00 2024-01-19 03:04:02 +01:00
Flake Update Bot
d1aee59628 Flake update 2024-01-17T02:03+00:00 2024-01-17 03:04:08 +01:00
Flake Update Bot
f2f7276ab7 Flake update 2024-01-16T02:03+00:00 2024-01-16 03:03:08 +01:00
Flake Update Bot
fa0d5e1c5c Flake update 2024-01-15T02:03+00:00 2024-01-15 03:04:03 +01:00
Flake Update Bot
902ef24b36 Flake update 2024-01-14T02:03+00:00 2024-01-14 03:03:08 +01:00
Flake Update Bot
756a3ae3d8 Update from master 2024-01-14T02:03+00:00 2024-01-14 03:03:02 +01:00
Flake Update Bot
8b4bc5ac54 Flake update 2024-01-11T02:03+00:00 2024-01-11 03:04:04 +01:00
Flake Update Bot
a9023e95b9 Flake update 2024-01-10T02:03+00:00 2024-01-10 03:03:07 +01:00
Flake Update Bot
a5912941e4 Flake update 2024-01-09T02:03+00:00 2024-01-09 03:04:01 +01:00
Flake Update Bot
1d3d2bf7c4 Update from master 2024-01-09T02:03+00:00 2024-01-09 03:03:02 +01:00
Flake Update Bot
8e96b86fcd Flake update 2024-01-08T02:03+00:00 2024-01-08 03:03:59 +01:00
Flake Update Bot
44a7b5b464 Flake update 2024-01-06T02:03+00:00 2024-01-06 03:03:08 +01:00
Flake Update Bot
bc50f2c32c Update from master 2024-01-06T02:03+00:00 2024-01-06 03:03:02 +01:00
Flake Update Bot
baf2cfde5c Flake update 2024-01-04T02:03+00:00 2024-01-04 03:04:00 +01:00
Flake Update Bot
4713220190 Flake update 2024-01-03T02:03+00:00 2024-01-03 03:03:07 +01:00
Flake Update Bot
5dc276e086 Flake update 2024-01-02T02:03+00:00 2024-01-02 03:04:02 +01:00
Flake Update Bot
a26d077e71 Flake update 2024-01-01T02:03+00:00 2024-01-01 03:04:02 +01:00
Flake Update Bot
d491be8423 Flake update 2023-12-31T02:03+00:00 2023-12-31 03:04:06 +01:00
Flake Update Bot
dcf0ad5189 Flake update 2023-12-30T02:03+00:00 2023-12-30 03:03:08 +01:00
Flake Update Bot
857db3d80c Flake update 2023-12-28T02:03+00:00 2023-12-28 03:04:02 +01:00
Flake Update Bot
4cebb488cd Flake update 2023-12-26T02:03+00:00 2023-12-26 03:03:08 +01:00
Flake Update Bot
a78de16242 Flake update 2023-12-25T02:03+00:00 2023-12-25 03:04:09 +01:00
Flake Update Bot
7c6d8e3808 Flake update 2023-12-24T02:03+00:00 2023-12-24 03:03:08 +01:00
Flake Update Bot
1d8683133b Flake update 2023-12-23T02:03+00:00 2023-12-23 03:03:07 +01:00
Flake Update Bot
08a6620631 Flake update 2023-12-21T02:03+00:00 2023-12-21 03:04:10 +01:00
Flake Update Bot
f84cac37ca Update from master 2023-12-21T02:03+00:00 2023-12-21 03:03:02 +01:00
Flake Update Bot
a201969a96 Flake update 2023-12-19T02:03+00:00 2023-12-19 03:04:02 +01:00
Flake Update Bot
dbed794e8c Update from master 2023-12-16T02:03+00:00 2023-12-16 03:03:02 +01:00
Flake Update Bot
2bace31053 Flake update 2023-12-14T02:03+00:00 2023-12-14 03:03:07 +01:00
Flake Update Bot
093d99d72a Flake update 2023-12-13T02:03+00:00 2023-12-13 03:04:14 +01:00
Flake Update Bot
cd9b135d44 Flake update 2023-12-12T02:03+00:00 2023-12-12 03:03:07 +01:00
Flake Update Bot
ba4f6b50cc Flake update 2023-12-11T02:03+00:00 2023-12-11 03:04:12 +01:00
Flake Update Bot
460f31591b Update from master 2023-12-11T02:03+00:00 2023-12-11 03:03:02 +01:00
Flake Update Bot
84ca3f739a Update from master 2023-12-09T02:03+00:00 2023-12-09 03:03:03 +01:00
Flake Update Bot
7550ff62c2 Update from master 2023-12-08T02:03+00:00 2023-12-08 03:03:02 +01:00
Flake Update Bot
49f554a6fd Flake update 2023-12-07T02:03+00:00 2023-12-07 03:04:07 +01:00
Flake Update Bot
c678ac2ca9 Flake update 2023-12-05T02:03+00:00 2023-12-05 03:04:04 +01:00
Flake Update Bot
9fbf607541 Flake update 2023-12-04T02:03+00:00 2023-12-04 03:03:16 +01:00
Flake Update Bot
a24b4930df Update from master 2023-12-04T02:03+00:00 2023-12-04 03:03:06 +01:00
Flake Update Bot
e3ee6f0e75 Flake update 2023-12-02T02:03+00:00 2023-12-02 03:04:16 +01:00
Flake Update Bot
e1c6ffd9a7 Update from master 2023-12-02T02:03+00:00 2023-12-02 03:03:02 +01:00
Flake Update Bot
e73197465f Flake update 2023-11-30T02:03+00:00 2023-11-30 03:03:08 +01:00
Flake Update Bot
442cfc7547 Flake update 2023-11-29T02:03+00:00 2023-11-29 03:04:06 +01:00
Flake Update Bot
e17aa47e60 Flake update 2023-11-27T02:03+00:00 2023-11-27 03:04:04 +01:00
Flake Update Bot
7c219eae2c Flake update 2023-11-26T02:03+00:00 2023-11-26 03:04:05 +01:00
Flake Update Bot
71bc1242ed Flake update 2023-11-24T02:03+00:00 2023-11-24 03:04:04 +01:00
Flake Update Bot
ef0c609128 Update from master 2023-11-24T02:03+00:00 2023-11-24 03:03:02 +01:00
Flake Update Bot
5ca5e7ed81 Flake update 2023-11-23T02:03+00:00 2023-11-23 03:03:08 +01:00
Flake Update Bot
3f268a82f7 Update from master 2023-11-23T02:03+00:00 2023-11-23 03:03:02 +01:00
Flake Update Bot
1b93811df8 Flake update 2023-11-22T02:03+00:00 2023-11-22 03:03:09 +01:00
Flake Update Bot
88d973ac68 Update from master 2023-11-22T02:03+00:00 2023-11-22 03:03:02 +01:00
Flake Update Bot
4f4413f899 Flake update 2023-11-21T02:03+00:00 2023-11-21 03:04:05 +01:00
Flake Update Bot
f7c0f7acd6 Flake update 2023-11-20T02:03+00:00 2023-11-20 03:04:03 +01:00
Flake Update Bot
c4968b9505 Update from master 2023-11-20T02:03+00:00 2023-11-20 03:03:02 +01:00
Flake Update Bot
ff41111279 Flake update 2023-11-19T02:03+00:00 2023-11-19 03:04:07 +01:00
Flake Update Bot
93757fedd0 Flake update 2023-11-17T02:03+00:00 2023-11-17 03:04:06 +01:00
Flake Update Bot
c234beabb2 Flake update 2023-11-16T02:03+00:00 2023-11-16 03:03:08 +01:00
Flake Update Bot
8ce1d547be Flake update 2023-11-15T02:03+00:00 2023-11-15 03:04:04 +01:00
Flake Update Bot
54f8092b74 Flake update 2023-11-14T02:03+00:00 2023-11-14 03:03:07 +01:00
Flake Update Bot
6a90144ed6 Flake update 2023-11-12T02:03+00:00 2023-11-12 03:03:08 +01:00
Flake Update Bot
cc5c0e94e9 Update from master 2023-11-08T02:03+00:00 2023-11-08 03:03:02 +01:00
Flake Update Bot
eaa5c734c8 Flake update 2023-11-06T02:03+00:00 2023-11-06 03:04:07 +01:00
Flake Update Bot
6e391a8c28 Update from master 2023-11-06T02:03+00:00 2023-11-06 03:03:02 +01:00
Flake Update Bot
65b0a20208 Flake update 2023-11-04T02:03+00:00 2023-11-04 03:04:00 +01:00
Flake Update Bot
9ffb4fa661 Flake update 2023-11-02T02:03+00:00 2023-11-02 03:03:08 +01:00
Flake Update Bot
22dd1be6ca Update from master 2023-11-02T02:03+00:00 2023-11-02 03:03:02 +01:00
Flake Update Bot
603a0443ea Flake update 2023-11-01T02:03+00:00 2023-11-01 03:04:02 +01:00
Flake Update Bot
12ea980d63 Flake update 2023-10-28T01:03+00:00 2023-10-28 03:04:00 +02:00
Flake Update Bot
d212eb2163 Flake update 2023-10-26T01:03+00:00 2023-10-26 03:04:00 +02:00
Flake Update Bot
c043eb0617 Update from master 2023-10-26T01:03+00:00 2023-10-26 03:03:01 +02:00
Flake Update Bot
81de5f91ee Flake update 2023-10-24T01:03+00:00 2023-10-24 03:03:07 +02:00
Flake Update Bot
7bdb65e9b5 Update from master 2023-10-23T01:03+00:00 2023-10-23 03:03:02 +02:00
Flake Update Bot
46df9afb0c Update from master 2023-10-22T01:03+00:00 2023-10-22 03:03:02 +02:00
Flake Update Bot
31b1622eb1 Flake update 2023-10-21T01:03+00:00 2023-10-21 03:04:01 +02:00
Flake Update Bot
da10fd9bd3 Update from master 2023-10-21T01:03+00:00 2023-10-21 03:03:02 +02:00
Flake Update Bot
65999c4dfd Flake update 2023-10-20T01:03+00:00 2023-10-20 03:03:08 +02:00
Flake Update Bot
5a006772f6 Flake update 2023-10-18T01:03+00:00 2023-10-18 03:04:01 +02:00
Flake Update Bot
35a205c107 Update from master 2023-10-18T01:03+00:00 2023-10-18 03:03:02 +02:00
Flake Update Bot
e298fac142 Flake update 2023-10-15T01:03+00:00 2023-10-15 03:03:07 +02:00
Flake Update Bot
51de619e5b Flake update 2023-10-14T01:03+00:00 2023-10-14 03:04:01 +02:00
Flake Update Bot
f7385e88de Flake update 2023-10-13T01:03+00:00 2023-10-13 03:03:08 +02:00
Flake Update Bot
e0efe371cd Update from master 2023-10-13T01:03+00:00 2023-10-13 03:03:02 +02:00
Flake Update Bot
b56878bbf2 Flake update 2023-10-12T01:03+00:00 2023-10-12 03:03:08 +02:00
Flake Update Bot
8d47b9cb81 Flake update 2023-10-11T01:03+00:00 2023-10-11 03:03:59 +02:00
Flake Update Bot
cb6837b311 Flake update 2023-10-09T01:03+00:00 2023-10-09 03:04:01 +02:00
Flake Update Bot
1e26304c1f Flake update 2023-10-08T01:03+00:00 2023-10-08 03:04:00 +02:00
Flake Update Bot
62097e7131 Flake update 2023-10-07T01:03+00:00 2023-10-07 03:04:00 +02:00
Flake Update Bot
9db1882b01 Flake update 2023-10-06T01:03+00:00 2023-10-06 03:03:08 +02:00
Flake Update Bot
a9bd07da49 Flake update 2023-10-04T01:03+00:00 2023-10-04 03:03:55 +02:00
Flake Update Bot
26f2c64428 Flake update 2023-10-02T01:03+00:00 2023-10-02 03:04:06 +02:00
Flake Update Bot
08f82b23ba Flake update 2023-09-29T01:03+00:00 2023-09-29 03:04:02 +02:00
Flake Update Bot
761e8ae0aa Flake update 2023-09-27T01:03+00:00 2023-09-27 03:03:58 +02:00
Flake Update Bot
d3a1307cce Flake update 2023-09-25T01:03+00:00 2023-09-25 03:03:57 +02:00
Flake Update Bot
d6878a4061 Flake update 2023-09-24T01:03+00:00 2023-09-24 03:05:06 +02:00
Flake Update Bot
ea054a0b2d Update from master 2023-09-24T01:03+00:00 2023-09-24 03:03:02 +02:00
Flake Update Bot
3c84234c64 Flake update 2023-09-23T01:03+00:00 2023-09-23 03:03:14 +02:00
Flake Update Bot
88c5954877 Update from master 2023-09-23T01:03+00:00 2023-09-23 03:03:03 +02:00
Flake Update Bot
5fbf19ec48 Flake update 2023-09-22T01:03+00:00 2023-09-22 03:04:05 +02:00
Flake Update Bot
22c2b28168 Update from master 2023-09-21T01:03+00:00 2023-09-21 03:03:02 +02:00
Flake Update Bot
b2b4793676 Flake update 2023-09-20T01:03+00:00 2023-09-20 03:04:04 +02:00
Flake Update Bot
8d976f45aa Flake update 2023-09-19T01:03+00:00 2023-09-19 03:03:07 +02:00
Flake Update Bot
7f728f26ec Flake update 2023-09-17T01:03+00:00 2023-09-17 03:03:06 +02:00
Flake Update Bot
3b229aff13 Flake update 2023-09-16T01:03+00:00 2023-09-16 03:04:02 +02:00
Flake Update Bot
c01cff70b9 Update from master 2023-09-16T01:03+00:00 2023-09-16 03:03:01 +02:00
Flake Update Bot
131a553a84 Flake update 2023-09-15T01:03+00:00 2023-09-15 03:03:09 +02:00
Flake Update Bot
98bb0f55e5 Flake update 2023-09-14T01:03+00:00 2023-09-14 03:03:08 +02:00
Flake Update Bot
fa8f218f03 Flake update 2023-09-13T01:03+00:00 2023-09-13 03:04:05 +02:00
Flake Update Bot
3924873442 Flake update 2023-09-12T01:03+00:00 2023-09-12 03:03:07 +02:00
Flake Update Bot
aa3d5c74cb Flake update 2023-09-11T01:03+00:00 2023-09-11 03:04:06 +02:00
Flake Update Bot
57ef206512 Update from master 2023-09-11T01:03+00:00 2023-09-11 03:03:01 +02:00
Flake Update Bot
7f6985e5c9 Flake update 2023-09-10T01:03+00:00 2023-09-10 03:04:08 +02:00
Flake Update Bot
dd674ebcd9 Update from master 2023-09-10T01:03+00:00 2023-09-10 03:03:02 +02:00
Flake Update Bot
ec00e3a8b5 Flake update 2023-09-08T01:03+00:00 2023-09-08 03:04:00 +02:00
Flake Update Bot
0504681e2c Flake update 2023-09-07T01:03+00:00 2023-09-07 03:04:02 +02:00
Flake Update Bot
6a792f48d4 Flake update 2023-09-04T01:03+00:00 2023-09-04 03:04:01 +02:00
Flake Update Bot
8cbed24e1e Flake update 2023-09-03T01:03+00:00 2023-09-03 03:04:11 +02:00
Flake Update Bot
6860ae0f1e Update from master 2023-09-03T01:03+00:00 2023-09-03 03:03:02 +02:00
Flake Update Bot
d937ce3c5c Flake update 2023-09-02T01:03+00:00 2023-09-02 03:04:05 +02:00
Flake Update Bot
3256b0efc7 Update from master 2023-09-02T01:03+00:00 2023-09-02 03:03:02 +02:00
Flake Update Bot
f99589aa85 Flake update 2023-08-31T01:03+00:00 2023-08-31 03:04:00 +02:00
Flake Update Bot
d0182cb4e1 Flake update 2023-08-30T01:03+00:00 2023-08-30 03:04:03 +02:00
Flake Update Bot
a10c89ef71 Flake update 2023-08-29T01:03+00:00 2023-08-29 03:03:58 +02:00
Flake Update Bot
bced1fa96f Flake update 2023-08-28T01:03+00:00 2023-08-28 03:04:00 +02:00
Flake Update Bot
06f20a797e Flake update 2023-08-27T01:03+00:00 2023-08-27 03:04:00 +02:00
Flake Update Bot
ee5286d41d Flake update 2023-08-26T01:03+00:00 2023-08-26 03:04:03 +02:00
Flake Update Bot
3dc1ac6278 Flake update 2023-08-24T01:03+00:00 2023-08-24 03:04:00 +02:00
Flake Update Bot
309be63ffd Flake update 2023-08-23T01:03+00:00 2023-08-23 03:03:59 +02:00
Flake Update Bot
de46297303 Flake update 2023-08-20T01:03+00:00 2023-08-20 03:04:04 +02:00
Flake Update Bot
5e3a06019c Flake update 2023-08-19T01:03+00:00 2023-08-19 03:04:03 +02:00
Flake Update Bot
b8d773e550 Flake update 2023-08-17T01:03+00:00 2023-08-17 03:04:05 +02:00
Flake Update Bot
7ca6c566f1 Flake update 2023-08-16T01:03+00:00 2023-08-16 03:04:03 +02:00
Flake Update Bot
6d67512218 Flake update 2023-08-15T01:03+00:00 2023-08-15 03:03:59 +02:00
Flake Update Bot
a9bc5f46ee Flake update 2023-08-14T01:03+00:00 2023-08-14 03:04:00 +02:00
7424f402e3 Flake update 2023-08-13T13:23+00:00 2023-08-13 15:24:21 +02:00
bae0b90d10 Update from master 2023-08-13T13:00+00:00 2023-08-13 15:00:10 +02:00
781c240ba9 Flake update 2023-07-29T10:00+00:00 2023-07-29 12:00:24 +02:00
Flake Update Bot
c4dd3477ea Flake update 2023-07-28T19:05+00:00 2023-07-28 21:09:46 +02:00
142 changed files with 1714 additions and 3730 deletions

View File

@@ -4,8 +4,8 @@
clerie.backup = { clerie.backup = {
targets = { targets = {
cyan.serverUrl = "https://cyan.backup.clerie.de"; cyan.serverName = "cyan.backup.clerie.de";
magenta.serverUrl = "https://magenta.backup.clerie.de"; magenta.serverName = "magenta.backup.clerie.de";
}; };
}; };

View File

@@ -1,11 +0,0 @@
{ config, lib, ... }:
with lib;
{
environment.sessionVariables = {
REQUESTS_CA_BUNDLE = mkDefault config.security.pki.caBundle;
};
}

View File

@@ -3,14 +3,15 @@
{ {
imports = [ imports = [
./backup.nix ./backup.nix
./certificates.nix
./initrd.nix ./initrd.nix
./locale.nix ./locale.nix
./networking.nix ./networking.nix
./nix.nix
./programs.nix ./programs.nix
./ssh.nix ./ssh.nix
./systemd.nix ./systemd.nix
./user.nix ./user.nix
./web.nix
]; ];
services.fstrim.enable = true; services.fstrim.enable = true;

View File

@@ -0,0 +1,70 @@
{ lib, pkgs, ... }:
{
clerie.nixfiles.enable = true;
clerie.system-auto-upgrade.enable = true;
nix.settings = {
trusted-users = [ "@wheel" "@guests" ];
auto-optimise-store = true;
# Keep buildtime dependencies
keep-outputs = true;
# Build local, when caches are broken
fallback = true;
};
nix.gc = lib.mkDefault {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
nix.settings = {
experimental-features = [
"flakes"
"nix-command"
];
substituters = [
"https://nix-cache.clerie.de"
];
trusted-public-keys = [
"nix-cache.clerie.de:bAt1GJTS9BOTcXFWj3nURrSlcjqikCev9yDvqArMP5g="
];
};
# Pin current nixpkgs channel and flake registry to the nixpkgs version
# the host got build with
nix.nixPath = lib.mkForce [ "nixpkgs=${lib.cleanSource pkgs.path}" ];
nix.registry = {
"nixpkgs" = lib.mkForce {
from = {
type = "indirect";
id = "nixpkgs";
};
to = {
type = "path";
path = lib.cleanSource pkgs.path;
};
exact = true;
};
"templates" = {
from = {
type = "indirect";
id = "templates";
};
to = {
type = "git";
url = "https://git.clerie.de/clerie/flake-templates.git";
};
};
};
documentation.doc.enable = false;
environment.systemPackages = with pkgs; [
nix-remove-result-links
];
}

View File

@@ -0,0 +1,54 @@
{ ... }:
{
services.nginx = {
enableReload = true;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
commonHttpConfig = ''
server_names_hash_bucket_size 64;
charset utf-8;
types {
text/plain nix;
}
map $remote_addr $remote_addr_anon {
~(?P<ip>\d+\.\d+\.\d+)\. $ip.0;
~(?P<ip>[^:]*:[^:]*(:[^:]*)?): $ip::;
default ::;
}
log_format combined_anon '$remote_addr_anon - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
log_format vcombined_anon '$host: $remote_addr_anon - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log vcombined_anon;
'';
virtualHosts = {
"default" = {
default = true;
rejectSSL = true;
locations."/" = {
return = ''200 "Some piece of infrastructure\n"'';
extraConfig = ''
types { } default_type "text/plain; charset=utf-8";
'';
};
};
};
};
services.logrotate.settings.nginx = {
frequency = "daily";
maxage = 14;
};
security.acme = {
defaults.email = "letsencrypt@clerie.de";
acceptTerms = true;
};
}

View File

@@ -0,0 +1,19 @@
{ ... }:
{
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse = {
enable = true;
};
};
}

View File

@@ -0,0 +1,19 @@
{ ... }:
{
imports = [
./audio.nix
./firmware.nix
./fonts.nix
./gnome.nix
./inputs.nix
./networking.nix
./polkit.nix
./power.nix
./printing.nix
./ssh.nix
./xserver.nix
];
security.sudo.wheelNeedsPassword = true;
}

View File

@@ -0,0 +1,7 @@
{ ... }:
{
services.fwupd.enable = true;
}

View File

@@ -0,0 +1,13 @@
{ pkgs, ... }:
{
fonts.enableDefaultPackages = true;
fonts.packages = with pkgs; [
roboto
roboto-mono
noto-fonts
noto-fonts-emoji
comfortaa
] ++ (if pkgs ? "noto-fonts-cjk-sans" then [ pkgs.noto-fonts-cjk-sans ] else [ pkgs.noto-fonts-cjk ]);
}

View File

@@ -0,0 +1,61 @@
{ pkgs, ... }:
{
services.gnome = {
localsearch.enable = false;
tinysparql.enable = false;
};
environment.gnome.excludePackages = with pkgs; [
baobab
epiphany
gnome-calendar
gnome-clocks
gnome-console
gnome-contacts
gnome-logs
gnome-maps
gnome-music
gnome-tour
gnome-photos
gnome-weather
gnome-connections
simple-scan
yelp
geary
];
environment.systemPackages = with pkgs; [
evolution
gnome-terminal
gnome-tweaks
];
services.gnome.evolution-data-server.enable = true;
programs.dconf.profiles = {
user.databases = [
{
settings = {
"org/gnome/desktop/calendar" = {
show-weekdate = true;
};
"org/gnome/desktop/interface" = {
enable-hot-corners = false;
show-battery-percentage = true;
};
"org/gnome/desktop/notifications" = {
show-in-lock-screen = false;
};
"org/gnome/desktop/sound" = {
event-sounds = false;
};
"org/gnome/gnome-system-monitor" = {
network-in-bits = true;
network-total-in-bits = true;
};
};
}
];
};
}

View File

@@ -0,0 +1,43 @@
{ ... }:
{
programs.dconf.profiles = {
user.databases = [
{
settings = {
"org/gnome/desktop/peripherals/touchpad" = {
disable-while-typing = false;
edge-scrolling-enabled = false;
natural-scroll = true;
tap-to-click = true;
two-finger-scrolling-enabled = true;
};
"org/gnome/settings-daemon/plugins/media-keys" = {
custom-keybindings = [
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal/"
];
mic-mute = [ "<Control>Print" ];
};
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/terminal" = {
name = "Terminal";
binding = "<Primary><Alt>t";
command = "gnome-terminal";
};
};
}
];
gdm.databases = [
{
settings = {
"org/gnome/desktop/peripherals/touchpad" = {
disable-while-typing = false;
edge-scrolling-enabled = false;
natural-scroll = true;
tap-to-click = true;
two-finger-scrolling-enabled = true;
};
};
}
];
};
}

View File

@@ -0,0 +1,14 @@
{ ... }:
{
networking.networkmanager.settings = {
connectivity = {
uri = "http://ping.clerie.de/nm-check.txt";
};
global-dns = {
searches = "net.clerie.de";
};
};
}

View File

@@ -0,0 +1,7 @@
{ ... }:
{
security.polkit.enable = true;
}

View File

@@ -0,0 +1,42 @@
{ lib, config, ... }:
{
boot.resumeDevice = lib.optionalString ((lib.length config.swapDevices) > 0) (lib.head config.swapDevices).device;
services.logind = {
lidSwitch = "suspend-then-hibernate";
};
systemd.sleep.extraConfig = ''
HibernateDelaySec=30m
'';
services.upower = {
percentageLow = 20;
percentageCritical = 10;
percentageAction = 8;
};
programs.dconf.profiles = {
user.databases = [
{
settings = {
"org/gnome/settings-daemon/plugins/power" = {
power-button-action = "hibernate";
power-saver-profile-on-low-battery = false;
sleep-inactive-ac-type = "nothing";
};
};
}
];
gdm.databases = [
{
settings = {
"org/gnome/settings-daemon/plugins/power" = {
power-button-action = "hibernate";
power-saver-profile-on-low-battery = false;
sleep-inactive-ac-type = "nothing";
};
};
}
];
};
}

View File

@@ -0,0 +1,7 @@
{ ... }:
{
services.printing.enable = true;
services.avahi.enable = true;
services.avahi.nssmdns4 = true;
}

View File

@@ -0,0 +1,34 @@
{ pkgs, ... }:
{
imports = [
../../configuration/gpg-ssh
];
programs.gnupg.agent = {
pinentryPackage = pkgs.pinentry-gtk2;
};
# Do not disable ssh-agent of gnome-keyring, because
# gnupg ssh-agent can't handle normal SSH keys properly
/*
# Disable ssh-agent of gnome-keyring
nixpkgs.overlays = [
(final: prev: {
gnome = prev.gnome // {
gnome-keyring = prev.runCommand "gnome-keyring-ssh-disabled-autostart" {} ''
mkdir -p $out
# Symlink all gnome-keyring binaries
${final.xorg.lndir}/bin/lndir -silent ${prev.gnome.gnome-keyring} $out
# Disable autostart for ssh
rm $out/etc/xdg/autostart/gnome-keyring-ssh.desktop
cat ${prev.gnome.gnome-keyring}/etc/xdg/autostart/gnome-keyring-ssh.desktop > $out/etc/xdg/autostart/gnome-keyring-ssh.desktop
echo "Hidden=true" >> $out/etc/xdg/autostart/gnome-keyring-ssh.desktop
'';
};
})
];
*/
}

View File

@@ -0,0 +1,11 @@
{ pkgs, ... }:
{
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
services.xserver.excludePackages = with pkgs; [
xterm
];
}

View File

@@ -0,0 +1,22 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
wireguard-tools
];
boot.kernel.sysctl = {
"net.ipv4.ip_forward" = true;
"net.ipv6.conf.all.forwarding" = true;
};
networking.firewall.checkReversePath = false;
# Open Firewall for BGP
networking.firewall.allowedTCPPorts = [ 179 ];
# Open Fireall for OSPF
networking.firewall.extraCommands = ''
ip6tables -A INPUT -p ospfigp -j ACCEPT
iptables -A INPUT -p ospfigp -j ACCEPT
'';
}

View File

@@ -0,0 +1,51 @@
{ pkgs, lib, ... }:
let
custom_gnupg = pkgs.gnupg.overrideAttrs (final: prev: {
configureFlags = prev.configureFlags ++ [
# Make sure scdaemon never ever again tries to use its own ccid driver
"--disable-ccid-driver"
];
});
in {
programs.gnupg.package = custom_gnupg;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
pinentryPackage = lib.mkDefault pkgs.pinentry-curses;
};
environment.systemPackages = with pkgs; [
custom_gnupg
yubikey-personalization
openpgp-card-tools
# Add wrapper around ssh that takes the gnupg ssh-agent
# instead of gnome-keyring
ssh-gpg
];
services.pcscd.enable = true;
# pcscd sometimes breaks and seem to need a manual restart
# so we allow users to restart that service themself
security.polkit.extraConfig = ''
polkit.addRule(function(action, subject) {
if (
action.id == "org.freedesktop.systemd1.manage-units"
&& action.lookup("unit") == "pcscd.service"
&& action.lookup("verb") == "restart"
&& subject.isInGroup("users")
) {
return polkit.Result.YES;
}
});
'';
services.udev.packages = with pkgs; [
yubikey-personalization
];
}

View File

@@ -0,0 +1,16 @@
{ ... }:
{
# Allow Hydra to fetch remote URLs in restricted mode
nix.settings.allowed-uris = "http: https: git+https: github:";
services.openssh.settings= {
PermitRootLogin = "yes";
};
users.extraUsers.root.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMv8Lbca/CR4das3HJ2F/sQ9dA7kdGS1hSVTt5lX4diP root@hydra-1"
];
}

View File

@@ -0,0 +1,27 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
wireguard-tools
tcpdump
];
boot.kernel.sysctl = {
"net.ipv4.ip_forward" = true;
"net.ipv6.conf.all.forwarding" = true;
};
networking.firewall.checkReversePath = false;
networking.firewall.allowedTCPPorts = [
# Open Firewall for BGP
179
];
networking.firewall.extraCommands = ''
# Open fireall for OSPF
ip46tables -A nixos-fw -p ospfigp -j nixos-fw-accept
# Open firewall for GRE
ip46tables -A nixos-fw -p gre -j nixos-fw-accept
'';
}

423
flake.lock generated
View File

@@ -27,11 +27,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1748808701, "lastModified": 1724513039,
"narHash": "sha256-IEer4ypv/tL2zzo7nkgyg7xdK6P+Mc/22oPctEgwhiw=", "narHash": "sha256-YdBuRgXEU9CcxPd2EjuvDKcfgxL1kk9Gv8nFVVjIros=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "5f3748df43e6b6e49cc0a23557a378ef37952483", "rev": "202f4a1a5791c74a9b7d69a4e63e631bdbe36ba6",
"revCount": 5, "revCount": 4,
"type": "git", "type": "git",
"url": "https://git.clerie.de/clerie/bij.git" "url": "https://git.clerie.de/clerie/bij.git"
}, },
@@ -58,36 +58,19 @@
"url": "https://git.clerie.de/clerie/chaosevents.git" "url": "https://git.clerie.de/clerie/chaosevents.git"
} }
}, },
"communities": {
"flake": false,
"locked": {
"lastModified": 1739635166,
"narHash": "sha256-0ZONcN3ctsZgMVM//UMp+9iQfhODJNFHOhyWwx0EoTg=",
"owner": "NLNOG",
"repo": "lg.ring.nlnog.net",
"rev": "686adbfd5222b830ba4fee998188cc8d96c09169",
"type": "github"
},
"original": {
"owner": "NLNOG",
"repo": "lg.ring.nlnog.net",
"type": "github"
}
},
"fernglas": { "fernglas": {
"inputs": { "inputs": {
"communities": "communities",
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1741172718, "lastModified": 1700408128,
"narHash": "sha256-YDEJVlmPzOuKfG26iYuJVOlxFvKBVeb8DbAI9WOtnBU=", "narHash": "sha256-PLb/q8kIq0wOinkgADHNY6uOB3b3lXQEbLu6ToIFPsU=",
"owner": "wobcom", "owner": "wobcom",
"repo": "fernglas", "repo": "fernglas",
"rev": "64e2f9af8aefeeaa63431477066dcc0236d111e0", "rev": "407325681e3ad344f6fd05334984a40074aa6347",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -116,21 +99,6 @@
} }
}, },
"flake-compat": { "flake-compat": {
"locked": {
"lastModified": 1746162366,
"narHash": "sha256-5SSSZ/oQkwfcAz/o/6TlejlVGqeK08wyREBQ5qFFPhM=",
"owner": "nix-community",
"repo": "flake-compat",
"rev": "0f158086a2ecdbb138cd0429410e44994f1b7e4b",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1696426674, "lastModified": 1696426674,
@@ -168,6 +136,28 @@
} }
}, },
"flake-parts_2": { "flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"hydra",
"nix-eval-jobs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1730504689,
"narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "506278e768c2a08bec68eb62932193e341f55c90",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_3": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
"ssh-to-age", "ssh-to-age",
@@ -193,11 +183,11 @@
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1731533236, "lastModified": 1694529238,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -264,55 +254,52 @@
}, },
"hydra": { "hydra": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "lix": [
"lix": "lix", "lix"
"nixpkgs": "nixpkgs_3" ],
"nix-eval-jobs": "nix-eval-jobs",
"nixpkgs": [
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1751801455, "lastModified": 1737885770,
"narHash": "sha256-hUJqtS88SbNQQSEJAPFyY2vLMh8yA8rQ6jbul50p64M=", "narHash": "sha256-neRDOoeJj4svdSAxXW8ZJOYWQzzOCRYppkaLaHPfs3A=",
"ref": "lix-2.93", "ref": "lix-2.92",
"rev": "b940aca430a7ca41f70bdb320659dd62026fe0e9", "rev": "7b3d065a13b21ec8109a250ac6148553bda52d5e",
"revCount": 4261, "revCount": 4233,
"type": "git", "type": "git",
"url": "https://git.lix.systems/lix-project/hydra.git" "url": "https://git.lix.systems/lix-project/hydra.git"
}, },
"original": { "original": {
"ref": "lix-2.93", "ref": "lix-2.92",
"type": "git", "type": "git",
"url": "https://git.lix.systems/lix-project/hydra.git" "url": "https://git.lix.systems/lix-project/hydra.git"
} }
}, },
"lix": { "lix": {
"inputs": { "inputs": {
"flake-compat": [ "flake-compat": "flake-compat",
"hydra",
"flake-compat"
],
"nix2container": "nix2container", "nix2container": "nix2container",
"nix_2_18": [
"hydra"
],
"nixpkgs": [ "nixpkgs": [
"hydra",
"nixpkgs" "nixpkgs"
], ],
"nixpkgs-regression": "nixpkgs-regression", "nixpkgs-regression": "nixpkgs-regression",
"pre-commit-hooks": "pre-commit-hooks" "pre-commit-hooks": "pre-commit-hooks"
}, },
"locked": { "locked": {
"lastModified": 1751235704, "lastModified": 1741509550,
"narHash": "sha256-Jzm3KPZ2gL+0Nl3Mw/2E0B3vqDDi1Xt5+9VCXghUDZ8=", "narHash": "sha256-O7+c7MYOvKnGhE5qwRqV+q0NePEtiz6spM1Mfu/Heck=",
"ref": "release-2.93", "ref": "release-2.92",
"rev": "f3a7bbe5f8d1a8504ddb6362d50106904523e440", "rev": "0d1f794178d42bfa1ef40ecb80be514139779184",
"revCount": 17874, "revCount": 16641,
"type": "git", "type": "git",
"url": "https://git.lix.systems/lix-project/lix" "url": "https://git.lix.systems/lix-project/lix.git"
}, },
"original": { "original": {
"ref": "release-2.93", "ref": "release-2.92",
"type": "git", "type": "git",
"url": "https://git.lix.systems/lix-project/lix" "url": "https://git.lix.systems/lix-project/lix.git"
} }
}, },
"lix-module": { "lix-module": {
@@ -327,62 +314,20 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1753282722, "lastModified": 1741892773,
"narHash": "sha256-KYMUrTV7H/RR5/HRnjV5R3rRIuBXMemyJzTLi50NFTs=", "narHash": "sha256-8oUT6D7VlsuLkms3zBsUaPBUoxucmFq62QdtyVpjq0Y=",
"ref": "release-2.93", "ref": "release-2.92",
"rev": "46a9e8fcfe4be72b4c7c8082ee11d2c42da1e873", "rev": "ed7a2fa83145868ecb830d6b3c73ebfd81a9e911",
"revCount": 149, "revCount": 130,
"type": "git", "type": "git",
"url": "https://git.lix.systems/lix-project/nixos-module.git" "url": "https://git.lix.systems/lix-project/nixos-module.git"
}, },
"original": { "original": {
"ref": "release-2.93", "ref": "release-2.92",
"type": "git", "type": "git",
"url": "https://git.lix.systems/lix-project/nixos-module.git" "url": "https://git.lix.systems/lix-project/nixos-module.git"
} }
}, },
"lix_2": {
"inputs": {
"flake-compat": "flake-compat_2",
"nix2container": "nix2container_2",
"nix_2_18": "nix_2_18",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-regression": "nixpkgs-regression_2",
"pre-commit-hooks": "pre-commit-hooks_2"
},
"locked": {
"lastModified": 1753306924,
"narHash": "sha256-jLCEW0FvjFhC+c4RHzH+xbkSOxrnpFHnhjOw6sudhx0=",
"ref": "release-2.93",
"rev": "1a4393d0aac31aba21f5737ede1b171e11336d77",
"revCount": 17884,
"type": "git",
"url": "https://git.lix.systems/lix-project/lix.git"
},
"original": {
"ref": "release-2.93",
"type": "git",
"url": "https://git.lix.systems/lix-project/lix.git"
}
},
"lowdown-src": {
"flake": false,
"locked": {
"lastModified": 1633514407,
"narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=",
"owner": "kristapsdz",
"repo": "lowdown",
"rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8",
"type": "github"
},
"original": {
"owner": "kristapsdz",
"repo": "lowdown",
"type": "github"
}
},
"mitel-ommclient2": { "mitel-ommclient2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -404,6 +349,56 @@
"url": "https://git.clerie.de/clerie/mitel_ommclient2.git" "url": "https://git.clerie.de/clerie/mitel_ommclient2.git"
} }
}, },
"nix-eval-jobs": {
"inputs": {
"flake-parts": "flake-parts_2",
"lix": [
"hydra",
"lix"
],
"nix-github-actions": "nix-github-actions",
"nixpkgs": [
"hydra",
"nixpkgs"
],
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1737237917,
"narHash": "sha256-xd3/Wr4aPc2MY61qyQ6qQ8AGoG3H/DDcJWziP4EhhXY=",
"ref": "refs/heads/main",
"rev": "6482bee40b89ab2c28d2e988848aa9ae0429d78c",
"revCount": 621,
"type": "git",
"url": "https://git.lix.systems/lix-project/nix-eval-jobs"
},
"original": {
"type": "git",
"url": "https://git.lix.systems/lix-project/nix-eval-jobs"
}
},
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"hydra",
"nix-eval-jobs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1731952509,
"narHash": "sha256-p4gB3Rhw8R6Ak4eMl8pqjCPOLCZRqaehZxdZ/mbFClM=",
"owner": "nix-community",
"repo": "nix-github-actions",
"rev": "7b5f051df789b6b20d259924d349a9ba3319b226",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-github-actions",
"type": "github"
}
},
"nix2container": { "nix2container": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -420,50 +415,6 @@
"type": "github" "type": "github"
} }
}, },
"nix2container_2": {
"flake": false,
"locked": {
"lastModified": 1724996935,
"narHash": "sha256-njRK9vvZ1JJsP8oV2OgkBrpJhgQezI03S7gzskCcHos=",
"owner": "nlewo",
"repo": "nix2container",
"rev": "fa6bb0a1159f55d071ba99331355955ae30b3401",
"type": "github"
},
"original": {
"owner": "nlewo",
"repo": "nix2container",
"type": "github"
}
},
"nix_2_18": {
"inputs": {
"flake-compat": [
"lix",
"flake-compat"
],
"lowdown-src": "lowdown-src",
"nixpkgs": "nixpkgs_4",
"nixpkgs-regression": [
"lix",
"nixpkgs-regression"
]
},
"locked": {
"lastModified": 1730375271,
"narHash": "sha256-RrOFlDGmRXcVRV2p2HqHGqvzGNyWoD0Dado/BNlJ1SI=",
"owner": "NixOS",
"repo": "nix",
"rev": "0f665ff6779454f2117dcc32e44380cda7f45523",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "2.18.9",
"repo": "nix",
"type": "github"
}
},
"nixos-exporter": { "nixos-exporter": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -471,11 +422,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1746733297, "lastModified": 1683625533,
"narHash": "sha256-CPo/F6oJq3tswg2YT6DsWDFPYXOjw00/3m45JN84PVY=", "narHash": "sha256-GvKE97JdQuEZ697TLSMRTNABbVJfGVnJ0vfzK4AIFyI=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "f1a832f445c9994d9729a6fa1862b8d4a123bd31", "rev": "5e86139ee4af27f84228708fd32903bb0c4230f0",
"revCount": 22, "revCount": 19,
"type": "git", "type": "git",
"url": "https://git.clerie.de/clerie/nixos-exporter.git" "url": "https://git.clerie.de/clerie/nixos-exporter.git"
}, },
@@ -532,22 +483,6 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-carbon": {
"locked": {
"lastModified": 1751206202,
"narHash": "sha256-VjK8pEv4cfDpCTh4KW1go98kP25j7KdTNEce342Bh/Y=",
"owner": "clerie",
"repo": "nixpkgs",
"rev": "ac4ac98609c1b30c378458ab7207a9a5b5148457",
"type": "github"
},
"original": {
"owner": "clerie",
"ref": "clerie/always-setup-netdevs",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-regression": { "nixpkgs-regression": {
"locked": { "locked": {
"lastModified": 1643052045, "lastModified": 1643052045,
@@ -564,22 +499,6 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-regression_2": {
"locked": {
"lastModified": 1643052045,
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
}
},
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1713434076, "lastModified": 1713434076,
@@ -614,43 +533,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1751582995, "lastModified": 1742422364,
"narHash": "sha256-u7ubvtxdTnFPpV27AHpgoKn7qHuE7sgWgza/1oj5nzA=", "narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "7a732ed41ca0dd64b4b71b563ab9805a80a7d693", "rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1705033721,
"narHash": "sha256-K5eJHmL1/kev6WuqyqqbS1cdNnSidIZ3jeqJ7GbrYnQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a1982c92d8980a0114372973cbdfe0a307f1bdea",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.05-small",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1755186698,
"narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -696,22 +583,6 @@
"type": "github" "type": "github"
} }
}, },
"pre-commit-hooks_2": {
"flake": false,
"locked": {
"lastModified": 1733318908,
"narHash": "sha256-SVQVsbafSM1dJ4fpgyBqLZ+Lft+jcQuMtEL3lQWx2Sk=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "6f4e2a2112050951a314d2733a994fbab94864c6",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"rainbowrss": { "rainbowrss": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -719,11 +590,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1745667868, "lastModified": 1736087671,
"narHash": "sha256-T67ZRk+cuFI2P6qJeu8RwbpJD00OORulHGuXebpg9Nw=", "narHash": "sha256-zWeiCs+8SAS1wN5M3w3vSNNpILoKXqX9aj/ZZcgfMms=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "e43037aa525e36d7a3da187a8fc6baeb71db7fd6", "rev": "ceab6a148233ffb23de19411a3e5579e3394a35b",
"revCount": 15, "revCount": 9,
"type": "git", "type": "git",
"url": "https://git.clerie.de/clerie/rainbowrss.git" "url": "https://git.clerie.de/clerie/rainbowrss.git"
}, },
@@ -741,20 +612,18 @@
"fieldpoc": "fieldpoc", "fieldpoc": "fieldpoc",
"harmonia": "harmonia", "harmonia": "harmonia",
"hydra": "hydra", "hydra": "hydra",
"lix": "lix_2", "lix": "lix",
"lix-module": "lix-module", "lix-module": "lix-module",
"nixos-exporter": "nixos-exporter", "nixos-exporter": "nixos-exporter",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_5", "nixpkgs": "nixpkgs_3",
"nixpkgs-0dc1c7": "nixpkgs-0dc1c7", "nixpkgs-0dc1c7": "nixpkgs-0dc1c7",
"nixpkgs-carbon": "nixpkgs-carbon",
"nurausstieg": "nurausstieg", "nurausstieg": "nurausstieg",
"rainbowrss": "rainbowrss", "rainbowrss": "rainbowrss",
"scan-to-gpg": "scan-to-gpg", "scan-to-gpg": "scan-to-gpg",
"solid-xmpp-alarm": "solid-xmpp-alarm", "solid-xmpp-alarm": "solid-xmpp-alarm",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"ssh-to-age": "ssh-to-age", "ssh-to-age": "ssh-to-age"
"traveldrafter": "traveldrafter"
} }
}, },
"scan-to-gpg": { "scan-to-gpg": {
@@ -820,7 +689,7 @@
}, },
"ssh-to-age": { "ssh-to-age": {
"inputs": { "inputs": {
"flake-parts": "flake-parts_2", "flake-parts": "flake-parts_3",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ]
@@ -869,26 +738,6 @@
"type": "github" "type": "github"
} }
}, },
"traveldrafter": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1751817360,
"narHash": "sha256-HzOhsPvzCaFeiz8nPq5MkYnYHpUzVaU/P5sxG+Njt+8=",
"ref": "refs/heads/main",
"rev": "b6610d70f363ecf9704352b1ef39244a816bd34f",
"revCount": 22,
"type": "git",
"url": "https://git.clerie.de/clerie/traveldrafter.git"
},
"original": {
"type": "git",
"url": "https://git.clerie.de/clerie/traveldrafter.git"
}
},
"treefmt-nix": { "treefmt-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -909,6 +758,28 @@
"repo": "treefmt-nix", "repo": "treefmt-nix",
"type": "github" "type": "github"
} }
},
"treefmt-nix_2": {
"inputs": {
"nixpkgs": [
"hydra",
"nix-eval-jobs",
"nixpkgs"
]
},
"locked": {
"lastModified": 1732292307,
"narHash": "sha256-5WSng844vXt8uytT5djmqBCkopyle6ciFgteuA9bJpw=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "705df92694af7093dfbb27109ce16d828a79155f",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View File

@@ -1,7 +1,6 @@
{ {
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-carbon.url = "github:clerie/nixpkgs/clerie/always-setup-netdevs";
# for etesync-dav # for etesync-dav
nixpkgs-0dc1c7.url = "github:NixOS/nixpkgs/0dc1c7294c13f5d1dd6eccab4f75d268d7296efe"; nixpkgs-0dc1c7.url = "github:NixOS/nixpkgs/0dc1c7294c13f5d1dd6eccab4f75d268d7296efe";
nixos-hardware.url = "github:NixOS/nixos-hardware/master"; nixos-hardware.url = "github:NixOS/nixos-hardware/master";
@@ -26,16 +25,16 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
hydra = { hydra = {
url = "git+https://git.lix.systems/lix-project/hydra.git?ref=lix-2.93"; url = "git+https://git.lix.systems/lix-project/hydra.git?ref=lix-2.92";
#inputs.lix.follows = "lix"; inputs.lix.follows = "lix";
#inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
lix = { lix = {
url = "git+https://git.lix.systems/lix-project/lix.git?ref=release-2.93"; url = "git+https://git.lix.systems/lix-project/lix.git?ref=release-2.92";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
lix-module = { lix-module = {
url = "git+https://git.lix.systems/lix-project/nixos-module.git?ref=release-2.93"; url = "git+https://git.lix.systems/lix-project/nixos-module.git?ref=release-2.92";
inputs.lix.follows = "lix"; inputs.lix.follows = "lix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
@@ -68,13 +67,11 @@
url = "github:Mic92/ssh-to-age"; url = "github:Mic92/ssh-to-age";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
traveldrafter = {
url = "git+https://git.clerie.de/clerie/traveldrafter.git";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = { self, nixpkgs, nixos-hardware, chaosevents, fernglas, nixos-exporter, solid-xmpp-alarm, ssh-to-age, ... }@inputs: let outputs = { self, nixpkgs, nixos-hardware, chaosevents, fernglas, nixos-exporter, solid-xmpp-alarm, ssh-to-age, ... }@inputs: let
lib = import ./lib inputs; lib = import ./lib inputs;
helper = lib.flake-helper;
localNixpkgs = import ./flake/nixpkgs.nix inputs;
in { in {
clerie.hosts = { clerie.hosts = {
aluminium = { aluminium = {
@@ -112,11 +109,7 @@
osmium = {}; osmium = {};
palladium = {}; palladium = {};
porter = {}; porter = {};
storage-2 = { storage-2 = {};
modules = [
./users/frank
];
};
tungsten = {}; tungsten = {};
web-2 = {}; web-2 = {};
zinc = { zinc = {
@@ -138,24 +131,14 @@
}; };
overlays = { overlays = {
clerie-inputs = import ./flake/inputs-overlay.nix inputs; nixfilesInputs = import ./flake/overlay.nix inputs;
clerie-pkgs = import ./pkgs/overlay.nix; clerie = import ./pkgs/overlay.nix;
clerie-build-support = import ./pkgs/build-support/overlay.nix; default = self.overlays.clerie;
clerie-overrides = import ./pkgs/overrides/overlay.nix;
}; };
nixpkgs = nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" ] (system: packages = nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" ] (system: let
lib.mkNixpkgs { pkgs = localNixpkgs.${system};
inherit system; in builtins.mapAttrs (name: value: pkgs."${name}") (import ./pkgs/pkgs.nix));
}
);
packages = nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" ] (system:
nixpkgs.lib.genAttrs (
(builtins.attrNames (self.overlays.clerie-pkgs null null))
++ (builtins.attrNames (self.overlays.clerie-overrides null null))
) (name: self.nixpkgs."${system}"."${name}")
);
inherit lib self; inherit lib self;

View File

@@ -10,12 +10,6 @@ let
in { in {
inherit (self) inherit (self)
packages; packages;
extraTrackedPackages = nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" ] (system:
nixpkgs.lib.genAttrs [
"hydra"
"lix"
] (name: self.nixpkgs."${system}"."${name}")
);
nixosConfigurations = buildHosts self.nixosConfigurations; nixosConfigurations = buildHosts self.nixosConfigurations;
iso = self.nixosConfigurations._iso.config.system.build.isoImage; iso = self.nixosConfigurations._iso.config.system.build.isoImage;
} }

View File

@@ -11,14 +11,33 @@ let
modules ? [], modules ? [],
}: let }: let
localNixpkgs = nixpkgs.lib.attrByPath [ "nixpkgs-${name}" ] nixpkgs inputs; localNixpkgs = nixpkgs.lib.attrByPath [ "nixpkgs-${name}" ] nixpkgs inputs;
in self.lib.nixosSystem { in localNixpkgs.lib.nixosSystem {
system = system; system = system;
nixpkgs = localNixpkgs;
modules = modules ++ [ modules = modules ++ [
self.nixosModules.nixfilesInputs
self.nixosModules.clerie
self.nixosModules.profiles
({ config, lib, ... }: { ({ config, lib, ... }: {
# Set hostname # Set hostname
networking.hostName = lib.mkDefault name; networking.hostName = lib.mkDefault name;
# Apply overlays
nixpkgs.overlays = [
self.overlays.nixfilesInputs
self.overlays.clerie
];
/*
Make the contents of the flake availiable to modules.
Useful for having the monitoring server scraping the
target config from all other servers automatically.
*/
_module.args = {
inputs = inputs;
_nixfiles = self;
};
# Expose host group to monitoring # Expose host group to monitoring
clerie.monitoring = nixpkgs.lib.attrsets.optionalAttrs (group != null) { serviceLevel = group; }; clerie.monitoring = nixpkgs.lib.attrsets.optionalAttrs (group != null) { serviceLevel = group; };
@@ -33,9 +52,6 @@ let
{}; {};
in in
secrets; secrets;
# Enable clerie common config
profiles.clerie.common.enable = true;
}) })
# Config to be applied to every host # Config to be applied to every host

17
flake/nixpkgs.nix Normal file
View File

@@ -0,0 +1,17 @@
{ self
, nixpkgs
, ...
}@inputs:
let
mkNixpkgs = { system, ... }@args:
import nixpkgs {
inherit system;
overlays = [
self.overlays.nixfilesInputs
self.overlays.clerie
];
};
in
nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" ] (system: mkNixpkgs { inherit system; })

View File

@@ -9,7 +9,6 @@
, rainbowrss , rainbowrss
, scan-to-gpg , scan-to-gpg
, ssh-to-age , ssh-to-age
, traveldrafter
, ... , ...
}@inputs: }@inputs:
final: prev: { final: prev: {
@@ -33,6 +32,4 @@ final: prev: {
scan-to-gpg; scan-to-gpg;
inherit (ssh-to-age.packages.${final.system}) inherit (ssh-to-age.packages.${final.system})
ssh-to-age; ssh-to-age;
inherit (traveldrafter.packages.${final.system})
traveldrafter;
} }

View File

@@ -3,9 +3,9 @@
{ {
imports = [ imports = [
(modulesPath + "/installer/cd-dvd/installation-cd-base.nix") (modulesPath + "/installer/cd-dvd/installation-cd-base.nix")
../../configuration/gpg-ssh
]; ];
profiles.clerie.gpg-ssh.enable = true;
profiles.clerie.network-fallback-dhcp.enable = true; profiles.clerie.network-fallback-dhcp.enable = true;
# systemd in initrd is broken with ISOs # systemd in initrd is broken with ISOs
@@ -13,6 +13,9 @@
# https://github.com/NixOS/nixpkgs/issues/327187 # https://github.com/NixOS/nixpkgs/issues/327187
boot.initrd.systemd.enable = false; boot.initrd.systemd.enable = false;
networking.useDHCP = false;
systemd.network.enable = true;
networking.hostName = "isowo"; networking.hostName = "isowo";
isoImage.isoBaseName = lib.mkForce "nixos-isowo"; isoImage.isoBaseName = lib.mkForce "nixos-isowo";

View File

@@ -18,6 +18,9 @@
terminal_output serial terminal_output serial
"; ";
networking.useDHCP = false;
systemd.network.enable = true;
profiles.clerie.wg-clerie = { profiles.clerie.wg-clerie = {
enable = true; enable = true;
ipv6s = [ "2a01:4f8:c0c:15f1::8106/128" ]; ipv6s = [ "2a01:4f8:c0c:15f1::8106/128" ];

View File

@@ -18,6 +18,9 @@
terminal_output serial terminal_output serial
"; ";
networking.useDHCP = false;
systemd.network.enable = true;
profiles.clerie.wg-clerie = { profiles.clerie.wg-clerie = {
enable = true; enable = true;
ipv6s = [ "2a01:4f8:c0c:15f1::8108/128" ]; ipv6s = [ "2a01:4f8:c0c:15f1::8108/128" ];

View File

@@ -6,9 +6,7 @@
./hardware-configuration.nix ./hardware-configuration.nix
./backup.nix ./backup.nix
./replication.nix
./restic-server.nix ./restic-server.nix
./wg-b-palladium.nix
]; ];
profiles.clerie.mercury-vm.enable = true; profiles.clerie.mercury-vm.enable = true;
@@ -28,7 +26,6 @@
{ Gateway = "2001:638:904:ffcb::1"; } { Gateway = "2001:638:904:ffcb::1"; }
]; ];
linkConfig.RequiredForOnline = "routable"; linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
}; };
services.nginx.enable = true; services.nginx.enable = true;

View File

@@ -1,20 +0,0 @@
{ lib, ... }:
with lib;
{
clerie.backup = {
enable = true;
targets = mkForce {
palladium.serverUrl = "http://[fd90:37fd:ddec:d921::2]:43242";
};
jobs.replication = {
paths = [
"/mnt/backup-4/magenta"
];
exclude = [
"/mnt/backup-4/magenta/.htpasswd"
];
};
};
}

View File

@@ -1,8 +1,5 @@
{ {
"clerie-backup-job-replication": "ENC[AES256_GCM,data:BxOj/jT/GFBNSLc=,iv:zKDmEqUpOUWbU3fEeKDLniZ8D1yzs4kdGjoFLeNZOpo=,tag:iKAxHnIUpvtZwVO+eJW3Xw==,type:str]",
"clerie-backup-target-palladium": "ENC[AES256_GCM,data:OaszucYAp4n/ds59nF8D4Qn3U9a6L+ONcbPa+BmSz/EprW7E3kCoJ6+EceahPemTnR53mkP6zAndWaXaBTFfdg==,iv:pqi4+LuLPhtmKucm7JqN6d2hwXzNVx8IPimTL6FgHHg=,tag:+91GgLQNKD/lI7uWojCwjA==,type:str]",
"restic-server-magenta-htpasswd": "ENC[AES256_GCM,data:gfvmAd7z+jQwoYDJf/Hv2sR9ISJT+Hw4jrHmvW64PXjoETy+LjdsmqEPuRyq/YhrGA2rqW+YodPlkh/eE4crdTL2eNim+ij/OUubliUwBMyJuxsdGKuDUMc+txqN2x6Q24MnnU88P08SKpsm3jciMhz7JEg62W77jhesWlkzsuJDmg9oTlA9SeYOEac3pIKpekfRyE77GSFVUflwwCA+xvcEg5xyuRosFzBWGGEC3kDNB0licF0X6epz3HtlqhCLd/mkuEkftjpkNOFm9oJYzdwYv5PwVNg7G7JOgsUx9e5I29mwWPfhinX1yEFNwxKeB1FbUhYOKhRhdqWD6THVLkDzU0zP8vrm5FXTaxLHZr5+EpKit8/MJS5UBVvpSTDQ0cLExJyonWP2T+zr6rxKwU/q1jQRvsU6DJ7Bt8+9chrXBNOeyPM9xzWN1Zyyrntm9j5Ufj1YFwyrDT5ve2rOgNHA4KoS28+vsP1fcVO8XlLR24zFx5+/1BPG25qSECTPn6KkcL+yV+WS4oOnu4Oo0GVPEz+4SfyYIEVmaV61KC61pKa/6ACeUd6nABcDbReMqPXU7/bksM4sTDoFSmmiAycnxT4xavbaFdfbYIOXVQwYAIjaR1tAqQ6gYVCQ/LtKhIHCGCg10xRXNV3qkPqOUvJ7JnRcre+pQVDVLg==,iv:tvhvTPzhHoG4yG3C+o9s8yh4DafMpPb67nNxbUZcFxQ=,tag:8P5lYeP2EB5AfKgeeBISLg==,type:str]", "restic-server-magenta-htpasswd": "ENC[AES256_GCM,data:gfvmAd7z+jQwoYDJf/Hv2sR9ISJT+Hw4jrHmvW64PXjoETy+LjdsmqEPuRyq/YhrGA2rqW+YodPlkh/eE4crdTL2eNim+ij/OUubliUwBMyJuxsdGKuDUMc+txqN2x6Q24MnnU88P08SKpsm3jciMhz7JEg62W77jhesWlkzsuJDmg9oTlA9SeYOEac3pIKpekfRyE77GSFVUflwwCA+xvcEg5xyuRosFzBWGGEC3kDNB0licF0X6epz3HtlqhCLd/mkuEkftjpkNOFm9oJYzdwYv5PwVNg7G7JOgsUx9e5I29mwWPfhinX1yEFNwxKeB1FbUhYOKhRhdqWD6THVLkDzU0zP8vrm5FXTaxLHZr5+EpKit8/MJS5UBVvpSTDQ0cLExJyonWP2T+zr6rxKwU/q1jQRvsU6DJ7Bt8+9chrXBNOeyPM9xzWN1Zyyrntm9j5Ufj1YFwyrDT5ve2rOgNHA4KoS28+vsP1fcVO8XlLR24zFx5+/1BPG25qSECTPn6KkcL+yV+WS4oOnu4Oo0GVPEz+4SfyYIEVmaV61KC61pKa/6ACeUd6nABcDbReMqPXU7/bksM4sTDoFSmmiAycnxT4xavbaFdfbYIOXVQwYAIjaR1tAqQ6gYVCQ/LtKhIHCGCg10xRXNV3qkPqOUvJ7JnRcre+pQVDVLg==,iv:tvhvTPzhHoG4yG3C+o9s8yh4DafMpPb67nNxbUZcFxQ=,tag:8P5lYeP2EB5AfKgeeBISLg==,type:str]",
"wg-b-palladium": "ENC[AES256_GCM,data:XTenrGQFLDndt/XPaDGRLQthVq1UFKJ2mWK3Z+YfT54YpnWO81cslrMMtPc=,iv:tW8NHOcNj3Q26BJBIz7UPR3bmw3nrb0UkkD+gqngw/w=,tag:XDYkIqj6z2Jvhaoiqeyn0g==,type:str]",
"wg-monitoring": "ENC[AES256_GCM,data:lCuE2EgUo3ER9NNg1rD24Z4cZS+VZ4KmDojnfCsb/LyBsfyu6uOJ4IVtxOE=,iv:KHRP1pXYXk8Fi23cjUZVUUadu9yWoJ2ddxj2fMJJYE0=,tag:TiFlekXM7WLLHAPlmYbP8w==,type:str]", "wg-monitoring": "ENC[AES256_GCM,data:lCuE2EgUo3ER9NNg1rD24Z4cZS+VZ4KmDojnfCsb/LyBsfyu6uOJ4IVtxOE=,iv:KHRP1pXYXk8Fi23cjUZVUUadu9yWoJ2ddxj2fMJJYE0=,tag:TiFlekXM7WLLHAPlmYbP8w==,type:str]",
"sops": { "sops": {
"kms": null, "kms": null,
@@ -15,8 +12,8 @@
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpdFREUEVzb2JFd3hSaG9y\neVA2a2Fodko0OTI4ZGM0NlZxRmNtYmFDY1hVCm9ncXdWYTJlSU1FSG1WdlNBZ3VW\nM2VtRmZiWldzalRsRWJ0UkV1L1hSMkEKLS0tIGVLQU9kQXhZbC9SUW9CS2JnWGlJ\nQ3RoeXVkRXNkUWNaZ0VQOW1hcEJnNjAKHgZ48PERJlfkkh2TyCLl52zUZY674BXW\n4zPtmhZrb4xlExetINrOd4hZtL7S7qn5GnTxhoxvCddeU+JPPsfWoQ==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpdFREUEVzb2JFd3hSaG9y\neVA2a2Fodko0OTI4ZGM0NlZxRmNtYmFDY1hVCm9ncXdWYTJlSU1FSG1WdlNBZ3VW\nM2VtRmZiWldzalRsRWJ0UkV1L1hSMkEKLS0tIGVLQU9kQXhZbC9SUW9CS2JnWGlJ\nQ3RoeXVkRXNkUWNaZ0VQOW1hcEJnNjAKHgZ48PERJlfkkh2TyCLl52zUZY674BXW\n4zPtmhZrb4xlExetINrOd4hZtL7S7qn5GnTxhoxvCddeU+JPPsfWoQ==\n-----END AGE ENCRYPTED FILE-----\n"
} }
], ],
"lastmodified": "2025-04-18T08:37:08Z", "lastmodified": "2025-02-16T18:13:41Z",
"mac": "ENC[AES256_GCM,data:50NF4BI0QUhe622J6nwIF89pLlTdgxVB/MWbO5nWKgQI5xuNrnFghs5yVgZIV7FeONcu2pYykp28fSrFKhvbPt+B90i4HvaaIHdZGDepbEV9ZwK4AU66zZW4KCCPxv4NTYh+AuSi7HTHusXUrNIvRhYvAXjESi7nK7JPm3BTfUk=,iv:fvtTaSXNx6IL6D9DdEa5ovymNYeWJObCBiRiIsG7KeE=,tag:LdfXiAuMHLCb0biThHh1GQ==,type:str]", "mac": "ENC[AES256_GCM,data:O+E3UbWbmlbpUPeSS/BFcJpWr2WEXbu0aaj9u3XUwstp4ba6e0xuVdzfbntQwbN378sDNpDMkAuxp1+R/0THBSs+nqXC9q9IgK+hfSBd7q2v4lvdhxRdM1x4wysTDJGtjFNdfz8EzqMz42Y2IWjxSozgPNpjZSIGhwMBA2TS/gU=,iv:1waH/yUGt5jGJbQlYmp5b97NGVyRykgzI2g1xX+Jo/U=,tag:4bxFxkClt3LbqCH552XePw==,type:str]",
"pgp": [ "pgp": [
{ {
"created_at": "2024-05-04T12:30:52Z", "created_at": "2024-05-04T12:30:52Z",
@@ -25,6 +22,6 @@
} }
], ],
"unencrypted_suffix": "_unencrypted", "unencrypted_suffix": "_unencrypted",
"version": "3.9.4" "version": "3.8.1"
} }
} }

View File

@@ -1,40 +0,0 @@
{ config, ... }:
{
sops = {
secrets.wg-b-palladium = {
owner = "systemd-network";
group = "systemd-network";
};
};
systemd.network.netdevs."10-wg-b-palladium" = {
netdevConfig = {
Kind = "wireguard";
Name = "wg-b-palladium";
};
wireguardConfig = {
PrivateKeyFile = config.sops.secrets.wg-b-palladium.path;
ListenPort = 51844;
};
wireguardPeers = [
{
PublicKey = "YMTOhRAKWfFX1UVBoROPvgcQxTSN4tny35brAocdnwo=";
AllowedIPs = [ "fd90:37fd:ddec:d921::/64" ];
PersistentKeepalive = 25;
}
];
};
systemd.network.networks."10-wg-b-palladium" = {
matchConfig.Name = "wg-b-palladium";
address = [
"fd90:37fd:ddec:d921::1/64"
];
linkConfig.RequiredForOnline = "no";
};
networking.firewall.allowedUDPPorts = [ 51844 ];
}

View File

@@ -20,6 +20,9 @@
networking.hostName = "beryllium"; networking.hostName = "beryllium";
networking.useDHCP = false;
systemd.network.enable = true;
networking.firewall.enable = false; networking.firewall.enable = false;
profiles.clerie.wg-clerie = { profiles.clerie.wg-clerie = {

View File

@@ -4,6 +4,7 @@
imports = imports =
[ [
./hardware-configuration.nix ./hardware-configuration.nix
../../configuration/router
./dns.nix ./dns.nix
./mdns.nix ./mdns.nix
@@ -21,9 +22,6 @@
./wg-clerie.nix ./wg-clerie.nix
]; ];
profiles.clerie.common-networking.enable = false;
profiles.clerie.router.enable = true;
boot.kernelParams = [ "console=ttyS0,115200n8" ]; boot.kernelParams = [ "console=ttyS0,115200n8" ];
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
@@ -63,10 +61,10 @@
systemd.services.kea-dhcp4-server = { systemd.services.kea-dhcp4-server = {
after = [ after = [
"network.target" "network-setup.service"
]; ];
wants = [ requires = [
"network.target" "network-setup.service"
]; ];
}; };

View File

@@ -8,21 +8,23 @@
./restic-server.nix ./restic-server.nix
]; ];
profiles.clerie.ruby-vm.enable = true; profiles.clerie.cybercluster-vm.enable = true;
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/vda"; boot.loader.grub.device = "/dev/vda";
networking.useDHCP = false;
systemd.network.enable = true;
systemd.network.networks."10-wan" = { systemd.network.networks."10-wan" = {
matchConfig.Name = "ens18"; matchConfig.Name = "ens18";
address = [ address = [
"2a00:fe0:1:21f::a/64" "2001:638:904:ffc1::6/64"
]; ];
routes = [ routes = [
{ Gateway ="2a00:fe0:1:21f::1"; } { Gateway ="2001:638:904:ffc1::1"; }
]; ];
linkConfig.RequiredForOnline = "routable"; linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
}; };
services.nginx.enable = true; services.nginx.enable = true;

View File

@@ -8,7 +8,7 @@
[ (modulesPath + "/profiles/qemu-guest.nix") [ (modulesPath + "/profiles/qemu-guest.nix")
]; ];
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" "virtio_blk" ]; boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "sr_mod" "virtio_blk" ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
@@ -19,7 +19,7 @@
}; };
fileSystems."/mnt/clerie-backup" = fileSystems."/mnt/clerie-backup" =
{ device = "/dev/disk/by-uuid/15a42e2e-57dc-43ff-a50d-8b73952d4558"; { device = "/dev/disk/by-uuid/69e75b00-23e1-4775-98a6-061a79d806cf";
fsType = "ext4"; fsType = "ext4";
}; };
@@ -33,7 +33,4 @@
# networking.interfaces.ens18.useDHCP = lib.mkDefault true; # networking.interfaces.ens18.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
boot.swraid.enable = true;
} }

View File

@@ -4,6 +4,7 @@
imports = imports =
[ [
./hardware-configuration.nix ./hardware-configuration.nix
../../configuration/dn42
]; ];
profiles.clerie.mercury-vm.enable = true; profiles.clerie.mercury-vm.enable = true;
@@ -11,36 +12,41 @@
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/vda"; boot.loader.grub.device = "/dev/vda";
systemd.network.networks."10-wan" = { networking.useDHCP = false;
matchConfig.Name = "ens20"; networking.interfaces.lo.ipv6.addresses = [ { address = "fd56:4902:eca0:1::1"; prefixLength = 64; } ];
address = [ # VM Nat Netz mercury
"2001:638:904:ffc9::7/64" networking.interfaces.ens18.ipv4.addresses = [ { address = "192.168.10.23"; prefixLength = 24; } ];
]; # OSPF Netz
routes = [ networking.interfaces.ens19 = {};
{ Gateway = "2001:638:904:ffc9::1"; } # IPv6 Uplink
]; networking.interfaces.ens20.ipv6.addresses = [ { address = "2001:638:904:ffc9::7"; prefixLength = 64; } ];
linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no"; networking.defaultGateway = { address = "192.168.10.1"; interface = "ens18"; };
}; networking.defaultGateway6 = { address = "2001:638:904:ffc9::1"; interface = "ens20"; };
systemd.network.networks."10-nat-netz-mercury" = {
matchConfig.Name = "ens18";
address = [
"192.168.10.23/24"
];
routes = [
{ Gateway = "192.168.10.1"; }
];
linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
systemd.network.networks."10-dn42-ospf-netz" = {
matchConfig.Name = "ens19";
linkConfig.RequiredForOnline = "no";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
networking.wireguard.enable = true; networking.wireguard.enable = true;
networking.wireguard.interfaces = { networking.wireguard.interfaces = {
# n0emis
wg0197 = {
ips = [
"fe80::42:1/128"
# peer fe80::42:42:1/128
];
postSetup = ''
ip -6 route flush dev wg0197
ip addr del dev wg0197 fe80::42:1/128 && ip addr add dev wg0197 fe80::42:1/128 peer fe80::42:42:1/128
'';
listenPort = 50197;
allowedIPsAsRoutes = false;
peers = [
{
allowedIPs = [ "fe80::/10" "fd00::/8" ];
endpoint = "himalia.dn42.n0emis.eu:52574";
publicKey = "ObF+xGC6DdddJer0IUw6nzC0RqzeKWwEiQU0ieowzhg=";
}
];
privateKeyFile = config.sops.secrets.wg0197.path;
};
# e1mo # e1mo
wg0565 = { wg0565 = {
ips = [ ips = [
@@ -120,6 +126,27 @@
]; ];
privateKeyFile = config.sops.secrets.wg1280.path; privateKeyFile = config.sops.secrets.wg1280.path;
}; };
# perflyst
wg1302 = {
ips = [
"fe80::a14e/128"
# peer fe80::a14d/128
];
postSetup = ''
ip -6 route flush dev wg1302
ip addr del dev wg1302 fe80::a14e/128 && ip addr add dev wg1302 fe80::a14e/128 peer fe80::a14d/128
'';
listenPort = 51302;
allowedIPsAsRoutes = false;
peers = [
{
allowedIPs = [ "fe80::/10" "fd00::/8" ];
endpoint = "[2a03:4000:6:f6ed::1]:22574";
publicKey = "TSPvvpMY8dCFk6gd58aYtkibtqUn8EzIF6dXP52b3y8=";
}
];
privateKeyFile = config.sops.secrets.wg1302.path;
};
# lutoma # lutoma
wg4719 = { wg4719 = {
ips = [ ips = [
@@ -140,104 +167,168 @@
]; ];
privateKeyFile = config.sops.secrets.wg4719.path; privateKeyFile = config.sops.secrets.wg4719.path;
}; };
# zaphyra
wg1718 = {
ips = [
"fe80::2574/128"
# peer fe80::6b61/64
];
postSetup = ''
ip addr replace dev wg1718 fe80::2574/128 peer fe80::6b61/128
'';
listenPort = 51718;
allowedIPsAsRoutes = false;
peers = [
{
allowedIPs = [ "fe80::/10" "fd00::/8" ];
endpoint = "router-a.dn42.zaphyra.eu:51831";
publicKey = "Knm6uEpMsTfZAK68Pl98mHORtb8TtswBfYFGznpHUCI=";
}
];
privateKeyFile = config.sops.secrets.wg1718.path;
};
}; };
networking.firewall.allowedUDPPorts = [ petabyte.policyrouting = {
50565 # wg0565
51271 # wg1271
51272 # wg1272
51280 # wg1280
54719 # wg4719
51718 # wg1718
];
profiles.clerie.dn42-router = {
enable = true; enable = true;
loopbackIp = "fd56:4902:eca0:1::1"; rules6 = [
routerId = "192.168.10.23"; { rule = "from all to fd56:4902:eca0::/48 lookup 1337"; prio = 10000; }
{ rule = "from all to all lookup 2342"; prio = 10000; }
ospfInterfaces = [ { rule = "from all to fd56:4902:eca0::/48 unreachable"; prio = 20000; }
"ens19" { rule = "from fd56:4902:eca0::/48 to all unreachable"; prio = 20000; }
];
ibgpPeers = [
{
peerName = "gw5";
remoteAddress = "fd56:4902:eca0:5::1";
}
{
peerName = "gw6";
remoteAddress = "fd56:4902:eca0:6::1";
}
];
wireguardPeers = [
{
peerName = "peer_0565";
remoteAddress = "fe80::565";
interfaceName = "wg0565";
remoteAsn = "4242420565";
localAddress = "fe80::2574";
}
{
peerName = "peer_1271_north";
remoteAddress = "fe80::2";
interfaceName = "wg1271";
remoteAsn = "4242421271";
localAddress = "fe80::1";
}
{
peerName = "peer_1271_south";
remoteAddress = "fe80::1:2";
interfaceName = "wg1272";
remoteAsn = "4242421271";
localAddress = "fe80::1:1";
}
{
peerName = "peer_1280_wg1";
remoteAddress = "fde3:4c0d:2836:ff00::20";
interfaceName = "wg1280";
remoteAsn = "4242421280";
localAddress = "fde3:4c0d:2836:ff00::21";
}
{
peerName = "peer_4719";
remoteAddress = "fe80::acab";
interfaceName = "wg4719";
remoteAsn = "64719";
localAddress = "fe80::1";
}
{
peerName = "peer_1718";
remoteAddress = "fe80::6b61";
interfaceName = "wg1718";
remoteAsn = "4242421718";
localAddress = "fe80::2574";
}
]; ];
}; };
services.bird.enable = true;
services.bird.package = pkgs.bird2;
services.bird.config = ''
router id ${ (lib.head config.networking.interfaces.ens18.ipv4.addresses).address };
ipv6 table ospf6;
ipv6 table bgp6;
protocol direct {
interface "lo";
ipv6 {
table ospf6;
};
}
protocol static {
ipv6 {
table bgp6;
};
route fd56:4902:eca0::/48 via "lo";
route fd56:4902:eca0::/52 via "lo";
}
protocol kernel {
ipv6 {
table ospf6;
export filter {
krt_prefsrc=fd56:4902:eca0:1::1;
accept;
};
import none;
};
kernel table 1337;
}
protocol kernel {
ipv6 {
table bgp6;
export filter {
krt_prefsrc=fd56:4902:eca0:1::1;
accept;
};
import none;
};
kernel table 2342;
}
protocol ospf v3 {
ipv6 {
table ospf6;
import all;
export all;
};
area 0 {
interface "ens19" {
cost 80;
type broadcast;
};
};
}
protocol bgp gw5 {
local as 4242422574;
graceful restart on;
neighbor fd56:4902:eca0:5::1 as 4242422574;
source address fd56:4902:eca0:1::1;
ipv6 {
table bgp6;
igp table ospf6;
next hop self;
import keep filtered;
import all;
export all;
};
}
protocol bgp gw6 {
local as 4242422574;
graceful restart on;
neighbor fd56:4902:eca0:6::1 as 4242422574;
source address fd56:4902:eca0:1::1;
ipv6 {
table bgp6;
igp table ospf6;
next hop self;
import keep filtered;
import all;
export all;
};
}
template bgp bgp_peer {
local as 4242422574;
graceful restart on;
ipv6 {
table bgp6;
next hop self;
import keep filtered;
import filter {
if net ~ [fd00::/8{48,64}] then accept;
reject;
};
export filter {
if net ~ [fd00::/8{48,64}] then accept;
reject;
};
};
}
protocol bgp peer_0197_himalia from bgp_peer {
neighbor fe80::42:42:1%wg0197 as 4242420197;
source address fe80::42:1;
}
protocol bgp peer_0565 from bgp_peer {
neighbor fe80::565%wg0565 as 4242420565;
source address fe80::2574;
}
protocol bgp peer_1271_north from bgp_peer {
neighbor fe80::2%wg1271 as 4242421271;
source address fe80::1;
}
protocol bgp peer_1271_south from bgp_peer {
neighbor fe80::1:2%wg1272 as 4242421271;
source address fe80::1:1;
}
protocol bgp peer_1280_wg1 from bgp_peer {
neighbor fde3:4c0d:2836:ff00::20%wg1280 as 4242421280;
source address fde3:4c0d:2836:ff00::21;
}
protocol bgp peer_1302 from bgp_peer {
neighbor fe80::a14d%wg1302 as 4242421302;
source address fe80::a14e;
}
protocol bgp peer_4719 from bgp_peer {
neighbor fe80::acab%wg4719 as 64719;
}
protocol device {
scan time 10;
}
'';
clerie.system-auto-upgrade = { clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true; autoUpgrade = true;
}; };

View File

@@ -5,18 +5,21 @@
"wg1272": "ENC[AES256_GCM,data:LU6jtNkNn2Xs+0OH8cD1HJnbHsNNnqlY83lDFa11/dHwVgdFxMtDXMqIMEc=,iv:/A8rWGR6jExa4ms7jTYC0eZVGCvlKw1I58Co41gw3TU=,tag:tIBRkQzFFpEEzflnDrpcOA==,type:str]", "wg1272": "ENC[AES256_GCM,data:LU6jtNkNn2Xs+0OH8cD1HJnbHsNNnqlY83lDFa11/dHwVgdFxMtDXMqIMEc=,iv:/A8rWGR6jExa4ms7jTYC0eZVGCvlKw1I58Co41gw3TU=,tag:tIBRkQzFFpEEzflnDrpcOA==,type:str]",
"wg1280": "ENC[AES256_GCM,data:F4KLY6jiZNl52ko32nM0iTER0DyHvaCSmxeYAKB0MLUD8l9u1Ugk6kYZnUc=,iv:XcaxnvxM1kE/ahNFX+BH7Jmr9q2Py1vHHqOjFUqs5O8=,tag:a1up4gGFqyHz2lmDRJl3bA==,type:str]", "wg1280": "ENC[AES256_GCM,data:F4KLY6jiZNl52ko32nM0iTER0DyHvaCSmxeYAKB0MLUD8l9u1Ugk6kYZnUc=,iv:XcaxnvxM1kE/ahNFX+BH7Jmr9q2Py1vHHqOjFUqs5O8=,tag:a1up4gGFqyHz2lmDRJl3bA==,type:str]",
"wg1302": "ENC[AES256_GCM,data:+MzuBPg3ql0/MEnpVvhQTsPIkKB9xnHN9Fk4VlZwK4ijKl+26d6oTSM7/R0=,iv:bPPmhenQLaKTGaDo4rBlKkrXrS1YysRuntbKq6zi2aQ=,tag:lztaTfDGT4kAq+HZMLl0Dw==,type:str]", "wg1302": "ENC[AES256_GCM,data:+MzuBPg3ql0/MEnpVvhQTsPIkKB9xnHN9Fk4VlZwK4ijKl+26d6oTSM7/R0=,iv:bPPmhenQLaKTGaDo4rBlKkrXrS1YysRuntbKq6zi2aQ=,tag:lztaTfDGT4kAq+HZMLl0Dw==,type:str]",
"wg1718": "ENC[AES256_GCM,data:lB+j2O15O7ogdB+QdutD3V/h8IREMMlpCsnMJWNPXlz196KM6WNNYCV2v5M=,iv:AwrRPQIFu8A14Vs5A9slkCPMkgU3VZxL1YupJnriEHc=,tag:Vpt0C6SFzUXGotdfc1ocmg==,type:str]",
"wg4719": "ENC[AES256_GCM,data:hoOOCUGdYFaAQZ6wkgmQl65M1qArvXa826IeJl+BUGf7UX0vxx9J0C2epTE=,iv:+1JcOgzClehkE0Ihd2mmoenPk51OBZMF0bMqapWah/c=,tag:xI5FU+GJU6BER9/n04ccLA==,type:str]", "wg4719": "ENC[AES256_GCM,data:hoOOCUGdYFaAQZ6wkgmQl65M1qArvXa826IeJl+BUGf7UX0vxx9J0C2epTE=,iv:+1JcOgzClehkE0Ihd2mmoenPk51OBZMF0bMqapWah/c=,tag:xI5FU+GJU6BER9/n04ccLA==,type:str]",
"wg-monitoring": "ENC[AES256_GCM,data:aw11Ygfll6llabXkuxtbTcCn1eb4NZX1IwArcXoRJCJSgwDrQZ3HLatov3w=,iv:J2VD5XS+BrIKeFb0NW1UYZUuGPkbjFmooZ93PVK31gw=,tag:2XLSa/2s6LRq3L7UdrTs/g==,type:str]", "wg-monitoring": "ENC[AES256_GCM,data:aw11Ygfll6llabXkuxtbTcCn1eb4NZX1IwArcXoRJCJSgwDrQZ3HLatov3w=,iv:J2VD5XS+BrIKeFb0NW1UYZUuGPkbjFmooZ93PVK31gw=,tag:2XLSa/2s6LRq3L7UdrTs/g==,type:str]",
"sops": { "sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [ "age": [
{ {
"recipient": "age1f0hscql4f4w7vyukzeu693xfedsl596dpjekc23q77ylp92zsvcqf9u75t", "recipient": "age1f0hscql4f4w7vyukzeu693xfedsl596dpjekc23q77ylp92zsvcqf9u75t",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3QWdFYjFjTmRVRlV3U3p4\nTSsyc1E0dWtiYjNtVkV2SXJEWkxnTDhLN1Y0Cng4aGlidjhydUVGaFcvK215aGdq\nN0FGajYwa1lPUCsva0tmNkErUGtlOWsKLS0tIG9pLzJEUDA2WWUzd1kzSVZrdVRX\nbUxjQzBCd3p0R1dWTTJaRmZNQjJEUVkKPz6OUQHpYrhRxMdQzpZRR3exVqkG2JvX\nI32PwvbeQK8cgpYwKLGar8U8aiPPm0Y64pID1wedDsNZzLqLOrS3wQ==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3QWdFYjFjTmRVRlV3U3p4\nTSsyc1E0dWtiYjNtVkV2SXJEWkxnTDhLN1Y0Cng4aGlidjhydUVGaFcvK215aGdq\nN0FGajYwa1lPUCsva0tmNkErUGtlOWsKLS0tIG9pLzJEUDA2WWUzd1kzSVZrdVRX\nbUxjQzBCd3p0R1dWTTJaRmZNQjJEUVkKPz6OUQHpYrhRxMdQzpZRR3exVqkG2JvX\nI32PwvbeQK8cgpYwKLGar8U8aiPPm0Y64pID1wedDsNZzLqLOrS3wQ==\n-----END AGE ENCRYPTED FILE-----\n"
} }
], ],
"lastmodified": "2025-06-10T20:51:10Z", "lastmodified": "2024-04-28T09:28:04Z",
"mac": "ENC[AES256_GCM,data:9lF4HV0oJyGHXdtYdMxR7+ev7JLAQVr6kE55nLoZcrbC92MHJzQpgM9XAhIynvwdAmC7ARd3orCn6eYkQJDdNX0JjMtebsBE+H4B7mEUCz8wtTN0iHS+oHmQxrqjnoSw2uHh9udgqAJa+sd6VGU3t2XUuuKtVHPwzROqVgvas9M=,iv:KT+BlFeXGZQc5pbBX+XOsmKEydUtir1LuPvseDkFeqw=,tag:hlRskY6b5EAZkUYs7ph/JA==,type:str]", "mac": "ENC[AES256_GCM,data:PHdhyie0Ya/nN9Kqj4z+zPyyKZFvGkznkv8Uf3LNSdPKWVtXARZc8Xodm4MjI2HvooryyyMFHkW75Aln02Rlvk3R8oI7rfFZC7s2P+LotumsYgRFf0JOUMxsxOtKW0ehuLy83Bw0rMJQo1gzTgBykcvdc2pkMmALF/vU/1VqgJ4=,iv:0JwcY0Q+8VAiVHYjynhcpsobQXOkK8EBe3QUJ8YUwFE=,tag:9xAcoxAPGxTvHVBydf3u9Q==,type:str]",
"pgp": [ "pgp": [
{ {
"created_at": "2024-04-28T09:25:37Z", "created_at": "2024-04-28T09:25:37Z",
@@ -25,6 +28,6 @@
} }
], ],
"unencrypted_suffix": "_unencrypted", "unencrypted_suffix": "_unencrypted",
"version": "3.10.2" "version": "3.8.1"
} }
} }

View File

@@ -4,6 +4,7 @@
imports = imports =
[ [
./hardware-configuration.nix ./hardware-configuration.nix
../../configuration/dn42
]; ];
profiles.clerie.mercury-vm.enable = true; profiles.clerie.mercury-vm.enable = true;
@@ -11,107 +12,177 @@
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/vda"; boot.loader.grub.device = "/dev/vda";
systemd.network.networks."10-wan" = { networking.useDHCP = false;
matchConfig.Name = "ens21"; # VM Nat Netz mercury
address = [ networking.interfaces.ens18.ipv4.addresses = [ { address = "192.168.10.25"; prefixLength = 24; } ];
"2001:638:904:ffc9::a/64" # OSPF Netz
]; networking.interfaces.ens19 = {};
routes = [ # Lokales Netz
{ Gateway = "2001:638:904:ffc9::1"; } networking.interfaces.ens20.ipv6.addresses = [ { address = "fd56:4902:eca0:5::1"; prefixLength = 64; } ];
]; # IPv6 Uplink
linkConfig.RequiredForOnline = "routable"; networking.interfaces.ens21.ipv6.addresses = [ { address = "2001:638:904:ffc9::a"; prefixLength = 64; } ];
ipv6AcceptRAConfig.DHCPv6Client = "no"; # Ildix
}; networking.interfaces.ens22.ipv6.addresses = [ { address = "fd81:edb3:71d8:ffff:2574::5"; prefixLength = 64; } ];
systemd.network.networks."10-nat-netz-mercury" = {
matchConfig.Name = "ens18";
address = [
"192.168.10.25/24"
];
routes = [
{ Gateway = "192.168.10.1"; }
];
linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
systemd.network.networks."10-dn42-ospf-netz" = {
matchConfig.Name = "ens19";
linkConfig.RequiredForOnline = "no";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
systemd.network.networks."10-dn42-lokales-netz" = {
# Aktuell nicht verwendet, da in lo-dn42 umgezogen
matchConfig.Name = "ens20";
linkConfig.RequiredForOnline = "no";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
systemd.network.networks."10-dn42-ildix" = {
matchConfig.Name = "ens22";
address = [
"fd81:edb3:71d8:ffff:2574::5/64"
];
linkConfig.RequiredForOnline = "no";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
profiles.clerie.dn42-router = { networking.defaultGateway = { address = "192.168.10.1"; interface = "ens18"; };
networking.defaultGateway6 = { address = "2001:638:904:ffc9::1"; interface = "ens21"; };
petabyte.policyrouting = {
enable = true; enable = true;
loopbackIp = "fd56:4902:eca0:5::1"; rules6 = [
routerId = "192.168.10.25"; { rule = "from all to fd56:4902:eca0::/48 lookup 1337"; prio = 10000; }
{ rule = "from all to all lookup 2342"; prio = 10000; }
ospfInterfaces = [ { rule = "from all to fd56:4902:eca0::/48 unreachable"; prio = 20000; }
"ens19" { rule = "from fd56:4902:eca0::/48 to all unreachable"; prio = 20000; }
]; ];
ibgpPeers = [
{
peerName = "gw1";
remoteAddress = "fd56:4902:eca0:1::1";
}
{
peerName = "gw6";
remoteAddress = "fd56:4902:eca0:6::1";
}
];
bgpPeers = [
{
peerName = "peer_ildix_clerie";
localAddress = "fd81:edb3:71d8:ffff:2574::5";
remoteAddress = "fd81:edb3:71d8:ffff::13";
remoteAsn = "4242422953";
}
{
peerName = "peer_ildix_nex";
localAddress = "fd81:edb3:71d8:ffff:2574::5";
remoteAddress = "fd81:edb3:71d8:ffff::14";
remoteAsn = "4242422953";
}
];
birdExtraConfig = ''
# Internal
protocol bgp peer_2953_dn42_ildix_service {
local as 4242422574;
neighbor fd81:edb3:71d8:ffff:2953::1 port 1179 as 4242422953;
source address fd81:edb3:71d8:ffff:2574::5;
multihop 64;
ipv6 {
table bgp6;
igp table ospf6;
next hop keep;
add paths tx;
import filter {
reject;
};
export filter {
accept;
};
};
}
'';
}; };
services.bird.enable = true;
services.bird.package = pkgs.bird2;
services.bird.config = ''
router id ${ (lib.head config.networking.interfaces.ens18.ipv4.addresses).address };
ipv6 table ospf6;
ipv6 table bgp6;
protocol direct {
interface "ens20";
ipv6 {
table ospf6;
};
}
protocol static {
ipv6 {
table bgp6;
};
route fd56:4902:eca0::/48 via "lo";
route fd56:4902:eca0::/52 via "lo";
}
protocol kernel {
ipv6 {
table ospf6;
export filter {
krt_prefsrc=fd56:4902:eca0:5::1;
accept;
};
import none;
};
kernel table 1337;
}
protocol kernel {
ipv6 {
table bgp6;
export filter {
krt_prefsrc=fd56:4902:eca0:5::1;
accept;
};
import none;
};
kernel table 2342;
}
protocol ospf v3 {
ipv6 {
table ospf6;
import all;
export all;
};
area 0 {
interface "ens19" {
cost 80;
type broadcast;
};
};
}
protocol bgp gw1 {
local as 4242422574;
graceful restart on;
neighbor fd56:4902:eca0:1::1 as 4242422574;
source address fd56:4902:eca0:5::1;
ipv6 {
table bgp6;
igp table ospf6;
next hop self;
import keep filtered;
import all;
export all;
};
}
protocol bgp gw6 {
local as 4242422574;
graceful restart on;
neighbor fd56:4902:eca0:6::1 as 4242422574;
source address fd56:4902:eca0:5::1;
ipv6 {
table bgp6;
igp table ospf6;
next hop self;
import keep filtered;
import all;
export all;
};
}
template bgp ildix {
local as 4242422574;
graceful restart on;
source address fd81:edb3:71d8:ffff:2574::5;
ipv6 {
table bgp6;
igp table ospf6;
next hop self;
import keep filtered;
import filter {
if net ~ [fd00::/8{8,64}] then accept;
reject;
};
export filter {
if net ~ [fd00::/8{8,64}] then accept;
reject;
};
};
}
protocol bgp peer_ildix_clerie from ildix {
neighbor fd81:edb3:71d8:ffff::13 as 4242422953;
}
protocol bgp peer_ildix_nex from ildix {
neighbor fd81:edb3:71d8:ffff::14 as 4242422953;
}
# Internal
protocol bgp peer_2953_dn42_ildix_service {
local as 4242422574;
neighbor fd81:edb3:71d8:ffff:2953::1 port 1179 as 4242422953;
source address fd81:edb3:71d8:ffff:2574::5;
multihop 64;
ipv6 {
table bgp6;
igp table ospf6;
next hop keep;
add paths tx;
import filter {
reject;
};
export filter {
accept;
};
};
}
protocol device {
scan time 10;
}
'';
clerie.system-auto-upgrade = { clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true; autoUpgrade = true;
startAt = "*-*-* 06:22:00"; startAt = "*-*-* 06:22:00";
}; };

View File

@@ -4,6 +4,7 @@
imports = imports =
[ [
./hardware-configuration.nix ./hardware-configuration.nix
../../configuration/dn42
]; ];
profiles.clerie.cybercluster-vm.enable = true; profiles.clerie.cybercluster-vm.enable = true;
@@ -11,101 +12,177 @@
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/vda"; boot.loader.grub.device = "/dev/vda";
systemd.network.networks."10-wan" = { networking.useDHCP = false;
matchConfig.Name = "ens18"; networking.interfaces.lo.ipv6.addresses = [ { address = "fd56:4902:eca0:6::1"; prefixLength = 64; } ];
address = [ # IPv6 Uplink
"2001:638:904:ffc9::9/64" networking.interfaces.ens18.ipv6.addresses = [ { address = "2001:638:904:ffc9::9"; prefixLength = 64; } ];
]; # Ildix
routes = [ networking.interfaces.ens19.ipv6.addresses = [ { address = "fd81:edb3:71d8:ffff:2574::6"; prefixLength = 64; } ];
{ Gateway = "2001:638:904:ffc9::1"; } # VM Nat Netz mercury
]; networking.interfaces.ens20.ipv4.addresses = [ { address = "192.168.10.26"; prefixLength = 24; } ];
linkConfig.RequiredForOnline = "routable"; # OSPF Netz
ipv6AcceptRAConfig.DHCPv6Client = "no"; networking.interfaces.ens21 = {};
};
systemd.network.networks."10-nat-netz-mercury" = {
matchConfig.Name = "ens20";
address = [
"192.168.10.26/24"
];
routes = [
{ Gateway = "192.168.10.1"; }
];
linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
systemd.network.networks."10-dn42-ospf-netz" = {
matchConfig.Name = "ens21";
linkConfig.RequiredForOnline = "no";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
systemd.network.networks."10-dn42-ildix" = {
matchConfig.Name = "ens19";
address = [
"fd81:edb3:71d8:ffff:2574::6/64"
];
linkConfig.RequiredForOnline = "no";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
profiles.clerie.dn42-router = {
networking.defaultGateway = { address = "192.168.10.1"; interface = "ens20"; };
networking.defaultGateway6 = { address = "2001:638:904:ffc9::1"; interface = "ens18"; };
petabyte.policyrouting = {
enable = true; enable = true;
loopbackIp = "fd56:4902:eca0:6::1"; rules6 = [
routerId = "192.168.10.26"; { rule = "from all to fd56:4902:eca0::/48 lookup 1337"; prio = 10000; }
{ rule = "from all to all lookup 2342"; prio = 10000; }
ospfInterfaces = [ { rule = "from all to fd56:4902:eca0::/48 unreachable"; prio = 20000; }
"ens21" { rule = "from fd56:4902:eca0::/48 to all unreachable"; prio = 20000; }
]; ];
ibgpPeers = [
{
peerName = "gw1";
remoteAddress = "fd56:4902:eca0:1::1";
}
{
peerName = "gw5";
remoteAddress = "fd56:4902:eca0:5::1";
}
];
bgpPeers = [
{
peerName = "peer_ildix_clerie";
localAddress = "fd81:edb3:71d8:ffff:2574::6";
remoteAddress = "fd81:edb3:71d8:ffff::13";
remoteAsn = "4242422953";
}
{
peerName = "peer_ildix_nex";
localAddress = "fd81:edb3:71d8:ffff:2574::6";
remoteAddress = "fd81:edb3:71d8:ffff::14";
remoteAsn = "4242422953";
}
];
birdExtraConfig = ''
# Internal
protocol bgp peer_2953_dn42_ildix_service {
local as 4242422574;
neighbor fd81:edb3:71d8:ffff:2953::1 port 1179 as 4242422953;
source address fd81:edb3:71d8:ffff:2574::6;
multihop 64;
ipv6 {
table bgp6;
igp table ospf6;
next hop keep;
add paths tx;
import filter {
reject;
};
export filter {
accept;
};
};
}
'';
}; };
services.bird.enable = true;
services.bird.package = pkgs.bird2;
services.bird.config = ''
router id ${ (lib.head config.networking.interfaces.ens20.ipv4.addresses).address };
ipv6 table ospf6;
ipv6 table bgp6;
protocol direct {
interface "lo";
ipv6 {
table ospf6;
};
}
protocol static {
ipv6 {
table bgp6;
};
#route fd56:4902:eca0::/48 via "lo";
#route fd56:4902:eca0::/52 via "lo";
}
protocol kernel {
ipv6 {
table ospf6;
export filter {
krt_prefsrc=fd56:4902:eca0:6::1;
accept;
};
import none;
};
kernel table 1337;
}
protocol kernel {
ipv6 {
table bgp6;
export filter {
krt_prefsrc=fd56:4902:eca0:6::1;
accept;
};
import none;
};
kernel table 2342;
}
protocol ospf v3 {
ipv6 {
table ospf6;
import all;
export all;
};
area 0 {
interface "ens21" {
cost 80;
type broadcast;
};
};
}
protocol bgp gw1 {
local as 4242422574;
graceful restart on;
neighbor fd56:4902:eca0:1::1 as 4242422574;
source address fd56:4902:eca0:6::1;
ipv6 {
table bgp6;
igp table ospf6;
next hop self;
import keep filtered;
import all;
export all;
};
}
protocol bgp gw5 {
local as 4242422574;
graceful restart on;
neighbor fd56:4902:eca0:5::1 as 4242422574;
source address fd56:4902:eca0:6::1;
ipv6 {
table bgp6;
igp table ospf6;
next hop self;
import keep filtered;
import all;
export all;
};
}
template bgp ildix {
local as 4242422574;
graceful restart on;
source address fd81:edb3:71d8:ffff:2574::6;
ipv6 {
table bgp6;
igp table ospf6;
next hop self;
import keep filtered;
import filter {
if net ~ [fd00::/8{8,64}] then accept;
reject;
};
export filter {
if net ~ [fd00::/8{8,64}] then accept;
reject;
};
};
}
protocol bgp peer_ildix_clerie from ildix {
neighbor fd81:edb3:71d8:ffff::13 as 4242422953;
}
protocol bgp peer_ildix_nex from ildix {
neighbor fd81:edb3:71d8:ffff::14 as 4242422953;
}
# Internal
protocol bgp peer_2953_dn42_ildix_service {
local as 4242422574;
neighbor fd81:edb3:71d8:ffff:2953::1 port 1179 as 4242422953;
source address fd81:edb3:71d8:ffff:2574::6;
multihop 64;
ipv6 {
table bgp6;
igp table ospf6;
next hop keep;
add paths tx;
import filter {
reject;
};
export filter {
accept;
};
};
}
protocol device {
scan time 10;
}
'';
clerie.system-auto-upgrade = { clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true; autoUpgrade = true;
startAt = "*-*-* 07:22:00"; startAt = "*-*-* 07:22:00";
}; };

View File

@@ -11,40 +11,19 @@
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/vda"; boot.loader.grub.device = "/dev/vda";
systemd.network.networks."10-wan" = { networking.useDHCP = false;
matchConfig.Name = "ens20"; # VM Nat Netz mercury
address = [ networking.interfaces.ens18.ipv4.addresses = [ { address = "192.168.10.27"; prefixLength = 24; } ];
"2001:638:904:ffcb::4/64" # Ildix
]; networking.interfaces.ens19.ipv6.addresses = [ { address = "fd81:edb3:71d8:ffff::13"; prefixLength = 64; } ];
routes = [ # Route to dn42-ildix-service
{ Gateway = "2001:638:904:ffcb::1"; } networking.interfaces.ens19.ipv6.routes = [ { address = "fd81:edb3:71d8::"; prefixLength = 48; via = "fd81:edb3:71d8:ffff:2953::1"; } ];
];
linkConfig.RequiredForOnline = "routable"; # public address
ipv6AcceptRAConfig.DHCPv6Client = "no"; networking.interfaces.ens20.ipv6.addresses = [ { address = "2001:638:904:ffcb::4"; prefixLength = 64; } ];
};
systemd.network.networks."10-nat-netz-mercury" = { networking.defaultGateway6 = { address = "2001:638:904:ffcb::1"; interface = "ens20"; };
matchConfig.Name = "ens18"; networking.defaultGateway = { address = "192.168.10.1"; interface = "ens18"; };
address = [
"192.168.10.27/24"
];
routes = [
{ Gateway = "192.168.10.1"; }
];
linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
systemd.network.networks."10-dn42-ildix" = {
matchConfig.Name = "ens19";
address = [
"fd81:edb3:71d8:ffff::13/64"
];
routes = [
# Route to dn42-ildix-service
{ Destination = "fd81:edb3:71d8::/48"; Gateway = "fd81:edb3:71d8:ffff:2953::1"; }
];
linkConfig.RequiredForOnline = "no";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
# Open Firewall for BGP # Open Firewall for BGP
networking.firewall.allowedTCPPorts = [ 179 ]; networking.firewall.allowedTCPPorts = [ 179 ];
@@ -57,7 +36,7 @@
services.bird.enable = true; services.bird.enable = true;
services.bird.package = pkgs.bird2; services.bird.package = pkgs.bird2;
services.bird.config = '' services.bird.config = ''
router id 192.168.10.27; router id ${ (lib.head config.networking.interfaces.ens18.ipv4.addresses).address };
protocol direct { protocol direct {
interface "ens19"; interface "ens19";
@@ -162,6 +141,7 @@
''; '';
clerie.system-auto-upgrade = { clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true; autoUpgrade = true;
}; };

View File

@@ -7,7 +7,7 @@
services.bird.enable = false; services.bird.enable = false;
services.bird.package = pkgs.bird2; services.bird.package = pkgs.bird2;
services.bird.config = '' services.bird.config = ''
router id 192.168.10.28; router id ${(lib.head config.networking.interfaces.ens18.ipv4.addresses).address};
ipv6 table bgp6; ipv6 table bgp6;
@@ -22,7 +22,7 @@
ipv6 { ipv6 {
table bgp6; table bgp6;
export filter { export filter {
krt_prefsrc=fd81:edb3:71d8::1; krt_prefsrc=${(lib.head config.networking.interfaces.lo.ipv6.addresses).address};
accept; accept;
}; };
import none; import none;

View File

@@ -19,58 +19,27 @@
# Define on which hard drive you want to install Grub. # Define on which hard drive you want to install Grub.
boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only
systemd.network.netdevs."10-lo-dn42" = { networking.useDHCP = false;
netdevConfig = { networking.interfaces.lo.ipv6.addresses = [
Kind = "dummy"; { address = "fd81:edb3:71d8::1"; prefixLength = 128; }
Name = "lo-dn42"; { address = "fd81:edb3:71d8::53"; prefixLength = 128; }
}; ];
}; # VM Nat Netz mercury
networking.interfaces.ens18.ipv4.addresses = [ { address = "192.168.10.28"; prefixLength = 24; } ];
# ildix peering lan
networking.interfaces.ens19.ipv6.addresses = [ { address = "fd81:edb3:71d8:ffff:2953::1"; prefixLength = 64; } ];
# IPv6 Uplink
networking.interfaces.ens20.ipv6.addresses = [ { address = "2001:638:904:ffc9::c"; prefixLength = 64; } ];
systemd.network.networks."10-lo-dn42" = { networking.defaultGateway6 = { address = "2001:638:904:ffc9::1"; interface = "ens20"; };
matchConfig.Name = "lo-dn42"; networking.defaultGateway = { address = "192.168.10.1"; interface = "ens18"; };
address = [
"fd81:edb3:71d8::1/128"
"fd81:edb3:71d8::53/128"
];
linkConfig.RequiredForOnline = "no";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
systemd.network.networks."10-wan" = {
matchConfig.Name = "ens20";
address = [
"2001:638:904:ffc9::c/64"
];
routes = [
{ Gateway = "2001:638:904:ffc9::1"; }
];
linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
systemd.network.networks."10-nat-netz-mercury" = {
matchConfig.Name = "ens18";
address = [
"192.168.10.28/24"
];
routes = [
{ Gateway = "192.168.10.1"; }
];
linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
systemd.network.networks."10-dn42-ildix" = {
matchConfig.Name = "ens19";
address = [
"fd81:edb3:71d8:ffff:2953::1/64"
];
linkConfig.RequiredForOnline = "no";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
services.nginx.enable = true; services.nginx.enable = true;
networking.firewall.allowedTCPPorts = [ 80 443 ]; networking.firewall.allowedTCPPorts = [ 80 443 ];
clerie.system-auto-upgrade = { clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true; autoUpgrade = true;
}; };

View File

@@ -5,21 +5,20 @@
services.fernglas = { services.fernglas = {
enable = true; enable = true;
useMimalloc = false;
settings = { settings = {
api.bind = "[::1]:3000"; api.bind = "[::1]:3000";
collectors = { collectors = [
bgp_any = { {
collector_type = "Bgp"; collector_type = "Bgp";
bind = "[::]:1179"; bind = "[::]:1179";
default_peer_config = { default_peer_config = {
asn = 4242422953; asn = 4242422953;
router_id = "192.168.10.28"; router_id = "${(lib.head config.networking.interfaces.ens18.ipv4.addresses).address}";
route_state = "Accepted"; route_state = "Accepted";
add_path = true; add_path = true;
}; };
}; }
}; ];
}; };
}; };

View File

@@ -4,14 +4,17 @@
imports = imports =
[ [
./hardware-configuration.nix ./hardware-configuration.nix
../../configuration/router
]; ];
profiles.clerie.hetzner-cloud.enable = true; profiles.clerie.hetzner-cloud.enable = true;
profiles.clerie.router.enable = true;
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda"; boot.loader.grub.device = "/dev/sda";
networking.useDHCP = false;
systemd.network.enable = true;
systemd.network.networks."10-wan" = { systemd.network.networks."10-wan" = {
address = [ address = [
"2a01:4f8:c0c:15f1::1/64" "2a01:4f8:c0c:15f1::1/64"
@@ -74,7 +77,7 @@
{ {
# palladium # palladium
allowedIPs = [ "2a01:4f8:c0c:15f1::8103/128" "10.20.30.103/32" ]; allowedIPs = [ "2a01:4f8:c0c:15f1::8103/128" "10.20.30.103/32" ];
publicKey = "AetxArlP6uiPEPnrk9Yx+ofhBOgOY4NLTqcKM/EA9mk="; publicKey = "kxn69ynVyPJeShsAlVz5Xnd7U74GmCAw181b0+/qj3k=";
} }
#{ #{
# allowedIPs = [ "2a01:4f8:c0c:15f1::8104/128" "10.20.30.104/32" ]; # allowedIPs = [ "2a01:4f8:c0c:15f1::8104/128" "10.20.30.104/32" ];
@@ -131,7 +134,6 @@
clerie.nginx-port-forward = { clerie.nginx-port-forward = {
enable = true; enable = true;
resolver = "127.0.0.53";
tcpPorts."443" = { tcpPorts."443" = {
host = "localhost"; host = "localhost";
port = 22; port = 22;

View File

@@ -4,6 +4,7 @@
imports = imports =
[ [
./hardware-configuration.nix ./hardware-configuration.nix
../../configuration/hydra-build-machine
./build-machines.nix ./build-machines.nix
./hydra.nix ./hydra.nix
@@ -11,7 +12,6 @@
]; ];
profiles.clerie.mercury-vm.enable = true; profiles.clerie.mercury-vm.enable = true;
profiles.clerie.hydra-build-machine.enable = true;
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/vda"; boot.loader.grub.device = "/dev/vda";
@@ -22,6 +22,9 @@
"aarch64-linux" "aarch64-linux"
]; ];
networking.useDHCP = false;
systemd.network.enable = true;
systemd.network.networks."10-wan" = { systemd.network.networks."10-wan" = {
matchConfig.Name = "ens18"; matchConfig.Name = "ens18";
address = [ address = [
@@ -31,7 +34,6 @@
{ Gateway = "2001:638:904:ffcb::1"; } { Gateway = "2001:638:904:ffcb::1"; }
]; ];
linkConfig.RequiredForOnline = "routable"; linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
}; };
systemd.network.networks."10-nat-netz-mercury" = { systemd.network.networks."10-nat-netz-mercury" = {
matchConfig.Name = "ens19"; matchConfig.Name = "ens19";
@@ -42,7 +44,6 @@
{ Gateway = "192.168.10.1"; } { Gateway = "192.168.10.1"; }
]; ];
linkConfig.RequiredForOnline = "routable"; linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
}; };
services.nginx.enable = true; services.nginx.enable = true;

View File

@@ -4,10 +4,10 @@
imports = imports =
[ [
./hardware-configuration.nix ./hardware-configuration.nix
../../configuration/hydra-build-machine
]; ];
profiles.clerie.cybercluster-vm.enable = true; profiles.clerie.cybercluster-vm.enable = true;
profiles.clerie.hydra-build-machine.enable = true;
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/vda"; boot.loader.grub.device = "/dev/vda";
@@ -18,6 +18,9 @@
"aarch64-linux" "aarch64-linux"
]; ];
networking.useDHCP = false;
systemd.network.enable = true;
systemd.network.networks."10-wan" = { systemd.network.networks."10-wan" = {
matchConfig.Name = "ens18"; matchConfig.Name = "ens18";
address = [ address = [
@@ -29,7 +32,6 @@
{ Gateway = "141.24.50.1"; } { Gateway = "141.24.50.1"; }
]; ];
linkConfig.RequiredForOnline = "routable"; linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
}; };
clerie.monitoring = { clerie.monitoring = {

View File

@@ -5,6 +5,8 @@
[ [
./hardware-configuration.nix ./hardware-configuration.nix
../../configuration/desktop
./android.nix ./android.nix
./backup.nix ./backup.nix
./etesync-dav.nix ./etesync-dav.nix
@@ -13,8 +15,6 @@
./programs.nix ./programs.nix
]; ];
profiles.clerie.desktop.enable = true;
# Use the systemd-boot EFI boot loader. # Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;

View File

@@ -1,6 +1,8 @@
{ ... }: { ... }:
{ {
profiles.clerie.common-networking.enable = true;
profiles.clerie.wg-clerie = { profiles.clerie.wg-clerie = {
enable = true; enable = true;
ipv6s = [ "2a01:4f8:c0c:15f1::8011/128" ]; ipv6s = [ "2a01:4f8:c0c:15f1::8011/128" ];

View File

@@ -1,7 +1,9 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
profiles.clerie.firefox.enable = true; environment.systemPackages = with pkgs; [
firefox-wayland
];
users.users.clerie.packages = with pkgs; [ users.users.clerie.packages = with pkgs; [
keepassxc keepassxc
@@ -14,11 +16,10 @@
tio tio
xournalpp xournalpp
libreoffice onlyoffice-bin
krita krita
inkscape inkscape
dune3d
wireshark wireshark
tcpdump tcpdump

View File

@@ -13,6 +13,9 @@
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda"; boot.loader.grub.device = "/dev/sda";
networking.useDHCP = false;
systemd.network.enable = true;
systemd.network.networks."10-wan" = { systemd.network.networks."10-wan" = {
address = [ address = [
"2a01:4f8:1c1c:9577::1/64" "2a01:4f8:1c1c:9577::1/64"

View File

@@ -25,48 +25,6 @@
fail_if_not_ssl: true fail_if_not_ssl: true
fail_if_body_not_matches_regexp: fail_if_body_not_matches_regexp:
- "Synapse is running" - "Synapse is running"
headers:
User-Agent: "monitoring.clerie.de, blackbox exporter"
http4:
prober: http
http:
preferred_ip_protocol: ip4
ip_protocol_fallback: false
fail_if_ssl: true
follow_redirects: false
valid_status_codes: [ 200, 204, 301, 302, 303, 307, 308 ]
headers:
User-Agent: "monitoring.clerie.de, blackbox exporter"
http6:
prober: http
http:
preferred_ip_protocol: ip6
ip_protocol_fallback: false
fail_if_ssl: true
follow_redirects: false
valid_status_codes: [ 200, 204, 301, 302, 303, 307, 308 ]
headers:
User-Agent: "monitoring.clerie.de, blackbox exporter"
https4:
prober: http
http:
preferred_ip_protocol: ip4
ip_protocol_fallback: false
fail_if_not_ssl: true
follow_redirects: false
valid_status_codes: [ 200, 204, 301, 302, 303, 307, 308 ]
headers:
User-Agent: "monitoring.clerie.de, blackbox exporter"
https6:
prober: http
http:
preferred_ip_protocol: ip6
ip_protocol_fallback: false
fail_if_not_ssl: true
follow_redirects: false
valid_status_codes: [ 200, 204, 301, 302, 303, 307, 308 ]
headers:
User-Agent: "monitoring.clerie.de, blackbox exporter"
''; '';
}; };
} }

View File

@@ -10,7 +10,6 @@
./grafana.nix ./grafana.nix
./nixos-validator.nix ./nixos-validator.nix
./prometheus.nix ./prometheus.nix
./targets.nix
./uptimestatus.nix ./uptimestatus.nix
]; ];
@@ -19,6 +18,9 @@
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda"; boot.loader.grub.device = "/dev/sda";
networking.useDHCP = false;
systemd.network.enable = true;
systemd.network.networks."10-wan" = { systemd.network.networks."10-wan" = {
matchConfig.Name = "ens19"; matchConfig.Name = "ens19";
address = [ address = [
@@ -28,7 +30,6 @@
{ Gateway = "2001:638:904:ffca::1"; } { Gateway = "2001:638:904:ffca::1"; }
]; ];
linkConfig.RequiredForOnline = "routable"; linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
}; };
systemd.network.networks."10-nat-netz-mercury" = { systemd.network.networks."10-nat-netz-mercury" = {
matchConfig.Name = "ens18"; matchConfig.Name = "ens18";
@@ -39,7 +40,6 @@
{ Gateway = "192.168.10.1"; } { Gateway = "192.168.10.1"; }
]; ];
linkConfig.RequiredForOnline = "routable"; linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
}; };
services.prometheus.exporters.node.enable = true; services.prometheus.exporters.node.enable = true;

View File

@@ -1,355 +0,0 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": 16,
"links": [],
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisBorderShow": false,
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"barWidthFactor": 0.6,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
}
]
},
"unit": "reqps"
},
"overrides": []
},
"gridPos": {
"h": 10,
"w": 12,
"x": 0,
"y": 0
},
"id": 1,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"hideZeros": false,
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "12.0.2+security-01",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"disableTextWrap": false,
"editorMode": "builder",
"expr": "sum by(server_name) (rate(nginxlog_http_response_count_total{server_name=~\"$server_name\"}[5m]))",
"fullMetaSearch": false,
"includeNullMetadata": true,
"legendFormat": "__auto",
"range": true,
"refId": "A",
"useBackend": false
}
],
"title": "Total requests",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisBorderShow": false,
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"barWidthFactor": 0.6,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
}
]
},
"unit": "reqps"
},
"overrides": []
},
"gridPos": {
"h": 10,
"w": 12,
"x": 12,
"y": 0
},
"id": 2,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"hideZeros": false,
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "12.0.2+security-01",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"disableTextWrap": false,
"editorMode": "builder",
"expr": "sum by(server_name, method) (rate(nginxlog_http_response_count_total{server_name=~\"$server_name\"}[5m]))",
"fullMetaSearch": false,
"includeNullMetadata": true,
"legendFormat": "{{server_name}}: {{method}}",
"range": true,
"refId": "A",
"useBackend": false
}
],
"title": "Status codes",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisBorderShow": false,
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"barWidthFactor": 0.6,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
}
]
},
"unit": "reqps"
},
"overrides": []
},
"gridPos": {
"h": 10,
"w": 12,
"x": 0,
"y": 10
},
"id": 3,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"hideZeros": false,
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "12.0.2+security-01",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"disableTextWrap": false,
"editorMode": "builder",
"expr": "sum by(server_name, status) (rate(nginxlog_http_response_count_total{server_name=~\"$server_name\"}[5m]))",
"fullMetaSearch": false,
"includeNullMetadata": true,
"legendFormat": "{{server_name}}: HTTP {{status}}",
"range": true,
"refId": "A",
"useBackend": false
}
],
"title": "Response codes",
"type": "timeseries"
}
],
"preload": false,
"refresh": "30s",
"schemaVersion": 41,
"tags": [],
"templating": {
"list": [
{
"current": {
"text": "All",
"value": [
"$__all"
]
},
"definition": "label_values(nginxlog_http_response_count_total,server_name)",
"includeAll": true,
"label": "vHost",
"multi": true,
"name": "server_name",
"options": [],
"query": {
"qryType": 1,
"query": "label_values(nginxlog_http_response_count_total,server_name)",
"refId": "PrometheusVariableQueryEditor-VariableQuery"
},
"refresh": 1,
"regex": "",
"type": "query"
}
]
},
"time": {
"from": "now-3h",
"to": "now"
},
"timepicker": {},
"timezone": "browser",
"title": "Nginx Exporter",
"uid": "b042a880-3cb0-4dd3-ae48-4745a58af698",
"version": 7
}

View File

@@ -52,12 +52,6 @@ let
attrByPath ["clerie" "monitoring" "blackbox"] false host.config) attrByPath ["clerie" "monitoring" "blackbox"] false host.config)
monitoringHosts); monitoringHosts);
nginxlogMonitoringTargets = mapAttrsToList (name: host:
"${host.config.networking.hostName}.mon.clerie.de:9117")
(filterAttrs (name: host:
attrByPath ["services" "prometheus" "exporters" "nginxlog" "enable"] false host.config)
monitoringHosts);
eachWithEachOther = (f: x: y: lib.lists.flatten (lib.lists.forEach x (a: lib.lists.forEach y (b: f a b)))); eachWithEachOther = (f: x: y: lib.lists.flatten (lib.lists.forEach x (a: lib.lists.forEach y (b: f a b))));
in { in {
@@ -110,21 +104,6 @@ in {
relabelAddressToInstance relabelAddressToInstance
]; ];
} }
{
job_name = "alertmanager";
scrape_interval = "20s";
scheme = "http";
static_configs = [
{
targets = [
"monitoring-3.mon.clerie.de:9093"
];
}
];
relabel_configs = [
relabelAddressToInstance
];
}
{ {
job_name = "node-exporter"; job_name = "node-exporter";
scrape_interval = "20s"; scrape_interval = "20s";
@@ -162,7 +141,10 @@ in {
}; };
static_configs = [ static_configs = [
{ {
targets = map (target: "${target};infra") config.profiles.clerie.monitoring-server.probeTargets.node-exporter-uberspace; targets = [
"clerie.uber.space;infra"
"cleriewi.uber.space;infra"
];
} }
]; ];
relabel_configs = [ relabel_configs = [
@@ -218,7 +200,7 @@ in {
relabelAddressToInstance relabelAddressToInstance
{ {
target_label = "__address__"; target_label = "__address__";
replacement = "monitoring-3.mon.clerie.de:9153"; replacement = "[::1]:9153";
} }
]; ];
} }
@@ -243,7 +225,17 @@ in {
}; };
static_configs = [ static_configs = [
{ {
targets = eachWithEachOther (instance: target: "${instance};${target}") blackboxMonitoringTargets config.profiles.clerie.monitoring-server.probeTargets.blackbox-icmp6; targets = eachWithEachOther (instance: target: "${instance};${target}") blackboxMonitoringTargets [
"clerie.de"
"tagesschau.de"
"google.com"
"achtbaan.nikhef.nl"
"fluorine.net.clerie.de"
"www.fem.tu-ilmenau.de"
"www.heise.de"
"dyon.net.entr0py.de"
"matrix.fachschaften.org"
];
} }
]; ];
relabel_configs = [ relabel_configs = [
@@ -275,7 +267,18 @@ in {
}; };
static_configs = [ static_configs = [
{ {
targets = eachWithEachOther (instance: target: "${instance};${target}") blackboxMonitoringTargets config.profiles.clerie.monitoring-server.probeTargets.blackbox-icmp4; targets = eachWithEachOther (instance: target: "${instance};${target}") blackboxMonitoringTargets [
"clerie.de"
"tagesschau.de"
"google.com"
"achtbaan.nikhef.nl"
"www.fem.tu-ilmenau.de"
"www.heise.de"
"matrix.bau-ha.us"
"dyon.net.entr0py.de"
"matrix.entr0py.de"
"matrix.fachschaften.org"
];
} }
]; ];
relabel_configs = [ relabel_configs = [
@@ -307,7 +310,10 @@ in {
}; };
static_configs = [ static_configs = [
{ {
targets = config.profiles.clerie.monitoring-server.probeTargets.blackbox-local-synapse; targets = [
"matrix.entr0py.de"
"matrix.fachschaften.org"
];
} }
]; ];
relabel_configs = [ relabel_configs = [
@@ -387,122 +393,6 @@ in {
relabelAddressToInstance relabelAddressToInstance
]; ];
} }
{
job_name = "blackbox_local_http6";
scrape_interval = "100s";
metrics_path = "/probe";
params = {
module = [ "http6" ];
};
static_configs = [
{
targets = config.profiles.clerie.monitoring-server.probeTargets.blackbox-local-http6;
}
];
relabel_configs = [
{
source_labels = [ "__address__" ];
target_label = "__param_target";
replacement = "http://\${1}";
}
{
source_labels = [ "__address__" ];
target_label = "target";
}
{
target_label = "__address__";
replacement = "monitoring-3.mon.clerie.de:9115";
}
relabelAddressToInstance
];
}
{
job_name = "blackbox_local_http4";
scrape_interval = "100s";
metrics_path = "/probe";
params = {
module = [ "http4" ];
};
static_configs = [
{
targets = config.profiles.clerie.monitoring-server.probeTargets.blackbox-local-http4;
}
];
relabel_configs = [
{
source_labels = [ "__address__" ];
target_label = "__param_target";
replacement = "http://\${1}";
}
{
source_labels = [ "__address__" ];
target_label = "target";
}
{
target_label = "__address__";
replacement = "monitoring-3.mon.clerie.de:9115";
}
relabelAddressToInstance
];
}
{
job_name = "blackbox_local_https6";
scrape_interval = "100s";
metrics_path = "/probe";
params = {
module = [ "https6" ];
};
static_configs = [
{
targets = config.profiles.clerie.monitoring-server.probeTargets.blackbox-local-http6;
}
];
relabel_configs = [
{
source_labels = [ "__address__" ];
target_label = "__param_target";
replacement = "https://\${1}";
}
{
source_labels = [ "__address__" ];
target_label = "target";
}
{
target_label = "__address__";
replacement = "monitoring-3.mon.clerie.de:9115";
}
relabelAddressToInstance
];
}
{
job_name = "blackbox_local_https4";
scrape_interval = "100s";
metrics_path = "/probe";
params = {
module = [ "https4" ];
};
static_configs = [
{
targets = config.profiles.clerie.monitoring-server.probeTargets.blackbox-local-http4;
}
];
relabel_configs = [
{
source_labels = [ "__address__" ];
target_label = "__param_target";
replacement = "https://\${1}";
}
{
source_labels = [ "__address__" ];
target_label = "target";
}
{
target_label = "__address__";
replacement = "monitoring-3.mon.clerie.de:9115";
}
relabelAddressToInstance
];
}
{ {
job_name = "hydra"; job_name = "hydra";
scrape_interval = "20s"; scrape_interval = "20s";
@@ -529,37 +419,12 @@ in {
relabelAddressToInstance relabelAddressToInstance
]; ];
} }
{
job_name = "clerie_keys";
scrape_interval = "5m";
scheme = "https";
metrics_path = "/gpg/clerie@clerie.de.metrics.txt";
static_configs = [
{
targets = [
"clerie.de"
];
}
];
}
{
job_name = "nginxlog-exporter";
scrape_interval = "20s";
static_configs = [
{
targets = nginxlogMonitoringTargets;
}
];
relabel_configs = [
relabelAddressToInstance
];
}
]; ];
alertmanagers = [ alertmanagers = [
{ {
static_configs = [ { static_configs = [ {
targets = [ targets = [
"monitoring-3.mon.clerie.de:9093" "[::1]:9093"
]; ];
} ]; } ];
} }

View File

@@ -18,7 +18,7 @@ groups:
summary: "Current system of {{ $labels.instance }} not in sync with config" summary: "Current system of {{ $labels.instance }} not in sync with config"
description: "The current system hash of {{ $labels.instance }} does not match the one generated by hydra based on the current config" description: "The current system hash of {{ $labels.instance }} does not match the one generated by hydra based on the current config"
- alert: StorageFull - alert: StorageFull
expr: ((last_over_time(node_filesystem_avail_bytes{job="node-exporter", mountpoint!="/nix/store"}[5m]) / last_over_time(node_filesystem_size_bytes{job="node-exporter", mountpoint!="/nix/store"}[5m])) * 100) < 5 expr: ((last_over_time(node_filesystem_avail_bytes{job="node-exporter"}[5m]) / last_over_time(node_filesystem_size_bytes{job="node-exporter"}[5m])) * 100) < 5
for: 30m for: 30m
labels: labels:
severity: critical severity: critical
@@ -26,7 +26,7 @@ groups:
summary: "Storage of {{ $labels.instance }} is full" summary: "Storage of {{ $labels.instance }} is full"
description: "Storage of {{ $labels.instance }} for {{ $labels.mountpoint }} on {{ $labels.device }} is full" description: "Storage of {{ $labels.instance }} for {{ $labels.mountpoint }} on {{ $labels.device }} is full"
- alert: StorageAlmostFull - alert: StorageAlmostFull
expr: ((last_over_time(node_filesystem_avail_bytes{job="node-exporter", mountpoint!="/nix/store"}[5m]) / last_over_time(node_filesystem_size_bytes{job="node-exporter", mountpoint!="/nix/store"}[5m])) * 100) < 10 expr: ((last_over_time(node_filesystem_avail_bytes{job="node-exporter"}[5m]) / last_over_time(node_filesystem_size_bytes{job="node-exporter"}[5m])) * 100) < 10
for: 30m for: 30m
labels: labels:
severity: warning severity: warning
@@ -73,32 +73,3 @@ groups:
annotations: annotations:
summary: "Synapse of {{ $labels.target }} unavailable" summary: "Synapse of {{ $labels.target }} unavailable"
description: "The Synapse backend of {{ $labels.target }} is unreachable or returns garbage" description: "The Synapse backend of {{ $labels.target }} is unreachable or returns garbage"
- alert: ClerieKeysExpire
expr: last_over_time(clerie_keys_gpg_key_expire_time[15m]) - time() < 1209600
labels:
severity: critical
annotations:
summary: "GPG {{ $labels.fingerprint }} is expiring"
description: "GPG with fingerprint {{ $labels.fingerprint }} is expiring in less then two weeks"
- alert: ClerieKeysAlmostExpire
expr: last_over_time(clerie_keys_gpg_key_expire_time[15m]) - time() < 3628800
labels:
severity: warning
annotations:
summary: "GPG {{ $labels.fingerprint }} is expiring soon"
description: "GPG with fingerprint {{ $labels.fingerprint }} is expiring in less then six weeks"
- alert: NadjaTopIPv4ProxyBroken
expr: probe_success{job="blackbox_local_http6", target="blog.nadja.top"} != on (target) probe_success{job="blackbox_local_http4", target="blog.nadja.top"}
for: 5m
labels:
severity: critical
annotations:
summary: "blog.nadja.top unreachable via IPv4"
description: "blog.nadja.top unreachable IPv4, but reachable via IPv6"
- alert: AlertmanagerNotificationRequestsFailed
expr: rate(alertmanager_notification_requests_failed_total[5m]) > 0
labels:
severity: critical
annotations:
summary: "Too many notification requests failed"
description: "Too many notification requests to Alertmanager integration {{ $labels.integration }} failed"

View File

@@ -1,7 +0,0 @@
{ ... }:
{
profiles.clerie.monitoring-server.targets = builtins.fromJSON (builtins.readFile ../../monitoring/targets.json);
}

View File

@@ -4,14 +4,17 @@
imports = imports =
[ [
./hardware-configuration.nix ./hardware-configuration.nix
../../configuration/router
]; ];
profiles.clerie.mercury-vm.enable = true; profiles.clerie.mercury-vm.enable = true;
profiles.clerie.router.enable = true;
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/vda"; boot.loader.grub.device = "/dev/vda";
networking.useDHCP = false;
systemd.network.enable = true;
systemd.network.networks."10-wan" = { systemd.network.networks."10-wan" = {
matchConfig.Name = "ens18"; matchConfig.Name = "ens18";
address = [ address = [
@@ -42,6 +45,7 @@
networking.firewall.allowedUDPPorts = []; networking.firewall.allowedUDPPorts = [];
clerie.system-auto-upgrade = { clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true; autoUpgrade = true;
}; };

View File

@@ -20,6 +20,9 @@
"aarch64-linux" "aarch64-linux"
]; ];
networking.useDHCP = false;
systemd.network.enable = true;
systemd.network.networks."10-wan" = { systemd.network.networks."10-wan" = {
matchConfig.Name = "ens19"; matchConfig.Name = "ens19";
address = [ address = [
@@ -29,7 +32,6 @@
{ Gateway = "2001:638:904:ffc7::1"; } { Gateway = "2001:638:904:ffc7::1"; }
]; ];
linkConfig.RequiredForOnline = "routable"; linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
}; };
systemd.network.networks."10-nat-netz-mercury" = { systemd.network.networks."10-nat-netz-mercury" = {
matchConfig.Name = "ens18"; matchConfig.Name = "ens18";
@@ -40,7 +42,6 @@
{ Gateway = "192.168.10.1"; } { Gateway = "192.168.10.1"; }
]; ];
linkConfig.RequiredForOnline = "routable"; linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [

View File

@@ -4,9 +4,6 @@
imports = imports =
[ [
./hardware-configuration.nix ./hardware-configuration.nix
./restic-server.nix
./wg-b-palladium.nix
]; ];
boot.kernelParams = [ "console=ttyS0,115200n8" ]; boot.kernelParams = [ "console=ttyS0,115200n8" ];
@@ -33,6 +30,9 @@
boot.swraid.enable = true; boot.swraid.enable = true;
networking.useDHCP = false;
systemd.network.enable = true;
systemd.network.networks."10-wan" = { systemd.network.networks."10-wan" = {
matchConfig.Name = "enp3s0"; matchConfig.Name = "enp3s0";
address = [ address = [
@@ -40,7 +40,6 @@
]; ];
networkConfig.DHCP = true; networkConfig.DHCP = true;
linkConfig.RequiredForOnline = "routable"; linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
}; };
# Keeping the harddrives quiet # Keeping the harddrives quiet
@@ -48,18 +47,6 @@
KERNEL=="sd?[0-9]", ENV{ID_MODEL}=="ST1000DM003-1SB102", ACTION=="add", RUN+="${pkgs.hdparm}/sbin/hdparm -S 24 /dev/%k" KERNEL=="sd?[0-9]", ENV{ID_MODEL}=="ST1000DM003-1SB102", ACTION=="add", RUN+="${pkgs.hdparm}/sbin/hdparm -S 24 /dev/%k"
''; '';
profiles.clerie.wg-clerie = {
enable = true;
ipv6s = [ "2a01:4f8:c0c:15f1::8103/128" ];
ipv4s = [ "10.20.30.103/32" ];
};
clerie.monitoring = {
enable = true;
id = "206";
pubkey = "2Q8mO4Y09Oi9CCfUUvWpZ8yIQezwtE94tz6ZbA0EDwE=";
};
system.stateVersion = "25.05"; system.stateVersion = "25.05";
} }

View File

@@ -1,20 +0,0 @@
{ ... }:
{
services.restic.server = {
enable = true;
privateRepos = true;
dataDir = "/data/backup";
listenAddress = "[::]:43242";
};
# restic rest server does not support --htpasswd-file in the current version of nixpkgs
# until then we copy the secrets to the common location
sops.secrets.restic-server-backup-htpasswd = {
path = "/data/backup/.htpasswd";
owner = "restic";
group = "restic";
};
networking.firewall.interfaces.wg-b-palladium.allowedTCPPorts = [ 43242 ];
}

View File

@@ -1,29 +0,0 @@
{
"restic-server-backup-htpasswd": "ENC[AES256_GCM,data:ouHDwNJ3UQID54qq+6tEc9Zmpa/i5jDMvzIw5baBV4oGy27JI+f40A6tqmQlbRRsX68XhMhfRcpczfTDmf2tFV7TcWB4yA==,iv:PkjCOHFQxbBvYdmOhARJUNUUsAbJiEDnLDM1UWZhHXA=,tag:3cGdkx0xNdtse9hHPa9mUQ==,type:str]",
"wg-b-palladium": "ENC[AES256_GCM,data:VBDyrDYwICbiND8jfkiIr/3oDtP1X9817WhonFYXNSTPZHziEY7U886/DFc=,iv:syqo77FROChv4WKgiGWCUa2ziH2Ds14CT5vVRxGmEvQ=,tag:X2G3JUrabXYmsKPBltOafw==,type:str]",
"wg-clerie": "ENC[AES256_GCM,data:fLGZCRbnDrSWQ+9Q/7l3DUKOgw7blcHpd8svHMZFEKMoTfGeZCc37oKAOKU=,iv:GlPXkeVnzSzAnpdSGIydZP+hhEshJ3X/N1fhwJk5Ol4=,tag:0E9RhBPha0Gun6KUNtvYUg==,type:str]",
"wg-monitoring": "ENC[AES256_GCM,data:3RHk/VI8t9ba/qiWqLkwIxaOt+e0yXw7+f1qpIVdr3JE2NzkVvX6aeP3o2Q=,iv:f4VIK1oyaUilCia1EfEiL18a3zk4+7Ol4ihyhzPounw=,tag:XeTI3iL4qIPS+Z+PDJRGrA==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age1s3f9hxcd89dk3st2r5funjw7cjcq85nuz4gq8w0aplky9v2wqy7qwukagx",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpY3p1Mi85WTNxK2U5bFVP\ncmlFRXNlK2dWMUt1eW1abzIrb0liR043VHpnClIvaHZ1VWxRSFR3ajc0MmJyMFAw\nSWdVclB2OGJqUjNXTmI4MktXVTVQbncKLS0tIFpJTTZJRmJGeE1xNFFScE81R29J\nR3MzOGY1cVhmalNEaHdyWjkyaHVRTDAKXyz/+WdHsC2AppYNf3/W1xx2Zcfg4p50\nCAamBntNMUK8zYLdhoSBT54qVYJJuYZ6eD6WOIZrdCK4HKGy0d13uw==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2025-04-18T08:56:54Z",
"mac": "ENC[AES256_GCM,data:QEEcjNqO+tXpl/4TWx+r8WT+ZsdoBw/CBiz6XpG8rsIl0prBWtQ8YW/DeYAxLPMOlb55HuDsneLEpR2DsBB1x6b0lSyjES/hgMRkweKczFLRxrhHh3qXff/wK9sDaEPLvEzvH99x63+1dAZh7z8CVESDTt8QLKK1qCxOf36QNdc=,iv:NbYc0qz0AUGKWpwKg/1QCuTnZ1+m+e6tQxWAuDogVrw=,tag:JEPtLP7V3N+Lx/quMGq/AQ==,type:str]",
"pgp": [
{
"created_at": "2025-04-15T17:32:56Z",
"enc": "-----BEGIN PGP MESSAGE-----\n\nhQIMA5OzEzXewpmPAQ//aQe91iy/RiR2PJqXhrZVyovraUmm4ivCjPSoookMCHhY\n5HGNdyzttnBjzHNqT8OFo43nu1VPlOYllgQXNbwEj7rSQN5CZQTx35Fhkc2q9q1N\ns3uI+o/RfCLiZMvr5S80lFvmw25hpopGoF0i3sHrORbh5ennzGV2Dsn2RfcQx5Ji\n11kO4QBDNs37cqZEBP4N4R5xEWFMrWPqxVrRuGZkzxR0MPLy+zCSjic0OIXWxi5G\nSTO3rPGn06s3gbMmFgAPVBMR/nyT2kPDwQFbvv7SWNqnyZ1z5S5C7eSpcEa+49IZ\ngHo3hRa0O30bvgc+yhQ9TxhyFmlgk+HWRsc7p1c7B+HK+mwxxnoixfHQLpWEwiQz\nfT32rTG/v4MqNokiyMCvUqffGwBy57YQ0Koggm8kv3GYPbCSXFuGgdxBCUufaIkj\n5n6WmMfjESOEq0+wRw1FZPp6hl1vtCpldlYqm7raOWyzncULvPKbD8AHj7g0QgP/\ndmcVV2ca1V3vklb+FsuiUOJDkGnvue+uUjQ2f/t4JqLYy1dHlfPSX3X+WEJ4U/Nw\nZtpPb7XdgbWLbcDUTpEUGMhlnrLhdjt9w8iDKjZ+kN95fFfR9J4jTyUANIHd0sW1\nuLGphdWX62nmldEIJeselBaVhwiv5qQduNCdDssgZaMlmmdvZUHiABYh8rqKByOF\nAgwDvZ9WSAhwutIBD/4kxHpGFsX6wsP5dfJHGbh6dakqXjidwgkfbgq9eWd3nM9B\nYbmUZNz4vjdWGFIg/zitxpV6SRHItPPLkF0HEqecKrwBC41iczkMTXJsCN19zCEG\nGyMFtiTgYrkLZiN3yMViKbv5sOwm+38dQCE3tL6TZl8Rqi2Wm390DQ/dFSJSdJFb\nLZmOEvUkyChFvS+C6aCIsChoPSRnoqpxzrpJLoozS3EKGb5hKa7SN7zuSyNbUJgR\n4DaruQGNbbSKmInsigqJWtlUbJsYxbOxRGojw2waMRHEvWJfIN6NdsFuCBCMqHA7\nsil+siC7BXqef7nD9UcsjVBPyl7UAtvBAvWpfA83vYwtvSCR8tBPZ7EifyOWplfS\ntdJQFDd14ZGs/kO6j9Ck5d49Y6NuPEfa+wjs8vZGBevWGiErf+RlN7yYRLmX9pr1\nR72U0jC5rhA7+X1JZHEx1DdpNfGDj8MUokXf82aTzQPpOJPPUXOnJP9a6oHFW3Uv\nWmfTSjVbw//B9i/KM5XmVNgp3TyNZmszU36d79W23tnNQhSFpLNz4E/yr+vhvoO1\neowV8gi0BYxNGnUeM+QOFxdvoW4pNyTwVGFbqrJ7xY0m2gYiRpjxf1qpAP5pzm4Z\nrc4c+en8/71oI3Pt2D1IOHMA1VoJbemCxQKjXMb45RJxtSMZTX6kUMeWgXFLvIUC\nDAM1GWv08EiACgEP/RRLSlzAyA297eWSKzDehvMeuf3XL6EgwGo3W4VUjFQLy/k7\nzgJyzmClLaWxoUnhJY26ciaUVX5xzlyamzsuOk+S/Ke/UxHctFhT4jiSfpCj7SJU\n5E+fl4Q1vaH9CwolP/TppYRHw2PrBFHw62+/5o5PzOuSnOQ9M1Yen0sEv3aK1FYb\nCH5lDD12eZ8Qn+aTQUc4DfHGYUZckKp/yWSOYA3/O80bIimSYWjq73CclNQMXeXU\nE520z43xKArHcmbSVcJhxH+tkG+BNJ16l5XQaiKK9p9LlkPyouVvSmedXLsKdt4U\njYGywDAWh39UiepzTNc8I26eM4XcbDZjfF2D9EoNttTXWaHQpIyP/DyzJwShpVGF\nj5l1FmiCXvBxUXUJHP+4ONRtnEjMTQB/6IMWQJ5etVku+8eFRAqrn5J9B5w5/qqj\nf+99lXlORQXo9RDSANinCn6l/zORCUmNqgqfjnuVgsFPJFnUycbyzFsPgZXyF83H\nc/bqAYkjqSlMWzNuhOTgHuDJzt/SPhmbJXJmBH/ZKR52lQRlYonon9+hNE6Ti1aP\nBUdxIpMl89Cj8IPyg24cWlRIRGssIR/7e2iim76lH8VY5QT0M3qUye7KOtKOiJv/\n38kIftzORJ4PQwJnSl2TFqjs/mYSHEx0xc3WednF5ZCDicMYTjkePKJRMHuT0l4B\nYc0BSK8isG7x9SUNSxXUrb26d67ABWRmik+K+B9o7HeQRbPQuPV65m+qBxVEueVu\nYTi+79/6X2pmj/54NbN6Lqaj9SPthnhyDUrduulMRQBvxC2n9gVQ/+UnxEMy\n=Sp14\n-----END PGP MESSAGE-----",
"fp": "0C982F87B7AFBA0F504F90A2629E741947C87928"
}
],
"unencrypted_suffix": "_unencrypted",
"version": "3.9.4"
}
}

View File

@@ -1,38 +0,0 @@
{ config, ... }:
{
sops = {
secrets.wg-b-palladium = {
owner = "systemd-network";
group = "systemd-network";
};
};
systemd.network.netdevs."10-wg-b-palladium" = {
netdevConfig = {
Kind = "wireguard";
Name = "wg-b-palladium";
};
wireguardConfig = {
PrivateKeyFile = config.sops.secrets.wg-b-palladium.path;
};
wireguardPeers = [
{
PublicKey = "VstE42L1SmZCIShH5sOqcpVQOV0Xb9cFgljD0lhvKFQ=";
AllowedIPs = [ "fd90:37fd:ddec:d921::/64" ];
PersistentKeepalive = 25;
Endpoint = "backup-4.net.clerie.de:51844";
}
];
};
systemd.network.networks."10-wg-b-palladium" = {
matchConfig.Name = "wg-b-palladium";
address = [
"fd90:37fd:ddec:d921::2/64"
];
linkConfig.RequiredForOnline = "no";
};
}

View File

@@ -4,14 +4,16 @@
imports = imports =
[ [
./hardware-configuration.nix ./hardware-configuration.nix
../../configuration/router
]; ];
profiles.clerie.netcup.enable = true; profiles.clerie.netcup.enable = true;
profiles.clerie.router.enable = true;
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda"; boot.loader.grub.device = "/dev/sda";
networking.useDHCP = false;
systemd.network.enable = true;
systemd.network.networks."10-wan" = { systemd.network.networks."10-wan" = {
matchConfig.Name = "ens3"; matchConfig.Name = "ens3";
address = [ address = [
@@ -23,32 +25,10 @@
{ Gateway = "5.45.100.1"; } { Gateway = "5.45.100.1"; }
]; ];
linkConfig.RequiredForOnline = "routable"; linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
};
profiles.clerie.common-webserver.httpDefaultVirtualHost = false;
services.unbound = {
enable = true;
resolveLocalQueries = false;
settings = {
server = {
interface = [ "127.0.0.1" ];
};
};
}; };
clerie.nginx-port-forward = { clerie.nginx-port-forward = {
enable = true; enable = true;
resolver = "127.0.0.1";
tcpPorts."80" = {
host = "baikonur.dyn.weimarnetz.de";
port = 80;
};
tcpPorts."443" = {
host = "baikonur.dyn.weimarnetz.de";
port = 443;
};
tcpPorts."2022" = { tcpPorts."2022" = {
host = "nonat.net.clerie.de"; host = "nonat.net.clerie.de";
port = 22; port = 22;
@@ -58,10 +38,6 @@
networking.firewall.allowedTCPPorts = [ 80 443 ]; networking.firewall.allowedTCPPorts = [ 80 443 ];
networking.firewall.allowedUDPPorts = []; networking.firewall.allowedUDPPorts = [];
clerie.system-auto-upgrade = {
autoUpgrade = true;
};
clerie.monitoring = { clerie.monitoring = {
enable = true; enable = true;
id = "102"; id = "102";

View File

@@ -4,7 +4,6 @@
imports = imports =
[ [
./hardware-configuration.nix ./hardware-configuration.nix
./em.nix
./firmware.nix ./firmware.nix
./mixcloud.nix ./mixcloud.nix
./syncthing.nix ./syncthing.nix
@@ -16,6 +15,9 @@
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/vda"; boot.loader.grub.device = "/dev/vda";
networking.useDHCP = false;
systemd.network.enable = true;
systemd.network.networks."10-wan" = { systemd.network.networks."10-wan" = {
matchConfig.Name = "ens18"; matchConfig.Name = "ens18";
address = [ address = [
@@ -25,7 +27,6 @@
{ Gateway = "2001:638:904:ffc0::1"; } { Gateway = "2001:638:904:ffc0::1"; }
]; ];
linkConfig.RequiredForOnline = "routable"; linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
}; };
systemd.network.networks."10-nat-netz-mercury" = { systemd.network.networks."10-nat-netz-mercury" = {
matchConfig.Name = "ens19"; matchConfig.Name = "ens19";
@@ -36,7 +37,6 @@
{ Gateway = "192.168.10.1"; } { Gateway = "192.168.10.1"; }
]; ];
linkConfig.RequiredForOnline = "routable"; linkConfig.RequiredForOnline = "routable";
ipv6AcceptRAConfig.DHCPv6Client = "no";
}; };
services.nginx.enable = true; services.nginx.enable = true;
@@ -53,6 +53,7 @@
}; };
clerie.system-auto-upgrade = { clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true; autoUpgrade = true;
}; };

View File

@@ -1,17 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
{
users.users.data-em = {
group = "data-em";
home = "/data/em";
useDefaultShell = true;
isSystemUser = true;
};
users.groups.data-em = {};
systemd.tmpfiles.rules = [
"d /data/em - data-em data-em - -"
];
}

View File

@@ -2,5 +2,4 @@
{ {
users.users.clerie.extraGroups = [ "data-firmware" ]; users.users.clerie.extraGroups = [ "data-firmware" ];
users.users.frank.extraGroups = [ "data-em" ];
} }

View File

@@ -18,6 +18,9 @@
terminal_output serial terminal_output serial
"; ";
networking.useDHCP = false;
systemd.network.enable = true;
networking.hostName = "tungsten"; networking.hostName = "tungsten";
profiles.clerie.wg-clerie = { profiles.clerie.wg-clerie = {

View File

@@ -1,195 +0,0 @@
ip6tables -I nixos-fw -s 2400:3200::/48 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 2400:3200:baba::/48 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 2400:b200:4100::/46 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 2401:8680:4100::/48 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 2401:b180:4100::/48 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 2404:2280:1000::/36 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 2404:2280:2000::/35 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 2404:2280:4000::/36 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 2408:4000:1000::/48 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 2408:4009:500::/48 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 240b:4000::/31 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 240b:4002::/32 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 240b:4004::/31 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 240b:4006::/48 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 240b:4006:1000::/43 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 240b:4006:1020::/44 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 240b:4007::/32 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 240b:4009::/32 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 240b:400b::/32 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 240b:400c::/30 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 240b:4011::/32 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 240b:4012::/48 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 240b:4013::/32 -j nixos-fw-refuse
ip6tables -I nixos-fw -s 240b:4014::/32 -j nixos-fw-refuse
iptables -I nixos-fw -s 5.181.224.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.208.0.0/16 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.209.0.0/19 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.209.36.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.209.40.0/21 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.209.48.0/20 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.209.64.0/18 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.209.128.0/17 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.210.0.0/15 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.212.0.0/16 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.213.0.0/17 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.213.128.0/19 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.213.160.0/21 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.213.176.0/20 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.213.192.0/18 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.214.0.0/15 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.216.0.0/14 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.220.64.0/18 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.220.128.0/17 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.221.0.0/16 -j nixos-fw-refuse
iptables -I nixos-fw -s 8.222.0.0/15 -j nixos-fw-refuse
iptables -I nixos-fw -s 14.1.112.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.91.0.0/16 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.1.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.2.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.4.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.7.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.8.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.17.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.19.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.20.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.24.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.27.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.28.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.32.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.40.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.52.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.56.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.58.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.66.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.68.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.72.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.78.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.80.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.84.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.86.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.88.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.96.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.100.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.102.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.104.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.96.106.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.98.0.0/15 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.100.0.0/15 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.102.0.0/17 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.103.0.0/17 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.104.0.0/15 -j nixos-fw-refuse
iptables -I nixos-fw -s 43.108.0.0/17 -j nixos-fw-refuse
iptables -I nixos-fw -s 45.196.28.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 45.199.179.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.52.0.0/16 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.56.0.0/15 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.74.0.0/15 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.76.0.0/16 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.77.0.0/20 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.77.16.0/21 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.77.24.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.77.32.0/19 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.77.64.0/19 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.77.96.0/20 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.77.128.0/17 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.78.0.0/16 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.79.0.0/17 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.79.128.0/19 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.79.192.0/18 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.80.0.0/14 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.84.0.0/15 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.86.0.0/16 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.87.0.0/17 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.87.128.0/18 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.87.192.0/19 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.87.224.0/21 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.87.232.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.88.0.0/16 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.89.0.0/18 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.89.72.0/21 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.89.80.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.89.84.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.89.88.0/21 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.89.96.0/20 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.89.122.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.89.124.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.89.128.0/17 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.90.0.0/15 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.235.0.0/21 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.235.8.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.235.12.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.235.16.0/20 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.236.0.0/14 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.240.0.0/14 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.244.0.0/15 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.32.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.66.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.68.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.72.0/21 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.80.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.82.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.84.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.88.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.92.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.96.0/20 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.120.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.122.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.124.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.128.0/20 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.144.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.150.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.152.0/21 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.160.0/19 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.246.192.0/21 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.250.0.0/15 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.252.0.0/15 -j nixos-fw-refuse
iptables -I nixos-fw -s 47.254.0.0/16 -j nixos-fw-refuse
iptables -I nixos-fw -s 59.82.136.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 103.81.186.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 110.76.21.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 110.76.23.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 116.251.64.0/18 -j nixos-fw-refuse
iptables -I nixos-fw -s 139.95.0.0/20 -j nixos-fw-refuse
iptables -I nixos-fw -s 139.95.16.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 139.95.64.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 140.205.1.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 140.205.122.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 147.139.0.0/16 -j nixos-fw-refuse
iptables -I nixos-fw -s 149.129.0.0/20 -j nixos-fw-refuse
iptables -I nixos-fw -s 149.129.16.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 149.129.32.0/19 -j nixos-fw-refuse
iptables -I nixos-fw -s 149.129.64.0/18 -j nixos-fw-refuse
iptables -I nixos-fw -s 149.129.192.0/18 -j nixos-fw-refuse
iptables -I nixos-fw -s 156.227.20.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 156.236.12.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 156.236.17.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 156.240.76.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 156.245.1.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 161.117.0.0/16 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.24.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.29.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.30.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.32.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.64.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.66.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.68.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.72.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.76.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.80.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.84.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.86.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.88.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.90.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.92.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.104.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.136.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 170.33.138.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 185.78.106.0/23 -j nixos-fw-refuse
iptables -I nixos-fw -s 198.11.128.0/18 -j nixos-fw-refuse
iptables -I nixos-fw -s 202.144.199.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 203.107.64.0/22 -j nixos-fw-refuse
iptables -I nixos-fw -s 203.107.68.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 205.204.96.0/19 -j nixos-fw-refuse
iptables -I nixos-fw -s 223.5.5.0/24 -j nixos-fw-refuse
iptables -I nixos-fw -s 223.6.6.0/24 -j nixos-fw-refuse

View File

@@ -27,13 +27,18 @@
root = pkgs.clerie-keys; root = pkgs.clerie-keys;
}; };
locations."= /ssh/known_hosts" = { locations."= /ssh/known_hosts" = {
alias = pkgs.clerie-ssh-known-hosts + "/known_hosts"; alias = pkgs.writeText "known_hosts" (import ../../lib/ssh-known-hosts.nix);
extraConfig = '' extraConfig = ''
types { } types { }
default_type "text/plain; charset=utf-8"; default_type "text/plain; charset=utf-8";
''; '';
}; };
locations."/gpg" = { locations."/gpg" = {
extraConfig = ''
types {
text/plain asc;
}
'';
root = pkgs.clerie-keys; root = pkgs.clerie-keys;
}; };
locations."~ ^/.well-known/openpgpkey/hu/[a-z0-9]+/?$" = { locations."~ ^/.well-known/openpgpkey/hu/[a-z0-9]+/?$" = {
@@ -53,6 +58,9 @@
''; '';
return = "200 ''"; return = "200 ''";
}; };
extraConfig = ''
access_log /var/log/nginx/clerie.de.log combined_anon;
'';
}; };
}; };
} }

View File

@@ -24,7 +24,6 @@
./public.nix ./public.nix
./radicale.nix ./radicale.nix
./reichartstrasse.nix ./reichartstrasse.nix
./traveldrafter.nix
./uptimestatus.nix ./uptimestatus.nix
./wetter.nix ./wetter.nix
]; ];
@@ -34,6 +33,9 @@
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.device = "/dev/sda"; boot.loader.grub.device = "/dev/sda";
networking.useDHCP = false;
systemd.network.enable = true;
systemd.network.networks."10-wan" = { systemd.network.networks."10-wan" = {
address = [ address = [
"2a01:4f8:c0c:c580::1/64" "2a01:4f8:c0c:c580::1/64"
@@ -52,8 +54,6 @@
networking.firewall.allowedTCPPorts = [ 80 443 ]; networking.firewall.allowedTCPPorts = [ 80 443 ];
networking.firewall.extraCommands = builtins.readFile ./blocked-prefixes.txt;
services.postgresql = { services.postgresql = {
enable = true; enable = true;
package = pkgs.postgresql_16; package = pkgs.postgresql_16;

View File

@@ -83,6 +83,9 @@
proxyPass = "http://[::1]:3000"; proxyPass = "http://[::1]:3000";
}; };
}; };
extraConfig = ''
access_log /var/log/nginx/git.clerie.de.log combined_anon;
'';
}; };
}; };
} }

View File

@@ -53,6 +53,9 @@
types { } default_type "text/html; charset=utf-8"; types { } default_type "text/html; charset=utf-8";
''; '';
}; };
extraConfig = ''
access_log /var/log/nginx/ip.clerie.de.log vcombined_anon;
'';
}; };
"ip4.clerie.de" = { "ip4.clerie.de" = {
enableACME = true; enableACME = true;
@@ -64,6 +67,9 @@
add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Origin *;
''; '';
}; };
extraConfig = ''
access_log /var/log/nginx/ip.clerie.de.log vcombined_anon;
'';
}; };
"ip6.clerie.de" = { "ip6.clerie.de" = {
enableACME = true; enableACME = true;
@@ -75,6 +81,9 @@
add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Origin *;
''; '';
}; };
extraConfig = ''
access_log /var/log/nginx/ip.clerie.de.log vcombined_anon;
'';
}; };
}; };
} }

View File

@@ -7,8 +7,8 @@
forceSSL = true; forceSSL = true;
root = pkgs.fetchgit { root = pkgs.fetchgit {
url = "https://git.clerie.de/clerie/legal.clerie.de.git"; url = "https://git.clerie.de/clerie/legal.clerie.de.git";
rev = "b271b9729f4545c340ce9d16ecbca136031da409"; rev = "c6900226e3107a2e370a32759d83db472ab5450d";
sha256 = "sha256-uw69o7LxK+JF1AojSyusU1urshBc63Bgva5lRBgQdKc="; sha256 = "sha256-lOjbHqYc/85rjotwQ5Oj+MSWnDIfLx2w5mpiJkChbXU=";
}; };
locations."/impressum" = { locations."/impressum" = {
return = ''301 https://legal.clerie.de/#impressum''; return = ''301 https://legal.clerie.de/#impressum'';

View File

@@ -4,16 +4,19 @@
"clerie-backup-target-magenta": "ENC[AES256_GCM,data:zsPFXpnTWHL2b9/fZiW1fhpla8hTeZb1+O8oihnwDIAcC4Tgn8PrFDEYK7kuWYcdbIvL5XRJRR48erSACsntFA==,iv:lTlAyVl3ndgca4Mp9lSldXmhlP8ECPvE/CM7Zpzy9ao=,tag:LCNF1loABQpZ8Y5wfpXjkg==,type:str]", "clerie-backup-target-magenta": "ENC[AES256_GCM,data:zsPFXpnTWHL2b9/fZiW1fhpla8hTeZb1+O8oihnwDIAcC4Tgn8PrFDEYK7kuWYcdbIvL5XRJRR48erSACsntFA==,iv:lTlAyVl3ndgca4Mp9lSldXmhlP8ECPvE/CM7Zpzy9ao=,tag:LCNF1loABQpZ8Y5wfpXjkg==,type:str]",
"wg-monitoring": "ENC[AES256_GCM,data:AfkytaHshFSyKkMdKVMdYaq3sKUC9dKYs5rKXN4Ouv5kjDGNXC18liEsRuc=,iv:4mMgsovdAJ++Myr+9GuhAaEBuzDBNZbGK6zfzoAEJ0E=,tag:/d0ZXNbpaMFyxyzov23kdQ==,type:str]", "wg-monitoring": "ENC[AES256_GCM,data:AfkytaHshFSyKkMdKVMdYaq3sKUC9dKYs5rKXN4Ouv5kjDGNXC18liEsRuc=,iv:4mMgsovdAJ++Myr+9GuhAaEBuzDBNZbGK6zfzoAEJ0E=,tag:/d0ZXNbpaMFyxyzov23kdQ==,type:str]",
"radicale-htpasswd": "ENC[AES256_GCM,data:+FHsq5We/fc8gBNub/GV5Mfs2i0/7Qm9UPDhb3unEhak6XDAvMSUQb4eaX0wn7Yi3y/gFGmapd0eYilTjfoJnI9gVnvi,iv:lEV8kQh9RBL/xKcCLIRzUR6ADq4zoah1c8Z67Qrs3dQ=,tag:cw6jKYbZUXBD3Zio5CH+Hw==,type:str]", "radicale-htpasswd": "ENC[AES256_GCM,data:+FHsq5We/fc8gBNub/GV5Mfs2i0/7Qm9UPDhb3unEhak6XDAvMSUQb4eaX0wn7Yi3y/gFGmapd0eYilTjfoJnI9gVnvi,iv:lEV8kQh9RBL/xKcCLIRzUR6ADq4zoah1c8Z67Qrs3dQ=,tag:cw6jKYbZUXBD3Zio5CH+Hw==,type:str]",
"traveldrafter-htpasswd": "ENC[AES256_GCM,data:f29vVDofv2mJEyn/pMKWW8ZbVTKSofe1EEtcfuCaokdqAyxemcq/2hrXFw8cAGTV2hwVqlM2hzJcT32KBjO/wgUNfv4=,iv:5PdQ+bn/bXmfQstP5A/dLeDk7O0qTjoRTyr4D+AgiG0=,tag:gCBrSJ4cEnZHqePiUpPglA==,type:str]",
"sops": { "sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [ "age": [
{ {
"recipient": "age1nn8dwl2avshdhwn66w92jvlvz2ugl5fdxc8dxz6lpru72hlq44uq5a88az", "recipient": "age1nn8dwl2avshdhwn66w92jvlvz2ugl5fdxc8dxz6lpru72hlq44uq5a88az",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlU2tEMHIvRUFxa24wMVcy\nb2lheGR2ekl6S0wzWUd5cTMwTC9HdFN1eVc0CkRjRHdJVUw3ZCtZSTlUOHZCV2J6\nYkxqdnNmU05LTTNmNFZiTzBxZVdkOTgKLS0tIEZUZ0svL2NhcTZPdFZrYUhwQ05Q\nWnZXRWIvRXBOMWNDTzQ4RDNKa3IwSUkKj+vI9dEEUQYN9uT6H1FdexComfbe+iA9\nVzLF970ASzptGiNYtdN9GYdXY7JGHoOfmYy3fpjZGN3p2KqiYyi3UA==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlU2tEMHIvRUFxa24wMVcy\nb2lheGR2ekl6S0wzWUd5cTMwTC9HdFN1eVc0CkRjRHdJVUw3ZCtZSTlUOHZCV2J6\nYkxqdnNmU05LTTNmNFZiTzBxZVdkOTgKLS0tIEZUZ0svL2NhcTZPdFZrYUhwQ05Q\nWnZXRWIvRXBOMWNDTzQ4RDNKa3IwSUkKj+vI9dEEUQYN9uT6H1FdexComfbe+iA9\nVzLF970ASzptGiNYtdN9GYdXY7JGHoOfmYy3fpjZGN3p2KqiYyi3UA==\n-----END AGE ENCRYPTED FILE-----\n"
} }
], ],
"lastmodified": "2025-07-06T16:08:39Z", "lastmodified": "2024-05-10T13:32:34Z",
"mac": "ENC[AES256_GCM,data:6EbMSJAKOMgXtlwaVtsmPgrZVgraReAfVJWjZvhe965eLhhP5aeyZqPlA6a93h2FsShVFYWFPI57tdHy9Ymo53oXolSt8Docr2w2FL4BTWHHhkXal9+6aJZAZ+XOPEOUYurFxPOX44l+LDkecSz0NMCgrScWtpphjlkj3yP5GTo=,iv:5w8RC9IAuyEuO0QSZ0FBwW2/qqV56HNG7hZIkEeGEYU=,tag:Zosv1OSMtznnKkSYStu+oA==,type:str]", "mac": "ENC[AES256_GCM,data:lxfYT2TEO9KFx0x6DPRQ2mRy5Ft6syyyO1yV9my6GwvDxd1e7odXGRcFo3N1AFod8Y6z4+XaxqZ/GoqSp94Pk8aF4eEhyAFun/UUr8KhKGsnq6xnQA4p37oYccvTY4eohS5YHBr/+AMutddmQ7qiYtQhVViXAr6+dmOsV1Tfu+A=,iv:bC+z9SP2W048bR3aWIcPgRlfLB5n5ccst6OvH0NjYBk=,tag:qhoXUAl0nG4LYy6yXQP2/g==,type:str]",
"pgp": [ "pgp": [
{ {
"created_at": "2024-05-10T13:29:58Z", "created_at": "2024-05-10T13:29:58Z",
@@ -24,4 +27,4 @@
"unencrypted_suffix": "_unencrypted", "unencrypted_suffix": "_unencrypted",
"version": "3.8.1" "version": "3.8.1"
} }
} }

View File

@@ -1,40 +0,0 @@
{ pkgs, lib, config, ... }: {
services.update-from-hydra.paths.traveldrafter = {
enable = true;
hydraUrl = "https://hydra.clerie.de";
hydraProject = "clerie";
hydraJobset = "traveldrafter";
hydraJob = "packages.x86_64-linux.traveldrafter";
nixStoreUri = "https://nix-cache.clerie.de";
resultPath = "/srv/traveldrafter";
};
sops.secrets.traveldrafter-htpasswd = {
owner = "nginx";
group = "nginx";
};
services.nginx.virtualHosts = {
"traveldrafter.clerie.de" = {
enableACME = true;
forceSSL = true;
root = "/srv/traveldrafter/lib/node_modules/traveldrafter/web/";
basicAuthFile = config.sops.secrets.traveldrafter-htpasswd.path;
locations."/api" = {
proxyPass = "http://[::1]:3001";
};
};
};
systemd.services."traveldrafter" = {
wantedBy = [ "multi-user.target" ];
serviceConfig = {
RuntimeDirectory = "traveldrafter";
DynamicUser = true;
};
environment = {
HTTP_PORT = "3001";
};
script = lib.getExe pkgs.traveldrafter;
};
}

View File

@@ -5,11 +5,13 @@
[ [
./hardware-configuration.nix ./hardware-configuration.nix
../../configuration/desktop
./initrd.nix ./initrd.nix
./programs.nix ./programs.nix
]; ];
profiles.clerie.desktop.enable = true; profiles.clerie.common-networking.enable = true;
# Use the systemd-boot EFI boot loader. # Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;

View File

@@ -2,9 +2,9 @@
{ {
profiles.clerie.firefox.enable = true;
users.users.clerie.packages = with pkgs; [ users.users.clerie.packages = with pkgs; [
firefox
blender blender
#cura # libarcus library is currently broken, required for curaengine #cura # libarcus library is currently broken, required for curaengine

View File

@@ -8,8 +8,6 @@ let
lib = { lib = {
clerie-monitoring-ids = callLibs ./clerie-monitoring-ids.nix; clerie-monitoring-ids = callLibs ./clerie-monitoring-ids.nix;
mkNixpkgs = callLibs ./mkNixpkgs.nix;
nixosSystem = callLibs ./nixosSystem.nix;
}; };
in in

View File

@@ -0,0 +1,22 @@
{ ... }:
rec {
llIPv6 = localIP: peerIP: interface: {
ips = [
"${localIP}/128"
];
postSetup = ''
ip -6 route flush dev ${interface}
ip addr del dev ${interface} ${localIP}/128 && ip addr add dev ${interface} ${localIP}/128 peer ${peerIP}/128
'';
};
llIPv4 = localIP: peerIP: interface: {
ips = [
"${localIP}/32"
];
postSetup = ''
ip -4 route flush dev ${interface}
ip addr del dev ${interface} ${localIP}/32 && ip addr add dev ${interface} ${localIP}/32 peer ${peerIP}/32
'';
};
}

View File

@@ -1,27 +0,0 @@
{
inputs,
self,
...
}:
/*
Loads a version of nixpkgs with nixfiles overlays loaded
*/
{
system,
nixpkgs ? inputs.nixpkgs,
overlays ? [],
...
}@args:
import nixpkgs {
inherit system;
overlays = [
self.overlays.clerie-inputs
self.overlays.clerie-pkgs
self.overlays.clerie-build-support
self.overlays.clerie-overrides
] ++ overlays;
}

View File

@@ -1,42 +0,0 @@
{
inputs,
self,
...
}:
/*
nixfiles.lib.nixosSystem, like nixpkgs.lib.nixosSystem but
with nixfiles overlays and modules already populated
*/
{
system ? null,
nixpkgs ? inputs.nixpkgs,
pkgs ? null,
modules ? [],
...
}@args:
nixpkgs.lib.nixosSystem ({
system = system;
pkgs = if pkgs != null then pkgs else (self.lib.mkNixpkgs {
inherit system nixpkgs;
});
modules = [
self.nixosModules.nixfilesInputs
self.nixosModules.clerie
self.nixosModules.profiles
({ config, lib, ... }: {
/*
Make the contents of the flake availiable to modules.
Useful for having the monitoring server scraping the
target config from all other servers automatically.
*/
_module.args = {
inputs = inputs;
_nixfiles = self;
};
})
] ++ modules;
} // builtins.removeAttrs args [ "system" "nixpkgs" "pkgs" "modules" ] )

View File

@@ -1,22 +1,13 @@
{
writeTextFile,
}:
let let
stripR = str: if (builtins.substring ((builtins.stringLength str) - 1) (builtins.stringLength str) str) == "\n" then stripR (builtins.substring 0 ((builtins.stringLength str) - 1) str) else str; stripR = str: if (builtins.substring ((builtins.stringLength str) - 1) (builtins.stringLength str) str) == "\n" then stripR (builtins.substring 0 ((builtins.stringLength str) - 1) str) else str;
hostsWithSshPubkey = builtins.filter (hostname: (builtins.substring 0 1 hostname) != "_" && builtins.pathExists (../../hosts + "/${hostname}/ssh.pub")) (builtins.attrNames (builtins.readDir ../../hosts)); hostsWithSshPubkey = builtins.filter (hostname: (builtins.substring 0 1 hostname) != "_" && builtins.pathExists (../hosts + "/${hostname}/ssh.pub")) (builtins.attrNames (builtins.readDir ../hosts));
sshkeyList = map (hostname: { sshkeyList = map (hostname: {
name = hostname; name = hostname;
sshPubkey = stripR (builtins.readFile (../../hosts + "/${hostname}/ssh.pub")); sshPubkey = stripR (builtins.readFile (../hosts + "/${hostname}/ssh.pub"));
}) hostsWithSshPubkey; }) hostsWithSshPubkey;
knownHosts = builtins.concatStringsSep "" (builtins.map ({name, sshPubkey}: '' knownHosts = builtins.concatStringsSep "" (builtins.map ({name, sshPubkey}: ''
${name} ${sshPubkey} ${name} ${sshPubkey}
${name}.net.clerie.de ${sshPubkey} ${name}.net.clerie.de ${sshPubkey}
'') sshkeyList); '') sshkeyList);
in writeTextFile { in
name = "clerie-ssh-known-hosts"; knownHosts
destination = "/known_hosts";
allowSubstitutes = true;
preferLocalBuild = false;
text = knownHosts;
}

View File

@@ -64,7 +64,7 @@ let
targetUsername = if targetOptions.username == null then config.networking.hostName else targetOptions.username; targetUsername = if targetOptions.username == null then config.networking.hostName else targetOptions.username;
in { in {
"clerie-backup/${jobName}-${targetName}/repo_password".source = jobPasswordFile; "clerie-backup/${jobName}-${targetName}/repo_password".source = jobPasswordFile;
"clerie-backup/${jobName}-${targetName}/repo_url".text = "${targetOptions.serverUrl}${repoPath}"; "clerie-backup/${jobName}-${targetName}/repo_url".text = "https://${targetOptions.serverName}${repoPath}";
"clerie-backup/${jobName}-${targetName}/auth_username".text = targetUsername; "clerie-backup/${jobName}-${targetName}/auth_username".text = targetUsername;
"clerie-backup/${jobName}-${targetName}/auth_password".source = targetPasswordFile; "clerie-backup/${jobName}-${targetName}/auth_password".source = targetPasswordFile;
"clerie-backup/${jobName}-${targetName}/files".text = concatStringsSep "\n" jobOptions.paths; "clerie-backup/${jobName}-${targetName}/files".text = concatStringsSep "\n" jobOptions.paths;
@@ -82,7 +82,7 @@ let
type = with types; nullOr str; type = with types; nullOr str;
default = null; default = null;
}; };
serverUrl = mkOption { serverName = mkOption {
type = types.str; type = types.str;
}; };
}; };

View File

@@ -10,6 +10,11 @@ in
options = { options = {
clerie.system-auto-upgrade = { clerie.system-auto-upgrade = {
enable = mkEnableOption "clerie system upgrade"; enable = mkEnableOption "clerie system upgrade";
allowReboot = mkOption {
type = types.bool;
default = false;
description = "Monitor NixOS";
};
autoUpgrade = mkOption { autoUpgrade = mkOption {
type = types.bool; type = types.bool;
default = false; default = false;
@@ -33,7 +38,7 @@ in
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";
ExecStart = pkgs.clerie-system-upgrade + "/bin/clerie-system-upgrade --no-confirm${optionalString (config.clerie.monitoring.enable) " --node-exporter-metrics-path /var/lib/prometheus-node-exporter/textfiles/clerie-system-upgrade.prom"}"; ExecStart = pkgs.clerie-system-upgrade + "/bin/clerie-system-upgrade --no-confirm${optionalString cfg.allowReboot " --allow-reboot"}${optionalString (config.clerie.monitoring.enable) " --node-exporter-metrics-path /var/lib/prometheus-node-exporter/textfiles/clerie-system-upgrade.prom"}";
}; };
}; };
systemd.timers.clerie-system-auto-upgrade = mkIf cfg.autoUpgrade { systemd.timers.clerie-system-auto-upgrade = mkIf cfg.autoUpgrade {

View File

@@ -61,6 +61,9 @@ in
services.prometheus.exporters.node = { services.prometheus.exporters.node = {
enable = true; enable = true;
#listenAddress = "${monitoring-network-base}${cfg.id}";
openFirewall = true;
firewallFilter = "-i wg-monitoring -p tcp -m tcp --dport 9100";
enabledCollectors = [ enabledCollectors = [
"systemd" "systemd"
]; ];
@@ -77,10 +80,14 @@ in
services.prometheus.exporters.bird = mkIf cfg.bird { services.prometheus.exporters.bird = mkIf cfg.bird {
enable = true; enable = true;
openFirewall = true;
firewallFilter = "-i wg-monitoring -p tcp -m tcp --dport 9324";
}; };
services.prometheus.exporters.blackbox = mkIf cfg.blackbox { services.prometheus.exporters.blackbox = mkIf cfg.blackbox {
enable = true; enable = true;
openFirewall = true;
firewallFilter = "-i wg-monitoring -p tcp -m tcp --dport 9115";
configFile = pkgs.writeText "blackbox.yml" '' configFile = pkgs.writeText "blackbox.yml" ''
modules: modules:
icmp6: icmp6:
@@ -102,42 +109,8 @@ in
listen = "[::]:9152"; listen = "[::]:9152";
}; };
services.prometheus.exporters.nginxlog = mkIf config.services.nginx.enable { networking.firewall.extraCommands = ''
enable = true; ip46tables -A nixos-fw -i wg-monitoring -p tcp -m tcp --dport 9152 -m comment --comment nixos-exporter -j nixos-fw-accept
settings = { '';
namespaces = [
{
name = "nginxlog";
format = ''$host: $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$server_name" rt="$request_time" uct="$upstream_connect_time" uht="$upstream_header_time" urt="$upstream_response_time"'';
source = {
files = [
"/var/log/nginx/access.log"
];
};
relabel_configs = [
{
target_label = "server_name";
from = "server_name";
}
];
}
];
};
};
systemd.services."prometheus-nginxlog-exporter".serviceConfig = {
SupplementaryGroups = "nginx";
};
networking.firewall.interfaces."wg-monitoring".allowedTCPPorts = [
9100 # node-exporter
9152 # nixos-exporter
] ++ (if cfg.bird then [
9324 # bird-exporter
] else []) ++ (if cfg.blackbox then [
9115 # blackbox-exporter
] else []) ++ (if config.services.prometheus.exporters.nginxlog.enable then [
config.services.prometheus.exporters.nginxlog.port
] else []);
}; };
} }

View File

@@ -9,8 +9,6 @@ let
mkServerBlock = isUDP: port: forward: '' mkServerBlock = isUDP: port: forward: ''
server { server {
resolver ${cfg.resolver} ipv4=off valid=30s;
listen ${port}${optionalString isUDP " udp"}${optionalString (forward.certName != null) " ssl"}; listen ${port}${optionalString isUDP " udp"}${optionalString (forward.certName != null) " ssl"};
listen [::]:${port}${optionalString isUDP " udp"}${optionalString (forward.certName != null) " ssl"}; listen [::]:${port}${optionalString isUDP " udp"}${optionalString (forward.certName != null) " ssl"};
@@ -20,9 +18,7 @@ let
${ optionalString (sslDhparam != null) "ssl_dhparam ${sslDhparam};" } ${ optionalString (sslDhparam != null) "ssl_dhparam ${sslDhparam};" }
'' } '' }
set $upstream_server ${forward.host}:${toString forward.port}; proxy_pass ${forward.host}:${toString forward.port};
proxy_pass $upstream_server;
} }
''; '';
@@ -54,10 +50,6 @@ in
options = { options = {
clerie.nginx-port-forward = { clerie.nginx-port-forward = {
enable = mkEnableOption "Nginx Port Forward"; enable = mkEnableOption "Nginx Port Forward";
resolver = mkOption {
type = types.str;
description = "IP address of the resolver to use for upstream hostnames";
};
tcpPorts = mkOption { tcpPorts = mkOption {
type = with types; attrsOf (submodule portOpts); type = with types; attrsOf (submodule portOpts);
default = {}; default = {};

View File

@@ -1,52 +0,0 @@
{
"clerie.de": {
"icmp": { "enable": true },
"http": { "enable": true }
},
"wiki.clerie.de": {
"http": { "enable": true }
},
"blog.nadja.top": {
"http": { "enable": true }
},
"fem.social": {
"http": { "enable": true }
},
"tagesschau.de": {
"icmp": { "enable": true }
},
"google.com": {
"icmp": { "enable": true }
},
"achtbaan.nikhef.nl": {
"icmp": { "enable": true }
},
"www.fem.tu-ilmenau.de": {
"icmp": { "enable": true }
},
"www.heise.de": {
"icmp": { "enable": true }
},
"dyon.net.entr0py.de": {
"_comment": "Backend server of matrix.entr0py.de",
"icmp": { "enable": true }
},
"matrix.bau-ha.us": {
"synapse": { "enable": true }
},
"matrix.entr0py.de": {
"synapse": { "enable": true }
},
"matrix.fachschaften.org": {
"synapse": { "enable": true }
},
"clerie.uber.space": {
"clerie-uberspace": { "enable": true }
},
"cleriewi.uber.space": {
"clerie-uberspace": { "enable": true }
}
}

View File

@@ -1,7 +0,0 @@
final: prev:
{
clerie-build-support = {
writePythonScript = final.callPackage ./writePythonScript.nix {};
};
}

View File

@@ -1,37 +0,0 @@
{
python3,
writeTextFile,
lib,
}:
{
name,
text,
runtimePackages ? ps: [],
pythonPackage ? python3,
meta ? {},
passthru ? {},
derivationArgs ? {},
}:
let
pythonWithPackages = pythonPackage.withPackages runtimePackages;
in writeTextFile {
inherit
name
meta
passthru
derivationArgs
;
executable = true;
destination = "/bin/${name}";
allowSubstitutes = true;
preferLocalBuild = false;
text = ''
#!${lib.getExe pythonWithPackages}
${text}
'';
}

View File

@@ -10,8 +10,5 @@ runCommand "clerie-keys" {
gpg --import-options import-export --armor -o $out/gpg/clerie@clerie.de.asc --import ${../../users/clerie/gpg.asc} gpg --import-options import-export --armor -o $out/gpg/clerie@clerie.de.asc --import ${../../users/clerie/gpg.asc}
gpg --import-options import-export -o $out/gpg/clerie@clerie.de --import ${../../users/clerie/gpg.asc} gpg --import-options import-export -o $out/gpg/clerie@clerie.de --import ${../../users/clerie/gpg.asc}
gpg --import-options show-only --with-colons --fingerprint --import ${../../users/clerie/gpg.asc} > colons.txt gpg --import-options show-only --with-colons --fingerprint --import ${../../users/clerie/gpg.asc} | awk -F: '$1 == "fpr" {print $10;}' | head -1 > $out/gpg/clerie@clerie.de.fingerprint.txt
cat colons.txt | awk -F: '$1 == "fpr" {print $10;}' | head -1 > $out/gpg/clerie@clerie.de.fingerprint.txt
cat colons.txt | awk -F: '$1 == "pub" {print "@", $7;}' | date -f - -Iseconds > $out/gpg/clerie@clerie.de.expires.txt
cat colons.txt | awk '{printf "%s:%s", $0, ($0 ~ /^(pub|sub)/) ? ":" : "\n" }' | awk '$0 ~ /^(pub|sub)/ { print $0}' | awk -F: '{if ($1 == "pub") { fingerprint=$32; keyid=$5 }} {printf "clerie_keys_gpg_key_expire_time{fingerprint=\"%s\", keyid=\"%s\", subkeyfingerprint=\"%s\", subkeykeyid=\"%s\", type=\"%s\"} %s\n", fingerprint, keyid, ($1 == "sub") ? $30 : "", ($1 == "sub") ? $5 : "", $1, $7}' > $out/gpg/clerie@clerie.de.metrics.txt
'' ''

View File

@@ -11,8 +11,6 @@ pkgs.writeShellApplication {
if GIT_ROOT=$(git rev-parse --show-toplevel); then if GIT_ROOT=$(git rev-parse --show-toplevel); then
REPO_ROOT="$GIT_ROOT" REPO_ROOT="$GIT_ROOT"
fi fi
CONFIG_FILE="$(mktemp)" exec sops --config <(clerie-sops-config "$REPO_ROOT") "$@"
clerie-sops-config "$REPO_ROOT" > "$CONFIG_FILE"
exec sops --config "$CONFIG_FILE" "$@"
''; '';
} }

View File

@@ -2,11 +2,16 @@
set -euo pipefail set -euo pipefail
ALLOW_REBOOT=
NO_CONFIRM= NO_CONFIRM=
NODE_EXPORTER_METRICS_PATH= NODE_EXPORTER_METRICS_PATH=
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case $1 in case $1 in
--allow-reboot)
ALLOW_REBOOT=1
shift
;;
--no-confirm) --no-confirm)
NO_CONFIRM=1 NO_CONFIRM=1
shift shift
@@ -58,8 +63,13 @@ ACTIVATING_SYSTEM_KERNEL="$(readlink /nix/var/nix/profiles/system/{initrd,kernel
if [[ "$BOOTED_SYSTEM_KERNEL" != "$ACTIVATING_SYSTEM_KERNEL" ]]; then if [[ "$BOOTED_SYSTEM_KERNEL" != "$ACTIVATING_SYSTEM_KERNEL" ]]; then
echo "Reboot is required" echo "Reboot is required"
echo "Rebooting system now" if [[ -n "$ALLOW_REBOOT" ]]; then
shutdown -r +1 "System update requires reboot" echo "Rebooting system now"
shutdown -r +1 "System update requires reboot"
else
echo "Automatic reboot not allowed (maybe use --allow-reboot next time)"
echo "The system upgrade is staged, please reboot manually soon"
fi
else else
echo "No reboot is required" echo "No reboot is required"
echo "Activating system now" echo "Activating system now"

View File

@@ -1,10 +0,0 @@
{ pkgs, ... }:
pkgs.writeShellApplication {
name = "clerie-cleanup-branches";
text = builtins.readFile ./clerie-cleanup-branches.sh;
runtimeInputs = with pkgs; [
git
];
}

View File

@@ -1,7 +0,0 @@
#!/usr/bin/env bash
# Removes all branches from origin starting with updated-inputs-* except the 8 newest ones
git fetch origin --prune
git branch -r | sed "s/^ *//g" | grep "^origin/updated-inputs-" | sort | head -n -8 | sed "s/^origin\///g" | xargs git push origin --delete

View File

@@ -1,7 +0,0 @@
{ pkgs, ... }:
pkgs.clerie-build-support.writePythonScript {
name = "generate-blocked-prefixes";
runtimePackages = ps: with ps; [ requests ];
text = builtins.readFile ./generate-blocked-prefixes.py;
}

View File

@@ -1,39 +0,0 @@
#!/usr/bin/env python3
import ipaddress
import requests
blocked_asns = [
"45102", # Alibaba (US) Technology Co., Ltd.
]
r = requests.get('https://bgp.tools/table.txt', stream=True, headers={
"User-Agent": "https://git.clerie.de/clerie/nixfiles",
})
selected_ipv6_prefixes = []
selected_ipv4_prefixes = []
for line in r.iter_lines(decode_unicode=True):
prefix_string, asn_string = line.split()
if asn_string in blocked_asns:
prefix = ipaddress.ip_network(prefix_string)
if prefix.version == 6:
selected_ipv6_prefixes.append(prefix)
else:
selected_ipv4_prefixes.append(prefix)
selected_ipv6_prefixes = list(ipaddress.collapse_addresses(selected_ipv6_prefixes))
selected_ipv4_prefixes = list(ipaddress.collapse_addresses(selected_ipv4_prefixes))
selected_ipv6_prefixes.sort()
selected_ipv4_prefixes.sort()
with open("hosts/web-2/blocked-prefixes.txt", "w") as blocked_ips_file:
for ipv6_prefix in selected_ipv6_prefixes:
blocked_ips_file.write(f"ip6tables -I nixos-fw -s {ipv6_prefix} -j nixos-fw-refuse\n")
for ipv4_prefix in selected_ipv4_prefixes:
blocked_ips_file.write(f"iptables -I nixos-fw -s {ipv4_prefix} -j nixos-fw-refuse\n")

View File

@@ -1,6 +1,13 @@
{ pkgs, ... }: { pkgs, ... }:
pkgs.clerie-build-support.writePythonScript { pkgs.writeTextFile {
name = "git-show-link"; name = "git-show-link";
text = builtins.readFile ./git-show-link.py; executable = true;
destination = "/bin/git-show-link";
allowSubstitutes = true;
preferLocalBuild = false;
text = ''
#!${pkgs.python3.withPackages (ps: with ps; [])}/bin/python3
${builtins.readFile ./git-show-link.py}
'';
} }

Some files were not shown because too many files have changed in this diff Show More