Home

infra @main - refs - log -
-
https://git.jolheiser.com/infra.git
My NixOS infrastructure
tree log patch
all: consolidate and clean up/housekeeping Signed-off-by: jolheiser <git@jolheiser.com>
Signature
-----BEGIN SSH SIGNATURE----- U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgBTEvCQk6VqUAdN2RuH6bj1dNkY oOpbPWj+jw4ua1B1cAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 AAAAQJzJcxyGNoYKmH3xHHugGP7xavLBRqM9pPHVtUXYteOUZAzPRLsg2yu6qiYSr1QYjs sXz4rWFHp083eWhl06IAo= -----END SSH SIGNATURE-----
jolheiser <git@jolheiser.com>
1 week ago
11 changed files, 118 additions(+), 235 deletions(-)
common/default.nixdragonwell/default.nixdragonwell/services/restic.nixflake.lockflake.nixgunpowder/default.nixjasmine/default.nixmodules/git-bug/default.nixpeach/default.nixsecrets/restic-webhook.agesecrets/secrets.nixshincha/default.nix
I common/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
diff --git a/common/default.nix b/common/default.nix
new file mode 100644
index 0000000000000000000000000000000000000000..3d6c5c885dc901a56db06a891cc78b1d71603f70
--- /dev/null
+++ b/common/default.nix
@@ -0,0 +1,30 @@
+{ ... }:
+{
+  nix = {
+    gc = {
+      automatic = true;
+      randomizedDelaySec = "15m";
+    };
+    optimise.automatic = true;
+    settings.experimental-features = [
+      "flakes"
+      "nix-command"
+    ];
+  };
+
+  time.timeZone = "America/Chicago";
+  i18n = {
+    defaultLocale = "en_US.UTF-8";
+    extraLocaleSettings = {
+      LC_ADDRESS = "en_US.UTF-8";
+      LC_IDENTIFICATION = "en_US.UTF-8";
+      LC_MEASUREMENT = "en_US.UTF-8";
+      LC_MONETARY = "en_US.UTF-8";
+      LC_NAME = "en_US.UTF-8";
+      LC_NUMERIC = "en_US.UTF-8";
+      LC_PAPER = "en_US.UTF-8";
+      LC_TELEPHONE = "en_US.UTF-8";
+      LC_TIME = "en_US.UTF-8";
+    };
+  };
+}
M dragonwell/default.nix -> dragonwell/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
diff --git a/dragonwell/default.nix b/dragonwell/default.nix
index 8480926ea43d7a4c0098c7433cbbf11e2010369e..888c7038aa7023b9eb2aabf4d9522b832d409ddf 100644
--- a/dragonwell/default.nix
+++ b/dragonwell/default.nix
@@ -1,11 +1,9 @@
-{ jolheiser, ... }:
+{ jolheiser, importDir, ... }:
 let
   key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL+uhnfFLhlyfGGsksSxh5IIY6gnIMryeQ2EiM979kZa";
 in
 {
-  imports =
-    (map (name: ./services + "/${name}") (builtins.attrNames (builtins.readDir ./services)))
-    ++ [ ./hardware.nix ];
+  imports = importDir ./services ++ [ ./hardware.nix ];
 
   boot.tmp.cleanOnBoot = true;
   zramSwap.enable = true;
@@ -42,18 +40,6 @@       isNormalUser = true;
       openssh.authorizedKeys.keys = [ key ];
     };
     "root".openssh.authorizedKeys.keys = [ key ];
-  };
-
-  nix = {
-    gc = {
-      automatic = true;
-      randomizedDelaySec = "15m";
-    };
-    optimise.automatic = true;
-    settings.experimental-features = [
-      "flakes"
-      "nix-command"
-    ];
   };
 
   system.stateVersion = "22.11";
M dragonwell/services/restic.nix -> dragonwell/services/restic.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
diff --git a/dragonwell/services/restic.nix b/dragonwell/services/restic.nix
index ae584018b16c7bdc1fadf83f4729344ba81a839c..91a9baaa3ffb20092c5a9cb4a687a2709aba896c 100644
--- a/dragonwell/services/restic.nix
+++ b/dragonwell/services/restic.nix
@@ -1,4 +1,9 @@
-{ config, lib, ... }:
+{
+  config,
+  lib,
+  pkgs,
+  ...
+}:
 let
   enable = true;
 in
@@ -7,7 +12,9 @@   age.secrets = {
     restic-env.file = ../../secrets/restic-env.age;
     restic-pass.file = ../../secrets/restic-pass.age;
     restic-repo.file = ../../secrets/restic-repo.age;
+    restic-webhook.file = ../../secrets/restic-webhook.age;
   };
+
   services.restic.backups.dragonwell = {
     initialize = true;
     environmentFile = config.age.secrets.restic-env.path;
@@ -26,9 +33,25 @@       "--keep-daily 7"
       "--keep-weekly 2"
       "--keep-monthly 2"
     ];
+    runCheck = true;
+    checkOpts = [ "--read-data-subset=5%" ];
     timerConfig = {
       OnCalendar = "daily";
       Persistent = true;
+    };
+  };
+
+  systemd.services = {
+    restic-backups-dragonwell.onFailure = [ "restic-alert.service" ];
+    restic-alert = {
+      description = "Notify on restic backup/check failure";
+      serviceConfig.Type = "oneshot";
+      script = ''
+        webhook=$(cat ${config.age.secrets.restic-webhook.path})
+        ${lib.getExe pkgs.curl} -sf -H "Content-Type: application/json" \
+          -d '{"content": "⚠️ restic backup/check failed on dragonwell"}' \
+          "$webhook"
+      '';
     };
   };
 }
M flake.lock -> flake.lock
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
diff --git a/flake.lock b/flake.lock
index fe08ebf0ba0e3c0075deb3f22278f809d78509cd..cce191d0fe35655bac5ad422283f287c04997178 100644
--- a/flake.lock
+++ b/flake.lock
@@ -212,28 +212,11 @@         "repo": "golink",
         "type": "github"
       }
     },
-    "home-manager": {
+    "horcrux": {
       "inputs": {
         "nixpkgs": "nixpkgs_9"
       },
       "locked": {
-        "lastModified": 1788651960,
-        "narHash": "sha256-v9wJd32eZ2bvhBzVOd7TIjLQd011P7nwOhjKtWlci5I=",
-        "owner": "nix-community",
-        "repo": "home-manager",
-        "rev": "2c0350c759688177331b8f5242311fae8877bdb3",
-        "type": "github"
-      },
-      "original": {
-        "id": "home-manager",
-        "type": "indirect"
-      }
-    },
-    "horcrux": {
-      "inputs": {
-        "nixpkgs": "nixpkgs_10"
-      },
-      "locked": {
         "lastModified": 1757854957,
         "narHash": "sha256-w/oJCZZ3FAUMhQBvaKa2bj3zj8ZgSYP3Yg7pVzeSGR8=",
         "ref": "refs/heads/main",
@@ -249,7 +232,7 @@       }
     },
     "mazanoke": {
       "inputs": {
-        "nixpkgs": "nixpkgs_11"
+        "nixpkgs": "nixpkgs_10"
       },
       "locked": {
         "lastModified": 1778508921,
@@ -267,7 +250,7 @@       }
     },
     "mint": {
       "inputs": {
-        "nixpkgs": "nixpkgs_12"
+        "nixpkgs": "nixpkgs_11"
       },
       "locked": {
         "lastModified": 1788371325,
@@ -283,23 +266,6 @@         "type": "git",
         "url": "https://git.jolheiser.com/mint.git"
       }
     },
-    "nixos-hardware": {
-      "inputs": {
-        "nixpkgs": "nixpkgs_13"
-      },
-      "locked": {
-        "lastModified": 1788860136,
-        "narHash": "sha256-MhPMOFV4pVkygWEbQ8t1De/uQ9cWF1u++tRe2L5tG48=",
-        "owner": "NixOS",
-        "repo": "nixos-hardware",
-        "rev": "62173785b9a18c78b4a15aca2623d02bceb9d077",
-        "type": "github"
-      },
-      "original": {
-        "id": "nixos-hardware",
-        "type": "indirect"
-      }
-    },
     "nixpkgs": {
       "locked": {
         "lastModified": 1720657034,
@@ -333,22 +299,6 @@       }
     },
     "nixpkgs_10": {
       "locked": {
-        "lastModified": 1756819007,
-        "narHash": "sha256-12V64nKG/O/guxSYnr5/nq1EfqwJCdD2+cIGmhz3nrE=",
-        "owner": "nixos",
-        "repo": "nixpkgs",
-        "rev": "aaff8c16d7fc04991cac6245bee1baa31f72b1e1",
-        "type": "github"
-      },
-      "original": {
-        "owner": "nixos",
-        "ref": "nixpkgs-unstable",
-        "repo": "nixpkgs",
-        "type": "github"
-      }
-    },
-    "nixpkgs_11": {
-      "locked": {
         "lastModified": 1746397377,
         "narHash": "sha256-5oLdRa3vWSRbuqPIFFmQBGGUqaYZBxX+GGtN9f/n4lU=",
         "owner": "nixos",
@@ -363,7 +313,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_12": {
+    "nixpkgs_11": {
       "locked": {
         "lastModified": 1758446476,
         "narHash": "sha256-5rdAi7CTvM/kSs6fHe1bREIva5W3TbImsto+dxG4mBo=",
@@ -379,20 +329,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_13": {
-      "locked": {
-        "lastModified": 1767892417,
-        "narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
-        "rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
-        "type": "tarball",
-        "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz"
-      },
-      "original": {
-        "type": "tarball",
-        "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
-      }
-    },
-    "nixpkgs_14": {
+    "nixpkgs_12": {
       "locked": {
         "lastModified": 1788752844,
         "narHash": "sha256-VaWGJ6+cIYN2erfSecbRV+4ljI185Ty2wUrXyvQbgOw=",
@@ -408,7 +345,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_15": {
+    "nixpkgs_13": {
       "locked": {
         "lastModified": 1752012998,
         "narHash": "sha256-Q82Ms+FQmgOBkdoSVm+FBpuFoeUAffNerR5yVV7SgT8=",
@@ -424,7 +361,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_16": {
+    "nixpkgs_14": {
       "locked": {
         "lastModified": 1697383814,
         "narHash": "sha256-NoGJsi8R4GyQX6GHJS9lIXyrbrybqyqA8v6HVixHs5E=",
@@ -439,7 +376,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_17": {
+    "nixpkgs_15": {
       "locked": {
         "lastModified": 1754800730,
         "narHash": "sha256-HfVZCXic9XLBgybP0318ym3cDnGwBs/+H5MgxFVYF4I=",
@@ -455,7 +392,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_18": {
+    "nixpkgs_16": {
       "locked": {
         "lastModified": 1786599213,
         "narHash": "sha256-yjGG65gA1jORt0hWxjzrnw3AYkIn8EWolp8vezwXZ3I=",
@@ -469,7 +406,7 @@         "ref": "nixos-unstable",
         "type": "indirect"
       }
     },
-    "nixpkgs_19": {
+    "nixpkgs_17": {
       "locked": {
         "lastModified": 1784210874,
         "narHash": "sha256-x8i+HYAulduMlM63oxWJj5tAm+Sc/W756wUzcV5p24w=",
@@ -485,13 +422,13 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_2": {
+    "nixpkgs_18": {
       "locked": {
-        "lastModified": 1763312402,
-        "narHash": "sha256-3YJkOBrFpmcusnh7i8GXXEyh7qZG/8F5z5+717550Hk=",
+        "lastModified": 1747060738,
+        "narHash": "sha256-ByfPRQuqj+nhtVV0koinEpmJw0KLzNbgcgi9EF+NVow=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "85a6c4a07faa12aaccd81b36ba9bfc2bec974fa1",
+        "rev": "eaeed9530c76ce5f1d2d8232e08bec5e26f18ec1",
         "type": "github"
       },
       "original": {
@@ -501,13 +438,13 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_20": {
+    "nixpkgs_19": {
       "locked": {
-        "lastModified": 1747060738,
-        "narHash": "sha256-ByfPRQuqj+nhtVV0koinEpmJw0KLzNbgcgi9EF+NVow=",
+        "lastModified": 1753399495,
+        "narHash": "sha256-7XG/QBqhrYOyA2houjRTL2NMa7IKZZ/somBqr+Q/6Wo=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "eaeed9530c76ce5f1d2d8232e08bec5e26f18ec1",
+        "rev": "0d00f23f023b7215b3f1035adb5247c8ec180dbc",
         "type": "github"
       },
       "original": {
@@ -517,13 +454,13 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_21": {
+    "nixpkgs_2": {
       "locked": {
-        "lastModified": 1753399495,
-        "narHash": "sha256-7XG/QBqhrYOyA2houjRTL2NMa7IKZZ/somBqr+Q/6Wo=",
+        "lastModified": 1763312402,
+        "narHash": "sha256-3YJkOBrFpmcusnh7i8GXXEyh7qZG/8F5z5+717550Hk=",
         "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "0d00f23f023b7215b3f1035adb5247c8ec180dbc",
+        "rev": "85a6c4a07faa12aaccd81b36ba9bfc2bec974fa1",
         "type": "github"
       },
       "original": {
@@ -533,7 +470,7 @@         "repo": "nixpkgs",
         "type": "github"
       }
     },
-    "nixpkgs_22": {
+    "nixpkgs_20": {
       "locked": {
         "lastModified": 1699343069,
         "narHash": "sha256-s7BBhyLA6MI6FuJgs4F/SgpntHBzz40/qV0xLPW6A1Q=",
@@ -647,15 +584,15 @@       }
     },
     "nixpkgs_9": {
       "locked": {
-        "lastModified": 1787964612,
-        "narHash": "sha256-0N9nghg3nwzX6b6qc77EzjR9cu/Z+UR66FlfsCqiURs=",
-        "owner": "NixOS",
+        "lastModified": 1756819007,
+        "narHash": "sha256-12V64nKG/O/guxSYnr5/nq1EfqwJCdD2+cIGmhz3nrE=",
+        "owner": "nixos",
         "repo": "nixpkgs",
-        "rev": "e8be7818e19ada32105a8af937a6a473b38167ca",
+        "rev": "aaff8c16d7fc04991cac6245bee1baa31f72b1e1",
         "type": "github"
       },
       "original": {
-        "owner": "NixOS",
+        "owner": "nixos",
         "ref": "nixpkgs-unstable",
         "repo": "nixpkgs",
         "type": "github"
@@ -663,7 +600,7 @@       }
     },
     "oidc": {
       "inputs": {
-        "nixpkgs": "nixpkgs_15"
+        "nixpkgs": "nixpkgs_13"
       },
       "locked": {
         "lastModified": 1752529116,
@@ -681,7 +618,7 @@       }
     },
     "resume": {
       "inputs": {
-        "nixpkgs": "nixpkgs_16"
+        "nixpkgs": "nixpkgs_14"
       },
       "locked": {
         "lastModified": 1753062776,
@@ -708,12 +645,10 @@         "foundry": "foundry",
         "git-pr": "git-pr",
         "gitpecker": "gitpecker",
         "golink": "golink",
-        "home-manager": "home-manager",
         "horcrux": "horcrux",
         "mazanoke": "mazanoke",
         "mint": "mint",
-        "nixos-hardware": "nixos-hardware",
-        "nixpkgs": "nixpkgs_14",
+        "nixpkgs": "nixpkgs_12",
         "oidc": "oidc",
         "resume": "resume",
         "tailproxy": "tailproxy",
@@ -769,7 +704,7 @@       }
     },
     "tailproxy": {
       "inputs": {
-        "nixpkgs": "nixpkgs_17"
+        "nixpkgs": "nixpkgs_15"
       },
       "locked": {
         "lastModified": 1781704127,
@@ -829,7 +764,7 @@       }
     },
     "tailwind-ctp-lsp_2": {
       "inputs": {
-        "nixpkgs": "nixpkgs_22"
+        "nixpkgs": "nixpkgs_20"
       },
       "locked": {
         "lastModified": 1699401590,
@@ -847,7 +782,7 @@       }
     },
     "tailwind-ctp_2": {
       "inputs": {
-        "nixpkgs": "nixpkgs_21"
+        "nixpkgs": "nixpkgs_19"
       },
       "locked": {
         "lastModified": 1753803577,
@@ -865,7 +800,7 @@       }
     },
     "tclip": {
       "inputs": {
-        "nixpkgs": "nixpkgs_18",
+        "nixpkgs": "nixpkgs_16",
         "utils": "utils"
       },
       "locked": {
@@ -884,7 +819,7 @@       }
     },
     "ugit": {
       "inputs": {
-        "nixpkgs": "nixpkgs_19",
+        "nixpkgs": "nixpkgs_17",
         "tailwind-ctp": "tailwind-ctp",
         "tailwind-ctp-lsp": "tailwind-ctp-lsp"
       },
@@ -922,7 +857,7 @@       }
     },
     "website": {
       "inputs": {
-        "nixpkgs": "nixpkgs_20",
+        "nixpkgs": "nixpkgs_18",
         "tailwind-ctp": "tailwind-ctp_2",
         "tailwind-ctp-lsp": "tailwind-ctp-lsp_2"
       },
M flake.nix -> flake.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
diff --git a/flake.nix b/flake.nix
index 4a508f62b21bb5eabfc921723a98fa7079080d33..a8d4eaa3f4c5f999ca011febe6a8928e0c34075d 100644
--- a/flake.nix
+++ b/flake.nix
@@ -34,8 +34,6 @@
   outputs =
     {
       nixpkgs,
-      home-manager,
-      nixos-hardware,
       agenix,
       ...
     }@inputs:
@@ -43,13 +41,14 @@     let
       system = "x86_64-linux";
       pkgs = import inputs.nixpkgs { inherit system; };
       jolheiser = import ./config.nix { inherit pkgs; };
+      importDir = dir: map (name: dir + "/${name}") (builtins.attrNames (builtins.readDir dir));
     in
     {
       colmena = {
         meta = {
           nixpkgs = import nixpkgs { inherit system; };
           specialArgs = {
-            inherit jolheiser inputs;
+            inherit jolheiser inputs importDir;
           };
         };
         dragonwell.imports = [
@@ -63,15 +62,18 @@           inputs.foundry.nixosModules.foundryvtt
           inputs.forge-lines.nixosModules.default
           ./modules/miniserve
           ./modules/git-bug
+          ./common
           ./dragonwell
         ];
         jasmine.imports = [
           inputs.agenix.nixosModules.default
+          ./common
           ./jasmine
         ];
         gunpowder.imports = [
           inputs.agenix.nixosModules.default
           inputs.tailproxy.nixosModules.default
+          ./common
           ./gunpowder
         ];
         shincha =
@@ -85,12 +87,14 @@               inputs.mazanoke.nixosModules.default
               inputs.tailproxy.nixosModules.default
               inputs.oidc.nixosModules.default
               ./modules/tclip
+              ./common
               ./shincha
             ];
             services.tclip.package = inputs.tclip.packages.${pkgs.stdenv.hostPlatform.system}.tclipd;
           };
         peach.imports = [
           inputs.agenix.nixosModules.default
+          ./common
           ./peach
         ];
       };
M gunpowder/default.nix -> gunpowder/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
diff --git a/gunpowder/default.nix b/gunpowder/default.nix
index 402101e30f85f0cb5023e3fee179d37264844d85..19fa4cbb4b0e1e97dce81efb189f529882b9d245 100644
--- a/gunpowder/default.nix
+++ b/gunpowder/default.nix
@@ -1,11 +1,9 @@
-{ jolheiser, pkgs, ... }:
+{ jolheiser, pkgs, importDir, ... }:
 let
   key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJh5aUDN/KN28+4tbayXRQliLyKFZaCZtUMEBNaJfHYj";
 in
 {
-  imports =
-    (map (name: ./services + "/${name}") (builtins.attrNames (builtins.readDir ./services)))
-    ++ [ ./hardware.nix ];
+  imports = importDir ./services ++ [ ./hardware.nix ];
 
   boot = {
     kernelPackages = pkgs.linuxPackages_latest;
@@ -67,14 +65,6 @@     groups.media.members = [
       "jolheiser"
       "olheiser"
     ];
-  };
-
-  nix = {
-    gc = {
-      automatic = true;
-      randomizedDelaySec = "15m";
-    };
-    optimise.automatic = true;
   };
 
   system.stateVersion = "22.11";
M jasmine/default.nix -> jasmine/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
diff --git a/jasmine/default.nix b/jasmine/default.nix
index 0a2111e64105bbf1de243efb93c1a60baad14eb3..fdae0fde6c5106d2e84ff3257deaebd34685bea7 100644
--- a/jasmine/default.nix
+++ b/jasmine/default.nix
@@ -1,11 +1,9 @@
-{ jolheiser, pkgs, ... }:
+{ jolheiser, pkgs, importDir, ... }:
 let
   key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM7cgpIUaEY3q12xBct9a0gIl7rdckBBPsWQea7Wtj7P";
 in
 {
-  imports =
-    (map (name: ./services + "/${name}") (builtins.attrNames (builtins.readDir ./services)))
-    ++ [ ./hardware.nix ];
+  imports = importDir ./services ++ [ ./hardware.nix ];
 
   boot.loader.grub = {
     enable = true;
@@ -17,22 +15,6 @@   networking = {
     hostName = "jasmine"; # Define your hostname.
     networkmanager.enable = true;
     firewall.enable = true;
-  };
-
-  time.timeZone = "America/Chicago";
-
-  i18n.defaultLocale = "en_US.UTF-8";
-
-  i18n.extraLocaleSettings = {
-    LC_ADDRESS = "en_US.UTF-8";
-    LC_IDENTIFICATION = "en_US.UTF-8";
-    LC_MEASUREMENT = "en_US.UTF-8";
-    LC_MONETARY = "en_US.UTF-8";
-    LC_NAME = "en_US.UTF-8";
-    LC_NUMERIC = "en_US.UTF-8";
-    LC_PAPER = "en_US.UTF-8";
-    LC_TELEPHONE = "en_US.UTF-8";
-    LC_TIME = "en_US.UTF-8";
   };
 
   services.xserver = {
@@ -71,24 +53,11 @@
   # Allow unfree packages
   nixpkgs.config.allowUnfree = true;
 
-  nix = {
-    gc = {
-      automatic = true;
-      randomizedDelaySec = "15m";
-    };
-    optimise.automatic = true;
-    settings = {
-      trusted-users = [
-        "@sudo"
-        "@wheel"
-        "${jolheiser.username}"
-      ];
-      experimental-features = [
-        "flakes"
-        "nix-command"
-      ];
-    };
-  };
+  nix.settings.trusted-users = [
+    "@sudo"
+    "@wheel"
+    "${jolheiser.username}"
+  ];
 
   # This value determines the NixOS release from which the default
   # settings for stateful data, like file locations and database versions
M modules/git-bug/default.nix -> modules/git-bug/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
diff --git a/modules/git-bug/default.nix b/modules/git-bug/default.nix
index 5a488a34c73b3ee54857e9ef247f1979ad36a0ee..1bad2babb47af6bd34b251a10c856acaa83ee3e1 100644
--- a/modules/git-bug/default.nix
+++ b/modules/git-bug/default.nix
@@ -173,7 +173,7 @@                 if [ -n "$human_id" ] && [ "$human_id" != "null" ]; then
                     git-bug user adopt "$human_id"
                 else
                     git-bug user new --name "${instanceCfg.authorUser}" --email "${instanceCfg.authorUser}" ${
-                      lib.optionalString (instanceCfg != "") "--avatar \"${instanceCfg.authorAvatar}\""
+                      lib.optionalString (instanceCfg.authorAvatar != "") "--avatar \"${instanceCfg.authorAvatar}\""
                     }
                 fi
               '';
M peach/default.nix -> peach/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
diff --git a/peach/default.nix b/peach/default.nix
index 3c08747f3b2a2a36863c59aff8de6d29d14aae8d..fba0f1e64207db4fd3bbca42ee40e39e7698b736 100644
--- a/peach/default.nix
+++ b/peach/default.nix
@@ -55,22 +55,6 @@       ];
     };
   };
 
-  time.timeZone = "America/Chicago";
-  i18n = {
-    defaultLocale = "en_US.UTF-8";
-    extraLocaleSettings = {
-      LC_ADDRESS = "en_US.UTF-8";
-      LC_IDENTIFICATION = "en_US.UTF-8";
-      LC_MEASUREMENT = "en_US.UTF-8";
-      LC_MONETARY = "en_US.UTF-8";
-      LC_NAME = "en_US.UTF-8";
-      LC_NUMERIC = "en_US.UTF-8";
-      LC_PAPER = "en_US.UTF-8";
-      LC_TELEPHONE = "en_US.UTF-8";
-      LC_TIME = "en_US.UTF-8";
-    };
-  };
-
   hardware.pulseaudio.enable = false;
   security.rtkit.enable = true;
 
@@ -121,14 +105,6 @@     };
     "root".openssh.authorizedKeys.keys = [
       "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL+uhnfFLhlyfGGsksSxh5IIY6gnIMryeQ2EiM979kZa"
     ];
-  };
-
-  nix = {
-    gc = {
-      automatic = true;
-      randomizedDelaySec = "15m";
-    };
-    optimise.automatic = true;
   };
 
   system.stateVersion = "22.11";
I secrets/restic-webhook.age
1
2
3
4
diff --git a/secrets/restic-webhook.age b/secrets/restic-webhook.age
new file mode 100644
index 0000000000000000000000000000000000000000..5ee8aafeeaca4df479f8c499b2ae9f2014c3dc2a
Binary files /dev/null and b/secrets/restic-webhook.age differ
M secrets/secrets.nix -> secrets/secrets.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
diff --git a/secrets/secrets.nix b/secrets/secrets.nix
index ecaf2b6b19054bbb983353d4fb7fbe1fa808b0dc..5623f7dfdb6f0981cebc70e6e1d2173322013ebd 100644
--- a/secrets/secrets.nix
+++ b/secrets/secrets.nix
@@ -47,4 +47,5 @@   "beanboy.age".publicKeys = peachKeys;
   "oa2p.age".publicKeys = dragonwellKeys;
   "woodpecker.age".publicKeys = dragonwellKeys;
   "mullvad.age".publicKeys = gunpowderKeys;
+  "restic-webhook.age".publicKeys = dragonwellKeys;
 }
M shincha/default.nix -> shincha/default.nix
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
diff --git a/shincha/default.nix b/shincha/default.nix
index 3248ae73e3b3043683c5c83c70facec3f8c541af..3cd4a23b071cee2d2ef9e614e25fd3d6967b4d53 100644
--- a/shincha/default.nix
+++ b/shincha/default.nix
@@ -1,11 +1,9 @@
-{ jolheiser, ... }:
+{ jolheiser, importDir, ... }:
 let
   key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJBxdG9mduIWiQ+egYKMvUKKCyShdeM8O6QsLs6g5aGt";
 in
 {
-  imports =
-    (map (name: ./services + "/${name}") (builtins.attrNames (builtins.readDir ./services)))
-    ++ [ ./hardware.nix ];
+  imports = importDir ./services ++ [ ./hardware.nix ];
 
   boot.loader.grub = {
     enable = true;
@@ -19,22 +17,6 @@     networkmanager.enable = true;
     firewall.enable = true;
   };
 
-  time.timeZone = "America/Chicago";
-
-  i18n.defaultLocale = "en_US.UTF-8";
-
-  i18n.extraLocaleSettings = {
-    LC_ADDRESS = "en_US.UTF-8";
-    LC_IDENTIFICATION = "en_US.UTF-8";
-    LC_MEASUREMENT = "en_US.UTF-8";
-    LC_MONETARY = "en_US.UTF-8";
-    LC_NAME = "en_US.UTF-8";
-    LC_NUMERIC = "en_US.UTF-8";
-    LC_PAPER = "en_US.UTF-8";
-    LC_TELEPHONE = "en_US.UTF-8";
-    LC_TIME = "en_US.UTF-8";
-  };
-
   services.xserver = {
     enable = true;
     displayManager.lightdm.enable = true;
@@ -67,24 +49,11 @@
   # Allow unfree packages
   nixpkgs.config.allowUnfree = true;
 
-  nix = {
-    gc = {
-      automatic = true;
-      randomizedDelaySec = "15m";
-    };
-    optimise.automatic = true;
-    settings = {
-      trusted-users = [
-        "@sudo"
-        "@wheel"
-        "${jolheiser.username}"
-      ];
-      experimental-features = [
-        "flakes"
-        "nix-command"
-      ];
-    };
-  };
+  nix.settings.trusted-users = [
+    "@sudo"
+    "@wheel"
+    "${jolheiser.username}"
+  ];
 
   # This value determines the NixOS release from which the default
   # settings for stateful data, like file locations and database versions