├── 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 | ![Showcase](https://github.com/user-attachments/assets/3f32b2c4-328e-4c38-b3ab-4acd339eeb91) 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 | --------------------------------------------------------------------------------