Personal-use NixOS configuration

Initial Commit

+2518
+4
.gitignore
··· 1 + /.ignore/ 2 + /.idea/ 3 + 4 + /result
+628
flake.lock
··· 1 + { 2 + "nodes": { 3 + "crane": { 4 + "locked": { 5 + "lastModified": 1731098351, 6 + "narHash": "sha256-HQkYvKvaLQqNa10KEFGgWHfMAbWBfFp+4cAgkut+NNE=", 7 + "owner": "ipetkov", 8 + "repo": "crane", 9 + "rev": "ef80ead953c1b28316cc3f8613904edc2eb90c28", 10 + "type": "github" 11 + }, 12 + "original": { 13 + "owner": "ipetkov", 14 + "repo": "crane", 15 + "type": "github" 16 + } 17 + }, 18 + "disko": { 19 + "inputs": { 20 + "nixpkgs": [ 21 + "nixpkgs" 22 + ] 23 + }, 24 + "locked": { 25 + "lastModified": 1746728054, 26 + "narHash": "sha256-eDoSOhxGEm2PykZFa/x9QG5eTH0MJdiJ9aR00VAofXE=", 27 + "owner": "nix-community", 28 + "repo": "disko", 29 + "rev": "ff442f5d1425feb86344c028298548024f21256d", 30 + "type": "github" 31 + }, 32 + "original": { 33 + "owner": "nix-community", 34 + "ref": "v1.12.0", 35 + "repo": "disko", 36 + "type": "github" 37 + } 38 + }, 39 + "firefox-addons": { 40 + "inputs": { 41 + "nixpkgs": [ 42 + "nixpkgs" 43 + ] 44 + }, 45 + "locked": { 46 + "dir": "pkgs/firefox-addons", 47 + "lastModified": 1754138575, 48 + "narHash": "sha256-6foT7Sflve4XuLnBKkgN9b9IP4FvdoBA2XQ2IyXmbog=", 49 + "owner": "rycee", 50 + "repo": "nur-expressions", 51 + "rev": "27c945a6450d42c62f7e41019d7931b426bb786f", 52 + "type": "gitlab" 53 + }, 54 + "original": { 55 + "dir": "pkgs/firefox-addons", 56 + "owner": "rycee", 57 + "repo": "nur-expressions", 58 + "type": "gitlab" 59 + } 60 + }, 61 + "flake-compat": { 62 + "flake": false, 63 + "locked": { 64 + "lastModified": 1696426674, 65 + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", 66 + "owner": "edolstra", 67 + "repo": "flake-compat", 68 + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", 69 + "type": "github" 70 + }, 71 + "original": { 72 + "owner": "edolstra", 73 + "repo": "flake-compat", 74 + "type": "github" 75 + } 76 + }, 77 + "flake-compat_2": { 78 + "locked": { 79 + "lastModified": 1733328505, 80 + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", 81 + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", 82 + "revCount": 69, 83 + "type": "tarball", 84 + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz?rev=ff81ac966bb2cae68946d5ed5fc4994f96d0ffec&revCount=69" 85 + }, 86 + "original": { 87 + "type": "tarball", 88 + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" 89 + } 90 + }, 91 + "flake-parts": { 92 + "inputs": { 93 + "nixpkgs-lib": [ 94 + "lanzaboote", 95 + "nixpkgs" 96 + ] 97 + }, 98 + "locked": { 99 + "lastModified": 1730504689, 100 + "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", 101 + "owner": "hercules-ci", 102 + "repo": "flake-parts", 103 + "rev": "506278e768c2a08bec68eb62932193e341f55c90", 104 + "type": "github" 105 + }, 106 + "original": { 107 + "owner": "hercules-ci", 108 + "repo": "flake-parts", 109 + "type": "github" 110 + } 111 + }, 112 + "flake-parts_2": { 113 + "inputs": { 114 + "nixpkgs-lib": "nixpkgs-lib" 115 + }, 116 + "locked": { 117 + "lastModified": 1754091436, 118 + "narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=", 119 + "owner": "hercules-ci", 120 + "repo": "flake-parts", 121 + "rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd", 122 + "type": "github" 123 + }, 124 + "original": { 125 + "owner": "hercules-ci", 126 + "repo": "flake-parts", 127 + "type": "github" 128 + } 129 + }, 130 + "flake-utils": { 131 + "inputs": { 132 + "systems": "systems" 133 + }, 134 + "locked": { 135 + "lastModified": 1731533236, 136 + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 137 + "owner": "numtide", 138 + "repo": "flake-utils", 139 + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 140 + "type": "github" 141 + }, 142 + "original": { 143 + "owner": "numtide", 144 + "repo": "flake-utils", 145 + "type": "github" 146 + } 147 + }, 148 + "flake-utils_2": { 149 + "inputs": { 150 + "systems": [ 151 + "nix-jetbrains-plugins", 152 + "systems" 153 + ] 154 + }, 155 + "locked": { 156 + "lastModified": 1731533236, 157 + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 158 + "owner": "numtide", 159 + "repo": "flake-utils", 160 + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 161 + "type": "github" 162 + }, 163 + "original": { 164 + "owner": "numtide", 165 + "repo": "flake-utils", 166 + "type": "github" 167 + } 168 + }, 169 + "flakey-profile": { 170 + "locked": { 171 + "lastModified": 1712898590, 172 + "narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=", 173 + "owner": "lf-", 174 + "repo": "flakey-profile", 175 + "rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d", 176 + "type": "github" 177 + }, 178 + "original": { 179 + "owner": "lf-", 180 + "repo": "flakey-profile", 181 + "type": "github" 182 + } 183 + }, 184 + "gitignore": { 185 + "inputs": { 186 + "nixpkgs": [ 187 + "lanzaboote", 188 + "pre-commit-hooks-nix", 189 + "nixpkgs" 190 + ] 191 + }, 192 + "locked": { 193 + "lastModified": 1709087332, 194 + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", 195 + "owner": "hercules-ci", 196 + "repo": "gitignore.nix", 197 + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", 198 + "type": "github" 199 + }, 200 + "original": { 201 + "owner": "hercules-ci", 202 + "repo": "gitignore.nix", 203 + "type": "github" 204 + } 205 + }, 206 + "home-manager": { 207 + "inputs": { 208 + "nixpkgs": [ 209 + "nixpkgs" 210 + ] 211 + }, 212 + "locked": { 213 + "lastModified": 1753592768, 214 + "narHash": "sha256-oV695RvbAE4+R9pcsT9shmp6zE/+IZe6evHWX63f2Qg=", 215 + "owner": "nix-community", 216 + "repo": "home-manager", 217 + "rev": "fc3add429f21450359369af74c2375cb34a2d204", 218 + "type": "github" 219 + }, 220 + "original": { 221 + "owner": "nix-community", 222 + "ref": "release-25.05", 223 + "repo": "home-manager", 224 + "type": "github" 225 + } 226 + }, 227 + "lanzaboote": { 228 + "inputs": { 229 + "crane": "crane", 230 + "flake-compat": "flake-compat", 231 + "flake-parts": "flake-parts", 232 + "nixpkgs": [ 233 + "nixpkgs" 234 + ], 235 + "pre-commit-hooks-nix": "pre-commit-hooks-nix", 236 + "rust-overlay": "rust-overlay" 237 + }, 238 + "locked": { 239 + "lastModified": 1737639419, 240 + "narHash": "sha256-AEEDktApTEZ5PZXNDkry2YV2k6t0dTgLPEmAZbnigXU=", 241 + "owner": "nix-community", 242 + "repo": "lanzaboote", 243 + "rev": "a65905a09e2c43ff63be8c0e86a93712361f871e", 244 + "type": "github" 245 + }, 246 + "original": { 247 + "owner": "nix-community", 248 + "ref": "v0.4.2", 249 + "repo": "lanzaboote", 250 + "type": "github" 251 + } 252 + }, 253 + "lix": { 254 + "flake": false, 255 + "locked": { 256 + "lastModified": 1751235704, 257 + "narHash": "sha256-J4ycLoXHPsoBoQtEXFCelL4xlq5pT8U9tNWNKm43+YI=", 258 + "rev": "1d7368585eebaa2c4bdbcb88fe600cfb2239b2c6", 259 + "type": "tarball", 260 + "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/1d7368585eebaa2c4bdbcb88fe600cfb2239b2c6.tar.gz?rev=1d7368585eebaa2c4bdbcb88fe600cfb2239b2c6" 261 + }, 262 + "original": { 263 + "type": "tarball", 264 + "url": "https://git.lix.systems/lix-project/lix/archive/release-2.93.tar.gz" 265 + } 266 + }, 267 + "lix-module": { 268 + "inputs": { 269 + "flake-utils": "flake-utils", 270 + "flakey-profile": "flakey-profile", 271 + "lix": "lix", 272 + "nixpkgs": [ 273 + "nixpkgs" 274 + ] 275 + }, 276 + "locked": { 277 + "lastModified": 1751240025, 278 + "narHash": "sha256-SXUAlxpjPRkArRMHy5+Hdi+PiC+ND9yzzIjiaHmTvQU=", 279 + "rev": "8b1094356f4723d6e89d3f8a95b333ee16d9ab02", 280 + "type": "tarball", 281 + "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/8b1094356f4723d6e89d3f8a95b333ee16d9ab02.tar.gz?rev=8b1094356f4723d6e89d3f8a95b333ee16d9ab02" 282 + }, 283 + "original": { 284 + "type": "tarball", 285 + "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.93.2-1.tar.gz" 286 + } 287 + }, 288 + "niri": { 289 + "inputs": { 290 + "niri-stable": "niri-stable", 291 + "niri-unstable": "niri-unstable", 292 + "nixpkgs": "nixpkgs", 293 + "nixpkgs-stable": "nixpkgs-stable_2", 294 + "xwayland-satellite-stable": "xwayland-satellite-stable", 295 + "xwayland-satellite-unstable": "xwayland-satellite-unstable" 296 + }, 297 + "locked": { 298 + "lastModified": 1754403288, 299 + "narHash": "sha256-FdI2tV45ChVgwly2JRx1lA68gHIdZ38yyzHJeHHYTSc=", 300 + "owner": "sodiboo", 301 + "repo": "niri-flake", 302 + "rev": "a5151e16afa09a01ef7b360d87956730d0534da7", 303 + "type": "github" 304 + }, 305 + "original": { 306 + "owner": "sodiboo", 307 + "repo": "niri-flake", 308 + "type": "github" 309 + } 310 + }, 311 + "niri-stable": { 312 + "flake": false, 313 + "locked": { 314 + "lastModified": 1748151941, 315 + "narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=", 316 + "owner": "YaLTeR", 317 + "repo": "niri", 318 + "rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7", 319 + "type": "github" 320 + }, 321 + "original": { 322 + "owner": "YaLTeR", 323 + "ref": "v25.05.1", 324 + "repo": "niri", 325 + "type": "github" 326 + } 327 + }, 328 + "niri-unstable": { 329 + "flake": false, 330 + "locked": { 331 + "lastModified": 1754400448, 332 + "narHash": "sha256-tP4wYaIKlhMTzNp0S9ouU5Key0+41Z5KkjP9zO6bIQU=", 333 + "owner": "YaLTeR", 334 + "repo": "niri", 335 + "rev": "52c579d5567d0b16ae68177fad05c612baba38af", 336 + "type": "github" 337 + }, 338 + "original": { 339 + "owner": "YaLTeR", 340 + "repo": "niri", 341 + "type": "github" 342 + } 343 + }, 344 + "nix-jetbrains-plugins": { 345 + "inputs": { 346 + "flake-utils": "flake-utils_2", 347 + "nixpkgs": [ 348 + "nixpkgs" 349 + ], 350 + "systems": "systems_2" 351 + }, 352 + "locked": { 353 + "lastModified": 1754124544, 354 + "narHash": "sha256-hHU5smvvnTcSY+J5XeYfxKlUYtorazCt/hDWYbkCOBQ=", 355 + "owner": "theCapypara", 356 + "repo": "nix-jetbrains-plugins", 357 + "rev": "a07bdf445e77f51240c0850b587f69576f5b55aa", 358 + "type": "github" 359 + }, 360 + "original": { 361 + "owner": "theCapypara", 362 + "repo": "nix-jetbrains-plugins", 363 + "type": "github" 364 + } 365 + }, 366 + "nixcord": { 367 + "inputs": { 368 + "flake-compat": "flake-compat_2", 369 + "flake-parts": "flake-parts_2", 370 + "nixpkgs": [ 371 + "nixpkgs-unstable" 372 + ] 373 + }, 374 + "locked": { 375 + "lastModified": 1754382552, 376 + "narHash": "sha256-ZyIpMq8PLACt+kl0pFOnAf38knBZ7bvyIJOLaQAqmvg=", 377 + "owner": "kaylorben", 378 + "repo": "nixcord", 379 + "rev": "256184ad4a373e101232175bbe7707c622a4e24f", 380 + "type": "github" 381 + }, 382 + "original": { 383 + "owner": "kaylorben", 384 + "repo": "nixcord", 385 + "type": "github" 386 + } 387 + }, 388 + "nixos-hardware": { 389 + "locked": { 390 + "lastModified": 1754316476, 391 + "narHash": "sha256-Ry1gd1BQrNVJJfT11cpVP0FY8XFMx4DJV2IDp01CH9w=", 392 + "owner": "NixOS", 393 + "repo": "nixos-hardware", 394 + "rev": "9368056b73efb46eb14fd4667b99e0f81b805f28", 395 + "type": "github" 396 + }, 397 + "original": { 398 + "owner": "NixOS", 399 + "ref": "master", 400 + "repo": "nixos-hardware", 401 + "type": "github" 402 + } 403 + }, 404 + "nixpkgs": { 405 + "locked": { 406 + "lastModified": 1754214453, 407 + "narHash": "sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY=", 408 + "owner": "NixOS", 409 + "repo": "nixpkgs", 410 + "rev": "5b09dc45f24cf32316283e62aec81ffee3c3e376", 411 + "type": "github" 412 + }, 413 + "original": { 414 + "owner": "NixOS", 415 + "ref": "nixos-unstable", 416 + "repo": "nixpkgs", 417 + "type": "github" 418 + } 419 + }, 420 + "nixpkgs-lib": { 421 + "locked": { 422 + "lastModified": 1753579242, 423 + "narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=", 424 + "owner": "nix-community", 425 + "repo": "nixpkgs.lib", 426 + "rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e", 427 + "type": "github" 428 + }, 429 + "original": { 430 + "owner": "nix-community", 431 + "repo": "nixpkgs.lib", 432 + "type": "github" 433 + } 434 + }, 435 + "nixpkgs-stable": { 436 + "locked": { 437 + "lastModified": 1730741070, 438 + "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", 439 + "owner": "NixOS", 440 + "repo": "nixpkgs", 441 + "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3", 442 + "type": "github" 443 + }, 444 + "original": { 445 + "owner": "NixOS", 446 + "ref": "nixos-24.05", 447 + "repo": "nixpkgs", 448 + "type": "github" 449 + } 450 + }, 451 + "nixpkgs-stable_2": { 452 + "locked": { 453 + "lastModified": 1754292888, 454 + "narHash": "sha256-1ziydHSiDuSnaiPzCQh1mRFBsM2d2yRX9I+5OPGEmIE=", 455 + "owner": "NixOS", 456 + "repo": "nixpkgs", 457 + "rev": "ce01daebf8489ba97bd1609d185ea276efdeb121", 458 + "type": "github" 459 + }, 460 + "original": { 461 + "owner": "NixOS", 462 + "ref": "nixos-25.05", 463 + "repo": "nixpkgs", 464 + "type": "github" 465 + } 466 + }, 467 + "nixpkgs-unstable": { 468 + "locked": { 469 + "lastModified": 1754214453, 470 + "narHash": "sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY=", 471 + "owner": "NixOS", 472 + "repo": "nixpkgs", 473 + "rev": "5b09dc45f24cf32316283e62aec81ffee3c3e376", 474 + "type": "github" 475 + }, 476 + "original": { 477 + "owner": "NixOS", 478 + "ref": "nixos-unstable", 479 + "repo": "nixpkgs", 480 + "type": "github" 481 + } 482 + }, 483 + "nixpkgs_2": { 484 + "locked": { 485 + "lastModified": 1754292888, 486 + "narHash": "sha256-1ziydHSiDuSnaiPzCQh1mRFBsM2d2yRX9I+5OPGEmIE=", 487 + "owner": "NixOS", 488 + "repo": "nixpkgs", 489 + "rev": "ce01daebf8489ba97bd1609d185ea276efdeb121", 490 + "type": "github" 491 + }, 492 + "original": { 493 + "owner": "NixOS", 494 + "ref": "nixos-25.05", 495 + "repo": "nixpkgs", 496 + "type": "github" 497 + } 498 + }, 499 + "pre-commit-hooks-nix": { 500 + "inputs": { 501 + "flake-compat": [ 502 + "lanzaboote", 503 + "flake-compat" 504 + ], 505 + "gitignore": "gitignore", 506 + "nixpkgs": [ 507 + "lanzaboote", 508 + "nixpkgs" 509 + ], 510 + "nixpkgs-stable": "nixpkgs-stable" 511 + }, 512 + "locked": { 513 + "lastModified": 1731363552, 514 + "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=", 515 + "owner": "cachix", 516 + "repo": "pre-commit-hooks.nix", 517 + "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0", 518 + "type": "github" 519 + }, 520 + "original": { 521 + "owner": "cachix", 522 + "repo": "pre-commit-hooks.nix", 523 + "type": "github" 524 + } 525 + }, 526 + "root": { 527 + "inputs": { 528 + "disko": "disko", 529 + "firefox-addons": "firefox-addons", 530 + "home-manager": "home-manager", 531 + "lanzaboote": "lanzaboote", 532 + "lix-module": "lix-module", 533 + "niri": "niri", 534 + "nix-jetbrains-plugins": "nix-jetbrains-plugins", 535 + "nixcord": "nixcord", 536 + "nixos-hardware": "nixos-hardware", 537 + "nixpkgs": "nixpkgs_2", 538 + "nixpkgs-unstable": "nixpkgs-unstable" 539 + } 540 + }, 541 + "rust-overlay": { 542 + "inputs": { 543 + "nixpkgs": [ 544 + "lanzaboote", 545 + "nixpkgs" 546 + ] 547 + }, 548 + "locked": { 549 + "lastModified": 1731897198, 550 + "narHash": "sha256-Ou7vLETSKwmE/HRQz4cImXXJBr/k9gp4J4z/PF8LzTE=", 551 + "owner": "oxalica", 552 + "repo": "rust-overlay", 553 + "rev": "0be641045af6d8666c11c2c40e45ffc9667839b5", 554 + "type": "github" 555 + }, 556 + "original": { 557 + "owner": "oxalica", 558 + "repo": "rust-overlay", 559 + "type": "github" 560 + } 561 + }, 562 + "systems": { 563 + "locked": { 564 + "lastModified": 1681028828, 565 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 566 + "owner": "nix-systems", 567 + "repo": "default", 568 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 569 + "type": "github" 570 + }, 571 + "original": { 572 + "owner": "nix-systems", 573 + "repo": "default", 574 + "type": "github" 575 + } 576 + }, 577 + "systems_2": { 578 + "locked": { 579 + "lastModified": 1681028828, 580 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 581 + "owner": "nix-systems", 582 + "repo": "default", 583 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 584 + "type": "github" 585 + }, 586 + "original": { 587 + "owner": "nix-systems", 588 + "repo": "default", 589 + "type": "github" 590 + } 591 + }, 592 + "xwayland-satellite-stable": { 593 + "flake": false, 594 + "locked": { 595 + "lastModified": 1748488455, 596 + "narHash": "sha256-IiLr1alzKFIy5tGGpDlabQbe6LV1c9ABvkH6T5WmyRI=", 597 + "owner": "Supreeeme", 598 + "repo": "xwayland-satellite", 599 + "rev": "3ba30b149f9eb2bbf42cf4758d2158ca8cceef73", 600 + "type": "github" 601 + }, 602 + "original": { 603 + "owner": "Supreeeme", 604 + "ref": "v0.6", 605 + "repo": "xwayland-satellite", 606 + "type": "github" 607 + } 608 + }, 609 + "xwayland-satellite-unstable": { 610 + "flake": false, 611 + "locked": { 612 + "lastModified": 1754367142, 613 + "narHash": "sha256-U0gbn4Qe2NfdaQHvSerzjn3iLhrH+Ah0DMBJfRh1OT8=", 614 + "owner": "Supreeeme", 615 + "repo": "xwayland-satellite", 616 + "rev": "ecbe57e7be12452d6fe477f2154a6d93f60c41e0", 617 + "type": "github" 618 + }, 619 + "original": { 620 + "owner": "Supreeeme", 621 + "repo": "xwayland-satellite", 622 + "type": "github" 623 + } 624 + } 625 + }, 626 + "root": "root", 627 + "version": 7 628 + }
+62
flake.nix
··· 1 + { 2 + description = "Personal-use NixOS configuration"; 3 + 4 + inputs = { 5 + # Basic Nix/OS functionality 6 + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; 7 + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; 8 + 9 + nixos-hardware.url = "github:NixOS/nixos-hardware/master"; 10 + 11 + disko = { 12 + url = "github:nix-community/disko/v1.12.0"; 13 + 14 + inputs.nixpkgs.follows = "nixpkgs"; 15 + }; 16 + 17 + lanzaboote = { 18 + url = "github:nix-community/lanzaboote/v0.4.2"; 19 + 20 + inputs.nixpkgs.follows = "nixpkgs"; 21 + }; 22 + 23 + home-manager = { 24 + url = "github:nix-community/home-manager/release-25.05"; 25 + 26 + inputs.nixpkgs.follows = "nixpkgs"; 27 + }; 28 + 29 + # Package alternatives 30 + lix-module = { 31 + url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.2-1.tar.gz"; 32 + 33 + inputs.nixpkgs.follows = "nixpkgs"; 34 + }; 35 + 36 + # Window/desktop managers 37 + niri = { 38 + url = "github:sodiboo/niri-flake"; 39 + }; 40 + 41 + # Declarative addon systems 42 + nix-jetbrains-plugins = { 43 + url = "github:theCapypara/nix-jetbrains-plugins"; 44 + 45 + inputs.nixpkgs.follows = "nixpkgs"; 46 + }; 47 + 48 + firefox-addons = { 49 + url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; 50 + 51 + inputs.nixpkgs.follows = "nixpkgs"; 52 + }; 53 + 54 + nixcord = { 55 + url = "github:kaylorben/nixcord"; 56 + 57 + inputs.nixpkgs.follows = "nixpkgs-unstable"; 58 + }; 59 + }; 60 + 61 + outputs = args: import ./outputs.nix args; 62 + }
+9
hardware/cpu/amd.nix
··· 1 + { nixos-hardware, ... }: 2 + 3 + { 4 + imports = [ 5 + ./common.nix 6 + 7 + nixos-hardware.nixosModules.common-cpu-amd 8 + ]; 9 + }
+5
hardware/cpu/common.nix
··· 1 + { isLaptop, ... }: 2 + 3 + { 4 + #services.auto-cpufreq.enable = isLaptop; 5 + }
+16
hardware/cpu/intel.nix
··· 1 + { 2 + lib, 3 + nixos-hardware, 4 + isLaptop, 5 + ... 6 + }: 7 + 8 + { 9 + imports = [ 10 + ./common.nix 11 + 12 + nixos-hardware.nixosModules.common-cpu-intel 13 + ]; 14 + 15 + services.thermald.enable = isLaptop; 16 + }
+15
hardware/gpu/amd.nix
··· 1 + { nixos-hardware, pkgs, ... }: 2 + 3 + { 4 + imports = [ 5 + nixos-hardware.nixosModules.common-gpu-amd 6 + ]; 7 + 8 + hardware.graphics.extraPackages = with pkgs; [ 9 + rocmPackages.clr.icd 10 + ]; 11 + 12 + programs.obs-studio.plugins = with pkgs.obs-studio-plugins; [ 13 + obs-vaapi 14 + ]; 15 + }
+34
hardware/gpu/nvidia.nix
··· 1 + { 2 + lib, 3 + nixos-hardware, 4 + pkgs, 5 + isLaptop, 6 + ... 7 + }: 8 + 9 + { 10 + imports = [ 11 + nixos-hardware.nixosModules.common-gpu-nvidia 12 + ]; 13 + 14 + services.xserver.videoDrivers = [ 15 + "modesetting" # TODO: add if isLaptop 16 + "nvidia" 17 + ]; 18 + 19 + hardware.nvidia = { 20 + open = true; 21 + 22 + modesetting.enable = isLaptop; 23 + 24 + prime = { 25 + offload.enable = isLaptop; 26 + }; 27 + }; 28 + 29 + programs.obs-studio.package = ( 30 + pkgs.obs-studio.override { 31 + cudaSupport = true; 32 + } 33 + ); 34 + }
+1
hardware/laptop.nix
··· 1 + { }
+25
homes/encode42/common/bat.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + programs.bat = { 5 + enable = true; 6 + 7 + config = { 8 + paging = "never"; 9 + 10 + theme = "base16"; 11 + 12 + style = [ 13 + "numbers" 14 + ]; 15 + }; 16 + }; 17 + 18 + home.shellAliases = { 19 + cat = "bat"; 20 + }; 21 + 22 + home.packages = with pkgs; [ 23 + bat 24 + ]; 25 + }
+9
homes/encode42/common/direnv.nix
··· 1 + { 2 + programs.direnv = { 3 + enable = true; 4 + 5 + nix-direnv.enable = true; 6 + 7 + silent = true; 8 + }; 9 + }
+12
homes/encode42/common/eza.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + home.shellAliases = { 5 + ls = "eza -la"; 6 + tree = "eza -T"; 7 + }; 8 + 9 + home.packages = with pkgs; [ 10 + eza 11 + ]; 12 + }
+208
homes/encode42/common/fastfetch.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + programs.fastfetch = { 5 + enable = true; 6 + 7 + settings = { 8 + logo = { 9 + type = "none"; 10 + }; 11 + 12 + display = { 13 + separator = " "; 14 + color = "#c6a0f6"; 15 + }; 16 + 17 + modules = [ 18 + { 19 + type = "custom"; 20 + format = "─────────────────────────────────"; 21 + } 22 + { 23 + type = "title"; 24 + keyWidth = 10; 25 + } 26 + { 27 + type = "custom"; 28 + format = "─────────────────────────────────"; 29 + } 30 + "break" 31 + { 32 + type = "custom"; 33 + key = "System"; 34 + keyColor = "#ed8796"; 35 + format = ""; 36 + } 37 + { 38 + type = "os"; 39 + key = "├ 💾"; 40 + keyColor = "#ed8796"; 41 + } 42 + { 43 + type = "kernel"; 44 + key = "├ 🐧"; 45 + keyColor = "#ed8796"; 46 + } 47 + { 48 + type = "packages"; 49 + key = "├ 📦"; 50 + keyColor = "#ed8796"; 51 + } 52 + { 53 + type = "initsystem"; 54 + key = "├ ⏱️"; 55 + keyColor = "#ed8796"; 56 + } 57 + { 58 + type = "shell"; 59 + key = "└ 🐚"; 60 + keyColor = "#ed8796"; 61 + } 62 + "break" 63 + { 64 + type = "custom"; 65 + key = "Client"; 66 + keyColor = "#f5a97f"; 67 + format = ""; 68 + } 69 + { 70 + type = "lm"; 71 + key = "├ 🚪"; 72 + keyColor = "#f5a97f"; 73 + } 74 + { 75 + type = "wm"; 76 + key = "├ 🦟"; 77 + keyColor = "#f5a97f"; 78 + } 79 + { 80 + type = "de"; 81 + key = "├ 🖥"; 82 + keyColor = "#f5a97f"; 83 + } 84 + { 85 + type = "terminal"; 86 + key = "├ 🮮"; 87 + keyColor = "#f5a97f"; 88 + } 89 + { 90 + type = "theme"; 91 + key = "├ 🎨"; 92 + keyColor = "#f5a97f"; 93 + } 94 + { 95 + type = "icons"; 96 + key = "├ 📁"; 97 + keyColor = "#f5a97f"; 98 + } 99 + { 100 + type = "cursor"; 101 + key = "├ 🖱"; 102 + keyColor = "#f5a97f"; 103 + } 104 + { 105 + type = "font"; 106 + key = "└ 🖤"; 107 + keyColor = "#f5a97f"; 108 + } 109 + "break" 110 + { 111 + type = "custom"; 112 + key = "Hardware"; 113 + keyColor = "#a6da95"; 114 + format = ""; 115 + } 116 + { 117 + type = "host"; 118 + key = "├ 🧩"; 119 + keyColor = "#a6da95"; 120 + } 121 + { 122 + type = "cpu"; 123 + key = "├ 🧠"; 124 + keyColor = "#a6da95"; 125 + } 126 + { 127 + type = "gpu"; 128 + key = "├ ⚙️"; 129 + keyColor = "#a6da95"; 130 + } 131 + { 132 + type = "memory"; 133 + key = "├ 📚"; 134 + keyColor = "#a6da95"; 135 + } 136 + { 137 + type = "custom"; 138 + key = "├ 📁"; 139 + keyColor = "#a6da95"; 140 + } 141 + { 142 + type = "disk"; 143 + key = "│ └"; 144 + keyColor = "#a6da95"; 145 + } 146 + { 147 + type = "chassis"; 148 + key = "└ 📦"; 149 + keyColor = "#a6da95"; 150 + } 151 + "break" 152 + { 153 + type = "custom"; 154 + key = "Peripherals"; 155 + keyColor = "#8aadf4"; 156 + format = ""; 157 + } 158 + { 159 + type = "custom"; 160 + key = "├ 🖥"; 161 + keyColor = "#8aadf4"; 162 + format = ""; 163 + } 164 + { 165 + type = "display"; 166 + key = "│ └"; 167 + keyColor = "#8aadf4"; 168 + } 169 + { 170 + type = "custom"; 171 + key = "├ 🖱"; 172 + keyColor = "#8aadf4"; 173 + format = ""; 174 + } 175 + { 176 + type = "mouse"; 177 + key = "│ └"; 178 + keyColor = "#8aadf4"; 179 + } 180 + { 181 + type = "custom"; 182 + key = "├ 🎮"; 183 + keyColor = "#8aadf4"; 184 + format = ""; 185 + } 186 + { 187 + type = "gamepad"; 188 + key = "│ └"; 189 + keyColor = "#8aadf4"; 190 + } 191 + { 192 + type = "sound"; 193 + key = "├ 🔈"; 194 + keyColor = "#8aadf4"; 195 + } 196 + { 197 + type = "camera"; 198 + key = "└ 📷"; 199 + keyColor = "#8aadf4"; 200 + } 201 + ]; 202 + }; 203 + }; 204 + 205 + home.packages = with pkgs; [ 206 + fastfetch 207 + ]; 208 + }
+18
homes/encode42/common/fish.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + programs.fish = { 5 + enable = true; 6 + 7 + plugins = with pkgs.fishPlugins; [ 8 + { 9 + name = "bobthefish"; 10 + src = bobthefish.src; 11 + } 12 + ]; 13 + 14 + interactiveShellInit = '' 15 + set fish_greeting # Disable greeting 16 + ''; 17 + }; 18 + }
+12
homes/encode42/common/git.nix
··· 1 + { 2 + programs.git = { 3 + enable = true; 4 + 5 + userName = "encode42"; 6 + userEmail = "me@encode42.dev"; 7 + 8 + extraConfig = { 9 + init.defaultBranch = "main"; 10 + }; 11 + }; 12 + }
+19
homes/encode42/common/github.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + imports = [ 5 + ./git.nix 6 + ]; 7 + 8 + programs.gh = { 9 + enable = true; 10 + 11 + gitCredentialHelper = { 12 + enable = true; 13 + }; 14 + }; 15 + 16 + home.packages = with pkgs; [ 17 + gh 18 + ]; 19 + }
+12
homes/encode42/common/imagemagik.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + home.packages = with pkgs; [ 5 + (imagemagick.override { 6 + libpngSupport = true; 7 + libjpegSupport = true; 8 + libwebpSupport = true; 9 + librsvgSupport = true; 10 + }) 11 + ]; 12 + }
+11
homes/encode42/common/xh.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + home.shellAliases = { 5 + curl = "xh"; 6 + }; 7 + 8 + home.packages = with pkgs; [ 9 + xh 10 + ]; 11 + }
+10
homes/encode42/desktop/cursor.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + home.pointerCursor = { 5 + gtk.enable = true; 6 + 7 + name = "macchiatoMauve"; 8 + package = pkgs.catppuccin-cursors; 9 + }; 10 + }
+64
homes/encode42/desktop/discord.nix
··· 1 + { 2 + programs.nixcord = { 3 + enable = true; 4 + 5 + discord.enable = false; 6 + 7 + vesktop = { 8 + enable = true; 9 + 10 + settings = { 11 + customTitleBar = true; 12 + splashTheming = true; 13 + 14 + minimizeToTray = false; 15 + 16 + checkUpdates = false; 17 + }; 18 + }; 19 + 20 + config = { 21 + useQuickCss = false; 22 + 23 + notifyAboutUpdates = false; 24 + autoUpdate = false; 25 + 26 + themeLinks = [ 27 + "@light https://catppuccin.github.io/discord/dist/catppuccin-latte-mauve.theme.css" 28 + "@dark https://catppuccin.github.io/discord/dist/catppuccin-macchiato-mauve.theme.css" 29 + ]; 30 + 31 + plugins = { 32 + chatInputButtonAPI.enable = false; 33 + commandsAPI.enable = false; 34 + memberListDecoratorsAPI.enable = false; 35 + messageDecorationsAPI.enable = false; 36 + messageEventsAPI.enable = false; 37 + messagePopoverAPI.enable = false; 38 + messageUpdaterAPI.enable = false; 39 + serverListAPI.enable = false; 40 + 41 + webScreenShareFixes.enable = true; 42 + youtubeAdblock.enable = true; 43 + 44 + settings = { 45 + settingsLocation = "aboveActivity"; 46 + }; 47 + 48 + fullUserInChatbox.enable = true; 49 + roleColorEverywhere.enable = true; 50 + typingTweaks.enable = true; 51 + alwaysExpandRoles.enable = true; 52 + betterGifAltText.enable = true; 53 + betterRoleContext.enable = true; 54 + 55 + viewIcons = { 56 + enable = true; 57 + 58 + format = "png"; 59 + imgSize = 4096; 60 + }; 61 + }; 62 + }; 63 + }; 64 + }
+140
homes/encode42/desktop/firefox.nix
··· 1 + { firefox-addons, pkgs, ... }: 2 + 3 + { 4 + programs.firefox = { 5 + enable = true; 6 + 7 + policies = { 8 + BlockAboutConfig = true; 9 + }; 10 + 11 + profiles.default = { 12 + settings = { 13 + "extensions.autoDisableScopes" = 0; 14 + 15 + "sidebar.verticalTabs" = true; 16 + "sidebar.main.tools" = "history"; 17 + "browser.toolbars.bookmarks.visibility" = "never"; 18 + 19 + "browser.newtabpage.enabled" = false; 20 + "browser.startup.page" = 0; 21 + 22 + "browser.download.autohideButton" = false; 23 + "browser.uiCustomization.horizontalTabstrip" = "[\"tabbrowser-tabs\",\"new-tab-button\"]"; 24 + "browser.uiCustomization.navBarWhenVerticalTabs" = 25 + "[\"sidebar-button\",\"back-button\",\"forward-button\",\"stop-reload-button\",\"vertical-spacer\",\"urlbar-container\",\"_61a05c39-ad45-4086-946f-32adb0a40a9d_-browser-action\",\"unified-extensions-button\",\"downloads-button\"]"; 26 + 27 + "browser.urlbar.suggest.history" = false; 28 + "browser.urlbar.suggest.recentsearches" = false; 29 + 30 + "privacy.history.custom" = true; 31 + "browser.formfill.enable" = false; 32 + "extensions.formautofill.addresses.enabled" = false; 33 + "extensions.formautofill.creditCards.enabled" = false; 34 + 35 + "dom.security.https_only_mode" = true; 36 + 37 + "privacy.fingerprintingProtection" = true; 38 + "privacy.trackingprotection.enabled" = true; 39 + "browser.safebrowsing.malware.enabled" = false; 40 + "browser.safebrowsing.phishing.enabled" = false; 41 + 42 + "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; 43 + "datareporting.healthreport.uploadEnabled" = false; 44 + "datareporting.usage.uploadEnabled" = false; 45 + }; 46 + 47 + extensions = { 48 + packages = with firefox-addons.packages.${pkgs.system}; [ 49 + fastforwardteam 50 + indie-wiki-buddy 51 + ]; 52 + }; 53 + 54 + search = { 55 + force = true; 56 + 57 + default = "searx"; 58 + 59 + engines = { 60 + searx = { 61 + name = "encrypted group search"; 62 + definedAliases = [ "@searx" ]; 63 + 64 + urls = [ 65 + { 66 + template = "https://search.encrypted.group/search?q={searchTerms}"; 67 + } 68 + ]; 69 + }; 70 + 71 + nix-packages = { 72 + name = "Nix Packages"; 73 + iconMapObj."16" = "https://wiki.nixos.org/favicon.ico"; 74 + definedAliases = [ "@nixpkgs" ]; 75 + 76 + urls = [ 77 + { 78 + template = "https://search.nixos.org/packages"; 79 + params = [ 80 + { 81 + name = "type"; 82 + value = "packages"; 83 + } 84 + { 85 + name = "query"; 86 + value = "{searchTerms}"; 87 + } 88 + ]; 89 + } 90 + ]; 91 + }; 92 + 93 + nixos-options = { 94 + name = "NixOS Options"; 95 + iconMapObj."16" = "https://wiki.nixos.org/favicon.ico"; 96 + definedAliases = [ "@nixos" ]; 97 + 98 + urls = [ 99 + { 100 + template = "https://search.nixos.org/options"; 101 + params = [ 102 + { 103 + name = "type"; 104 + value = "options"; 105 + } 106 + { 107 + name = "query"; 108 + value = "{searchTerms}"; 109 + } 110 + ]; 111 + } 112 + ]; 113 + }; 114 + 115 + nixos-wiki = { 116 + name = "NixOS Wiki"; 117 + iconMapObj."16" = "https://wiki.nixos.org/favicon.ico"; 118 + definedAliases = [ "@nixos-wiki" ]; 119 + 120 + urls = [ 121 + { 122 + template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; 123 + } 124 + ]; 125 + }; 126 + 127 + bing.metaData.hidden = true; 128 + }; 129 + 130 + order = [ 131 + "ddg" 132 + "google" 133 + "nix-packages" 134 + "nixos-options" 135 + "nixos-wiki" 136 + ]; 137 + }; 138 + }; 139 + }; 140 + }
+10
homes/encode42/desktop/fonts.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + home.packages = with pkgs; [ 5 + inter 6 + jetbrains-mono 7 + 8 + twemoji-color-font 9 + ]; 10 + }
+1
homes/encode42/desktop/jetbrains/datagrip.nix
··· 1 +
+30
homes/encode42/desktop/jetbrains/intellij.nix
··· 1 + { 2 + flakeRoot, 3 + nix-jetbrains-plugins, 4 + pkgs, 5 + ... 6 + }: 7 + 8 + let 9 + customJetbrainsPackage = import (flakeRoot + /lib/customJetbrainsPackage.nix) { 10 + inherit nix-jetbrains-plugins pkgs; 11 + }; 12 + in 13 + { 14 + home.packages = [ 15 + (customJetbrainsPackage { 16 + idePackage = pkgs.jetbrains.idea-ultimate; 17 + 18 + pluginIds = [ 19 + "systems.fehn.intellijdirenv" 20 + "com.liubs.jaredit" 21 + ]; 22 + 23 + patchedPlugins = [ 24 + "catppuccin-theme" 25 + "-env-files" 26 + "minecraft-development" 27 + ]; 28 + }) 29 + ]; 30 + }
+28
homes/encode42/desktop/jetbrains/rustrover.nix
··· 1 + { 2 + flakeRoot, 3 + nix-jetbrains-plugins, 4 + pkgs, 5 + ... 6 + }: 7 + 8 + let 9 + customJetbrainsPackage = import (flakeRoot + /lib/customJetbrainsPackage.nix) { 10 + inherit nix-jetbrains-plugins pkgs; 11 + }; 12 + in 13 + { 14 + home.packages = [ 15 + (customJetbrainsPackage { 16 + idePackage = pkgs.jetbrains.rust-rover; 17 + 18 + pluginIds = [ 19 + "systems.fehn.intellijdirenv" 20 + ]; 21 + 22 + patchedPlugins = [ 23 + "catppuccin-theme" 24 + "-env-files" 25 + ]; 26 + }) 27 + ]; 28 + }
+31
homes/encode42/desktop/jetbrains/webstorm.nix
··· 1 + { 2 + flakeRoot, 3 + nix-jetbrains-plugins, 4 + pkgs, 5 + ... 6 + }: 7 + 8 + let 9 + customJetbrainsPackage = import (flakeRoot + /lib/customJetbrainsPackage.nix) { 10 + inherit nix-jetbrains-plugins pkgs; 11 + }; 12 + in 13 + { 14 + home.packages = [ 15 + (customJetbrainsPackage { 16 + idePackage = pkgs.jetbrains.webstorm; 17 + 18 + pluginIds = [ 19 + "systems.fehn.intellijdirenv" 20 + "com.github.biomejs.intellijbiome" 21 + "intellij.javascript.bun" 22 + "dev.blachut.svelte.lang" 23 + ]; 24 + 25 + patchedPlugins = [ 26 + "catppuccin-theme" 27 + "-env-files" 28 + ]; 29 + }) 30 + ]; 31 + }
+17
homes/encode42/desktop/prismlauncher.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + home.packages = [ 5 + (pkgs.prismlauncher.override { 6 + additionalPrograms = with pkgs; [ 7 + ffmpeg 8 + ]; 9 + 10 + jdks = with pkgs; [ 11 + temurin-jre-bin-8 12 + temurin-jre-bin-17 13 + temurin-bin 14 + ]; 15 + }) 16 + ]; 17 + }
+35
hosts/decryption/default.nix
··· 1 + { 2 + flakeRoot, 3 + nixos-hardware, 4 + pkgs, 5 + ... 6 + }: 7 + 8 + { 9 + imports = [ 10 + ./hardware-configuration.nix 11 + ./disk.nix 12 + (flakeRoot + /hardware/laptop.nix) # TODO: Automatically add this in mkSystem 13 + (flakeRoot + /hardware/cpu/amd.nix) 14 + (flakeRoot + /hardware/gpu/nvidia.nix) 15 + 16 + ./users 17 + 18 + (flakeRoot + /modules/common) 19 + 20 + (flakeRoot + /modules/common/boot/systemd-boot.nix) 21 + (flakeRoot + /modules/common/system/audio.nix) 22 + (flakeRoot + /modules/desktop/environments/gnome.nix) 23 + ]; 24 + 25 + boot.kernelPackages = pkgs.linuxKernel.packages.linux_hardened; 26 + 27 + hardware.nvidia.prime = { 28 + amdgpuBusId = "PCI:4:0:0"; 29 + nvidiaBusId = "PCI:1:0:0"; 30 + }; 31 + 32 + networking.hostName = "decryption"; 33 + 34 + system.stateVersion = "25.05"; 35 + }
+34
hosts/decryption/disk.nix
··· 1 + { 2 + disko.devices = { 3 + disk = { 4 + main = { 5 + type = "disk"; 6 + device = "/dev/disk/by-id/nvme-Samsung_SSD_980_1TB_S64ANS0T409404F"; 7 + content = { 8 + type = "gpt"; 9 + partitions = { 10 + ESP = { 11 + end = "500M"; 12 + type = "EF00"; 13 + content = { 14 + type = "filesystem"; 15 + format = "vfat"; 16 + mountpoint = "/boot"; 17 + }; 18 + }; 19 + root = { 20 + name = "root"; 21 + end = "-0"; 22 + 23 + content = { 24 + type = "filesystem"; 25 + format = "xfs"; 26 + mountpoint = "/"; 27 + }; 28 + }; 29 + }; 30 + }; 31 + }; 32 + }; 33 + }; 34 + }
+25
hosts/decryption/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 + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 17 + # (the default) this is the recommended approach. When using systemd-networkd it's 18 + # still possible to use this option, but it's recommended to use it in conjunction 19 + # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. 20 + networking.useDHCP = lib.mkDefault true; 21 + # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; 22 + 23 + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 24 + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 25 + }
+35
hosts/decryption/homes/encode42.nix
··· 1 + { 2 + flakeRoot, 3 + pkgs, 4 + pkgs-unstable, 5 + ... 6 + }: 7 + 8 + { 9 + imports = [ 10 + (flakeRoot + /homes/encode42/common/fastfetch.nix) 11 + (flakeRoot + /homes/encode42/common/fish.nix) 12 + (flakeRoot + /homes/encode42/common/github.nix) 13 + (flakeRoot + /homes/encode42/common/direnv.nix) 14 + 15 + (flakeRoot + /homes/encode42/common/bat.nix) 16 + (flakeRoot + /homes/encode42/common/eza.nix) 17 + (flakeRoot + /homes/encode42/common/xh.nix) 18 + 19 + (flakeRoot + /homes/encode42/desktop/cursor.nix) 20 + (flakeRoot + /homes/encode42/desktop/fonts.nix) 21 + 22 + (flakeRoot + /homes/encode42/desktop/jetbrains/intellij.nix) 23 + 24 + (flakeRoot + /homes/encode42/desktop/discord.nix) 25 + (flakeRoot + /homes/encode42/desktop/firefox.nix) 26 + 27 + (flakeRoot + /homes/encode42/desktop/prismlauncher.nix) 28 + ]; 29 + 30 + home.packages = with pkgs; [ 31 + r2modman 32 + 33 + slack 34 + ]; 35 + }
+9
hosts/decryption/users/default.nix
··· 1 + { flakeRoot, ... }: 2 + 3 + { 4 + imports = [ 5 + (flakeRoot + /modules/desktop/home-manager.nix) 6 + 7 + ./encode42.nix 8 + ]; 9 + }
+40
hosts/decryption/users/encode42.nix
··· 1 + { 2 + lib, 3 + flakeRoot, 4 + pkgs, 5 + ... 6 + }: 7 + 8 + { 9 + imports = [ 10 + (flakeRoot + /packages/common/fish.nix) 11 + (flakeRoot + /packages/common/git.nix) 12 + (flakeRoot + /packages/common/yubikey.nix) 13 + 14 + (flakeRoot + /packages/desktop/gnome/goldwarden.nix) 15 + (flakeRoot + /packages/desktop/gnome/localsend.nix) 16 + 17 + (flakeRoot + /packages/desktop/steam.nix) 18 + ]; 19 + 20 + users.users.encode42 = { 21 + isNormalUser = true; 22 + 23 + shell = pkgs.fish; 24 + }; 25 + 26 + home-manager.users.encode42 = { 27 + imports = [ 28 + ../homes/encode42.nix 29 + ]; 30 + 31 + programs.home-manager.enable = true; 32 + 33 + home.stateVersion = "24.05"; 34 + }; 35 + 36 + users.users.encode42.extraGroups = [ 37 + "wheel" 38 + "networkmanager" 39 + ]; 40 + }
+31
hosts/encryption/default.nix
··· 1 + { 2 + flakeRoot, 3 + nixos-hardware, 4 + pkgs, 5 + ... 6 + }: 7 + 8 + { 9 + imports = [ 10 + ./hardware-configuration.nix 11 + nixos-hardware.nixosModules.msi-b350-tomahawk 12 + (flakeRoot + /hardware/cpu/amd.nix) 13 + (flakeRoot + /hardware/gpu/amd.nix) 14 + 15 + ./users 16 + 17 + (flakeRoot + /modules/common) 18 + 19 + (flakeRoot + /modules/common/boot/systemd-boot.nix) 20 + (flakeRoot + /modules/common/system/audio.nix) 21 + (flakeRoot + /modules/desktop/environments/gnome.nix) 22 + 23 + (flakeRoot + /modules/common/virtualization.nix) 24 + ]; 25 + 26 + boot.kernelPackages = pkgs.linuxKernel.packages.linux_zen; 27 + 28 + networking.hostName = "encryption"; 29 + 30 + system.stateVersion = "24.05"; 31 + }
+55
hosts/encryption/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 + 5 + { 6 + config, 7 + lib, 8 + pkgs, 9 + modulesPath, 10 + ... 11 + }: 12 + { 13 + imports = [ 14 + (modulesPath + "/installer/scan/not-detected.nix") 15 + ]; 16 + 17 + boot.initrd.availableKernelModules = [ 18 + "nvme" 19 + "xhci_pci" 20 + "ahci" 21 + "usbhid" 22 + "usb_storage" 23 + "sd_mod" 24 + ]; 25 + boot.initrd.kernelModules = [ ]; 26 + boot.kernelModules = [ "kvm-amd" ]; 27 + boot.extraModulePackages = [ ]; 28 + 29 + fileSystems."/" = { 30 + device = "/dev/disk/by-uuid/8221b1bf-9efb-4891-b0c7-23f0d680d4e7"; 31 + fsType = "ext4"; 32 + }; 33 + 34 + fileSystems."/boot" = { 35 + device = "/dev/disk/by-uuid/D32C-35B1"; 36 + fsType = "vfat"; 37 + options = [ 38 + "fmask=0077" 39 + "dmask=0077" 40 + ]; 41 + }; 42 + 43 + swapDevices = [ ]; 44 + 45 + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 46 + # (the default) this is the recommended approach. When using systemd-networkd it's 47 + # still possible to use this option, but it's recommended to use it in conjunction 48 + # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. 49 + networking.useDHCP = lib.mkDefault true; 50 + # networking.interfaces.enp34s0.useDHCP = lib.mkDefault true; 51 + # networking.interfaces.wlo1.useDHCP = lib.mkDefault true; 52 + 53 + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 54 + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 55 + }
+47
hosts/encryption/homes/encode42.nix
··· 1 + { 2 + flakeRoot, 3 + pkgs, 4 + pkgs-unstable, 5 + ... 6 + }: 7 + 8 + { 9 + imports = [ 10 + (flakeRoot + /homes/encode42/common/fastfetch.nix) 11 + (flakeRoot + /homes/encode42/common/fish.nix) 12 + (flakeRoot + /homes/encode42/common/github.nix) 13 + (flakeRoot + /homes/encode42/common/direnv.nix) 14 + 15 + (flakeRoot + /homes/encode42/common/bat.nix) 16 + (flakeRoot + /homes/encode42/common/eza.nix) 17 + (flakeRoot + /homes/encode42/common/xh.nix) 18 + 19 + (flakeRoot + /homes/encode42/common/imagemagik.nix) 20 + 21 + (flakeRoot + /homes/encode42/desktop/cursor.nix) 22 + (flakeRoot + /homes/encode42/desktop/fonts.nix) 23 + 24 + (flakeRoot + /homes/encode42/desktop/jetbrains/intellij.nix) 25 + (flakeRoot + /homes/encode42/desktop/jetbrains/rustrover.nix) 26 + (flakeRoot + /homes/encode42/desktop/jetbrains/webstorm.nix) 27 + 28 + (flakeRoot + /homes/encode42/desktop/discord.nix) 29 + (flakeRoot + /homes/encode42/desktop/firefox.nix) 30 + 31 + (flakeRoot + /homes/encode42/desktop/prismlauncher.nix) 32 + ]; 33 + 34 + home.packages = with pkgs; [ 35 + audacity 36 + puddletag 37 + 38 + blockbench 39 + 40 + clonehero 41 + openrct2 42 + r2modman 43 + pkgs-unstable.olympus 44 + 45 + slack 46 + ]; 47 + }
+9
hosts/encryption/users/default.nix
··· 1 + { flakeRoot, ... }: 2 + 3 + { 4 + imports = [ 5 + (flakeRoot + /modules/desktop/home-manager.nix) 6 + 7 + ./encode42.nix 8 + ]; 9 + }
+42
hosts/encryption/users/encode42.nix
··· 1 + { 2 + lib, 3 + flakeRoot, 4 + pkgs, 5 + ... 6 + }: 7 + 8 + { 9 + imports = [ 10 + (flakeRoot + /packages/common/fish.nix) 11 + (flakeRoot + /packages/common/git.nix) 12 + (flakeRoot + /packages/common/yubikey.nix) 13 + 14 + (flakeRoot + /packages/desktop/gnome/goldwarden.nix) 15 + (flakeRoot + /packages/desktop/gnome/localsend.nix) 16 + 17 + (flakeRoot + /packages/desktop/obs.nix) 18 + (flakeRoot + /packages/desktop/steam.nix) 19 + ]; 20 + 21 + users.users.encode42 = { 22 + isNormalUser = true; 23 + 24 + shell = pkgs.fish; 25 + }; 26 + 27 + home-manager.users.encode42 = { 28 + imports = [ 29 + ../homes/encode42.nix 30 + ]; 31 + 32 + programs.home-manager.enable = true; 33 + 34 + home.stateVersion = "24.05"; 35 + }; 36 + 37 + users.users.encode42.extraGroups = [ 38 + "wheel" 39 + "networkmanager" 40 + "libvirtd" 41 + ]; 42 + }
+16
lib/customJetbrainsPackage.nix
··· 1 + { nix-jetbrains-plugins, pkgs }: 2 + 3 + { 4 + idePackage, 5 + pluginIds ? [ ], 6 + patchedPlugins ? [ ], 7 + }: 8 + 9 + let 10 + marketplacePluginBase = 11 + nix-jetbrains-plugins.plugins.${pkgs.system}.${idePackage.pname}.${idePackage.version}; 12 + marketplacePluginList = builtins.map (pluginId: marketplacePluginBase.${pluginId}) pluginIds; 13 + 14 + pluginList = patchedPlugins ++ marketplacePluginList; 15 + in 16 + pkgs.jetbrains.plugins.addPlugins idePackage pluginList
+46
lib/mkSystem.nix
··· 1 + { 2 + inputs, 3 + flakeRootPath, 4 + }: 5 + 6 + { 7 + name, 8 + system, 9 + isLaptop ? false 10 + }: 11 + 12 + inputs.nixpkgs.lib.nixosSystem { 13 + inherit system; 14 + 15 + modules = [ 16 + inputs.lix-module.nixosModules.default 17 + inputs.disko.nixosModules.disko 18 + 19 + ../hosts/${name} 20 + ]; 21 + 22 + specialArgs = { 23 + inherit isLaptop; 24 + 25 + flakeRoot = flakeRootPath; 26 + 27 + pkgs = import inputs.nixpkgs { 28 + inherit system; 29 + 30 + config.allowUnfree = true; 31 + }; 32 + 33 + pkgs-unstable = import inputs.nixpkgs-unstable { 34 + inherit system; 35 + 36 + config.allowUnfree = true; 37 + }; 38 + 39 + lanzaboote = inputs.lanzaboote; 40 + nixos-hardware = inputs.nixos-hardware; 41 + home-manager = inputs.home-manager; 42 + nix-jetbrains-plugins = inputs.nix-jetbrains-plugins; 43 + firefox-addons = inputs.firefox-addons; 44 + nixcord = inputs.nixcord; 45 + }; 46 + }
+202
license.md
··· 1 + 2 + Apache License 3 + Version 2.0, January 2004 4 + http://www.apache.org/licenses/ 5 + 6 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 + 8 + 1. Definitions. 9 + 10 + "License" shall mean the terms and conditions for use, reproduction, 11 + and distribution as defined by Sections 1 through 9 of this document. 12 + 13 + "Licensor" shall mean the copyright owner or entity authorized by 14 + the copyright owner that is granting the License. 15 + 16 + "Legal Entity" shall mean the union of the acting entity and all 17 + other entities that control, are controlled by, or are under common 18 + control with that entity. For the purposes of this definition, 19 + "control" means (i) the power, direct or indirect, to cause the 20 + direction or management of such entity, whether by contract or 21 + otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 + outstanding shares, or (iii) beneficial ownership of such entity. 23 + 24 + "You" (or "Your") shall mean an individual or Legal Entity 25 + exercising permissions granted by this License. 26 + 27 + "Source" form shall mean the preferred form for making modifications, 28 + including but not limited to software source code, documentation 29 + source, and configuration files. 30 + 31 + "Object" form shall mean any form resulting from mechanical 32 + transformation or translation of a Source form, including but 33 + not limited to compiled object code, generated documentation, 34 + and conversions to other media types. 35 + 36 + "Work" shall mean the work of authorship, whether in Source or 37 + Object form, made available under the License, as indicated by a 38 + copyright notice that is included in or attached to the work 39 + (an example is provided in the Appendix below). 40 + 41 + "Derivative Works" shall mean any work, whether in Source or Object 42 + form, that is based on (or derived from) the Work and for which the 43 + editorial revisions, annotations, elaborations, or other modifications 44 + represent, as a whole, an original work of authorship. For the purposes 45 + of this License, Derivative Works shall not include works that remain 46 + separable from, or merely link (or bind by name) to the interfaces of, 47 + the Work and Derivative Works thereof. 48 + 49 + "Contribution" shall mean any work of authorship, including 50 + the original version of the Work and any modifications or additions 51 + to that Work or Derivative Works thereof, that is intentionally 52 + submitted to Licensor for inclusion in the Work by the copyright owner 53 + or by an individual or Legal Entity authorized to submit on behalf of 54 + the copyright owner. For the purposes of this definition, "submitted" 55 + means any form of electronic, verbal, or written communication sent 56 + to the Licensor or its representatives, including but not limited to 57 + communication on electronic mailing lists, source code control systems, 58 + and issue tracking systems that are managed by, or on behalf of, the 59 + Licensor for the purpose of discussing and improving the Work, but 60 + excluding communication that is conspicuously marked or otherwise 61 + designated in writing by the copyright owner as "Not a Contribution." 62 + 63 + "Contributor" shall mean Licensor and any individual or Legal Entity 64 + on behalf of whom a Contribution has been received by Licensor and 65 + subsequently incorporated within the Work. 66 + 67 + 2. Grant of Copyright License. Subject to the terms and conditions of 68 + this License, each Contributor hereby grants to You a perpetual, 69 + worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 + copyright license to reproduce, prepare Derivative Works of, 71 + publicly display, publicly perform, sublicense, and distribute the 72 + Work and such Derivative Works in Source or Object form. 73 + 74 + 3. Grant of Patent License. Subject to the terms and conditions of 75 + this License, each Contributor hereby grants to You a perpetual, 76 + worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 + (except as stated in this section) patent license to make, have made, 78 + use, offer to sell, sell, import, and otherwise transfer the Work, 79 + where such license applies only to those patent claims licensable 80 + by such Contributor that are necessarily infringed by their 81 + Contribution(s) alone or by combination of their Contribution(s) 82 + with the Work to which such Contribution(s) was submitted. If You 83 + institute patent litigation against any entity (including a 84 + cross-claim or counterclaim in a lawsuit) alleging that the Work 85 + or a Contribution incorporated within the Work constitutes direct 86 + or contributory patent infringement, then any patent licenses 87 + granted to You under this License for that Work shall terminate 88 + as of the date such litigation is filed. 89 + 90 + 4. Redistribution. You may reproduce and distribute copies of the 91 + Work or Derivative Works thereof in any medium, with or without 92 + modifications, and in Source or Object form, provided that You 93 + meet the following conditions: 94 + 95 + (a) You must give any other recipients of the Work or 96 + Derivative Works a copy of this License; and 97 + 98 + (b) You must cause any modified files to carry prominent notices 99 + stating that You changed the files; and 100 + 101 + (c) You must retain, in the Source form of any Derivative Works 102 + that You distribute, all copyright, patent, trademark, and 103 + attribution notices from the Source form of the Work, 104 + excluding those notices that do not pertain to any part of 105 + the Derivative Works; and 106 + 107 + (d) If the Work includes a "NOTICE" text file as part of its 108 + distribution, then any Derivative Works that You distribute must 109 + include a readable copy of the attribution notices contained 110 + within such NOTICE file, excluding those notices that do not 111 + pertain to any part of the Derivative Works, in at least one 112 + of the following places: within a NOTICE text file distributed 113 + as part of the Derivative Works; within the Source form or 114 + documentation, if provided along with the Derivative Works; or, 115 + within a display generated by the Derivative Works, if and 116 + wherever such third-party notices normally appear. The contents 117 + of the NOTICE file are for informational purposes only and 118 + do not modify the License. You may add Your own attribution 119 + notices within Derivative Works that You distribute, alongside 120 + or as an addendum to the NOTICE text from the Work, provided 121 + that such additional attribution notices cannot be construed 122 + as modifying the License. 123 + 124 + You may add Your own copyright statement to Your modifications and 125 + may provide additional or different license terms and conditions 126 + for use, reproduction, or distribution of Your modifications, or 127 + for any such Derivative Works as a whole, provided Your use, 128 + reproduction, and distribution of the Work otherwise complies with 129 + the conditions stated in this License. 130 + 131 + 5. Submission of Contributions. Unless You explicitly state otherwise, 132 + any Contribution intentionally submitted for inclusion in the Work 133 + by You to the Licensor shall be under the terms and conditions of 134 + this License, without any additional terms or conditions. 135 + Notwithstanding the above, nothing herein shall supersede or modify 136 + the terms of any separate license agreement you may have executed 137 + with Licensor regarding such Contributions. 138 + 139 + 6. Trademarks. This License does not grant permission to use the trade 140 + names, trademarks, service marks, or product names of the Licensor, 141 + except as required for reasonable and customary use in describing the 142 + origin of the Work and reproducing the content of the NOTICE file. 143 + 144 + 7. Disclaimer of Warranty. Unless required by applicable law or 145 + agreed to in writing, Licensor provides the Work (and each 146 + Contributor provides its Contributions) on an "AS IS" BASIS, 147 + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 + implied, including, without limitation, any warranties or conditions 149 + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 + PARTICULAR PURPOSE. You are solely responsible for determining the 151 + appropriateness of using or redistributing the Work and assume any 152 + risks associated with Your exercise of permissions under this License. 153 + 154 + 8. Limitation of Liability. In no event and under no legal theory, 155 + whether in tort (including negligence), contract, or otherwise, 156 + unless required by applicable law (such as deliberate and grossly 157 + negligent acts) or agreed to in writing, shall any Contributor be 158 + liable to You for damages, including any direct, indirect, special, 159 + incidental, or consequential damages of any character arising as a 160 + result of this License or out of the use or inability to use the 161 + Work (including but not limited to damages for loss of goodwill, 162 + work stoppage, computer failure or malfunction, or any and all 163 + other commercial damages or losses), even if such Contributor 164 + has been advised of the possibility of such damages. 165 + 166 + 9. Accepting Warranty or Additional Liability. While redistributing 167 + the Work or Derivative Works thereof, You may choose to offer, 168 + and charge a fee for, acceptance of support, warranty, indemnity, 169 + or other liability obligations and/or rights consistent with this 170 + License. However, in accepting such obligations, You may act only 171 + on Your own behalf and on Your sole responsibility, not on behalf 172 + of any other Contributor, and only if You agree to indemnify, 173 + defend, and hold each Contributor harmless for any liability 174 + incurred by, or claims asserted against, such Contributor by reason 175 + of your accepting any such warranty or additional liability. 176 + 177 + END OF TERMS AND CONDITIONS 178 + 179 + APPENDIX: How to apply the Apache License to your work. 180 + 181 + To apply the Apache License to your work, attach the following 182 + boilerplate notice, with the fields enclosed by brackets "[]" 183 + replaced with your own identifying information. (Don't include 184 + the brackets!) The text should be enclosed in the appropriate 185 + comment syntax for the file format. We also recommend that a 186 + file or class name and description of purpose be included on the 187 + same "printed page" as the copyright notice for easier 188 + identification within third-party archives. 189 + 190 + Copyright 2025 encode42 191 + 192 + Licensed under the Apache License, Version 2.0 (the "License"); 193 + you may not use this file except in compliance with the License. 194 + You may obtain a copy of the License at 195 + 196 + http://www.apache.org/licenses/LICENSE-2.0 197 + 198 + Unless required by applicable law or agreed to in writing, software 199 + distributed under the License is distributed on an "AS IS" BASIS, 200 + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 + See the License for the specific language governing permissions and 202 + limitations under the License.
+7
modules/common/boot/common.nix
··· 1 + { 2 + boot = { 3 + kernelParams = [ "boot.shell_on_fail" ]; 4 + 5 + kernel.sysctl."kernel.sysrq" = 1; 6 + }; 7 + }
+24
modules/common/boot/secureboot.nix
··· 1 + { 2 + lib, 3 + lanzaboote, 4 + pkgs, 5 + }: 6 + 7 + { 8 + imports = [ 9 + ./systemd-boot.nix 10 + lanzaboote.nixosModules.lanzaboote 11 + ]; 12 + 13 + boot.loader.systemd-boot.enable = lib.mkForce false; 14 + 15 + boot.lanzaboote = { 16 + enable = true; 17 + 18 + pkiBundle = "/etc/secureboot"; 19 + }; 20 + 21 + environment.systemPackages = with pkgs; [ 22 + sbctl 23 + ]; 24 + }
+12
modules/common/boot/systemd-boot.nix
··· 1 + { 2 + imports = [ 3 + ./common.nix 4 + ]; 5 + 6 + boot.loader.systemd-boot = { 7 + enable = true; 8 + 9 + editor = false; 10 + configurationLimit = 6; 11 + }; 12 + }
+15
modules/common/default.nix
··· 1 + { 2 + imports = [ 3 + ./locale/en_US.nix 4 + 5 + ./network/firewall.nix 6 + 7 + ./system/coreutils.nix 8 + ./system/firmware.nix 9 + ./system/memory.nix 10 + ./system/sudo.nix 11 + 12 + ./home-manager.nix 13 + ./nix.nix 14 + ]; 15 + }
+27
modules/common/home-manager.nix
··· 1 + { 2 + flakeRoot, 3 + home-manager, 4 + pkgs, 5 + pkgs-unstable, 6 + ... 7 + }: 8 + 9 + { 10 + imports = [ 11 + home-manager.nixosModules.home-manager 12 + ]; 13 + 14 + home-manager = { 15 + useGlobalPkgs = true; 16 + 17 + backupFileExtension = "bak"; 18 + 19 + extraSpecialArgs = { 20 + inherit flakeRoot pkgs pkgs-unstable; 21 + }; 22 + }; 23 + 24 + environment.systemPackages = with pkgs; [ 25 + home-manager 26 + ]; 27 + }
+20
modules/common/locale/en_US.nix
··· 1 + { 2 + i18n.defaultLocale = "en_US.UTF-8"; 3 + 4 + i18n.extraLocaleSettings = { 5 + LC_ADDRESS = "en_US.UTF-8"; 6 + LC_IDENTIFICATION = "en_US.UTF-8"; 7 + LC_MEASUREMENT = "en_US.UTF-8"; 8 + LC_MONETARY = "en_US.UTF-8"; 9 + LC_NAME = "en_US.UTF-8"; 10 + LC_NUMERIC = "en_US.UTF-8"; 11 + LC_PAPER = "en_US.UTF-8"; 12 + LC_TELEPHONE = "en_US.UTF-8"; 13 + LC_TIME = "en_US.UTF-8"; 14 + }; 15 + 16 + services.xserver.xkb = { 17 + layout = "us"; 18 + variant = ""; 19 + }; 20 + }
+7
modules/common/network/bluetooth.nix
··· 1 + { 2 + hardware.bluetooth = { 3 + enable = true; 4 + 5 + powerOnBoot = false; 6 + }; 7 + }
+7
modules/common/network/firewall.nix
··· 1 + { 2 + networking.firewall = { 3 + enable = true; 4 + 5 + allowPing = false; 6 + }; 7 + }
+13
modules/common/network/network.nix
··· 1 + { 2 + networking.networkmanager = { 3 + enable = true; 4 + 5 + dns = "systemd-resolved"; 6 + 7 + wifi = { 8 + backend = "iwd"; 9 + 10 + powersave = true; 11 + }; 12 + }; 13 + }
+32
modules/common/nix.nix
··· 1 + { 2 + nix = { 3 + channel.enable = false; 4 + 5 + gc = { 6 + automatic = true; 7 + dates = "weekly"; 8 + 9 + persistent = true; 10 + 11 + options = "--delete-older-than 7d"; 12 + }; 13 + 14 + optimise = { 15 + automatic = true; 16 + dates = [ "1w" ]; 17 + 18 + persistent = true; 19 + }; 20 + 21 + settings = { 22 + experimental-features = [ 23 + "nix-command" 24 + "flakes" 25 + ]; 26 + 27 + download-buffer-size = 268435456; 28 + }; 29 + }; 30 + 31 + documentation.man.enable = false; 32 + }
+21
modules/common/system/audio.nix
··· 1 + { 2 + pkgs, 3 + ... 4 + }: 5 + 6 + { 7 + security.rtkit.enable = true; 8 + 9 + services.pipewire = { 10 + enable = true; 11 + 12 + alsa.enable = true; 13 + pulse.enable = true; 14 + }; 15 + 16 + programs.obs-studio = { 17 + plugins = with pkgs.obs-studio-plugins; [ 18 + obs-pipewire-audio-capture 19 + ]; 20 + }; 21 + }
+7
modules/common/system/coreutils.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + environment.systemPackages = with pkgs; [ 5 + uutils-coreutils-noprefix 6 + ]; 7 + }
+5
modules/common/system/firmware.nix
··· 1 + { 2 + services.fwupd = { 3 + enable = true; 4 + }; 5 + }
+5
modules/common/system/memory.nix
··· 1 + { 2 + systemd.oomd = { 3 + enable = true; 4 + }; 5 + }
+12
modules/common/system/sudo.nix
··· 1 + { 2 + security = { 3 + sudo.enable = false; 4 + 5 + sudo-rs = { 6 + enable = true; 7 + 8 + execWheelOnly = true; 9 + wheelNeedsPassword = true; 10 + }; 11 + }; 12 + }
+30
modules/common/virtualization.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + virtualisation = { 5 + libvirtd = { 6 + enable = true; 7 + 8 + qemu = { 9 + swtpm.enable = true; 10 + 11 + ovmf = { 12 + enable = true; 13 + 14 + packages = with pkgs; [ 15 + OVMFFull.fd 16 + ]; 17 + }; 18 + }; 19 + }; 20 + 21 + spiceUSBRedirection.enable = true; 22 + }; 23 + 24 + services.spice-vdagentd.enable = true; 25 + 26 + environment.systemPackages = with pkgs; [ 27 + spice 28 + spice-protocol 29 + ]; 30 + }
+13
modules/desktop/environments/common.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + environment.sessionVariables.NIXOS_OZONE_WL = "1"; 5 + 6 + services.xserver = { 7 + enable = true; 8 + 9 + excludePackages = with pkgs; [ 10 + xterm 11 + ]; 12 + }; 13 + }
+50
modules/desktop/environments/gnome.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + imports = [ 5 + ./common.nix 6 + ]; 7 + 8 + services.xserver = { 9 + displayManager.gdm.enable = true; 10 + desktopManager.gnome.enable = true; 11 + }; 12 + 13 + environment.gnome.excludePackages = with pkgs; [ 14 + snapshot 15 + gnome-connections 16 + gnome-tour 17 + yelp 18 + epiphany 19 + totem 20 + gnome-music 21 + seahorse 22 + ]; 23 + 24 + services.gvfs.enable = true; 25 + 26 + qt = { 27 + enable = true; 28 + 29 + platformTheme = "gnome"; 30 + style = "adwaita-dark"; 31 + }; 32 + 33 + services.udev.packages = with pkgs; [ 34 + gnome-settings-daemon 35 + ]; 36 + 37 + services.dbus.packages = with pkgs; [ 38 + gcr 39 + ]; 40 + 41 + environment.systemPackages = with pkgs; [ 42 + gnomeExtensions.appindicator 43 + 44 + gnome-calendar 45 + gnome-feeds 46 + 47 + celluloid 48 + zenity 49 + ]; 50 + }
+22
modules/desktop/home-manager.nix
··· 1 + { 2 + nix-jetbrains-plugins, 3 + nixcord, 4 + firefox-addons, 5 + ... 6 + }: 7 + 8 + { 9 + imports = [ 10 + ../common/home-manager.nix 11 + ]; 12 + 13 + home-manager = { 14 + sharedModules = [ 15 + nixcord.homeModules.nixcord 16 + ]; 17 + 18 + extraSpecialArgs = { 19 + inherit nix-jetbrains-plugins firefox-addons; 20 + }; 21 + }; 22 + }
+5
modules/desktop/printing.nix
··· 1 + { 2 + services.printing = { 3 + enable = true; 4 + }; 5 + }
+26
outputs.nix
··· 1 + { ... }@inputs: 2 + 3 + let 4 + mkSystem = import ./lib/mkSystem.nix { 5 + inherit inputs; 6 + 7 + flakeRootPath = ./.; 8 + }; 9 + in 10 + { 11 + formatter.x86_64-linux = inputs.nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style; 12 + 13 + nixosConfigurations = { 14 + encryption = mkSystem { 15 + name = "encryption"; 16 + system = "x86_64-linux"; 17 + }; 18 + 19 + decryption = mkSystem { 20 + name = "decryption"; 21 + system = "x86_64-linux"; 22 + 23 + isLaptop = true; 24 + }; 25 + }; 26 + }
+7
packages/common/fish.nix
··· 1 + { 2 + programs.fish = { 3 + enable = true; 4 + 5 + useBabelfish = true; 6 + }; 7 + }
+15
packages/common/git.nix
··· 1 + { 2 + programs.git = { 3 + enable = true; 4 + 5 + lfs = { 6 + enable = true; 7 + }; 8 + 9 + config = { 10 + init = { 11 + defaultBranch = "main"; 12 + }; 13 + }; 14 + }; 15 + }
+17
packages/common/yubikey.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + services.udev.packages = with pkgs; [ 5 + yubikey-personalization 6 + ]; 7 + 8 + programs.gnupg.agent = { 9 + enable = true; 10 + 11 + enableSSHSupport = true; 12 + }; 13 + 14 + services.pcscd = { 15 + enable = true; 16 + }; 17 + }
+7
packages/desktop/gnome/goldwarden.nix
··· 1 + { 2 + programs.goldwarden = { 3 + enable = true; 4 + 5 + useSshAgent = false; 6 + }; 7 + }
+5
packages/desktop/gnome/localsend.nix
··· 1 + { 2 + programs.localsend = { 3 + enable = true; 4 + }; 5 + }
+25
packages/desktop/obs.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + programs.obs-studio = { 5 + enable = true; 6 + 7 + enableVirtualCamera = true; 8 + 9 + plugins = with pkgs.obs-studio-plugins; [ 10 + wlrobs 11 + obs-vkcapture 12 + 13 + obs-composite-blur 14 + input-overlay 15 + ]; 16 + }; 17 + 18 + programs.steam = { 19 + package = pkgs.steam.override { 20 + extraEnv = { 21 + OBS_VKCAPTURE = true; 22 + }; 23 + }; 24 + }; 25 + }
+15
packages/desktop/steam.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + programs.steam = { 5 + enable = true; 6 + 7 + extest.enable = true; 8 + 9 + extraCompatPackages = with pkgs; [ 10 + proton-ge-bin 11 + ]; 12 + 13 + remotePlay.openFirewall = true; 14 + }; 15 + }
+10
readme.md
··· 1 + Personal-use NixOS configuration files. 2 + 3 + - `hardware`: Specialized hardware configuration 4 + - `homes`: User-owned home-manager directories 5 + - `hosts`: Machine configuration 6 + - `users`: Users present on the system 7 + - `homes`: User-owned home-manager configurations 8 + - `lib`: Helper functions 9 + - `modules`: System modules and relevant configuration 10 + - `packages`: Program package configuration