authorgravatar for git@paperclover.netclover caruso <git@paperclover.net> 2025-07-04 21:47:29-07:00
committergravatar for git@paperclover.netclover caruso <git@paperclover.net> 2025-07-04 21:47:29-07:00
log90fa812e6a8a7032ad4b95f7ba20802b4e1e124e
treee0bc2f7d707106e007a1f1d6cea5975ab938d110
parentac6a00196705a795ac82a59eeacd7eee59587cee
parent680b8090626fbdb0c62d2894c9a61b95286a9c1f

Merge remote-tracking branch 'origin/nats' into chloe


26 files changed, 1048 insertions(+), 1259 deletions(-)

flake.lock+124-542
...@@ -15,11 +15,11 @@...@@ -15,11 +15,11 @@
15 "sf-pro": "sf-pro"15 "sf-pro": "sf-pro"
16 },16 },
17 "locked": {17 "locked": {
18 "lastModified": 1740961576,18 "lastModified": 1748299691,
19 "narHash": "sha256-9L6d3owtajM72YvUOpK1zYle2nM0BpsuopbF9lm9lJs=",19 "narHash": "sha256-HMlx5HzeOOhpewq3y9UaSMP9AkhEo+AFJHZIWLQvJGw=",
20 "owner": "Lyndeno",20 "owner": "Lyndeno",
21 "repo": "apple-fonts.nix",21 "repo": "apple-fonts.nix",
22 "rev": "4df58996ed654f6ce9b71b41c1826484c6870739",22 "rev": "ec51ae2e8ba89adbb5188c40aa262a7418c48b00",
23 "type": "github"23 "type": "github"
24 },24 },
25 "original": {25 "original": {
...@@ -28,73 +28,6 @@...@@ -28,73 +28,6 @@
28 "type": "github"28 "type": "github"
29 }29 }
30 },30 },
31 "base16": {
32 "inputs": {
33 "fromYaml": "fromYaml"
34 },
35 "locked": {
36 "lastModified": 1746562888,
37 "narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=",
38 "owner": "SenchoPens",
39 "repo": "base16.nix",
40 "rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89",
41 "type": "github"
42 },
43 "original": {
44 "owner": "SenchoPens",
45 "repo": "base16.nix",
46 "type": "github"
47 }
48 },
49 "base16-fish": {
50 "flake": false,
51 "locked": {
52 "lastModified": 1622559957,
53 "narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=",
54 "owner": "tomyun",
55 "repo": "base16-fish",
56 "rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe",
57 "type": "github"
58 },
59 "original": {
60 "owner": "tomyun",
61 "repo": "base16-fish",
62 "type": "github"
63 }
64 },
65 "base16-helix": {
66 "flake": false,
67 "locked": {
68 "lastModified": 1736852337,
69 "narHash": "sha256-esD42YdgLlEh7koBrSqcT7p2fsMctPAcGl/+2sYJa2o=",
70 "owner": "tinted-theming",
71 "repo": "base16-helix",
72 "rev": "03860521c40b0b9c04818f2218d9cc9efc21e7a5",
73 "type": "github"
74 },
75 "original": {
76 "owner": "tinted-theming",
77 "repo": "base16-helix",
78 "type": "github"
79 }
80 },
81 "base16-vim": {
82 "flake": false,
83 "locked": {
84 "lastModified": 1732806396,
85 "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=",
86 "owner": "tinted-theming",
87 "repo": "base16-vim",
88 "rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
89 "type": "github"
90 },
91 "original": {
92 "owner": "tinted-theming",
93 "repo": "base16-vim",
94 "rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
95 "type": "github"
96 }
97 },
98 "darwin": {31 "darwin": {
99 "inputs": {32 "inputs": {
100 "nixpkgs": [33 "nixpkgs": [
...@@ -102,11 +35,11 @@...@@ -102,11 +35,11 @@
102 ]35 ]
103 },36 },
104 "locked": {37 "locked": {
105 "lastModified": 1747820204,38 "lastModified": 1751313918,
106 "narHash": "sha256-oY/mH8K1LOd+YbO58sw9ORtOdTxy3rR9lvTzOJKVUtA=",39 "narHash": "sha256-HsJM3XLa43WpG+665aGEh8iS8AfEwOIQWk3Mke3e7nk=",
107 "owner": "lnl7",40 "owner": "lnl7",
108 "repo": "nix-darwin",41 "repo": "nix-darwin",
109 "rev": "e2676937faf868111dcea6a4a9cf4b6549907c9d",42 "rev": "e04a388232d9a6ba56967ce5b53a8a6f713cdfcf",
110 "type": "github"43 "type": "github"
111 },44 },
112 "original": {45 "original": {
...@@ -116,54 +49,7 @@...@@ -116,54 +49,7 @@
116 "type": "github"49 "type": "github"
117 }50 }
118 },51 },
119 "firefox-gnome-theme": {
120 "flake": false,
121 "locked": {
122 "lastModified": 1744642301,
123 "narHash": "sha256-5A6LL7T0lttn1vrKsNOKUk9V0ittdW0VEqh6AtefxJ4=",
124 "owner": "rafaelmardojai",
125 "repo": "firefox-gnome-theme",
126 "rev": "59e3de00f01e5adb851d824cf7911bd90c31083a",
127 "type": "github"
128 },
129 "original": {
130 "owner": "rafaelmardojai",
131 "repo": "firefox-gnome-theme",
132 "type": "github"
133 }
134 },
135 "flake-compat": {52 "flake-compat": {
136 "flake": false,
137 "locked": {
138 "lastModified": 1746162366,
139 "narHash": "sha256-5SSSZ/oQkwfcAz/o/6TlejlVGqeK08wyREBQ5qFFPhM=",
140 "owner": "nix-community",
141 "repo": "flake-compat",
142 "rev": "0f158086a2ecdbb138cd0429410e44994f1b7e4b",
143 "type": "github"
144 },
145 "original": {
146 "owner": "nix-community",
147 "repo": "flake-compat",
148 "type": "github"
149 }
150 },
151 "flake-compat_2": {
152 "locked": {
153 "lastModified": 1733328505,
154 "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
155 "owner": "edolstra",
156 "repo": "flake-compat",
157 "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
158 "type": "github"
159 },
160 "original": {
161 "owner": "edolstra",
162 "repo": "flake-compat",
163 "type": "github"
164 }
165 },
166 "flake-compat_3": {
167 "flake": false,53 "flake": false,
168 "locked": {54 "locked": {
169 "lastModified": 1696426674,55 "lastModified": 1696426674,
...@@ -179,7 +65,7 @@...@@ -179,7 +65,7 @@
179 "type": "github"65 "type": "github"
180 }66 }
181 },67 },
182 "flake-compat_4": {68 "flake-compat_2": {
183 "flake": false,69 "flake": false,
184 "locked": {70 "locked": {
185 "lastModified": 1696426674,71 "lastModified": 1696426674,
...@@ -200,11 +86,11 @@...@@ -200,11 +86,11 @@
200 "nixpkgs-lib": "nixpkgs-lib"86 "nixpkgs-lib": "nixpkgs-lib"
201 },87 },
202 "locked": {88 "locked": {
203 "lastModified": 1743550720,89 "lastModified": 1749398372,
204 "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",90 "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=",
205 "owner": "hercules-ci",91 "owner": "hercules-ci",
206 "repo": "flake-parts",92 "repo": "flake-parts",
207 "rev": "c621e8422220273271f52058f618c94e405bb0f5",93 "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569",
208 "type": "github"94 "type": "github"
209 },95 },
210 "original": {96 "original": {
...@@ -213,30 +99,27 @@...@@ -213,30 +99,27 @@
213 "type": "github"99 "type": "github"
214 }100 }
215 },101 },
216 "flake-parts_2": {102 "flake-utils": {
217 "inputs": {103 "inputs": {
218 "nixpkgs-lib": [104 "systems": "systems"
219 "stylix",
220 "nixpkgs"
221 ]
222 },105 },
223 "locked": {106 "locked": {
224 "lastModified": 1733312601,107 "lastModified": 1731533236,
225 "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",108 "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
226 "owner": "hercules-ci",109 "owner": "numtide",
227 "repo": "flake-parts",110 "repo": "flake-utils",
228 "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",111 "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
229 "type": "github"112 "type": "github"
230 },113 },
231 "original": {114 "original": {
232 "owner": "hercules-ci",115 "owner": "numtide",
233 "repo": "flake-parts",116 "repo": "flake-utils",
234 "type": "github"117 "type": "github"
235 }118 }
236 },119 },
237 "flake-utils": {120 "flake-utils_2": {
238 "inputs": {121 "inputs": {
239 "systems": "systems"122 "systems": "systems_2"
240 },123 },
241 "locked": {124 "locked": {
242 "lastModified": 1701680307,125 "lastModified": 1701680307,
...@@ -252,9 +135,9 @@...@@ -252,9 +135,9 @@
252 "type": "github"135 "type": "github"
253 }136 }
254 },137 },
255 "flake-utils_2": {138 "flake-utils_3": {
256 "inputs": {139 "inputs": {
257 "systems": "systems_2"140 "systems": "systems_3"
258 },141 },
259 "locked": {142 "locked": {
260 "lastModified": 1731533236,143 "lastModified": 1731533236,
...@@ -270,9 +153,9 @@...@@ -270,9 +153,9 @@
270 "type": "github"153 "type": "github"
271 }154 }
272 },155 },
273 "flake-utils_3": {156 "flake-utils_4": {
274 "inputs": {157 "inputs": {
275 "systems": "systems_3"158 "systems": "systems_4"
276 },159 },
277 "locked": {160 "locked": {
278 "lastModified": 1731533236,161 "lastModified": 1731533236,
...@@ -288,7 +171,7 @@...@@ -288,7 +171,7 @@
288 "type": "github"171 "type": "github"
289 }172 }
290 },173 },
291 "flake-utils_4": {174 "flake-utils_5": {
292 "inputs": {175 "inputs": {
293 "systems": "systems_6"176 "systems": "systems_6"
294 },177 },
...@@ -306,7 +189,7 @@...@@ -306,7 +189,7 @@
306 "type": "github"189 "type": "github"
307 }190 }
308 },191 },
309 "flake-utils_5": {192 "flake-utils_6": {
310 "inputs": {193 "inputs": {
311 "systems": "systems_7"194 "systems": "systems_7"
312 },195 },
...@@ -324,7 +207,7 @@...@@ -324,7 +207,7 @@
324 "type": "github"207 "type": "github"
325 }208 }
326 },209 },
327 "flake-utils_6": {210 "flake-utils_7": {
328 "inputs": {211 "inputs": {
329 "systems": "systems_8"212 "systems": "systems_8"
330 },213 },
...@@ -342,45 +225,18 @@...@@ -342,45 +225,18 @@
342 "type": "github"225 "type": "github"
343 }226 }
344 },227 },
345 "fromYaml": {228 "flakey-profile": {
346 "flake": false,
347 "locked": {229 "locked": {
348 "lastModified": 1731966426,230 "lastModified": 1712898590,
349 "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",231 "narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
350 "owner": "SenchoPens",232 "owner": "lf-",
351 "repo": "fromYaml",233 "repo": "flakey-profile",
352 "rev": "106af9e2f715e2d828df706c386a685698f3223b",234 "rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
353 "type": "github"235 "type": "github"
354 },236 },
355 "original": {237 "original": {
356 "owner": "SenchoPens",238 "owner": "lf-",
357 "repo": "fromYaml",239 "repo": "flakey-profile",
358 "type": "github"
359 }
360 },
361 "git-hooks": {
362 "inputs": {
363 "flake-compat": [
364 "stylix",
365 "flake-compat"
366 ],
367 "gitignore": "gitignore_2",
368 "nixpkgs": [
369 "stylix",
370 "nixpkgs"
371 ]
372 },
373 "locked": {
374 "lastModified": 1742649964,
375 "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=",
376 "owner": "cachix",
377 "repo": "git-hooks.nix",
378 "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82",
379 "type": "github"
380 },
381 "original": {
382 "owner": "cachix",
383 "repo": "git-hooks.nix",
384 "type": "github"240 "type": "github"
385 }241 }
386 },242 },
...@@ -403,8 +259,7 @@...@@ -403,8 +259,7 @@
403 "gitignore_2": {259 "gitignore_2": {
404 "inputs": {260 "inputs": {
405 "nixpkgs": [261 "nixpkgs": [
406 "stylix",262 "zls",
407 "git-hooks",
408 "nixpkgs"263 "nixpkgs"
409 ]264 ]
410 },265 },
...@@ -422,105 +277,81 @@...@@ -422,105 +277,81 @@
422 "type": "github"277 "type": "github"
423 }278 }
424 },279 },
425 "gitignore_3": {280 "home-manager": {
426 "inputs": {281 "inputs": {
427 "nixpkgs": [282 "nixpkgs": [
428 "zls",
429 "nixpkgs"283 "nixpkgs"
430 ]284 ]
431 },285 },
432 "locked": {286 "locked": {
433 "lastModified": 1709087332,287 "lastModified": 1751489990,
434 "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",288 "narHash": "sha256-ENTd/sd4Vz/VJYn14SVqW1OH2m7WIAvsm9A9SrmDZRY=",
435 "owner": "hercules-ci",289 "owner": "nix-community",
436 "repo": "gitignore.nix",290 "repo": "home-manager",
437 "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",291 "rev": "89af52d9a893af013f5f4c1d2d56912106827153",
438 "type": "github"292 "type": "github"
439 },293 },
440 "original": {294 "original": {
441 "owner": "hercules-ci",295 "owner": "nix-community",
442 "repo": "gitignore.nix",296 "ref": "master",
297 "repo": "home-manager",
443 "type": "github"298 "type": "github"
444 }299 }
445 },300 },
446 "gnome-shell": {301 "langref": {
447 "flake": false,302 "flake": false,
448 "locked": {303 "locked": {
449 "lastModified": 1744584021,304 "narHash": "sha256-O6p2tiKD8ZMhSX+DeA/o5hhAvcPkU2J9lFys/r11peY=",
450 "narHash": "sha256-0RJ4mJzf+klKF4Fuoc8VN8dpQQtZnKksFmR2jhWE1Ew=",305 "type": "file",
451 "owner": "GNOME",306 "url": "https://raw.githubusercontent.com/ziglang/zig/0fb2015fd3422fc1df364995f9782dfe7255eccd/doc/langref.html.in"
452 "repo": "gnome-shell",
453 "rev": "52c517c8f6c199a1d6f5118fae500ef69ea845ae",
454 "type": "github"
455 },307 },
456 "original": {308 "original": {
457 "owner": "GNOME",309 "type": "file",
458 "ref": "48.1",310 "url": "https://raw.githubusercontent.com/ziglang/zig/0fb2015fd3422fc1df364995f9782dfe7255eccd/doc/langref.html.in"
459 "repo": "gnome-shell",
460 "type": "github"
461 }311 }
462 },312 },
463 "home-manager": {313 "lix": {
464 "inputs": {314 "flake": false,
465 "nixpkgs": [
466 "nixpkgs"
467 ]
468 },
469 "locked": {315 "locked": {
470 "lastModified": 1747834438,316 "lastModified": 1746827285,
471 "narHash": "sha256-AHJt79W8wADzur2htCx1U8FtEk4XjvrHb9/3iDfNedI=",317 "narHash": "sha256-hsFe4Tsqqg4l+FfQWphDtjC79WzNCZbEFhHI8j2KJzw=",
472 "owner": "nix-community",318 "rev": "47aad376c87e2e65967f17099277428e4b3f8e5a",
473 "repo": "home-manager",319 "type": "tarball",
474 "rev": "6c2eb1e24cd0e76d88bdd633ef4c50d6286586e0",320 "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/47aad376c87e2e65967f17099277428e4b3f8e5a.tar.gz?rev=47aad376c87e2e65967f17099277428e4b3f8e5a"
475 "type": "github"
476 },321 },
477 "original": {322 "original": {
478 "owner": "nix-community",323 "type": "tarball",
479 "ref": "master",324 "url": "https://git.lix.systems/lix-project/lix/archive/2.93.0.tar.gz"
480 "repo": "home-manager",
481 "type": "github"
482 }325 }
483 },326 },
484 "home-manager_2": {327 "lix-module": {
485 "inputs": {328 "inputs": {
329 "flake-utils": "flake-utils",
330 "flakey-profile": "flakey-profile",
331 "lix": "lix",
486 "nixpkgs": [332 "nixpkgs": [
487 "stylix",
488 "nixpkgs"333 "nixpkgs"
489 ]334 ]
490 },335 },
491 "locked": {336 "locked": {
492 "lastModified": 1747763032,337 "lastModified": 1746838955,
493 "narHash": "sha256-9j3oCbemeH7bTVXJ3pDWxOptbxDx2SdK1jY2AHpjQiw=",338 "narHash": "sha256-11R4K3iAx4tLXjUs+hQ5K90JwDABD/XHhsM9nkeS5N8=",
494 "owner": "nix-community",339 "rev": "cd2a9c028df820a83ca2807dc6c6e7abc3dfa7fc",
495 "repo": "home-manager",340 "type": "tarball",
496 "rev": "29dda415f5b2178278283856c6f9f7b48a2a4353",341 "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/cd2a9c028df820a83ca2807dc6c6e7abc3dfa7fc.tar.gz?rev=cd2a9c028df820a83ca2807dc6c6e7abc3dfa7fc"
497 "type": "github"
498 },
499 "original": {
500 "owner": "nix-community",
501 "repo": "home-manager",
502 "type": "github"
503 }
504 },
505 "langref": {
506 "flake": false,
507 "locked": {
508 "narHash": "sha256-O6p2tiKD8ZMhSX+DeA/o5hhAvcPkU2J9lFys/r11peY=",
509 "type": "file",
510 "url": "https://raw.githubusercontent.com/ziglang/zig/0fb2015fd3422fc1df364995f9782dfe7255eccd/doc/langref.html.in"
511 },342 },
512 "original": {343 "original": {
513 "type": "file",344 "type": "tarball",
514 "url": "https://raw.githubusercontent.com/ziglang/zig/0fb2015fd3422fc1df364995f9782dfe7255eccd/doc/langref.html.in"345 "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.93.0.tar.gz"
515 }346 }
516 },347 },
517 "mnw": {348 "mnw": {
518 "locked": {349 "locked": {
519 "lastModified": 1747499976,350 "lastModified": 1748710831,
520 "narHash": "sha256-YTiSI4WLbk0CleXeBheYmKZV6iqKyBpyoh1e+vcQzu4=",351 "narHash": "sha256-eZu2yH3Y2eA9DD3naKWy/sTxYS5rPK2hO7vj8tvUCSU=",
521 "owner": "Gerg-L",352 "owner": "Gerg-L",
522 "repo": "mnw",353 "repo": "mnw",
523 "rev": "72433a144c4ac16931e9148f78db4a0e4c147441",354 "rev": "cff958a4e050f8d917a6ff3a5624bc4681c6187d",
524 "type": "github"355 "type": "github"
525 },356 },
526 "original": {357 "original": {
...@@ -531,17 +362,17 @@...@@ -531,17 +362,17 @@
531 },362 },
532 "moonlight": {363 "moonlight": {
533 "inputs": {364 "inputs": {
534 "flake-utils": "flake-utils",365 "flake-utils": "flake-utils_2",
535 "nixpkgs": [366 "nixpkgs": [
536 "nixpkgs"367 "nixpkgs"
537 ]368 ]
538 },369 },
539 "locked": {370 "locked": {
540 "lastModified": 1747413594,371 "lastModified": 1750621684,
541 "narHash": "sha256-cFsVYlIkSNEpGw4qT9Eea6sa1+dZyaCRZNrgQTc8wu4=",372 "narHash": "sha256-E8iHTYK9iUtIjYgBNj54Xeulj9WaxSGDbzOLLFhCSqA=",
542 "owner": "moonlight-mod",373 "owner": "moonlight-mod",
543 "repo": "moonlight",374 "repo": "moonlight",
544 "rev": "fc7c0119e923d50ce8873ea654fa7542f60be27f",375 "rev": "9398874e59f5e2b8485c489ce6c0f6c9c7d210a0",
545 "type": "github"376 "type": "github"
546 },377 },
547 "original": {378 "original": {
...@@ -557,11 +388,11 @@...@@ -557,11 +388,11 @@
557 ]388 ]
558 },389 },
559 "locked": {390 "locked": {
560 "lastModified": 1747847914,391 "lastModified": 1751375534,
561 "narHash": "sha256-Ut9RZVAaKUD4A3RrXP5RhNVZ+LVy5mL4mMmiTDWaQE8=",392 "narHash": "sha256-9z1W64dDVtVxqgPzUbjIQqRfygg1hdivUOZ6d/H+yFg=",
562 "owner": "viperML",393 "owner": "viperML",
563 "repo": "nh",394 "repo": "nh",
564 "rev": "45048d3e9f183f3f09fddf667841b7327c04ad8f",395 "rev": "d0abb8eebe32f79ce4659e68dd777cf497a5d3d2",
565 "type": "github"396 "type": "github"
566 },397 },
567 "original": {398 "original": {
...@@ -572,22 +403,17 @@...@@ -572,22 +403,17 @@
572 },403 },
573 "nil": {404 "nil": {
574 "inputs": {405 "inputs": {
575 "flake-utils": [
576 "nvf",
577 "flake-utils"
578 ],
579 "nixpkgs": [406 "nixpkgs": [
580 "nvf",407 "nvf",
581 "nixpkgs"408 "nixpkgs"
582 ],409 ]
583 "rust-overlay": "rust-overlay_2"
584 },410 },
585 "locked": {411 "locked": {
586 "lastModified": 1741118843,412 "lastModified": 1750047244,
587 "narHash": "sha256-ggXU3RHv6NgWw+vc+HO4/9n0GPufhTIUjVuLci8Za8c=",413 "narHash": "sha256-vluLARrk4485npdyHOj8XKr0yk6H22pNf+KVRNL+i/Y=",
588 "owner": "oxalica",414 "owner": "oxalica",
589 "repo": "nil",415 "repo": "nil",
590 "rev": "577d160da311cc7f5042038456a0713e9863d09e",416 "rev": "870a4b1b5f12004832206703ac15aa85c42c247b",
591 "type": "github"417 "type": "github"
592 },418 },
593 "original": {419 "original": {
...@@ -603,11 +429,11 @@...@@ -603,11 +429,11 @@
603 ]429 ]
604 },430 },
605 "locked": {431 "locked": {
606 "lastModified": 1747540584,432 "lastModified": 1751170039,
607 "narHash": "sha256-cxCQ413JTUuRv9Ygd8DABJ1D6kuB/nTfQqC0Lu9C0ls=",433 "narHash": "sha256-3EKpUmyGmHYA/RuhZjINTZPU+OFWko0eDwazUOW64nw=",
608 "owner": "nix-community",434 "owner": "nix-community",
609 "repo": "nix-index-database",435 "repo": "nix-index-database",
610 "rev": "ec179dd13fb7b4c6844f55be91436f7857226dce",436 "rev": "9c932ae632d6b5150515e5749b198c175d8565db",
611 "type": "github"437 "type": "github"
612 },438 },
613 "original": {439 "original": {
...@@ -618,7 +444,7 @@...@@ -618,7 +444,7 @@
618 },444 },
619 "nix-options-search": {445 "nix-options-search": {
620 "inputs": {446 "inputs": {
621 "flake-utils": "flake-utils_2",447 "flake-utils": "flake-utils_3",
622 "gitignore": "gitignore",448 "gitignore": "gitignore",
623 "nixpkgs": "nixpkgs"449 "nixpkgs": "nixpkgs"
624 },450 },
...@@ -636,29 +462,6 @@...@@ -636,29 +462,6 @@
636 "type": "github"462 "type": "github"
637 }463 }
638 },464 },
639 "nixos-cosmic": {
640 "inputs": {
641 "flake-compat": "flake-compat",
642 "nixpkgs": [
643 "nixpkgs"
644 ],
645 "nixpkgs-stable": "nixpkgs-stable",
646 "rust-overlay": "rust-overlay"
647 },
648 "locked": {
649 "lastModified": 1747826251,
650 "narHash": "sha256-Fe4AXmnnAKnh/wIe1ao4Pv/8m6WGA1ujwp6VApgos30=",
651 "owner": "lilyinstarlight",
652 "repo": "nixos-cosmic",
653 "rev": "9a67b4a289cd8994080398d40b57cfde8e8cfb0a",
654 "type": "github"
655 },
656 "original": {
657 "owner": "lilyinstarlight",
658 "repo": "nixos-cosmic",
659 "type": "github"
660 }
661 },
662 "nixpkgs": {465 "nixpkgs": {
663 "locked": {466 "locked": {
664 "lastModified": 1736012469,467 "lastModified": 1736012469,
...@@ -677,11 +480,11 @@...@@ -677,11 +480,11 @@
677 },480 },
678 "nixpkgs-lib": {481 "nixpkgs-lib": {
679 "locked": {482 "locked": {
680 "lastModified": 1743296961,483 "lastModified": 1748740939,
681 "narHash": "sha256-b1EdN3cULCqtorQ4QeWgLMrd5ZGOjLSLemfa00heasc=",484 "narHash": "sha256-rQaysilft1aVMwF14xIdGS3sj1yHlI6oKQNBRTF40cc=",
682 "owner": "nix-community",485 "owner": "nix-community",
683 "repo": "nixpkgs.lib",486 "repo": "nixpkgs.lib",
684 "rev": "e4822aea2a6d1cdd36653c134cacfd64c97ff4fa",487 "rev": "656a64127e9d791a334452c6b6606d17539476e2",
685 "type": "github"488 "type": "github"
686 },489 },
687 "original": {490 "original": {
...@@ -690,44 +493,13 @@...@@ -690,44 +493,13 @@
690 "type": "github"493 "type": "github"
691 }494 }
692 },495 },
693 "nixpkgs-stable": {
694 "locked": {
695 "lastModified": 1747676747,
696 "narHash": "sha256-LXkWBVqilgx7Pohwqu/ABxDVw+Cmi5/Mj2S2mpUH0Fw=",
697 "owner": "NixOS",
698 "repo": "nixpkgs",
699 "rev": "72841a4a8761d1aed92ef6169a636872c986c76d",
700 "type": "github"
701 },
702 "original": {
703 "owner": "NixOS",
704 "ref": "nixos-24.11",
705 "repo": "nixpkgs",
706 "type": "github"
707 }
708 },
709 "nixpkgs-stable_2": {
710 "locked": {
711 "lastModified": 1720535198,
712 "narHash": "sha256-zwVvxrdIzralnSbcpghA92tWu2DV2lwv89xZc8MTrbg=",
713 "owner": "NixOS",
714 "repo": "nixpkgs",
715 "rev": "205fd4226592cc83fd4c0885a3e4c9c400efabb5",
716 "type": "github"
717 },
718 "original": {
719 "id": "nixpkgs",
720 "ref": "nixos-23.11",
721 "type": "indirect"
722 }
723 },
724 "nixpkgs_2": {496 "nixpkgs_2": {
725 "locked": {497 "locked": {
726 "lastModified": 1747744144,498 "lastModified": 1751271578,
727 "narHash": "sha256-W7lqHp0qZiENCDwUZ5EX/lNhxjMdNapFnbErcbnP11Q=",499 "narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=",
728 "owner": "NixOS",500 "owner": "NixOS",
729 "repo": "nixpkgs",501 "repo": "nixpkgs",
730 "rev": "2795c506fe8fb7b03c36ccb51f75b6df0ab2553f",502 "rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df",
731 "type": "github"503 "type": "github"
732 },504 },
733 "original": {505 "original": {
...@@ -768,49 +540,23 @@...@@ -768,49 +540,23 @@
768 "type": "github"540 "type": "github"
769 }541 }
770 },542 },
771 "nur": {
772 "inputs": {
773 "flake-parts": [
774 "stylix",
775 "flake-parts"
776 ],
777 "nixpkgs": [
778 "stylix",
779 "nixpkgs"
780 ],
781 "treefmt-nix": "treefmt-nix"
782 },
783 "locked": {
784 "lastModified": 1746056780,
785 "narHash": "sha256-/emueQGaoT4vu0QjU9LDOG5roxRSfdY0K2KkxuzazcM=",
786 "owner": "nix-community",
787 "repo": "NUR",
788 "rev": "d476cd0972dd6242d76374fcc277e6735715c167",
789 "type": "github"
790 },
791 "original": {
792 "owner": "nix-community",
793 "repo": "NUR",
794 "type": "github"
795 }
796 },
797 "nvf": {543 "nvf": {
798 "inputs": {544 "inputs": {
799 "flake-parts": "flake-parts",545 "flake-parts": "flake-parts",
800 "flake-utils": "flake-utils_3",546 "flake-utils": "flake-utils_4",
801 "mnw": "mnw",547 "mnw": "mnw",
802 "nil": "nil",548 "nil": "nil",
803 "nixpkgs": [549 "nixpkgs": [
804 "nixpkgs"550 "nixpkgs"
805 ],551 ],
806 "systems": "systems_4"552 "systems": "systems_5"
807 },553 },
808 "locked": {554 "locked": {
809 "lastModified": 1747525582,555 "lastModified": 1751186226,
810 "narHash": "sha256-oEZ6DV4bPcNZIuwW5Kcd+/zT3PMkXse2kX/3jHoomGk=",556 "narHash": "sha256-Bt7jtmCW72JUPxOIrV73qBTAUOy4qvJXsls2ERDUcGo=",
811 "owner": "notashelf",557 "owner": "notashelf",
812 "repo": "nvf",558 "repo": "nvf",
813 "rev": "d3a0e7029ac57eef1120225973247851c5b967b5",559 "rev": "5bad5dd94ce5ea3b40b08d9e6802e69d02198d21",
814 "type": "github"560 "type": "github"
815 },561 },
816 "original": {562 "original": {
...@@ -836,16 +582,15 @@...@@ -836,16 +582,15 @@
836 "apple-fonts": "apple-fonts",582 "apple-fonts": "apple-fonts",
837 "darwin": "darwin",583 "darwin": "darwin",
838 "home-manager": "home-manager",584 "home-manager": "home-manager",
585 "lix-module": "lix-module",
839 "moonlight": "moonlight",586 "moonlight": "moonlight",
840 "nh": "nh",587 "nh": "nh",
841 "nix-index-database": "nix-index-database",588 "nix-index-database": "nix-index-database",
842 "nix-options-search": "nix-options-search",589 "nix-options-search": "nix-options-search",
843 "nixos-cosmic": "nixos-cosmic",
844 "nixpkgs": "nixpkgs_2",590 "nixpkgs": "nixpkgs_2",
845 "nixpkgs-stable": "nixpkgs-stable_2",
846 "nvf": "nvf",591 "nvf": "nvf",
847 "rust-overlay": "rust-overlay_3",592 "rust-overlay": "rust-overlay",
848 "stylix": "stylix",593 "zen-browser": "zen-browser",
849 "zig": "zig",594 "zig": "zig",
850 "zls": "zls"595 "zls": "zls"
851 }596 }
...@@ -853,58 +598,15 @@...@@ -853,58 +598,15 @@
853 "rust-overlay": {598 "rust-overlay": {
854 "inputs": {599 "inputs": {
855 "nixpkgs": [600 "nixpkgs": [
856 "nixos-cosmic",
857 "nixpkgs"601 "nixpkgs"
858 ]602 ]
859 },603 },
860 "locked": {604 "locked": {
861 "lastModified": 1747795013,605 "lastModified": 1751423951,
862 "narHash": "sha256-c7i0xJ+xFhgjO9SWHYu5dF/7lq63RPDvwKAdjc6VCE4=",606 "narHash": "sha256-AowKhJGplXRkAngSvb+32598DTiI6LOzhAnzgvbCtYM=",
863 "owner": "oxalica",607 "owner": "oxalica",
864 "repo": "rust-overlay",608 "repo": "rust-overlay",
865 "rev": "6b1cf12374361859242a562e1933a7930649131a",609 "rev": "1684ed5b15859b655caf41b467d046e29a994d04",
866 "type": "github"
867 },
868 "original": {
869 "owner": "oxalica",
870 "repo": "rust-overlay",
871 "type": "github"
872 }
873 },
874 "rust-overlay_2": {
875 "inputs": {
876 "nixpkgs": [
877 "nvf",
878 "nil",
879 "nixpkgs"
880 ]
881 },
882 "locked": {
883 "lastModified": 1741055476,
884 "narHash": "sha256-52vwEV0oS2lCnx3c/alOFGglujZTLmObit7K8VblnS8=",
885 "owner": "oxalica",
886 "repo": "rust-overlay",
887 "rev": "aefb7017d710f150970299685e8d8b549d653649",
888 "type": "github"
889 },
890 "original": {
891 "owner": "oxalica",
892 "repo": "rust-overlay",
893 "type": "github"
894 }
895 },
896 "rust-overlay_3": {
897 "inputs": {
898 "nixpkgs": [
899 "nixpkgs"
900 ]
901 },
902 "locked": {
903 "lastModified": 1747795013,
904 "narHash": "sha256-c7i0xJ+xFhgjO9SWHYu5dF/7lq63RPDvwKAdjc6VCE4=",
905 "owner": "oxalica",
906 "repo": "rust-overlay",
907 "rev": "6b1cf12374361859242a562e1933a7930649131a",
908 "type": "github"610 "type": "github"
909 },611 },
910 "original": {612 "original": {
...@@ -997,43 +699,6 @@...@@ -997,43 +699,6 @@
997 "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg"699 "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg"
998 }700 }
999 },701 },
1000 "stylix": {
1001 "inputs": {
1002 "base16": "base16",
1003 "base16-fish": "base16-fish",
1004 "base16-helix": "base16-helix",
1005 "base16-vim": "base16-vim",
1006 "firefox-gnome-theme": "firefox-gnome-theme",
1007 "flake-compat": "flake-compat_2",
1008 "flake-parts": "flake-parts_2",
1009 "git-hooks": "git-hooks",
1010 "gnome-shell": "gnome-shell",
1011 "home-manager": "home-manager_2",
1012 "nixpkgs": [
1013 "nixpkgs"
1014 ],
1015 "nur": "nur",
1016 "systems": "systems_5",
1017 "tinted-foot": "tinted-foot",
1018 "tinted-kitty": "tinted-kitty",
1019 "tinted-schemes": "tinted-schemes",
1020 "tinted-tmux": "tinted-tmux",
1021 "tinted-zed": "tinted-zed"
1022 },
1023 "locked": {
1024 "lastModified": 1747847674,
1025 "narHash": "sha256-XYVaUKQrda7WOSonewDtpvm8tENIcwWrErobUYMTMoc=",
1026 "owner": "danth",
1027 "repo": "stylix",
1028 "rev": "4ce349da56e075f7e3456b48731cbbf5ae8b1eb8",
1029 "type": "github"
1030 },
1031 "original": {
1032 "owner": "danth",
1033 "repo": "stylix",
1034 "type": "github"
1035 }
1036 },
1037 "systems": {702 "systems": {
1038 "locked": {703 "locked": {
1039 "lastModified": 1681028828,704 "lastModified": 1681028828,
...@@ -1154,121 +819,38 @@...@@ -1154,121 +819,38 @@
1154 "type": "github"819 "type": "github"
1155 }820 }
1156 },821 },
1157 "tinted-foot": {822 "zen-browser": {
1158 "flake": false,
1159 "locked": {
1160 "lastModified": 1726913040,
1161 "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
1162 "owner": "tinted-theming",
1163 "repo": "tinted-foot",
1164 "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
1165 "type": "github"
1166 },
1167 "original": {
1168 "owner": "tinted-theming",
1169 "repo": "tinted-foot",
1170 "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
1171 "type": "github"
1172 }
1173 },
1174 "tinted-kitty": {
1175 "flake": false,
1176 "locked": {
1177 "lastModified": 1735730497,
1178 "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=",
1179 "owner": "tinted-theming",
1180 "repo": "tinted-kitty",
1181 "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa",
1182 "type": "github"
1183 },
1184 "original": {
1185 "owner": "tinted-theming",
1186 "repo": "tinted-kitty",
1187 "type": "github"
1188 }
1189 },
1190 "tinted-schemes": {
1191 "flake": false,
1192 "locked": {
1193 "lastModified": 1744974599,
1194 "narHash": "sha256-Fg+rdGs5FAgfkYNCs74lnl8vkQmiZVdBsziyPhVqrlY=",
1195 "owner": "tinted-theming",
1196 "repo": "schemes",
1197 "rev": "28c26a621123ad4ebd5bbfb34ab39421c0144bdd",
1198 "type": "github"
1199 },
1200 "original": {
1201 "owner": "tinted-theming",
1202 "repo": "schemes",
1203 "type": "github"
1204 }
1205 },
1206 "tinted-tmux": {
1207 "flake": false,
1208 "locked": {
1209 "lastModified": 1745111349,
1210 "narHash": "sha256-udV+nHdpqgkJI9D0mtvvAzbqubt9jdifS/KhTTbJ45w=",
1211 "owner": "tinted-theming",
1212 "repo": "tinted-tmux",
1213 "rev": "e009f18a01182b63559fb28f1c786eb027c3dee9",
1214 "type": "github"
1215 },
1216 "original": {
1217 "owner": "tinted-theming",
1218 "repo": "tinted-tmux",
1219 "type": "github"
1220 }
1221 },
1222 "tinted-zed": {
1223 "flake": false,
1224 "locked": {
1225 "lastModified": 1725758778,
1226 "narHash": "sha256-8P1b6mJWyYcu36WRlSVbuj575QWIFZALZMTg5ID/sM4=",
1227 "owner": "tinted-theming",
1228 "repo": "base16-zed",
1229 "rev": "122c9e5c0e6f27211361a04fae92df97940eccf9",
1230 "type": "github"
1231 },
1232 "original": {
1233 "owner": "tinted-theming",
1234 "repo": "base16-zed",
1235 "type": "github"
1236 }
1237 },
1238 "treefmt-nix": {
1239 "inputs": {823 "inputs": {
1240 "nixpkgs": [824 "nixpkgs": [
1241 "stylix",
1242 "nur",
1243 "nixpkgs"825 "nixpkgs"
1244 ]826 ]
1245 },827 },
1246 "locked": {828 "locked": {
1247 "lastModified": 1733222881,829 "lastModified": 1751256876,
1248 "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",830 "narHash": "sha256-4A8LmE0Hd9RvQwSEPYdITJebpLt7J99VY76IphzqZKc=",
1249 "owner": "numtide",831 "owner": "youwen5",
1250 "repo": "treefmt-nix",832 "repo": "zen-browser-flake",
1251 "rev": "49717b5af6f80172275d47a418c9719a31a78b53",833 "rev": "615b9244dc7ac777b8f0bc3a9cb7290936e4fcf9",
1252 "type": "github"834 "type": "github"
1253 },835 },
1254 "original": {836 "original": {
1255 "owner": "numtide",837 "owner": "youwen5",
1256 "repo": "treefmt-nix",838 "repo": "zen-browser-flake",
1257 "type": "github"839 "type": "github"
1258 }840 }
1259 },841 },
1260 "zig": {842 "zig": {
1261 "inputs": {843 "inputs": {
1262 "flake-compat": "flake-compat_3",844 "flake-compat": "flake-compat",
1263 "flake-utils": "flake-utils_4",845 "flake-utils": "flake-utils_5",
1264 "nixpkgs": "nixpkgs_3"846 "nixpkgs": "nixpkgs_3"
1265 },847 },
1266 "locked": {848 "locked": {
1267 "lastModified": 1747829603,849 "lastModified": 1751458413,
1268 "narHash": "sha256-H8Vj7GSOyHgAUTDM/EkkdiTyEZg2C1UUlsp/fDSbxNQ=",850 "narHash": "sha256-eyKdTzRaY4blNs/GVJODh4E+16wpEKmlnQUpGf9e9gc=",
1269 "owner": "mitchellh",851 "owner": "mitchellh",
1270 "repo": "zig-overlay",852 "repo": "zig-overlay",
1271 "rev": "53899a028ece2f77939c08c59d547416a59086c0",853 "rev": "4f33e11d99060c5cb2bdc380a11a9b23858dcfde",
1272 "type": "github"854 "type": "github"
1273 },855 },
1274 "original": {856 "original": {
...@@ -1279,8 +861,8 @@...@@ -1279,8 +861,8 @@
1279 },861 },
1280 "zig-overlay": {862 "zig-overlay": {
1281 "inputs": {863 "inputs": {
1282 "flake-compat": "flake-compat_4",864 "flake-compat": "flake-compat_2",
1283 "flake-utils": "flake-utils_6",865 "flake-utils": "flake-utils_7",
1284 "nixpkgs": [866 "nixpkgs": [
1285 "zls",867 "zls",
1286 "nixpkgs"868 "nixpkgs"
...@@ -1302,8 +884,8 @@...@@ -1302,8 +884,8 @@
1302 },884 },
1303 "zls": {885 "zls": {
1304 "inputs": {886 "inputs": {
1305 "flake-utils": "flake-utils_5",887 "flake-utils": "flake-utils_6",
1306 "gitignore": "gitignore_3",888 "gitignore": "gitignore_2",
1307 "langref": "langref",889 "langref": "langref",
1308 "nixpkgs": "nixpkgs_4",890 "nixpkgs": "nixpkgs_4",
1309 "zig-overlay": "zig-overlay"891 "zig-overlay": "zig-overlay"
flake.nix+11-9
...@@ -2,7 +2,11 @@...@@ -2,7 +2,11 @@
2 description = "multi device configuration flake";2 description = "multi device configuration flake";
3 inputs = {3 inputs = {
4 nixpkgs.url = "nixpkgs/nixos-unstable";4 nixpkgs.url = "nixpkgs/nixos-unstable";
5 nixpkgs-stable.url = "nixpkgs/nixos-23.11";5
6 lix-module = {
7 url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.0.tar.gz";
8 inputs.nixpkgs.follows = "nixpkgs";
9 };
610
7 home-manager.url = "github:nix-community/home-manager/master";11 home-manager.url = "github:nix-community/home-manager/master";
8 home-manager.inputs.nixpkgs.follows = "nixpkgs";12 home-manager.inputs.nixpkgs.follows = "nixpkgs";
...@@ -22,15 +26,13 @@...@@ -22,15 +26,13 @@
22 zig.url = "github:mitchellh/zig-overlay";26 zig.url = "github:mitchellh/zig-overlay";
23 zls.url = "github:zigtools/zls?rev=a26718049a8657d4da04c331aeced1697bc7652b";27 zls.url = "github:zigtools/zls?rev=a26718049a8657d4da04c331aeced1697bc7652b";
2428
25 stylix.url = "github:danth/stylix";
26 stylix.inputs.nixpkgs.follows = "nixpkgs";
27
28 moonlight.url = "github:moonlight-mod/moonlight"; # Add `/develop` to the flake URL to use nightly.29 moonlight.url = "github:moonlight-mod/moonlight"; # Add `/develop` to the flake URL to use nightly.
29 moonlight.inputs.nixpkgs.follows = "nixpkgs";30 moonlight.inputs.nixpkgs.follows = "nixpkgs";
3031
31 nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic";32 zen-browser = {
32 nixos-cosmic.inputs.nixpkgs.follows = "nixpkgs";33 url = "github:youwen5/zen-browser-flake";
3334 inputs.nixpkgs.follows = "nixpkgs";
35 };
34 nh.url = "github:viperML/nh";36 nh.url = "github:viperML/nh";
35 nh.inputs.nixpkgs.follows = "nixpkgs";37 nh.inputs.nixpkgs.follows = "nixpkgs";
3638
...@@ -43,7 +45,7 @@...@@ -43,7 +45,7 @@
43 {45 {
44 self,46 self,
45 nixpkgs,47 nixpkgs,
46 nixos-cosmic,48 lix-module,
47 darwin,49 darwin,
48 ...50 ...
49 }@inputs:51 }@inputs:
...@@ -92,6 +94,7 @@...@@ -92,6 +94,7 @@
92 inherit94 inherit
93 overlays95 overlays
94 nixpkgs96 nixpkgs
97 lix-module
95 inputs98 inputs
96 mkNeovim99 mkNeovim
97 ;100 ;
...@@ -127,7 +130,6 @@...@@ -127,7 +130,6 @@
127 host = "desktop";130 host = "desktop";
128 system = "x86_64-linux";131 system = "x86_64-linux";
129 extraModules = [132 extraModules = [
130 nixos-cosmic.nixosModules.default
131 ];133 ];
132 };134 };
133 # natalie's laptop135 # natalie's laptop
lib/mkSystem.nix+59-78
...@@ -2,32 +2,24 @@...@@ -2,32 +2,24 @@
2# particular architecture.2# particular architecture.
3{3{
4 nixpkgs,4 nixpkgs,
5 lix-module,
5 overlays,6 overlays,
6 inputs,7 inputs,
7 mkNeovim,8 mkNeovim,
8}: name: {9}:
10name:
11{
9 user, # ./users/{name}12 user, # ./users/{name}
10 host, # ./users/{name}/{host}13 host, # ./users/{name}/{host}
11 system, # arch-os14 system, # arch-os
12 extraModules ? [],15 extraModules ? [ ],
13}: let16}:
17let
14 darwin = nixpkgs.lib.strings.hasSuffix "-darwin" system;18 darwin = nixpkgs.lib.strings.hasSuffix "-darwin" system;
15 getInputModule = a: b:19 getInputModule = a: b: inputs.${a}.${if darwin then "darwinModules" else "nixosModules"}.${b};
16 inputs.${
17 a
18 }.${
19 if darwin
20 then "darwinModules"
21 else "nixosModules"
22 }.${
23 b
24 };
2520
26 # NixOS vs nix-darwin functions21 # NixOS vs nix-darwin functions
27 systemFunc =22 systemFunc = if darwin then inputs.darwin.lib.darwinSystem else nixpkgs.lib.nixosSystem;
28 if darwin
29 then inputs.darwin.lib.darwinSystem
30 else nixpkgs.lib.nixosSystem;
3123
32 userDir = ../users + "/${user}";24 userDir = ../users + "/${user}";
33 userConfig = import (userDir + "/user.nix");25 userConfig = import (userDir + "/user.nix");
...@@ -38,10 +30,7 @@...@@ -38,10 +30,7 @@
38 hostHomePath = hostDir + "/home.nix";30 hostHomePath = hostDir + "/home.nix";
39 userHomePath = userDir + "/home.nix";31 userHomePath = userDir + "/home.nix";
4032
41 pathOrNull = a:33 pathOrNull = a: if builtins.pathExists a then a else null;
42 if builtins.pathExists a
43 then a
44 else null;
4534
46 # Arguments passed to all module files35 # Arguments passed to all module files
47 args = {36 args = {
...@@ -68,18 +57,14 @@...@@ -68,18 +57,14 @@
68 term, # preferred $TERM57 term, # preferred $TERM
69 editor, # preferred $EDITOR58 editor, # preferred $EDITOR
70 browser ? null, # preferred $BROWSER59 browser ? null, # preferred $BROWSER
71 } @ user:60 }@user:
72 user61 user
73 )62 )
74 userConfig;63 userConfig;
75 };64 };
76 systemSettings = rec {65 systemSettings = rec {
77 inherit darwin;66 inherit darwin;
78 homeDir = "/${67 homeDir = "/${if darwin then "Users" else "home"}/${userConfig.username}";
79 if darwin
80 then "Users"
81 else "home"
82 }/${userConfig.username}";
83 };68 };
8469
85 mainHomeImports = builtins.filter (f: f != null) [70 mainHomeImports = builtins.filter (f: f != null) [
...@@ -92,60 +77,56 @@...@@ -92,60 +77,56 @@
92 }77 }
93 ];78 ];
94in79in
95 systemFunc {80systemFunc {
96 inherit system;81 inherit system;
9782
98 modules =83 modules =
99 builtins.filter (f: f != null) [84 builtins.filter (f: f != null) [
100 # Apply our overlays. Overlays are keyed by system type so we have85 # Apply our overlays. Overlays are keyed by system type so we have
101 # to go through and apply our system type. We do this first so86 # to go through and apply our system type. We do this first so
102 # the overlays are available globally.87 # the overlays are available globally.
103 {nixpkgs.overlays = overlays;}88 { nixpkgs.overlays = overlays; }
10489
105 # Modules shared between nix-darwin and NixOS90 # Use lix (alternative nix implementation)
106 ../modules/shared91 # https://lix.systems/add-to-config/#flake-based-configurations
107 # Modules for the specific OS92 lix-module.nixosModules.default
108 (93 # (getInputModule "lix-module" "default")
109 if darwin
110 then ../modules/macos
111 else ../modules/nixos
112 )
11394
114 # The user-wide configuration.nix95 # Modules shared between nix-darwin and NixOS
115 (pathOrNull userConfigPath)96 ../modules/shared
116 # The host-wide configuration.nix97 # Modules for the specific OS
117 (pathOrNull hostConfigPath)98 (if darwin then ../modules/macos else ../modules/nixos)
11899
119 # Set up nix-index and enable comma for easy one-shot command use100 # The user-wide configuration.nix
120 # https://github.com/nix-community/comma101 (pathOrNull userConfigPath)
121 (getInputModule "nix-index-database" "nix-index")102 # The host-wide configuration.nix
122 {programs.nix-index-database.comma.enable = true;}103 (pathOrNull hostConfigPath)
123104
124 # Themes for all programs105 # Set up nix-index and enable comma for easy one-shot command use
125 (getInputModule "stylix" "stylix")106 # https://github.com/nix-community/comma
107 (getInputModule "nix-index-database" "nix-index")
108 { programs.nix-index-database.comma.enable = true; }
126109
127 # Home manager110 # Home manager
128 (getInputModule "home-manager" "home-manager")111 (getInputModule "home-manager" "home-manager")
129 {112 {
130 home-manager = {113 home-manager = {
131 useGlobalPkgs = true;114 useGlobalPkgs = true;
132 useUserPackages = true;115 useUserPackages = true;
133 backupFileExtension = "hm-backup";116 backupFileExtension = "hm-backup";
134 # Arguments passed to all module files117 # Arguments passed to all module files
135 extraSpecialArgs =118 extraSpecialArgs = args // {
136 args119 inherit mainHomeImports;
137 // {
138 inherit mainHomeImports;
139 };
140 # can't find how to make this an array without the param
141 users.${userConfig.username} = ../modules/home;
142 };120 };
143 users.users.${userConfig.username}.home = systemSettings.homeDir;121 # can't find how to make this an array without the param
144 }122 users.${userConfig.username} = ../modules/home;
123 };
124 users.users.${userConfig.username}.home = systemSettings.homeDir;
125 }
145126
146 # Arguments passed to all module files127 # Arguments passed to all module files
147 {config._module.args = args;}128 { config._module.args = args; }
148 ]129 ]
149 # Add extra modules specified from config130 # Add extra modules specified from config
150 ++ extraModules;131 ++ extraModules;
151 }132}
modules/home/default.nix+1-1
...@@ -86,8 +86,8 @@ in...@@ -86,8 +86,8 @@ in
86 };86 };
87 shellInit = ''87 shellInit = ''
88 batman --export-env | source88 batman --export-env | source
89 test -r '/Users/${user.username}/.opam/opam-init/init.fish' && source '/Users/${user.username}/.opam/opam-init/init.fish' > /dev/null 2> /dev/null; or true
89 '';90 '';
90 ##test -r '/Users/${user.username}/.opam/opam-init/init.fish' && source '/Users/${user.username}/.opam/opam-init/init.fish' > /dev/null 2> /dev/null; or true
91 };91 };
92 };92 };
93}93}
modules/home/macos/sketchybar.nix+520-513
...@@ -2,428 +2,339 @@...@@ -2,428 +2,339 @@
2 pkgs,2 pkgs,
3 lib,3 lib,
4 config,4 config,
5 host,
5 ...6 ...
6}: {7}:
8{
7 home.file =9 home.file =
8 lib.attrsets.mapAttrs (file: value: (10 { }
9 lib.attrsets.overrideExisting value {enable = config.shared.darwin.tiling.enable;}11 // lib.optionalAttrs host.darwin (
10 )) {12 lib.attrsets.mapAttrs
11 sketchybarrc = {13 (
12 executable = true;14 file: value: (lib.attrsets.overrideExisting value { enable = config.shared.darwin.tiling.enable; })
13 target = ".config/sketchybar/sketchybarrc";15 )
14 text = ''16 {
15 #!/usr/bin/env sh17 sketchybarrc = {
1618 executable = true;
17 source "$HOME/.config/sketchybar/colors.sh" # Loads all defined colors19 target = ".config/sketchybar/sketchybarrc";
1820 text = ''
19 ITEM_DIR="$HOME/.config/sketchybar/items" # Directory where the items are configured21 #!/usr/bin/env sh
20 PLUGIN_DIR="$HOME/.config/sketchybar/plugins" # Directory where all the plugin scripts are stored22
2123 source "$HOME/.config/sketchybar/colors.sh" # Loads all defined colors
22 FONT="SF Pro" # Needs to have Regular, Bold, Semibold, Heavy and Black variants24
23 PADDINGS=3 # All paddings use this value (icon, label, background)25 ITEM_DIR="$HOME/.config/sketchybar/items" # Directory where the items are configured
2426 PLUGIN_DIR="$HOME/.config/sketchybar/plugins" # Directory where all the plugin scripts are stored
2527
26 # Setting up the general bar appearance and default values28 FONT="SF Pro" # Needs to have Regular, Bold, Semibold, Heavy and Black variants
27 ${pkgs.sketchybar}/bin/sketchybar --bar height=40 \29 PADDINGS=3 # All paddings use this value (icon, label, background)
28 blur_radius=30 \30
29 position=top \31
30 sticky=on \32 # Setting up the general bar appearance and default values
31 padding_left=10 \33 ${pkgs.sketchybar}/bin/sketchybar --bar height=40 \
32 padding_right=1034 blur_radius=30 \
3335 position=top \
3436 sticky=on \
35 ${pkgs.sketchybar}/bin/sketchybar --default icon.font="SF Pro:Semibold:12.0" \37 padding_left=10 \
36 icon.color=$ITEM_COLOR \38 padding_right=10
37 label.font="SF Pro:Semibold:12.0" \39
38 label.color=$ITEM_COLOR \40
39 background.color=$ACCENT_COLOR \41 ${pkgs.sketchybar}/bin/sketchybar --default icon.font="SF Pro:Semibold:12.0" \
40 background.corner_radius=10 \42 icon.color=$ITEM_COLOR \
41 background.height=20 \43 label.font="SF Pro:Semibold:12.0" \
42 padding_left=4 \44 label.color=$ITEM_COLOR \
43 padding_right=4 \45 background.color=$ACCENT_COLOR \
44 icon.padding_left=6 \46 background.corner_radius=10 \
45 icon.padding_right=3 \47 background.height=20 \
46 label.padding_left=3 \48 padding_left=4 \
47 label.padding_right=649 padding_right=4 \
4850 icon.padding_left=6 \
4951 icon.padding_right=3 \
50 # Left52 label.padding_left=3 \
51 # source "$ITEM_DIR/apple.sh"53 label.padding_right=6
52 source "$ITEM_DIR/spaces.sh"54
53 source "$ITEM_DIR/front_app.sh"55
5456 # Left
55 # Center57 # source "$ITEM_DIR/apple.sh"
56 # source "$ITEM_DIR/spotify.sh"58 source "$ITEM_DIR/spaces.sh"
57 source "$ITEM_DIR/calendar.sh"59 source "$ITEM_DIR/front_app.sh"
5860
59 # Right61 # Center
60 source $ITEM_DIR/calendar.sh62 # source "$ITEM_DIR/spotify.sh"
61 source $ITEM_DIR/wifi.sh63 source "$ITEM_DIR/calendar.sh"
62 source $ITEM_DIR/battery.sh64
63 source $ITEM_DIR/volume.sh65 # Right
6466 source $ITEM_DIR/calendar.sh
65 # Forcing all item scripts to run (never do this outside of sketchybarrc)67 source $ITEM_DIR/wifi.sh
66 ${pkgs.sketchybar}/bin/sketchybar --update68 source $ITEM_DIR/battery.sh
6769 source $ITEM_DIR/volume.sh
68 echo "sketchybar configuation loaded.."70
69 '';71 # Forcing all item scripts to run (never do this outside of sketchybarrc)
70 };72 ${pkgs.sketchybar}/bin/sketchybar --update
71 icons = {73
72 executable = true;74 echo "sketchybar configuation loaded.."
73 target = ".config/sketchybar/plugins/icons.sh";75 '';
74 text = ''76 };
75 #!/usr/bin/env sh77 icons = {
7678 executable = true;
77 # Source the icon map with all the application icons79 target = ".config/sketchybar/plugins/icons.sh";
78 source ${pkgs.sketchybar-app-font}/bin/icon_map.sh80 text = ''
7981 #!/usr/bin/env sh
80 # Create a cache directory if it doesn't exist82
81 CACHE_DIR="$HOME/.cache/sketchybar"83 # Source the icon map with all the application icons
82 mkdir -p "$CACHE_DIR"84 source ${pkgs.sketchybar-app-font}/bin/icon_map.sh
8385
84 # Cache file for icon mappings86 # Create a cache directory if it doesn't exist
85 ICON_CACHE="$CACHE_DIR/icon_cache.txt"87 CACHE_DIR="$HOME/.cache/sketchybar"
8688 mkdir -p "$CACHE_DIR"
87 # Create the cache file if it doesn't exist89
88 if [ ! -f "$ICON_CACHE" ]; then90 # Cache file for icon mappings
89 touch "$ICON_CACHE"91 ICON_CACHE="$CACHE_DIR/icon_cache.txt"
90 fi92
9193 # Create the cache file if it doesn't exist
92 # Check if the app is already in cache94 if [ ! -f "$ICON_CACHE" ]; then
93 APP_NAME=$(if [ "$1" = "Zen" ]; then echo "Zen Browser"; else echo "$1"; fi)95 touch "$ICON_CACHE"
94
95 CACHED_ICON=$(grep "^$APP_NAME|" "$ICON_CACHE" | cut -d '|' -f2)
96
97 if [ -n "$CACHED_ICON" ]; then
98 # Cache hit, return the icon
99 echo "$CACHED_ICON"
100 exit 0
101 fi
102
103 # Get icon from the mapping function
104 __icon_map "$APP_NAME"
105
106 if [ -n "$icon_result" ]; then
107 echo "$APP_NAME|$icon_result" >>"$ICON_CACHE"
108 fi
109
110 echo "$icon_result"
111 '';
112 };
113 colors = {
114 executable = true;
115 target = ".config/sketchybar/colors.sh";
116 text = ''
117
118 export TRANSPARENT=0x00ffffff
119
120 # -- Gray Scheme --
121 export ITEM_COLOR=0xff000000
122 export ACCENT_COLOR=0xffc3c6cb
123
124 # -- White Scheme --
125 # export ITEM_COLOR=0xff000000
126 # export ACCENT_COLOR=0xffffffff
127
128 # -- Teal Scheme --
129 # export ITEM_COLOR=0xff000000
130 # export ACCENT_COLOR=0xff2cf9ed
131
132 # -- Purple Scheme --
133 # export ITEM_COLOR=0xff000000
134 # export ACCENT_COLOR=0xffeb46f9
135
136 # -- Red Scheme ---
137 # export ITEM_COLOR=0xff000000
138 # export ACCENT_COLOR=0xffff2453
139
140 # -- Blue Scheme ---
141 # export ITEM_COLOR=0xff000000
142 # export ACCENT_COLOR=0xff15bdf9
143
144 # -- Green Scheme --
145 # export ITEM_COLOR=0xff000000
146 # export ACCENT_COLOR=0xff1dfca1
147
148 # -- Orange Scheme --
149 # export ITEM_COLOR=0xffffffff
150 # export ACCENT_COLOR=0xfff97716
151
152 # -- Yellow Scheme --
153 # export ITEM_COLOR=0xff000000
154 # export ACCENT_COLOR=0xfff7fc17
155 '';
156 };
157 items_wifi = {
158 executable = true;
159 target = ".config/sketchybar/items/wifi.sh";
160 text = ''
161 #!/usr/bin/env/ sh
162
163 sketchybar --add item wifi right \
164 --set wifi \
165 icon="􀙥" \
166 label="Updating..." \
167 script="$PLUGIN_DIR/wifi.sh" \
168 --subscribe wifi wifi_change
169 '';
170 };
171 items_battery = {
172 executable = true;
173 target = ".config/sketchybar/items/battery.sh";
174 text = ''
175 #!/usr/bin/env/ sh
176 sketchybar --add item battery right \
177 --set battery update_freq=180 \
178 script="$PLUGIN_DIR/battery.sh" \
179 --subscribe battery system_woke power_source_change
180 '';
181 };
182 items_calendar = {
183 executable = true;
184 target = ".config/sketchybar/items/calendar.sh";
185 text = ''
186 #!/usr/bin/env sh
187 sketchybar --add item calendar right \
188 --set calendar icon=ô€§ž \
189 update_freq=15 \
190 script="$PLUGIN_DIR/calendar.sh"
191 '';
192 };
193 items_front_app = {
194 executable = true;
195 target = ".config/sketchybar/items/front_app.sh";
196 text = ''
197 #!/usr/bin/env sh
198
199 sketchybar --add item front_app left \
200 --set front_app background.color=$ACCENT_COLOR \
201 icon.color=$ITEM_COLOR \
202 label.color=$ITEM_COLOR \
203 icon.font="sketchybar-app-font:Regular:12.0" \
204 label.font="SF Pro:Semibold:12.0" \
205 script="$PLUGIN_DIR/front_app.sh" \
206 --subscribe front_app front_app_switched
207 '';
208 };
209 items_spaces = {
210 executable = true;
211 target = ".config/sketchybar/items/spaces.sh";
212 text = ''
213 sketchybar --add event aerospace_workspace_change
214
215 sketchybar --add item aerospace_dummy left \
216 --set aerospace_dummy display=0 \
217 script="$PLUGIN_DIR/spaces.sh" \
218 --subscribe aerospace_dummy aerospace_workspace_change
219
220 for m in $(aerospace list-monitors | awk '{print $1}'); do
221 for sid in $(aerospace list-workspaces --monitor $m); do
222 sketchybar --add space space.$sid left \
223 --set space.$sid space=$sid \
224 icon=$sid \
225 background.color=$TRANSPARENT \
226 label.color=$ACCENT_COLOR \
227 icon.color=$ACCENT_COLOR \
228 display=$m \
229 label.font="sketchybar-app-font:Regular:12.0" \
230 icon.font="SF Pro:Semibold:12.0" \
231 label.padding_right=10 \
232 label.y_offset=-1 \
233 click_script="$PLUGIN_DIR/space_click.sh $sid"
234
235 apps=$(aerospace list-windows --monitor "$m" --workspace "$sid" |
236 awk -F '|' '{gsub(/^ *| *$/, "", $2); if (!seen[$2]++) print $2}')
237
238 icon_strip=""
239 if [ "''${apps}" != "" ]; then
240 while read -r app; do
241 icon_strip+=" $($PLUGIN_DIR/icons.sh "$app")"
242 done <<<"''${apps}"
243 else
244 icon_strip=" —"
245 fi96 fi
24697
247 sketchybar --set space.$sid label="$icon_strip"98 # Check if the app is already in cache
24899 APP_NAME=$(if [ "$1" = "Zen" ]; then echo "Zen Browser"; else echo "$1"; fi)
249 done100
250101 CACHED_ICON=$(grep "^$APP_NAME|" "$ICON_CACHE" | cut -d '|' -f2)
251 for empty_space in $(aerospace list-workspaces --monitor $m --empty); do102
252 sketchybar --set space.$empty_space display=0103 if [ -n "$CACHED_ICON" ]; then
253 done104 # Cache hit, return the icon
254 for focus in $(aerospace list-workspaces --focused); do105 echo "$CACHED_ICON"
255 sketchybar --set space.$focus background.drawing=on \106 exit 0
256 background.color=$ACCENT_COLOR \
257 label.color=$ITEM_COLOR \
258 icon.color=$ITEM_COLOR
259 done
260 done
261 '';
262 };
263
264 items_volume = {
265 executable = true;
266 target = ".config/sketchybar/items/volume.sh";
267 text = ''
268 #/usr/bin/env sh
269
270 sketchybar --add item volume right \
271 --set volume script="$PLUGIN_DIR/volume.sh" \
272 --subscribe volume volume_change
273 '';
274 };
275 plugins_wifi = {
276 executable = true;
277 target = ".config/sketchybar/plugins/wifi.sh";
278 text = ''
279 #/usr/bin/env sh
280
281 SSID=$(system_profiler SPAirPortDataType | awk '/Current Network Information:/ { getline; print substr($0, 13, (length($0) - 13)); exit }')
282
283 if [ "$SSID" = "" ]; then
284 sketchybar --set $NAME icon="􀙈" label="Disconnected"
285 else
286 sketchybar --set $NAME icon="􀙇" label="$SSID"
287 fi
288
289 '';
290 };
291 plugins_calendar = {
292 executable = true;
293 target = ".config/sketchybar/plugins/calendar.sh";
294
295 text = ''
296 #/usr/bin/env sh
297
298 sketchybar --set $NAME label="$(date +'%a %d %b %I:%M %p')"
299 '';
300 };
301 plugins_spaces = {
302 executable = true;
303 target = ".config/sketchybar/plugins/spaces.sh";
304 text = ''
305 #!/usr/bin/env sh
306
307 source "$CONFIG_DIR/colors.sh"
308
309 update_workspace_appearance() {
310 local sid=$1
311 local is_focused=$2
312
313 if [ "$is_focused" = "true" ]; then
314 sketchybar --set space.$sid background.drawing=on \
315 background.color=$ACCENT_COLOR \
316 label.color=$ITEM_COLOR \
317 icon.color=$ITEM_COLOR
318 else
319 sketchybar --set space.$sid background.drawing=off \
320 label.color=$ACCENT_COLOR \
321 icon.color=$ACCENT_COLOR
322 fi
323 }
324
325 update_icons() {
326 m=$1
327 sid=$2
328
329 apps=$(aerospace list-windows --monitor "$m" --workspace "$sid" \
330 | awk -F '|' '{gsub(/^ *| *$/, "", $2); if (!seen[$2]++) print $2}' \
331 | sort)
332
333 icon_strip=""
334 if [ "''${apps}" != "" ]; then
335 while read -r app; do
336 icon_strip+=" $($CONFIG_DIR/plugins/icons.sh "$app")"
337 done <<<"''${apps}"
338 else
339 icon_strip=" —"
340 fi
341
342 sketchybar --animate sin 10 --set space.$sid label="$icon_strip"
343 }
344
345 update_workspace_appearance "$PREV_WORKSPACE" "false"
346 update_workspace_appearance "$FOCUSED_WORKSPACE" "true"
347
348 for m in $(aerospace list-monitors | awk '{print $1}'); do
349 for sid in $(aerospace list-workspaces --monitor $m --visible); do
350 sketchybar --set space.$sid display=$m
351
352 update_icons "$m" "$sid"
353
354 update_icons "$m" "$PREV_WORKSPACE"
355
356 apps=$(aerospace list-windows --monitor "$m" --workspace "$sid" | wc -l)
357 if [ "''${apps}" -eq 0 ]; then
358 sketchybar --set space.$sid display=0
359 fi107 fi
360 done108
361 done109 # Get icon from the mapping function
362 '';110 __icon_map "$APP_NAME"
363 };111
364112 if [ -n "$icon_result" ]; then
365 plugins_space_click = {113 echo "$APP_NAME|$icon_result" >>"$ICON_CACHE"
366 executable = true;114 fi
367 target = ".config/sketchybar/plugins/space_click.sh";115
368 text = ''116 echo "$icon_result"
369 #/usr/bin/env/ sh117 '';
370118 };
371 apps=$(aerospace list-windows --workspace $1 | awk -F '|' '{gsub(/^ *| *$/, "", $2); print $2}')119 colors = {
372 focused=$(aerospace list-workspaces --focused)120 executable = true;
373121 target = ".config/sketchybar/colors.sh";
374 if [ "''${apps}" = "" ] && [ "''${focused}" != "$1" ]; then122 text = ''
375 sketchybar --set space.$1 display=0123
376 else124 export TRANSPARENT=0x00ffffff
377 aerospace workspace $1125
378 fi126 # -- Gray Scheme --
379 '';127 export ITEM_COLOR=0xff000000
380 };128 export ACCENT_COLOR=0xffc3c6cb
381 plugins_volume = {129
382 executable = true;130 # -- White Scheme --
383 target = ".config/sketchybar/plugins/volume.sh";131 # export ITEM_COLOR=0xff000000
384 text = ''132 # export ACCENT_COLOR=0xffffffff
385 #!/usr/bin/env sh133
386134 # -- Teal Scheme --
387 # The volume_change event supplies a $INFO variable in which the current volume135 # export ITEM_COLOR=0xff000000
388 # percentage is passed to the script.136 # export ACCENT_COLOR=0xff2cf9ed
389137
390 if [ "$SENDER" = "volume_change" ]; then138 # -- Purple Scheme --
391139 # export ITEM_COLOR=0xff000000
392 VOLUME=$INFO140 # export ACCENT_COLOR=0xffeb46f9
393141
394 case $VOLUME in142 # -- Red Scheme ---
395 [6-9][0-9] | 100)143 # export ITEM_COLOR=0xff000000
396 ICON="􀊩"144 # export ACCENT_COLOR=0xffff2453
397 ;;145
398 [3-5][0-9])146 # -- Blue Scheme ---
399 ICON="􀊥"147 # export ITEM_COLOR=0xff000000
400 ;;148 # export ACCENT_COLOR=0xff15bdf9
401 [1-9] | [1-2][0-9])149
402 ICON="􀊡"150 # -- Green Scheme --
403 ;;151 # export ITEM_COLOR=0xff000000
404 *) ICON="􀊣" ;;152 # export ACCENT_COLOR=0xff1dfca1
405 esac153
406154 # -- Orange Scheme --
407 sketchybar --set $NAME icon="$ICON" label="$VOLUME%"155 # export ITEM_COLOR=0xffffffff
408 fi156 # export ACCENT_COLOR=0xfff97716
409 '';157
410 };158 # -- Yellow Scheme --
411 plugins_front_app = {159 # export ITEM_COLOR=0xff000000
412 executable = true;160 # export ACCENT_COLOR=0xfff7fc17
413 target = ".config/sketchybar/plugins/front_app.sh";161 '';
414 text = ''162 };
415 # Some events send additional information specific to the event in the $INFO163 items_wifi = {
416 # variable. E.g. the front_app_switched event sends the name of the newly164 executable = true;
417 # focused application in the $INFO variable:165 target = ".config/sketchybar/items/wifi.sh";
418 # https://felixkratz.github.io/SketchyBar/config/events#events-and-scripting166 text = ''
419167 #!/usr/bin/env/ sh
420 app_switched() {168
421 for m in $(aerospace list-monitors | awk '{print $1}'); do169 sketchybar --add item wifi right \
422 for sid in $(aerospace list-workspaces --monitor $m --visible); do170 --set wifi \
423171 icon="􀙥" \
424 apps=$( (echo "$INFO"; aerospace list-windows --monitor "$m" --workspace "$sid" \172 label="Updating..." \
425 | awk -F '|' '{gsub(/^ *| *$/, "", $2); print $2}') \173 script="$PLUGIN_DIR/wifi.sh" \
426 | awk '!seen[$0]++' | sort)174 --subscribe wifi wifi_change
175 '';
176 };
177 items_battery = {
178 executable = true;
179 target = ".config/sketchybar/items/battery.sh";
180 text = ''
181 #!/usr/bin/env/ sh
182 sketchybar --add item battery right \
183 --set battery update_freq=180 \
184 script="$PLUGIN_DIR/battery.sh" \
185 --subscribe battery system_woke power_source_change
186 '';
187 };
188 items_calendar = {
189 executable = true;
190 target = ".config/sketchybar/items/calendar.sh";
191 text = ''
192 #!/usr/bin/env sh
193 sketchybar --add item calendar right \
194 --set calendar icon=ô€§ž \
195 update_freq=15 \
196 script="$PLUGIN_DIR/calendar.sh"
197 '';
198 };
199 items_front_app = {
200 executable = true;
201 target = ".config/sketchybar/items/front_app.sh";
202 text = ''
203 #!/usr/bin/env sh
204
205 sketchybar --add item front_app left \
206 --set front_app background.color=$ACCENT_COLOR \
207 icon.color=$ITEM_COLOR \
208 label.color=$ITEM_COLOR \
209 icon.font="sketchybar-app-font:Regular:12.0" \
210 label.font="SF Pro:Semibold:12.0" \
211 script="$PLUGIN_DIR/front_app.sh" \
212 --subscribe front_app front_app_switched
213 '';
214 };
215 items_spaces = {
216 executable = true;
217 target = ".config/sketchybar/items/spaces.sh";
218 text = ''
219 sketchybar --add event aerospace_workspace_change
220
221 sketchybar --add item aerospace_dummy left \
222 --set aerospace_dummy display=0 \
223 script="$PLUGIN_DIR/spaces.sh" \
224 --subscribe aerospace_dummy aerospace_workspace_change
225
226 for m in $(aerospace list-monitors | awk '{print $1}'); do
227 for sid in $(aerospace list-workspaces --monitor $m); do
228 sketchybar --add space space.$sid left \
229 --set space.$sid space=$sid \
230 icon=$sid \
231 background.color=$TRANSPARENT \
232 label.color=$ACCENT_COLOR \
233 icon.color=$ACCENT_COLOR \
234 display=$m \
235 label.font="sketchybar-app-font:Regular:12.0" \
236 icon.font="SF Pro:Semibold:12.0" \
237 label.padding_right=10 \
238 label.y_offset=-1 \
239 click_script="$PLUGIN_DIR/space_click.sh $sid"
240
241 apps=$(aerospace list-windows --monitor "$m" --workspace "$sid" |
242 awk -F '|' '{gsub(/^ *| *$/, "", $2); if (!seen[$2]++) print $2}')
243
244 icon_strip=""
245 if [ "''${apps}" != "" ]; then
246 while read -r app; do
247 icon_strip+=" $($PLUGIN_DIR/icons.sh "$app")"
248 done <<<"''${apps}"
249 else
250 icon_strip=" —"
251 fi
252
253 sketchybar --set space.$sid label="$icon_strip"
254
255 done
256
257 for empty_space in $(aerospace list-workspaces --monitor $m --empty); do
258 sketchybar --set space.$empty_space display=0
259 done
260 for focus in $(aerospace list-workspaces --focused); do
261 sketchybar --set space.$focus background.drawing=on \
262 background.color=$ACCENT_COLOR \
263 label.color=$ITEM_COLOR \
264 icon.color=$ITEM_COLOR
265 done
266 done
267 '';
268 };
269
270 items_volume = {
271 executable = true;
272 target = ".config/sketchybar/items/volume.sh";
273 text = ''
274 #/usr/bin/env sh
275
276 sketchybar --add item volume right \
277 --set volume script="$PLUGIN_DIR/volume.sh" \
278 --subscribe volume volume_change
279 '';
280 };
281 plugins_wifi = {
282 executable = true;
283 target = ".config/sketchybar/plugins/wifi.sh";
284 text = ''
285 #/usr/bin/env sh
286
287 SSID=$(system_profiler SPAirPortDataType | awk '/Current Network Information:/ { getline; print substr($0, 13, (length($0) - 13)); exit }')
288
289 if [ "$SSID" = "" ]; then
290 sketchybar --set $NAME icon="􀙈" label="Disconnected"
291 else
292 sketchybar --set $NAME icon="􀙇" label="$SSID"
293 fi
294
295 '';
296 };
297 plugins_calendar = {
298 executable = true;
299 target = ".config/sketchybar/plugins/calendar.sh";
300
301 text = ''
302 #/usr/bin/env sh
303
304 sketchybar --set $NAME label="$(date +'%a %d %b %I:%M %p')"
305 '';
306 };
307 plugins_spaces = {
308 executable = true;
309 target = ".config/sketchybar/plugins/spaces.sh";
310 text = ''
311 #!/usr/bin/env sh
312
313 source "$CONFIG_DIR/colors.sh"
314
315 update_workspace_appearance() {
316 local sid=$1
317 local is_focused=$2
318
319 if [ "$is_focused" = "true" ]; then
320 sketchybar --set space.$sid background.drawing=on \
321 background.color=$ACCENT_COLOR \
322 label.color=$ITEM_COLOR \
323 icon.color=$ITEM_COLOR
324 else
325 sketchybar --set space.$sid background.drawing=off \
326 label.color=$ACCENT_COLOR \
327 icon.color=$ACCENT_COLOR
328 fi
329 }
330
331 update_icons() {
332 m=$1
333 sid=$2
334
335 apps=$(aerospace list-windows --monitor "$m" --workspace "$sid" \
336 | awk -F '|' '{gsub(/^ *| *$/, "", $2); if (!seen[$2]++) print $2}' \
337 | sort)
427338
428 icon_strip=""339 icon_strip=""
429 if [ "''${apps}" != "" ]; then340 if [ "''${apps}" != "" ]; then
...@@ -435,101 +346,197 @@...@@ -435,101 +346,197 @@
435 fi346 fi
436347
437 sketchybar --animate sin 10 --set space.$sid label="$icon_strip"348 sketchybar --animate sin 10 --set space.$sid label="$icon_strip"
349 }
350
351 update_workspace_appearance "$PREV_WORKSPACE" "false"
352 update_workspace_appearance "$FOCUSED_WORKSPACE" "true"
353
354 for m in $(aerospace list-monitors | awk '{print $1}'); do
355 for sid in $(aerospace list-workspaces --monitor $m --visible); do
356 sketchybar --set space.$sid display=$m
357
358 update_icons "$m" "$sid"
359
360 update_icons "$m" "$PREV_WORKSPACE"
361
362 apps=$(aerospace list-windows --monitor "$m" --workspace "$sid" | wc -l)
363 if [ "''${apps}" -eq 0 ]; then
364 sketchybar --set space.$sid display=0
365 fi
366 done
438 done367 done
439 done368 '';
440 }369 };
441370
442 if [ "$SENDER" = "front_app_switched" ]; then371 plugins_space_click = {
443372 executable = true;
444 sketchybar --set $NAME label="$INFO" icon="$($CONFIG_DIR/plugins/icons.sh "$INFO")"373 target = ".config/sketchybar/plugins/space_click.sh";
445374 text = ''
446 app_switched375 #/usr/bin/env/ sh
447 fi376
448 '';377 apps=$(aerospace list-windows --workspace $1 | awk -F '|' '{gsub(/^ *| *$/, "", $2); print $2}')
449 };378 focused=$(aerospace list-workspaces --focused)
450 plugins_battery = {379
451 executable = true;380 if [ "''${apps}" = "" ] && [ "''${focused}" != "$1" ]; then
452 target = ".config/sketchybar/plugins/battery.sh";381 sketchybar --set space.$1 display=0
453 text = ''382 else
454 #!/usr/bin/env sh383 aerospace workspace $1
455 source "$CONFIG_DIR/colors.sh"384 fi
456385 '';
457 PERCENTAGE=$(pmset -g batt | grep -Eo "\d+%" | cut -d% -f1)386 };
458 CHARGING=$(pmset -g batt | grep 'AC Power')387 plugins_volume = {
459388 executable = true;
460 if [ $PERCENTAGE = "" ]; then389 target = ".config/sketchybar/plugins/volume.sh";
461 exit 0390 text = ''
462 fi391 #!/usr/bin/env sh
463392
464 case ''${PERCENTAGE} in393 # The volume_change event supplies a $INFO variable in which the current volume
465 9[0-9] | 100)394 # percentage is passed to the script.
466 ICON="􀛨"395
467 COLOR=$ITEM_COLOR396 if [ "$SENDER" = "volume_change" ]; then
468 ;;397
469 [6-8][0-9])398 VOLUME=$INFO
470 ICON="􀺸"399
471 COLOR=$ITEM_COLOR400 case $VOLUME in
472 ;;401 [6-9][0-9] | 100)
473 [3-5][0-9])402 ICON="􀊩"
474 ICON="􀺶"403 ;;
475 COLOR="0xFFd97706"404 [3-5][0-9])
476 ;;405 ICON="􀊥"
477 [1-2][0-9])406 ;;
478 ICON="􀛩"407 [1-9] | [1-2][0-9])
479 COLOR="0xFFf97316"408 ICON="􀊡"
480 ;;409 ;;
481 *)410 *) ICON="􀊣" ;;
482 ICON="􀛪"411 esac
483 COLOR="0xFFef4444"412
484 ;;413 sketchybar --set $NAME icon="$ICON" label="$VOLUME%"
485 esac414 fi
486415 '';
487 if [[ $CHARGING != "" ]]; then416 };
488 ICON="􀢋"417 plugins_front_app = {
489 COLOR=$ITEM_COLOR418 executable = true;
490 fi419 target = ".config/sketchybar/plugins/front_app.sh";
491420 text = ''
492 # The item invoking this script (name $NAME) will get its icon and label421 # Some events send additional information specific to the event in the $INFO
493 # updated with the current battery status422 # variable. E.g. the front_app_switched event sends the name of the newly
494 sketchybar --set $NAME icon="$ICON" label="''${PERCENTAGE}%" icon.color="$COLOR"423 # focused application in the $INFO variable:
495 '';424 # https://felixkratz.github.io/SketchyBar/config/events#events-and-scripting
496 };425
497 plugins_aerospace = {426 app_switched() {
498 executable = true;427 for m in $(aerospace list-monitors | awk '{print $1}'); do
499 target = ".config/sketchybar/plugins/aerospace.sh";428 for sid in $(aerospace list-workspaces --monitor $m --visible); do
500 text = ''429
501 #!/usr/bin/env bash430 apps=$( (echo "$INFO"; aerospace list-windows --monitor "$m" --workspace "$sid" \
502 source "$HOME/.config/sketchybar/colors.sh" # Loads all defined colors431 | awk -F '|' '{gsub(/^ *| *$/, "", $2); print $2}') \
503432 | awk '!seen[$0]++' | sort)
504 highlight_focused_workspace() {433
505 if [[ "$1" = "$FOCUSED_WORKSPACE" ]]434 icon_strip=""
506 then435 if [ "''${apps}" != "" ]; then
507 ${pkgs.sketchybar}/bin/sketchybar --animate tanh 20 --set $NAME icon.highlight=on label.width=0436 while read -r app; do
508 else437 icon_strip+=" $($CONFIG_DIR/plugins/icons.sh "$app")"
509 ${pkgs.sketchybar}/bin/sketchybar --animate tanh 20 --set $NAME icon.highlight=off label.width=dynamic438 done <<<"''${apps}"
510 fi439 else
511 }440 icon_strip=" —"
512441 fi
513 illuminate_mode() {442
514 if [[ "$mode" = "service" ]]443 sketchybar --animate sin 10 --set space.$sid label="$icon_strip"
515 then444 done
516 ${pkgs.sketchybar}/bin/sketchybar --animate tanh 20 --set $NAME background.color=$ORANGE445 done
517 elif [[ "$mode" = "resize" ]]446 }
518 then447
519 ${pkgs.sketchybar}/bin/sketchybar --animate tanh 20 --set $NAME background.color=$GREEN448 if [ "$SENDER" = "front_app_switched" ]; then
520 else449
521 ${pkgs.sketchybar}/bin/sketchybar --animate tanh 20 --set $NAME background.color=$BACKGROUND_1450 sketchybar --set $NAME label="$INFO" icon="$($CONFIG_DIR/plugins/icons.sh "$INFO")"
522 fi451
523 }452 app_switched
524 case "$SENDER" in453 fi
525 "aerospace_workspace_change")454 '';
526 highlight_focused_workspace $1455 };
527 ;;456 plugins_battery = {
528 "aerospace_mode_change")457 executable = true;
529 illuminate_mode458 target = ".config/sketchybar/plugins/battery.sh";
530 ;;459 text = ''
531 esac460 #!/usr/bin/env sh
532 '';461 source "$CONFIG_DIR/colors.sh"
533 };462
534 };463 PERCENTAGE=$(pmset -g batt | grep -Eo "\d+%" | cut -d% -f1)
464 CHARGING=$(pmset -g batt | grep 'AC Power')
465
466 if [ $PERCENTAGE = "" ]; then
467 exit 0
468 fi
469
470 case ''${PERCENTAGE} in
471 9[0-9] | 100)
472 ICON="􀛨"
473 COLOR=$ITEM_COLOR
474 ;;
475 [6-8][0-9])
476 ICON="􀺸"
477 COLOR=$ITEM_COLOR
478 ;;
479 [3-5][0-9])
480 ICON="􀺶"
481 COLOR="0xFFd97706"
482 ;;
483 [1-2][0-9])
484 ICON="􀛩"
485 COLOR="0xFFf97316"
486 ;;
487 *)
488 ICON="􀛪"
489 COLOR="0xFFef4444"
490 ;;
491 esac
492
493 if [[ $CHARGING != "" ]]; then
494 ICON="􀢋"
495 COLOR=$ITEM_COLOR
496 fi
497
498 # The item invoking this script (name $NAME) will get its icon and label
499 # updated with the current battery status
500 sketchybar --set $NAME icon="$ICON" label="''${PERCENTAGE}%" icon.color="$COLOR"
501 '';
502 };
503 plugins_aerospace = {
504 executable = true;
505 target = ".config/sketchybar/plugins/aerospace.sh";
506 text = ''
507 #!/usr/bin/env bash
508 source "$HOME/.config/sketchybar/colors.sh" # Loads all defined colors
509
510 highlight_focused_workspace() {
511 if [[ "$1" = "$FOCUSED_WORKSPACE" ]]
512 then
513 ${pkgs.sketchybar}/bin/sketchybar --animate tanh 20 --set $NAME icon.highlight=on label.width=0
514 else
515 ${pkgs.sketchybar}/bin/sketchybar --animate tanh 20 --set $NAME icon.highlight=off label.width=dynamic
516 fi
517 }
518
519 illuminate_mode() {
520 if [[ "$mode" = "service" ]]
521 then
522 ${pkgs.sketchybar}/bin/sketchybar --animate tanh 20 --set $NAME background.color=$ORANGE
523 elif [[ "$mode" = "resize" ]]
524 then
525 ${pkgs.sketchybar}/bin/sketchybar --animate tanh 20 --set $NAME background.color=$GREEN
526 else
527 ${pkgs.sketchybar}/bin/sketchybar --animate tanh 20 --set $NAME background.color=$BACKGROUND_1
528 fi
529 }
530 case "$SENDER" in
531 "aerospace_workspace_change")
532 highlight_focused_workspace $1
533 ;;
534 "aerospace_mode_change")
535 illuminate_mode
536 ;;
537 esac
538 '';
539 };
540 }
541 );
535}542}
modules/macos/system.nix+4-2
...@@ -4,9 +4,11 @@...@@ -4,9 +4,11 @@
4 pkgs,4 pkgs,
5 lib,5 lib,
6 ...6 ...
7}: let7}:
8let
8 tiling = config.shared.darwin.tiling.enable;9 tiling = config.shared.darwin.tiling.enable;
9in {10in
11{
10 # Use touchid or watch to activate sudo12 # Use touchid or watch to activate sudo
11 security.pam.services.sudo_local = {13 security.pam.services.sudo_local = {
12 enable = true;14 enable = true;
modules/neovim/default.nix+4-1
...@@ -170,7 +170,10 @@...@@ -170,7 +170,10 @@
170 }170 }
171 ];171 ];
172 };172 };
173 image.enable = true;173 image = {
174 enable = true;
175 math.enabled = false;
176 };
174 notifier.timeout = 3000;177 notifier.timeout = 3000;
175 picker = {178 picker = {
176 enable = true;179 enable = true;
modules/nixos/services.nix+1
...@@ -24,6 +24,7 @@...@@ -24,6 +24,7 @@
2424
25 desktopManager.cosmic.enable = true;25 desktopManager.cosmic.enable = true;
26 displayManager.cosmic-greeter.enable = true;26 displayManager.cosmic-greeter.enable = true;
27 desktopManager.cosmic.xwayland.enable = true;
2728
28 # Auto mount devices29 # Auto mount devices
29 udisks2 = {30 udisks2 = {
modules/shared/nix.nix+2-3
...@@ -1,4 +1,5 @@...@@ -1,4 +1,5 @@
1{inputs, ...}: {1{ inputs, ... }:
2{
2 nixpkgs.config = {3 nixpkgs.config = {
3 allowUnfree = true;4 allowUnfree = true;
4 };5 };
...@@ -24,13 +25,11 @@...@@ -24,13 +25,11 @@
24 "https://cache.nixos.org/?priority=10"25 "https://cache.nixos.org/?priority=10"
2526
26 "https://nix-community.cachix.org"27 "https://nix-community.cachix.org"
27 "https://cosmic.cachix.org/"
28 # For haskell28 # For haskell
29 "https://cache.iog.io"29 "https://cache.iog.io"
30 ];30 ];
31 trusted-public-keys = [31 trusted-public-keys = [
32 "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="32 "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
33 "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE="
34 # For haskell33 # For haskell
35 "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="34 "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
36 ];35 ];
modules/shared/user-system-settings.nix-23
...@@ -19,27 +19,4 @@...@@ -19,27 +19,4 @@
19 BROWSER = user.browser;19 BROWSER = user.browser;
20 };20 };
2121
22 stylix = lib.mkIf (user ? "theme" && user.theme != null) {
23 enable = false;
24 base16Scheme = "${pkgs.base16-schemes}/share/themes/${user.theme}.yaml";
25
26 fonts = lib.optionalAttrs (user ? "font") {
27 serif = {
28 package = pkgs.nerd-fonts.${user.font};
29 name = "${user.font} Nerd Font";
30 };
31 sansSerif = {
32 package = pkgs.nerd-fonts.${user.font};
33 name = "${user.font} Nerd Font";
34 };
35 monospace = {
36 package = pkgs.nerd-fonts.${user.font};
37 name = "${user.font} Nerd Font";
38 };
39 emoji = {
40 package = pkgs.twemoji-color-font;
41 name = "Twemoji Color";
42 };
43 };
44 };
45}22}
users/natalie/desktop/configuration.nix+4-3
...@@ -84,8 +84,6 @@...@@ -84,8 +84,6 @@
84 hybrid-sleep.enable = false;84 hybrid-sleep.enable = false;
85 };85 };
8686
87 packages = [ pkgs.observatory ];
88
89 services.monitord.wantedBy = [ "multi-user.target" ];87 services.monitord.wantedBy = [ "multi-user.target" ];
90 };88 };
9189
...@@ -148,7 +146,10 @@...@@ -148,7 +146,10 @@
148 ];146 ];
149 };147 };
150 environment = {148 environment = {
151 sessionVariables.COSMIC_DATA_CONTROL_ENABLED = 1;149 sessionVariables = {
150 COSMIC_DATA_CONTROL_ENABLED = 1;
151 NIXOS_OZONE_WL = "1";
152 };
152 variables.EDITOR = "nvim";153 variables.EDITOR = "nvim";
153154
154 systemPackages = with pkgs; [155 systemPackages = with pkgs; [
users/natalie/desktop/home.nix+3-1
...@@ -8,6 +8,7 @@...@@ -8,6 +8,7 @@
8 ...8 ...
9}:9}:
10{10{
11 programs.mangohud.enable = true;
11 home = {12 home = {
12 stateVersion = "23.05"; # Please read the comment before changing.13 stateVersion = "23.05"; # Please read the comment before changing.
1314
...@@ -29,6 +30,7 @@...@@ -29,6 +30,7 @@
29 wineWowPackages.stable30 wineWowPackages.stable
30 winetricks31 winetricks
31 (prismlauncher.override { gamemodeSupport = true; })32 (prismlauncher.override { gamemodeSupport = true; })
33 umu-launcher
3234
33 #window manager stuff35 #window manager stuff
34 wofi36 wofi
...@@ -50,8 +52,8 @@...@@ -50,8 +52,8 @@
50 signal-desktop52 signal-desktop
51 inputs.zls.packages.x86_64-linux.zls53 inputs.zls.packages.x86_64-linux.zls
52 rust-bin.stable.latest.default54 rust-bin.stable.latest.default
55 inputs.zen-browser.packages.x86_64-linux.default
53 ];56 ];
54 # programs.mangohud.enable = true;
55 };57 };
5658
57 # xdg.mimeApps.defaultApplications."inode/directory" = "dolphin.desktop";59 # xdg.mimeApps.defaultApplications."inode/directory" = "dolphin.desktop";
users/natalie/home.nix+2-1
...@@ -2,7 +2,8 @@...@@ -2,7 +2,8 @@
2 pkgs,2 pkgs,
3 lib,3 lib,
4 ...4 ...
5} @ args: {5}@args:
6{
6 programs = {7 programs = {
7 # sort-lines:start8 # sort-lines:start
8 atuin.enable = true;9 atuin.enable = true;
users/natalie/laptop/configuration.nix+5-2
...@@ -1,4 +1,5 @@...@@ -1,4 +1,5 @@
1{pkgs, ...}: {1{ pkgs, ... }:
2{
2 environment.systemPackages = with pkgs; [3 environment.systemPackages = with pkgs; [
3 pinentry_mac4 pinentry_mac
4 ];5 ];
...@@ -6,9 +7,11 @@...@@ -6,9 +7,11 @@
6 # Custom configuration modules in "modules" are shared between users,7 # Custom configuration modules in "modules" are shared between users,
7 # and can be configured in this "shared" namespace8 # and can be configured in this "shared" namespace
8 shared.darwin = {9 shared.darwin = {
9 macAppStoreApps = ["wireguard"];10 macAppStoreApps = [ "wireguard" ];
10 };11 };
1112
13 system.defaults.NSGlobalDomain."com.apple.trackpad.scaling" = 1.0;
14
12 # Create /etc/zshrc that loads the nix-darwin environment.15 # Create /etc/zshrc that loads the nix-darwin environment.
13 programs = {16 programs = {
14 gnupg.agent.enable = true;17 gnupg.agent.enable = true;
users/natalie/laptop/home.nix+5
...@@ -15,5 +15,10 @@...@@ -15,5 +15,10 @@
15 sessionPath = [15 sessionPath = [
16 "$HOME/.emacs.d/bin"16 "$HOME/.emacs.d/bin"
17 ];17 ];
18
19 packages = with pkgs; [
20 #PDF viewer for VimTeX
21 skimpdf
22 ];
18 };23 };
19}24}
users/natalie/packages.nix+7-15
...@@ -1,6 +1,7 @@...@@ -1,6 +1,7 @@
1# Packages installed with home-manager1# Packages installed with home-manager
2{pkgs, ...}:2{ pkgs, ... }:
3with pkgs; [3with pkgs;
4[
4 #general development5 #general development
5 just6 just
6 pkg-config7 pkg-config
...@@ -23,6 +24,7 @@ with pkgs; [...@@ -23,6 +24,7 @@ with pkgs; [
23 qemu24 qemu
24 podman25 podman
25 docker26 docker
27 devenv
2628
27 #productivity29 #productivity
28 glance30 glance
...@@ -33,9 +35,10 @@ with pkgs; [...@@ -33,9 +35,10 @@ with pkgs; [
33 #nix tools35 #nix tools
34 direnv36 direnv
35 nh37 nh
38 (lix.override { aws-sdk-cpp = null; })
3639
37 #terminal stuff40 #terminal stuff
38 (btop.override {cudaSupport = true;})41 (btop.override { cudaSupport = true; })
39 tmux42 tmux
40 zellij43 zellij
41 lazygit44 lazygit
...@@ -62,15 +65,9 @@ with pkgs; [...@@ -62,15 +65,9 @@ with pkgs; [
6265
63 #media66 #media
64 spotify67 spotify
65 zathura
6668
67 #language servers69 #language servers
68 typst-live70 typst-live
69 lua-language-server
70 nil
71 nixd
72 texlab
73 texlivePackages.chktex
7471
75 #formatters/linters72 #formatters/linters
76 stylua73 stylua
...@@ -79,14 +76,10 @@ with pkgs; [...@@ -79,14 +76,10 @@ with pkgs; [
7976
80 #neovim deps77 #neovim deps
81 # TODO: from clo, maybe u can remove all of these? i don't wanna break tho78 # TODO: from clo, maybe u can remove all of these? i don't wanna break tho
82 lua51Packages.lua
83 lua51Packages.luarocks-nix
84 codespell
85 tree-sitter79 tree-sitter
8680 zathura
87 #python81 #python
88 pyright82 pyright
89 basedpyright
90 ruff83 ruff
91 python312Packages.python84 python312Packages.python
92 python312Packages.pynvim85 python312Packages.pynvim
...@@ -107,7 +100,6 @@ with pkgs; [...@@ -107,7 +100,6 @@ with pkgs; [
107100
108 #math101 #math
109 texlive.combined.scheme-full102 texlive.combined.scheme-full
110 zathura
111103
112 #fun things104 #fun things
113 cowsay105 cowsay
users/natalie/user.nix+2-2
...@@ -3,11 +3,11 @@ rec {...@@ -3,11 +3,11 @@ rec {
3 name = "Natalie"; # name/identifier3 name = "Natalie"; # name/identifier
4 email = "nmarks413@gmail.com"; # email (used for certain configurations)4 email = "nmarks413@gmail.com"; # email (used for certain configurations)
5 dotfilesDir = "~/.dotfiles"; # absolute path of the local repo5 dotfilesDir = "~/.dotfiles"; # absolute path of the local repo
6 theme = "catppuccin-mocha"; # name of theme that stylix will use6 theme = null; # name of theme that stylix will use
7 browser = "firefox"; # Default browser; must select one from ./user/app/browser/7 browser = "firefox"; # Default browser; must select one from ./user/app/browser/
8 term = "ghostty"; # Default terminal command;8 term = "ghostty"; # Default terminal command;
9 font = "iosevka"; # Selected font9 font = "iosevka"; # Selected font
10 editor = "neovim"; # Default editor;10 editor = "nvim"; # Default editor;
11 timeZone = "America/Los_Angeles";11 timeZone = "America/Los_Angeles";
12 sexuality = "bisexual";12 sexuality = "bisexual";
13}13}
users/natalie/vim.nix+49-1
...@@ -1,8 +1,14 @@...@@ -1,8 +1,14 @@
1{pkgs, ...}: {1{ pkgs, ... }:
2{
2 imports = [3 imports = [
3 ./vim/default.nix4 ./vim/default.nix
4 ];5 ];
6
5 vim = {7 vim = {
8 #enable python provider
9 withPython3 = true;
10 python3Packages = [ "pynvim" ];
11
6 options = {12 options = {
7 tabstop = 2;13 tabstop = 2;
8 softtabstop = 2;14 softtabstop = 2;
...@@ -14,10 +20,52 @@...@@ -14,10 +20,52 @@
14 foldcolumn = "1";20 foldcolumn = "1";
15 foldlevelstart = 99;21 foldlevelstart = 99;
16 foldenable = true;22 foldenable = true;
23 foldmethod = "expr";
24 #Default to treesitter folding
25 foldexpr = "v:lua.vim.treesitter.foldexpr()";
17 };26 };
1827
19 autocmds = [28 autocmds = [
29 #Autocommand to fall back to treesitter folding if LSP doesnt support it
30 {
31 event = [ "LspAttach" ];
32 callback = pkgs.lib.generators.mkLuaInline ''
33 function(args)
34 local client = vim.lsp.get_client_by_id(args.data.client_id)
35 if client:supports_method('textDocument/foldingRange') then
36 local win = vim.api.nvim_get_current_win()
37 vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()'
38 end
39 end
40 '';
41 }
20 ];42 ];
43
44 tabline = {
45 nvimBufferline.enable = true;
46 };
47 # nvf versions is VERY outdated
48 # pluginOverrides = {
49 # hardtime-nvim = pkgs.fetchFromGitHub {
50 # owner = "m4xshen";
51 # repo = "hardtime.nvim";
52 # rev = "v1.0.1";
53 # hash = "sha256-5tqiSuGvBJcr8l6anEBojXEaaxFS1P5T1ROr46ylVhk=";
54 # };
55 # };
56 startPlugins = [
57 "nui-nvim"
58 ];
59 binds = {
60 hardtime-nvim = {
61 enable = false;
62 setupOpts = {
63 disable_mouse = false;
64 restriction_mode = "warn";
65 };
66 };
67 };
68
21 theme = {69 theme = {
22 name = "catppuccin";70 name = "catppuccin";
23 style = "mocha";71 style = "mocha";
users/natalie/vim/coq.nix created+16
...@@ -0,0 +1,16 @@
1{ pkgs, ... }:
2{
3
4 vim = {
5 # extraPackages = with pkgs; [
6 # coq_8_20
7 # coqPackages_8_20.stdlib
8 # ];
9 extraPlugins.Coqtail = {
10 # enabled = true;
11 package = pkgs.vimPlugins.Coqtail;
12 # lazy = true;
13 # ft = "coq";
14 };
15 };
16}
users/natalie/vim/default.nix+6-2
...@@ -1,8 +1,12 @@...@@ -1,8 +1,12 @@
1{...}: {1{ ... }:
2{
2 imports = [3 imports = [
3 ./keybinds.nix4 ./keybinds.nix
4 ./languages.nix5 ./languages.nix
5 ./latex.nix6 ./latex.nix
7 ./lean.nix
8 ./coq.nix
9 ./visuals.nix
10 ./mini.nix
6 ];11 ];
7
8}12}
users/natalie/vim/keybinds.nix-1
...@@ -19,7 +19,6 @@ in...@@ -19,7 +19,6 @@ in
19 (mkKeymap "n" "<leader>ff" ":lua require('snacks').picker.files()<CR>" "Find File")19 (mkKeymap "n" "<leader>ff" ":lua require('snacks').picker.files()<CR>" "Find File")
20 (mkKeymap "n" "<leader>fg" ":lua require('snacks').picker.grep()<CR>" "Grep Files")20 (mkKeymap "n" "<leader>fg" ":lua require('snacks').picker.grep()<CR>" "Grep Files")
21 # Lsp21 # Lsp
22 (mkKeymap "n" "K" ":Lspsaga hover_doc<CR>" "Hover docs")
23 (mkKeymap "n" "lr" ":lua vim.lsp.buf.rename()<CR>" "Rename")22 (mkKeymap "n" "lr" ":lua vim.lsp.buf.rename()<CR>" "Rename")
24 # (mkKeymap "n" "<leader>th" ":lua function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) end<CR>" "Toggle Inlay Hints")23 # (mkKeymap "n" "<leader>th" ":lua function() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) end<CR>" "Toggle Inlay Hints")
25 ];24 ];
users/natalie/vim/languages.nix+98-52
...@@ -4,58 +4,59 @@...@@ -4,58 +4,59 @@
4 host,4 host,
5 pkgs,5 pkgs,
6 ...6 ...
7}: let7}:
8 darwin =8{
9 if host.darwin
10 then "darwin"
11 else "nixos";
12 flakePath = "/${
13 if host.darwin
14 then "Users"
15 else "home"
16 }/${user.username}/.dotfiles";
17
18 # BIG HACK DO NOT DO PLS
19
20 hostname =
21 if host.darwin
22 then "Natalies-MacBook-Air"
23 else "nixos";
24in {
25 vim = {9 vim = {
26 extraPackages = with pkgs; [10 extraPackages = with pkgs; [
27 python312Packages.pylatexenc11 python312Packages.pylatexenc
12 nixd
28 ];13 ];
29 lsp = {14 lsp = {
15 formatOnSave = true;
30 lightbulb.enable = false;16 lightbulb.enable = false;
31 lspsaga = {17 # lspsaga = {
32 enable = true;18 # enable = true;
33 setupOpts = {19 # setupOpts = {
34 lightbulb = {20 # lightbulb = {
35 virtual_text = false;21 # virtual_text = false;
22 # };
23 # };
24 # };
25 inlayHints.enable = true;
26 servers = {
27 nil = {
28 settings.nil.nix.flake = {
29
30 autoArchive = true;
31 autoEvalInputs = true;
32
36 };33 };
37 };34 };
38 };35 nixd = {
39 nvim-docs-view.enable = true;36 settings.nixd = {
40 inlayHints.enable = true;37 nixpkgs.expr = ''import "${flake.inputs.nixpkgs}" { }'';
41 servers.nixd.settings.nixd = {38
42 nixpkgs.expr = ''import "<nixpkgs>" { }'';39 options =
43 options =40 {
44 {41 home-manager = {
45 home-manager = {42 expr = ''(let pkgs = import "${flake.inputs.nixpkgs}" { }; lib = import "${flake.inputs.home-manager}/modules/lib/stdlib-extended.nix" pkgs.lib; in (lib.evalModules { modules = (import "${flake.inputs.home-manager}/modules/modules.nix") { inherit lib pkgs;check = false;}; })).options'';
46 expr = ''(builtins.getFlake "${flakePath}").${darwin}Configurations.${hostname}.options.home-manager.users.type.getSubOptions [ ]'';43 # (builtins.getFlake "${flakePath}").${darwin}Configurations.${hostname}.options.home-manager.users.type.getSubOptions [ ]'';
47 };44 };
48 }45 }
49 // pkgs.lib.optionalAttrs host.darwin {46 // pkgs.lib.optionalAttrs host.darwin {
50 nix-darwin = {47 nix-darwin = {
51 expr = ''(builtins.getFlake "${flakePath}").darwinConfigurations.${hostname}.options'';48 expr = ''(let pkgs = import "${flake.inputs.nixpkgs}" { }; in (pkgs.lib.evalModules { modules = (import "${flake.inputs.darwin}/modules/module-list.nix"); check = false;})).options'';
52 };49 # (builtins.getFlake "${flakePath}").darwinConfigurations.${hostname}.options'';
53 }50 };
54 // pkgs.lib.optionalAttrs host.linux {51 }
55 nixos = {52 // pkgs.lib.optionalAttrs host.linux {
56 expr = ''(builtins.getFlake "${flakePath}").nixosConfigurations.${hostname}.options'';53 nixos = {
57 };54 expr = ''(let pkgs = import "${flake.inputs.nixpkgs}" { }; in (pkgs.lib.evalModules { modules = (import "${flake.inputs.nixpkgs}/nixos/modules/module-list.nix"); check = false;})).options'';
55 # (builtins.getFlake "${flakePath}").nixosConfigurations.${hostname}.options'';
56 };
57 };
58 };58 };
59 };
59 };60 };
60 mappings = {61 mappings = {
61 codeAction = "<leader>ca";62 codeAction = "<leader>ca";
...@@ -63,7 +64,7 @@ in {...@@ -63,7 +64,7 @@ in {
63 goToDefinition = "gd";64 goToDefinition = "gd";
64 listReferences = "gr";65 listReferences = "gr";
65 goToType = "gy";66 goToType = "gy";
66 hover = null;67 hover = "K";
67 nextDiagnostic = "<leader>d";68 nextDiagnostic = "<leader>d";
68 openDiagnosticFloat = "<leader>df";69 openDiagnosticFloat = "<leader>df";
69 renameSymbol = "rn";70 renameSymbol = "rn";
...@@ -88,24 +89,42 @@ in {...@@ -88,24 +89,42 @@ in {
88 enable = true;89 enable = true;
89 };90 };
90 };91 };
92 nix.format.enable = true;
91 };93 };
9294
93 formatter.conform-nvim = {95 formatter.conform-nvim = {
94 enable = true;96 enable = true;
95 setupOpts = {97 setupOpts = {
96 formatters_by_ft = {98 formatters_by_ft = {
97 fish = ["fish_indent"];99 fish = [ "fish_indent" ];
98 tex = ["latexindent"];100 tex = [ "latexindent" ];
99 };101 };
100 };102 };
101 };103 };
102104 diagnostics = {
103 diagnostics.nvim-lint = {
104 enable = true;105 enable = true;
105 linters_by_ft = {106 config = {
106 nix = ["statix"];107 virtual_text = {
107 tex = ["chktex"];108 format = pkgs.lib.generators.mkLuaInline ''
108 haskell = ["hlint"];109 function(diagnostic)
110 return string.format("%s (%s)", diagnostic.message, diagnostic.source)
111 end
112 '';
113 };
114 };
115 nvim-lint = {
116 enable = true;
117 linters_by_ft = {
118 nix = [ "statix" ];
119 tex = [ "chktex" ];
120 haskell = [ "hlint" ];
121 };
122
123 linters = {
124 chktex = {
125 ignore_exitcode = true;
126 };
127 };
109 };128 };
110 };129 };
111 treesitter = {130 treesitter = {
...@@ -167,5 +186,32 @@ in {...@@ -167,5 +186,32 @@ in {
167 };186 };
168 };187 };
169 };188 };
189
190 lazy.plugins."blink.pairs" = {
191 enabled = true;
192 package = pkgs.vimPlugins.blink-pairs;
193 setupModule = "blink.pairs";
194 setupOpts = {
195 mappings = {
196 # -- you can call require("blink.pairs.mappings").enable() and require("blink.pairs.mappings").disable() to enable/disable mappings at runtime
197 enabled = true;
198 # -- see the defaults: https://github.com/Saghen/blink.pairs/blob/main/lua/blink/pairs/config/mappings.lua#L10
199 pairs = [ ];
200 };
201 highlights = {
202 enabled = true;
203 groups = [
204 "BlinkPairsOrange"
205 "BlinkPairsPurple"
206 "BlinkPairsBlue"
207 ];
208 matchparen = {
209 enabled = true;
210 group = "MatchParen";
211 };
212 };
213 debug = false;
214 };
215 };
170 };216 };
171}217}
users/natalie/vim/latex.nix+67-7
...@@ -1,22 +1,29 @@...@@ -1,22 +1,29 @@
1{pkgs, ...}: {1{ pkgs, host, ... }:
2{
2 vim = {3 vim = {
4 lazy.plugins.cmp-vimtex = {
5 enabled = true;
6 package = pkgs.vimPlugins.cmp-vimtex;
7 lazy = false;
8
9 };
3 lazy.plugins.vimtex = {10 lazy.plugins.vimtex = {
4 enabled = true;11 enabled = true;
5 package = pkgs.vimPlugins.vimtex;12 package = pkgs.vimPlugins.vimtex;
6 lazy = true;13 lazy = false;
7 ft = "tex";
8 };14 };
915
10 globals = {16 globals = {
11 tex_flavor = "latex";17 tex_flavor = "latex";
12 maplocalleader = "\\";18 maplocalleader = "\\";
13 vimtex_compiler_method = "latexmk";19 vimtex_compiler_method = "latexmk";
14 vimtex_view_method = "zathura";20 vimtex_view_method = if host.darwin then "skim" else "zathura";
21 vimtex_view_automatic = 1;
15 vimtex_compiler_latexmk = {22 vimtex_compiler_latexmk = {
16 callback = 1;23 callback = 1;
17 continuous = 1;24 continuous = 1;
18 executable = "latexmk";25 executable = "latexmk";
19 hooks = [];26 hooks = [ ];
20 options = [27 options = [
21 "-verbose"28 "-verbose"
22 "-file-line-error"29 "-file-line-error"
...@@ -37,12 +44,65 @@...@@ -37,12 +44,65 @@
37 ];44 ];
38 };45 };
3946
47 autocomplete.blink-cmp = {
48 sourcePlugins = {
49 "blink.compat" = {
50 enable = true;
51 package = "blink-compat";
52 module = "blink.compat.source";
53 };
54 };
55 setupOpts = {
56 sources = {
57 default = [ "vimtex" ];
58 providers = {
59 vimtex = {
60 name = "vimtex";
61 module = "blink.compat.source";
62 score_offset = 100;
63 };
64 };
65 };
66 };
67 };
68
69 augroups = [
70 {
71 name = "VimTeX Events";
72 }
73 ];
74 autocmds = [
75 {
76 pattern = [ "VimtexEventViewReverse" ];
77 event = [ "User" ];
78 desc = "Return to nvim after reverse search";
79 command = "call b:vimtex.viewer.xdo_focus_vim()";
80 group = "VimTeX Events";
81 }
82 {
83 pattern = [ "VimtexEventQuit" ];
84 event = [ "User" ];
85 desc = "Close pdf after exiting nvim";
86 command = "VimtexClean";
87 group = "VimTeX Events";
88 }
89
90 {
91 pattern = [ "VimtexEventInitPost" ];
92 event = [ "User" ];
93 desc = "Start compiling when opening nvim to a tex file";
94 command = "VimtexCompile";
95 group = "VimTeX Events";
96 }
97
98 ];
99
40 lsp = {100 lsp = {
41 servers = {101 servers = {
42 texlab = {102 texlab = {
43 enable = true;103 enable = true;
44 cmd = ["${pkgs.texlab}/bin/texlab"];104 cmd = [ "${pkgs.texlab}/bin/texlab" ];
45 filetypes = ["tex"];105 filetypes = [ "tex" ];
46 };106 };
47 };107 };
48 };108 };
users/natalie/vim/lean.nix created+11
...@@ -0,0 +1,11 @@
1{ pkgs, ... }:
2{
3 vim = {
4 lazy.plugins."lean.nvim" = {
5 enabled = true;
6 package = pkgs.vimPlugins.lean-nvim;
7 lazy = true;
8 ft = "lean";
9 };
10 };
11}
users/natalie/vim/mini.nix created+9
...@@ -0,0 +1,9 @@
1{ pkgs, ... }:
2{
3 vim = {
4 mini = {
5 icons.enable = true;
6 ai.enable = true;
7 };
8 };
9}
users/natalie/vim/visuals.nix created+38
...@@ -0,0 +1,38 @@
1{ pkgs, ... }:
2{
3 vim = {
4 visuals = {
5 indent-blankline = {
6 enable = true;
7 };
8 };
9 ui = {
10 noice = {
11 enable = true;
12 setupOpts = {
13 lsp = {
14 progress.enabled = false;
15 signature.enabled = true;
16 };
17 presets = {
18 lsp_doc_border = true;
19 long_message_to_split = true;
20 inc_rename = false;
21 command_palette = false;
22 bottom_search = true;
23 };
24 };
25 };
26 borders = {
27 enable = true;
28 };
29 };
30
31 # Better help docs
32 lazy.plugins."helpview.nvim" = {
33 enabled = true;
34 package = pkgs.vimPlugins.helpview-nvim;
35 lazy = false;
36 };
37 };
38}