1
0

Compare commits

..

707 Commits

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

View File

@@ -7,6 +7,7 @@
./initrd.nix ./initrd.nix
./locale.nix ./locale.nix
./networking.nix ./networking.nix
./nix.nix
./programs.nix ./programs.nix
./ssh.nix ./ssh.nix
./systemd.nix ./systemd.nix

View File

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

View File

@@ -6,7 +6,6 @@
# My system is fucked # My system is fucked
gptfdisk gptfdisk
parted parted
grow-last-partition-and-filesystem
# Normal usage # Normal usage
htop htop

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,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
];
}

171
flake.lock generated
View File

@@ -269,11 +269,11 @@
"nixpkgs": "nixpkgs_3" "nixpkgs": "nixpkgs_3"
}, },
"locked": { "locked": {
"lastModified": 1751801455, "lastModified": 1748520450,
"narHash": "sha256-hUJqtS88SbNQQSEJAPFyY2vLMh8yA8rQ6jbul50p64M=", "narHash": "sha256-thTwt6c/qdLg65urUWSENbmwf/ofvujpFNNTcF+iZvI=",
"ref": "lix-2.93", "ref": "lix-2.93",
"rev": "b940aca430a7ca41f70bdb320659dd62026fe0e9", "rev": "509c94cdb7e11d48e67a5a68c0d5fadfcda7bad5",
"revCount": 4261, "revCount": 4257,
"type": "git", "type": "git",
"url": "https://git.lix.systems/lix-project/hydra.git" "url": "https://git.lix.systems/lix-project/hydra.git"
}, },
@@ -290,9 +290,6 @@
"flake-compat" "flake-compat"
], ],
"nix2container": "nix2container", "nix2container": "nix2container",
"nix_2_18": [
"hydra"
],
"nixpkgs": [ "nixpkgs": [
"hydra", "hydra",
"nixpkgs" "nixpkgs"
@@ -301,11 +298,11 @@
"pre-commit-hooks": "pre-commit-hooks" "pre-commit-hooks": "pre-commit-hooks"
}, },
"locked": { "locked": {
"lastModified": 1751235704, "lastModified": 1747597901,
"narHash": "sha256-Jzm3KPZ2gL+0Nl3Mw/2E0B3vqDDi1Xt5+9VCXghUDZ8=", "narHash": "sha256-jS+P57tXZEl+zvPfEIHFbd1j3xfuWcrcMrcnbm9wWbE=",
"ref": "release-2.93", "ref": "release-2.93",
"rev": "f3a7bbe5f8d1a8504ddb6362d50106904523e440", "rev": "33eaaf02fd3f380e99032b25e741eeeb10573cad",
"revCount": 17874, "revCount": 17846,
"type": "git", "type": "git",
"url": "https://git.lix.systems/lix-project/lix" "url": "https://git.lix.systems/lix-project/lix"
}, },
@@ -327,11 +324,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1753282722, "lastModified": 1748254718,
"narHash": "sha256-KYMUrTV7H/RR5/HRnjV5R3rRIuBXMemyJzTLi50NFTs=", "narHash": "sha256-Uf6HNA0JctJH4ZdrZ/xb185mT0/XusLxnric9Xhg7Es=",
"ref": "release-2.93", "ref": "release-2.93",
"rev": "46a9e8fcfe4be72b4c7c8082ee11d2c42da1e873", "rev": "3855614ceafe562393472cca5fb2005297889a75",
"revCount": 149, "revCount": 143,
"type": "git", "type": "git",
"url": "https://git.lix.systems/lix-project/nixos-module.git" "url": "https://git.lix.systems/lix-project/nixos-module.git"
}, },
@@ -345,7 +342,6 @@
"inputs": { "inputs": {
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_2",
"nix2container": "nix2container_2", "nix2container": "nix2container_2",
"nix_2_18": "nix_2_18",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
@@ -353,11 +349,11 @@
"pre-commit-hooks": "pre-commit-hooks_2" "pre-commit-hooks": "pre-commit-hooks_2"
}, },
"locked": { "locked": {
"lastModified": 1753306924, "lastModified": 1747597901,
"narHash": "sha256-jLCEW0FvjFhC+c4RHzH+xbkSOxrnpFHnhjOw6sudhx0=", "narHash": "sha256-jS+P57tXZEl+zvPfEIHFbd1j3xfuWcrcMrcnbm9wWbE=",
"ref": "release-2.93", "ref": "release-2.93",
"rev": "1a4393d0aac31aba21f5737ede1b171e11336d77", "rev": "33eaaf02fd3f380e99032b25e741eeeb10573cad",
"revCount": 17884, "revCount": 17846,
"type": "git", "type": "git",
"url": "https://git.lix.systems/lix-project/lix.git" "url": "https://git.lix.systems/lix-project/lix.git"
}, },
@@ -367,22 +363,6 @@
"url": "https://git.lix.systems/lix-project/lix.git" "url": "https://git.lix.systems/lix-project/lix.git"
} }
}, },
"lowdown-src": {
"flake": false,
"locked": {
"lastModified": 1633514407,
"narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=",
"owner": "kristapsdz",
"repo": "lowdown",
"rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8",
"type": "github"
},
"original": {
"owner": "kristapsdz",
"repo": "lowdown",
"type": "github"
}
},
"mitel-ommclient2": { "mitel-ommclient2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -404,26 +384,6 @@
"url": "https://git.clerie.de/clerie/mitel_ommclient2.git" "url": "https://git.clerie.de/clerie/mitel_ommclient2.git"
} }
}, },
"mu5001tool": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1757627777,
"narHash": "sha256-NGUqHQ+/BaUhjgSYQauTihTtNyhhnQRMJ8t7ZSPNpmk=",
"ref": "refs/heads/main",
"rev": "b7b0f0d5191433bca1377f7d818b800627a83fda",
"revCount": 9,
"type": "git",
"url": "https://git.clerie.de/clerie/mu5001tool.git"
},
"original": {
"type": "git",
"url": "https://git.clerie.de/clerie/mu5001tool.git"
}
},
"nix2container": { "nix2container": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -456,34 +416,6 @@
"type": "github" "type": "github"
} }
}, },
"nix_2_18": {
"inputs": {
"flake-compat": [
"lix",
"flake-compat"
],
"lowdown-src": "lowdown-src",
"nixpkgs": "nixpkgs_4",
"nixpkgs-regression": [
"lix",
"nixpkgs-regression"
]
},
"locked": {
"lastModified": 1730375271,
"narHash": "sha256-RrOFlDGmRXcVRV2p2HqHGqvzGNyWoD0Dado/BNlJ1SI=",
"owner": "NixOS",
"repo": "nix",
"rev": "0f665ff6779454f2117dcc32e44380cda7f45523",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "2.18.9",
"repo": "nix",
"type": "github"
}
},
"nixos-exporter": { "nixos-exporter": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -552,22 +484,6 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-carbon": {
"locked": {
"lastModified": 1751206202,
"narHash": "sha256-VjK8pEv4cfDpCTh4KW1go98kP25j7KdTNEce342Bh/Y=",
"owner": "clerie",
"repo": "nixpkgs",
"rev": "ac4ac98609c1b30c378458ab7207a9a5b5148457",
"type": "github"
},
"original": {
"owner": "clerie",
"ref": "clerie/always-setup-netdevs",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-regression": { "nixpkgs-regression": {
"locked": { "locked": {
"lastModified": 1643052045, "lastModified": 1643052045,
@@ -634,11 +550,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1751582995, "lastModified": 1748437600,
"narHash": "sha256-u7ubvtxdTnFPpV27AHpgoKn7qHuE7sgWgza/1oj5nzA=", "narHash": "sha256-hYKMs3ilp09anGO7xzfGs3JqEgUqFMnZ8GMAqI6/k04=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "7a732ed41ca0dd64b4b71b563ab9805a80a7d693", "rev": "7282cb574e0607e65224d33be8241eae7cfe0979",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -650,27 +566,11 @@
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1705033721, "lastModified": 1750506804,
"narHash": "sha256-K5eJHmL1/kev6WuqyqqbS1cdNnSidIZ3jeqJ7GbrYnQ=", "narHash": "sha256-VLFNc4egNjovYVxDGyBYTrvVCgDYgENp5bVi9fPTDYc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a1982c92d8980a0114372973cbdfe0a307f1bdea", "rev": "4206c4cb56751df534751b058295ea61357bbbaa",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.05-small",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1761672384,
"narHash": "sha256-o9KF3DJL7g7iYMZq9SWgfS1BFlNbsm6xplRjVlOCkXI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "08dacfca559e1d7da38f3cf05f1f45ee9bfd213c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -763,19 +663,16 @@
"hydra": "hydra", "hydra": "hydra",
"lix": "lix_2", "lix": "lix_2",
"lix-module": "lix-module", "lix-module": "lix-module",
"mu5001tool": "mu5001tool",
"nixos-exporter": "nixos-exporter", "nixos-exporter": "nixos-exporter",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_5", "nixpkgs": "nixpkgs_4",
"nixpkgs-0dc1c7": "nixpkgs-0dc1c7", "nixpkgs-0dc1c7": "nixpkgs-0dc1c7",
"nixpkgs-carbon": "nixpkgs-carbon",
"nurausstieg": "nurausstieg", "nurausstieg": "nurausstieg",
"rainbowrss": "rainbowrss", "rainbowrss": "rainbowrss",
"scan-to-gpg": "scan-to-gpg", "scan-to-gpg": "scan-to-gpg",
"solid-xmpp-alarm": "solid-xmpp-alarm", "solid-xmpp-alarm": "solid-xmpp-alarm",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"ssh-to-age": "ssh-to-age", "ssh-to-age": "ssh-to-age"
"traveldrafter": "traveldrafter"
} }
}, },
"scan-to-gpg": { "scan-to-gpg": {
@@ -890,26 +787,6 @@
"type": "github" "type": "github"
} }
}, },
"traveldrafter": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1751817360,
"narHash": "sha256-HzOhsPvzCaFeiz8nPq5MkYnYHpUzVaU/P5sxG+Njt+8=",
"ref": "refs/heads/main",
"rev": "b6610d70f363ecf9704352b1ef39244a816bd34f",
"revCount": 22,
"type": "git",
"url": "https://git.clerie.de/clerie/traveldrafter.git"
},
"original": {
"type": "git",
"url": "https://git.clerie.de/clerie/traveldrafter.git"
}
},
"treefmt-nix": { "treefmt-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [

View File

@@ -1,7 +1,6 @@
{ {
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-carbon.url = "github:clerie/nixpkgs/clerie/always-setup-netdevs";
# for etesync-dav # for etesync-dav
nixpkgs-0dc1c7.url = "github:NixOS/nixpkgs/0dc1c7294c13f5d1dd6eccab4f75d268d7296efe"; nixpkgs-0dc1c7.url = "github:NixOS/nixpkgs/0dc1c7294c13f5d1dd6eccab4f75d268d7296efe";
nixos-hardware.url = "github:NixOS/nixos-hardware/master"; nixos-hardware.url = "github:NixOS/nixos-hardware/master";
@@ -40,10 +39,6 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
fieldpoc.url = "git+https://git.clerie.de/clerie/fieldpoc.git"; fieldpoc.url = "git+https://git.clerie.de/clerie/fieldpoc.git";
mu5001tool = {
url = "git+https://git.clerie.de/clerie/mu5001tool.git";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-exporter = { nixos-exporter = {
url = "git+https://git.clerie.de/clerie/nixos-exporter.git"; url = "git+https://git.clerie.de/clerie/nixos-exporter.git";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
@@ -72,13 +67,11 @@
url = "github:Mic92/ssh-to-age"; url = "github:Mic92/ssh-to-age";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
traveldrafter = {
url = "git+https://git.clerie.de/clerie/traveldrafter.git";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = { self, nixpkgs, nixos-hardware, chaosevents, fernglas, nixos-exporter, solid-xmpp-alarm, ssh-to-age, ... }@inputs: let outputs = { self, nixpkgs, nixos-hardware, chaosevents, fernglas, nixos-exporter, solid-xmpp-alarm, ssh-to-age, ... }@inputs: let
lib = import ./lib inputs; lib = import ./lib inputs;
helper = lib.flake-helper;
localNixpkgs = import ./flake/nixpkgs.nix inputs;
in { in {
clerie.hosts = { clerie.hosts = {
aluminium = { aluminium = {
@@ -142,24 +135,14 @@
}; };
overlays = { overlays = {
clerie-inputs = import ./flake/inputs-overlay.nix inputs; nixfilesInputs = import ./flake/overlay.nix inputs;
clerie-pkgs = import ./pkgs/overlay.nix; clerie = import ./pkgs/overlay.nix;
clerie-build-support = import ./pkgs/build-support/overlay.nix; default = self.overlays.clerie;
clerie-overrides = import ./pkgs/overrides/overlay.nix;
}; };
nixpkgs = nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" ] (system: packages = nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" ] (system: let
lib.mkNixpkgs { pkgs = localNixpkgs.${system};
inherit system; in builtins.mapAttrs (name: value: pkgs."${name}") (import ./pkgs/pkgs.nix));
}
);
packages = nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" ] (system:
nixpkgs.lib.genAttrs (
(builtins.attrNames (self.overlays.clerie-pkgs null null))
++ (builtins.attrNames (self.overlays.clerie-overrides null null))
) (name: self.nixpkgs."${system}"."${name}")
);
inherit lib self; inherit lib self;

View File

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

View File

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

17
flake/nixpkgs.nix Normal file
View File

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

View File

@@ -5,12 +5,10 @@
, chaosevents , chaosevents
, harmonia , harmonia
, hydra , hydra
, mu5001tool
, nurausstieg , nurausstieg
, rainbowrss , rainbowrss
, scan-to-gpg , scan-to-gpg
, ssh-to-age , ssh-to-age
, traveldrafter
, ... , ...
}@inputs: }@inputs:
final: prev: { final: prev: {
@@ -26,8 +24,6 @@ final: prev: {
harmonia; harmonia;
inherit (hydra.packages.${final.system}) inherit (hydra.packages.${final.system})
hydra; hydra;
inherit (mu5001tool.packages.${final.system})
mu5001tool;
inherit (nurausstieg.packages.${final.system}) inherit (nurausstieg.packages.${final.system})
nurausstieg; nurausstieg;
inherit (rainbowrss.packages.${final.system}) inherit (rainbowrss.packages.${final.system})
@@ -36,6 +32,4 @@ final: prev: {
scan-to-gpg; scan-to-gpg;
inherit (ssh-to-age.packages.${final.system}) inherit (ssh-to-age.packages.${final.system})
ssh-to-age; ssh-to-age;
inherit (traveldrafter.packages.${final.system})
traveldrafter;
} }

View File

@@ -3,9 +3,9 @@
{ {
imports = [ imports = [
(modulesPath + "/installer/cd-dvd/installation-cd-base.nix") (modulesPath + "/installer/cd-dvd/installation-cd-base.nix")
../../configuration/gpg-ssh
]; ];
profiles.clerie.gpg-ssh.enable = true;
profiles.clerie.network-fallback-dhcp.enable = true; profiles.clerie.network-fallback-dhcp.enable = true;
# systemd in initrd is broken with ISOs # systemd in initrd is broken with ISOs

View File

@@ -4,10 +4,6 @@
imports = imports =
[ [
./hardware-configuration.nix ./hardware-configuration.nix
./grafana.nix
./mu5001tool.nix
./prometheus.nix
]; ];
profiles.clerie.network-fallback-dhcp.enable = true; profiles.clerie.network-fallback-dhcp.enable = true;
@@ -22,16 +18,6 @@
terminal_output serial terminal_output serial
"; ";
sops.secrets.monitoring-htpasswd = {
owner = "nginx";
group = "nginx";
};
services.nginx = {
enable = true;
};
networking.firewall.allowedTCPPorts = [ 80 443 ];
profiles.clerie.wg-clerie = { profiles.clerie.wg-clerie = {
enable = true; enable = true;
ipv6s = [ "2a01:4f8:c0c:15f1::8108/128" ]; ipv6s = [ "2a01:4f8:c0c:15f1::8108/128" ];

View File

@@ -1,45 +0,0 @@
{ config, ... }:
{
services.grafana = {
enable = true;
settings = {
server = {
domain = "grafana.astatine.net.clerie.de";
root_url = "https://grafana.astatine.net.clerie.de";
http_port = 3001;
http_addr = "::1";
};
"auth.anonymous" = {
enabled = true;
};
};
provision = {
enable = true;
datasources.settings.datasources = [
{
type = "prometheus";
name = "Prometheus";
url = "http://[::1]:9090";
isDefault = true;
}
];
};
};
services.nginx = {
virtualHosts = {
"grafana.astatine.net.clerie.de" = {
enableACME = true;
forceSSL = true;
basicAuthFile = config.sops.secrets.monitoring-htpasswd.path;
locations."/".proxyPass = "http://[::1]:3001/";
locations."= /api/live/ws" = {
proxyPass = "http://[::1]:3001";
proxyWebsockets = true;
};
};
};
};
}

View File

@@ -1,18 +0,0 @@
{ config, pkgs, lib, ... }:
{
systemd.services."mu5001tool" = {
wantedBy = [ "multi-user.target" ];
serviceConfig = {
DynamicUser = true;
LoadCredential = "zte-hypermobile-5g-password:${config.sops.secrets."zte-hypermobile-5g-password".path}";
Restart = "on-failure";
RestartSec = "15s";
};
script = ''
${lib.getExe pkgs.mu5001tool} --password-file ''${CREDENTIALS_DIRECTORY}/zte-hypermobile-5g-password prometheus-exporter --listen-port 9242
'';
};
}

View File

@@ -1,46 +0,0 @@
{ config, ... }:
{
services.prometheus = {
enable = true;
enableReload = true;
listenAddress = "[::1]";
scrapeConfigs = [
{
job_name = "prometheus";
scrape_interval = "20s";
scheme = "http";
static_configs = [
{
targets = [
"[::1]:9090"
];
}
];
}
{
job_name = "mu5001tool";
scrape_interval = "20s";
static_configs = [
{
targets = [
"[::1]:9242"
];
}
];
}
];
};
services.nginx = {
virtualHosts = {
"prometheus.astatine.net.clerie.de" = {
enableACME = true;
forceSSL = true;
basicAuthFile = config.sops.secrets.monitoring-htpasswd.path;
locations."/".proxyPass = "http://[::1]:9090/";
};
};
};
}

View File

@@ -1,17 +1,19 @@
{ {
"wg-clerie": "ENC[AES256_GCM,data:DbchcO6GTmSFyoHrRAkfu2flaKYrQHPk+rIerekYO4Cto9sqaWLgaSigpS8=,iv:no1xNRVqsKzAN6ssYA0Ir+utOM9tg8OBUT9PY2v0HPA=,tag:lZj1wEPFWHaf52N7YHEQKQ==,type:str]", "wg-clerie": "ENC[AES256_GCM,data:DbchcO6GTmSFyoHrRAkfu2flaKYrQHPk+rIerekYO4Cto9sqaWLgaSigpS8=,iv:no1xNRVqsKzAN6ssYA0Ir+utOM9tg8OBUT9PY2v0HPA=,tag:lZj1wEPFWHaf52N7YHEQKQ==,type:str]",
"wg-monitoring": "ENC[AES256_GCM,data:dTKKeieaGvECkHUpATLorhOgr9Re5CAH25y1WTcSqJZDsvnwD4CBbqMv2QQ=,iv:u1n1wyAW5aNcVYfGN8BmrEhIhtA3EfRDBNu65IdBZMI=,tag:RJYgOpel9uy6dC72MmqS5A==,type:str]", "wg-monitoring": "ENC[AES256_GCM,data:dTKKeieaGvECkHUpATLorhOgr9Re5CAH25y1WTcSqJZDsvnwD4CBbqMv2QQ=,iv:u1n1wyAW5aNcVYfGN8BmrEhIhtA3EfRDBNu65IdBZMI=,tag:RJYgOpel9uy6dC72MmqS5A==,type:str]",
"monitoring-htpasswd": "ENC[AES256_GCM,data:0uQ+Gwedi9kTaOzrwVzkNkS9qL0Dwmph1leK2sj/TndfSn3yaq7ur7ZHoPjWUl5Oy1poxU2rIUxWHajYC0n3yHv2AuGT,iv:FyH4MHcgW5iHkAsahNFtshnqqPOMlukg8aYfhcN9onw=,tag:q3BsnyKLrKYi/xDP6GmSkA==,type:str]",
"zte-hypermobile-5g-password": "ENC[AES256_GCM,data:lqxQICmWYwMejn8=,iv:TPYOs/cL/ETw7Ee0+YG/+Fhd7ASi0kr4rDLEiste+2Y=,tag:6O6AXIHkIjPm7hJVC4Y/1g==,type:str]",
"sops": { "sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [ "age": [
{ {
"recipient": "age1fffvnazdv3ys9ww8v4g832hv5nkvnk6d728syerzvpgskfmfkq8q00whpv", "recipient": "age1fffvnazdv3ys9ww8v4g832hv5nkvnk6d728syerzvpgskfmfkq8q00whpv",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMQUF5dkRwdXRmUkJ1SXN5\nLzdOVkhWYUJGdFd4Qklsa1BXeVZlTGx0eDE0ClZmYWNLMEVzaVVXWGkwQUt5ZHF5\nS1c5OU9PWjBTelM5R2phNFdVNncxUUkKLS0tIDlwSXFyZWNVT1dtdGU5dVFSRHNE\nUUpJZHJZRTd6TnBUU2dCWW90UTRVb0UKCWrHWmQTNhez16wgEKj4EQA4+UBRmGQn\n+NHSjBCMBmmTdHb05nENYVK515Z0T/60+9N3VlNyHWS9IgC3mZRUBg==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMQUF5dkRwdXRmUkJ1SXN5\nLzdOVkhWYUJGdFd4Qklsa1BXeVZlTGx0eDE0ClZmYWNLMEVzaVVXWGkwQUt5ZHF5\nS1c5OU9PWjBTelM5R2phNFdVNncxUUkKLS0tIDlwSXFyZWNVT1dtdGU5dVFSRHNE\nUUpJZHJZRTd6TnBUU2dCWW90UTRVb0UKCWrHWmQTNhez16wgEKj4EQA4+UBRmGQn\n+NHSjBCMBmmTdHb05nENYVK515Z0T/60+9N3VlNyHWS9IgC3mZRUBg==\n-----END AGE ENCRYPTED FILE-----\n"
} }
], ],
"lastmodified": "2025-09-08T21:03:41Z", "lastmodified": "2024-04-21T16:03:13Z",
"mac": "ENC[AES256_GCM,data:ztS/Z6mn8hFAPsks2evJRJFocw/3oz22O2HeSEkY7Mu+bfNvClsJuvuTbnDadB0IwKiLDFWRMGs/UPFmNP6J/euro4cFHDWXopdXg7eDFGDoJDKIg4fBUtofdXIqWvDoQ9LeZNvc5Z4EEQYhs3LwFnAU0x15acwIIxr5TB9l8g8=,iv:WVjavmcrEs2CyYTfoTTP44c9TqFubUdE+PBN2jRPR+s=,tag:fBXzU69Q9MwD3o/Nyu5OZA==,type:str]", "mac": "ENC[AES256_GCM,data:fA8fhOZbX30TYgwZXB7sQDNmck0JRDyAnEXf5nCYtli/Qvs78fTs4DdC08VOpOni8uAVARkFsGSo6Fjo/MpTSDVA8VNYZig/we/bWF+LQlEMCmiqwOI1R6eQ3GPxcRXltlO2aPPlT9BpLwIVZjGGjIsmjpVE8xjkCbLUUqj+UxY=,iv:fHLyw96QLVRrAQky2kR7TDDxf8CNXDV9lVQ5RETzJEI=,tag:y+cG9u3d6vCUmPyNMDRWpA==,type:str]",
"pgp": [ "pgp": [
{ {
"created_at": "2024-04-21T16:02:41Z", "created_at": "2024-04-21T16:02:41Z",
@@ -22,4 +24,4 @@
"unencrypted_suffix": "_unencrypted", "unencrypted_suffix": "_unencrypted",
"version": "3.8.1" "version": "3.8.1"
} }
} }

View File

@@ -6,7 +6,6 @@
./hardware-configuration.nix ./hardware-configuration.nix
./dns.nix ./dns.nix
./ds-lite-ncfttb.nix
./mdns.nix ./mdns.nix
./net-dsl.nix ./net-dsl.nix
./net-gastnetz.nix ./net-gastnetz.nix
@@ -17,7 +16,7 @@
./net-printer.nix ./net-printer.nix
./net-voip.nix ./net-voip.nix
./ntp.nix ./ntp.nix
./ppp-ncfttb.nix ./ppp.nix
./scan-to-gpg.nix ./scan-to-gpg.nix
./wg-clerie.nix ./wg-clerie.nix
]; ];
@@ -40,7 +39,7 @@
networking.nat = { networking.nat = {
enableIPv6 = true; enableIPv6 = true;
enable = true; enable = true;
externalInterface = "ppp-ncfttb"; externalInterface = "ppp-dtagdsl";
internalIPv6s = [ "fd00:152:152::/48" "fd00:3214:9453:4920::/64"]; internalIPv6s = [ "fd00:152:152::/48" "fd00:3214:9453:4920::/64"];
internalIPs = [ "10.152.0.0/16" "192.168.32.0/24" ]; internalIPs = [ "10.152.0.0/16" "192.168.32.0/24" ];
}; };
@@ -64,10 +63,10 @@
systemd.services.kea-dhcp4-server = { systemd.services.kea-dhcp4-server = {
after = [ after = [
"network.target" "network-setup.service"
]; ];
wants = [ requires = [
"network.target" "network-setup.service"
]; ];
}; };

View File

@@ -1,18 +0,0 @@
{ ... }:
{
profiles.clerie.ds-lite = {
enable = true;
wanInterfaceName = "ppp-ncfttb";
tunnelInterfaceName = "ds-lite-ncfttb";
lanInterfaces = [
{
name = "net-heimnetz";
sla_id = 201;
prefix_len = 64;
}
];
};
}

View File

@@ -3,17 +3,17 @@
{ {
## DSL-Uplink ## DSL-Uplink
networking.vlans."enp1s0.10" = { networking.vlans."enp1s0.7" = {
id = 10; id = 7;
interface = "enp1s0"; interface = "enp1s0";
}; };
networking.vlans."enp3s0.10" = { networking.vlans."enp3s0.7" = {
id = 10; id = 7;
interface = "enp3s0"; interface = "enp3s0";
}; };
networking.bridges."net-dsl".interfaces = [ networking.bridges."net-dsl".interfaces = [
"enp1s0.10" "enp1s0.7"
"enp3s0.10" "enp3s0.7"
]; ];
} }

View File

@@ -61,7 +61,7 @@
# net-gastnetz can only access internet # net-gastnetz can only access internet
clerie.firewall.extraForwardFilterCommands = '' clerie.firewall.extraForwardFilterCommands = ''
ip46tables -A forward-filter -i net-gastnetz -o ppp-ncfttb -j ACCEPT ip46tables -A forward-filter -i net-gastnetz -o ppp-dtagdsl -j ACCEPT
ip46tables -A forward-filter -i net-gastnetz -j DROP ip46tables -A forward-filter -i net-gastnetz -j DROP
ip46tables -A forward-filter -o net-gastnetz -j DROP ip46tables -A forward-filter -o net-gastnetz -j DROP
''; '';

View File

@@ -4,11 +4,11 @@
services.pppd = { services.pppd = {
enable = true; enable = true;
peers.ncfttb = { peers.dtagdsl = {
config = '' config = ''
plugin pppoe.so net-dsl plugin pppoe.so net-dsl
user "''${PPPD_NETCOLOGNE_USERNAME}" user "''${PPPD_DTAGDSL_USERNAME}"
ifname ppp-ncfttb ifname ppp-dtagdsl
persist persist
maxfail 0 maxfail 0
holdoff 5 holdoff 5
@@ -24,9 +24,9 @@
}; };
}; };
environment.etc."ppp/peers/ncfttb".enable = false; environment.etc."ppp/peers/dtagdsl".enable = false;
systemd.services."pppd-ncfttb".serviceConfig = let systemd.services."pppd-dtagdsl".serviceConfig = let
preStart = '' preStart = ''
mkdir -p /etc/ppp/peers mkdir -p /etc/ppp/peers
@@ -34,22 +34,22 @@
umask u=rw,g=,o= umask u=rw,g=,o=
# Copy config and substitute username # Copy config and substitute username
rm -f /etc/ppp/peers/ncfttb rm -f /etc/ppp/peers/dtagdsl
${pkgs.envsubst}/bin/envsubst -i "${config.environment.etc."ppp/peers/ncfttb".source}" > /etc/ppp/peers/ncfttb ${pkgs.envsubst}/bin/envsubst -i "${config.environment.etc."ppp/peers/dtagdsl".source}" > /etc/ppp/peers/dtagdsl
# Copy login secrets # Copy login secrets
rm -f /etc/ppp/pap-secrets rm -f /etc/ppp/pap-secrets
cat ${config.sops.secrets.pppd-ncfttb-secrets.path} > /etc/ppp/pap-secrets cat ${config.sops.secrets.pppd-dtagdsl-secrets.path} > /etc/ppp/pap-secrets
rm -f /etc/ppp/chap-secrets rm -f /etc/ppp/chap-secrets
cat ${config.sops.secrets.pppd-ncfttb-secrets.path} > /etc/ppp/chap-secrets cat ${config.sops.secrets.pppd-dtagdsl-secrets.path} > /etc/ppp/chap-secrets
''; '';
preStartFile = pkgs.writeShellApplication { preStartFile = pkgs.writeShellApplication {
name = "pppd-ncfttb-pre-start"; name = "pppd-dtagdsl-pre-start";
text = preStart; text = preStart;
}; };
in { in {
EnvironmentFile = config.sops.secrets.pppd-ncfttb-username.path; EnvironmentFile = config.sops.secrets.pppd-dtagdsl-username.path;
ExecStartPre = [ ExecStartPre = [
# "+" marks script to be executed without priviledge restrictions # "+" marks script to be executed without priviledge restrictions
"+${lib.getExe preStartFile}" "+${lib.getExe preStartFile}"

View File

@@ -1,17 +1,21 @@
{ {
"wg-monitoring": "ENC[AES256_GCM,data:+k5MgBrj/psMCE1T2jDtCCJI9Q7L+wJ3j83inNkeGp3LSUjoAPtBp4YoyL4=,iv:C19g/Lqi+cWAyiJBMNDtgLc3SDNI9bMBrBPWn+26mVY=,tag:9zIoawuGeGCMbOX1HKR/sQ==,type:str]", "wg-monitoring": "ENC[AES256_GCM,data:+k5MgBrj/psMCE1T2jDtCCJI9Q7L+wJ3j83inNkeGp3LSUjoAPtBp4YoyL4=,iv:C19g/Lqi+cWAyiJBMNDtgLc3SDNI9bMBrBPWn+26mVY=,tag:9zIoawuGeGCMbOX1HKR/sQ==,type:str]",
"pppd-ncfttb-username": "ENC[AES256_GCM,data:vyOCNm23xsD3Kj+R7zqnBjH4jEIfYpx/YUUGPcVzqMs9pnFEembahtFTl2sNzOFXLfYCYg==,iv:gMfi/6jldkXCnfdvhu5X1VKj58sVsPR8IX8iEECPfgk=,tag:PJGyIASP6RPAdVULEnn+Gg==,type:str]", "pppd-dtagdsl-username": "ENC[AES256_GCM,data:JC7EyyMoN0p5YwnS9W5I0G5Omhk5usw28UiJrCfifGr+2FUgMrtFYAHQdrtWAELvYNBQDPgrHMmQjGQLhpqqK0hH,iv:/q+Fm63GVBApGInyS8i39V/lo6iv+I2omVh47deq+o8=,tag:LkR+1zTDNWuYkhH2iWT7SA==,type:str]",
"pppd-ncfttb-secrets": "ENC[AES256_GCM,data:IEAguET78vdzRo47UvxbDdz+kKgYWVxYakPPu5rNAZ4BCui7DUG3qm2X9bBdHSMA,iv:Q8D58HXkCoVbqwFoYk+dizXNcEP1J63uMaDSNEzfg2g=,tag:R/xG3owmbVDOLM79sfBQjA==,type:str]", "pppd-dtagdsl-secrets": "ENC[AES256_GCM,data:c5pOb8It1py/9NXNTgLvt9zmsBVbSLHJt4iXWiNA+Osvomw3r7pgoO/JJh9ujomPMnOlDwN7g+pJ,iv:W36gA8E1mWchN6+8hdMdt2epv/RdS91T5ANB/JTcHCE=,tag:7eZ3fZkjERCVJCXYrABnlQ==,type:str]",
"wg-clerie": "ENC[AES256_GCM,data:OEZg8ZoLAdVhKkvB0ai13ID3gPnVUU/xkOjZ4KiJ9MnRbcFu5HBd7Nw6iNwh,iv:edPuaehya2ZvYKkiBqNUbXVDAxAT6yNgETnWtd6it94=,tag:cX12szdQfAcC6cij6zk6Dw==,type:str]", "wg-clerie": "ENC[AES256_GCM,data:OEZg8ZoLAdVhKkvB0ai13ID3gPnVUU/xkOjZ4KiJ9MnRbcFu5HBd7Nw6iNwh,iv:edPuaehya2ZvYKkiBqNUbXVDAxAT6yNgETnWtd6it94=,tag:cX12szdQfAcC6cij6zk6Dw==,type:str]",
"sops": { "sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [ "age": [
{ {
"recipient": "age16mln27e2p58gu6dpxfclttmuzfnq39mv62kthjpps33g3nl3scfq449857", "recipient": "age16mln27e2p58gu6dpxfclttmuzfnq39mv62kthjpps33g3nl3scfq449857",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3Rkd5WFE3aE5EQzY5ZXV4\nbXVGYmxTdVg1ekRpVjlRUnozY2tMTGloL21RCktjZW95OU9ZZ2owTCtMR1NxaXJn\na2VYS2ttb3VhSjNXOG84UUJtYU04QjAKLS0tIGd3aHM0RldFYnVFdDRVS0Vhc3BF\nckJhYmN6a1FJUC9ibks1cGlRaU1zbFkKE4ClunQ3XGAILwluC6iYFs+rlR02PdhK\njOmPbOlS0aNG0hoC7Z6aetgpj689AkJgl68QVcyvm+ecHH7TOT7l1A==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3Rkd5WFE3aE5EQzY5ZXV4\nbXVGYmxTdVg1ekRpVjlRUnozY2tMTGloL21RCktjZW95OU9ZZ2owTCtMR1NxaXJn\na2VYS2ttb3VhSjNXOG84UUJtYU04QjAKLS0tIGd3aHM0RldFYnVFdDRVS0Vhc3BF\nckJhYmN6a1FJUC9ibks1cGlRaU1zbFkKE4ClunQ3XGAILwluC6iYFs+rlR02PdhK\njOmPbOlS0aNG0hoC7Z6aetgpj689AkJgl68QVcyvm+ecHH7TOT7l1A==\n-----END AGE ENCRYPTED FILE-----\n"
} }
], ],
"lastmodified": "2025-10-24T19:16:49Z", "lastmodified": "2024-08-13T14:06:43Z",
"mac": "ENC[AES256_GCM,data:ADhCQ7JxrEq+5ssevuuQVf3uyHcrcNVSzdT8bkFfDFVEE1hKv8q9QsGxhIaKtv4N2gt079fy0YA+WFKH6H8zWb5ONepH4H/mAek2SYgAtmVsxwdWY13zswsJUPi2CfbaCWOqppb9IiDb8+RCbzY2u/8Qqwk8gx/0uw2hr3IJrhM=,iv:c1/TS+W4pQgh2oPT77LX+dUL929YppRYdZCmMl2yN+M=,tag:fTk1sxdeT9xFjDMhqiHZAg==,type:str]", "mac": "ENC[AES256_GCM,data:yGKY0fi3KQWGHBeyNtQ8EJ6561dKRZ5aAjO9zq3odDtX75i2RSjORIlNjBsVvegBzeo8AkwwnzxNPt2sHl6MKDZfEsysWAi8Wolh4UvHk087AnR/uKvtG6t4uUaNIWej2DEzxUtTQ8QP1afsdqGCf0vZVruNcJ4u2xiQbN2vJPc=,iv:CDXJ5/P+h0Enq/0EL1su1Mw55FVYLy4XPSoUCkRkt+U=,tag:AvRfEDYMBunyIQIVCPbXag==,type:str]",
"pgp": [ "pgp": [
{ {
"created_at": "2024-05-10T13:05:56Z", "created_at": "2024-05-10T13:05:56Z",
@@ -20,6 +24,6 @@
} }
], ],
"unencrypted_suffix": "_unencrypted", "unencrypted_suffix": "_unencrypted",
"version": "3.10.2" "version": "3.8.1"
} }
} }

View File

@@ -45,18 +45,13 @@
"/mnt/clerie-backup" "/mnt/clerie-backup"
]; ];
doInit = true; doInit = true;
repo = "u275370-sub2@u275370.your-storagebox.de:./clerie-backup/"; repo = "u275370-sub2@u275370.your-storagebox.de:./clerie-backup/" ;
encryption = { encryption = {
mode = "none"; mode = "none";
}; };
environment = { BORG_RSH = "ssh -p 23 -i /var/src/secrets/ssh/borg-backup-replication-hetzner"; }; environment = { BORG_RSH = "ssh -p 23 -i /var/src/secrets/ssh/borg-backup-replication-hetzner"; };
compression = "auto,lzma"; compression = "auto,lzma";
startAt = "*-*-* 04:07:00"; startAt = "*-*-* 04:07:00";
readWritePaths = [ "/var/lib/prometheus-node-exporter/textfiles" ];
postPrune = ''
echo "backup_replication_hetzner_last_successful_run_time $(date +%s)" > /var/lib/prometheus-node-exporter/textfiles/backup-replication-hetzner.prom
'';
}; };
}; };

View File

@@ -237,7 +237,8 @@
]; ];
}; };
services.bijwerken = { clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true; autoUpgrade = true;
}; };

View File

@@ -111,7 +111,8 @@
''; '';
}; };
services.bijwerken = { clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true; autoUpgrade = true;
startAt = "*-*-* 06:22:00"; startAt = "*-*-* 06:22:00";
}; };

View File

@@ -105,7 +105,8 @@
''; '';
}; };
services.bijwerken = { clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true; autoUpgrade = true;
startAt = "*-*-* 07:22:00"; startAt = "*-*-* 07:22:00";
}; };

View File

@@ -161,7 +161,8 @@
} }
''; '';
services.bijwerken = { clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true; autoUpgrade = true;
}; };

View File

@@ -70,7 +70,8 @@
networking.firewall.allowedTCPPorts = [ 80 443 ]; networking.firewall.allowedTCPPorts = [ 80 443 ];
services.bijwerken = { clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true; autoUpgrade = true;
}; };

View File

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

View File

@@ -11,21 +11,17 @@
signal-desktop signal-desktop
dino dino
fractal fractal
tuba
flare-signal
tio tio
xournalpp xournalpp
libreoffice onlyoffice-bin
krita krita
inkscape inkscape
dune3d
wireshark wireshark
tcpdump tcpdump
nmap nmap
pkgs."http.server"
kdePackages.okular kdePackages.okular
chromium-incognito chromium-incognito

View File

@@ -1,77 +0,0 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": 10,
"links": [],
"panels": [
{
"fieldConfig": {
"defaults": {},
"overrides": []
},
"gridPos": {
"h": 11,
"w": 24,
"x": 0,
"y": 0
},
"id": 2,
"options": {
"includeVars": false,
"keepTime": false,
"maxItems": 10,
"query": "",
"showFolderNames": true,
"showHeadings": false,
"showRecentlyViewed": false,
"showSearch": true,
"showStarred": false,
"tags": []
},
"pluginVersion": "12.0.2+security-01",
"title": "Dashboards",
"type": "dashlist"
}
],
"preload": false,
"refresh": "",
"schemaVersion": 41,
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"hidden": true
},
"timezone": "browser",
"title": "Home",
"uid": "OqTN9p2nz",
"version": 1
}

View File

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

View File

@@ -1,135 +0,0 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": 15,
"links": [],
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "continuous-RdYlGr"
},
"custom": {
"axisPlacement": "auto",
"fillOpacity": 70,
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineWidth": 0,
"spanNulls": false
},
"mappings": [
{
"options": {
"0": {
"index": 1,
"text": "mismatch"
},
"1": {
"index": 0,
"text": "sync"
}
},
"type": "value"
}
],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red"
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 23,
"w": 24,
"x": 0,
"y": 0
},
"id": 2,
"options": {
"alignValue": "left",
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"mergeValues": true,
"rowHeight": 0.9,
"showValue": "auto",
"tooltip": {
"hideZeros": false,
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "12.0.2+security-01",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"editorMode": "builder",
"expr": "nixos_current_system_is_sync",
"legendFormat": "{{instance}}",
"range": true,
"refId": "A"
}
],
"title": "Config is Sync",
"type": "state-timeline"
}
],
"preload": false,
"refresh": "5m",
"schemaVersion": 41,
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-7d",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "NixOS Status",
"uid": "W4j3nz1Vz",
"version": 3
}

View File

@@ -1,211 +0,0 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": 11,
"links": [],
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisBorderShow": false,
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"barWidthFactor": 0.6,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
},
"unit": "s"
},
"overrides": []
},
"gridPos": {
"h": 22,
"w": 24,
"x": 0,
"y": 0
},
"id": 2,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"hideZeros": false,
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "12.0.2+security-01",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"editorMode": "code",
"exemplar": true,
"expr": "probe_icmp_duration_seconds{job=\"blackbox_icmp6\", target=~\"$target\", instance=~\"$instance\", phase=\"rtt\"} > 0 ",
"interval": "",
"legendFormat": "IPv6 {{target}} ({{instance}})",
"range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"editorMode": "code",
"exemplar": true,
"expr": "probe_icmp_duration_seconds{job=\"blackbox_icmp4\", target=~\"$target\", instance=~\"$instance\", phase=\"rtt\"} > 0",
"hide": false,
"interval": "",
"legendFormat": "IPv4 {{target}} ({{instance}})",
"range": true,
"refId": "B"
}
],
"title": "Smokeping",
"type": "timeseries"
}
],
"preload": false,
"refresh": "",
"schemaVersion": 41,
"tags": [],
"templating": {
"list": [
{
"current": {
"text": "All",
"value": "$__all"
},
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"definition": "label_values(probe_icmp_duration_seconds{phase=\"rtt\"}, target)",
"includeAll": true,
"label": "Target:",
"multi": true,
"name": "target",
"options": [],
"query": {
"query": "label_values(probe_icmp_duration_seconds{phase=\"rtt\"}, target)",
"refId": "StandardVariableQuery"
},
"refresh": 1,
"regex": "",
"type": "query"
},
{
"current": {
"text": [
"All"
],
"value": [
"$__all"
]
},
"datasource": {
"type": "prometheus",
"uid": "PBFA97CFB590B2093"
},
"definition": "label_values(probe_icmp_duration_seconds{phase=\"rtt\"}, instance)",
"includeAll": true,
"label": "Instance:",
"multi": true,
"name": "instance",
"options": [],
"query": {
"query": "label_values(probe_icmp_duration_seconds{phase=\"rtt\"}, instance)",
"refId": "StandardVariableQuery"
},
"refresh": 1,
"regex": "",
"type": "query"
}
]
},
"time": {
"from": "now-30m",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "Smokeping",
"uid": "IytTVZL7z",
"version": 9
}

View File

@@ -52,12 +52,6 @@ let
attrByPath ["clerie" "monitoring" "blackbox"] false host.config) attrByPath ["clerie" "monitoring" "blackbox"] false host.config)
monitoringHosts); monitoringHosts);
nginxlogMonitoringTargets = mapAttrsToList (name: host:
"${host.config.networking.hostName}.mon.clerie.de:9117")
(filterAttrs (name: host:
attrByPath ["services" "prometheus" "exporters" "nginxlog" "enable"] false host.config)
monitoringHosts);
eachWithEachOther = (f: x: y: lib.lists.flatten (lib.lists.forEach x (a: lib.lists.forEach y (b: f a b)))); eachWithEachOther = (f: x: y: lib.lists.flatten (lib.lists.forEach x (a: lib.lists.forEach y (b: f a b))));
in { in {
@@ -110,21 +104,6 @@ in {
relabelAddressToInstance relabelAddressToInstance
]; ];
} }
{
job_name = "alertmanager";
scrape_interval = "20s";
scheme = "http";
static_configs = [
{
targets = [
"monitoring-3.mon.clerie.de:9093"
];
}
];
relabel_configs = [
relabelAddressToInstance
];
}
{ {
job_name = "node-exporter"; job_name = "node-exporter";
scrape_interval = "20s"; scrape_interval = "20s";
@@ -542,24 +521,12 @@ in {
} }
]; ];
} }
{
job_name = "nginxlog-exporter";
scrape_interval = "20s";
static_configs = [
{
targets = nginxlogMonitoringTargets;
}
];
relabel_configs = [
relabelAddressToInstance
];
}
]; ];
alertmanagers = [ alertmanagers = [
{ {
static_configs = [ { static_configs = [ {
targets = [ targets = [
"monitoring-3.mon.clerie.de:9093" "[::1]:9093"
]; ];
} ]; } ];
} }

View File

@@ -89,24 +89,9 @@ groups:
description: "GPG with fingerprint {{ $labels.fingerprint }} is expiring in less then six weeks" description: "GPG with fingerprint {{ $labels.fingerprint }} is expiring in less then six weeks"
- alert: NadjaTopIPv4ProxyBroken - 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"} expr: probe_success{job="blackbox_local_http6", target="blog.nadja.top"} != on (target) probe_success{job="blackbox_local_http4", target="blog.nadja.top"}
for: 15m for: 5m
labels: labels:
severity: critical severity: critical
annotations: annotations:
summary: "blog.nadja.top unreachable via IPv4" summary: "blog.nadja.top unreachable via IPv4"
description: "blog.nadja.top unreachable IPv4, but reachable via IPv6" 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"
- alert: FemSocialDown
expr: min(probe_success{target="fem.social", job=~"blackbox_local_http.*"}) == 0
for: 5m
labels:
severity: critical
annotations:
summary: "fem.social unavailable via HTTP"
description: "fem.social is not fully reachable via HTTP"

View File

@@ -41,7 +41,8 @@
networking.firewall.allowedUDPPorts = []; networking.firewall.allowedUDPPorts = [];
services.bijwerken = { clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true; autoUpgrade = true;
}; };

View File

@@ -58,10 +58,6 @@
networking.firewall.allowedTCPPorts = [ 80 443 ]; networking.firewall.allowedTCPPorts = [ 80 443 ];
networking.firewall.allowedUDPPorts = []; networking.firewall.allowedUDPPorts = [];
services.bijwerken = {
autoUpgrade = true;
};
clerie.monitoring = { clerie.monitoring = {
enable = true; enable = true;
id = "102"; id = "102";

View File

@@ -52,7 +52,8 @@
}; };
}; };
services.bijwerken = { clerie.system-auto-upgrade = {
allowReboot = true;
autoUpgrade = true; autoUpgrade = true;
}; };

View File

@@ -11,28 +11,7 @@ with lib;
}; };
users.groups.data-em = {}; users.groups.data-em = {};
users.users.data-em-mp3 = {
group = "data-em-mp3";
home = "/data/em-mp3";
useDefaultShell = true;
isSystemUser = true;
};
users.groups.data-em-mp3 = {};
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"d /data/em - data-em data-em - -" "d /data/em - data-em data-em - -"
"d /data/em-mp3 - data-em-mp3 data-em-mp3 - -"
]; ];
systemd.services.convert-flac-dir-to-mp3 = {
serviceConfig = {
Type = "oneshot";
ExecStart = "${lib.getExe pkgs.convert-flac-dir-to-mp3} /data/em /data/em-mp3";
StateDirectory = "convert-flac-dir-to-mp3";
WorkingDirectory = "/var/lib/convert-flac-dir-to-mp3";
User = "data-em-mp3";
Group = "data-em-mp3";
};
startAt = "*-*-* 03:47:00";
};
} }

View File

@@ -53,23 +53,17 @@ in {
"mixcloud.clerie.de" = { "mixcloud.clerie.de" = {
enableACME = true; enableACME = true;
forceSSL = true; forceSSL = true;
basicAuthFile = config.sops.secrets.mixcloud-htpasswd.path;
locations."/" = { locations."/" = {
alias = "/data/mixcloud/"; alias = "/data/mixcloud/";
basicAuthFile = config.sops.secrets.mixcloud-htpasswd.path;
extraConfig = '' extraConfig = ''
autoindex on; autoindex on;
autoindex_exact_size off; autoindex_exact_size off;
''; '';
}; };
locations."/api/" = {
alias = "/data/mixcloud/";
extraConfig = ''
autoindex on;
autoindex_format json;
'';
};
locations."/media/" = { locations."/media/" = {
alias = "/data/media/"; alias = "/data/media/";
basicAuthFile = config.sops.secrets.mixcloud-htpasswd.path;
extraConfig = '' extraConfig = ''
autoindex on; autoindex on;
autoindex_exact_size off; autoindex_exact_size off;

View File

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

View File

@@ -27,7 +27,7 @@
root = pkgs.clerie-keys; root = pkgs.clerie-keys;
}; };
locations."= /ssh/known_hosts" = { locations."= /ssh/known_hosts" = {
alias = pkgs.clerie-ssh-known-hosts + "/known_hosts"; alias = pkgs.writeText "known_hosts" (import ../../lib/ssh-known-hosts.nix);
extraConfig = '' extraConfig = ''
types { } types { }
default_type "text/plain; charset=utf-8"; default_type "text/plain; charset=utf-8";
@@ -53,6 +53,9 @@
''; '';
return = "200 ''"; return = "200 ''";
}; };
extraConfig = ''
access_log /var/log/nginx/clerie.de.log combined_anon;
'';
}; };
}; };
} }

View File

@@ -24,7 +24,6 @@
./public.nix ./public.nix
./radicale.nix ./radicale.nix
./reichartstrasse.nix ./reichartstrasse.nix
./traveldrafter.nix
./uptimestatus.nix ./uptimestatus.nix
./wetter.nix ./wetter.nix
]; ];
@@ -52,8 +51,6 @@
networking.firewall.allowedTCPPorts = [ 80 443 ]; networking.firewall.allowedTCPPorts = [ 80 443 ];
networking.firewall.extraCommands = builtins.readFile ./blocked-prefixes.txt;
services.postgresql = { services.postgresql = {
enable = true; enable = true;
package = pkgs.postgresql_16; package = pkgs.postgresql_16;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -3,13 +3,18 @@
with lib; with lib;
let let
cfg = config.services.bijwerken; cfg = config.clerie.system-auto-upgrade;
in in
{ {
options = { options = {
services.bijwerken = { clerie.system-auto-upgrade = {
enable = mkEnableOption "Automatic system upgrades"; enable = mkEnableOption "clerie system upgrade";
allowReboot = mkOption {
type = types.bool;
default = false;
description = "Monitor NixOS";
};
autoUpgrade = mkOption { autoUpgrade = mkOption {
type = types.bool; type = types.bool;
default = false; default = false;
@@ -20,15 +25,10 @@ in
default = null; default = null;
description = "Systemd time string for starting the unit"; description = "Systemd time string for starting the unit";
}; };
nodeExporterTextfilePath = mkOption {
type = with types; nullOr str;
default = null;
description = "Path to node exporter textfile for putting metrics";
};
}; };
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
systemd.services.bijwerken-system-upgrade = { systemd.services.clerie-system-auto-upgrade = {
requires = [ "network-online.target" ]; requires = [ "network-online.target" ];
after = [ "network-online.target" ]; after = [ "network-online.target" ];
@@ -38,10 +38,10 @@ in
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";
ExecStart = (getExe pkgs.bijwerken-system-upgrade) + " --no-confirm${optionalString (cfg.nodeExporterTextfilePath != null) " --node-exporter-metrics-path ${cfg.nodeExporterTextfilePath}"}"; 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.bijwerken-system-upgrade = mkIf cfg.autoUpgrade { systemd.timers.clerie-system-auto-upgrade = mkIf cfg.autoUpgrade {
wantedBy = [ "timers.target" ]; wantedBy = [ "timers.target" ];
timerConfig = { timerConfig = {
OnCalendar = if cfg.startAt == null then "*-*-* 05:37:00" else cfg.startAt; OnCalendar = if cfg.startAt == null then "*-*-* 05:37:00" else cfg.startAt;
@@ -51,7 +51,7 @@ in
after = [ "network-online.target" ]; after = [ "network-online.target" ];
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
bijwerken-system-upgrade clerie-system-upgrade
]; ];
}; };
} }

View File

@@ -5,9 +5,9 @@
./policyrouting ./policyrouting
./akne ./akne
./backup ./backup
./bijwerken
./clerie-firewall ./clerie-firewall
./clerie-gc-dir ./clerie-gc-dir
./clerie-system-upgrade
./dhcpcd-prefixdelegation ./dhcpcd-prefixdelegation
./minecraft-server ./minecraft-server
./monitoring ./monitoring

View File

@@ -75,8 +75,6 @@ in
systemd.services."prometheus-node-exporter".serviceConfig.RestrictAddressFamilies = [ "AF_NETLINK" ]; systemd.services."prometheus-node-exporter".serviceConfig.RestrictAddressFamilies = [ "AF_NETLINK" ];
services.bijwerken.nodeExporterTextfilePath = "/var/lib/prometheus-node-exporter/textfiles/bijwerken-system-upgrade.prom";
services.prometheus.exporters.bird = mkIf cfg.bird { services.prometheus.exporters.bird = mkIf cfg.bird {
enable = true; enable = true;
}; };
@@ -104,33 +102,6 @@ in
listen = "[::]:9152"; listen = "[::]:9152";
}; };
services.prometheus.exporters.nginxlog = mkIf config.services.nginx.enable {
enable = true;
settings = {
namespaces = [
{
name = "nginxlog";
format = ''$host: $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$server_name" rt="$request_time" uct="$upstream_connect_time" uht="$upstream_header_time" urt="$upstream_response_time"'';
source = {
files = [
"/var/log/nginx/access.log"
];
};
relabel_configs = [
{
target_label = "server_name";
from = "server_name";
}
];
}
];
};
};
systemd.services."prometheus-nginxlog-exporter".serviceConfig = {
SupplementaryGroups = "nginx";
};
networking.firewall.interfaces."wg-monitoring".allowedTCPPorts = [ networking.firewall.interfaces."wg-monitoring".allowedTCPPorts = [
9100 # node-exporter 9100 # node-exporter
9152 # nixos-exporter 9152 # nixos-exporter
@@ -138,8 +109,6 @@ in
9324 # bird-exporter 9324 # bird-exporter
] else []) ++ (if cfg.blackbox then [ ] else []) ++ (if cfg.blackbox then [
9115 # blackbox-exporter 9115 # blackbox-exporter
] else []) ++ (if config.services.prometheus.exporters.nginxlog.enable then [
config.services.prometheus.exporters.nginxlog.port
] else []); ] else []);
}; };
} }

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env bash
TARGETS="$(nix --extra-experimental-features "nix-command flakes" eval --raw ".#nixosConfigurations" --apply "nixosConfigurations: builtins.concatStringsSep \"\\n\" (builtins.attrValues (builtins.mapAttrs (name: host: host.config.networking.fqdn) nixosConfigurations))")"
pssh -h <(echo "${TARGETS}") -i -- sudo systemctl start bijwerken-system-upgrade.service --no-block

View File

@@ -1,10 +0,0 @@
{ pkgs, ... }:
pkgs.writeShellApplication {
name = "bijwerken-poke";
text = builtins.readFile ./bijwerken-poke.sh;
runtimeInputs = with pkgs; [
pssh
];
}

View File

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

View File

@@ -1,56 +0,0 @@
{
python3,
makeWrapper,
runCommand,
lib,
}:
{
name,
text,
runtimePackages ? ps: [],
pythonPackage ? python3,
runtimeInputs ? [],
meta ? {},
passthru ? {},
derivationArgs ? {},
}:
let
pythonWithPackages = pythonPackage.withPackages runtimePackages;
in runCommand name ({
passAsFile = [ "text" ] ++ (derivationArgs.passAsFile or []);
meta = {
mainProgram = name;
} // meta // (derivationArgs.meta or {});
passthru = passthru // (derivationArgs.passthru or {});
nativeBuildInputs = [ makeWrapper ] ++ (derivationArgs.nativeBuildInputs or []);
executable = true;
destination = "/bin/${name}";
allowSubstitutes = true;
preferLocalBuild = false;
text = ''
#!${lib.getExe pythonWithPackages}
${text}
'';
} // (
builtins.removeAttrs derivationArgs [ "passAsFile" "meta" "passthru" "nativeBuildInputs" ]
))
''
mkdir -p $out/bin
target=$out/bin/${lib.escapeShellArg name}
cp "$textPath" "$target"
chmod +x "$target"
wrapProgram "$target" --prefix PATH : "${lib.makeBinPath runtimeInputs}"
''

View File

@@ -1,8 +1,8 @@
{ pkgs, ... }: { pkgs, ... }:
pkgs.writeShellApplication { pkgs.writeShellApplication {
name = "bijwerken-system-upgrade"; name = "clerie-system-upgrade";
text = builtins.readFile ./bijwerken-system-upgrade.sh; text = builtins.readFile ./clerie-system-upgrade.sh;
runtimeInputs = with pkgs; [ runtimeInputs = with pkgs; [
curl curl
jq jq

View File

@@ -2,11 +2,16 @@
set -euo pipefail set -euo pipefail
ALLOW_REBOOT=
NO_CONFIRM= NO_CONFIRM=
NODE_EXPORTER_METRICS_PATH= NODE_EXPORTER_METRICS_PATH=
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case $1 in case $1 in
--allow-reboot)
ALLOW_REBOOT=1
shift
;;
--no-confirm) --no-confirm)
NO_CONFIRM=1 NO_CONFIRM=1
shift shift
@@ -40,7 +45,7 @@ if [[ -z $NO_CONFIRM ]]; then
fi fi
echo "Download ${STORE_PATH}" echo "Download ${STORE_PATH}"
nix copy --to daemon "${STORE_PATH}" nix copy --from "https://nix-cache.clerie.de" "${STORE_PATH}"
echo "Add to system profile" echo "Add to system profile"
nix-env -p "/nix/var/nix/profiles/system" --set "${STORE_PATH}" nix-env -p "/nix/var/nix/profiles/system" --set "${STORE_PATH}"
@@ -50,7 +55,7 @@ echo "Set as boot target"
if [[ -n "$NODE_EXPORTER_METRICS_PATH" ]]; then if [[ -n "$NODE_EXPORTER_METRICS_PATH" ]]; then
echo "Write monitoring check data" echo "Write monitoring check data"
echo "bijwerken_system_upgrade_last_check $(date +%s)" > "$NODE_EXPORTER_METRICS_PATH" echo "clerie_system_upgrade_last_check $(date +%s)" > "$NODE_EXPORTER_METRICS_PATH"
fi fi
BOOTED_SYSTEM_KERNEL="$(readlink /run/booted-system/{initrd,kernel,kernel-modules})" BOOTED_SYSTEM_KERNEL="$(readlink /run/booted-system/{initrd,kernel,kernel-modules})"
@@ -58,8 +63,13 @@ ACTIVATING_SYSTEM_KERNEL="$(readlink /nix/var/nix/profiles/system/{initrd,kernel
if [[ "$BOOTED_SYSTEM_KERNEL" != "$ACTIVATING_SYSTEM_KERNEL" ]]; then if [[ "$BOOTED_SYSTEM_KERNEL" != "$ACTIVATING_SYSTEM_KERNEL" ]]; then
echo "Reboot is required" echo "Reboot is required"
echo "Rebooting system now" if [[ -n "$ALLOW_REBOOT" ]]; then
shutdown -r +1 "System update requires reboot" echo "Rebooting system now"
shutdown -r +1 "System update requires reboot"
else
echo "Automatic reboot not allowed (maybe use --allow-reboot next time)"
echo "The system upgrade is staged, please reboot manually soon"
fi
else else
echo "No reboot is required" echo "No reboot is required"
echo "Activating system now" echo "Activating system now"

View File

@@ -1,109 +0,0 @@
#!/usr/bin/env python
import argparse
from pathlib import Path
from progress.bar import Bar
import shutil
import subprocess
def files_and_dirs_for_directory(path):
filepaths = []
dirpaths = []
for dirpath, dirnames, filenames in path.walk():
dirpaths.append(dirpath)
for filename in filenames:
filepath = dirpath / filename
filepaths.append(filepath)
return set(filepaths), set(dirpaths)
def make_paths_relative(paths, relative_to_path):
return set(path.relative_to(relative_to_path) for path in paths)
def replace_suffix(path, suffix):
return path.with_name(path.stem + suffix)
def convert_filepath(path):
if path.suffix == ".flac":
return replace_suffix(path, ".mp3")
return path
def ffmpeg_flac_to_mp3(in_path, out_path):
print("")
subprocess.run(["ffmpeg", "-hide_banner", "-loglevel", "warning", "-stats", "-i", in_path, "-ab", "320k", "-map_metadata", "0", "-id3v2_version", "3", out_path], check=True)
print("")
if __name__ == "__main__":
parser = argparse.ArgumentParser(prog="convert-flac-dir-to-mp3")
parser.add_argument("from_dir", type=Path)
parser.add_argument("to_dir", type=Path)
args = parser.parse_args()
from_path = args.from_dir.absolute()
to_path = args.to_dir.absolute()
if not from_path.exists():
raise Exception("from_path does not exist")
if not to_path.exists():
raise Exception("to_path does not exist")
if not from_path.is_dir():
raise Exception("from_path is not a directory")
if not to_path.is_dir():
raise Exception("to_path is not a directory")
print(f"Converting {from_path} to {to_path}")
from_filepaths, from_dirpaths = files_and_dirs_for_directory(from_path)
to_filepaths, to_dirpaths = files_and_dirs_for_directory(to_path)
relative_from_filepaths = make_paths_relative(from_filepaths, from_path)
relative_to_filepaths = make_paths_relative(to_filepaths, to_path)
converted_from_filepaths = set(convert_filepath(filepath) for filepath in relative_from_filepaths)
filepaths_missing_in_to_path = converted_from_filepaths - relative_to_filepaths
relative_from_dirpaths = make_paths_relative(from_dirpaths, from_path)
relative_to_dirpaths = make_paths_relative(to_dirpaths, to_path)
dirpaths_missing_in_to_path = relative_from_dirpaths - relative_to_dirpaths
print(f"Missing {len(filepaths_missing_in_to_path)} files and {len(dirpaths_missing_in_to_path)} directories")
if len(dirpaths_missing_in_to_path) > 0:
for dirpath in Bar("Creating directories").iter(dirpaths_missing_in_to_path):
(to_path / dirpath).mkdir(parents=True, exist_ok=True)
if len(filepaths_missing_in_to_path) > 0:
for filepath in Bar("Creating files").iter(filepaths_missing_in_to_path):
if filepath in relative_from_filepaths:
# Just copy the file
shutil.copy(from_path / filepath, to_path / filepath)
elif filepath.suffix == ".mp3" and replace_suffix(filepath, ".flac") in relative_from_filepaths:
# Convert from flac
print("")
print(f"Converting {to_path / filepath}")
# Tempfile for ffmpeg
tmpfilepath = filepath.with_name(".~" + filepath.name)
(to_path / tmpfilepath).unlink(missing_ok=True)
print(f"Using tempfile for ffmpeg {to_path / tmpfilepath}")
# Convert
ffmpeg_flac_to_mp3(from_path / replace_suffix(filepath, ".flac"), to_path / tmpfilepath)
# Rename tempfile
(to_path / tmpfilepath).rename(to_path / filepath)
else:
raise Exception("Unable to figure out how to get {to_path / filepath} from {from_path}")

View File

@@ -1,8 +0,0 @@
{ pkgs, ... }:
pkgs.clerie-build-support.writePythonScript {
name = "convert-flac-dir-to-mp3";
runtimePackages = ps: with ps; [ progress ];
runtimeInputs = [ pkgs.ffmpeg-headless ];
text = builtins.readFile ./convert-flac-dir-to-mp3.py;
}

View File

@@ -1,16 +0,0 @@
#!/usr/bin/env bash
curl -w "Request to %{url}
time_namelookup: %{time_namelookup}s
time_connect: %{time_connect}s
time_appconnect: %{time_appconnect}s
time_pretransfer: %{time_pretransfer}s
time_starttransfer: %{time_starttransfer}s
time_posttransfer: %{time_posttransfer}s
time_queue: %{time_queue}s
time_redirect: %{time_redirect}s
time_starttransfer: %{time_starttransfer}s
time_total: %{time_total}s
" -o /dev/null -s "$@"

View File

@@ -1,12 +0,0 @@
{
curl,
writeShellApplication,
}:
writeShellApplication {
name = "curl-timings";
text = builtins.readFile ./curl-timings.sh;
runtimeInputs = [
curl
];
}

View File

@@ -1,12 +0,0 @@
{ pkgs, ... }:
pkgs.writeShellApplication {
name = "ds-lite-dhcpcd-hook";
text = builtins.readFile ./ds-lite-dhcpcd-hook.sh;
runtimeInputs = with pkgs; [
iproute2
jq
dig
gawk
];
}

View File

@@ -1,102 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
# Setting up required environment variables
# shellcheck disable=SC2154
WAN_INTERFACE_NAME="${DS_LITE_WAN_INTERFACE_NAME}"
# shellcheck disable=SC2154
TUNNEL_INTERFACE_NAME="${DS_LITE_TUNNEL_INTERFACE_NAME}"
log_dhcp () {
echo "<ds-lite-dhcpcd-hook> ${WAN_INTERFACE_NAME}: $1"
}
log_tunnel () {
echo "<ds-lite-dhcpcd-hook> ${WAN_INTERFACE_NAME} (${TUNNEL_INTERFACE_NAME}): $1"
}
# Check if the event calling this hook is for the wan interface
# exit immediately if not
# shellcheck disable=SC2154
if [[ "$interface" != "$WAN_INTERFACE_NAME" ]]; then
exit
fi
# Make sure the event calling this hook carries the environment variable
# in question. The environment variable is not provided with every call
# and we just want to exit if it is not provided
# shellcheck disable=SC2154
if [[ ! -v new_dhcp6_aftr_name ]]; then
# Variable is not set
exit
fi
# shellcheck disable=SC2154
if [[ -z "${new_dhcp6_aftr_name}" ]]; then
# Variable is empty, can't do anything
exit
fi
# shellcheck disable=SC2154
AFTR_NAME="$new_dhcp6_aftr_name"
log_dhcp "Received new AFTR_NAME ${AFTR_NAME}"
# Make sure we have a nameserver to resolve aftr name against
# shellcheck disable=SC2154
if [[ ! -v new_dhcp6_name_servers ]]; then
# Variable is not set
exit
fi
# shellcheck disable=SC2154
if [[ -z "${new_dhcp6_name_servers}" ]]; then
# Variable is empty, can't do anything
exit
fi
# shellcheck disable=SC2154
NAME_SERVERS="$new_dhcp6_name_servers"
log_dhcp "Received new NAME_SERVERS ${NAME_SERVERS}"
# Select first nameserver
NAME_SERVER="$(echo "${NAME_SERVERS}" | awk '{print $1;}')"
log_dhcp "Selected NAME_SERVER ${NAME_SERVER}"
# Figure out a usable IPv6 address on the wan interface, to origin our DNS requests and tunnel
WAN_INTERFACE_ADDRESS="$(ip --json address show "${WAN_INTERFACE_NAME}" | jq -r '.[0].addr_info[] | select(.family == "inet6" and .scope == "global" and .mngtmpaddr == true) | .local')"
log_dhcp "Using WAN_INTERFACE_ADDRESS ${WAN_INTERFACE_ADDRESS}"
AFTR_ADDRESS="$(dig "@${NAME_SERVER}" -b "${WAN_INTERFACE_ADDRESS}" AAAA "${AFTR_NAME}" +short | head -1)"
log_dhcp "Resolved AFTR_NAME ${AFTR_NAME} to ${AFTR_ADDRESS}"
# Check if there is already a tunnel interface
if TUNNEL_INTERFACE_CONFIG="$(ip --json link show "${TUNNEL_INTERFACE_NAME}")"; then
TUNNEL_INTERFACE_OPERSTATE="$(echo "${TUNNEL_INTERFACE_CONFIG}" | jq -r '.[0].operstate')"
TUNNEL_INTERFACE_ORIGIN_ADDRESS="$(echo "${TUNNEL_INTERFACE_CONFIG}" | jq -r '.[0].address')"
TUNNEL_INTERFACE_REMOTE_ADDRESS="$(echo "${TUNNEL_INTERFACE_CONFIG}" | jq -r '.[0].broadcast')"
# Reconfigure tunnel interface, if not already in state we want
if [[ "${TUNNEL_INTERFACE_ORIGIN_ADDRESS}" != "${WAN_INTERFACE_ADDRESS}" || "${TUNNEL_INTERFACE_REMOTE_ADDRESS}" != "${AFTR_ADDRESS}" || "${TUNNEL_INTERFACE_OPERSTATE}" != "UNKNOWN" ]]; then
log_tunnel "Bad configuration, fixing tunnel parameter"
ip tunnel change "${TUNNEL_INTERFACE_NAME}" mode ipip6 local "${WAN_INTERFACE_ADDRESS}" remote "${AFTR_ADDRESS}"
ip link set "$TUNNEL_INTERFACE_NAME" up
else
log_tunnel "Tunnel already configured"
fi
else
log_tunnel "Setting up DS-Lite tunnel"
ip tunnel add "${TUNNEL_INTERFACE_NAME}" mode ipip6 local "${WAN_INTERFACE_ADDRESS}" remote "${AFTR_ADDRESS}"
ip link set "$TUNNEL_INTERFACE_NAME" up
fi
log_tunnel "Setting default route"
ip route replace default dev "${TUNNEL_INTERFACE_NAME}"
log_tunnel "Tunnel setup finished"

View File

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

View File

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

View File

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

View File

@@ -1,19 +0,0 @@
{
e2fsprogs,
gptfdisk,
jq,
parted,
writeShellApplication,
}:
writeShellApplication {
name = "grow-last-partition-and-filesystem";
text = builtins.readFile ./grow-last-partition-and-filesystem.sh;
runtimeInputs = [
e2fsprogs
gptfdisk
jq
parted
];
}

View File

@@ -1,32 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
if [[ $# -ne 1 ]]; then
echo "Pass device to grow as first argument:"
echo "grow-last-partition-and-filesystem DEVICE"
exit 1
fi
DEVICE="$1"
echo "Move GTP backup header to end of disk"
sgdisk "${DEVICE}" --move-second-header
PARTITIONDATA="$(parted --script --json --fix "${DEVICE}" print)"
PARTNUMBER="$(echo "${PARTITIONDATA}" | jq -r '.disk.partitions | last | .number')"
PARTNAME="$(echo "${PARTITIONDATA}" | jq -r '.disk.partitions | last | .name')"
echo "Growing partition ${DEVICE}${PARTNUMBER} (${PARTNAME})"
echo
parted "${DEVICE}" resizepart "${PARTNUMBER}" 100%
echo
echo "Resizing filesystem"
echo
resize2fs "${DEVICE}${PARTNUMBER}"
echo "Done."

View File

@@ -1,14 +0,0 @@
{
python3,
writeShellApplication,
}:
writeShellApplication {
name = "http.server";
text = ''
python3 -m http.server "$@"
'';
runtimeInputs = [
python3
];
}

View File

@@ -1,38 +1 @@
final: prev: { final: prev: builtins.mapAttrs (name: value: value final prev) (import ./pkgs.nix)
bijwerken-poke = final.callPackage ./bijwerken-poke {};
bijwerken-system-upgrade = final.callPackage ./bijwerken-system-upgrade {};
clerie-backup = final.callPackage ./clerie-backup {};
clerie-cleanup-branches = final.callPackage ./clerie-update-nixfiles/clerie-cleanup-branches.nix {};
clerie-keys = final.callPackage ./clerie-keys {};
clerie-ssh-known-hosts = final.callPackage ./clerie-ssh-known-hosts {};
clerie-system-remote-install = final.callPackage ./clerie-system-remote-install {};
clerie-merge-nixfiles-update = final.callPackage ./clerie-update-nixfiles/clerie-merge-nixfiles-update.nix {};
clerie-sops = final.callPackage ./clerie-sops/clerie-sops.nix {};
clerie-sops-config = final.callPackage ./clerie-sops/clerie-sops-config.nix {};
clerie-sops-edit = final.callPackage ./clerie-sops/clerie-sops-edit.nix {};
clerie-update-nixfiles = final.callPackage ./clerie-update-nixfiles/clerie-update-nixfiles.nix {};
chromium-incognito = final.callPackage ./chromium-incognito {};
convert-flac-dir-to-mp3 = final.callPackage ./convert-flac-dir-to-mp3 {};
curl-timings = final.callPackage ./curl-timings {};
ds-lite-dhcpcd-hook = final.callPackage ./ds-lite-dhcpcd-hook {};
factorio-launcher = final.callPackage ./factorio-launcher {};
feeds-dir = final.callPackage ./feeds-dir {};
generate-blocked-prefixes = final.callPackage ./generate-blocked-prefixes {};
git-checkout-github-pr = final.callPackage ./git-checkout-github-pr {};
git-diff-word = final.callPackage ./git-diff-word {};
git-pp = final.callPackage ./git-pp {};
git-show-link = final.callPackage ./git-show-link {};
grow-last-partition-and-filesystem = final.callPackage ./grow-last-partition-and-filesystem {};
"http.server" = final.callPackage ./http.server {};
nix-remove-result-links = final.callPackage ./nix-remove-result-links {};
nixfiles-auto-install = final.callPackage ./nixfiles/nixfiles-auto-install.nix {};
nixfiles-generate-config = final.callPackage ./nixfiles/nixfiles-generate-config.nix {};
nixfiles-generate-backup-secrets = final.callPackage ./nixfiles/nixfiles-generate-backup-secrets.nix {};
nixfiles-update-ssh-host-keys = final.callPackage ./nixfiles/nixfiles-update-ssh-host-keys.nix {};
pipewire-all-bluetooth = final.callPackage ./pipewire-all-bluetooth {};
print-afra = final.callPackage ./print-afra {};
run-with-docker-group = final.callPackage ./run-with-docker-group {};
ssh-gpg = final.callPackage ./ssh-gpg {};
update-from-hydra = final.callPackage ./update-from-hydra {};
uptimestatus = final.python3.pkgs.callPackage ./uptimestatus {};
}

View File

@@ -1,20 +0,0 @@
final: prev:
prev.dhcpcd.overrideAttrs (finalAttrs: prevAttrs: {
configureFlags = [
"--sysconfdir=/etc/ds-lite-dhcpcd"
"--localstatedir=/var"
"--disable-fork"
"--disable-privsep"
"--dbdir=/var/lib/ds-lite-dhcpcd"
"--rundir=/var/run/ds-lite-dhcpcd"
"--with-default-hostname=ds-lite"
"--disable-ipv4"
"--disable-arp"
"--disable-arpping"
"--disable-ipv4ll"
"--disable-ntp"
];
})

View File

@@ -1,5 +0,0 @@
final: prev: {
dino = import ./dino.nix final prev;
ds-lite-dhcpcd = import ./ds-lite-dhcpcd.nix final prev;
xmppc = import ./xmppc.nix final prev;
}

View File

@@ -1,29 +0,0 @@
context.modules = [
{ name = libpipewire-module-combine-stream
args = {
combine.mode = sink
node.name = "all-bluetooth"
node.description = "All Bluetooth devices"
combine.latency-compensate = false
combine.props = {
audio.position = [ FL FR ]
}
stream.props = {
}
stream.rules = [
{
matches = [
{
node.name = "~bluez_output.*"
media.class = "Audio/Sink"
}
]
actions = {
create-stream = {
}
}
}
]
}
}
]

View File

@@ -1,9 +0,0 @@
{
runCommand,
... }:
runCommand "pipewire-all-bluetooth" {} ''
mkdir -p $out/share/pipewire/pipewire.conf.d
cp ${./all-bluetooth.conf} $out/share/pipewire/pipewire.conf.d/all-bluetooth.conf
''

32
pkgs/pkgs.nix Normal file
View File

@@ -0,0 +1,32 @@
{
clerie-backup = final: prev: final.callPackage ./clerie-backup {};
clerie-cleanup-branches = final: prev: final.callPackage ./clerie-update-nixfiles/clerie-cleanup-branches.nix {};
clerie-keys = final: prev: final.callPackage ./clerie-keys {};
clerie-system-remote-install = final: prev: final.callPackage ./clerie-system-remote-install {};
clerie-system-upgrade = final: prev: final.callPackage ./clerie-system-upgrade/clerie-system-upgrade.nix {};
clerie-merge-nixfiles-update = final: prev: final.callPackage ./clerie-update-nixfiles/clerie-merge-nixfiles-update.nix {};
clerie-sops = final: prev: final.callPackage ./clerie-sops/clerie-sops.nix {};
clerie-sops-config = final: prev: final.callPackage ./clerie-sops/clerie-sops-config.nix {};
clerie-sops-edit = final: prev: final.callPackage ./clerie-sops/clerie-sops-edit.nix {};
clerie-update-nixfiles = final: prev: final.callPackage ./clerie-update-nixfiles/clerie-update-nixfiles.nix {};
chromium-incognito = final: prev: final.callPackage ./chromium-incognito {};
factorio-launcher = final: prev: final.callPackage ./factorio-launcher {};
feeds-dir = final: prev: final.callPackage ./feeds-dir {};
git-checkout-github-pr = final: prev: final.callPackage ./git-checkout-github-pr {};
git-diff-word = final: prev: final.callPackage ./git-diff-word {};
git-pp = final: prev: final.callPackage ./git-pp {};
git-show-link = final: prev: final.callPackage ./git-show-link {};
nix-remove-result-links = final: prev: final.callPackage ./nix-remove-result-links {};
nixfiles-auto-install = final: prev: final.callPackage ./nixfiles/nixfiles-auto-install.nix {};
nixfiles-generate-config = final: prev: final.callPackage ./nixfiles/nixfiles-generate-config.nix {};
nixfiles-generate-backup-secrets = final: prev: final.callPackage ./nixfiles/nixfiles-generate-backup-secrets.nix {};
nixfiles-update-ssh-host-keys = final: prev: final.callPackage ./nixfiles/nixfiles-update-ssh-host-keys.nix {};
print-afra = final: prev: final.callPackage ./print-afra {};
run-with-docker-group = final: prev: final.callPackage ./run-with-docker-group {};
ssh-gpg = final: prev: final.callPackage ./ssh-gpg {};
update-from-hydra = final: prev: final.callPackage ./update-from-hydra {};
uptimestatus = final: prev: final.python3.pkgs.callPackage ./uptimestatus {};
dino = final: prev: import ./overrides/dino.nix final prev;
xmppc = final: prev: import ./overrides/xmppc.nix final prev;
}

View File

@@ -4,7 +4,6 @@
flask, flask,
requests, requests,
python, python,
setuptools,
}: }:
let let
@@ -20,10 +19,6 @@ let
in buildPythonPackage rec { in buildPythonPackage rec {
inherit src pname version; inherit src pname version;
pyproject = true;
build-system = [ setuptools ];
propagatedBuildInputs = [ propagatedBuildInputs = [
flask flask
requests requests

View File

@@ -1,88 +0,0 @@
{ lib, pkgs, config, ... }:
with lib;
let
cfg = config.profiles.clerie.common-nix;
in {
options.profiles.clerie.common-nix = {
enable = mkEnableOption "Common nix config";
useClerieNixCache = (mkEnableOption "Use nix cache from clerie") // {
default = true;
};
};
config = mkIf config.profiles.clerie.common-nix.enable {
clerie.nixfiles.enable = true;
services.bijwerken.enable = true;
nix.settings = {
trusted-users = [ "@wheel" ];
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 = if cfg.useClerieNixCache then [
"https://nix-cache.clerie.de"
] else [];
trusted-public-keys = if cfg.useClerieNixCache then [
"nix-cache.clerie.de:bAt1GJTS9BOTcXFWj3nURrSlcjqikCev9yDvqArMP5g="
] else [];
};
# Pin current nixpkgs channel and flake registry to the nixpkgs version
# the host got build with
nix.nixPath = lib.mkForce [ "nixpkgs=${lib.cleanSource pkgs.path}" ];
nix.registry = {
"nixpkgs" = lib.mkForce {
from = {
type = "indirect";
id = "nixpkgs";
};
to = {
type = "path";
path = lib.cleanSource pkgs.path;
};
exact = true;
};
"templates" = {
from = {
type = "indirect";
id = "templates";
};
to = {
type = "git";
url = "https://git.clerie.de/clerie/flake-templates.git";
};
};
};
documentation.doc.enable = false;
environment.systemPackages = with pkgs; [
nix-remove-result-links
];
};
}

View File

@@ -40,12 +40,7 @@ in {
log_format vcombined_anon '$host: $remote_addr_anon - $remote_user [$time_local] ' log_format vcombined_anon '$host: $remote_addr_anon - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent ' '"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"'; '"$http_referer" "$http_user_agent"';
log_format vcombined_anon_monitoring '$host: $remote_addr_anon - $remote_user [$time_local] ' access_log /var/log/nginx/access.log vcombined_anon;
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$server_name" '
'rt="$request_time" uct="$upstream_connect_time" uht="$upstream_header_time" urt="$upstream_response_time"';
access_log /var/log/nginx/access.log vcombined_anon_monitoring;
''; '';
virtualHosts = mkIf cfg.httpDefaultVirtualHost { virtualHosts = mkIf cfg.httpDefaultVirtualHost {

View File

@@ -13,7 +13,6 @@ with lib;
profiles.clerie.common-dns.enable = mkDefault true; profiles.clerie.common-dns.enable = mkDefault true;
profiles.clerie.common-networking.enable = mkDefault true; profiles.clerie.common-networking.enable = mkDefault true;
profiles.clerie.common-nix.enable = mkDefault true;
profiles.clerie.common-webserver.enable = mkDefault true; profiles.clerie.common-webserver.enable = mkDefault true;

View File

@@ -6,15 +6,11 @@
./common ./common
./common-dns ./common-dns
./common-networking ./common-networking
./common-nix
./common-webserver ./common-webserver
./cybercluster-vm ./cybercluster-vm
./desktop
./dn42-router ./dn42-router
./ds-lite
./fem-net ./fem-net
./firefox ./firefox
./gpg-ssh
./hetzner-cloud ./hetzner-cloud
./hydra-build-machine ./hydra-build-machine
./mercury-vm ./mercury-vm

View File

@@ -1,31 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
{
config = mkIf config.profiles.clerie.desktop.enable {
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse = {
enable = true;
};
configPackages = [
pkgs.pipewire-all-bluetooth
];
};
environment.systemPackages = with pkgs; [
helvum # pipewire routing gui
];
};
}

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