Compare commits
585 Commits
updated-in
...
19bcdce837
Author | SHA1 | Date | |
---|---|---|---|
![]() |
19bcdce837 | ||
![]() |
8535c24d36 | ||
![]() |
24623e1a75 | ||
![]() |
0be63b0982 | ||
![]() |
06c34775b4 | ||
![]() |
27e58ff4a1 | ||
![]() |
e741cc4a2c | ||
![]() |
fdf1d4206a | ||
![]() |
0f81261ddf | ||
![]() |
3dc7cb33b9 | ||
![]() |
b9d6ce1aa7 | ||
![]() |
05fd86d004 | ||
![]() |
bba9712842 | ||
![]() |
ccda80b746 | ||
![]() |
05c4f429ec | ||
![]() |
a1302a5cc4 | ||
![]() |
a89b7dba45 | ||
![]() |
928dbffb1e | ||
![]() |
e4d893545f | ||
![]() |
50c9176084 | ||
![]() |
87044e7267 | ||
![]() |
215bd79bb6 | ||
![]() |
3a3504ec0f | ||
![]() |
1f40cc9008 | ||
![]() |
0f075be374 | ||
![]() |
6ce6126b01 | ||
![]() |
8c37d5c17a | ||
![]() |
00f446d5b6 | ||
![]() |
801e8de895 | ||
![]() |
142fd8aaa0 | ||
![]() |
e42947e389 | ||
![]() |
2a49030f0f | ||
![]() |
02c2492e46 | ||
![]() |
a8bd50b7ae | ||
![]() |
c7ab6e80e4 | ||
![]() |
f91326122e | ||
![]() |
6188cec90d | ||
![]() |
790cd52cd9 | ||
![]() |
36fbfac843 | ||
![]() |
bb0ba232c7 | ||
![]() |
b54aac0160 | ||
![]() |
dbabae3fc6 | ||
![]() |
d47fd59762 | ||
![]() |
21930d74c2 | ||
![]() |
79c9a9c485 | ||
![]() |
6027d0a3d3 | ||
![]() |
5811137ca6 | ||
![]() |
0903fc233e | ||
![]() |
7ca9ee8d4e | ||
![]() |
4be4197f90 | ||
![]() |
738feee47c | ||
![]() |
36f71846f6 | ||
![]() |
67e0549eeb | ||
![]() |
65fe780680 | ||
![]() |
542adc2e78 | ||
![]() |
3481ea614b | ||
![]() |
388eb69d34 | ||
![]() |
d6fb216188 | ||
![]() |
300bea150b | ||
![]() |
224a87d879 | ||
![]() |
e65d414063 | ||
![]() |
b8c278444f | ||
![]() |
945efd84f6 | ||
![]() |
ac3eb3f6e2 | ||
![]() |
6580b40825 | ||
![]() |
adde2b1cfa | ||
![]() |
d4d594cc5e | ||
![]() |
4f4e49e277 | ||
![]() |
30f2175fc6 | ||
![]() |
b1dcf04097 | ||
![]() |
a9226977dd | ||
![]() |
dfdf0c3da2 | ||
![]() |
f4e31212ab | ||
![]() |
6d8e91b1e1 | ||
![]() |
4456b98039 | ||
![]() |
5493f5bff0 | ||
![]() |
d8679cda9c | ||
![]() |
4c0d658a1c | ||
![]() |
a07489533d | ||
![]() |
baa0ce6174 | ||
![]() |
3314c2d291 | ||
![]() |
72d93ffe55 | ||
![]() |
ad4e357a31 | ||
![]() |
92209fd597 | ||
![]() |
8bfe46aedc | ||
![]() |
40c5ab439c | ||
![]() |
20ceed8dae | ||
![]() |
48f950b152 | ||
![]() |
522a18f1da | ||
![]() |
60a82f327d | ||
![]() |
6d91cf5b86 | ||
![]() |
6aa3688de2 | ||
![]() |
fae43288b5 | ||
![]() |
3528b4f463 | ||
![]() |
f03808cd54 | ||
![]() |
5acb2e4dfd | ||
![]() |
d34334f5da | ||
![]() |
7be9c7b1eb | ||
![]() |
1f2f75c194 | ||
![]() |
2ed461c335 | ||
![]() |
e4df775b1f | ||
![]() |
1572e65b53 | ||
![]() |
f0a948a034 | ||
![]() |
69358ecbe0 | ||
![]() |
d7c9a50d90 | ||
![]() |
f3dd12cedf | ||
![]() |
eb8bc89e41 | ||
![]() |
6c6305948c | ||
![]() |
576c3f91c2 | ||
![]() |
1225b14178 | ||
![]() |
1354d60199 | ||
![]() |
d307c72f3c | ||
![]() |
9a69d50076 | ||
![]() |
7140403dfe | ||
![]() |
8bdb9b8f17 | ||
![]() |
b875145185 | ||
![]() |
359d09df8c | ||
![]() |
60e468c385 | ||
![]() |
baf3e26c07 | ||
![]() |
a3d9f374af | ||
![]() |
c4d768aae4 | ||
![]() |
18df56c1a8 | ||
![]() |
e2fb4684e2 | ||
![]() |
a216a299ab | ||
![]() |
f2d49e763a | ||
![]() |
af57dc2787 | ||
![]() |
fd7c98216c | ||
![]() |
7bcb078848 | ||
![]() |
f2bd8ef2a5 | ||
![]() |
ec964956f3 | ||
![]() |
00cf922de1 | ||
![]() |
ed16fe723d | ||
![]() |
b933d7b7b7 | ||
![]() |
f8e3e03987 | ||
![]() |
a168a18199 | ||
![]() |
1ec5017c2b | ||
![]() |
1e23635ccd | ||
![]() |
822fdcb42e | ||
![]() |
fbdf478170 | ||
![]() |
6857e12778 | ||
![]() |
d2ae13ec56 | ||
![]() |
1644650c17 | ||
![]() |
e31044b74d | ||
![]() |
ff3228414b | ||
![]() |
2feeb28f60 | ||
![]() |
a0730b4606 | ||
![]() |
da8e3c64a4 | ||
![]() |
c3ad0e1276 | ||
![]() |
65970c187f | ||
![]() |
4ccc9acde1 | ||
![]() |
d93054696d | ||
![]() |
f96220ef89 | ||
![]() |
e1ae756928 | ||
![]() |
092a4cc277 | ||
![]() |
2a9486fcfc | ||
![]() |
74a67811d7 | ||
![]() |
181394b8c9 | ||
![]() |
6dab743d79 | ||
![]() |
c3e1bf4a95 | ||
![]() |
889e6dc10c | ||
![]() |
3a00159650 | ||
![]() |
6a707c6db6 | ||
![]() |
d2fb61bae0 | ||
![]() |
37c6c9bed4 | ||
![]() |
abac22a420 | ||
![]() |
c1fca4ef50 | ||
![]() |
f7887c6266 | ||
![]() |
4f6af63ce6 | ||
![]() |
b436b170b1 | ||
![]() |
0c9d6812d9 | ||
![]() |
c9fa4477fa | ||
![]() |
bb8bca6a6a | ||
![]() |
ac36104e91 | ||
![]() |
062a21cdd3 | ||
![]() |
c4d0e86c50 | ||
![]() |
3793ae083e | ||
![]() |
5e76c539e3 | ||
![]() |
b92508049b | ||
![]() |
67ae5b60b4 | ||
![]() |
711c8238ae | ||
![]() |
ee9cee0210 | ||
![]() |
3a9c6c9586 | ||
![]() |
4482772797 | ||
![]() |
d1f52b3882 | ||
![]() |
cb3f7ea152 | ||
![]() |
37ce9ac44a | ||
![]() |
a362ea66da | ||
![]() |
8a0fcf0386 | ||
![]() |
1ba8e57b36 | ||
![]() |
3acc745a2d | ||
![]() |
fe6464c7b1 | ||
![]() |
c8c8c14422 | ||
![]() |
de0ce4d58f | ||
![]() |
6cccf29a75 | ||
![]() |
cd4a18f2df | ||
![]() |
0a95d368e9 | ||
![]() |
78a76b116e | ||
![]() |
a9d0694439 | ||
![]() |
882eae2225 | ||
![]() |
99e0209396 | ||
![]() |
bd9b6474b7 | ||
![]() |
236a495f83 | ||
![]() |
b3ff10b0ba | ||
![]() |
140c0eda49 | ||
![]() |
cca8e2cc57 | ||
![]() |
8cc8600c0a | ||
![]() |
cbed65a601 | ||
![]() |
1dce42c252 | ||
![]() |
1a410dfaa1 | ||
![]() |
4e25034765 | ||
![]() |
9af692c19a | ||
![]() |
2f08617058 | ||
![]() |
58b8f27cbd | ||
![]() |
f67be8aa8a | ||
![]() |
c3ed11df9f | ||
![]() |
02bfbab29b | ||
![]() |
91dad776a4 | ||
![]() |
799d654427 | ||
![]() |
c7a6eb10de | ||
![]() |
1cd8f11597 | ||
![]() |
d1fffe1c99 | ||
![]() |
aae7b95894 | ||
![]() |
2b3abf677a | ||
![]() |
a34a1ca997 | ||
![]() |
711c2e4ccf | ||
![]() |
93f557a5ec | ||
![]() |
d9d501d34c | ||
![]() |
034edf43ed | ||
![]() |
9c17854d0a | ||
![]() |
820fa65986 | ||
![]() |
a41ae92b09 | ||
![]() |
9f29c59e0b | ||
![]() |
693b92f68f | ||
![]() |
aba854931a | ||
![]() |
061be6052f | ||
![]() |
1208738a8e | ||
![]() |
9e2d1239a7 | ||
![]() |
04f66d4d2c | ||
![]() |
2c813d7475 | ||
![]() |
f2bb03bde6 | ||
![]() |
0bf1a7df74 | ||
![]() |
7c6842f93c | ||
![]() |
37b403910a | ||
![]() |
40b2b4ee36 | ||
![]() |
f1ecf4873e | ||
![]() |
4c1c87c828 | ||
![]() |
0f6610ef3c | ||
![]() |
b68dae5301 | ||
![]() |
75075a6118 | ||
![]() |
73e3e8afff | ||
![]() |
55c5930769 | ||
![]() |
98ac891e24 | ||
![]() |
df0ed63fa9 | ||
![]() |
9d63422c8c | ||
![]() |
d2824f259e | ||
![]() |
3a3105a58e | ||
6dabb715dc | |||
![]() |
5d799f9330 | ||
ff389e7643 | |||
![]() |
cb6c3ff8f4 | ||
4d439487e0 | |||
![]() |
0077f078aa | ||
0f800b1751 | |||
bf1fa709cf | |||
![]() |
812aeeb0b4 | ||
4fd2403afc | |||
![]() |
48ce404d41 | ||
dd6d23f0c8 | |||
a70ff1b7e6 | |||
![]() |
44bc74bc94 | ||
99e40e41c5 | |||
![]() |
d35296e37c | ||
309a8d2fe7 | |||
![]() |
c2f605d975 | ||
d256930c54 | |||
![]() |
9a6b2d029c | ||
70121ea935 | |||
![]() |
9752a0367d | ||
91c4036a21 | |||
![]() |
1219c9a25e | ||
b874978ed2 | |||
![]() |
26c29880bf | ||
98ac65c9be | |||
![]() |
78f9280352 | ||
324f57fe36 | |||
8e47b6466d | |||
f703f527b9 | |||
![]() |
4d9e7ca491 | ||
a84d74d2e8 | |||
d94c5d69b2 | |||
![]() |
e07e7c9e31 | ||
94259096a9 | |||
![]() |
03a0fb87fd | ||
c86125095a | |||
![]() |
6709c726f1 | ||
18894e237f | |||
![]() |
69666ec8e4 | ||
f56762bad1 | |||
![]() |
141e79e0b1 | ||
386ff0ff18 | |||
![]() |
d6a4efd9e0 | ||
0c654091bb | |||
def2051a98 | |||
![]() |
cca7e36399 | ||
babca2f046 | |||
![]() |
e687b5d4ef | ||
f48178a8ce | |||
![]() |
ebc9d51817 | ||
643d9ff028 | |||
![]() |
d219d97389 | ||
f16829ad74 | |||
![]() |
dd26377783 | ||
79f78cbec7 | |||
![]() |
cc0e575c58 | ||
6a5c340016 | |||
![]() |
934b8d7e49 | ||
5e2600b8de | |||
![]() |
60ad2f0e7d | ||
9ccec046d9 | |||
![]() |
793122bdbf | ||
6a2954b7d8 | |||
![]() |
4639d23f10 | ||
e7d912ea78 | |||
![]() |
b1fe15f4c9 | ||
98433cca60 | |||
![]() |
2ac4cfb134 | ||
7b802253d4 | |||
![]() |
e91b60194c | ||
4ad23f2410 | |||
![]() |
f47c1ae001 | ||
4d7dd1c3a6 | |||
![]() |
03de7bdb88 | ||
4705d84e9c | |||
![]() |
5bb5b7d351 | ||
c3b8b09919 | |||
![]() |
2faef93c91 | ||
57548d56c1 | |||
![]() |
da371f50be | ||
96cd7dc989 | |||
![]() |
04cf2bb039 | ||
1fa4ddead1 | |||
![]() |
90f29fa1d1 | ||
2979f07a00 | |||
![]() |
02b2c8f75a | ||
51e569cf5a | |||
![]() |
d942fd12c7 | ||
f84b363547 | |||
94ef76d3f6 | |||
![]() |
2974b4f18e | ||
e9f75f73a2 | |||
![]() |
d03525d6a4 | ||
b6f07ccb3e | |||
![]() |
1549e57971 | ||
07526cec2c | |||
![]() |
816aa0b86d | ||
4a20ffc5f1 | |||
![]() |
9f26dc2121 | ||
3c0e1052f7 | |||
![]() |
243a1f3217 | ||
2279574ed4 | |||
![]() |
f14ca9ec4d | ||
6658fe1f59 | |||
![]() |
db4c58f0f9 | ||
22b95fec3e | |||
![]() |
7d39df3a42 | ||
f3398f8a4d | |||
![]() |
4d5540b00a | ||
9cc7389298 | |||
![]() |
b61f1d52cf | ||
287789bbee | |||
![]() |
4617a4da4c | ||
78350d0dd8 | |||
![]() |
4506600be0 | ||
5e788373b1 | |||
![]() |
3e9346f2d3 | ||
ba874deec5 | |||
![]() |
35fe2f1286 | ||
dcf94ffb39 | |||
![]() |
3d0de79926 | ||
5e69eba537 | |||
![]() |
c31b5ca88f | ||
168dbfe770 | |||
![]() |
b945893d50 | ||
b045babff4 | |||
![]() |
a9e4cc9760 | ||
![]() |
d835f49a60 | ||
![]() |
0a69c32a57 | ||
![]() |
2bac86be95 | ||
![]() |
987a65fe2b | ||
![]() |
9aff1c7e6d | ||
![]() |
1c7653b2b8 | ||
![]() |
5492d89c74 | ||
![]() |
c61ff2bb95 | ||
![]() |
b8751b0c54 | ||
![]() |
973d041bbb | ||
09bba3ab5b | |||
018c05a584 | |||
4f34198671 | |||
50d54f66a2 | |||
![]() |
60fcff8529 | ||
![]() |
62e3f589aa | ||
![]() |
6930d2ab09 | ||
![]() |
e0b7db13e7 | ||
![]() |
b95f21d3d8 | ||
![]() |
aaa400c738 | ||
![]() |
5673cfc679 | ||
![]() |
5d282b41bc | ||
![]() |
329dc12c9e | ||
![]() |
f74aa6f1d8 | ||
![]() |
73d669c3fb | ||
![]() |
539e555429 | ||
![]() |
90dee7fd3f | ||
![]() |
3a0af4103e | ||
![]() |
510545f837 | ||
![]() |
22e3577baf | ||
![]() |
b52b2f129d | ||
![]() |
80524f83c3 | ||
![]() |
675e0bbfcd | ||
![]() |
a6554dc498 | ||
![]() |
e9d4f37d16 | ||
![]() |
eaccce56eb | ||
![]() |
cfc9b79c33 | ||
![]() |
a886581a43 | ||
![]() |
35be56e015 | ||
![]() |
78477659f4 | ||
![]() |
c9c9277cbb | ||
![]() |
d715eced4c | ||
![]() |
77a844592e | ||
![]() |
338d934672 | ||
![]() |
13c94f1b66 | ||
![]() |
c0a4234c92 | ||
![]() |
8ea06d03a3 | ||
![]() |
f0271b86c0 | ||
![]() |
acaddbfec4 | ||
![]() |
a2b942e440 | ||
![]() |
0dcf1680f0 | ||
![]() |
7ece34bb63 | ||
![]() |
3a9b7adc57 | ||
![]() |
7b8996e5fb | ||
![]() |
3b0be0fc49 | ||
![]() |
f868c157c5 | ||
![]() |
eb3af3b1f9 | ||
![]() |
9881a4f6bd | ||
![]() |
b9a6b9a00e | ||
![]() |
2c830d1366 | ||
![]() |
67ff27ff74 | ||
![]() |
a4459b2916 | ||
![]() |
88591acdcd | ||
![]() |
f53958080a | ||
![]() |
d1aee59628 | ||
![]() |
f2f7276ab7 | ||
![]() |
fa0d5e1c5c | ||
![]() |
902ef24b36 | ||
![]() |
756a3ae3d8 | ||
![]() |
8b4bc5ac54 | ||
![]() |
a9023e95b9 | ||
![]() |
a5912941e4 | ||
![]() |
1d3d2bf7c4 | ||
![]() |
8e96b86fcd | ||
![]() |
44a7b5b464 | ||
![]() |
bc50f2c32c | ||
![]() |
baf2cfde5c | ||
![]() |
4713220190 | ||
![]() |
5dc276e086 | ||
![]() |
a26d077e71 | ||
![]() |
d491be8423 | ||
![]() |
dcf0ad5189 | ||
![]() |
857db3d80c | ||
![]() |
4cebb488cd | ||
![]() |
a78de16242 | ||
![]() |
7c6d8e3808 | ||
![]() |
1d8683133b | ||
![]() |
08a6620631 | ||
![]() |
f84cac37ca | ||
![]() |
a201969a96 | ||
![]() |
dbed794e8c | ||
![]() |
2bace31053 | ||
![]() |
093d99d72a | ||
![]() |
cd9b135d44 | ||
![]() |
ba4f6b50cc | ||
![]() |
460f31591b | ||
![]() |
84ca3f739a | ||
![]() |
7550ff62c2 | ||
![]() |
49f554a6fd | ||
![]() |
c678ac2ca9 | ||
![]() |
9fbf607541 | ||
![]() |
a24b4930df | ||
![]() |
e3ee6f0e75 | ||
![]() |
e1c6ffd9a7 | ||
![]() |
e73197465f | ||
![]() |
442cfc7547 | ||
![]() |
e17aa47e60 | ||
![]() |
7c219eae2c | ||
![]() |
71bc1242ed | ||
![]() |
ef0c609128 | ||
![]() |
5ca5e7ed81 | ||
![]() |
3f268a82f7 | ||
![]() |
1b93811df8 | ||
![]() |
88d973ac68 | ||
![]() |
4f4413f899 | ||
![]() |
f7c0f7acd6 | ||
![]() |
c4968b9505 | ||
![]() |
ff41111279 | ||
![]() |
93757fedd0 | ||
![]() |
c234beabb2 | ||
![]() |
8ce1d547be | ||
![]() |
54f8092b74 | ||
![]() |
6a90144ed6 | ||
![]() |
cc5c0e94e9 | ||
![]() |
eaa5c734c8 | ||
![]() |
6e391a8c28 | ||
![]() |
65b0a20208 | ||
![]() |
9ffb4fa661 | ||
![]() |
22dd1be6ca | ||
![]() |
603a0443ea | ||
![]() |
12ea980d63 | ||
![]() |
d212eb2163 | ||
![]() |
c043eb0617 | ||
![]() |
81de5f91ee | ||
![]() |
7bdb65e9b5 | ||
![]() |
46df9afb0c | ||
![]() |
31b1622eb1 | ||
![]() |
da10fd9bd3 | ||
![]() |
65999c4dfd | ||
![]() |
5a006772f6 | ||
![]() |
35a205c107 | ||
![]() |
e298fac142 | ||
![]() |
51de619e5b | ||
![]() |
f7385e88de | ||
![]() |
e0efe371cd | ||
![]() |
b56878bbf2 | ||
![]() |
8d47b9cb81 | ||
![]() |
cb6837b311 | ||
![]() |
1e26304c1f | ||
![]() |
62097e7131 | ||
![]() |
9db1882b01 | ||
![]() |
a9bd07da49 | ||
![]() |
26f2c64428 | ||
![]() |
08f82b23ba | ||
![]() |
761e8ae0aa | ||
![]() |
d3a1307cce | ||
![]() |
d6878a4061 | ||
![]() |
ea054a0b2d | ||
![]() |
3c84234c64 | ||
![]() |
88c5954877 | ||
![]() |
5fbf19ec48 | ||
![]() |
22c2b28168 | ||
![]() |
b2b4793676 | ||
![]() |
8d976f45aa | ||
![]() |
7f728f26ec | ||
![]() |
3b229aff13 | ||
![]() |
c01cff70b9 | ||
![]() |
131a553a84 | ||
![]() |
98bb0f55e5 | ||
![]() |
fa8f218f03 | ||
![]() |
3924873442 | ||
![]() |
aa3d5c74cb | ||
![]() |
57ef206512 | ||
![]() |
7f6985e5c9 | ||
![]() |
dd674ebcd9 | ||
![]() |
ec00e3a8b5 | ||
![]() |
0504681e2c | ||
![]() |
6a792f48d4 | ||
![]() |
8cbed24e1e | ||
![]() |
6860ae0f1e | ||
![]() |
d937ce3c5c | ||
![]() |
3256b0efc7 | ||
![]() |
f99589aa85 | ||
![]() |
d0182cb4e1 | ||
![]() |
a10c89ef71 | ||
![]() |
bced1fa96f | ||
![]() |
06f20a797e | ||
![]() |
ee5286d41d | ||
![]() |
3dc1ac6278 | ||
![]() |
309be63ffd | ||
![]() |
de46297303 | ||
![]() |
5e3a06019c | ||
![]() |
b8d773e550 | ||
![]() |
7ca6c566f1 | ||
![]() |
6d67512218 | ||
![]() |
a9bc5f46ee | ||
7424f402e3 | |||
bae0b90d10 | |||
781c240ba9 | |||
![]() |
c4dd3477ea |
@@ -4,8 +4,8 @@
|
||||
|
||||
clerie.backup = {
|
||||
targets = {
|
||||
cyan.serverUrl = "https://cyan.backup.clerie.de";
|
||||
magenta.serverUrl = "https://magenta.backup.clerie.de";
|
||||
cyan.serverName = "cyan.backup.clerie.de";
|
||||
magenta.serverName = "magenta.backup.clerie.de";
|
||||
};
|
||||
};
|
||||
|
||||
|
@@ -1,11 +0,0 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
environment.sessionVariables = {
|
||||
REQUESTS_CA_BUNDLE = mkDefault config.security.pki.caBundle;
|
||||
};
|
||||
|
||||
}
|
@@ -3,14 +3,15 @@
|
||||
{
|
||||
imports = [
|
||||
./backup.nix
|
||||
./certificates.nix
|
||||
./initrd.nix
|
||||
./locale.nix
|
||||
./networking.nix
|
||||
./nix.nix
|
||||
./programs.nix
|
||||
./ssh.nix
|
||||
./systemd.nix
|
||||
./user.nix
|
||||
./web.nix
|
||||
];
|
||||
|
||||
services.fstrim.enable = true;
|
||||
|
70
configuration/common/nix.nix
Normal file
70
configuration/common/nix.nix
Normal 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
|
||||
];
|
||||
}
|
54
configuration/common/web.nix
Normal file
54
configuration/common/web.nix
Normal 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;
|
||||
};
|
||||
}
|
19
configuration/desktop/audio.nix
Normal file
19
configuration/desktop/audio.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
19
configuration/desktop/default.nix
Normal file
19
configuration/desktop/default.nix
Normal 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;
|
||||
}
|
7
configuration/desktop/firmware.nix
Normal file
7
configuration/desktop/firmware.nix
Normal file
@@ -0,0 +1,7 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
|
||||
services.fwupd.enable = true;
|
||||
|
||||
}
|
13
configuration/desktop/fonts.nix
Normal file
13
configuration/desktop/fonts.nix
Normal 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 ]);
|
||||
}
|
61
configuration/desktop/gnome.nix
Normal file
61
configuration/desktop/gnome.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
43
configuration/desktop/inputs.nix
Normal file
43
configuration/desktop/inputs.nix
Normal 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;
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
14
configuration/desktop/networking.nix
Normal file
14
configuration/desktop/networking.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
|
||||
networking.networkmanager.settings = {
|
||||
connectivity = {
|
||||
uri = "http://ping.clerie.de/nm-check.txt";
|
||||
};
|
||||
global-dns = {
|
||||
searches = "net.clerie.de";
|
||||
};
|
||||
};
|
||||
|
||||
}
|
7
configuration/desktop/polkit.nix
Normal file
7
configuration/desktop/polkit.nix
Normal file
@@ -0,0 +1,7 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
|
||||
security.polkit.enable = true;
|
||||
|
||||
}
|
42
configuration/desktop/power.nix
Normal file
42
configuration/desktop/power.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
7
configuration/desktop/printing.nix
Normal file
7
configuration/desktop/printing.nix
Normal file
@@ -0,0 +1,7 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
services.printing.enable = true;
|
||||
services.avahi.enable = true;
|
||||
services.avahi.nssmdns4 = true;
|
||||
}
|
34
configuration/desktop/ssh.nix
Normal file
34
configuration/desktop/ssh.nix
Normal 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
|
||||
'';
|
||||
};
|
||||
})
|
||||
];
|
||||
*/
|
||||
}
|
11
configuration/desktop/xserver.nix
Normal file
11
configuration/desktop/xserver.nix
Normal 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
|
||||
];
|
||||
}
|
22
configuration/dn42/default.nix
Normal file
22
configuration/dn42/default.nix
Normal 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
|
||||
'';
|
||||
}
|
51
configuration/gpg-ssh/default.nix
Normal file
51
configuration/gpg-ssh/default.nix
Normal 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
|
||||
];
|
||||
}
|
16
configuration/hydra-build-machine/default.nix
Normal file
16
configuration/hydra-build-machine/default.nix
Normal 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"
|
||||
];
|
||||
|
||||
}
|
27
configuration/router/default.nix
Normal file
27
configuration/router/default.nix
Normal 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
423
flake.lock
generated
@@ -27,11 +27,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1748808701,
|
||||
"narHash": "sha256-IEer4ypv/tL2zzo7nkgyg7xdK6P+Mc/22oPctEgwhiw=",
|
||||
"lastModified": 1724513039,
|
||||
"narHash": "sha256-YdBuRgXEU9CcxPd2EjuvDKcfgxL1kk9Gv8nFVVjIros=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "5f3748df43e6b6e49cc0a23557a378ef37952483",
|
||||
"revCount": 5,
|
||||
"rev": "202f4a1a5791c74a9b7d69a4e63e631bdbe36ba6",
|
||||
"revCount": 4,
|
||||
"type": "git",
|
||||
"url": "https://git.clerie.de/clerie/bij.git"
|
||||
},
|
||||
@@ -58,36 +58,19 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"communities": "communities",
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741172718,
|
||||
"narHash": "sha256-YDEJVlmPzOuKfG26iYuJVOlxFvKBVeb8DbAI9WOtnBU=",
|
||||
"lastModified": 1700408128,
|
||||
"narHash": "sha256-PLb/q8kIq0wOinkgADHNY6uOB3b3lXQEbLu6ToIFPsU=",
|
||||
"owner": "wobcom",
|
||||
"repo": "fernglas",
|
||||
"rev": "64e2f9af8aefeeaa63431477066dcc0236d111e0",
|
||||
"rev": "407325681e3ad344f6fd05334984a40074aa6347",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -116,21 +99,6 @@
|
||||
}
|
||||
},
|
||||
"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,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
@@ -168,6 +136,28 @@
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"nixpkgs-lib": [
|
||||
"ssh-to-age",
|
||||
@@ -193,11 +183,11 @@
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"lastModified": 1694529238,
|
||||
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -264,55 +254,52 @@
|
||||
},
|
||||
"hydra": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"lix": "lix",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
"lix": [
|
||||
"lix"
|
||||
],
|
||||
"nix-eval-jobs": "nix-eval-jobs",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1751801455,
|
||||
"narHash": "sha256-hUJqtS88SbNQQSEJAPFyY2vLMh8yA8rQ6jbul50p64M=",
|
||||
"ref": "lix-2.93",
|
||||
"rev": "b940aca430a7ca41f70bdb320659dd62026fe0e9",
|
||||
"revCount": 4261,
|
||||
"lastModified": 1737885770,
|
||||
"narHash": "sha256-neRDOoeJj4svdSAxXW8ZJOYWQzzOCRYppkaLaHPfs3A=",
|
||||
"ref": "lix-2.92",
|
||||
"rev": "7b3d065a13b21ec8109a250ac6148553bda52d5e",
|
||||
"revCount": 4233,
|
||||
"type": "git",
|
||||
"url": "https://git.lix.systems/lix-project/hydra.git"
|
||||
},
|
||||
"original": {
|
||||
"ref": "lix-2.93",
|
||||
"ref": "lix-2.92",
|
||||
"type": "git",
|
||||
"url": "https://git.lix.systems/lix-project/hydra.git"
|
||||
}
|
||||
},
|
||||
"lix": {
|
||||
"inputs": {
|
||||
"flake-compat": [
|
||||
"hydra",
|
||||
"flake-compat"
|
||||
],
|
||||
"flake-compat": "flake-compat",
|
||||
"nix2container": "nix2container",
|
||||
"nix_2_18": [
|
||||
"hydra"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"hydra",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-regression": "nixpkgs-regression",
|
||||
"pre-commit-hooks": "pre-commit-hooks"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1751235704,
|
||||
"narHash": "sha256-Jzm3KPZ2gL+0Nl3Mw/2E0B3vqDDi1Xt5+9VCXghUDZ8=",
|
||||
"ref": "release-2.93",
|
||||
"rev": "f3a7bbe5f8d1a8504ddb6362d50106904523e440",
|
||||
"revCount": 17874,
|
||||
"lastModified": 1741509550,
|
||||
"narHash": "sha256-O7+c7MYOvKnGhE5qwRqV+q0NePEtiz6spM1Mfu/Heck=",
|
||||
"ref": "release-2.92",
|
||||
"rev": "0d1f794178d42bfa1ef40ecb80be514139779184",
|
||||
"revCount": 16641,
|
||||
"type": "git",
|
||||
"url": "https://git.lix.systems/lix-project/lix"
|
||||
"url": "https://git.lix.systems/lix-project/lix.git"
|
||||
},
|
||||
"original": {
|
||||
"ref": "release-2.93",
|
||||
"ref": "release-2.92",
|
||||
"type": "git",
|
||||
"url": "https://git.lix.systems/lix-project/lix"
|
||||
"url": "https://git.lix.systems/lix-project/lix.git"
|
||||
}
|
||||
},
|
||||
"lix-module": {
|
||||
@@ -327,62 +314,20 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1753282722,
|
||||
"narHash": "sha256-KYMUrTV7H/RR5/HRnjV5R3rRIuBXMemyJzTLi50NFTs=",
|
||||
"ref": "release-2.93",
|
||||
"rev": "46a9e8fcfe4be72b4c7c8082ee11d2c42da1e873",
|
||||
"revCount": 149,
|
||||
"lastModified": 1741892773,
|
||||
"narHash": "sha256-8oUT6D7VlsuLkms3zBsUaPBUoxucmFq62QdtyVpjq0Y=",
|
||||
"ref": "release-2.92",
|
||||
"rev": "ed7a2fa83145868ecb830d6b3c73ebfd81a9e911",
|
||||
"revCount": 130,
|
||||
"type": "git",
|
||||
"url": "https://git.lix.systems/lix-project/nixos-module.git"
|
||||
},
|
||||
"original": {
|
||||
"ref": "release-2.93",
|
||||
"ref": "release-2.92",
|
||||
"type": "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": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -404,6 +349,56 @@
|
||||
"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": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -420,50 +415,6 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -471,11 +422,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1746733297,
|
||||
"narHash": "sha256-CPo/F6oJq3tswg2YT6DsWDFPYXOjw00/3m45JN84PVY=",
|
||||
"lastModified": 1683625533,
|
||||
"narHash": "sha256-GvKE97JdQuEZ697TLSMRTNABbVJfGVnJ0vfzK4AIFyI=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "f1a832f445c9994d9729a6fa1862b8d4a123bd31",
|
||||
"revCount": 22,
|
||||
"rev": "5e86139ee4af27f84228708fd32903bb0c4230f0",
|
||||
"revCount": 19,
|
||||
"type": "git",
|
||||
"url": "https://git.clerie.de/clerie/nixos-exporter.git"
|
||||
},
|
||||
@@ -532,22 +483,6 @@
|
||||
"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": {
|
||||
"locked": {
|
||||
"lastModified": 1643052045,
|
||||
@@ -564,22 +499,6 @@
|
||||
"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": {
|
||||
"locked": {
|
||||
"lastModified": 1713434076,
|
||||
@@ -614,43 +533,11 @@
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1751582995,
|
||||
"narHash": "sha256-u7ubvtxdTnFPpV27AHpgoKn7qHuE7sgWgza/1oj5nzA=",
|
||||
"lastModified": 1742069588,
|
||||
"narHash": "sha256-C7jVfohcGzdZRF6DO+ybyG/sqpo1h6bZi9T56sxLy+k=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "7a732ed41ca0dd64b4b71b563ab9805a80a7d693",
|
||||
"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": 1755027561,
|
||||
"narHash": "sha256-IVft239Bc8p8Dtvf7UAACMG5P3ZV+3/aO28gXpGtMXI=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "005433b926e16227259a1843015b5b2b7f7d1fc3",
|
||||
"rev": "c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -696,22 +583,6 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -719,11 +590,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1745667868,
|
||||
"narHash": "sha256-T67ZRk+cuFI2P6qJeu8RwbpJD00OORulHGuXebpg9Nw=",
|
||||
"lastModified": 1736087671,
|
||||
"narHash": "sha256-zWeiCs+8SAS1wN5M3w3vSNNpILoKXqX9aj/ZZcgfMms=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "e43037aa525e36d7a3da187a8fc6baeb71db7fd6",
|
||||
"revCount": 15,
|
||||
"rev": "ceab6a148233ffb23de19411a3e5579e3394a35b",
|
||||
"revCount": 9,
|
||||
"type": "git",
|
||||
"url": "https://git.clerie.de/clerie/rainbowrss.git"
|
||||
},
|
||||
@@ -741,20 +612,18 @@
|
||||
"fieldpoc": "fieldpoc",
|
||||
"harmonia": "harmonia",
|
||||
"hydra": "hydra",
|
||||
"lix": "lix_2",
|
||||
"lix": "lix",
|
||||
"lix-module": "lix-module",
|
||||
"nixos-exporter": "nixos-exporter",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_5",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"nixpkgs-0dc1c7": "nixpkgs-0dc1c7",
|
||||
"nixpkgs-carbon": "nixpkgs-carbon",
|
||||
"nurausstieg": "nurausstieg",
|
||||
"rainbowrss": "rainbowrss",
|
||||
"scan-to-gpg": "scan-to-gpg",
|
||||
"solid-xmpp-alarm": "solid-xmpp-alarm",
|
||||
"sops-nix": "sops-nix",
|
||||
"ssh-to-age": "ssh-to-age",
|
||||
"traveldrafter": "traveldrafter"
|
||||
"ssh-to-age": "ssh-to-age"
|
||||
}
|
||||
},
|
||||
"scan-to-gpg": {
|
||||
@@ -820,7 +689,7 @@
|
||||
},
|
||||
"ssh-to-age": {
|
||||
"inputs": {
|
||||
"flake-parts": "flake-parts_2",
|
||||
"flake-parts": "flake-parts_3",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
@@ -869,26 +738,6 @@
|
||||
"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": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -909,6 +758,28 @@
|
||||
"repo": "treefmt-nix",
|
||||
"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",
|
||||
|
45
flake.nix
45
flake.nix
@@ -1,7 +1,6 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
nixpkgs-carbon.url = "github:clerie/nixpkgs/clerie/always-setup-netdevs";
|
||||
# for etesync-dav
|
||||
nixpkgs-0dc1c7.url = "github:NixOS/nixpkgs/0dc1c7294c13f5d1dd6eccab4f75d268d7296efe";
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
@@ -26,16 +25,16 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
hydra = {
|
||||
url = "git+https://git.lix.systems/lix-project/hydra.git?ref=lix-2.93";
|
||||
#inputs.lix.follows = "lix";
|
||||
#inputs.nixpkgs.follows = "nixpkgs";
|
||||
url = "git+https://git.lix.systems/lix-project/hydra.git?ref=lix-2.92";
|
||||
inputs.lix.follows = "lix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
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";
|
||||
};
|
||||
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.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
@@ -68,13 +67,11 @@
|
||||
url = "github:Mic92/ssh-to-age";
|
||||
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
|
||||
lib = import ./lib inputs;
|
||||
helper = lib.flake-helper;
|
||||
localNixpkgs = import ./flake/nixpkgs.nix inputs;
|
||||
in {
|
||||
clerie.hosts = {
|
||||
aluminium = {
|
||||
@@ -112,11 +109,7 @@
|
||||
osmium = {};
|
||||
palladium = {};
|
||||
porter = {};
|
||||
storage-2 = {
|
||||
modules = [
|
||||
./users/frank
|
||||
];
|
||||
};
|
||||
storage-2 = {};
|
||||
tungsten = {};
|
||||
web-2 = {};
|
||||
zinc = {
|
||||
@@ -138,24 +131,14 @@
|
||||
};
|
||||
|
||||
overlays = {
|
||||
clerie-inputs = import ./flake/inputs-overlay.nix inputs;
|
||||
clerie-pkgs = import ./pkgs/overlay.nix;
|
||||
clerie-build-support = import ./pkgs/build-support/overlay.nix;
|
||||
clerie-overrides = import ./pkgs/overrides/overlay.nix;
|
||||
nixfilesInputs = import ./flake/overlay.nix inputs;
|
||||
clerie = import ./pkgs/overlay.nix;
|
||||
default = self.overlays.clerie;
|
||||
};
|
||||
|
||||
nixpkgs = nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" ] (system:
|
||||
lib.mkNixpkgs {
|
||||
inherit system;
|
||||
}
|
||||
);
|
||||
|
||||
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}")
|
||||
);
|
||||
packages = nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" ] (system: let
|
||||
pkgs = localNixpkgs.${system};
|
||||
in builtins.mapAttrs (name: value: pkgs."${name}") (import ./pkgs/pkgs.nix));
|
||||
|
||||
inherit lib self;
|
||||
|
||||
|
@@ -10,12 +10,6 @@ let
|
||||
in {
|
||||
inherit (self)
|
||||
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;
|
||||
iso = self.nixosConfigurations._iso.config.system.build.isoImage;
|
||||
}
|
||||
|
@@ -11,14 +11,33 @@ let
|
||||
modules ? [],
|
||||
}: let
|
||||
localNixpkgs = nixpkgs.lib.attrByPath [ "nixpkgs-${name}" ] nixpkgs inputs;
|
||||
in self.lib.nixosSystem {
|
||||
in localNixpkgs.lib.nixosSystem {
|
||||
system = system;
|
||||
nixpkgs = localNixpkgs;
|
||||
modules = modules ++ [
|
||||
self.nixosModules.nixfilesInputs
|
||||
self.nixosModules.clerie
|
||||
self.nixosModules.profiles
|
||||
|
||||
({ config, lib, ... }: {
|
||||
# Set hostname
|
||||
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
|
||||
clerie.monitoring = nixpkgs.lib.attrsets.optionalAttrs (group != null) { serviceLevel = group; };
|
||||
|
||||
@@ -33,9 +52,6 @@ let
|
||||
{};
|
||||
in
|
||||
secrets;
|
||||
|
||||
# Enable clerie common config
|
||||
profiles.clerie.common.enable = true;
|
||||
})
|
||||
|
||||
# Config to be applied to every host
|
||||
|
17
flake/nixpkgs.nix
Normal file
17
flake/nixpkgs.nix
Normal 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; })
|
@@ -9,7 +9,6 @@
|
||||
, rainbowrss
|
||||
, scan-to-gpg
|
||||
, ssh-to-age
|
||||
, traveldrafter
|
||||
, ...
|
||||
}@inputs:
|
||||
final: prev: {
|
||||
@@ -33,6 +32,4 @@ final: prev: {
|
||||
scan-to-gpg;
|
||||
inherit (ssh-to-age.packages.${final.system})
|
||||
ssh-to-age;
|
||||
inherit (traveldrafter.packages.${final.system})
|
||||
traveldrafter;
|
||||
}
|
@@ -3,11 +3,9 @@
|
||||
{
|
||||
imports = [
|
||||
(modulesPath + "/installer/cd-dvd/installation-cd-base.nix")
|
||||
../../configuration/gpg-ssh
|
||||
];
|
||||
|
||||
profiles.clerie.gpg-ssh.enable = true;
|
||||
profiles.clerie.network-fallback-dhcp.enable = true;
|
||||
|
||||
# systemd in initrd is broken with ISOs
|
||||
# Failed to mount /sysroot/iso
|
||||
# https://github.com/NixOS/nixpkgs/issues/327187
|
||||
|
@@ -18,7 +18,7 @@
|
||||
terminal_output serial
|
||||
";
|
||||
|
||||
profiles.clerie.wg-clerie = {
|
||||
services.wg-clerie = {
|
||||
enable = true;
|
||||
ipv6s = [ "2a01:4f8:c0c:15f1::8106/128" ];
|
||||
ipv4s = [ "10.20.30.106/32" ];
|
||||
|
@@ -4,21 +4,30 @@
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
profiles.clerie.network-fallback-dhcp.enable = true;
|
||||
./ppp.nix
|
||||
./programs.nix
|
||||
./users.nix
|
||||
];
|
||||
|
||||
boot.kernelParams = [ "console=ttyS0,115200n8" ];
|
||||
|
||||
# Use the GRUB 2 boot loader.
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/sda";
|
||||
# boot.loader.grub.efiSupport = true;
|
||||
# boot.loader.grub.efiInstallAsRemovable = true;
|
||||
# boot.loader.efi.efiSysMountPoint = "/boot/efi";
|
||||
# Define on which hard drive you want to install Grub.
|
||||
boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only
|
||||
boot.loader.grub.extraConfig = "
|
||||
serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1
|
||||
terminal_input serial
|
||||
terminal_output serial
|
||||
";
|
||||
|
||||
profiles.clerie.wg-clerie = {
|
||||
#networking.firewall.enable = false;
|
||||
|
||||
services.wg-clerie = {
|
||||
enable = true;
|
||||
ipv6s = [ "2a01:4f8:c0c:15f1::8108/128" ];
|
||||
ipv4s = [ "10.20.30.108/32" ];
|
||||
|
90
hosts/astatine/ppp.nix
Normal file
90
hosts/astatine/ppp.nix
Normal file
@@ -0,0 +1,90 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
# Make space for VLAN header in containing ethernet segment
|
||||
networking.interfaces."enp1s0".mtu = 1518;
|
||||
|
||||
## DSL-Uplink
|
||||
networking.vlans."enp1s0.7" = {
|
||||
id = 7;
|
||||
interface = "enp1s0";
|
||||
};
|
||||
|
||||
services.pppd = {
|
||||
enable = true;
|
||||
peers.lns-test = {
|
||||
config = ''
|
||||
plugin pppoe.so enp1s0.7
|
||||
user "criese#regiotest@bsa-vdsl"
|
||||
ifname ppp-lns-test
|
||||
persist
|
||||
maxfail 0
|
||||
holdoff 5
|
||||
noipdefault
|
||||
lcp-echo-interval 20
|
||||
lcp-echo-failure 3
|
||||
hide-password
|
||||
nodefaultroute
|
||||
+ipv6
|
||||
debug
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
networking.interfaces.lo.useDHCP = true;
|
||||
networking.interfaces.ppp-lns-test.useDHCP = true;
|
||||
|
||||
networking.dhcpcd = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
interface ppp-lns-test
|
||||
ipv6rs
|
||||
ia_pd 0 lo/0
|
||||
'';
|
||||
};*/
|
||||
|
||||
environment.etc."ppp/ip-up" = {
|
||||
text = ''
|
||||
#! ${pkgs.runtimeShell} -e
|
||||
|
||||
${pkgs.iproute2}/bin/ip route flush table 20001 || true
|
||||
${pkgs.iproute2}/bin/ip route add default dev ppp-lns-test table 20001
|
||||
'';
|
||||
mode = "555";
|
||||
};
|
||||
environment.etc."ppp/ip-down" = {
|
||||
text = ''
|
||||
#! ${pkgs.runtimeShell} -e
|
||||
|
||||
${pkgs.iproute2}/bin/ip route flush table 20001 || true
|
||||
'';
|
||||
mode = "555";
|
||||
};
|
||||
environment.etc."ppp/ipv6-up" = {
|
||||
text = ''
|
||||
#! ${pkgs.runtimeShell} -e
|
||||
|
||||
${pkgs.iproute2}/bin/ip -6 route flush table 20001 || true
|
||||
${pkgs.iproute2}/bin/ip -6 route add default dev ppp-lns-test table 20001
|
||||
'';
|
||||
mode = "555";
|
||||
};
|
||||
environment.etc."ppp/ipv6-down" = {
|
||||
text = ''
|
||||
#! ${pkgs.runtimeShell} -e
|
||||
|
||||
${pkgs.iproute2}/bin/ip -6 route flush table 20001 || true
|
||||
'';
|
||||
mode = "555";
|
||||
};
|
||||
|
||||
petabyte.policyrouting = {
|
||||
enable = true;
|
||||
rules4 = [
|
||||
{ rule = "from 212.218.16.237/32 lookup 20001"; prio = 19000; }
|
||||
{ rule = "from 212.218.16.237/32 unreachable"; prio = 19001; }
|
||||
];
|
||||
};
|
||||
|
||||
}
|
9
hosts/astatine/programs.nix
Normal file
9
hosts/astatine/programs.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
tcpdump # for remote wireshark
|
||||
];
|
||||
|
||||
}
|
10
hosts/astatine/users.nix
Normal file
10
hosts/astatine/users.nix
Normal file
@@ -0,0 +1,10 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
users.users.criese-nethinks = {
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
];
|
||||
};
|
||||
|
||||
}
|
@@ -6,9 +6,7 @@
|
||||
./hardware-configuration.nix
|
||||
|
||||
./backup.nix
|
||||
./replication.nix
|
||||
./restic-server.nix
|
||||
./wg-b-palladium.nix
|
||||
];
|
||||
|
||||
profiles.clerie.mercury-vm.enable = true;
|
||||
@@ -28,7 +26,6 @@
|
||||
{ Gateway = "2001:638:904:ffcb::1"; }
|
||||
];
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
ipv6AcceptRAConfig.DHCPv6Client = "no";
|
||||
};
|
||||
|
||||
services.nginx.enable = true;
|
||||
|
@@ -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"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
@@ -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]",
|
||||
"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]",
|
||||
"sops": {
|
||||
"kms": null,
|
||||
@@ -15,8 +12,8 @@
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBpdFREUEVzb2JFd3hSaG9y\neVA2a2Fodko0OTI4ZGM0NlZxRmNtYmFDY1hVCm9ncXdWYTJlSU1FSG1WdlNBZ3VW\nM2VtRmZiWldzalRsRWJ0UkV1L1hSMkEKLS0tIGVLQU9kQXhZbC9SUW9CS2JnWGlJ\nQ3RoeXVkRXNkUWNaZ0VQOW1hcEJnNjAKHgZ48PERJlfkkh2TyCLl52zUZY674BXW\n4zPtmhZrb4xlExetINrOd4hZtL7S7qn5GnTxhoxvCddeU+JPPsfWoQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-04-18T08:37:08Z",
|
||||
"mac": "ENC[AES256_GCM,data:50NF4BI0QUhe622J6nwIF89pLlTdgxVB/MWbO5nWKgQI5xuNrnFghs5yVgZIV7FeONcu2pYykp28fSrFKhvbPt+B90i4HvaaIHdZGDepbEV9ZwK4AU66zZW4KCCPxv4NTYh+AuSi7HTHusXUrNIvRhYvAXjESi7nK7JPm3BTfUk=,iv:fvtTaSXNx6IL6D9DdEa5ovymNYeWJObCBiRiIsG7KeE=,tag:LdfXiAuMHLCb0biThHh1GQ==,type:str]",
|
||||
"lastmodified": "2025-02-16T18:13:41Z",
|
||||
"mac": "ENC[AES256_GCM,data:O+E3UbWbmlbpUPeSS/BFcJpWr2WEXbu0aaj9u3XUwstp4ba6e0xuVdzfbntQwbN378sDNpDMkAuxp1+R/0THBSs+nqXC9q9IgK+hfSBd7q2v4lvdhxRdM1x4wysTDJGtjFNdfz8EzqMz42Y2IWjxSozgPNpjZSIGhwMBA2TS/gU=,iv:1waH/yUGt5jGJbQlYmp5b97NGVyRykgzI2g1xX+Jo/U=,tag:4bxFxkClt3LbqCH552XePw==,type:str]",
|
||||
"pgp": [
|
||||
{
|
||||
"created_at": "2024-05-04T12:30:52Z",
|
||||
@@ -25,6 +22,6 @@
|
||||
}
|
||||
],
|
||||
"unencrypted_suffix": "_unencrypted",
|
||||
"version": "3.9.4"
|
||||
"version": "3.8.1"
|
||||
}
|
||||
}
|
@@ -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 ];
|
||||
|
||||
}
|
@@ -6,8 +6,6 @@
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
profiles.clerie.network-fallback-dhcp.enable = true;
|
||||
|
||||
boot.kernelParams = [ "console=ttyS0,115200n8" ];
|
||||
|
||||
boot.loader.grub.enable = true;
|
||||
@@ -22,11 +20,39 @@
|
||||
|
||||
networking.firewall.enable = false;
|
||||
|
||||
profiles.clerie.wg-clerie = {
|
||||
networking.iproute2.enable = true;
|
||||
networking.iproute2.rttablesExtraConfig = ''
|
||||
200 wg-clerie
|
||||
'';
|
||||
|
||||
petabyte.policyrouting = {
|
||||
enable = true;
|
||||
ipv6s = [ "2a01:4f8:c0c:15f1::8107/128" ];
|
||||
ipv4s = [ "10.20.30.107/32" ];
|
||||
privateKeyFile = "/var/src/secrets/wireguard/wg-clerie";
|
||||
rules6 = [
|
||||
{ rule = "from 2a01:4f8:c0c:15f1::8107/128 lookup wg-clerie"; prio = 20000; }
|
||||
{ rule = "from 2a01:4f8:c0c:15f1::8107/128 unreachable"; prio = 20001; }
|
||||
];
|
||||
rules4 = [
|
||||
{ rule = "from 10.20.30.107/32 lookup wg-clerie"; prio = 20000; }
|
||||
{ rule = "from 10.20.30.107/32 unreachable"; prio = 20001; }
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
networking.wireguard.enable = true;
|
||||
networking.wireguard.interfaces = {
|
||||
wg-clerie = {
|
||||
ips = [ "2a01:4f8:c0c:15f1::8107/128" "10.20.30.107/32" ];
|
||||
table = "wg-clerie";
|
||||
peers = [
|
||||
{
|
||||
endpoint = "vpn.clerie.de:51820";
|
||||
persistentKeepalive = 25;
|
||||
allowedIPs = [ "0.0.0.0/0" "::/0" "10.20.30.0/24" "2a01:4f8:c0c:15f1::/113" ];
|
||||
publicKey = "2p1Jqs3bkXbXHFWE6vp1yxHIFoUaZQEARS2nJzbkuBA=";
|
||||
}
|
||||
];
|
||||
privateKeyFile = "/var/src/secrets/wireguard/wg-clerie";
|
||||
};
|
||||
};
|
||||
|
||||
clerie.monitoring = {
|
||||
|
@@ -4,6 +4,7 @@
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
../../configuration/router
|
||||
|
||||
./dns.nix
|
||||
./mdns.nix
|
||||
@@ -21,9 +22,6 @@
|
||||
./wg-clerie.nix
|
||||
];
|
||||
|
||||
profiles.clerie.common-networking.enable = false;
|
||||
profiles.clerie.router.enable = true;
|
||||
|
||||
boot.kernelParams = [ "console=ttyS0,115200n8" ];
|
||||
|
||||
boot.loader.grub.enable = true;
|
||||
@@ -63,10 +61,10 @@
|
||||
|
||||
systemd.services.kea-dhcp4-server = {
|
||||
after = [
|
||||
"network.target"
|
||||
"network-setup.service"
|
||||
];
|
||||
wants = [
|
||||
"network.target"
|
||||
requires = [
|
||||
"network-setup.service"
|
||||
];
|
||||
};
|
||||
|
||||
|
@@ -8,21 +8,23 @@
|
||||
./restic-server.nix
|
||||
];
|
||||
|
||||
profiles.clerie.ruby-vm.enable = true;
|
||||
profiles.clerie.cybercluster-vm.enable = true;
|
||||
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/vda";
|
||||
|
||||
networking.useDHCP = false;
|
||||
systemd.network.enable = true;
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
matchConfig.Name = "ens18";
|
||||
address = [
|
||||
"2a00:fe0:1:21f::a/64"
|
||||
"2001:638:904:ffc1::6/64"
|
||||
];
|
||||
routes = [
|
||||
{ Gateway ="2a00:fe0:1:21f::1"; }
|
||||
{ Gateway ="2001:638:904:ffc1::1"; }
|
||||
];
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
ipv6AcceptRAConfig.DHCPv6Client = "no";
|
||||
};
|
||||
|
||||
services.nginx.enable = true;
|
||||
|
@@ -8,7 +8,7 @@
|
||||
[ (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.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
@@ -19,7 +19,7 @@
|
||||
};
|
||||
|
||||
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";
|
||||
};
|
||||
|
||||
@@ -33,7 +33,4 @@
|
||||
# networking.interfaces.ens18.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
boot.swraid.enable = true;
|
||||
|
||||
|
||||
}
|
||||
|
@@ -4,6 +4,7 @@
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
../../configuration/dn42
|
||||
];
|
||||
|
||||
profiles.clerie.mercury-vm.enable = true;
|
||||
@@ -11,36 +12,41 @@
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/vda";
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
matchConfig.Name = "ens20";
|
||||
address = [
|
||||
"2001:638:904:ffc9::7/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.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.useDHCP = false;
|
||||
networking.interfaces.lo.ipv6.addresses = [ { address = "fd56:4902:eca0:1::1"; prefixLength = 64; } ];
|
||||
# VM Nat Netz mercury
|
||||
networking.interfaces.ens18.ipv4.addresses = [ { address = "192.168.10.23"; prefixLength = 24; } ];
|
||||
# OSPF Netz
|
||||
networking.interfaces.ens19 = {};
|
||||
# IPv6 Uplink
|
||||
networking.interfaces.ens20.ipv6.addresses = [ { address = "2001:638:904:ffc9::7"; prefixLength = 64; } ];
|
||||
|
||||
networking.defaultGateway = { address = "192.168.10.1"; interface = "ens18"; };
|
||||
networking.defaultGateway6 = { address = "2001:638:904:ffc9::1"; interface = "ens20"; };
|
||||
|
||||
networking.wireguard.enable = true;
|
||||
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
|
||||
wg0565 = {
|
||||
ips = [
|
||||
@@ -120,6 +126,27 @@
|
||||
];
|
||||
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
|
||||
wg4719 = {
|
||||
ips = [
|
||||
@@ -140,104 +167,168 @@
|
||||
];
|
||||
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 = [
|
||||
50565 # wg0565
|
||||
51271 # wg1271
|
||||
51272 # wg1272
|
||||
51280 # wg1280
|
||||
54719 # wg4719
|
||||
51718 # wg1718
|
||||
];
|
||||
|
||||
profiles.clerie.dn42-router = {
|
||||
petabyte.policyrouting = {
|
||||
enable = true;
|
||||
loopbackIp = "fd56:4902:eca0:1::1";
|
||||
routerId = "192.168.10.23";
|
||||
|
||||
ospfInterfaces = [
|
||||
"ens19"
|
||||
];
|
||||
|
||||
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";
|
||||
}
|
||||
rules6 = [
|
||||
{ rule = "from all to fd56:4902:eca0::/48 lookup 1337"; prio = 10000; }
|
||||
{ rule = "from all to all lookup 2342"; prio = 10000; }
|
||||
{ rule = "from all to fd56:4902:eca0::/48 unreachable"; prio = 20000; }
|
||||
{ rule = "from fd56:4902:eca0::/48 to all unreachable"; prio = 20000; }
|
||||
];
|
||||
};
|
||||
|
||||
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 = {
|
||||
allowReboot = true;
|
||||
autoUpgrade = true;
|
||||
};
|
||||
|
||||
|
@@ -5,18 +5,21 @@
|
||||
"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]",
|
||||
"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]",
|
||||
"wg-monitoring": "ENC[AES256_GCM,data:aw11Ygfll6llabXkuxtbTcCn1eb4NZX1IwArcXoRJCJSgwDrQZ3HLatov3w=,iv:J2VD5XS+BrIKeFb0NW1UYZUuGPkbjFmooZ93PVK31gw=,tag:2XLSa/2s6LRq3L7UdrTs/g==,type:str]",
|
||||
"sops": {
|
||||
"kms": null,
|
||||
"gcp_kms": null,
|
||||
"azure_kv": null,
|
||||
"hc_vault": null,
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1f0hscql4f4w7vyukzeu693xfedsl596dpjekc23q77ylp92zsvcqf9u75t",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3QWdFYjFjTmRVRlV3U3p4\nTSsyc1E0dWtiYjNtVkV2SXJEWkxnTDhLN1Y0Cng4aGlidjhydUVGaFcvK215aGdq\nN0FGajYwa1lPUCsva0tmNkErUGtlOWsKLS0tIG9pLzJEUDA2WWUzd1kzSVZrdVRX\nbUxjQzBCd3p0R1dWTTJaRmZNQjJEUVkKPz6OUQHpYrhRxMdQzpZRR3exVqkG2JvX\nI32PwvbeQK8cgpYwKLGar8U8aiPPm0Y64pID1wedDsNZzLqLOrS3wQ==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-06-10T20:51:10Z",
|
||||
"mac": "ENC[AES256_GCM,data:9lF4HV0oJyGHXdtYdMxR7+ev7JLAQVr6kE55nLoZcrbC92MHJzQpgM9XAhIynvwdAmC7ARd3orCn6eYkQJDdNX0JjMtebsBE+H4B7mEUCz8wtTN0iHS+oHmQxrqjnoSw2uHh9udgqAJa+sd6VGU3t2XUuuKtVHPwzROqVgvas9M=,iv:KT+BlFeXGZQc5pbBX+XOsmKEydUtir1LuPvseDkFeqw=,tag:hlRskY6b5EAZkUYs7ph/JA==,type:str]",
|
||||
"lastmodified": "2024-04-28T09:28:04Z",
|
||||
"mac": "ENC[AES256_GCM,data:PHdhyie0Ya/nN9Kqj4z+zPyyKZFvGkznkv8Uf3LNSdPKWVtXARZc8Xodm4MjI2HvooryyyMFHkW75Aln02Rlvk3R8oI7rfFZC7s2P+LotumsYgRFf0JOUMxsxOtKW0ehuLy83Bw0rMJQo1gzTgBykcvdc2pkMmALF/vU/1VqgJ4=,iv:0JwcY0Q+8VAiVHYjynhcpsobQXOkK8EBe3QUJ8YUwFE=,tag:9xAcoxAPGxTvHVBydf3u9Q==,type:str]",
|
||||
"pgp": [
|
||||
{
|
||||
"created_at": "2024-04-28T09:25:37Z",
|
||||
@@ -25,6 +28,6 @@
|
||||
}
|
||||
],
|
||||
"unencrypted_suffix": "_unencrypted",
|
||||
"version": "3.10.2"
|
||||
"version": "3.8.1"
|
||||
}
|
||||
}
|
||||
}
|
@@ -4,6 +4,7 @@
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
../../configuration/dn42
|
||||
];
|
||||
|
||||
profiles.clerie.mercury-vm.enable = true;
|
||||
@@ -11,107 +12,177 @@
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/vda";
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
matchConfig.Name = "ens21";
|
||||
address = [
|
||||
"2001:638:904:ffc9::a/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.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";
|
||||
};
|
||||
networking.useDHCP = false;
|
||||
# VM Nat Netz mercury
|
||||
networking.interfaces.ens18.ipv4.addresses = [ { address = "192.168.10.25"; prefixLength = 24; } ];
|
||||
# OSPF Netz
|
||||
networking.interfaces.ens19 = {};
|
||||
# Lokales Netz
|
||||
networking.interfaces.ens20.ipv6.addresses = [ { address = "fd56:4902:eca0:5::1"; prefixLength = 64; } ];
|
||||
# IPv6 Uplink
|
||||
networking.interfaces.ens21.ipv6.addresses = [ { address = "2001:638:904:ffc9::a"; prefixLength = 64; } ];
|
||||
# Ildix
|
||||
networking.interfaces.ens22.ipv6.addresses = [ { address = "fd81:edb3:71d8:ffff:2574::5"; prefixLength = 64; } ];
|
||||
|
||||
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;
|
||||
loopbackIp = "fd56:4902:eca0:5::1";
|
||||
routerId = "192.168.10.25";
|
||||
|
||||
ospfInterfaces = [
|
||||
"ens19"
|
||||
rules6 = [
|
||||
{ rule = "from all to fd56:4902:eca0::/48 lookup 1337"; prio = 10000; }
|
||||
{ rule = "from all to all lookup 2342"; prio = 10000; }
|
||||
{ rule = "from all to fd56:4902:eca0::/48 unreachable"; prio = 20000; }
|
||||
{ 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 = {
|
||||
allowReboot = true;
|
||||
autoUpgrade = true;
|
||||
startAt = "*-*-* 06:22:00";
|
||||
};
|
||||
|
@@ -4,6 +4,7 @@
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
../../configuration/dn42
|
||||
];
|
||||
|
||||
profiles.clerie.cybercluster-vm.enable = true;
|
||||
@@ -11,101 +12,177 @@
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/vda";
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
matchConfig.Name = "ens18";
|
||||
address = [
|
||||
"2001:638:904:ffc9::9/64"
|
||||
];
|
||||
routes = [
|
||||
{ Gateway = "2001:638:904:ffc9::1"; }
|
||||
];
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
ipv6AcceptRAConfig.DHCPv6Client = "no";
|
||||
};
|
||||
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";
|
||||
};
|
||||
networking.useDHCP = false;
|
||||
networking.interfaces.lo.ipv6.addresses = [ { address = "fd56:4902:eca0:6::1"; prefixLength = 64; } ];
|
||||
# IPv6 Uplink
|
||||
networking.interfaces.ens18.ipv6.addresses = [ { address = "2001:638:904:ffc9::9"; prefixLength = 64; } ];
|
||||
# Ildix
|
||||
networking.interfaces.ens19.ipv6.addresses = [ { address = "fd81:edb3:71d8:ffff:2574::6"; prefixLength = 64; } ];
|
||||
# VM Nat Netz mercury
|
||||
networking.interfaces.ens20.ipv4.addresses = [ { address = "192.168.10.26"; prefixLength = 24; } ];
|
||||
# OSPF Netz
|
||||
networking.interfaces.ens21 = {};
|
||||
|
||||
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;
|
||||
loopbackIp = "fd56:4902:eca0:6::1";
|
||||
routerId = "192.168.10.26";
|
||||
|
||||
ospfInterfaces = [
|
||||
"ens21"
|
||||
rules6 = [
|
||||
{ rule = "from all to fd56:4902:eca0::/48 lookup 1337"; prio = 10000; }
|
||||
{ rule = "from all to all lookup 2342"; prio = 10000; }
|
||||
{ rule = "from all to fd56:4902:eca0::/48 unreachable"; prio = 20000; }
|
||||
{ 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 = {
|
||||
allowReboot = true;
|
||||
autoUpgrade = true;
|
||||
startAt = "*-*-* 07:22:00";
|
||||
};
|
||||
|
@@ -11,40 +11,19 @@
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/vda";
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
matchConfig.Name = "ens20";
|
||||
address = [
|
||||
"2001:638:904:ffcb::4/64"
|
||||
];
|
||||
routes = [
|
||||
{ Gateway = "2001:638:904:ffcb::1"; }
|
||||
];
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
ipv6AcceptRAConfig.DHCPv6Client = "no";
|
||||
};
|
||||
systemd.network.networks."10-nat-netz-mercury" = {
|
||||
matchConfig.Name = "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";
|
||||
};
|
||||
networking.useDHCP = false;
|
||||
# VM Nat Netz mercury
|
||||
networking.interfaces.ens18.ipv4.addresses = [ { address = "192.168.10.27"; prefixLength = 24; } ];
|
||||
# Ildix
|
||||
networking.interfaces.ens19.ipv6.addresses = [ { address = "fd81:edb3:71d8:ffff::13"; prefixLength = 64; } ];
|
||||
# Route to dn42-ildix-service
|
||||
networking.interfaces.ens19.ipv6.routes = [ { address = "fd81:edb3:71d8::"; prefixLength = 48; via = "fd81:edb3:71d8:ffff:2953::1"; } ];
|
||||
|
||||
# public address
|
||||
networking.interfaces.ens20.ipv6.addresses = [ { address = "2001:638:904:ffcb::4"; prefixLength = 64; } ];
|
||||
|
||||
networking.defaultGateway6 = { address = "2001:638:904:ffcb::1"; interface = "ens20"; };
|
||||
networking.defaultGateway = { address = "192.168.10.1"; interface = "ens18"; };
|
||||
|
||||
# Open Firewall for BGP
|
||||
networking.firewall.allowedTCPPorts = [ 179 ];
|
||||
@@ -57,7 +36,7 @@
|
||||
services.bird.enable = true;
|
||||
services.bird.package = pkgs.bird2;
|
||||
services.bird.config = ''
|
||||
router id 192.168.10.27;
|
||||
router id ${ (lib.head config.networking.interfaces.ens18.ipv4.addresses).address };
|
||||
|
||||
protocol direct {
|
||||
interface "ens19";
|
||||
@@ -162,6 +141,7 @@
|
||||
'';
|
||||
|
||||
clerie.system-auto-upgrade = {
|
||||
allowReboot = true;
|
||||
autoUpgrade = true;
|
||||
};
|
||||
|
||||
|
@@ -7,7 +7,7 @@
|
||||
services.bird.enable = false;
|
||||
services.bird.package = pkgs.bird2;
|
||||
services.bird.config = ''
|
||||
router id 192.168.10.28;
|
||||
router id ${(lib.head config.networking.interfaces.ens18.ipv4.addresses).address};
|
||||
|
||||
ipv6 table bgp6;
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
ipv6 {
|
||||
table bgp6;
|
||||
export filter {
|
||||
krt_prefsrc=fd81:edb3:71d8::1;
|
||||
krt_prefsrc=${(lib.head config.networking.interfaces.lo.ipv6.addresses).address};
|
||||
accept;
|
||||
};
|
||||
import none;
|
||||
|
@@ -19,58 +19,27 @@
|
||||
# Define on which hard drive you want to install Grub.
|
||||
boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only
|
||||
|
||||
systemd.network.netdevs."10-lo-dn42" = {
|
||||
netdevConfig = {
|
||||
Kind = "dummy";
|
||||
Name = "lo-dn42";
|
||||
};
|
||||
};
|
||||
networking.useDHCP = false;
|
||||
networking.interfaces.lo.ipv6.addresses = [
|
||||
{ address = "fd81:edb3:71d8::1"; prefixLength = 128; }
|
||||
{ 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" = {
|
||||
matchConfig.Name = "lo-dn42";
|
||||
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";
|
||||
};
|
||||
networking.defaultGateway6 = { address = "2001:638:904:ffc9::1"; interface = "ens20"; };
|
||||
networking.defaultGateway = { address = "192.168.10.1"; interface = "ens18"; };
|
||||
|
||||
services.nginx.enable = true;
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||||
|
||||
clerie.system-auto-upgrade = {
|
||||
allowReboot = true;
|
||||
autoUpgrade = true;
|
||||
};
|
||||
|
||||
|
@@ -5,21 +5,20 @@
|
||||
|
||||
services.fernglas = {
|
||||
enable = true;
|
||||
useMimalloc = false;
|
||||
settings = {
|
||||
api.bind = "[::1]:3000";
|
||||
collectors = {
|
||||
bgp_any = {
|
||||
collectors = [
|
||||
{
|
||||
collector_type = "Bgp";
|
||||
bind = "[::]:1179";
|
||||
default_peer_config = {
|
||||
asn = 4242422953;
|
||||
router_id = "192.168.10.28";
|
||||
router_id = "${(lib.head config.networking.interfaces.ens18.ipv4.addresses).address}";
|
||||
route_state = "Accepted";
|
||||
add_path = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
|
@@ -4,14 +4,17 @@
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
../../configuration/router
|
||||
];
|
||||
|
||||
profiles.clerie.hetzner-cloud.enable = true;
|
||||
profiles.clerie.router.enable = true;
|
||||
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/sda";
|
||||
|
||||
networking.useDHCP = false;
|
||||
systemd.network.enable = true;
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
address = [
|
||||
"2a01:4f8:c0c:15f1::1/64"
|
||||
@@ -74,7 +77,7 @@
|
||||
{
|
||||
# palladium
|
||||
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" ];
|
||||
@@ -131,7 +134,6 @@
|
||||
|
||||
clerie.nginx-port-forward = {
|
||||
enable = true;
|
||||
resolver = "127.0.0.53";
|
||||
tcpPorts."443" = {
|
||||
host = "localhost";
|
||||
port = 22;
|
||||
|
@@ -4,6 +4,7 @@
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
../../configuration/hydra-build-machine
|
||||
|
||||
./build-machines.nix
|
||||
./hydra.nix
|
||||
@@ -11,7 +12,6 @@
|
||||
];
|
||||
|
||||
profiles.clerie.mercury-vm.enable = true;
|
||||
profiles.clerie.hydra-build-machine.enable = true;
|
||||
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/vda";
|
||||
@@ -22,6 +22,9 @@
|
||||
"aarch64-linux"
|
||||
];
|
||||
|
||||
networking.useDHCP = false;
|
||||
systemd.network.enable = true;
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
matchConfig.Name = "ens18";
|
||||
address = [
|
||||
@@ -31,7 +34,6 @@
|
||||
{ Gateway = "2001:638:904:ffcb::1"; }
|
||||
];
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
ipv6AcceptRAConfig.DHCPv6Client = "no";
|
||||
};
|
||||
systemd.network.networks."10-nat-netz-mercury" = {
|
||||
matchConfig.Name = "ens19";
|
||||
@@ -42,7 +44,6 @@
|
||||
{ Gateway = "192.168.10.1"; }
|
||||
];
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
ipv6AcceptRAConfig.DHCPv6Client = "no";
|
||||
};
|
||||
|
||||
services.nginx.enable = true;
|
||||
|
@@ -4,10 +4,10 @@
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
../../configuration/hydra-build-machine
|
||||
];
|
||||
|
||||
profiles.clerie.cybercluster-vm.enable = true;
|
||||
profiles.clerie.hydra-build-machine.enable = true;
|
||||
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/vda";
|
||||
@@ -18,6 +18,9 @@
|
||||
"aarch64-linux"
|
||||
];
|
||||
|
||||
networking.useDHCP = false;
|
||||
systemd.network.enable = true;
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
matchConfig.Name = "ens18";
|
||||
address = [
|
||||
@@ -29,7 +32,6 @@
|
||||
{ Gateway = "141.24.50.1"; }
|
||||
];
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
ipv6AcceptRAConfig.DHCPv6Client = "no";
|
||||
};
|
||||
|
||||
clerie.monitoring = {
|
||||
|
@@ -5,6 +5,8 @@
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
|
||||
../../configuration/desktop
|
||||
|
||||
./android.nix
|
||||
./backup.nix
|
||||
./etesync-dav.nix
|
||||
@@ -13,8 +15,6 @@
|
||||
./programs.nix
|
||||
];
|
||||
|
||||
profiles.clerie.desktop.enable = true;
|
||||
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
profiles.clerie.wg-clerie = {
|
||||
services.wg-clerie = {
|
||||
enable = true;
|
||||
ipv6s = [ "2a01:4f8:c0c:15f1::8011/128" ];
|
||||
ipv4s = [ "10.20.30.11/32" ];
|
||||
|
@@ -1,7 +1,9 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
profiles.clerie.firefox.enable = true;
|
||||
environment.systemPackages = with pkgs; [
|
||||
firefox-wayland
|
||||
];
|
||||
|
||||
users.users.clerie.packages = with pkgs; [
|
||||
keepassxc
|
||||
@@ -14,11 +16,10 @@
|
||||
|
||||
tio
|
||||
xournalpp
|
||||
libreoffice
|
||||
onlyoffice-bin
|
||||
|
||||
krita
|
||||
inkscape
|
||||
dune3d
|
||||
|
||||
wireshark
|
||||
tcpdump
|
||||
|
@@ -13,6 +13,9 @@
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/sda";
|
||||
|
||||
networking.useDHCP = false;
|
||||
systemd.network.enable = true;
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
address = [
|
||||
"2a01:4f8:1c1c:9577::1/64"
|
||||
|
@@ -25,48 +25,6 @@
|
||||
fail_if_not_ssl: true
|
||||
fail_if_body_not_matches_regexp:
|
||||
- "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"
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
@@ -10,7 +10,6 @@
|
||||
./grafana.nix
|
||||
./nixos-validator.nix
|
||||
./prometheus.nix
|
||||
./targets.nix
|
||||
./uptimestatus.nix
|
||||
];
|
||||
|
||||
@@ -19,6 +18,9 @@
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/sda";
|
||||
|
||||
networking.useDHCP = false;
|
||||
systemd.network.enable = true;
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
matchConfig.Name = "ens19";
|
||||
address = [
|
||||
@@ -28,7 +30,6 @@
|
||||
{ Gateway = "2001:638:904:ffca::1"; }
|
||||
];
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
ipv6AcceptRAConfig.DHCPv6Client = "no";
|
||||
};
|
||||
systemd.network.networks."10-nat-netz-mercury" = {
|
||||
matchConfig.Name = "ens18";
|
||||
@@ -39,7 +40,6 @@
|
||||
{ Gateway = "192.168.10.1"; }
|
||||
];
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
ipv6AcceptRAConfig.DHCPv6Client = "no";
|
||||
};
|
||||
|
||||
services.prometheus.exporters.node.enable = true;
|
||||
|
@@ -104,21 +104,6 @@ in {
|
||||
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";
|
||||
scrape_interval = "20s";
|
||||
@@ -156,7 +141,10 @@ in {
|
||||
};
|
||||
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 = [
|
||||
@@ -212,7 +200,7 @@ in {
|
||||
relabelAddressToInstance
|
||||
{
|
||||
target_label = "__address__";
|
||||
replacement = "monitoring-3.mon.clerie.de:9153";
|
||||
replacement = "[::1]:9153";
|
||||
}
|
||||
];
|
||||
}
|
||||
@@ -237,7 +225,17 @@ in {
|
||||
};
|
||||
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 = [
|
||||
@@ -269,7 +267,18 @@ in {
|
||||
};
|
||||
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 = [
|
||||
@@ -301,7 +310,10 @@ in {
|
||||
};
|
||||
static_configs = [
|
||||
{
|
||||
targets = config.profiles.clerie.monitoring-server.probeTargets.blackbox-local-synapse;
|
||||
targets = [
|
||||
"matrix.entr0py.de"
|
||||
"matrix.fachschaften.org"
|
||||
];
|
||||
}
|
||||
];
|
||||
relabel_configs = [
|
||||
@@ -381,122 +393,6 @@ in {
|
||||
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";
|
||||
scrape_interval = "20s";
|
||||
@@ -523,25 +419,12 @@ in {
|
||||
relabelAddressToInstance
|
||||
];
|
||||
}
|
||||
{
|
||||
job_name = "clerie_keys";
|
||||
scrape_interval = "5m";
|
||||
scheme = "https";
|
||||
metrics_path = "/gpg/clerie@clerie.de.metrics.txt";
|
||||
static_configs = [
|
||||
{
|
||||
targets = [
|
||||
"clerie.de"
|
||||
];
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
alertmanagers = [
|
||||
{
|
||||
static_configs = [ {
|
||||
targets = [
|
||||
"monitoring-3.mon.clerie.de:9093"
|
||||
"[::1]:9093"
|
||||
];
|
||||
} ];
|
||||
}
|
||||
|
@@ -18,7 +18,7 @@ groups:
|
||||
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"
|
||||
- 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
|
||||
labels:
|
||||
severity: critical
|
||||
@@ -26,7 +26,7 @@ groups:
|
||||
summary: "Storage of {{ $labels.instance }} is full"
|
||||
description: "Storage of {{ $labels.instance }} for {{ $labels.mountpoint }} on {{ $labels.device }} is full"
|
||||
- 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
|
||||
labels:
|
||||
severity: warning
|
||||
@@ -73,32 +73,3 @@ groups:
|
||||
annotations:
|
||||
summary: "Synapse of {{ $labels.target }} unavailable"
|
||||
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"
|
||||
|
@@ -1,7 +0,0 @@
|
||||
{ ... }:
|
||||
|
||||
{
|
||||
|
||||
profiles.clerie.monitoring-server.targets = builtins.fromJSON (builtins.readFile ../../monitoring/targets.json);
|
||||
|
||||
}
|
@@ -4,14 +4,17 @@
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
../../configuration/router
|
||||
];
|
||||
|
||||
profiles.clerie.mercury-vm.enable = true;
|
||||
profiles.clerie.router.enable = true;
|
||||
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/vda";
|
||||
|
||||
networking.useDHCP = false;
|
||||
systemd.network.enable = true;
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
matchConfig.Name = "ens18";
|
||||
address = [
|
||||
@@ -42,6 +45,7 @@
|
||||
networking.firewall.allowedUDPPorts = [];
|
||||
|
||||
clerie.system-auto-upgrade = {
|
||||
allowReboot = true;
|
||||
autoUpgrade = true;
|
||||
};
|
||||
|
||||
|
@@ -20,6 +20,9 @@
|
||||
"aarch64-linux"
|
||||
];
|
||||
|
||||
networking.useDHCP = false;
|
||||
systemd.network.enable = true;
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
matchConfig.Name = "ens19";
|
||||
address = [
|
||||
@@ -29,7 +32,6 @@
|
||||
{ Gateway = "2001:638:904:ffc7::1"; }
|
||||
];
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
ipv6AcceptRAConfig.DHCPv6Client = "no";
|
||||
};
|
||||
systemd.network.networks."10-nat-netz-mercury" = {
|
||||
matchConfig.Name = "ens18";
|
||||
@@ -40,7 +42,6 @@
|
||||
{ Gateway = "192.168.10.1"; }
|
||||
];
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
ipv6AcceptRAConfig.DHCPv6Client = "no";
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
|
@@ -4,9 +4,6 @@
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
|
||||
./restic-server.nix
|
||||
./wg-b-palladium.nix
|
||||
];
|
||||
|
||||
boot.kernelParams = [ "console=ttyS0,115200n8" ];
|
||||
@@ -33,6 +30,9 @@
|
||||
|
||||
boot.swraid.enable = true;
|
||||
|
||||
networking.useDHCP = false;
|
||||
systemd.network.enable = true;
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
matchConfig.Name = "enp3s0";
|
||||
address = [
|
||||
@@ -40,7 +40,6 @@
|
||||
];
|
||||
networkConfig.DHCP = true;
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
ipv6AcceptRAConfig.DHCPv6Client = "no";
|
||||
};
|
||||
|
||||
# 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"
|
||||
'';
|
||||
|
||||
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";
|
||||
|
||||
}
|
||||
|
@@ -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 ];
|
||||
}
|
@@ -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"
|
||||
}
|
||||
}
|
@@ -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";
|
||||
};
|
||||
|
||||
}
|
@@ -4,14 +4,16 @@
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
../../configuration/router
|
||||
];
|
||||
|
||||
profiles.clerie.netcup.enable = true;
|
||||
profiles.clerie.router.enable = true;
|
||||
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/sda";
|
||||
|
||||
networking.useDHCP = false;
|
||||
systemd.network.enable = true;
|
||||
systemd.network.networks."10-wan" = {
|
||||
matchConfig.Name = "ens3";
|
||||
address = [
|
||||
@@ -23,32 +25,10 @@
|
||||
{ Gateway = "5.45.100.1"; }
|
||||
];
|
||||
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 = {
|
||||
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" = {
|
||||
host = "nonat.net.clerie.de";
|
||||
port = 22;
|
||||
@@ -58,10 +38,6 @@
|
||||
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||||
networking.firewall.allowedUDPPorts = [];
|
||||
|
||||
clerie.system-auto-upgrade = {
|
||||
autoUpgrade = true;
|
||||
};
|
||||
|
||||
clerie.monitoring = {
|
||||
enable = true;
|
||||
id = "102";
|
||||
|
@@ -4,7 +4,6 @@
|
||||
imports =
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
./em.nix
|
||||
./firmware.nix
|
||||
./mixcloud.nix
|
||||
./syncthing.nix
|
||||
@@ -16,6 +15,9 @@
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/vda";
|
||||
|
||||
networking.useDHCP = false;
|
||||
systemd.network.enable = true;
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
matchConfig.Name = "ens18";
|
||||
address = [
|
||||
@@ -25,7 +27,6 @@
|
||||
{ Gateway = "2001:638:904:ffc0::1"; }
|
||||
];
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
ipv6AcceptRAConfig.DHCPv6Client = "no";
|
||||
};
|
||||
systemd.network.networks."10-nat-netz-mercury" = {
|
||||
matchConfig.Name = "ens19";
|
||||
@@ -36,7 +37,6 @@
|
||||
{ Gateway = "192.168.10.1"; }
|
||||
];
|
||||
linkConfig.RequiredForOnline = "routable";
|
||||
ipv6AcceptRAConfig.DHCPv6Client = "no";
|
||||
};
|
||||
|
||||
services.nginx.enable = true;
|
||||
@@ -53,6 +53,7 @@
|
||||
};
|
||||
|
||||
clerie.system-auto-upgrade = {
|
||||
allowReboot = true;
|
||||
autoUpgrade = true;
|
||||
};
|
||||
|
||||
|
@@ -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 - -"
|
||||
];
|
||||
}
|
@@ -2,5 +2,4 @@
|
||||
|
||||
{
|
||||
users.users.clerie.extraGroups = [ "data-firmware" ];
|
||||
users.users.frank.extraGroups = [ "data-em" ];
|
||||
}
|
||||
|
@@ -6,8 +6,6 @@
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
profiles.clerie.network-fallback-dhcp.enable = true;
|
||||
|
||||
boot.kernelParams = [ "console=ttyS0,115200n8" ];
|
||||
|
||||
boot.loader.grub.enable = true;
|
||||
@@ -18,9 +16,10 @@
|
||||
terminal_output serial
|
||||
";
|
||||
|
||||
|
||||
networking.hostName = "tungsten";
|
||||
|
||||
profiles.clerie.wg-clerie = {
|
||||
services.wg-clerie = {
|
||||
enable = true;
|
||||
ipv6s = [ "2a01:4f8:c0c:15f1::8112/128" ];
|
||||
ipv4s = [ "10.20.30.112/32" ];
|
||||
|
@@ -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
|
@@ -27,13 +27,18 @@
|
||||
root = pkgs.clerie-keys;
|
||||
};
|
||||
locations."= /ssh/known_hosts" = {
|
||||
alias = pkgs.clerie-ssh-known-hosts + "/known_hosts";
|
||||
alias = pkgs.writeText "known_hosts" (import ../../lib/ssh-known-hosts.nix);
|
||||
extraConfig = ''
|
||||
types { }
|
||||
default_type "text/plain; charset=utf-8";
|
||||
'';
|
||||
};
|
||||
locations."/gpg" = {
|
||||
extraConfig = ''
|
||||
types {
|
||||
text/plain asc;
|
||||
}
|
||||
'';
|
||||
root = pkgs.clerie-keys;
|
||||
};
|
||||
locations."~ ^/.well-known/openpgpkey/hu/[a-z0-9]+/?$" = {
|
||||
|
@@ -24,7 +24,6 @@
|
||||
./public.nix
|
||||
./radicale.nix
|
||||
./reichartstrasse.nix
|
||||
./traveldrafter.nix
|
||||
./uptimestatus.nix
|
||||
./wetter.nix
|
||||
];
|
||||
@@ -34,6 +33,9 @@
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.device = "/dev/sda";
|
||||
|
||||
networking.useDHCP = false;
|
||||
systemd.network.enable = true;
|
||||
|
||||
systemd.network.networks."10-wan" = {
|
||||
address = [
|
||||
"2a01:4f8:c0c:c580::1/64"
|
||||
@@ -52,8 +54,6 @@
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||||
|
||||
networking.firewall.extraCommands = builtins.readFile ./blocked-prefixes.txt;
|
||||
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
package = pkgs.postgresql_16;
|
||||
|
@@ -7,8 +7,8 @@
|
||||
forceSSL = true;
|
||||
root = pkgs.fetchgit {
|
||||
url = "https://git.clerie.de/clerie/legal.clerie.de.git";
|
||||
rev = "b271b9729f4545c340ce9d16ecbca136031da409";
|
||||
sha256 = "sha256-uw69o7LxK+JF1AojSyusU1urshBc63Bgva5lRBgQdKc=";
|
||||
rev = "c6900226e3107a2e370a32759d83db472ab5450d";
|
||||
sha256 = "sha256-lOjbHqYc/85rjotwQ5Oj+MSWnDIfLx2w5mpiJkChbXU=";
|
||||
};
|
||||
locations."/impressum" = {
|
||||
return = ''301 https://legal.clerie.de/#impressum'';
|
||||
|
@@ -4,16 +4,19 @@
|
||||
"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]",
|
||||
"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": {
|
||||
"kms": null,
|
||||
"gcp_kms": null,
|
||||
"azure_kv": null,
|
||||
"hc_vault": null,
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1nn8dwl2avshdhwn66w92jvlvz2ugl5fdxc8dxz6lpru72hlq44uq5a88az",
|
||||
"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",
|
||||
"mac": "ENC[AES256_GCM,data:6EbMSJAKOMgXtlwaVtsmPgrZVgraReAfVJWjZvhe965eLhhP5aeyZqPlA6a93h2FsShVFYWFPI57tdHy9Ymo53oXolSt8Docr2w2FL4BTWHHhkXal9+6aJZAZ+XOPEOUYurFxPOX44l+LDkecSz0NMCgrScWtpphjlkj3yP5GTo=,iv:5w8RC9IAuyEuO0QSZ0FBwW2/qqV56HNG7hZIkEeGEYU=,tag:Zosv1OSMtznnKkSYStu+oA==,type:str]",
|
||||
"lastmodified": "2024-05-10T13:32:34Z",
|
||||
"mac": "ENC[AES256_GCM,data:lxfYT2TEO9KFx0x6DPRQ2mRy5Ft6syyyO1yV9my6GwvDxd1e7odXGRcFo3N1AFod8Y6z4+XaxqZ/GoqSp94Pk8aF4eEhyAFun/UUr8KhKGsnq6xnQA4p37oYccvTY4eohS5YHBr/+AMutddmQ7qiYtQhVViXAr6+dmOsV1Tfu+A=,iv:bC+z9SP2W048bR3aWIcPgRlfLB5n5ccst6OvH0NjYBk=,tag:qhoXUAl0nG4LYy6yXQP2/g==,type:str]",
|
||||
"pgp": [
|
||||
{
|
||||
"created_at": "2024-05-10T13:29:58Z",
|
||||
@@ -24,4 +27,4 @@
|
||||
"unencrypted_suffix": "_unencrypted",
|
||||
"version": "3.8.1"
|
||||
}
|
||||
}
|
||||
}
|
@@ -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;
|
||||
};
|
||||
}
|
@@ -5,12 +5,12 @@
|
||||
[
|
||||
./hardware-configuration.nix
|
||||
|
||||
../../configuration/desktop
|
||||
|
||||
./initrd.nix
|
||||
./programs.nix
|
||||
];
|
||||
|
||||
profiles.clerie.desktop.enable = true;
|
||||
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
boot.initrd.systemd.enable = false;
|
||||
|
||||
profiles.clerie.wg-clerie = {
|
||||
services.wg-clerie = {
|
||||
enable = true;
|
||||
ipv6s = [ "2a01:4f8:c0c:15f1::8109/128" ];
|
||||
ipv4s = [ "10.20.30.109/32" ];
|
||||
|
@@ -2,9 +2,9 @@
|
||||
|
||||
{
|
||||
|
||||
profiles.clerie.firefox.enable = true;
|
||||
|
||||
users.users.clerie.packages = with pkgs; [
|
||||
firefox
|
||||
|
||||
blender
|
||||
#cura # libarcus library is currently broken, required for curaengine
|
||||
|
||||
|
@@ -8,8 +8,6 @@ let
|
||||
|
||||
lib = {
|
||||
clerie-monitoring-ids = callLibs ./clerie-monitoring-ids.nix;
|
||||
mkNixpkgs = callLibs ./mkNixpkgs.nix;
|
||||
nixosSystem = callLibs ./nixosSystem.nix;
|
||||
};
|
||||
|
||||
in
|
||||
|
22
lib/link-local-wireguard.nix
Normal file
22
lib/link-local-wireguard.nix
Normal 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
|
||||
'';
|
||||
};
|
||||
}
|
@@ -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;
|
||||
}
|
@@ -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" ] )
|
@@ -1,22 +1,13 @@
|
||||
{
|
||||
writeTextFile,
|
||||
}:
|
||||
|
||||
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;
|
||||
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: {
|
||||
name = hostname;
|
||||
sshPubkey = stripR (builtins.readFile (../../hosts + "/${hostname}/ssh.pub"));
|
||||
sshPubkey = stripR (builtins.readFile (../hosts + "/${hostname}/ssh.pub"));
|
||||
}) hostsWithSshPubkey;
|
||||
knownHosts = builtins.concatStringsSep "" (builtins.map ({name, sshPubkey}: ''
|
||||
${name} ${sshPubkey}
|
||||
${name}.net.clerie.de ${sshPubkey}
|
||||
'') sshkeyList);
|
||||
in writeTextFile {
|
||||
name = "clerie-ssh-known-hosts";
|
||||
destination = "/known_hosts";
|
||||
allowSubstitutes = true;
|
||||
preferLocalBuild = false;
|
||||
text = knownHosts;
|
||||
}
|
||||
in
|
||||
knownHosts
|
@@ -64,7 +64,7 @@ let
|
||||
targetUsername = if targetOptions.username == null then config.networking.hostName else targetOptions.username;
|
||||
in {
|
||||
"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_password".source = targetPasswordFile;
|
||||
"clerie-backup/${jobName}-${targetName}/files".text = concatStringsSep "\n" jobOptions.paths;
|
||||
@@ -82,7 +82,7 @@ let
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
};
|
||||
serverUrl = mkOption {
|
||||
serverName = mkOption {
|
||||
type = types.str;
|
||||
};
|
||||
};
|
||||
|
@@ -10,6 +10,11 @@ in
|
||||
options = {
|
||||
clerie.system-auto-upgrade = {
|
||||
enable = mkEnableOption "clerie system upgrade";
|
||||
allowReboot = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Monitor NixOS";
|
||||
};
|
||||
autoUpgrade = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
@@ -33,7 +38,7 @@ in
|
||||
|
||||
serviceConfig = {
|
||||
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 {
|
||||
|
@@ -61,6 +61,9 @@ in
|
||||
|
||||
services.prometheus.exporters.node = {
|
||||
enable = true;
|
||||
#listenAddress = "${monitoring-network-base}${cfg.id}";
|
||||
openFirewall = true;
|
||||
firewallFilter = "-i wg-monitoring -p tcp -m tcp --dport 9100";
|
||||
enabledCollectors = [
|
||||
"systemd"
|
||||
];
|
||||
@@ -77,10 +80,14 @@ in
|
||||
|
||||
services.prometheus.exporters.bird = mkIf cfg.bird {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
firewallFilter = "-i wg-monitoring -p tcp -m tcp --dport 9324";
|
||||
};
|
||||
|
||||
services.prometheus.exporters.blackbox = mkIf cfg.blackbox {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
firewallFilter = "-i wg-monitoring -p tcp -m tcp --dport 9115";
|
||||
configFile = pkgs.writeText "blackbox.yml" ''
|
||||
modules:
|
||||
icmp6:
|
||||
@@ -102,13 +109,8 @@ in
|
||||
listen = "[::]:9152";
|
||||
};
|
||||
|
||||
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 []);
|
||||
networking.firewall.extraCommands = ''
|
||||
ip46tables -A nixos-fw -i wg-monitoring -p tcp -m tcp --dport 9152 -m comment --comment nixos-exporter -j nixos-fw-accept
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
@@ -9,8 +9,6 @@ let
|
||||
|
||||
mkServerBlock = isUDP: port: forward: ''
|
||||
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"};
|
||||
|
||||
@@ -20,9 +18,7 @@ let
|
||||
${ optionalString (sslDhparam != null) "ssl_dhparam ${sslDhparam};" }
|
||||
'' }
|
||||
|
||||
set $upstream_server ${forward.host}:${toString forward.port};
|
||||
|
||||
proxy_pass $upstream_server;
|
||||
proxy_pass ${forward.host}:${toString forward.port};
|
||||
}
|
||||
'';
|
||||
|
||||
@@ -54,10 +50,6 @@ in
|
||||
options = {
|
||||
clerie.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 {
|
||||
type = with types; attrsOf (submodule portOpts);
|
||||
default = {};
|
||||
|
@@ -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 }
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
final: prev:
|
||||
|
||||
{
|
||||
clerie-build-support = {
|
||||
writePythonScript = final.callPackage ./writePythonScript.nix {};
|
||||
};
|
||||
}
|
@@ -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}
|
||||
'';
|
||||
}
|
@@ -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 -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
|
||||
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
|
||||
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
|
||||
''
|
||||
|
@@ -11,8 +11,6 @@ pkgs.writeShellApplication {
|
||||
if GIT_ROOT=$(git rev-parse --show-toplevel); then
|
||||
REPO_ROOT="$GIT_ROOT"
|
||||
fi
|
||||
CONFIG_FILE="$(mktemp)"
|
||||
clerie-sops-config "$REPO_ROOT" > "$CONFIG_FILE"
|
||||
exec sops --config "$CONFIG_FILE" "$@"
|
||||
exec sops --config <(clerie-sops-config "$REPO_ROOT") "$@"
|
||||
'';
|
||||
}
|
||||
|
@@ -2,11 +2,16 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
ALLOW_REBOOT=
|
||||
NO_CONFIRM=
|
||||
NODE_EXPORTER_METRICS_PATH=
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case $1 in
|
||||
--allow-reboot)
|
||||
ALLOW_REBOOT=1
|
||||
shift
|
||||
;;
|
||||
--no-confirm)
|
||||
NO_CONFIRM=1
|
||||
shift
|
||||
@@ -58,8 +63,13 @@ ACTIVATING_SYSTEM_KERNEL="$(readlink /nix/var/nix/profiles/system/{initrd,kernel
|
||||
|
||||
if [[ "$BOOTED_SYSTEM_KERNEL" != "$ACTIVATING_SYSTEM_KERNEL" ]]; then
|
||||
echo "Reboot is required"
|
||||
echo "Rebooting system now"
|
||||
shutdown -r +1 "System update requires reboot"
|
||||
if [[ -n "$ALLOW_REBOOT" ]]; then
|
||||
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
|
||||
echo "No reboot is required"
|
||||
echo "Activating system now"
|
||||
|
@@ -1,10 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
pkgs.writeShellApplication {
|
||||
name = "clerie-cleanup-branches";
|
||||
text = builtins.readFile ./clerie-cleanup-branches.sh;
|
||||
runtimeInputs = with pkgs; [
|
||||
git
|
||||
];
|
||||
}
|
||||
|
@@ -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
|
@@ -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;
|
||||
}
|
@@ -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")
|
@@ -1,6 +1,13 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
pkgs.clerie-build-support.writePythonScript {
|
||||
pkgs.writeTextFile {
|
||||
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
Reference in New Issue
Block a user