├── LICENSE
├── README.md
├── flake.lock
├── flake.nix
├── hosts
└── snowflake
│ ├── configuration.nix
│ └── hardware-configuration.nix
└── users
└── systematic
├── assets
├── profile.png
├── wallpaper_dark.png
└── wallpaper_light.png
├── home.nix
└── modules
├── direnv.nix
├── eza.nix
├── firefox.nix
├── ghostty.nix
├── git.nix
├── gnome.nix
├── gtk.nix
├── nautilus.nix
├── nvim.nix
├── planify.nix
├── prism.nix
├── smile.nix
├── spicetify.nix
├── starship.nix
├── text_editor.nix
├── vesktop.nix
└── zsh.nix
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 SystematicError
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
Dotfiles
2 |
3 | 
4 |
5 | My NixOS dotfiles attempting to achieve a fully configured and declarative Linux environment.
6 |
--------------------------------------------------------------------------------
/flake.lock:
--------------------------------------------------------------------------------
1 | {
2 | "nodes": {
3 | "blink.cmp": {
4 | "flake": false,
5 | "locked": {
6 | "lastModified": 1747273235,
7 | "narHash": "sha256-ZMq7zXXP3QL73zNfgDNi7xipmrbNwBoFPzK4K0dr6Zs=",
8 | "owner": "Saghen",
9 | "repo": "blink.cmp",
10 | "rev": "022521a8910a5543b0251b21c9e1a1e989745796",
11 | "type": "github"
12 | },
13 | "original": {
14 | "owner": "Saghen",
15 | "repo": "blink.cmp",
16 | "type": "github"
17 | }
18 | },
19 | "bufferline.nvim": {
20 | "flake": false,
21 | "locked": {
22 | "lastModified": 1736870559,
23 | "narHash": "sha256-ae4MB6+6v3awvfSUWlau9ASJ147ZpwuX1fvJdfMwo1Q=",
24 | "owner": "akinsho",
25 | "repo": "bufferline.nvim",
26 | "rev": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3",
27 | "type": "github"
28 | },
29 | "original": {
30 | "owner": "akinsho",
31 | "repo": "bufferline.nvim",
32 | "type": "github"
33 | }
34 | },
35 | "catppuccin": {
36 | "flake": false,
37 | "locked": {
38 | "lastModified": 1747497798,
39 | "narHash": "sha256-u3E/vyii4zD491GEffbscMU3teDOgt3bFWaYwnaX7E0=",
40 | "owner": "catppuccin",
41 | "repo": "nvim",
42 | "rev": "8162a4bd9afb42837a655e404d1f937a87ba95e6",
43 | "type": "github"
44 | },
45 | "original": {
46 | "owner": "catppuccin",
47 | "repo": "nvim",
48 | "type": "github"
49 | }
50 | },
51 | "conform.nvim": {
52 | "flake": false,
53 | "locked": {
54 | "lastModified": 1747182398,
55 | "narHash": "sha256-9pjZLQnFCQLBH+zLLN/pNijwD2+V+MObbq8OoVSert0=",
56 | "owner": "stevearc",
57 | "repo": "conform.nvim",
58 | "rev": "2b2b30260203af3b93a7470ac6c8457ddd6e32d9",
59 | "type": "github"
60 | },
61 | "original": {
62 | "owner": "stevearc",
63 | "repo": "conform.nvim",
64 | "type": "github"
65 | }
66 | },
67 | "diffview.nvim": {
68 | "flake": false,
69 | "locked": {
70 | "lastModified": 1718279802,
71 | "narHash": "sha256-SX+ybIzL/w6uyCy4iZKnWnzTFwqB1oXSgyYVAdpdKi8=",
72 | "owner": "sindrets",
73 | "repo": "diffview.nvim",
74 | "rev": "4516612fe98ff56ae0415a259ff6361a89419b0a",
75 | "type": "github"
76 | },
77 | "original": {
78 | "owner": "sindrets",
79 | "repo": "diffview.nvim",
80 | "type": "github"
81 | }
82 | },
83 | "firefox-addons": {
84 | "inputs": {
85 | "nixpkgs": [
86 | "nixpkgs"
87 | ]
88 | },
89 | "locked": {
90 | "dir": "pkgs/firefox-addons",
91 | "lastModified": 1747368212,
92 | "narHash": "sha256-8bjsQVrFR3Uc0EK7vycFMUbtksqwrBbi+/Sx3O0u3lU=",
93 | "owner": "rycee",
94 | "repo": "nur-expressions",
95 | "rev": "a55ddf6541db6a45e324c4f2f81f49e0322a400f",
96 | "type": "gitlab"
97 | },
98 | "original": {
99 | "dir": "pkgs/firefox-addons",
100 | "owner": "rycee",
101 | "repo": "nur-expressions",
102 | "type": "gitlab"
103 | }
104 | },
105 | "flake-compat": {
106 | "locked": {
107 | "lastModified": 1733328505,
108 | "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
109 | "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
110 | "revCount": 69,
111 | "type": "tarball",
112 | "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz"
113 | },
114 | "original": {
115 | "type": "tarball",
116 | "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
117 | }
118 | },
119 | "flake-utils": {
120 | "inputs": {
121 | "systems": "systems"
122 | },
123 | "locked": {
124 | "lastModified": 1731533236,
125 | "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
126 | "owner": "numtide",
127 | "repo": "flake-utils",
128 | "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
129 | "type": "github"
130 | },
131 | "original": {
132 | "owner": "numtide",
133 | "repo": "flake-utils",
134 | "type": "github"
135 | }
136 | },
137 | "friendly-snippets": {
138 | "flake": false,
139 | "locked": {
140 | "lastModified": 1745949052,
141 | "narHash": "sha256-FzApcTbWfFkBD9WsYMhaCyn6ky8UmpUC2io/co/eByM=",
142 | "owner": "rafamadriz",
143 | "repo": "friendly-snippets",
144 | "rev": "572f5660cf05f8cd8834e096d7b4c921ba18e175",
145 | "type": "github"
146 | },
147 | "original": {
148 | "owner": "rafamadriz",
149 | "repo": "friendly-snippets",
150 | "type": "github"
151 | }
152 | },
153 | "frosty-vim": {
154 | "inputs": {
155 | "blink.cmp": "blink.cmp",
156 | "bufferline.nvim": "bufferline.nvim",
157 | "catppuccin": "catppuccin",
158 | "conform.nvim": "conform.nvim",
159 | "diffview.nvim": "diffview.nvim",
160 | "flake-utils": "flake-utils",
161 | "friendly-snippets": "friendly-snippets",
162 | "gitsigns.nvim": "gitsigns.nvim",
163 | "guess-indent.nvim": "guess-indent.nvim",
164 | "lazy.nvim": "lazy.nvim",
165 | "lualine.nvim": "lualine.nvim",
166 | "markview.nvim": "markview.nvim",
167 | "neo-tree.nvim": "neo-tree.nvim",
168 | "neogit": "neogit",
169 | "nixpkgs": [
170 | "nixpkgs"
171 | ],
172 | "nui.nvim": "nui.nvim",
173 | "nvim-autopairs": "nvim-autopairs",
174 | "nvim-highlight-colors": "nvim-highlight-colors",
175 | "nvim-lightbulb": "nvim-lightbulb",
176 | "nvim-lspconfig": "nvim-lspconfig",
177 | "nvim-treesitter": "nvim-treesitter",
178 | "nvim-treesitter-textobjects": "nvim-treesitter-textobjects",
179 | "nvim-web-devicons": "nvim-web-devicons",
180 | "persistence.nvim": "persistence.nvim",
181 | "plenary.nvim": "plenary.nvim",
182 | "satellite.nvim": "satellite.nvim",
183 | "scope.nvim": "scope.nvim",
184 | "snacks.nvim": "snacks.nvim",
185 | "which-key.nvim": "which-key.nvim"
186 | },
187 | "locked": {
188 | "lastModified": 1747785667,
189 | "narHash": "sha256-MoVs7zMejGCGm02PeTq3cJpjIV/51NZsJFyHxafdTdA=",
190 | "owner": "SystematicError",
191 | "repo": "frosty-vim",
192 | "rev": "a8d2a996a9283ce1e8e512bf791e47f8fba639a3",
193 | "type": "github"
194 | },
195 | "original": {
196 | "owner": "SystematicError",
197 | "repo": "frosty-vim",
198 | "type": "github"
199 | }
200 | },
201 | "gitsigns.nvim": {
202 | "flake": false,
203 | "locked": {
204 | "lastModified": 1747215993,
205 | "narHash": "sha256-bd7ufPg/iqomlVop4iauo495JlBBFSwxVn7s0z1NUUg=",
206 | "owner": "lewis6991",
207 | "repo": "gitsigns.nvim",
208 | "rev": "e399f9748d7cfd8859747c8d6c4e9c8b4d50a1bd",
209 | "type": "github"
210 | },
211 | "original": {
212 | "owner": "lewis6991",
213 | "repo": "gitsigns.nvim",
214 | "type": "github"
215 | }
216 | },
217 | "guess-indent.nvim": {
218 | "flake": false,
219 | "locked": {
220 | "lastModified": 1742937349,
221 | "narHash": "sha256-M/FkwCXXhojVFEcCuHo/GkuCCSX9GlVYHBUECSZxBjs=",
222 | "owner": "NMAC427",
223 | "repo": "guess-indent.nvim",
224 | "rev": "84a4987ff36798c2fc1169cbaff67960aed9776f",
225 | "type": "github"
226 | },
227 | "original": {
228 | "owner": "NMAC427",
229 | "repo": "guess-indent.nvim",
230 | "type": "github"
231 | }
232 | },
233 | "home-manager": {
234 | "inputs": {
235 | "nixpkgs": [
236 | "nixpkgs"
237 | ]
238 | },
239 | "locked": {
240 | "lastModified": 1747374689,
241 | "narHash": "sha256-JT/aBZqmK1LbExzwT9cPkvxKc0IC4i6tZKOPjsSWFbI=",
242 | "owner": "nix-community",
243 | "repo": "home-manager",
244 | "rev": "d2263ce5f4c251c0f7608330e8fdb7d1f01f0667",
245 | "type": "github"
246 | },
247 | "original": {
248 | "owner": "nix-community",
249 | "repo": "home-manager",
250 | "type": "github"
251 | }
252 | },
253 | "lazy.nvim": {
254 | "flake": false,
255 | "locked": {
256 | "lastModified": 1740511197,
257 | "narHash": "sha256-nQ8PR9DTdzg6Z2rViuVD6Pswc2VvDQwS3uMNgyDh5ls=",
258 | "owner": "folke",
259 | "repo": "lazy.nvim",
260 | "rev": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a",
261 | "type": "github"
262 | },
263 | "original": {
264 | "owner": "folke",
265 | "repo": "lazy.nvim",
266 | "type": "github"
267 | }
268 | },
269 | "lualine.nvim": {
270 | "flake": false,
271 | "locked": {
272 | "lastModified": 1745335540,
273 | "narHash": "sha256-wfNEDR3uR8Y6hZhzcnuukQ2yMz7rCvuc4li/0rkPRTA=",
274 | "owner": "nvim-lualine",
275 | "repo": "lualine.nvim",
276 | "rev": "15884cee63a8c205334ab13ab1c891cd4d27101a",
277 | "type": "github"
278 | },
279 | "original": {
280 | "owner": "nvim-lualine",
281 | "repo": "lualine.nvim",
282 | "type": "github"
283 | }
284 | },
285 | "markview.nvim": {
286 | "flake": false,
287 | "locked": {
288 | "lastModified": 1747206983,
289 | "narHash": "sha256-P48GW042004zVcaqWKC9QTURIeOrVBe4Ie/deHGzl6M=",
290 | "owner": "OXY2DEV",
291 | "repo": "markview.nvim",
292 | "rev": "b35c51593573ee3de145838c04477be34e6db3a2",
293 | "type": "github"
294 | },
295 | "original": {
296 | "owner": "OXY2DEV",
297 | "repo": "markview.nvim",
298 | "type": "github"
299 | }
300 | },
301 | "neo-tree.nvim": {
302 | "flake": false,
303 | "locked": {
304 | "lastModified": 1746867811,
305 | "narHash": "sha256-i1iu7bjNOkw7fyG/2aHbs0jmgi/JamTuino2ZKb/R7Y=",
306 | "owner": "nvim-neo-tree",
307 | "repo": "neo-tree.nvim",
308 | "rev": "56f383aa157f1ff20a59154907cc5f9fe26e4db9",
309 | "type": "github"
310 | },
311 | "original": {
312 | "owner": "nvim-neo-tree",
313 | "repo": "neo-tree.nvim",
314 | "type": "github"
315 | }
316 | },
317 | "neogit": {
318 | "flake": false,
319 | "locked": {
320 | "lastModified": 1747317523,
321 | "narHash": "sha256-cGVsN2Q2w0x1tQa1fNc9UvYo29zCRx9UZVGFq1PMOH0=",
322 | "owner": "NeogitOrg",
323 | "repo": "neogit",
324 | "rev": "6de4b9f9a92917f9aea3a0dbdc3dbbedc11d26be",
325 | "type": "github"
326 | },
327 | "original": {
328 | "owner": "NeogitOrg",
329 | "repo": "neogit",
330 | "type": "github"
331 | }
332 | },
333 | "nixcord": {
334 | "inputs": {
335 | "flake-compat": "flake-compat",
336 | "nixpkgs": [
337 | "nixpkgs"
338 | ],
339 | "systems": "systems_2",
340 | "treefmt-nix": "treefmt-nix"
341 | },
342 | "locked": {
343 | "lastModified": 1747377065,
344 | "narHash": "sha256-W+ETNRxqNKZtZRlwLClt/8qBoQKNVHs0dQO40yQrpeg=",
345 | "owner": "KaylorBen",
346 | "repo": "nixcord",
347 | "rev": "8b809c190e9b6a6339c62fb5c65c19730ce10ef3",
348 | "type": "github"
349 | },
350 | "original": {
351 | "owner": "KaylorBen",
352 | "repo": "nixcord",
353 | "type": "github"
354 | }
355 | },
356 | "nixpkgs": {
357 | "locked": {
358 | "lastModified": 1747179050,
359 | "narHash": "sha256-qhFMmDkeJX9KJwr5H32f1r7Prs7XbQWtO0h3V0a0rFY=",
360 | "owner": "NixOS",
361 | "repo": "nixpkgs",
362 | "rev": "adaa24fbf46737f3f1b5497bf64bae750f82942e",
363 | "type": "github"
364 | },
365 | "original": {
366 | "owner": "NixOS",
367 | "ref": "nixos-unstable",
368 | "repo": "nixpkgs",
369 | "type": "github"
370 | }
371 | },
372 | "nui.nvim": {
373 | "flake": false,
374 | "locked": {
375 | "lastModified": 1746270059,
376 | "narHash": "sha256-SJc9nfV6cnBKYwRWsv0iHy+RbET8frNV85reICf+pt8=",
377 | "owner": "MunifTanjim",
378 | "repo": "nui.nvim",
379 | "rev": "f535005e6ad1016383f24e39559833759453564e",
380 | "type": "github"
381 | },
382 | "original": {
383 | "owner": "MunifTanjim",
384 | "repo": "nui.nvim",
385 | "type": "github"
386 | }
387 | },
388 | "nvim-autopairs": {
389 | "flake": false,
390 | "locked": {
391 | "lastModified": 1744514355,
392 | "narHash": "sha256-v7vqCbrXAlzj1oLS+pQ4CooGbnIYMvGcDYcW0BPa12A=",
393 | "owner": "windwp",
394 | "repo": "nvim-autopairs",
395 | "rev": "4d74e75913832866aa7de35e4202463ddf6efd1b",
396 | "type": "github"
397 | },
398 | "original": {
399 | "owner": "windwp",
400 | "repo": "nvim-autopairs",
401 | "type": "github"
402 | }
403 | },
404 | "nvim-highlight-colors": {
405 | "flake": false,
406 | "locked": {
407 | "lastModified": 1744640772,
408 | "narHash": "sha256-Zzgk6DG4jVnyudPNX2IidI/k9R1HrDvVKXQHr6tPhX8=",
409 | "owner": "brenoprata10",
410 | "repo": "nvim-highlight-colors",
411 | "rev": "b42a5ccec7457b44e89f7ed3b3afb1b375bb2093",
412 | "type": "github"
413 | },
414 | "original": {
415 | "owner": "brenoprata10",
416 | "repo": "nvim-highlight-colors",
417 | "type": "github"
418 | }
419 | },
420 | "nvim-lightbulb": {
421 | "flake": false,
422 | "locked": {
423 | "lastModified": 1743258814,
424 | "narHash": "sha256-1XNhioGMqQV5sI7N6YrtCA6Y9zRiPEi7ikgseL1x6HI=",
425 | "owner": "kosayoda",
426 | "repo": "nvim-lightbulb",
427 | "rev": "aa3a8b0f4305b25cfe368f6c9be9923a7c9d0805",
428 | "type": "github"
429 | },
430 | "original": {
431 | "owner": "kosayoda",
432 | "repo": "nvim-lightbulb",
433 | "type": "github"
434 | }
435 | },
436 | "nvim-lspconfig": {
437 | "flake": false,
438 | "locked": {
439 | "lastModified": 1747234257,
440 | "narHash": "sha256-iC1l9KefzVbRKsqEqvxUdokBvWxIQahr8KJ+K1j16Sw=",
441 | "owner": "neovim",
442 | "repo": "nvim-lspconfig",
443 | "rev": "ac1dfbe3b60e5e23a2cff90e3bd6a3bc88031a57",
444 | "type": "github"
445 | },
446 | "original": {
447 | "owner": "neovim",
448 | "repo": "nvim-lspconfig",
449 | "type": "github"
450 | }
451 | },
452 | "nvim-treesitter": {
453 | "flake": false,
454 | "locked": {
455 | "lastModified": 1747068210,
456 | "narHash": "sha256-bYbwIVii2mxFyro91ogCVLkIyrMNP4QJRSGNVcZPVEU=",
457 | "owner": "nvim-treesitter",
458 | "repo": "nvim-treesitter",
459 | "rev": "066fd6505377e3fd4aa219e61ce94c2b8bdb0b79",
460 | "type": "github"
461 | },
462 | "original": {
463 | "owner": "nvim-treesitter",
464 | "repo": "nvim-treesitter",
465 | "type": "github"
466 | }
467 | },
468 | "nvim-treesitter-textobjects": {
469 | "flake": false,
470 | "locked": {
471 | "lastModified": 1747118144,
472 | "narHash": "sha256-vSXqADdlwdvyEHUomcoByAJur/BuBI1zM0JoqD6SuzU=",
473 | "owner": "nvim-treesitter",
474 | "repo": "nvim-treesitter-textobjects",
475 | "rev": "b0debd5c424969b4baeabdc8f54db3036c691732",
476 | "type": "github"
477 | },
478 | "original": {
479 | "owner": "nvim-treesitter",
480 | "repo": "nvim-treesitter-textobjects",
481 | "type": "github"
482 | }
483 | },
484 | "nvim-web-devicons": {
485 | "flake": false,
486 | "locked": {
487 | "lastModified": 1747360641,
488 | "narHash": "sha256-+RHeFaeCF/iwAf8qAOjbEIl3YcnrBMVfkQnnzDNhyTA=",
489 | "owner": "nvim-tree",
490 | "repo": "nvim-web-devicons",
491 | "rev": "1fb58cca9aebbc4fd32b086cb413548ce132c127",
492 | "type": "github"
493 | },
494 | "original": {
495 | "owner": "nvim-tree",
496 | "repo": "nvim-web-devicons",
497 | "type": "github"
498 | }
499 | },
500 | "persistence.nvim": {
501 | "flake": false,
502 | "locked": {
503 | "lastModified": 1740507614,
504 | "narHash": "sha256-irUqDcSLBKL6uuL9IJoNCTTCdY+rTDW02+e5kf64TkM=",
505 | "owner": "folke",
506 | "repo": "persistence.nvim",
507 | "rev": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51",
508 | "type": "github"
509 | },
510 | "original": {
511 | "owner": "folke",
512 | "repo": "persistence.nvim",
513 | "type": "github"
514 | }
515 | },
516 | "plenary.nvim": {
517 | "flake": false,
518 | "locked": {
519 | "lastModified": 1739311008,
520 | "narHash": "sha256-8FV5RjF7QbDmQOQynpK7uRKONKbPRYbOPugf9ZxNvUs=",
521 | "owner": "nvim-lua",
522 | "repo": "plenary.nvim",
523 | "rev": "857c5ac632080dba10aae49dba902ce3abf91b35",
524 | "type": "github"
525 | },
526 | "original": {
527 | "owner": "nvim-lua",
528 | "repo": "plenary.nvim",
529 | "type": "github"
530 | }
531 | },
532 | "prism-themes": {
533 | "flake": false,
534 | "locked": {
535 | "lastModified": 1747211560,
536 | "narHash": "sha256-5Es+MtBpbAS93PwGEDOYpwh+4Kx42Fj7uQnC3j04Igc=",
537 | "owner": "PrismLauncher",
538 | "repo": "Themes",
539 | "rev": "be47ba6df52dabc34633d8354fdac46ec9affac6",
540 | "type": "github"
541 | },
542 | "original": {
543 | "owner": "PrismLauncher",
544 | "repo": "Themes",
545 | "type": "github"
546 | }
547 | },
548 | "root": {
549 | "inputs": {
550 | "firefox-addons": "firefox-addons",
551 | "frosty-vim": "frosty-vim",
552 | "home-manager": "home-manager",
553 | "nixcord": "nixcord",
554 | "nixpkgs": "nixpkgs",
555 | "prism-themes": "prism-themes",
556 | "spicetify-nix": "spicetify-nix"
557 | }
558 | },
559 | "satellite.nvim": {
560 | "flake": false,
561 | "locked": {
562 | "lastModified": 1746800633,
563 | "narHash": "sha256-1QUzXv6t6pwlURuuORcwaY+BoxvCf6CmpBVZBUV68p4=",
564 | "owner": "lewis6991",
565 | "repo": "satellite.nvim",
566 | "rev": "8f3a12bc64fbb3df738bf82f8295219f50c5b59d",
567 | "type": "github"
568 | },
569 | "original": {
570 | "owner": "lewis6991",
571 | "repo": "satellite.nvim",
572 | "type": "github"
573 | }
574 | },
575 | "scope.nvim": {
576 | "flake": false,
577 | "locked": {
578 | "lastModified": 1746736850,
579 | "narHash": "sha256-VS+r2QmS5ep3MKS2/X2ffdwP4gbGOeUEspZ4CXDC3eE=",
580 | "owner": "tiagovla",
581 | "repo": "scope.nvim",
582 | "rev": "6b4208f017da9b122d69ddc5841e040dffe7313c",
583 | "type": "github"
584 | },
585 | "original": {
586 | "owner": "tiagovla",
587 | "repo": "scope.nvim",
588 | "type": "github"
589 | }
590 | },
591 | "snacks.nvim": {
592 | "flake": false,
593 | "locked": {
594 | "lastModified": 1740868622,
595 | "narHash": "sha256-Gw0Bp2YeoESiBLs3NPnqke3xwEjuiQDDU1CPofrhtig=",
596 | "owner": "folke",
597 | "repo": "snacks.nvim",
598 | "rev": "bc0630e43be5699bb94dadc302c0d21615421d93",
599 | "type": "github"
600 | },
601 | "original": {
602 | "owner": "folke",
603 | "repo": "snacks.nvim",
604 | "type": "github"
605 | }
606 | },
607 | "spicetify-nix": {
608 | "inputs": {
609 | "nixpkgs": [
610 | "nixpkgs"
611 | ],
612 | "systems": "systems_3"
613 | },
614 | "locked": {
615 | "lastModified": 1747355848,
616 | "narHash": "sha256-WpOTfGuObhpaI38+uHgaOwnMAjHMrdLrfs6D35fKwjk=",
617 | "owner": "Gerg-L",
618 | "repo": "spicetify-nix",
619 | "rev": "a2bc0d49449fc61ca2eb364d6189179059394483",
620 | "type": "github"
621 | },
622 | "original": {
623 | "owner": "Gerg-L",
624 | "repo": "spicetify-nix",
625 | "type": "github"
626 | }
627 | },
628 | "systems": {
629 | "locked": {
630 | "lastModified": 1681028828,
631 | "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
632 | "owner": "nix-systems",
633 | "repo": "default",
634 | "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
635 | "type": "github"
636 | },
637 | "original": {
638 | "owner": "nix-systems",
639 | "repo": "default",
640 | "type": "github"
641 | }
642 | },
643 | "systems_2": {
644 | "locked": {
645 | "lastModified": 1681028828,
646 | "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
647 | "owner": "nix-systems",
648 | "repo": "default",
649 | "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
650 | "type": "github"
651 | },
652 | "original": {
653 | "id": "systems",
654 | "type": "indirect"
655 | }
656 | },
657 | "systems_3": {
658 | "locked": {
659 | "lastModified": 1681028828,
660 | "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
661 | "owner": "nix-systems",
662 | "repo": "default",
663 | "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
664 | "type": "github"
665 | },
666 | "original": {
667 | "owner": "nix-systems",
668 | "repo": "default",
669 | "type": "github"
670 | }
671 | },
672 | "treefmt-nix": {
673 | "inputs": {
674 | "nixpkgs": [
675 | "nixcord",
676 | "nixpkgs"
677 | ]
678 | },
679 | "locked": {
680 | "lastModified": 1744961264,
681 | "narHash": "sha256-aRmUh0AMwcbdjJHnytg1e5h5ECcaWtIFQa6d9gI85AI=",
682 | "owner": "numtide",
683 | "repo": "treefmt-nix",
684 | "rev": "8d404a69efe76146368885110f29a2ca3700bee6",
685 | "type": "github"
686 | },
687 | "original": {
688 | "owner": "numtide",
689 | "repo": "treefmt-nix",
690 | "type": "github"
691 | }
692 | },
693 | "which-key.nvim": {
694 | "flake": false,
695 | "locked": {
696 | "lastModified": 1740233407,
697 | "narHash": "sha256-uvMcSduMr7Kd2oUmIOYzvWF4FIl6bZxIYm9FSw/3pCo=",
698 | "owner": "folke",
699 | "repo": "which-key.nvim",
700 | "rev": "370ec46f710e058c9c1646273e6b225acf47cbed",
701 | "type": "github"
702 | },
703 | "original": {
704 | "owner": "folke",
705 | "repo": "which-key.nvim",
706 | "type": "github"
707 | }
708 | }
709 | },
710 | "root": "root",
711 | "version": 7
712 | }
713 |
--------------------------------------------------------------------------------
/flake.nix:
--------------------------------------------------------------------------------
1 | {
2 | description = "My silly flake config";
3 |
4 | inputs = {
5 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6 |
7 | home-manager = {
8 | url = "github:nix-community/home-manager";
9 | inputs.nixpkgs.follows = "nixpkgs";
10 | };
11 |
12 | frosty-vim = {
13 | url = "github:SystematicError/frosty-vim";
14 | inputs.nixpkgs.follows = "nixpkgs";
15 | };
16 |
17 | spicetify-nix = {
18 | url = "github:Gerg-L/spicetify-nix";
19 | inputs.nixpkgs.follows = "nixpkgs";
20 | };
21 |
22 | nixcord = {
23 | url = "github:KaylorBen/nixcord";
24 | inputs.nixpkgs.follows = "nixpkgs";
25 | };
26 |
27 | firefox-addons = {
28 | url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons";
29 | inputs.nixpkgs.follows = "nixpkgs";
30 | };
31 |
32 | prism-themes = {
33 | url = "github:PrismLauncher/Themes";
34 | flake = false;
35 | };
36 | };
37 |
38 | outputs = {
39 | self,
40 | nixpkgs,
41 | home-manager,
42 | ...
43 | } @ inputs: let
44 | inherit (self) outputs;
45 | specialArgs = {inherit inputs outputs;};
46 | extraSpecialArgs = specialArgs;
47 | pkgs = nixpkgs.legacyPackages.x86_64-linux;
48 | in {
49 | nixosConfigurations = {
50 | snowflake = nixpkgs.lib.nixosSystem {
51 | inherit specialArgs;
52 | modules = [./hosts/snowflake/configuration.nix];
53 | };
54 | };
55 |
56 | homeConfigurations = {
57 | "systematic@snowflake" = home-manager.lib.homeManagerConfiguration {
58 | inherit pkgs extraSpecialArgs;
59 | modules = [./users/systematic/home.nix];
60 | };
61 | };
62 | };
63 | }
64 |
--------------------------------------------------------------------------------
/hosts/snowflake/configuration.nix:
--------------------------------------------------------------------------------
1 | {
2 | config,
3 | pkgs,
4 | inputs,
5 | lib,
6 | ...
7 | }: {
8 | imports = [
9 | ./hardware-configuration.nix
10 | ];
11 |
12 | nixpkgs.config.allowUnfree = true;
13 |
14 | nix = {
15 | registry = (lib.mapAttrs (_: flake: {inherit flake;})) ((lib.filterAttrs (_: lib.isType "flake")) inputs);
16 |
17 | settings = {
18 | auto-optimise-store = true;
19 | experimental-features = ["nix-command" "flakes"];
20 | };
21 | };
22 |
23 | boot = {
24 | loader = {
25 | systemd-boot.enable = true;
26 | efi.canTouchEfiVariables = true;
27 | };
28 | };
29 |
30 | boot.tmp.useTmpfs = true;
31 |
32 | networking = {
33 | hostName = "snowflake";
34 | networkmanager.enable = true;
35 | };
36 |
37 | i18n.defaultLocale = "en_GB.UTF-8";
38 |
39 | services = {
40 | flatpak.enable = true;
41 | pulseaudio.enable = false;
42 |
43 | xserver = {
44 | enable = true;
45 |
46 | desktopManager.gnome.enable = true;
47 | displayManager.gdm.enable = true;
48 |
49 | videoDrivers = ["nvidia"];
50 | excludePackages = [pkgs.xterm];
51 | };
52 |
53 | gnome.core-utilities.enable = false;
54 | power-profiles-daemon.enable = false;
55 |
56 | printing = {
57 | enable = true;
58 | drivers = [pkgs.cnijfilter2];
59 | };
60 |
61 | pipewire = {
62 | enable = true;
63 | alsa.enable = true;
64 | alsa.support32Bit = true;
65 | pulse.enable = true;
66 | };
67 |
68 | auto-cpufreq = {
69 | enable = true;
70 |
71 | settings = {
72 | battery = {
73 | governor = "powersave";
74 | turbo = "never";
75 | };
76 |
77 | charger = {
78 | governor = "balanced";
79 | turbo = "auto";
80 | };
81 | };
82 | };
83 | };
84 |
85 | documentation.nixos.enable = false;
86 | environment.gnome.excludePackages = [pkgs.gnome-tour];
87 |
88 | security.rtkit.enable = true;
89 |
90 | hardware = {
91 | enableAllFirmware = true;
92 |
93 | cpu.amd.updateMicrocode = true;
94 |
95 | graphics = {
96 | enable = true;
97 | enable32Bit = true;
98 | };
99 |
100 | nvidia = {
101 | open = true;
102 | nvidiaSettings = true;
103 |
104 | package = config.boot.kernelPackages.nvidiaPackages.stable;
105 |
106 | modesetting.enable = true;
107 |
108 | powerManagement = {
109 | enable = false;
110 | finegrained = true;
111 | };
112 |
113 | prime = {
114 | amdgpuBusId = "PCI:5:0:0";
115 | nvidiaBusId = "PCI:1:0:0";
116 |
117 | offload = {
118 | enable = true;
119 | enableOffloadCmd = true;
120 | };
121 | };
122 | };
123 |
124 | sane.enable = true;
125 | };
126 |
127 | programs.zsh.enable = true;
128 |
129 | programs.gamemode.enable = true;
130 |
131 | virtualisation.podman = {
132 | enable = true;
133 | extraPackages = [pkgs.podman-compose];
134 | };
135 |
136 | users.groups.nixconf = {};
137 | systemd.tmpfiles.rules = [
138 | "d /etc/nixos 0775 root nixconf"
139 | ];
140 |
141 | users = {
142 | defaultUserShell = pkgs.zsh;
143 |
144 | users = {
145 | systematic = {
146 | isNormalUser = true;
147 | initialPassword = "nixos";
148 | extraGroups = ["wheel" "video" "audio" "networkmanager" "nixconf"];
149 | };
150 | };
151 | };
152 |
153 | environment.systemPackages = with pkgs; [
154 | home-manager
155 | ];
156 |
157 | system.stateVersion = "23.05";
158 | }
159 |
--------------------------------------------------------------------------------
/hosts/snowflake/hardware-configuration.nix:
--------------------------------------------------------------------------------
1 | # Do not modify this file! It was generated by ‘nixos-generate-config’
2 | # and may be overwritten by future invocations. Please make changes
3 | # to /etc/nixos/configuration.nix instead.
4 | { config, lib, pkgs, modulesPath, ... }:
5 |
6 | {
7 | imports =
8 | [ (modulesPath + "/installer/scan/not-detected.nix")
9 | ];
10 |
11 | boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "sd_mod" ];
12 | boot.initrd.kernelModules = [ ];
13 | boot.kernelModules = [ "kvm-amd" ];
14 | boot.extraModulePackages = [ ];
15 |
16 | fileSystems."/" =
17 | { device = "/dev/disk/by-uuid/ff265bb9-b363-4829-82f2-8374808810fc";
18 | fsType = "ext4";
19 | };
20 |
21 | fileSystems."/boot" =
22 | { device = "/dev/disk/by-uuid/BE43-2409";
23 | fsType = "vfat";
24 | };
25 |
26 | swapDevices =
27 | [ { device = "/dev/disk/by-uuid/0eeb6428-1adf-4e52-84be-6515d82f6d39"; }
28 | ];
29 |
30 | # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
31 | # (the default) this is the recommended approach. When using systemd-networkd it's
32 | # still possible to use this option, but it's recommended to use it in conjunction
33 | # with explicit per-interface declarations with `networking.interfaces..useDHCP`.
34 | networking.useDHCP = lib.mkDefault true;
35 | # networking.interfaces.eno1.useDHCP = lib.mkDefault true;
36 | # networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
37 |
38 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
39 | hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
40 | }
41 |
--------------------------------------------------------------------------------
/users/systematic/assets/profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SystematicError/dotfiles/1700bfdbfecca6775ad380c2ea9187491c4789f4/users/systematic/assets/profile.png
--------------------------------------------------------------------------------
/users/systematic/assets/wallpaper_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SystematicError/dotfiles/1700bfdbfecca6775ad380c2ea9187491c4789f4/users/systematic/assets/wallpaper_dark.png
--------------------------------------------------------------------------------
/users/systematic/assets/wallpaper_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SystematicError/dotfiles/1700bfdbfecca6775ad380c2ea9187491c4789f4/users/systematic/assets/wallpaper_light.png
--------------------------------------------------------------------------------
/users/systematic/home.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | home.username = "systematic";
3 | home.homeDirectory = "/home/systematic";
4 |
5 | nixpkgs.config.allowUnfree = true;
6 | programs.home-manager.enable = true;
7 |
8 | home.packages = with pkgs; [
9 | curl
10 | ripgrep
11 | yt-dlp
12 |
13 | celluloid
14 | decibels
15 | easyeffects
16 | foliate
17 | gnome-calculator
18 | gnome-clocks
19 | gnome-font-viewer
20 | gnome-secrets
21 | loupe
22 | papers
23 | pods
24 | resources
25 | simple-scan
26 | snapshot
27 | warp
28 | mousam
29 |
30 | obsidian
31 | gimp
32 | libreoffice
33 |
34 | steam
35 | steam-run
36 | ];
37 |
38 | imports = [
39 | ./modules/direnv.nix
40 | ./modules/eza.nix
41 | ./modules/firefox.nix
42 | ./modules/ghostty.nix
43 | ./modules/git.nix
44 | ./modules/gnome.nix
45 | ./modules/gtk.nix
46 | ./modules/nautilus.nix
47 | ./modules/nvim.nix
48 | ./modules/planify.nix
49 | ./modules/prism.nix
50 | ./modules/smile.nix
51 | ./modules/spicetify.nix
52 | ./modules/starship.nix
53 | ./modules/text_editor.nix
54 | ./modules/vesktop.nix
55 | ./modules/zsh.nix
56 | ];
57 |
58 | home.stateVersion = "23.05";
59 | }
60 |
--------------------------------------------------------------------------------
/users/systematic/modules/direnv.nix:
--------------------------------------------------------------------------------
1 | {...}: {
2 | home.sessionVariables.DIRENV_LOG_FORMAT = "";
3 |
4 | programs.direnv = {
5 | enable = true;
6 |
7 | enableZshIntegration = true;
8 | nix-direnv.enable = true;
9 | };
10 | }
11 |
--------------------------------------------------------------------------------
/users/systematic/modules/eza.nix:
--------------------------------------------------------------------------------
1 | {...}: {
2 | programs.eza = {
3 | enable = true;
4 |
5 | icons = "auto";
6 | extraOptions = ["--all"];
7 | };
8 |
9 | home.shellAliases = {
10 | ls = "eza";
11 | ll = "eza --long";
12 | lt = "eza --tree";
13 | };
14 | }
15 |
--------------------------------------------------------------------------------
/users/systematic/modules/firefox.nix:
--------------------------------------------------------------------------------
1 | {
2 | inputs,
3 | pkgs,
4 | ...
5 | }: {
6 | programs.firefox = {
7 | enable = true;
8 |
9 | profiles.frosted = {
10 | extensions.packages = with inputs.firefox-addons.packages.${pkgs.system}; [
11 | darkreader
12 | return-youtube-dislikes
13 | sponsorblock
14 | ublock-origin
15 | ];
16 |
17 | settings = {
18 | "extensions.autoDisableScopes" = 0;
19 |
20 | "extensions.activeThemeID" = "firefox-compact-dark@mozilla.org";
21 |
22 | "layers.acceleration.force-enabled" = true;
23 | "gfx.webrender.all" = true;
24 |
25 | "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
26 | "svg.context-properties.content.enabled" = true;
27 |
28 | "widget.use-xdg-desktop-portal.file-picker" = 1;
29 | "widget.gtk.non-native-titlebar-buttons.enabled" = false;
30 | "widget.gtk.rounded-bottom-corners.enabled" = true;
31 |
32 | "browser.toolbars.bookmarks.visibility" = "never";
33 | "browser.tabs.groups.enabled" = true;
34 | "sidebar.revamp" = true;
35 | "sidebar.verticalTabs" = true;
36 | "sidebar.main.tools" = "aichat,history,bookmarks";
37 | "sidebar.revamp.round-content-area" = true;
38 | };
39 |
40 | userChrome = ''
41 | .titlebar-spacer[type="post-tabs"] {
42 | display: none !important;
43 | }
44 | '';
45 |
46 | search = {
47 | force = true;
48 | default = "ddg";
49 | privateDefault = "ddg";
50 |
51 | engines = {
52 | bing.metaData.hidden = true;
53 |
54 | google.metaData.alias = "@g";
55 | wikipedia.metaData.alias = "@wk";
56 |
57 | youtube = {
58 | definedAliases = ["@youtube" "@yt"];
59 | iconUpdateURL = "https://youtube.com/favicon.ico";
60 | updateInterval = 7 * 24 * 60 * 60 * 1000;
61 |
62 | urls = [
63 | {
64 | template = "https://www.youtube.com/results";
65 | params = [
66 | {
67 | name = "search_query";
68 | value = "{searchTerms}";
69 | }
70 | ];
71 | }
72 | ];
73 | };
74 |
75 | "Nix Packages" = {
76 | definedAliases = ["@nixpkgs" "@np"];
77 | icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
78 |
79 | urls = [
80 | {
81 | template = "https://search.nixos.org/packages";
82 | params = [
83 | {
84 | name = "channel";
85 | value = "unstable";
86 | }
87 | {
88 | name = "query";
89 | value = "{searchTerms}";
90 | }
91 | ];
92 | }
93 | ];
94 | };
95 | };
96 | };
97 | };
98 |
99 | # Check https://mozilla.github.io/policy-templates for all policies
100 | policies = {
101 | AppAutoUpdate = false;
102 |
103 | DontCheckDefaultBrowser = true;
104 |
105 | EncryptedMediaExtensions.Enabled = true;
106 |
107 | DisableTelemetry = true;
108 | DisableFirefoxStudies = true;
109 | DisableFormHistory = true;
110 |
111 | EnableTrackingProtection = {
112 | Value = true;
113 | Cryptomining = true;
114 | Fingerprinting = true;
115 | EmailTracking = true;
116 | };
117 |
118 | DisablePocket = true;
119 | DisableSetDesktopBackground = true;
120 | NoDefaultBookmarks = true;
121 | OfferToSaveLogins = false;
122 | PasswordManagerEnabled = false;
123 |
124 | FirefoxHome = {
125 | TopSites = false;
126 | SponsoredTopSites = false;
127 | Highlights = false;
128 | Pocket = false;
129 | SponsoredPocket = false;
130 | Snippets = false;
131 | };
132 |
133 | UserMessaging = {
134 | ExtensionRecommendations = false;
135 | FeatureRecommendations = false;
136 | MoreFromMozilla = false;
137 | SkipOnboarding = true;
138 | WhatsNew = false;
139 | };
140 | };
141 | };
142 | }
143 |
--------------------------------------------------------------------------------
/users/systematic/modules/ghostty.nix:
--------------------------------------------------------------------------------
1 | {
2 | lib,
3 | pkgs,
4 | ...
5 | }: {
6 | home.packages = with pkgs; [
7 | ghostty
8 | (writeShellScriptBin "xdg-terminal-exec" ''${pkgs.ghostty}/bin/ghostty -e "$@"'')
9 | ];
10 |
11 | home.file = {
12 | ghostty = {
13 | target = ".config/ghostty/config";
14 |
15 | text = lib.generators.toKeyValue {} {
16 | font-family = "JetBrainsMono Nerd Font";
17 |
18 | window-padding-x = 12;
19 | window-padding-y = 12;
20 |
21 | bold-is-bright = true;
22 | cursor-invert-fg-bg = true;
23 | unfocused-split-opacity = 1;
24 | window-theme = "system";
25 | theme = "light:custom-light,dark:custom-dark";
26 | };
27 | };
28 |
29 | ghostty-light-theme = {
30 | target = ".config/ghostty/themes/custom-light";
31 |
32 | text = lib.generators.toKeyValue {listsAsDuplicateKeys = true;} {
33 | background = "#0f0f0f";
34 | foreground = "#dddddd";
35 |
36 | selection-background = "#151515";
37 | selection-foreground = "#bababa";
38 |
39 | palette = [
40 | "0=#1e1e1e"
41 | "1=#fc4e4e"
42 | "2=#bbef6e"
43 | "3=#ffaf60"
44 | "4=#6aa4cc"
45 | "5=#8d8bc4"
46 | "6=#96e0c9"
47 | "7=#bababa"
48 |
49 | "8=#303030"
50 | "9=#ff6565"
51 | "10=#c5ec8e"
52 | "11=#f6cd7e"
53 | "12=#82b4d6"
54 | "13=#ac9dcc"
55 | "14=#b8e5ec"
56 | "15=#dddddd"
57 | ];
58 | };
59 | };
60 |
61 | ghostty-dark-theme = {
62 | target = ".config/ghostty/themes/custom-dark";
63 |
64 | text = lib.generators.toKeyValue {listsAsDuplicateKeys = true;} {
65 | background = "#0f0f0f";
66 | foreground = "#dddddd";
67 |
68 | selection-background = "#151515";
69 | selection-foreground = "#bababa";
70 |
71 | palette = [
72 | "0=#1e1e1e"
73 | "1=#fc4e4e"
74 | "2=#bbef6e"
75 | "3=#ffaf60"
76 | "4=#6aa4cc"
77 | "5=#8d8bc4"
78 | "6=#96e0c9"
79 | "7=#bababa"
80 |
81 | "8=#303030"
82 | "9=#ff6565"
83 | "10=#c5ec8e"
84 | "11=#f6cd7e"
85 | "12=#82b4d6"
86 | "13=#ac9dcc"
87 | "14=#b8e5ec"
88 | "15=#dddddd"
89 | ];
90 | };
91 | };
92 | };
93 | }
94 |
--------------------------------------------------------------------------------
/users/systematic/modules/git.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | programs.git = {
3 | enable = true;
4 |
5 | package = pkgs.symlinkJoin {
6 | inherit (pkgs.git) name meta;
7 |
8 | paths = [pkgs.git];
9 | nativeBuildInputs = [pkgs.makeWrapper];
10 |
11 | postBuild = ''wrapProgram "$out/bin/git" --set TZ UTC'';
12 | };
13 |
14 | userName = "SystematicError";
15 | userEmail = "systematicerror@users.noreply.github.com";
16 |
17 | aliases = {
18 | mpush = "push origin master";
19 | fmpush = "push --force origin master";
20 | };
21 |
22 | extraConfig.safe = {
23 | directory = "/etc/nixos";
24 | };
25 | };
26 | }
27 |
--------------------------------------------------------------------------------
/users/systematic/modules/gnome.nix:
--------------------------------------------------------------------------------
1 | {
2 | lib,
3 | pkgs,
4 | ...
5 | }: {
6 | home.packages = with pkgs.gnomeExtensions; [
7 | alphabetical-app-grid
8 | appindicator
9 | blur-my-shell
10 | caffeine
11 | color-picker
12 | pano
13 | pip-on-top
14 | rounded-window-corners-reborn
15 | ];
16 |
17 | home.file.profile-picture = {
18 | source = ../assets/profile.png;
19 | target = ".face";
20 | };
21 |
22 | dconf.settings = {
23 | # Gnome core
24 |
25 | "org/gnome/desktop/background" = {
26 | picture-uri = "file://${../assets/wallpaper_light.png}";
27 | picture-uri-dark = "file://${../assets/wallpaper_dark.png}";
28 | };
29 |
30 | "org/gnome/desktop/interface" = {
31 | color-scheme = "prefer-dark";
32 | clock-format = "12h";
33 | enable-hot-corners = false;
34 | };
35 |
36 | "org/gnome/desktop/datetime" = {
37 | automatic-timezone = true;
38 | };
39 |
40 | "org/gnome/desktop/wm/preferences" = {
41 | audible-bell = false;
42 | };
43 |
44 | "org/gnome/desktop/input-sources" = {
45 | xkb-options = ["caps:swapescape"];
46 | };
47 |
48 | "org/gnome/desktop/wm/keybindings" = {
49 | switch-applications = [];
50 | switch-applications-backward = [];
51 | switch-windows = ["Tab"];
52 | switch-windows-backward = ["Tab"];
53 | };
54 |
55 | "org/gnome/desktop/peripherals/mouse" = {
56 | accel-profile = "flat";
57 | };
58 |
59 | "org/gnome/desktop/peripherals/touchpad" = {
60 | click-method = "areas";
61 | disable-while-typing = false;
62 | tap-to-click = true;
63 | };
64 |
65 | "org/gnome/desktop/app-folders/folders/Utilities" = {
66 | apps = [];
67 | categories = [];
68 | };
69 |
70 | "org/gnome/system/location" = {
71 | enabled = true;
72 | };
73 |
74 | "org/gnome/gnome-session" = {
75 | logout-prompt = false;
76 | };
77 |
78 | "org/gnome/mutter" = {
79 | dynamic-workspaces = true;
80 | edge-tiling = true;
81 | workspaces-only-on-primary = true;
82 | };
83 |
84 | "org/gnome/settings-daemon/plugins/color" = {
85 | night-light-schedule-automatic = false;
86 | night-light-schedule-from = 1.0;
87 | night-light-schedule-to = 1.0;
88 | night-light-temperature = lib.hm.gvariant.mkUint32 4170;
89 | };
90 |
91 | "org/gnome/shell/app-switcher" = {
92 | current-workspace-only = true;
93 | };
94 |
95 | "org/gnome/shell" = {
96 | favorite-apps = [
97 | "firefox.desktop"
98 | "org.gnome.Nautilus.desktop"
99 | "com.mitchellh.ghostty.desktop"
100 | "io.github.alainm23.planify.desktop"
101 | "obsidian.desktop"
102 | "steam.desktop"
103 | "org.prismlauncher.PrismLauncher.desktop"
104 | "spotify.desktop"
105 | "vesktop.desktop"
106 | ];
107 | disabled-extensions = [];
108 | enabled-extensions = [
109 | "AlphabeticalAppGrid@stuarthayhurst"
110 | "appindicatorsupport@rgcjonas.gmail.com"
111 | "blur-my-shell@aunetx"
112 | "caffeine@patapon.info"
113 | "color-picker@tuberry"
114 | "launch-new-instance@gnome-shell-extensions.gcampax.github.com"
115 | "pano@elhan.io"
116 | "pip-on-top@rafostar.github.com"
117 | "rounded-window-corners@fxgn"
118 | ];
119 | };
120 |
121 | # Gnome extensions
122 |
123 | "org/gnome/shell/extensions/blur-my-shell" = {
124 | brightness = 0.50;
125 | sigma = 45;
126 | };
127 |
128 | "org/gnome/shell/extensions/caffeine" = {
129 | enable-fullscreen = false;
130 | toggle-shortcut = ["c"];
131 | };
132 |
133 | "org/gnome/shell/extensions/color-picker" = {
134 | enable-systray = false;
135 | enable-shortcut = true;
136 | color-picker-shortcut = ["x"];
137 | };
138 |
139 | "org/gnome/shell/extensions/pano" = {
140 | open-links-in-browser = false;
141 | play-audio-on-copy = false;
142 | send-notification-on-copy = false;
143 | session-only-mode = true;
144 | show-indicator = false;
145 | };
146 |
147 | "org/gnome/shell/extensions/pip-on-top" = {
148 | stick = true;
149 | };
150 | };
151 | }
152 |
--------------------------------------------------------------------------------
/users/systematic/modules/gtk.nix:
--------------------------------------------------------------------------------
1 | {
2 | config,
3 | pkgs,
4 | ...
5 | }: {
6 | home.packages = with pkgs; [
7 | corefonts
8 | nerd-fonts.jetbrains-mono
9 | adw-gtk3
10 | ];
11 |
12 | fonts.fontconfig.enable = true;
13 |
14 | gtk = {
15 | enable = true;
16 |
17 | font = {
18 | name = "Inter";
19 | size = 11;
20 | package = pkgs.inter;
21 | };
22 |
23 | cursorTheme = {
24 | name = "macOS";
25 | package = pkgs.apple-cursor;
26 | };
27 |
28 | gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
29 |
30 | gtk3.extraConfig = {
31 | gtk-theme-name = "adw-gtk3";
32 | gtk-application-prefer-dark-theme = true;
33 | };
34 | };
35 |
36 | dconf.settings."org/gnome/desktop/interface".gtk-theme = "adw-gtk3";
37 | }
38 |
--------------------------------------------------------------------------------
/users/systematic/modules/nautilus.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | home.packages = with pkgs; [
3 | nautilus
4 | ];
5 |
6 | dconf.settings = {
7 | "org/gtk/gtk4/settings/file-chooser" = {
8 | show-hidden = true;
9 | sort-directories-first = true;
10 | };
11 |
12 | "org/gnome/nautilus/preferences" = {
13 | show-create-link = true;
14 | show-delete-permanently = true;
15 | };
16 | };
17 | }
18 |
--------------------------------------------------------------------------------
/users/systematic/modules/nvim.nix:
--------------------------------------------------------------------------------
1 | {
2 | inputs,
3 | lib,
4 | pkgs,
5 | ...
6 | }: {
7 | home.packages = with pkgs; [
8 | neovide
9 | inputs.frosty-vim.packages.${pkgs.system}.neovim
10 | ];
11 |
12 | home = {
13 | shellAliases.nv = "nvim";
14 | sessionVariables.EDITOR = lib.mkForce "nvim";
15 | };
16 |
17 | programs.git = {
18 | extraConfig = {
19 | core = {
20 | editor = "nvim";
21 | };
22 | };
23 | };
24 | }
25 |
--------------------------------------------------------------------------------
/users/systematic/modules/planify.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | home.packages = with pkgs; [
3 | planify
4 | ];
5 |
6 | dconf.settings."io/github/alainm23/planify" = {
7 | show-support-banner = true;
8 | clock-format = "12h";
9 | views-order-visible = ["inbox" "pinboard" "today" "scheduled" "completed" "labels"];
10 | };
11 | }
12 |
--------------------------------------------------------------------------------
/users/systematic/modules/prism.nix:
--------------------------------------------------------------------------------
1 | {
2 | inputs,
3 | pkgs,
4 | ...
5 | }: {
6 | home.packages = with pkgs; [
7 | prismlauncher
8 | ];
9 |
10 | home.file.prism-mellow-theme = {
11 | source = "${inputs.prism-themes}/themes/Mellow";
12 | target = ".local/share/PrismLauncher/themes/Mellow";
13 | };
14 | }
15 |
--------------------------------------------------------------------------------
/users/systematic/modules/smile.nix:
--------------------------------------------------------------------------------
1 | {pkgs, ...}: {
2 | home.packages = with pkgs; [
3 | smile
4 | ];
5 |
6 | dconf.settings = let
7 | basePath = "org/gnome/settings-daemon/plugins/media-keys";
8 | in {
9 | ${basePath}.custom-keybindings = [
10 | "/${basePath}/custom-keybindings/emoji/"
11 | ];
12 |
13 | "${basePath}/custom-keybindings/emoji" = {
14 | name = "Open emoji picker";
15 | command = "smile";
16 | binding = "e";
17 | };
18 | };
19 | }
20 |
--------------------------------------------------------------------------------
/users/systematic/modules/spicetify.nix:
--------------------------------------------------------------------------------
1 | {
2 | inputs,
3 | pkgs,
4 | ...
5 | }: {
6 | imports = [inputs.spicetify-nix.homeManagerModules.default];
7 |
8 | programs.spicetify = let
9 | spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
10 | in {
11 | enable = true;
12 |
13 | enabledExtensions = with spicePkgs.extensions; [
14 | popupLyrics
15 | trashbin
16 |
17 | adblock
18 | beautifulLyrics
19 | betterGenres
20 | ];
21 | };
22 | }
23 |
--------------------------------------------------------------------------------
/users/systematic/modules/starship.nix:
--------------------------------------------------------------------------------
1 | {...}: {
2 | programs.starship = {
3 | enable = true;
4 |
5 | settings = {
6 | character = {
7 | success_symbol = "[➜](bold cyan)";
8 | error_symbol = "[➜](bold red)";
9 | };
10 |
11 | directory = {
12 | truncation_length = 3;
13 | style = "yellow bold";
14 | };
15 |
16 | cmd_duration = {
17 | min_time = 5000;
18 | style = "cyan bold";
19 | };
20 |
21 | nix_shell = {
22 | heuristic = true;
23 | };
24 |
25 | battery = {
26 | disabled = true;
27 | };
28 | };
29 | };
30 | }
31 |
--------------------------------------------------------------------------------
/users/systematic/modules/text_editor.nix:
--------------------------------------------------------------------------------
1 | {
2 | lib,
3 | pkgs,
4 | ...
5 | }: {
6 | home.packages = with pkgs; [
7 | gnome-text-editor
8 | ];
9 |
10 | dconf.settings."org/gnome/TextEditor" = {
11 | restore-session = false;
12 | indent-style = "space";
13 | tab-width = lib.hm.gvariant.mkUint32 4;
14 | };
15 | }
16 |
--------------------------------------------------------------------------------
/users/systematic/modules/vesktop.nix:
--------------------------------------------------------------------------------
1 | {inputs, ...}: {
2 | imports = [inputs.nixcord.homeManagerModules.nixcord];
3 |
4 | programs.nixcord = {
5 | enable = true;
6 |
7 | discord.enable = false;
8 | vesktop.enable = true;
9 |
10 | config.plugins = {
11 | alwaysTrust.enable = true;
12 | callTimer.enable = true;
13 | clearURLs.enable = true;
14 | crashHandler.enable = true;
15 | disableCallIdle.enable = true;
16 | experiments.enable = true;
17 | fakeNitro.enable = true;
18 | mentionAvatars.enable = true;
19 | noReplyMention.enable = true;
20 | openInApp.enable = true;
21 | shikiCodeblocks.enable = true;
22 | spotifyCrack.enable = true;
23 | unindent.enable = true;
24 | unsuppressEmbeds.enable = true;
25 | validUser.enable = true;
26 | volumeBooster.enable = true;
27 | youtubeAdblock.enable = true;
28 | webKeybinds.enable = true;
29 | webScreenShareFixes.enable = true;
30 | };
31 | };
32 | }
33 |
--------------------------------------------------------------------------------
/users/systematic/modules/zsh.nix:
--------------------------------------------------------------------------------
1 | {
2 | config,
3 | pkgs,
4 | ...
5 | }: {
6 | programs.zsh = {
7 | enable = true;
8 |
9 | dotDir = ".config/zsh";
10 | enableVteIntegration = true;
11 |
12 | history = {
13 | save = 2000;
14 | size = 2000;
15 | path = "${config.xdg.dataHome}/zsh/zsh_history";
16 | };
17 |
18 | shellAliases = {
19 | sudo = "sudo ";
20 | cl = "clear";
21 | fexp = "xdg-open .";
22 | };
23 |
24 | plugins = with pkgs; [
25 | {
26 | name = "autopair";
27 | src = zsh-autopair;
28 | file = "share/zsh/zsh-autopair/autopair.zsh";
29 | }
30 |
31 | {
32 | name = "autosuggestions";
33 | src = zsh-autosuggestions;
34 | file = "share/zsh-autosuggestions/zsh-autosuggestions.zsh";
35 | }
36 |
37 | {
38 | name = "syntax-highlighting";
39 | src = zsh-syntax-highlighting;
40 | file = "share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh";
41 | }
42 | ];
43 | };
44 | }
45 |
--------------------------------------------------------------------------------