summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_sources/generated.json46
-rw-r--r--_sources/generated.nix32
-rw-r--r--accounts/gkleen@sif/systemd.nix2
-rw-r--r--flake.lock48
-rw-r--r--flake.nix21
-rw-r--r--hosts/sif/default.nix18
-rw-r--r--hosts/surtr/vpn/default.nix4
-rw-r--r--hosts/vidhar/borg/default.nix6
-rw-r--r--hosts/vidhar/network/dhcp/default.nix58
-rw-r--r--hosts/vidhar/network/dsl.nix8
-rw-r--r--hosts/vidhar/prometheus/default.nix7
-rw-r--r--installer-profiles/cd-dvd.nix7
-rw-r--r--installer-profiles/netboot.nix7
-rw-r--r--installer-profiles/nfsroot.nix95
-rw-r--r--installer/default.nix2
-rw-r--r--modules/netns.nix14
-rw-r--r--modules/zfssnap/default.nix2
-rw-r--r--nvfetcher.toml4
-rw-r--r--overlays/fast-cli.nix34
-rw-r--r--overlays/postfix-mta-sts-resolver.nix1
-rw-r--r--overlays/urxvt/52-osc.pl41
-rw-r--r--overlays/urxvt/default.nix21
-rw-r--r--overlays/worktime/default.nix2
-rw-r--r--shell.nix10
-rw-r--r--system-profiles/build-server/default.nix14
-rw-r--r--system-profiles/openssh/default.nix2
-rw-r--r--user-profiles/feeds/module.nix2
-rw-r--r--user-profiles/mpv/default.nix2
-rw-r--r--user-profiles/utils.nix2
29 files changed, 274 insertions, 238 deletions
diff --git a/_sources/generated.json b/_sources/generated.json
index dcbde8b1..3f08cb6a 100644
--- a/_sources/generated.json
+++ b/_sources/generated.json
@@ -1,6 +1,7 @@
1{ 1{
2 "afew": { 2 "afew": {
3 "cargoLocks": null, 3 "cargoLocks": null,
4 "date": "2021-05-30",
4 "extract": null, 5 "extract": null,
5 "name": "afew", 6 "name": "afew",
6 "passthru": null, 7 "passthru": null,
@@ -20,6 +21,7 @@
20 }, 21 },
21 "emacs-scratch_el": { 22 "emacs-scratch_el": {
22 "cargoLocks": null, 23 "cargoLocks": null,
24 "date": "2015-09-10",
23 "extract": null, 25 "extract": null,
24 "name": "emacs-scratch_el", 26 "name": "emacs-scratch_el",
25 "passthru": null, 27 "passthru": null,
@@ -37,27 +39,9 @@
37 }, 39 },
38 "version": "0077334cc299aa7885f804d88f52cdb1b35caf71" 40 "version": "0077334cc299aa7885f804d88f52cdb1b35caf71"
39 }, 41 },
40 "fast-cli": {
41 "cargoLocks": null,
42 "extract": null,
43 "name": "fast-cli",
44 "passthru": null,
45 "pinned": false,
46 "src": {
47 "deepClone": false,
48 "fetchSubmodules": false,
49 "leaveDotGit": false,
50 "name": null,
51 "owner": "gesquive",
52 "repo": "fast-cli",
53 "rev": "v0.2.10",
54 "sha256": "sha256-j7/3Llc3jTeJGpOH3Aexm9qcNscuk0mbi4ZCCyzC3+s=",
55 "type": "github"
56 },
57 "version": "v0.2.10"
58 },
59 "lesspipe": { 42 "lesspipe": {
60 "cargoLocks": null, 43 "cargoLocks": null,
44 "date": null,
61 "extract": null, 45 "extract": null,
62 "name": "lesspipe", 46 "name": "lesspipe",
63 "passthru": null, 47 "passthru": null,
@@ -72,6 +56,7 @@
72 }, 56 },
73 "mpv-autosave": { 57 "mpv-autosave": {
74 "cargoLocks": null, 58 "cargoLocks": null,
59 "date": "2020-10-22",
75 "extract": null, 60 "extract": null,
76 "name": "mpv-autosave", 61 "name": "mpv-autosave",
77 "passthru": null, 62 "passthru": null,
@@ -90,6 +75,7 @@
90 }, 75 },
91 "mpv-chapterskip": { 76 "mpv-chapterskip": {
92 "cargoLocks": null, 77 "cargoLocks": null,
78 "date": "2022-09-08",
93 "extract": null, 79 "extract": null,
94 "name": "mpv-chapterskip", 80 "name": "mpv-chapterskip",
95 "passthru": null, 81 "passthru": null,
@@ -109,6 +95,7 @@
109 }, 95 },
110 "mpv-createchapter": { 96 "mpv-createchapter": {
111 "cargoLocks": null, 97 "cargoLocks": null,
98 "date": "2020-09-05",
112 "extract": null, 99 "extract": null,
113 "name": "mpv-createchapter", 100 "name": "mpv-createchapter",
114 "passthru": null, 101 "passthru": null,
@@ -128,6 +115,7 @@
128 }, 115 },
129 "mpv-mpris": { 116 "mpv-mpris": {
130 "cargoLocks": null, 117 "cargoLocks": null,
118 "date": null,
131 "extract": null, 119 "extract": null,
132 "name": "mpv-mpris", 120 "name": "mpv-mpris",
133 "passthru": null, 121 "passthru": null,
@@ -147,6 +135,7 @@
147 }, 135 },
148 "mpv-reload": { 136 "mpv-reload": {
149 "cargoLocks": null, 137 "cargoLocks": null,
138 "date": "2022-01-27",
150 "extract": null, 139 "extract": null,
151 "name": "mpv-reload", 140 "name": "mpv-reload",
152 "passthru": null, 141 "passthru": null,
@@ -166,6 +155,7 @@
166 }, 155 },
167 "postfix-mta-sts-resolver": { 156 "postfix-mta-sts-resolver": {
168 "cargoLocks": null, 157 "cargoLocks": null,
158 "date": null,
169 "extract": null, 159 "extract": null,
170 "name": "postfix-mta-sts-resolver", 160 "name": "postfix-mta-sts-resolver",
171 "passthru": null, 161 "passthru": null,
@@ -180,6 +170,7 @@
180 }, 170 },
181 "postfwd": { 171 "postfwd": {
182 "cargoLocks": null, 172 "cargoLocks": null,
173 "date": null,
183 "extract": null, 174 "extract": null,
184 "name": "postfwd", 175 "name": "postfwd",
185 "passthru": null, 176 "passthru": null,
@@ -194,6 +185,7 @@
194 }, 185 },
195 "psql-versioning": { 186 "psql-versioning": {
196 "cargoLocks": null, 187 "cargoLocks": null,
188 "date": "2020-02-18",
197 "extract": null, 189 "extract": null,
198 "name": "psql-versioning", 190 "name": "psql-versioning",
199 "passthru": null, 191 "passthru": null,
@@ -212,20 +204,22 @@
212 }, 204 },
213 "smartprom": { 205 "smartprom": {
214 "cargoLocks": null, 206 "cargoLocks": null,
207 "date": null,
215 "extract": null, 208 "extract": null,
216 "name": "smartprom", 209 "name": "smartprom",
217 "passthru": null, 210 "passthru": null,
218 "pinned": false, 211 "pinned": false,
219 "src": { 212 "src": {
220 "name": null, 213 "name": null,
221 "sha256": "sha256-VbpFvDBygJswUfmufVjo/xXxDDmXLq/0D9ln8u+139E=", 214 "sha256": "sha256-l2Mg/WQZ34a6SEcftIroZglgMS6faNFTRnhPgyZNt+I=",
222 "type": "url", 215 "type": "url",
223 "url": "https://github.com/matusnovak/prometheus-smartctl/archive/refs/tags/v2.1.0.tar.gz" 216 "url": "https://github.com/matusnovak/prometheus-smartctl/archive/refs/tags/v2.2.0.tar.gz"
224 }, 217 },
225 "version": "2.1.0" 218 "version": "2.2.0"
226 }, 219 },
227 "uhk-agent": { 220 "uhk-agent": {
228 "cargoLocks": null, 221 "cargoLocks": null,
222 "date": null,
229 "extract": null, 223 "extract": null,
230 "name": "uhk-agent", 224 "name": "uhk-agent",
231 "passthru": null, 225 "passthru": null,
@@ -240,6 +234,7 @@
240 }, 234 },
241 "v4l2loopback": { 235 "v4l2loopback": {
242 "cargoLocks": null, 236 "cargoLocks": null,
237 "date": "2022-08-05",
243 "extract": null, 238 "extract": null,
244 "name": "v4l2loopback", 239 "name": "v4l2loopback",
245 "passthru": null, 240 "passthru": null,
@@ -259,6 +254,7 @@
259 }, 254 },
260 "xcompose": { 255 "xcompose": {
261 "cargoLocks": null, 256 "cargoLocks": null,
257 "date": "2022-09-14",
262 "extract": null, 258 "extract": null,
263 "name": "xcompose", 259 "name": "xcompose",
264 "passthru": null, 260 "passthru": null,
@@ -270,10 +266,10 @@
270 "name": null, 266 "name": null,
271 "owner": "kragen", 267 "owner": "kragen",
272 "repo": "xcompose", 268 "repo": "xcompose",
273 "rev": "150c47fabb9f45e81138f71347dc75f69b5dd987", 269 "rev": "cd8d3e622f547ec9f83d7f64f51d4a27ee812681",
274 "sha256": "sha256-XQ0ZuXGvDLz9fJ0yGHtgL4wl9Jx3SG30cGBM2b947iY=", 270 "sha256": "sha256-fkl2lDv/DdrqPjVsEUKSRD3BNGwTjTsA0ovI8akFI6U=",
275 "type": "github" 271 "type": "github"
276 }, 272 },
277 "version": "150c47fabb9f45e81138f71347dc75f69b5dd987" 273 "version": "cd8d3e622f547ec9f83d7f64f51d4a27ee812681"
278 } 274 }
279} \ No newline at end of file 275} \ No newline at end of file
diff --git a/_sources/generated.nix b/_sources/generated.nix
index a77cb5d8..e472a8e8 100644
--- a/_sources/generated.nix
+++ b/_sources/generated.nix
@@ -13,6 +13,7 @@
13 leaveDotGit = true; 13 leaveDotGit = true;
14 sha256 = "sha256-Ipt/EvksMFihSo6t2aoQkjuxAEYdY6P4f1fhLJuGl3g="; 14 sha256 = "sha256-Ipt/EvksMFihSo6t2aoQkjuxAEYdY6P4f1fhLJuGl3g=";
15 }); 15 });
16 date = "2021-05-30";
16 }; 17 };
17 emacs-scratch_el = { 18 emacs-scratch_el = {
18 pname = "emacs-scratch_el"; 19 pname = "emacs-scratch_el";
@@ -24,17 +25,7 @@
24 fetchSubmodules = false; 25 fetchSubmodules = false;
25 sha256 = "sha256-FUkKJ+1COGzgllzzv51yUIjMZI6slOFVExdwWl2ZEBA="; 26 sha256 = "sha256-FUkKJ+1COGzgllzzv51yUIjMZI6slOFVExdwWl2ZEBA=";
26 }); 27 });
27 }; 28 date = "2015-09-10";
28 fast-cli = {
29 pname = "fast-cli";
30 version = "v0.2.10";
31 src = fetchFromGitHub ({
32 owner = "gesquive";
33 repo = "fast-cli";
34 rev = "v0.2.10";
35 fetchSubmodules = false;
36 sha256 = "sha256-j7/3Llc3jTeJGpOH3Aexm9qcNscuk0mbi4ZCCyzC3+s=";
37 });
38 }; 29 };
39 lesspipe = { 30 lesspipe = {
40 pname = "lesspipe"; 31 pname = "lesspipe";
@@ -55,6 +46,7 @@
55 leaveDotGit = false; 46 leaveDotGit = false;
56 sha256 = "sha256-yxA8wgzdS7SyKLoNTWN87ShsBfPKUflbOu4Y0jS2G3I="; 47 sha256 = "sha256-yxA8wgzdS7SyKLoNTWN87ShsBfPKUflbOu4Y0jS2G3I=";
57 }; 48 };
49 date = "2020-10-22";
58 }; 50 };
59 mpv-chapterskip = { 51 mpv-chapterskip = {
60 pname = "mpv-chapterskip"; 52 pname = "mpv-chapterskip";
@@ -66,6 +58,7 @@
66 fetchSubmodules = false; 58 fetchSubmodules = false;
67 sha256 = "sha256-OTrLQE3rYvPQamEX23D6HttNjx3vafWdTMxTiWpDy90="; 59 sha256 = "sha256-OTrLQE3rYvPQamEX23D6HttNjx3vafWdTMxTiWpDy90=";
68 }); 60 });
61 date = "2022-09-08";
69 }; 62 };
70 mpv-createchapter = { 63 mpv-createchapter = {
71 pname = "mpv-createchapter"; 64 pname = "mpv-createchapter";
@@ -77,6 +70,7 @@
77 fetchSubmodules = false; 70 fetchSubmodules = false;
78 sha256 = "sha256-rPtG7mgf7tOY8Ih4Bz1tpd4MwXOxJmngjY+s70zWX+g="; 71 sha256 = "sha256-rPtG7mgf7tOY8Ih4Bz1tpd4MwXOxJmngjY+s70zWX+g=";
79 }); 72 });
73 date = "2020-09-05";
80 }; 74 };
81 mpv-mpris = { 75 mpv-mpris = {
82 pname = "mpv-mpris"; 76 pname = "mpv-mpris";
@@ -99,6 +93,7 @@
99 fetchSubmodules = false; 93 fetchSubmodules = false;
100 sha256 = "sha256-+DoKPIulQA3VSeXo8DjoxnPwDfcuCO5YHpXmB+M7EWk="; 94 sha256 = "sha256-+DoKPIulQA3VSeXo8DjoxnPwDfcuCO5YHpXmB+M7EWk=";
101 }); 95 });
96 date = "2022-01-27";
102 }; 97 };
103 postfix-mta-sts-resolver = { 98 postfix-mta-sts-resolver = {
104 pname = "postfix-mta-sts-resolver"; 99 pname = "postfix-mta-sts-resolver";
@@ -127,13 +122,14 @@
127 leaveDotGit = false; 122 leaveDotGit = false;
128 sha256 = "sha256-j+njRssJHTdNV3FbcA3MdUmzCaJxuYBrC0qwtK3HoyY="; 123 sha256 = "sha256-j+njRssJHTdNV3FbcA3MdUmzCaJxuYBrC0qwtK3HoyY=";
129 }; 124 };
125 date = "2020-02-18";
130 }; 126 };
131 smartprom = { 127 smartprom = {
132 pname = "smartprom"; 128 pname = "smartprom";
133 version = "2.1.0"; 129 version = "2.2.0";
134 src = fetchurl { 130 src = fetchurl {
135 url = "https://github.com/matusnovak/prometheus-smartctl/archive/refs/tags/v2.1.0.tar.gz"; 131 url = "https://github.com/matusnovak/prometheus-smartctl/archive/refs/tags/v2.2.0.tar.gz";
136 sha256 = "sha256-VbpFvDBygJswUfmufVjo/xXxDDmXLq/0D9ln8u+139E="; 132 sha256 = "sha256-l2Mg/WQZ34a6SEcftIroZglgMS6faNFTRnhPgyZNt+I=";
137 }; 133 };
138 }; 134 };
139 uhk-agent = { 135 uhk-agent = {
@@ -154,16 +150,18 @@
154 fetchSubmodules = true; 150 fetchSubmodules = true;
155 sha256 = "sha256-c6g63jW+a+v/TxLD9NnQGn/aUgivwVkxzP+hZ65w2/o="; 151 sha256 = "sha256-c6g63jW+a+v/TxLD9NnQGn/aUgivwVkxzP+hZ65w2/o=";
156 }); 152 });
153 date = "2022-08-05";
157 }; 154 };
158 xcompose = { 155 xcompose = {
159 pname = "xcompose"; 156 pname = "xcompose";
160 version = "150c47fabb9f45e81138f71347dc75f69b5dd987"; 157 version = "cd8d3e622f547ec9f83d7f64f51d4a27ee812681";
161 src = fetchFromGitHub ({ 158 src = fetchFromGitHub ({
162 owner = "kragen"; 159 owner = "kragen";
163 repo = "xcompose"; 160 repo = "xcompose";
164 rev = "150c47fabb9f45e81138f71347dc75f69b5dd987"; 161 rev = "cd8d3e622f547ec9f83d7f64f51d4a27ee812681";
165 fetchSubmodules = false; 162 fetchSubmodules = false;
166 sha256 = "sha256-XQ0ZuXGvDLz9fJ0yGHtgL4wl9Jx3SG30cGBM2b947iY="; 163 sha256 = "sha256-fkl2lDv/DdrqPjVsEUKSRD3BNGwTjTsA0ovI8akFI6U=";
167 }); 164 });
165 date = "2022-09-14";
168 }; 166 };
169} 167}
diff --git a/accounts/gkleen@sif/systemd.nix b/accounts/gkleen@sif/systemd.nix
index 819c1ff6..2fba0404 100644
--- a/accounts/gkleen@sif/systemd.nix
+++ b/accounts/gkleen@sif/systemd.nix
@@ -48,7 +48,7 @@ in {
48 Type = "oneshot"; 48 Type = "oneshot";
49 WorkingDirectory = "~"; 49 WorkingDirectory = "~";
50 ExecStart = toString (pkgs.writers.writePython3 "sync-keepass" { 50 ExecStart = toString (pkgs.writers.writePython3 "sync-keepass" {
51 libraries = with pkgs.python3Packages; [ dateutil ]; 51 libraries = with pkgs.python3Packages; [ python-dateutil ];
52 } '' 52 } ''
53 import json 53 import json
54 import subprocess 54 import subprocess
diff --git a/flake.lock b/flake.lock
index 7a0dd9c1..e76b90cb 100644
--- a/flake.lock
+++ b/flake.lock
@@ -59,11 +59,11 @@
59 }, 59 },
60 "flake-utils_2": { 60 "flake-utils_2": {
61 "locked": { 61 "locked": {
62 "lastModified": 1649676176, 62 "lastModified": 1659877975,
63 "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=", 63 "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
64 "owner": "numtide", 64 "owner": "numtide",
65 "repo": "flake-utils", 65 "repo": "flake-utils",
66 "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678", 66 "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
67 "type": "github" 67 "type": "github"
68 }, 68 },
69 "original": { 69 "original": {
@@ -80,11 +80,11 @@
80 "utils": "utils_2" 80 "utils": "utils_2"
81 }, 81 },
82 "locked": { 82 "locked": {
83 "lastModified": 1662759269, 83 "lastModified": 1664573442,
84 "narHash": "sha256-lt8bAfEZudCQb+MxoNKmenhMTXhu3RCCyLYxU9t5FFk=", 84 "narHash": "sha256-AovlSIuJfMf8n9QLNUVtsCul+NVHIoen7APH2fLls3k=",
85 "owner": "nix-community", 85 "owner": "nix-community",
86 "repo": "home-manager", 86 "repo": "home-manager",
87 "rev": "9f7fe353b613d0e45d7a5cdbd1f13c96c15803dd", 87 "rev": "a7f0cc2d7b271b4a5df9b9e351d556c172f7e903",
88 "type": "github" 88 "type": "github"
89 }, 89 },
90 "original": { 90 "original": {
@@ -121,11 +121,11 @@
121 }, 121 },
122 "nixpkgs": { 122 "nixpkgs": {
123 "locked": { 123 "locked": {
124 "lastModified": 1663071011, 124 "lastModified": 1664729105,
125 "narHash": "sha256-HjPb5iEwKwyNpnkn4Wo2hptAU5TAmfXd30mxemXPBtg=", 125 "narHash": "sha256-jriM5XldII1rs3v4EWPqHYZdmyRxqE6pRUlINxNwVE8=",
126 "owner": "NixOS", 126 "owner": "NixOS",
127 "repo": "nixpkgs", 127 "repo": "nixpkgs",
128 "rev": "0caf7675ec9b90ab9ad309d7a993a13798eeaa26", 128 "rev": "15ffd20e8c26a23e95293d15dcb25237aa44cb1c",
129 "type": "github" 129 "type": "github"
130 }, 130 },
131 "original": { 131 "original": {
@@ -137,11 +137,11 @@
137 }, 137 },
138 "nixpkgs-22_05": { 138 "nixpkgs-22_05": {
139 "locked": { 139 "locked": {
140 "lastModified": 1662864125, 140 "lastModified": 1664201777,
141 "narHash": "sha256-AtjyEFK7Zp9+hOOUNO1/YZRADV/wC94R3yeKN8saUK4=", 141 "narHash": "sha256-cUW9DqELUNi1jNMwVSbfq4yl5YGyOfeu+UHUUImbby0=",
142 "owner": "NixOS", 142 "owner": "NixOS",
143 "repo": "nixpkgs", 143 "repo": "nixpkgs",
144 "rev": "e6f053b6079c16e7df97531e3e0524ace1304d4d", 144 "rev": "00f877f4927b6f7d7b75731b5a1e2ae7324eaf14",
145 "type": "github" 145 "type": "github"
146 }, 146 },
147 "original": { 147 "original": {
@@ -162,11 +162,11 @@
162 ] 162 ]
163 }, 163 },
164 "locked": { 164 "locked": {
165 "lastModified": 1654975372, 165 "lastModified": 1664550666,
166 "narHash": "sha256-wkNZ16akgKViuZzE/IM+bux4uaJ04KIwUeexH8gBjgw=", 166 "narHash": "sha256-eXfMRd9uItEp3PsYI31FSVGPG9dVC6yF++65ZrGwW8A=",
167 "owner": "berberman", 167 "owner": "berberman",
168 "repo": "nvfetcher", 168 "repo": "nvfetcher",
169 "rev": "d4b237c10f14f72f8266b0f658faad822e491e55", 169 "rev": "9763ad40d59a044e90726653d9253efaeeb053b2",
170 "type": "github" 170 "type": "github"
171 }, 171 },
172 "original": { 172 "original": {
@@ -179,11 +179,11 @@
179 "pypi-deps-db": { 179 "pypi-deps-db": {
180 "flake": false, 180 "flake": false,
181 "locked": { 181 "locked": {
182 "lastModified": 1663059297, 182 "lastModified": 1664698977,
183 "narHash": "sha256-JaD4mhUOLJRNaepE50fOUfaSYRNwMhobyj8HGIxosiQ=", 183 "narHash": "sha256-Jqeg42mhfge4CJ/cHJTEpxY7RWAaVoxG7tgc9LTeVsQ=",
184 "owner": "DavHau", 184 "owner": "DavHau",
185 "repo": "pypi-deps-db", 185 "repo": "pypi-deps-db",
186 "rev": "8aa6ec60bf7ed12c1e1705a2f28be63d8eee4386", 186 "rev": "b4f1bfd3534e076a9a790df2c88226abc5bc8278",
187 "type": "github" 187 "type": "github"
188 }, 188 },
189 "original": { 189 "original": {
@@ -212,11 +212,11 @@
212 "nixpkgs-22_05": "nixpkgs-22_05" 212 "nixpkgs-22_05": "nixpkgs-22_05"
213 }, 213 },
214 "locked": { 214 "locked": {
215 "lastModified": 1662870301, 215 "lastModified": 1664204020,
216 "narHash": "sha256-O+ABD+WzEBLVH6FwxKCIpps0hsR6b5dpYe6fB3e3Ju8=", 216 "narHash": "sha256-LAey3hr8b9EAt3n304Wt9Vm4uQFd8pSRtLX8leuYFDs=",
217 "owner": "Mic92", 217 "owner": "Mic92",
218 "repo": "sops-nix", 218 "repo": "sops-nix",
219 "rev": "20929e1c5722a6db2f2dbe4cd36d4af0de0a9df0", 219 "rev": "912f9ff41fd9353dec1f783170793699789fe9aa",
220 "type": "github" 220 "type": "github"
221 }, 221 },
222 "original": { 222 "original": {
@@ -243,11 +243,11 @@
243 }, 243 },
244 "utils_2": { 244 "utils_2": {
245 "locked": { 245 "locked": {
246 "lastModified": 1653893745, 246 "lastModified": 1659877975,
247 "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", 247 "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
248 "owner": "numtide", 248 "owner": "numtide",
249 "repo": "flake-utils", 249 "repo": "flake-utils",
250 "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", 250 "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
251 "type": "github" 251 "type": "github"
252 }, 252 },
253 "original": { 253 "original": {
diff --git a/flake.nix b/flake.nix
index defcd864..43825563 100644
--- a/flake.nix
+++ b/flake.nix
@@ -157,7 +157,10 @@
157 157
158 # systemsSelector = "x86_64-linux"; 158 # systemsSelector = "x86_64-linux";
159 # systems = filter (system: !(isNull (builtins.match systemsSelector system))) nixpkgs.lib.systems.flakeExposed; 159 # systems = filter (system: !(isNull (builtins.match systemsSelector system))) nixpkgs.lib.systems.flakeExposed;
160 systems = nixpkgs.lib.systems.flakeExposed; 160 systems =
161 let
162 disallowedSystems = ["armv5tel-linux"];
163 in filter (system: !(elem system disallowedSystems)) nixpkgs.lib.systems.flakeExposed;
161 nixpkgsPackages = localSystem: (makeOverridable (import (nixpkgs.outPath + "/pkgs/top-level"))) { inherit localSystem; }; 164 nixpkgsPackages = localSystem: (makeOverridable (import (nixpkgs.outPath + "/pkgs/top-level"))) { inherit localSystem; };
162 forAllSystems = f: mapAttrs f (genAttrs systems nixpkgsPackages); 165 forAllSystems = f: mapAttrs f (genAttrs systems nixpkgsPackages);
163 forAllUsers = genAttrs (unique (map accountUserName (attrNames self.nixosModules.accounts))); 166 forAllUsers = genAttrs (unique (map accountUserName (attrNames self.nixosModules.accounts)));
@@ -167,20 +170,18 @@
167 170
168 overlayPaths = nixImport rec { dir = ./overlays; _import = (path: _name: dir + "/${path}"); }; 171 overlayPaths = nixImport rec { dir = ./overlays; _import = (path: _name: dir + "/${path}"); };
169 172
170 installerProfiles = system: 173 installerProfiles = nixImport rec {
171 let nixpkgs-path = nixpkgs.outPath; 174 dir = ./installer-profiles;
172 in mapAttrs (name: {path, output}: { profile = mkSystemProfile nixpkgs-path path "installer-${name}"; inherit output; }) 175 _import = path: name: mkSystemProfile dir path "installer-${name}";
173 { cd-dvd = { path = "nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"; output = out: out.config.system.build.isoImage; }; 176 };
174 netboot = { path = "nixos/modules/installer/netboot/netboot-minimal.nix"; output = out: (self.legacyPackages.${system}.symlinkJoin { name = "netboot"; paths = with out.config.system.build; [ netbootRamdisk kernel netbootIpxeScript ]; preferLocalBuild = true; }); };
175 };
176 177
177 installerConfig = if pathExists ./installer.nix then "installer.nix" else (if pathExists ./installer then "installer" else null); 178 installerConfig = if pathExists ./installer.nix then "installer.nix" else (if pathExists ./installer then "installer" else null);
178 mkInstallerForSystem = system: (lib.systems.elaborate system).isLinux; 179 mkInstallerForSystem = system: (lib.systems.elaborate system).isLinux;
179 installers = 180 installers =
180 let mkInstallers = system: mapAttrs (mkInstaller system) (installerProfiles system); 181 let mkInstallers = system: mapAttrs (mkInstaller system) installerProfiles;
181 mkInstaller = system: name: {profile, output}: let mkOutput = output; in rec { config = mkNixosConfiguration [profile { config = { nixpkgs.system = system; }; }] ./. installerConfig "installer"; output = mkOutput config; }; 182 mkInstaller = system: name: profile: mkNixosConfiguration [profile { config = { nixpkgs.system = system; }; }] ./. installerConfig "installer";
182 in forAllSystems (system: _systemPkgs: optionalAttrs (!(isNull installerConfig) && mkInstallerForSystem system) (mkInstallers system)); 183 in forAllSystems (system: _systemPkgs: optionalAttrs (!(isNull installerConfig) && mkInstallerForSystem system) (mkInstallers system));
183 installerNixosConfigurations = listToAttrs (concatLists (mapAttrsToList (system: mapAttrsToList (profile: { config, ... }: nameValuePair ("installer-${system}-${profile}") config)) installers)); 184 installerNixosConfigurations = listToAttrs (concatLists (mapAttrsToList (system: mapAttrsToList (profile: config: nameValuePair ("installer-${system}-${profile}") config)) installers));
184 185
185 # packages = forAllSystems (system: systemPkgs: composeManyExtensions (attrValues self.overlays) self.legacyPackages.${system} systemPkgs); 186 # packages = forAllSystems (system: systemPkgs: composeManyExtensions (attrValues self.overlays) self.legacyPackages.${system} systemPkgs);
186 187
diff --git a/hosts/sif/default.nix b/hosts/sif/default.nix
index b4713736..b38a387c 100644
--- a/hosts/sif/default.nix
+++ b/hosts/sif/default.nix
@@ -290,7 +290,7 @@ in {
290 290
291 services = { 291 services = {
292 udev.packages = with pkgs; [ uhk-agent ]; 292 udev.packages = with pkgs; [ uhk-agent ];
293 293
294 # tinc.yggdrasil.enable = true; 294 # tinc.yggdrasil.enable = true;
295 295
296 uucp = { 296 uucp = {
@@ -313,9 +313,9 @@ in {
313 fprintd.enable = true; 313 fprintd.enable = true;
314 314
315 blueman.enable = true; 315 blueman.enable = true;
316 316
317 colord.enable = true; 317 colord.enable = true;
318 318
319 vnstat.enable = true; 319 vnstat.enable = true;
320 320
321 upower.enable = true; 321 upower.enable = true;
@@ -468,8 +468,8 @@ in {
468 468
469 hardware = { 469 hardware = {
470 bluetooth = { 470 bluetooth = {
471 enable = true; 471 enable = true;
472 package = pkgs.bluezFull; 472 package = pkgs.bluez;
473 settings = { 473 settings = {
474 General = { 474 General = {
475 Enable = "Source,Sink,Media,Socket"; 475 Enable = "Source,Sink,Media,Socket";
@@ -510,12 +510,14 @@ in {
510 daemonCPUSchedPolicy = "idle"; 510 daemonCPUSchedPolicy = "idle";
511 daemonIOSchedClass = "idle"; 511 daemonIOSchedClass = "idle";
512 512
513 buildServers.vidhar = { 513 buildServers.vidhar = let
514 vidhar = flake.nixosConfigurations.vidhar;
515 in {
514 address = "vidhar.yggdrasil"; 516 address = "vidhar.yggdrasil";
515 systems = ["x86_64-linux" "i686-linux"]; 517 systems = [vidhar.config.nixpkgs.system] ++ vidhar.config.nix.settings.extra-platforms;
518 supportedFeatures = vidhar.config.nix.settings.system-features;
516 maxJobs = 12; 519 maxJobs = 12;
517 speedFactor = 4; 520 speedFactor = 4;
518 supportedFeatures = ["nixos-test" "benchmark" "big-parallel" "kvm"];
519 }; 521 };
520 }; 522 };
521 523
diff --git a/hosts/surtr/vpn/default.nix b/hosts/surtr/vpn/default.nix
index cad3b5b4..7f3065f7 100644
--- a/hosts/surtr/vpn/default.nix
+++ b/hosts/surtr/vpn/default.nix
@@ -143,9 +143,9 @@ in {
143 serviceConfig = { 143 serviceConfig = {
144 Type = "oneshot"; 144 Type = "oneshot";
145 RemainAfterExit = true; 145 RemainAfterExit = true;
146 ExecStop = "${pkgs.iproute}/bin/ip netns exec vpn ip link delete upstream"; 146 ExecStop = "${pkgs.iproute2}/bin/ip netns exec vpn ip link delete upstream";
147 }; 147 };
148 path = with pkgs; [ iproute procps ]; 148 path = with pkgs; [ iproute2 procps ];
149 script = '' 149 script = ''
150 ip netns exec vpn sysctl \ 150 ip netns exec vpn sysctl \
151 net.ipv6.conf.all.forwarding=1 \ 151 net.ipv6.conf.all.forwarding=1 \
diff --git a/hosts/vidhar/borg/default.nix b/hosts/vidhar/borg/default.nix
index 650c91ee..79c75c4d 100644
--- a/hosts/vidhar/borg/default.nix
+++ b/hosts/vidhar/borg/default.nix
@@ -57,7 +57,7 @@ let
57 57
58 buildInputs = with pkgs; [makeWrapper]; 58 buildInputs = with pkgs; [makeWrapper];
59 59
60 python = inpPython.withPackages (ps: with ps; [humanize tqdm dateutil xdg python-unshare pyprctl halo]); 60 python = inpPython.withPackages (ps: with ps; [humanize tqdm python-dateutil xdg python-unshare pyprctl halo]);
61 61
62 buildPhase = '' 62 buildPhase = ''
63 substitute $src copy \ 63 substitute $src copy \
@@ -74,7 +74,7 @@ let
74 copy 74 copy
75 75
76 wrapProgram $out/bin/copy \ 76 wrapProgram $out/bin/copy \
77 --prefix PATH : ${makeBinPath (with pkgs; [utillinux borgbackup])}:${config.security.wrapperDir} 77 --prefix PATH : ${makeBinPath (with pkgs; [util-linux borgbackup])}:${config.security.wrapperDir}
78 ''; 78 '';
79 }); 79 });
80 80
@@ -93,7 +93,7 @@ let
93 ''; 93 '';
94 postInstall = '' 94 postInstall = ''
95 wrapProgram $out/bin/borgsnap \ 95 wrapProgram $out/bin/borgsnap \
96 --prefix PATH : ${makeBinPath (with pkgs; [utillinux borgbackup])}:${config.security.wrapperDir} 96 --prefix PATH : ${makeBinPath (with pkgs; [util-linux borgbackup])}:${config.security.wrapperDir}
97 ''; 97 '';
98 98
99 providers.python-unshare = "nixpkgs"; 99 providers.python-unshare = "nixpkgs";
diff --git a/hosts/vidhar/network/dhcp/default.nix b/hosts/vidhar/network/dhcp/default.nix
index 067dc6d6..e14b15ac 100644
--- a/hosts/vidhar/network/dhcp/default.nix
+++ b/hosts/vidhar/network/dhcp/default.nix
@@ -1,4 +1,7 @@
1{ flake, config, pkgs, lib, ... }: 1{ flake, config, pkgs, lib, ... }:
2
3with lib;
4
2{ 5{
3 config = { 6 config = {
4 services.kea = { 7 services.kea = {
@@ -23,7 +26,7 @@
23 { name = "ipxe"; 26 { name = "ipxe";
24 test = "option[77].hex == 'iPXE'"; 27 test = "option[77].hex == 'iPXE'";
25 next-server = "10.141.0.1"; 28 next-server = "10.141.0.1";
26 boot-file-name = "netboot.ipxe"; 29 boot-file-name = "installer-x86_64-linux/netboot.ipxe";
27 only-if-required = true; 30 only-if-required = true;
28 } 31 }
29 { name = "uefi-64"; 32 { name = "uefi-64";
@@ -146,7 +149,7 @@
146 pools = [ { pool = "10.141.2.128 - 10.141.2.254"; } ]; 149 pools = [ { pool = "10.141.2.128 - 10.141.2.254"; } ];
147 reservations = []; 150 reservations = [];
148 } 151 }
149 ]; 152 ];
150 }; 153 };
151 }; 154 };
152 # dhcp6 = { 155 # dhcp6 = {
@@ -195,16 +198,16 @@
195 }; 198 };
196 199
197 systemd.services.kea-dhcp-ddns-server = { 200 systemd.services.kea-dhcp-ddns-server = {
198 preStart = let 201 preStart = let
199 configLines = [ 202 configLines = [
200 "<?include \"\${CREDENTIALS_DIRECTORY}/knot-tsig.json.frag\"?>" 203 "<?include \"\${CREDENTIALS_DIRECTORY}/knot-tsig.json.frag\"?>"
201 ] ++ lib.mapAttrsToList (k: v: 204 ] ++ mapAttrsToList (k: v:
202 "\"${k}\": ${builtins.toJSON v}" 205 "\"${k}\": ${builtins.toJSON v}"
203 ) config.services.kea.dhcp-ddns.settings; 206 ) config.services.kea.dhcp-ddns.settings;
204 207
205 config-template = pkgs.writeText "dhcp-ddns.conf" '' 208 config-template = pkgs.writeText "dhcp-ddns.conf" ''
206 {"DhcpDdns": { 209 {"DhcpDdns": {
207 ${lib.concatStringsSep ",\n " configLines} 210 ${concatStringsSep ",\n " configLines}
208 }} 211 }}
209 ''; 212 '';
210 in '' 213 in ''
@@ -212,8 +215,8 @@
212 ''; 215 '';
213 216
214 serviceConfig = { 217 serviceConfig = {
215 ExecStart = lib.mkForce '' 218 ExecStart = mkForce ''
216 ${pkgs.kea}/bin/kea-dhcp-ddns -c "''${RUNTIME_DIRECTORY}/dhcp-ddns.conf" ${lib.escapeShellArgs config.services.kea.dhcp-ddns.extraArgs} 219 ${pkgs.kea}/bin/kea-dhcp-ddns -c "''${RUNTIME_DIRECTORY}/dhcp-ddns.conf" ${escapeShellArgs config.services.kea.dhcp-ddns.extraArgs}
217 ''; 220 '';
218 LoadCredential = [ 221 LoadCredential = [
219 "knot-tsig.json.frag:${config.sops.secrets."kea-knot-tsig.json.frag".path}" 222 "knot-tsig.json.frag:${config.sops.secrets."kea-knot-tsig.json.frag".path}"
@@ -226,26 +229,53 @@
226 sopsFile = ./knot-tsig.json.frag; 229 sopsFile = ./knot-tsig.json.frag;
227 }; 230 };
228 231
229 systemd.services."installer-atftpd" = { 232 systemd.services."pxe-atftpd" = {
230 description = "TFTP Server for PXE Booting NixOS Installer"; 233 description = "TFTP Server for PXE Booting";
231 after = [ "network.target" ]; 234 after = [ "network.target" ];
232 wantedBy = [ "multi-user.target" ]; 235 wantedBy = [ "multi-user.target" ];
233 serviceConfig.ExecStart = let 236 serviceConfig.ExecStart = let
234 installerBuild = flake.nixosConfigurations.installer-x86_64-linux-netboot.config.system.build;
235 ipxe = pkgs.ipxe.override { 237 ipxe = pkgs.ipxe.override {
236 additionalTargets = { 238 additionalTargets = {
237 "bin-i386-efi/ipxe.efi" = "i386-ipxe.efi"; 239 "bin-i386-efi/ipxe.efi" = "i386-ipxe.efi";
238 }; 240 };
239 }; 241 };
240 tftpRoot = pkgs.runCommandLocal "installer-netboot" {} '' 242 tftpRoot = pkgs.runCommandLocal "netboot" {} ''
241 mkdir -p $out 243 mkdir -p $out
242 install -m 0444 -t $out \ 244 install -m 0444 -t $out \
243 ${installerBuild.netbootRamdisk}/initrd \
244 ${installerBuild.kernel}/bzImage \
245 ${installerBuild.netbootIpxeScript}/netboot.ipxe \
246 ${ipxe}/ipxe.efi ${ipxe}/i386-ipxe.efi ${ipxe}/undionly.kpxe 245 ${ipxe}/ipxe.efi ${ipxe}/i386-ipxe.efi ${ipxe}/undionly.kpxe
246
247 ${concatMapStringsSep "\n" (system:
248 let
249 installerBuild = (flake.nixosConfigurations.${"installer-${system}-nfsroot"}.extendModules {
250 modules = [
251 ({ ... }: { config.nfsroot.storeDevice = "vidhar:nix-store"; })
252 ];
253 }).config.system.build;
254 in ''
255 mkdir -p $out/installer-${system}
256 install -m 0444 -t $out/installer-${system} \
257 ${installerBuild.initialRamdisk}/initrd \
258 ${installerBuild.kernel}/bzImage \
259 ${installerBuild.netbootIpxeScript}/netboot.ipxe
260 ''
261 ) ["x86_64-linux"]}
247 ''; 262 '';
248 in "${pkgs.atftp}/sbin/atftpd --daemon --no-fork --bind-address=10.141.0.1 ${tftpRoot}"; 263 in "${pkgs.atftp}/sbin/atftpd --daemon --no-fork --bind-address=10.141.0.1 ${tftpRoot}";
249 }; 264 };
265
266 services.nfs.server = {
267 enable = true;
268 createMountPoints = true;
269 exports = ''
270 /export/nix-root 10.141.0.0/24(ro)
271 '';
272 };
273
274 fileSystems = {
275 "/export/nix-root" = {
276 device = "/nix/store";
277 options = [ "bind" ];
278 };
279 };
250 }; 280 };
251} 281}
diff --git a/hosts/vidhar/network/dsl.nix b/hosts/vidhar/network/dsl.nix
index a5f4daf2..461e74d2 100644
--- a/hosts/vidhar/network/dsl.nix
+++ b/hosts/vidhar/network/dsl.nix
@@ -11,7 +11,7 @@ in {
11 default = "dsl"; 11 default = "dsl";
12 }; 12 };
13 }; 13 };
14 14
15 config = { 15 config = {
16 networking.vlans = { 16 networking.vlans = {
17 telekom = { 17 telekom = {
@@ -19,7 +19,7 @@ in {
19 interface = "eno2"; 19 interface = "eno2";
20 }; 20 };
21 }; 21 };
22 22
23 services.pppd = { 23 services.pppd = {
24 enable = true; 24 enable = true;
25 peers.telekom.config = '' 25 peers.telekom.config = ''
@@ -40,7 +40,7 @@ in {
40 }; 40 };
41 systemd.services."pppd-telekom" = { 41 systemd.services."pppd-telekom" = {
42 stopIfChanged = true; 42 stopIfChanged = true;
43 43
44 serviceConfig = lib.mkForce { 44 serviceConfig = lib.mkForce {
45 Type = "notify"; 45 Type = "notify";
46 PIDFile = "/run/pppd/${pppInterface}.pid"; 46 PIDFile = "/run/pppd/${pppInterface}.pid";
@@ -62,7 +62,7 @@ in {
62 "ppp/ip-up" = { 62 "ppp/ip-up" = {
63 text = '' 63 text = ''
64 #!${pkgs.runtimeShell} 64 #!${pkgs.runtimeShell}
65 ${pkgs.iproute}/bin/ip route add default via "$5" dev "${pppInterface}" metric 512 65 ${pkgs.iproute2}/bin/ip route add default via "$5" dev "${pppInterface}" metric 512
66 ''; 66 '';
67 mode = "0555"; 67 mode = "0555";
68 }; 68 };
diff --git a/hosts/vidhar/prometheus/default.nix b/hosts/vidhar/prometheus/default.nix
index 7ac86c30..8e5ff0ea 100644
--- a/hosts/vidhar/prometheus/default.nix
+++ b/hosts/vidhar/prometheus/default.nix
@@ -61,9 +61,12 @@ in {
61 }; 61 };
62 apcupsd.enable = true; 62 apcupsd.enable = true;
63 systemd = { 63 systemd = {
64 enable = true; 64 enable = false; # TODO
65 extraFlags = [ 65 extraFlags = [
66 "--collector.unit-whitelist=(dhcpcd-dsl|pppd-telekom|corerad|ndppd)\.service" 66 "--systemd.collector.unit-include=(dhcpcd-dsl|pppd-telekom|corerad|ndppd)\.service"
67 "--systemd.collector.enable-restart-count"
68 "--systemd.collector.enable-file-descriptor-size"
69 "--systemd.collector.enable-ip-accounting"
67 ]; 70 ];
68 }; 71 };
69 blackbox = { 72 blackbox = {
diff --git a/installer-profiles/cd-dvd.nix b/installer-profiles/cd-dvd.nix
new file mode 100644
index 00000000..45291bad
--- /dev/null
+++ b/installer-profiles/cd-dvd.nix
@@ -0,0 +1,7 @@
1{ flakeInputs, ... }:
2
3{
4 imports = [
5 "${flakeInputs.nixpkgs.outPath}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix"
6 ];
7}
diff --git a/installer-profiles/netboot.nix b/installer-profiles/netboot.nix
new file mode 100644
index 00000000..28e8084d
--- /dev/null
+++ b/installer-profiles/netboot.nix
@@ -0,0 +1,7 @@
1{ flakeInputs, ... }:
2
3{
4 imports = [
5 "${flakeInputs.nixpkgs.outPath}/nixos/modules/installer/netboot/netboot-minimal.nix"
6 ];
7}
diff --git a/installer-profiles/nfsroot.nix b/installer-profiles/nfsroot.nix
new file mode 100644
index 00000000..9db415a8
--- /dev/null
+++ b/installer-profiles/nfsroot.nix
@@ -0,0 +1,95 @@
1{ config, pkgs, lib, flakeInputs, ... }:
2
3with lib;
4
5let
6 cfg = config.nfsroot;
7in {
8 imports = [
9 "${flakeInputs.nixpkgs.outPath}/nixos/modules/profiles/minimal.nix"
10 "${flakeInputs.nixpkgs.outPath}/nixos/modules/profiles/all-hardware.nix"
11 "${flakeInputs.nixpkgs.outPath}/nixos/modules/profiles/base.nix"
12 "${flakeInputs.nixpkgs.outPath}/nixos/modules/profiles/installation-device.nix"
13 ];
14
15 options = {
16 nfsroot = {
17 storeDevice = mkOption {
18 type = types.str;
19 };
20 };
21 };
22
23 config = {
24 # Don't build the GRUB menu builder script, since we don't need it
25 # here and it causes a cyclic dependency.
26 boot.loader.grub.enable = false;
27
28 # !!! Hack - attributes expected by other modules.
29 environment.systemPackages = [ pkgs.grub2_efi ]
30 ++ (if pkgs.stdenv.hostPlatform.system == "aarch64-linux"
31 then []
32 else [ pkgs.grub2 pkgs.syslinux ]);
33
34 fileSystems."/" = mkImageMediaOverride
35 { fsType = "tmpfs";
36 options = [ "mode=0755" ];
37 };
38
39 # In stage 1, mount a tmpfs on top of /nix/store (the squashfs
40 # image) to make this a live CD.
41 fileSystems."/nix/.ro-store" = mkImageMediaOverride
42 { fsType = "nfs4";
43 device = cfg.storeDevice;
44 options = [ "ro" ];
45 neededForBoot = true;
46 };
47
48 fileSystems."/nix/.rw-store" = mkImageMediaOverride
49 { fsType = "tmpfs";
50 options = [ "mode=0755" ];
51 neededForBoot = true;
52 };
53
54 fileSystems."/nix/store" = mkImageMediaOverride
55 { fsType = "overlay";
56 device = "overlay";
57 options = [
58 "lowerdir=/nix/.ro-store"
59 "upperdir=/nix/.rw-store/store"
60 "workdir=/nix/.rw-store/work"
61 ];
62
63 depends = [
64 "/nix/.ro-store"
65 "/nix/.rw-store/store"
66 "/nix/.rw-store/work"
67 ];
68 };
69
70 boot.initrd.availableKernelModules = [ "nfs" "nfsv4" "overlay" ];
71 boot.initrd.supportedFilesystems = [ "nfs" "nfsv4" "overlay" ];
72
73 boot.initrd.network.enable = true;
74 boot.initrd.network.flushBeforeStage2 = false; # otherwise nfs dosen't work
75 networking.useDHCP = true;
76
77
78 system.build.netbootIpxeScript = pkgs.writeTextDir "netboot.ipxe" ''
79 #!ipxe
80 # Use the cmdline variable to allow the user to specify custom kernel params
81 # when chainloading this script from other iPXE scripts like netboot.xyz
82 kernel ${pkgs.stdenv.hostPlatform.linux-kernel.target} init=${config.system.build.toplevel}/init initrd=initrd ${toString config.boot.kernelParams} ''${cmdline}
83 initrd initrd
84 boot
85 '';
86
87 boot.postBootCommands =
88 ''
89 # nixos-rebuild also requires a "system" profile and an
90 # /etc/NIXOS tag.
91 touch /etc/NIXOS
92 ${config.nix.package}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system
93 '';
94 };
95}
diff --git a/installer/default.nix b/installer/default.nix
index d77266ca..f882b22d 100644
--- a/installer/default.nix
+++ b/installer/default.nix
@@ -11,7 +11,7 @@
11 rulesetFile = ./ruleset.nft; 11 rulesetFile = ./ruleset.nft;
12 }; 12 };
13 }; 13 };
14 14
15 services.openssh = { 15 services.openssh = {
16 enable = true; 16 enable = true;
17 staticHostKeys = false; 17 staticHostKeys = false;
diff --git a/modules/netns.nix b/modules/netns.nix
index d4f07feb..dca3c0db 100644
--- a/modules/netns.nix
+++ b/modules/netns.nix
@@ -1,6 +1,6 @@
1{ pkgs, config, lib, ... }: 1{ pkgs, config, lib, ... }:
2 2
3with lib; 3with lib;
4 4
5let 5let
6 cfg = config.networking.namespaces; 6 cfg = config.networking.namespaces;
@@ -56,12 +56,12 @@ let
56 wants = ["network.target"]; 56 wants = ["network.target"];
57 conflicts = ["shutdown.target"]; 57 conflicts = ["shutdown.target"];
58 58
59 path = with pkgs; [ iproute config.systemd.package ]; 59 path = with pkgs; [ iproute2 config.systemd.package ];
60 60
61 serviceConfig = { 61 serviceConfig = {
62 SyslogIdentifier = "netns container ${containerName}"; 62 SyslogIdentifier = "netns container ${containerName}";
63 Type = "notify"; 63 Type = "notify";
64 64
65 RestartForceExitStatus = "133"; 65 RestartForceExitStatus = "133";
66 SuccessExitStatus = "133"; 66 SuccessExitStatus = "133";
67 67
@@ -114,7 +114,7 @@ let
114 --capability=CAP_SYS_TTY_CONFIG,CAP_NET_ADMIN,CAP_NET_RAW,CAP_SYS_ADMIN \ 114 --capability=CAP_SYS_TTY_CONFIG,CAP_NET_ADMIN,CAP_NET_RAW,CAP_SYS_ADMIN \
115 --ephemeral \ 115 --ephemeral \
116 --network-namespace-path=/run/netns/${containerCfg.netns} \ 116 --network-namespace-path=/run/netns/${containerCfg.netns} \
117 ${containerInit} "${containerCfg.config.system.build.toplevel}/init" 117 ${containerInit} "${containerCfg.config.system.build.toplevel}/init"
118 ''; 118 '';
119 }; 119 };
120in { 120in {
@@ -133,13 +133,13 @@ in {
133 assertions = [ 133 assertions = [
134 { assertion = cfg.containers != {} -> cfg.enable; message = "netns containers require netns@ service template"; } 134 { assertion = cfg.containers != {} -> cfg.enable; message = "netns containers require netns@ service template"; }
135 ]; 135 ];
136 136
137 systemd.services = { 137 systemd.services = {
138 "netns@" = mkIf cfg.enable { 138 "netns@" = mkIf cfg.enable {
139 description = "%I network namspace"; 139 description = "%I network namspace";
140 before = [ "network-pre.target" ]; 140 before = [ "network-pre.target" ];
141 wants = [ "network-pre.target" ]; 141 wants = [ "network-pre.target" ];
142 path = with pkgs; [ iproute utillinux ]; 142 path = with pkgs; [ iproute2 util-linux ];
143 serviceConfig = { 143 serviceConfig = {
144 Type = "oneshot"; 144 Type = "oneshot";
145 RemainAfterExit = true; 145 RemainAfterExit = true;
@@ -149,7 +149,7 @@ in {
149 umount /var/run/netns/"$1" 149 umount /var/run/netns/"$1"
150 mount --bind /proc/self/ns/net /var/run/netns/"$1" 150 mount --bind /proc/self/ns/net /var/run/netns/"$1"
151 ''} %I"; 151 ''} %I";
152 ExecStop = "${pkgs.iproute}/bin/ip netns del %I"; 152 ExecStop = "${pkgs.iproute2}/bin/ip netns del %I";
153 }; 153 };
154 }; 154 };
155 } // mapAttrs' mkContainerService cfg.containers; 155 } // mapAttrs' mkContainerService cfg.containers;
diff --git a/modules/zfssnap/default.nix b/modules/zfssnap/default.nix
index f3e2f9c2..42cdf46f 100644
--- a/modules/zfssnap/default.nix
+++ b/modules/zfssnap/default.nix
@@ -11,7 +11,7 @@ let
11 11
12 buildInputs = with pkgs; [makeWrapper]; 12 buildInputs = with pkgs; [makeWrapper];
13 13
14 python = pkgs.python39.withPackages (ps: with ps; [pyxdg pytimeparse dateutil]); 14 python = pkgs.python39.withPackages (ps: with ps; [pyxdg pytimeparse python-dateutil]);
15 15
16 buildPhase = '' 16 buildPhase = ''
17 substitute $src zfssnap \ 17 substitute $src zfssnap \
diff --git a/nvfetcher.toml b/nvfetcher.toml
index cb460076..ccdd78dd 100644
--- a/nvfetcher.toml
+++ b/nvfetcher.toml
@@ -34,10 +34,6 @@ src.git = "https://github.com/umlaeute/v4l2loopback"
34fetch.github = "umlaeute/v4l2loopback" 34fetch.github = "umlaeute/v4l2loopback"
35git.fetchSubmodules = true 35git.fetchSubmodules = true
36 36
37[fast-cli]
38src.github = "gesquive/fast-cli"
39fetch.github = "gesquive/fast-cli"
40
41[xcompose] 37[xcompose]
42src.git = "https://github.com/kragen/xcompose" 38src.git = "https://github.com/kragen/xcompose"
43fetch.github = "kragen/xcompose" 39fetch.github = "kragen/xcompose"
diff --git a/overlays/fast-cli.nix b/overlays/fast-cli.nix
deleted file mode 100644
index a318eada..00000000
--- a/overlays/fast-cli.nix
+++ /dev/null
@@ -1,34 +0,0 @@
1{ prev, sources, ... }: {
2 fast-cli = prev.buildGoModule rec {
3 pname = "fast-cli";
4
5 inherit (sources.fast-cli) version src;
6 vendorSha256 = "sha256-XM/5kUau0JBMxN0UpX6QNI31i8/+HNFvgFUFtlJsBh0=";
7
8 preBuild = let
9 goMod = prev.writeText "go.mod" ''
10 module github.com/gesquive/fast-cli
11
12 go 1.17
13
14 require (
15 github.com/dustin/go-humanize v0.0.0-20170228161531-259d2a102b87
16 github.com/fatih/color v1.4.1
17 github.com/gesquive/cli v0.2.0
18 github.com/inconshreveable/mousetrap v1.0.0
19 github.com/mattn/go-colorable v0.0.8-0.20170210172801-5411d3eea597
20 github.com/mattn/go-isatty v0.0.2-0.20170307163044-57fdcb988a5c
21 github.com/spf13/cobra v0.0.0-20170531045452-8d4ce3549a0b
22 github.com/spf13/pflag v1.0.0
23 golang.org/x/sys v0.0.0-20170213225739-e24f485414ae
24 )
25 '';
26 in ''
27 install -v -m 0644 ${goMod} ./go.mod
28 '';
29
30 ldflags = [
31 "-X main.version=${prev.lib.removePrefix "v" version}"
32 ];
33 };
34}
diff --git a/overlays/postfix-mta-sts-resolver.nix b/overlays/postfix-mta-sts-resolver.nix
index a06dace5..d8b1ff00 100644
--- a/overlays/postfix-mta-sts-resolver.nix
+++ b/overlays/postfix-mta-sts-resolver.nix
@@ -24,5 +24,6 @@
24 ]; 24 ];
25 25
26 _.pyparsing.buildInputs.add = with final.python310Packages; [ flit-core ]; 26 _.pyparsing.buildInputs.add = with final.python310Packages; [ flit-core ];
27 _.idna.buildInputs.add = with final.python310Packages; [ flit-core ];
27 }; 28 };
28} 29}
diff --git a/overlays/urxvt/52-osc.pl b/overlays/urxvt/52-osc.pl
deleted file mode 100644
index 3292e8c4..00000000
--- a/overlays/urxvt/52-osc.pl
+++ /dev/null
@@ -1,41 +0,0 @@
1#! perl
2
3=head1 NAME
4
552-osc - Implement OSC 32 ; Interact with X11 clipboard
6
7=head1 SYNOPSIS
8
9 urxvt -pe 52-osc
10
11=head1 DESCRIPTION
12
13This extension implements OSC 52 for interacting with system clipboard
14
15Most code stolen from:
16http://ailin.tucana.uberspace.de/static/nei/*/Code/urxvt/
17
18=cut
19
20use MIME::Base64;
21use Encode;
22
23sub on_osc_seq {
24 my ($term, $op, $args) = @_;
25 return () unless $op eq 52;
26
27 my ($clip, $data) = split ';', $args, 2;
28 if ($data eq '?') {
29 # my $data_free = $term->selection();
30 # Encode::_utf8_off($data_free); # XXX
31 # $term->tt_write("\e]52;$clip;".encode_base64($data_free, '')."\a");
32 }
33 else {
34 my $data_decoded = decode_base64($data);
35 Encode::_utf8_on($data_decoded); # XXX
36 $term->selection($data_decoded, $clip =~ /c|^$/);
37 $term->selection_grab(urxvt::CurrentTime, $clip =~ /c|^$/);
38 }
39
40 ()
41}
diff --git a/overlays/urxvt/default.nix b/overlays/urxvt/default.nix
deleted file mode 100644
index 77a2c51f..00000000
--- a/overlays/urxvt/default.nix
+++ /dev/null
@@ -1,21 +0,0 @@
1{ final, prev, ... }: {
2 rxvt_unicode-with-plugins = prev.rxvt-unicode.override {
3 configure = { availablePlugins, ... }: {
4 plugins = [ final.urxvt_osc_52 ] ++ builtins.attrValues availablePlugins;
5 };
6 };
7 urxvt_osc_52 = prev.stdenv.mkDerivation {
8 name = "rxvt_unicode-osc_52-0";
9 src = ./52-osc.pl;
10 unpackPhase = ''
11 cp $src 52-osc
12 '';
13 buildPhase = ''
14 sed -i 's|#! perl|#! ${final.perl}/bin/perl|g' 52-osc
15 '';
16 installPhase = ''
17 mkdir -p $out/lib/urxvt/perl
18 cp 52-osc $out/lib/urxvt/perl
19 '';
20 };
21}
diff --git a/overlays/worktime/default.nix b/overlays/worktime/default.nix
index a8ee15e3..20c0b90f 100644
--- a/overlays/worktime/default.nix
+++ b/overlays/worktime/default.nix
@@ -5,7 +5,7 @@
5 5
6 phases = [ "buildPhase" "checkPhase" "installPhase" ]; 6 phases = [ "buildPhase" "checkPhase" "installPhase" ];
7 7
8 python = prev.python39.withPackages (ps: with ps; [pyxdg dateutil uritools requests configparser tabulate]); 8 python = prev.python39.withPackages (ps: with ps; [pyxdg python-dateutil uritools requests configparser tabulate]);
9 buildInputs = [ python ]; 9 buildInputs = [ python ];
10 10
11 buildPhase = '' 11 buildPhase = ''
diff --git a/shell.nix b/shell.nix
index 05ba992b..6ada761e 100644
--- a/shell.nix
+++ b/shell.nix
@@ -1,21 +1,11 @@
1{ pkgs ? import <nixpkgs> {}, deploy-rs, nvfetcher }: 1{ pkgs ? import <nixpkgs> {}, deploy-rs, nvfetcher }:
2let 2let
3 nixWithFlakes = pkgs.symlinkJoin {
4 name = "nix-with-flakes";
5 paths = [ pkgs.nixFlakes ];
6 buildInputs = [ pkgs.makeWrapper ];
7 postBuild = ''
8 wrapProgram $out/bin/nix --add-flags '--option experimental-features "nix-command flakes"'
9 '';
10 };
11
12 tai64dec = pkgs.writeShellScriptBin "tai64dec" '' 3 tai64dec = pkgs.writeShellScriptBin "tai64dec" ''
13 echo $((16#$(${pkgs.daemontools}/bin/tai64n <<<"" | ${pkgs.coreutils}/bin/tail -c +2 | ${pkgs.coreutils}/bin/head -c 16))) 4 echo $((16#$(${pkgs.daemontools}/bin/tai64n <<<"" | ${pkgs.coreutils}/bin/tail -c +2 | ${pkgs.coreutils}/bin/head -c 16)))
14 ''; 5 '';
15in pkgs.mkShell { 6in pkgs.mkShell {
16 name = "nixos"; 7 name = "nixos";
17 nativeBuildInputs = with pkgs; [ 8 nativeBuildInputs = with pkgs; [
18 nixWithFlakes
19 sops 9 sops
20 wireguard-tools 10 wireguard-tools
21 gup 11 gup
diff --git a/system-profiles/build-server/default.nix b/system-profiles/build-server/default.nix
index 20b23a31..ee99e02f 100644
--- a/system-profiles/build-server/default.nix
+++ b/system-profiles/build-server/default.nix
@@ -1,8 +1,12 @@
1{ customUtils, flake, config, lib, ... }: 1{ customUtils, flake, config, lib, pkgs, ... }:
2 2
3{ 3with lib;
4
5let
6 disallowedSystems = ["armv5tel-linux" config.nixpkgs.system] ++ optional (systems.elaborate config.nixpkgs.system).isx86_64 "i686-linux";
7in {
4 imports = with flake.nixosModules.systemProfiles; [ openssh ]; 8 imports = with flake.nixosModules.systemProfiles; [ openssh ];
5 9
6 config = { 10 config = {
7 users.groups.nix-ssh-builder = {}; 11 users.groups.nix-ssh-builder = {};
8 users.users.nix-ssh-builder = { 12 users.users.nix-ssh-builder = {
@@ -30,8 +34,10 @@
30 34
31 users.users.nix-ssh-builder.openssh.authorizedKeys.keys = 35 users.users.nix-ssh-builder.openssh.authorizedKeys.keys =
32 let 36 let
33 importKeys = dir: lib.attrValues (customUtils.mapFilterAttrs (_: v: v != null) (n: v: lib.nameValuePair n (if v == "directory" then importKeys' dir n else null)) (builtins.readDir dir)); 37 importKeys = dir: attrValues (customUtils.mapFilterAttrs (_: v: v != null) (n: v: nameValuePair n (if v == "directory" then importKeys' dir n else null)) (builtins.readDir dir));
34 importKeys' = dir: host: builtins.readFile (dir + "/${host}/public"); 38 importKeys' = dir: host: builtins.readFile (dir + "/${host}/public");
35 in importKeys ./clients; 39 in importKeys ./clients;
40
41 boot.binfmt.emulatedSystems = mkDefault (filter (system: (systems.elaborate system).emulatorAvailable pkgs && !(elem system disallowedSystems)) systems.flakeExposed);
36 }; 42 };
37} 43}
diff --git a/system-profiles/openssh/default.nix b/system-profiles/openssh/default.nix
index 47908682..3d04d9b5 100644
--- a/system-profiles/openssh/default.nix
+++ b/system-profiles/openssh/default.nix
@@ -88,7 +88,7 @@ in {
88 }; 88 };
89 89
90 environment.systemPackages = mkIf cfg.enable (with pkgs; [ 90 environment.systemPackages = mkIf cfg.enable (with pkgs; [
91 rxvt_unicode.terminfo alacritty.terminfo 91 alacritty.terminfo
92 ]); 92 ]);
93 }; 93 };
94} 94}
diff --git a/user-profiles/feeds/module.nix b/user-profiles/feeds/module.nix
index 9b1ef594..63e827eb 100644
--- a/user-profiles/feeds/module.nix
+++ b/user-profiles/feeds/module.nix
@@ -75,7 +75,7 @@ let
75 75
76 phases = [ "buildPhase" "checkPhase" "installPhase" "fixupPhase" ]; 76 phases = [ "buildPhase" "checkPhase" "installPhase" "fixupPhase" ];
77 77
78 python = pkgs.python39.withPackages (ps: with ps; [ configparser dateutil html2text ]); 78 python = pkgs.python39.withPackages (ps: with ps; [ configparser python-dateutil html2text ]);
79 79
80 nativeBuildInputs = with pkgs; [ makeWrapper ]; 80 nativeBuildInputs = with pkgs; [ makeWrapper ];
81 81
diff --git a/user-profiles/mpv/default.nix b/user-profiles/mpv/default.nix
index 33b0ffaf..0c87b6e7 100644
--- a/user-profiles/mpv/default.nix
+++ b/user-profiles/mpv/default.nix
@@ -53,7 +53,7 @@
53 install -m 0644 mpris.so $out/share/mpv/scripts/${passthru.scriptName} 53 install -m 0644 mpris.so $out/share/mpv/scripts/${passthru.scriptName}
54 ''; 54 '';
55 55
56 nativeBuildInputs = with pkgs; [ pkgconfig glib mpv ]; 56 nativeBuildInputs = with pkgs; [ pkg-config glib mpv ];
57 57
58 passthru.scriptName = "mpris.so"; 58 passthru.scriptName = "mpris.so";
59 })) 59 }))
diff --git a/user-profiles/utils.nix b/user-profiles/utils.nix
index c5042d41..41fb312b 100644
--- a/user-profiles/utils.nix
+++ b/user-profiles/utils.nix
@@ -21,7 +21,7 @@
21 home.packages = with pkgs; [ 21 home.packages = with pkgs; [
22 autossh usbutils pciutils exa silver-searcher pwgen unzip 22 autossh usbutils pciutils exa silver-searcher pwgen unzip
23 magic-wormhole qrencode tty-clock dnsutils openssl sshfs psmisc 23 magic-wormhole qrencode tty-clock dnsutils openssl sshfs psmisc
24 mosh tree vnstat file pv bc fast-cli zip nmap aspell 24 mosh tree vnstat file pv bc zip nmap aspell
25 aspellDicts.de aspellDicts.en borgbackup man-pages rsync socat 25 aspellDicts.de aspellDicts.en borgbackup man-pages rsync socat
26 inetutils yq cached-nix-shell persistent-nix-shell rage 26 inetutils yq cached-nix-shell persistent-nix-shell rage
27 smartmontools hdparm 27 smartmontools hdparm