My dotfiles for my nixos machines and infra
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

Init home-labbing stuff, some other changes

MrSnowy c4c3e005 385c542c

+1031 -318
.config/hypr/hyprland.conf desktop/home-manager/snowy/hypr/hyprland.conf
+5
.gitignore
··· 1 + result/ 2 + 3 + # For nixos-vms 4 + *.qcow2 5 + *.fd
+196 -108
desktop/flake.lock
··· 20 20 ] 21 21 }, 22 22 "locked": { 23 - "lastModified": 1755946532, 24 - "narHash": "sha256-POePremlUY5GyA1zfbtic6XLxDaQcqHN6l+bIxdT5gc=", 23 + "lastModified": 1762356719, 24 + "narHash": "sha256-qwd/xdoOya1m8FENle+4hWnydCtlXUWLAW/Auk6WL7s=", 25 25 "owner": "hyprwm", 26 26 "repo": "aquamarine", 27 - "rev": "81584dae2df6ac79f6b6dae0ecb7705e95129ada", 27 + "rev": "6d0b3567584691bf9d8fedb5d0093309e2f979c7", 28 28 "type": "github" 29 29 }, 30 30 "original": { ··· 42 42 "rust-overlay": "rust-overlay" 43 43 }, 44 44 "locked": { 45 - "lastModified": 1759348172, 46 - "narHash": "sha256-ZPUJX2ZA0ndcHndIA/S/nRESIJV0rifPr91SUpzJtEM=", 45 + "lastModified": 1762525922, 46 + "narHash": "sha256-DX0/D0o/lUQRMCuoAoJiXkDqoISLSgkQAlsPqPS4i6M=", 47 47 "owner": "chaotic-cx", 48 48 "repo": "nyx", 49 - "rev": "dd1af56ad79c965ee20c236ba6adbb2135ac02af", 49 + "rev": "863eed9a7967cb307ecdcdba0c7b87db6a314865", 50 50 "type": "github" 51 51 }, 52 52 "original": { ··· 134 134 ] 135 135 }, 136 136 "locked": { 137 - "lastModified": 1759261733, 138 - "narHash": "sha256-G104PUPKBgJmcu4NWs0LUaPpSOTD4jiq4mamLWu3Oc0=", 137 + "lastModified": 1762463325, 138 + "narHash": "sha256-33YUsWpPyeBZEWrKQ2a1gkRZ7i0XCC/2MYpU6BVeQSU=", 139 139 "owner": "nix-community", 140 140 "repo": "home-manager", 141 - "rev": "5a21f4819ee1be645f46d6b255d49f4271ef6723", 141 + "rev": "0562fef070a1027325dd4ea10813d64d2c967b39", 142 142 "type": "github" 143 143 }, 144 144 "original": { ··· 154 154 ] 155 155 }, 156 156 "locked": { 157 - "lastModified": 1759337100, 158 - "narHash": "sha256-CcT3QvZ74NGfM+lSOILcCEeU+SnqXRvl1XCRHenZ0Us=", 157 + "lastModified": 1762704774, 158 + "narHash": "sha256-iodz4xQbULkHqetbPu5BCSWsVEzZiiNSv0/dzfH4XiE=", 159 159 "owner": "nix-community", 160 160 "repo": "home-manager", 161 - "rev": "004753ae6b04c4b18aa07192c1106800aaacf6c3", 161 + "rev": "be4a9233dd3f6104c9b0fdd3d56f953eb519a4c7", 162 162 "type": "github" 163 163 }, 164 164 "original": { ··· 176 176 ] 177 177 }, 178 178 "locked": { 179 - "lastModified": 1752603129, 180 - "narHash": "sha256-S+wmHhwNQ5Ru689L2Gu8n1OD6s9eU9n9mD827JNR+kw=", 179 + "lastModified": 1762351818, 180 + "narHash": "sha256-0ptUDbYwxv1kk/uzEX4+NJjY2e16MaAhtzAOJ6K0TG0=", 181 181 "owner": "nix-community", 182 182 "repo": "home-manager", 183 - "rev": "e8c19a3cec2814c754f031ab3ae7316b64da085b", 183 + "rev": "b959c67241cae17fc9e4ee7eaf13dfa8512477ea", 184 184 "type": "github" 185 185 }, 186 186 "original": { ··· 234 234 ] 235 235 }, 236 236 "locked": { 237 - "lastModified": 1758192433, 238 - "narHash": "sha256-CR6RnqEJSTiFgA6KQY4TTLUWbZ8RBnb+hxQqesuQNzQ=", 237 + "lastModified": 1762462052, 238 + "narHash": "sha256-6roLYzcDf4V38RUMSqycsOwAnqfodL6BmhRkUtwIgdA=", 239 239 "owner": "hyprwm", 240 240 "repo": "hyprgraphics", 241 - "rev": "c44e749dd611521dee940d00f7c444ee0ae4cfb7", 241 + "rev": "ffc999d980c7b3bca85d3ebd0a9fbadf984a8162", 242 242 "type": "github" 243 243 }, 244 244 "original": { ··· 252 252 "aquamarine": "aquamarine", 253 253 "hyprcursor": "hyprcursor", 254 254 "hyprgraphics": "hyprgraphics", 255 + "hyprland-guiutils": "hyprland-guiutils", 255 256 "hyprland-protocols": "hyprland-protocols", 256 - "hyprland-qtutils": "hyprland-qtutils", 257 257 "hyprlang": "hyprlang", 258 258 "hyprutils": "hyprutils", 259 - "hyprwayland-scanner": "hyprwayland-scanner", 259 + "hyprwayland-scanner": "hyprwayland-scanner_2", 260 260 "nixpkgs": "nixpkgs_2", 261 261 "pre-commit-hooks": "pre-commit-hooks", 262 262 "systems": "systems", 263 263 "xdph": "xdph" 264 264 }, 265 265 "locked": { 266 - "lastModified": 1759399554, 267 - "narHash": "sha256-FsFugHj7He5siEcmoRUdMKHB8uMzyneK/fynPS57W4E=", 266 + "lastModified": 1762703954, 267 + "narHash": "sha256-tBNyAKujRoltMh3lsCnEiYza7YC+kK6pcwsCp33QpV4=", 268 268 "owner": "hyprwm", 269 269 "repo": "Hyprland", 270 - "rev": "3bcfa94ee4189faaa4daf661949e88cf28c00d94", 270 + "rev": "0bd11d5eb941b8038f0723135768d84aa5512b4a", 271 271 "type": "github" 272 272 }, 273 273 "original": { ··· 276 276 "type": "github" 277 277 } 278 278 }, 279 + "hyprland-guiutils": { 280 + "inputs": { 281 + "aquamarine": [ 282 + "hyprland", 283 + "aquamarine" 284 + ], 285 + "hyprgraphics": [ 286 + "hyprland", 287 + "hyprgraphics" 288 + ], 289 + "hyprlang": [ 290 + "hyprland", 291 + "hyprlang" 292 + ], 293 + "hyprtoolkit": "hyprtoolkit", 294 + "hyprutils": [ 295 + "hyprland", 296 + "hyprutils" 297 + ], 298 + "nixpkgs": [ 299 + "hyprland", 300 + "nixpkgs" 301 + ], 302 + "systems": [ 303 + "hyprland", 304 + "systems" 305 + ] 306 + }, 307 + "locked": { 308 + "lastModified": 1762465111, 309 + "narHash": "sha256-dS13YZdWjgGGLBjpT4FHB6xf8I/WiAU+mgNWXsZgDUs=", 310 + "owner": "hyprwm", 311 + "repo": "hyprland-guiutils", 312 + "rev": "a415eba866a953f3096d661318f771aa0082eb98", 313 + "type": "github" 314 + }, 315 + "original": { 316 + "owner": "hyprwm", 317 + "repo": "hyprland-guiutils", 318 + "type": "github" 319 + } 320 + }, 279 321 "hyprland-protocols": { 280 322 "inputs": { 281 323 "nixpkgs": [ ··· 288 330 ] 289 331 }, 290 332 "locked": { 291 - "lastModified": 1749046714, 292 - "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=", 333 + "lastModified": 1759610243, 334 + "narHash": "sha256-+KEVnKBe8wz+a6dTLq8YDcF3UrhQElwsYJaVaHXJtoI=", 293 335 "owner": "hyprwm", 294 336 "repo": "hyprland-protocols", 295 - "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330", 337 + "rev": "bd153e76f751f150a09328dbdeb5e4fab9d23622", 296 338 "type": "github" 297 339 }, 298 340 "original": { ··· 301 343 "type": "github" 302 344 } 303 345 }, 304 - "hyprland-qt-support": { 346 + "hyprlang": { 305 347 "inputs": { 306 - "hyprlang": [ 348 + "hyprutils": [ 307 349 "hyprland", 308 - "hyprland-qtutils", 309 - "hyprlang" 350 + "hyprutils" 310 351 ], 311 352 "nixpkgs": [ 312 353 "hyprland", 313 - "hyprland-qtutils", 314 354 "nixpkgs" 315 355 ], 316 356 "systems": [ 317 357 "hyprland", 318 - "hyprland-qtutils", 319 358 "systems" 320 359 ] 321 360 }, 322 361 "locked": { 323 - "lastModified": 1749154592, 324 - "narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=", 362 + "lastModified": 1758927902, 363 + "narHash": "sha256-LZgMds7M94+vuMql2bERQ6LiFFdhgsEFezE4Vn+Ys3A=", 325 364 "owner": "hyprwm", 326 - "repo": "hyprland-qt-support", 327 - "rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074", 365 + "repo": "hyprlang", 366 + "rev": "4dafa28d4f79877d67a7d1a654cddccf8ebf15da", 328 367 "type": "github" 329 368 }, 330 369 "original": { 331 370 "owner": "hyprwm", 332 - "repo": "hyprland-qt-support", 371 + "repo": "hyprlang", 333 372 "type": "github" 334 373 } 335 374 }, 336 - "hyprland-qtutils": { 375 + "hyprtoolkit": { 337 376 "inputs": { 338 - "hyprland-qt-support": "hyprland-qt-support", 377 + "aquamarine": [ 378 + "hyprland", 379 + "hyprland-guiutils", 380 + "aquamarine" 381 + ], 382 + "hyprgraphics": [ 383 + "hyprland", 384 + "hyprland-guiutils", 385 + "hyprgraphics" 386 + ], 339 387 "hyprlang": [ 340 388 "hyprland", 389 + "hyprland-guiutils", 341 390 "hyprlang" 342 391 ], 343 392 "hyprutils": [ 344 393 "hyprland", 345 - "hyprland-qtutils", 346 - "hyprlang", 394 + "hyprland-guiutils", 347 395 "hyprutils" 348 396 ], 397 + "hyprwayland-scanner": "hyprwayland-scanner", 349 398 "nixpkgs": [ 350 399 "hyprland", 400 + "hyprland-guiutils", 351 401 "nixpkgs" 352 402 ], 353 403 "systems": [ 354 404 "hyprland", 405 + "hyprland-guiutils", 355 406 "systems" 356 407 ] 357 408 }, 358 409 "locked": { 359 - "lastModified": 1757694755, 360 - "narHash": "sha256-j+w5QUUr2QT/jkxgVKecGYV8J7fpzXCMgzEEr6LG9ug=", 410 + "lastModified": 1762463729, 411 + "narHash": "sha256-2fYkU/mdz8WKY3dkDPlE/j6hTxIwqultsx4gMMsMns0=", 361 412 "owner": "hyprwm", 362 - "repo": "hyprland-qtutils", 363 - "rev": "5ffdfc13ed03df1dae5084468d935f0a3f2c9a4c", 413 + "repo": "hyprtoolkit", 414 + "rev": "88483bdee5329ec985f0c8f834c519cd18cfe532", 364 415 "type": "github" 365 416 }, 366 417 "original": { 367 418 "owner": "hyprwm", 368 - "repo": "hyprland-qtutils", 419 + "repo": "hyprtoolkit", 369 420 "type": "github" 370 421 } 371 422 }, 372 - "hyprlang": { 423 + "hyprutils": { 373 424 "inputs": { 374 - "hyprutils": [ 375 - "hyprland", 376 - "hyprutils" 377 - ], 378 425 "nixpkgs": [ 379 426 "hyprland", 380 427 "nixpkgs" ··· 385 432 ] 386 433 }, 387 434 "locked": { 388 - "lastModified": 1756810301, 389 - "narHash": "sha256-wgZ3VW4VVtjK5dr0EiK9zKdJ/SOqGIBXVG85C3LVxQA=", 435 + "lastModified": 1762387740, 436 + "narHash": "sha256-gQ9zJ+pUI4o+Gh4Z6jhJll7jjCSwi8ZqJIhCE2oqwhQ=", 390 437 "owner": "hyprwm", 391 - "repo": "hyprlang", 392 - "rev": "3d63fb4a42c819f198deabd18c0c2c1ded1de931", 438 + "repo": "hyprutils", 439 + "rev": "926689ddb9c0a8787e58c02c765a62e32d63d1f7", 393 440 "type": "github" 394 441 }, 395 442 "original": { 396 443 "owner": "hyprwm", 397 - "repo": "hyprlang", 444 + "repo": "hyprutils", 398 445 "type": "github" 399 446 } 400 447 }, 401 - "hyprutils": { 448 + "hyprwayland-scanner": { 402 449 "inputs": { 403 450 "nixpkgs": [ 404 451 "hyprland", 452 + "hyprland-guiutils", 453 + "hyprtoolkit", 405 454 "nixpkgs" 406 455 ], 407 456 "systems": [ 408 457 "hyprland", 458 + "hyprland-guiutils", 459 + "hyprtoolkit", 409 460 "systems" 410 461 ] 411 462 }, 412 463 "locked": { 413 - "lastModified": 1756117388, 414 - "narHash": "sha256-oRDel6pNl/T2tI+nc/USU9ZP9w08dxtl7hiZxa0C/Wc=", 464 + "lastModified": 1755184602, 465 + "narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=", 415 466 "owner": "hyprwm", 416 - "repo": "hyprutils", 417 - "rev": "b2ae3204845f5f2f79b4703b441252d8ad2ecfd0", 467 + "repo": "hyprwayland-scanner", 468 + "rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d", 418 469 "type": "github" 419 470 }, 420 471 "original": { 421 472 "owner": "hyprwm", 422 - "repo": "hyprutils", 473 + "repo": "hyprwayland-scanner", 423 474 "type": "github" 424 475 } 425 476 }, 426 - "hyprwayland-scanner": { 477 + "hyprwayland-scanner_2": { 427 478 "inputs": { 428 479 "nixpkgs": [ 429 480 "hyprland", ··· 457 508 ] 458 509 }, 459 510 "locked": { 460 - "lastModified": 1759217228, 461 - "narHash": "sha256-P13ExJlhMVkrc5LxZLNkIJZhjNYo3LLXnxDsUNrdnMQ=", 511 + "lastModified": 1762452596, 512 + "narHash": "sha256-Iaga+mkwWnWa6FxsAYknpHzeP344VCKGkdudX420LgA=", 462 513 "owner": "Jovian-Experiments", 463 514 "repo": "Jovian-NixOS", 464 - "rev": "e52c15ab25f7dc68dde527c8df5bfa9d80d8e64f", 515 + "rev": "99919fd35e70c1b18ce948d5329928d751031312", 465 516 "type": "github" 466 517 }, 467 518 "original": { ··· 521 572 ] 522 573 }, 523 574 "locked": { 524 - "lastModified": 1759032422, 525 - "narHash": "sha256-WZf+FhebP2/1pK2np5xj/NuDjD6fXK2BHnq/tPUN18o=", 575 + "lastModified": 1762660502, 576 + "narHash": "sha256-C9F1C31ys0V7mnp4EcDy7L1cLZw/sCTEXqqTtGnvu08=", 526 577 "owner": "nix-community", 527 578 "repo": "nix-index-database", 528 - "rev": "ec7a78cb0e098832d8acac091a4df393259c4839", 579 + "rev": "15c5451c63f4c612874a43846bfe3fa828b03eee", 529 580 "type": "github" 530 581 }, 531 582 "original": { ··· 536 587 }, 537 588 "nixpkgs": { 538 589 "locked": { 539 - "lastModified": 1759147044, 540 - "narHash": "sha256-3ZPFytJOcLjTChljeaGgoaNj+tOqzgEpqZAvRe3bU90=", 541 - "owner": "PedroHLC", 590 + "lastModified": 1762363567, 591 + "narHash": "sha256-YRqMDEtSMbitIMj+JLpheSz0pwEr0Rmy5mC7myl17xs=", 592 + "owner": "NixOS", 542 593 "repo": "nixpkgs", 543 - "rev": "18e83bbe13aa50992777832b52bd0e0d8585fb3b", 594 + "rev": "ae814fd3904b621d8ab97418f1d0f2eb0d3716f4", 544 595 "type": "github" 545 596 }, 546 597 "original": { ··· 552 603 }, 553 604 "nixpkgs-extra-unstable": { 554 605 "locked": { 555 - "lastModified": 1759386674, 556 - "narHash": "sha256-wg1Lz/1FC5Q13R+mM5a2oTV9TA9L/CHHTm3/PiLayfA=", 606 + "lastModified": 1762482733, 607 + "narHash": "sha256-g/da4FzvckvbiZT075Sb1/YDNDr+tGQgh4N8i5ceYMg=", 557 608 "owner": "NixOS", 558 609 "repo": "nixpkgs", 559 - "rev": "625ad6366178f03acd79f9e3822606dd7985b657", 610 + "rev": "e1ebeec86b771e9d387dd02d82ffdc77ac753abc", 560 611 "type": "github" 561 612 }, 562 613 "original": { ··· 583 634 }, 584 635 "nixpkgs-stable": { 585 636 "locked": { 586 - "lastModified": 1759281824, 587 - "narHash": "sha256-FIBE1qXv9TKvSNwst6FumyHwCRH3BlWDpfsnqRDCll0=", 637 + "lastModified": 1762498405, 638 + "narHash": "sha256-Zg/SCgCaAioc0/SVZQJxuECGPJy+OAeBcGeA5okdYDc=", 588 639 "owner": "NixOS", 589 640 "repo": "nixpkgs", 590 - "rev": "5b5be50345d4113d04ba58c444348849f5585b4a", 641 + "rev": "6faeb062ee4cf4f105989d490831713cc5a43ee1", 591 642 "type": "github" 592 643 }, 593 644 "original": { ··· 599 650 }, 600 651 "nixpkgs-unstable": { 601 652 "locked": { 602 - "lastModified": 1759036355, 603 - "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", 653 + "lastModified": 1762596750, 654 + "narHash": "sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV+3DSADBX7/9YQ=", 604 655 "owner": "NixOS", 605 656 "repo": "nixpkgs", 606 - "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", 657 + "rev": "b6a8526db03f735b89dd5ff348f53f752e7ddc8e", 607 658 "type": "github" 608 659 }, 609 660 "original": { ··· 615 666 }, 616 667 "nixpkgs_2": { 617 668 "locked": { 618 - "lastModified": 1758198701, 619 - "narHash": "sha256-7To75JlpekfUmdkUZewnT6MoBANS0XVypW6kjUOXQwc=", 669 + "lastModified": 1762363567, 670 + "narHash": "sha256-YRqMDEtSMbitIMj+JLpheSz0pwEr0Rmy5mC7myl17xs=", 620 671 "owner": "NixOS", 621 672 "repo": "nixpkgs", 622 - "rev": "0147c2f1d54b30b5dd6d4a8c8542e8d7edf93b5d", 673 + "rev": "ae814fd3904b621d8ab97418f1d0f2eb0d3716f4", 623 674 "type": "github" 624 675 }, 625 676 "original": { ··· 631 682 }, 632 683 "nixpkgs_3": { 633 684 "locked": { 634 - "lastModified": 1756731054, 635 - "narHash": "sha256-kifUBw3WDopsgxUq0X9hFb2MMDeqhREbF1YttEj6IpM=", 636 - "owner": "nixos", 685 + "lastModified": 1762363567, 686 + "narHash": "sha256-YRqMDEtSMbitIMj+JLpheSz0pwEr0Rmy5mC7myl17xs=", 687 + "owner": "NixOS", 637 688 "repo": "nixpkgs", 638 - "rev": "d042fb41a92f948e2f42038b0b9641bd501d08ce", 689 + "rev": "ae814fd3904b621d8ab97418f1d0f2eb0d3716f4", 639 690 "type": "github" 640 691 }, 641 692 "original": { 642 - "owner": "nixos", 693 + "owner": "NixOS", 694 + "ref": "nixos-unstable", 643 695 "repo": "nixpkgs", 644 696 "type": "github" 645 697 } 646 698 }, 647 699 "nixpkgs_4": { 648 700 "locked": { 649 - "lastModified": 1755615617, 650 - "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", 701 + "lastModified": 1756731054, 702 + "narHash": "sha256-kifUBw3WDopsgxUq0X9hFb2MMDeqhREbF1YttEj6IpM=", 651 703 "owner": "nixos", 652 704 "repo": "nixpkgs", 653 - "rev": "20075955deac2583bb12f07151c2df830ef346b4", 705 + "rev": "d042fb41a92f948e2f42038b0b9641bd501d08ce", 654 706 "type": "github" 655 707 }, 656 708 "original": { 657 709 "owner": "nixos", 658 - "ref": "nixos-unstable", 659 710 "repo": "nixpkgs", 660 711 "type": "github" 661 712 } ··· 670 721 ] 671 722 }, 672 723 "locked": { 673 - "lastModified": 1758108966, 674 - "narHash": "sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo=", 724 + "lastModified": 1762441963, 725 + "narHash": "sha256-j+rNQ119ffYUkYt2YYS6rnd6Jh/crMZmbqpkGLXaEt0=", 675 726 "owner": "cachix", 676 727 "repo": "git-hooks.nix", 677 - "rev": "54df955a695a84cd47d4a43e08e1feaf90b1fd9b", 728 + "rev": "8e7576e79b88c16d7ee3bbd112c8d90070832885", 678 729 "type": "github" 679 730 }, 680 731 "original": { ··· 693 744 "nixpkgs-extra-unstable": "nixpkgs-extra-unstable", 694 745 "nixpkgs-stable": "nixpkgs-stable", 695 746 "nixpkgs-unstable": "nixpkgs-unstable", 747 + "spicetify-nix": "spicetify-nix", 696 748 "zed-editor": "zed-editor", 697 749 "zen-browser": "zen-browser" 698 750 } ··· 705 757 ] 706 758 }, 707 759 "locked": { 708 - "lastModified": 1759286284, 709 - "narHash": "sha256-JLdGGc4XDutzSD1L65Ni6Ye+oTm8kWfm0KTPMcyl7Y4=", 760 + "lastModified": 1762483116, 761 + "narHash": "sha256-Z8EVsTH10BjCdFyPxbUu5jBV+HGL39rh9+beQcnNRm0=", 710 762 "owner": "oxalica", 711 763 "repo": "rust-overlay", 712 - "rev": "f6f2da475176bb7cff51faae8b3fe879cd393545", 764 + "rev": "9de55b59b6aaadbd9dbf223765a835239b767ee5", 713 765 "type": "github" 714 766 }, 715 767 "original": { ··· 718 770 "type": "github" 719 771 } 720 772 }, 773 + "spicetify-nix": { 774 + "inputs": { 775 + "nixpkgs": "nixpkgs_3", 776 + "systems": "systems_2" 777 + }, 778 + "locked": { 779 + "lastModified": 1762705543, 780 + "narHash": "sha256-yoJBNxZySJduVdzfy8zxlfx5OL2CvBOYtuQsYsbD/qw=", 781 + "owner": "Gerg-L", 782 + "repo": "spicetify-nix", 783 + "rev": "954fd25c1dc799f732a23da844befe71f03a5ff0", 784 + "type": "github" 785 + }, 786 + "original": { 787 + "owner": "Gerg-L", 788 + "repo": "spicetify-nix", 789 + "type": "github" 790 + } 791 + }, 721 792 "systems": { 722 793 "locked": { 723 794 "lastModified": 1689347949, ··· 733 804 "type": "github" 734 805 } 735 806 }, 807 + "systems_2": { 808 + "locked": { 809 + "lastModified": 1681028828, 810 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 811 + "owner": "nix-systems", 812 + "repo": "default", 813 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 814 + "type": "github" 815 + }, 816 + "original": { 817 + "owner": "nix-systems", 818 + "repo": "default", 819 + "type": "github" 820 + } 821 + }, 736 822 "xdph": { 737 823 "inputs": { 738 824 "hyprland-protocols": [ ··· 761 847 ] 762 848 }, 763 849 "locked": { 764 - "lastModified": 1755354946, 765 - "narHash": "sha256-zdov5f/GcoLQc9qYIS1dUTqtJMeDqmBmo59PAxze6e4=", 850 + "lastModified": 1761431178, 851 + "narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=", 766 852 "owner": "hyprwm", 767 853 "repo": "xdg-desktop-portal-hyprland", 768 - "rev": "a10726d6a8d0ef1a0c645378f983b6278c42eaa0", 854 + "rev": "4b8801228ff958d028f588f0c2b911dbf32297f9", 769 855 "type": "github" 770 856 }, 771 857 "original": { ··· 777 863 "zed-editor": { 778 864 "inputs": { 779 865 "flake-parts": "flake-parts", 780 - "nixpkgs": "nixpkgs_3" 866 + "nixpkgs": "nixpkgs_4" 781 867 }, 782 868 "locked": { 783 869 "lastModified": 1756797624, ··· 796 882 "zen-browser": { 797 883 "inputs": { 798 884 "home-manager": "home-manager_3", 799 - "nixpkgs": "nixpkgs_4" 885 + "nixpkgs": [ 886 + "nixpkgs-unstable" 887 + ] 800 888 }, 801 889 "locked": { 802 - "lastModified": 1759378939, 803 - "narHash": "sha256-MWCIUqkxoMnvNYjooFiFHzlcZDBOp4DTXERe8xdEWoU=", 890 + "lastModified": 1762665515, 891 + "narHash": "sha256-0+A0nHL1+x1H4NL5bE6GyA252JOpUK6kvfHg/g75260=", 804 892 "owner": "0xc000022070", 805 893 "repo": "zen-browser-flake", 806 - "rev": "3ac78827a82614c394e6f8fcc84c5cea9c3847f4", 894 + "rev": "1bea5e777dd0b99158c504da1fb2913ff119e96c", 807 895 "type": "github" 808 896 }, 809 897 "original": {
+12 -5
desktop/flake.nix
··· 11 11 inputs.nixpkgs.follows = "nixpkgs-unstable"; 12 12 }; 13 13 14 - zen-browser.url = "github:0xc000022070/zen-browser-flake"; 14 + zen-browser = { 15 + url = "github:0xc000022070/zen-browser-flake"; 16 + # IMPORTANT: we're using "libgbm" and is only available in unstable so ensure 17 + # to have it up-to-date or simply don't specify the nixpkgs input 18 + inputs.nixpkgs.follows = "nixpkgs-unstable"; 19 + }; 15 20 16 21 hyprland.url = "github:hyprwm/Hyprland"; 17 22 ··· 28 33 url = "github:nix-community/nix-index-database"; 29 34 inputs.nixpkgs.follows = "nixpkgs-unstable"; 30 35 }; 36 + 37 + spicetify-nix.url = "github:Gerg-L/spicetify-nix"; 31 38 32 39 # modrinth-fix.url = "github:getchoo-contrib/nixpkgs/pkgs/modrinth-app/0.10.3"; 33 40 }; ··· 40 47 41 48 nixosConfigurations = { 42 49 Snowflake = 43 - let 44 - system = "x86_64-linux"; 45 - repos = import ./repos.nix { inherit inputs system; }; 46 - in 50 + let 51 + system = "x86_64-linux"; 52 + repos = import ./repos.nix { inherit inputs system; }; 53 + in 47 54 # Set the default pkgs the system follows 48 55 repos.pkgs-system { 49 56 inherit system;
+52 -75
desktop/home-manager/snowy.nix
··· 3 3 pkgs, 4 4 config, 5 5 repos, 6 - # pkgs-modrinth-fix, 7 6 ... 8 7 }: 9 8 10 9 { 11 10 imports = [ 12 11 inputs.nix-index.homeModules.nix-index 13 - inputs.zen-browser.homeModules.beta 12 + # inputs.zen-browser.homeModules.beta 13 + # inputs.spicetify-nix.homeManagerModules.spicetify 14 14 ]; 15 15 16 + # home.file = { 17 + # ".config/hypr/hyprland.conf" = { 18 + # source = config.lib.file.mkOutOfStoreSymlink "./snowy/hypr/hyprland.conf"; 19 + # }; 20 + # ".config/mpv/mpv.conf" = { 21 + # source = config.lib.file.mkOutOfStoreSymlink "./snowy/mpv/mpv.conf"; 22 + # }; 23 + # }; 24 + 16 25 home.packages = with pkgs; [ 17 - # inputs.zen-browser.packages."${system}".twilight 18 - corretto17 19 - android-studio 20 - forgejo-actions-runner 21 - ctop 26 + inputs.zen-browser.packages."${system}".twilight 22 27 inputs.zed-editor.packages."${pkgs.system}".zed-editor-bin 28 + # corretto17 29 + # android-studio 30 + # forgejo-actions-runner 31 + ctop 23 32 # pkgs-modrinth-fix.modrinth-app 24 33 # zed stuffz 25 34 ente-desktop 26 - bash-language-server 27 - hyprls 35 + vscode 36 + helix 37 + mpv 38 + 28 39 # shellcheck # for zed basher? 29 40 # vscodium 30 41 jetbrains.idea-ultimate 31 42 jetbrains.rider 32 43 orca-slicer 33 - godot 44 + # godot 34 45 unityhub 46 + # simplex-chat-desktop 47 + 48 + #language servers 49 + bash-language-server 50 + hyprls 51 + kdePackages.qtdeclarative 52 + kdePackages.qtutilities 53 + python313Packages.python-lsp-server 35 54 36 55 fzf # for fish 37 - hextazy 56 + chafa 57 + # hextazy 38 58 repos.pkgs-extra-unstable.grayjay 39 59 40 60 # gaphor 41 - d-spy 42 - bustle 61 + # d-spyd 62 + # bustle 43 63 44 64 rustup 45 65 gcc ··· 50 70 clonehero 51 71 52 72 # silly 73 + papers 53 74 loupe 54 75 gnome-clocks 55 76 helvum ··· 62 83 element-desktop 63 84 radio-cli # rust 64 85 heroic 65 - hydralauncher 86 + # hydralauncher 66 87 67 88 wineWowPackages.staging 89 + easyeffects 68 90 69 91 monocraft 92 + python3 70 93 # wine64 71 94 # nixpkgs-extra-unstable.hyprlandPlugins.hyprsplit 72 95 ]; ··· 77 100 # LIB_HYPRSPLIT = "${nixpkgs-extra-unstable.hyprlandPlugins.hyprsplit}/lib/libhyprsplit.so"; 78 101 }; 79 102 80 - programs = { 81 - 82 - helix = { 83 - defaultEditor = true; 84 - }; 85 - 86 - vscode = { 87 - enable = true; 88 - package = pkgs.vscode; 89 - }; 103 + # programs.spicetify = 104 + # let 105 + # spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.system}; 106 + # in 107 + # { 108 + # enable = true; 109 + # enabledExtensions = with spicePkgs.extensions; [ 110 + # adblockify 111 + # # hidePodcasts 112 + # # shuffle # shuffle+ (special characters are sanitized out of extension names) 113 + # ]; 114 + # theme = spicePkgs.themes.catppuccin; 115 + # colorScheme = "mocha"; 116 + # }; 90 117 118 + programs = { 91 119 nix-your-shell = { 92 120 enable = true; 93 121 enableFishIntegration = true; ··· 102 130 ]; 103 131 }; 104 132 105 - zen-browser = { 106 - enable = true; 107 - }; 108 - 109 - # zed-editor = { 110 - # enable = true; 111 - # }; 112 - 113 133 direnv = { 114 134 enable = true; 115 135 silent = true; 116 136 nix-direnv.enable = true; 117 137 }; 118 - 119 - mpv = { 120 - enable = true; 121 - config = { 122 - sub-font = "Arial Regular"; 123 - sub-border-size = 10; 124 - sub-font-size = 52; 125 - sub-pos = 102; 126 - sub-color = "#ffffff"; 127 - sub-ass-override = "force"; 128 - profile = "high-quality"; 129 - # gpu-api = "vulkan"; 130 - gpu-api = "opengl"; 131 - vo = "gpu-next"; 132 - hwdec = "auto-copy"; 133 - vaapi-device = "/dev/dri/renderD128"; 134 - demuxer-max-bytes = "5120MiB"; 135 - }; 136 - }; 137 - }; 138 - 139 - # services = { 140 - # # ollama = { 141 - # # enable = true; 142 - # # acceleration = "rocm"; 143 - # # }; 144 - # }; 145 - 146 - wayland.windowManager.hyprland = { 147 - enable = true; 148 - 149 - plugins = [ 150 - # inputs.nixpkgs-extra-unstable.hyprlandPlugins.hyprsplit 151 - ]; 152 - 153 - settings = { 154 - exec-once = [ 155 - "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" 156 - ]; 157 - }; 158 - 159 - # Make it base it on my hyprland config, I dont like managing configs trough home manager tbh. 160 - extraConfig = builtins.readFile ../../.config/hypr/hyprland.conf; 161 138 }; 162 139 163 140 dconf.settings = {
+16
desktop/home-manager/snowy/mpv/mpv.conf
··· 1 + #sub-font='JetBrainsMono NF ExtraBold' 2 + sub-font='Arial Regular' 3 + 4 + sub-border-size=10 5 + sub-font-size=52 6 + 7 + sub-pos=102 8 + sub-color='#ffffff' 9 + 10 + sub-ass-override=force 11 + 12 + #sub-shadow=3 13 + #sub-shadow-color='#000000' 14 + #sub-shadow-offset=3 15 + 16 +
+1
desktop/home-manager/snowy/stow.sh
··· 2 2 #!nix-shell -i bash -p stow 3 3 4 4 stow silly 5 + ni
+6 -1
desktop/repos.nix
··· 39 39 40 40 in 41 41 { 42 - inherit pkgs-extra-unstable pks-unstable pkgs-stable pkgs-system; 42 + inherit 43 + pkgs-extra-unstable 44 + pks-unstable 45 + pkgs-stable 46 + pkgs-system 47 + ; 43 48 }
+34 -34
desktop/system/audio.nix
··· 5 5 ... 6 6 }: 7 7 { 8 - # # In order to save the sound card state on shutdown 9 - # hardware.alsa.enablePersistence = true; 8 + # In order to save the sound card state on shutdown 9 + hardware.alsa.enablePersistence = true; 10 10 11 11 services = { 12 12 pipewire = { ··· 18 18 19 19 wireplumber = { 20 20 enable = true; 21 - extraConfig = { 22 - "arctis-nova" = { 23 - "monitor.alsa.rules" = [ 24 - # { 25 - # matches = [ 26 - # { 27 - # "device.name" = "alsa_card.usb-SteelSeries_Arctis_Nova_7-00"; 28 - # } 29 - # ]; 30 - # actions = { 31 - # update-props = { 32 - # # "device.description" = "Puppy Headphones"; 21 + # extraConfig = { 22 + # "arctis-nova" = { 23 + # "monitor.alsa.rules" = [ 24 + # # { 25 + # # matches = [ 26 + # # { 27 + # # "device.name" = "alsa_card.usb-SteelSeries_Arctis_Nova_7-00"; 28 + # # } 29 + # # ]; 30 + # # actions = { 31 + # # update-props = { 32 + # # # "device.description" = "Puppy Headphones"; 33 33 34 - # }; 35 - # }; 36 - # } 37 - { 38 - matches = [ 39 - { 40 - "device.name" = "alsa_card.pci-0000_0f_00.4"; 41 - } 42 - ]; 43 - actions = { 44 - update-props = { 45 - "device.description" = "Speakers"; 46 - "audio.channels" = 6; 47 - "audio.position" = "FL,FR,FC,LFE,RL,RR"; 48 - }; 49 - }; 50 - } 51 - ]; 52 - }; 53 - }; 34 + # # }; 35 + # # }; 36 + # # } 37 + # { 38 + # matches = [ 39 + # { 40 + # "device.name" = "alsa_card.pci-0000_0f_00.4"; 41 + # } 42 + # ]; 43 + # actions = { 44 + # update-props = { 45 + # "device.description" = "Speakers"; 46 + # "audio.channels" = 6; 47 + # "audio.position" = "FL,FR,FC,LFE,RL,RR"; 48 + # }; 49 + # }; 50 + # } 51 + # ]; 52 + # }; 53 + # }; 54 54 }; 55 55 }; 56 56 };
+10 -10
desktop/system/configuration.nix
··· 7 7 lib, 8 8 pkgs, 9 9 pkgs-unstable, 10 + inputs, 10 11 ... 11 12 }: 12 13 ··· 95 96 enable = true; 96 97 qemu = { 97 98 swtpm.enable = true; 98 - ovmf.packages = [ 99 - pkgs.OVMFFull.fd 100 - ]; 99 + # ovmf.packages = [ 100 + # pkgs.OVMFFull.fd 101 + # ]; 102 + # 103 + vhostUserPackages = with pkgs; [ virtiofsd ]; 101 104 }; 102 105 }; 103 106 ··· 466 469 openssh 467 470 dosfstools 468 471 btrfs-progs 469 - corretto21 472 + # corretto21 473 + jdk 474 + jdk17 470 475 471 476 gst_all_1.gstreamer 472 477 gst_all_1.gst-plugins-base ··· 560 565 r2modman 561 566 #libsForQt5.xp-pen-g430-drive 562 567 libsForQt5.xp-pen-deco-01-v2-driver 563 - # jetbrains-toolbox 564 - # jetbrains.webstorm 565 - # jetbrains.rust-rover 566 - # jetbrains.idea-ultimate 567 568 # postman 568 569 # insomnia 569 570 hoppscotch 570 - # zed-editor-fhs 571 571 572 572 ani-cli 573 573 syncplay ··· 584 584 585 585 # QUICKSHELL 586 586 quickshell 587 - qt6.full 587 + # qt6.full 588 588 589 589 distrobox 590 590
+9 -2
desktop/system/networking.nix
··· 11 11 12 12 networking = { 13 13 hostName = "Snowflake"; 14 - #wireless.enable = true; 14 + # wireless.enable = true; 15 15 networkmanager.enable = true; 16 + # networkmanager.wifi.backend = "iwd"; 17 + # wireless.iwd.enable = true; 16 18 # useDHCP = true; 17 19 18 20 # search = [ ··· 25 27 "1.1.1.1" 26 28 "2606:4700:4700::1001" 27 29 "1.0.0.1" 28 - # "100.100.100.100" 29 30 ]; 30 31 31 32 # resolvconf = { ··· 70 71 53 71 72 72 73 33693 74 + 75 + # SimpleX 76 + 36167 73 77 ]; 74 78 75 79 allowedUDPPorts = [ ··· 79 83 # networking 80 84 53 81 85 67 86 + 87 + # SimpleX 88 + 36167 82 89 ]; 83 90 }; 84 91 };
+49
home-server/flake.lock
··· 1 + { 2 + "nodes": { 3 + "home-manager": { 4 + "inputs": { 5 + "nixpkgs": [ 6 + "nixpkgs" 7 + ] 8 + }, 9 + "locked": { 10 + "lastModified": 1762704774, 11 + "narHash": "sha256-iodz4xQbULkHqetbPu5BCSWsVEzZiiNSv0/dzfH4XiE=", 12 + "owner": "nix-community", 13 + "repo": "home-manager", 14 + "rev": "be4a9233dd3f6104c9b0fdd3d56f953eb519a4c7", 15 + "type": "github" 16 + }, 17 + "original": { 18 + "owner": "nix-community", 19 + "ref": "master", 20 + "repo": "home-manager", 21 + "type": "github" 22 + } 23 + }, 24 + "nixpkgs": { 25 + "locked": { 26 + "lastModified": 1762596750, 27 + "narHash": "sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV+3DSADBX7/9YQ=", 28 + "owner": "NixOS", 29 + "repo": "nixpkgs", 30 + "rev": "b6a8526db03f735b89dd5ff348f53f752e7ddc8e", 31 + "type": "github" 32 + }, 33 + "original": { 34 + "owner": "NixOS", 35 + "ref": "nixos-unstable", 36 + "repo": "nixpkgs", 37 + "type": "github" 38 + } 39 + }, 40 + "root": { 41 + "inputs": { 42 + "home-manager": "home-manager", 43 + "nixpkgs": "nixpkgs" 44 + } 45 + } 46 + }, 47 + "root": "root", 48 + "version": 7 49 + }
+48
home-server/flake.nix
··· 1 + { 2 + description = "Snow's home-lab server flake"; 3 + inputs = { 4 + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 5 + 6 + home-manager = { 7 + url = "github:nix-community/home-manager/master"; 8 + inputs.nixpkgs.follows = "nixpkgs"; 9 + }; 10 + }; 11 + 12 + outputs = 13 + { 14 + ... # Passes all arguments in inputs without having to specify them 15 + }@inputs: 16 + 17 + let 18 + system = "x86_64-linux"; 19 + in 20 + { 21 + nixosConfigurations.snowlab = inputs.nixpkgs.lib.nixosSystem { 22 + inherit system; 23 + 24 + # Any arugments we want our config files to have (like configuration.nix) 25 + specialArgs = { 26 + inherit inputs; 27 + }; 28 + 29 + modules = [ 30 + ./system/configuration.nix 31 + "${inputs.nixpkgs}/nixos/modules/profiles/minimal.nix" # Disables some options by default for a minimal installation: https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/profiles/minimal.nix 32 + 33 + inputs.home-manager.nixosModules.home-manager 34 + { 35 + home-manager.useGlobalPkgs = true; 36 + home-manager.useUserPackages = true; 37 + home-manager.extraSpecialArgs = { 38 + inherit inputs; # Makes sure we have access to inputs in our home-manager configs. 39 + }; 40 + home-manager.users = { 41 + # All users managed by home-manager :3 42 + user = import ./home-manager/user.nix; 43 + }; 44 + } 45 + ]; 46 + }; 47 + }; 48 + }
+33
home-server/home-manager/apps/fish.nix
··· 1 + { ... }: 2 + { 3 + programs.fish = { 4 + enable = true; 5 + generateCompletions = true; 6 + 7 + shellAliases = { 8 + ls = "eza -ihg --icons"; 9 + 10 + cat = "/run/current-system/sw/bin/bat"; 11 + bat = "/run/current-system/sw/bin/cat"; 12 + 13 + myip4 = "curl https://ipinfo.io/ip"; 14 + myip6 = "curl https://v6.ipinfo.io/ip"; 15 + 16 + docres = "docker compose down && docker compose up -d"; 17 + docvol = "cd ~/.local/share/docker/volumes"; 18 + 19 + logboot = "journalctl --boot=-1 --reverse"; 20 + listgens = "sudo nix-env -p /nix/var/nix/profiles/system --list-generations"; 21 + }; 22 + 23 + shellInit = '' 24 + if status is-interactive 25 + set -xg fish_color_command blue 26 + echo "Welcome to $(whoami)@$(hostname)!" 27 + echo "" 28 + fastfetch 29 + echo "" 30 + end 31 + ''; 32 + }; 33 + }
+24
home-server/home-manager/user.nix
··· 1 + { pkgs, inputs, ... }: 2 + { 3 + imports = [ 4 + ./apps/fish.nix 5 + ]; 6 + 7 + home = { 8 + stateVersion = "25.05"; 9 + 10 + packages = with pkgs; [ 11 + ctop 12 + ]; 13 + }; 14 + 15 + programs = { 16 + # enable eza, a more functional replacement of ls 17 + eza = { 18 + enable = true; 19 + enableFishIntegration = true; 20 + git = true; 21 + icons = "always"; 22 + }; 23 + }; 24 + }
+2
home-server/justfile
··· 1 + test-vm: 2 + nixos-rebuild build-vm-with-bootloader --flake .#snowlab && QEMU_NET_OPTS="hostfwd=tcp::2221-:22,hostfwd=tcp::8080-:80" ./result/bin/run-snowlab-vm
+1
home-server/result
··· 1 + /nix/store/wsmk41hbyl6kpv4snj02csn4vmdj1yld-nixos-vm
+213
home-server/system/configuration.nix
··· 1 + # Edit this configuration file to define what should be installed on 2 + # your system. Help is available in the configuration.nix(5) man page, on 3 + # https://search.nixos.org/options and in the NixOS manual (`nixos-help`). 4 + 5 + { 6 + # config, 7 + # lib, 8 + pkgs, 9 + ... 10 + }: 11 + 12 + { 13 + imports = [ 14 + ./hardware-configuration.nix # Include the results of the hardware scan. 15 + ./network.nix 16 + ./services.nix 17 + ]; 18 + 19 + virtualisation.vmVariant.virtualisation = { 20 + qemu.guestAgent.enable = true; 21 + diskSize = 1024 * 12; 22 + memorySize = 1024 * 4; 23 + cores = 4; 24 + }; 25 + 26 + fileSystems."/" = { 27 + autoResize = true; 28 + }; 29 + 30 + boot.growPartition = true; 31 + 32 + services.spice-vdagentd.enable = true; 33 + services.qemuGuest.enable = true; 34 + 35 + # Enable zram (compressed ram) 36 + zramSwap = { 37 + enable = true; 38 + algorithm = "zstd"; 39 + }; 40 + 41 + # Add a swapfile 42 + swapDevices = [ 43 + { 44 + device = "/swapfile"; 45 + size = 8 * 1024; 46 + } 47 + ]; 48 + 49 + nix = { 50 + settings = { 51 + experimental-features = [ 52 + "nix-command" 53 + "flakes" 54 + ]; 55 + trusted-users = [ 56 + "@wheel" 57 + ]; 58 + auto-optimise-store = true; 59 + use-xdg-base-directories = true; 60 + }; 61 + 62 + # Automatically clean up old generations every week 63 + gc = { 64 + automatic = true; 65 + dates = "weekly"; 66 + }; 67 + }; 68 + 69 + boot = { 70 + enableContainers = true; 71 + kernelModules = [ ]; 72 + 73 + kernel.sysctl = { 74 + # https://wiki.archlinux.org/title/Sysctl#Enable_TCP_Fast_Open 75 + "net.ipv4.tcp_fastopen" = 3; 76 + }; 77 + 78 + loader = { 79 + efi.canTouchEfiVariables = true; 80 + 81 + # Use grub so it works on both EFI and BOOT 82 + grub = { 83 + enable = true; 84 + timeoutStyle = "hidden"; 85 + efiSupport = true; 86 + # efiInstallAsRemovable = true; 87 + device = "nodev"; 88 + splashImage = null; 89 + }; 90 + }; 91 + 92 + blacklistedKernelModules = [ 93 + # Obscure network protocols 94 + "ax25" 95 + "netrom" 96 + "rose" 97 + 98 + # Old or rare or insufficiently audited filesystems 99 + "adfs" 100 + "affs" 101 + "bfs" 102 + "befs" 103 + "cramfs" 104 + "efs" 105 + "erofs" 106 + "exofs" 107 + "freevxfs" 108 + "f2fs" 109 + "hfs" 110 + "hpfs" 111 + "jfs" 112 + "minix" 113 + "nilfs2" 114 + "ntfs" 115 + "omfs" 116 + "qnx4" 117 + "qnx6" 118 + "sysv" 119 + "ufs" 120 + ]; 121 + }; 122 + 123 + time.timeZone = "Europe/Berlin"; # Set your time zone. 124 + i18n.defaultLocale = "en_US.UTF-8"; # Select internationalisation properties. 125 + 126 + environment = { 127 + defaultPackages = [ ]; # Disable any default installed packages 128 + 129 + systemPackages = with pkgs; [ 130 + fastfetch 131 + wget 132 + btop 133 + dysk 134 + git 135 + ]; 136 + }; 137 + 138 + fonts.fontconfig.enable = false; 139 + 140 + system = { 141 + stateVersion = "25.05"; 142 + tools = { 143 + nixos-version.enable = true; 144 + nixos-rebuild.enable = true; 145 + nixos-option.enable = true; 146 + 147 + nixos-generate-config.enable = false; 148 + nixos-install.enable = false; 149 + nixos-build-vms.enable = false; 150 + }; 151 + }; 152 + 153 + programs = { 154 + nano.enable = true; 155 + fish.enable = true; 156 + bat.enable = true; # Enable bat, a nicer replacement of cat 157 + }; 158 + 159 + security = { 160 + # lockKernelModules = true; 161 + protectKernelImage = true; 162 + 163 + # use sudo-rs instead of sudo 164 + sudo.enable = false; 165 + sudo-rs = { 166 + enable = true; 167 + wheelNeedsPassword = true; 168 + execWheelOnly = true; 169 + }; 170 + 171 + # # Enable this if you want docker to bind to ports lower than 1024 172 + # wrappers = { 173 + # docker-rootlesskit = { 174 + # owner = "root"; 175 + # group = "root"; 176 + # capabilities = "cap_net_bind_service+ep"; 177 + # source = "${pkgs.rootlesskit}/bin/rootlesskit"; 178 + # }; 179 + # }; 180 + }; 181 + 182 + # virtualisation = { 183 + # docker = { 184 + # rootless = { 185 + # enable = true; 186 + # setSocketVariable = true; 187 + # }; 188 + # }; 189 + # }; 190 + 191 + users = { 192 + groups.user = { }; 193 + users = { 194 + user = { 195 + isNormalUser = true; 196 + linger = true; 197 + group = "user"; 198 + extraGroups = [ ]; 199 + shell = pkgs.fish; 200 + openssh.authorizedKeys.keys = [ 201 + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL2za6psnuIMZ6FrdUehhyQlqYvy05+wv8dKER+Lctna snowy@Snowflake" 202 + ]; 203 + }; 204 + 205 + root = { 206 + shell = pkgs.fish; 207 + openssh.authorizedKeys.keys = [ 208 + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL2za6psnuIMZ6FrdUehhyQlqYvy05+wv8dKER+Lctna snowy@Snowflake" 209 + ]; 210 + }; 211 + }; 212 + }; 213 + }
+58
home-server/system/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 + config, 6 + lib, 7 + pkgs, 8 + modulesPath, 9 + ... 10 + }: 11 + 12 + { 13 + imports = [ 14 + (modulesPath + "/profiles/qemu-guest.nix") 15 + ]; 16 + 17 + boot.initrd.availableKernelModules = [ 18 + "ata_piix" 19 + "uhci_hcd" 20 + "virtio_pci" 21 + "sr_mod" 22 + "virtio_blk" 23 + ]; 24 + boot.initrd.kernelModules = [ ]; 25 + boot.kernelModules = [ ]; 26 + boot.extraModulePackages = [ ]; 27 + 28 + fileSystems."/" = { 29 + device = "/dev/disk/by-uuid/b435993e-0760-44ba-afa7-ead509b87e62"; 30 + fsType = "ext4"; 31 + }; 32 + 33 + fileSystems."/proc" = { 34 + device = "proc"; 35 + fsType = "proc"; 36 + }; 37 + 38 + fileSystems."/boot" = { 39 + device = "/dev/disk/by-uuid/67AC-7FCE"; 40 + fsType = "vfat"; 41 + options = [ 42 + "fmask=0077" 43 + "dmask=0077" 44 + ]; 45 + }; 46 + 47 + swapDevices = [ ]; 48 + 49 + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking 50 + # (the default) this is the recommended approach. When using systemd-networkd it's 51 + # still possible to use this option, but it's recommended to use it in conjunction 52 + # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. 53 + networking.useDHCP = lib.mkDefault true; 54 + # networking.interfaces.ens3.useDHCP = lib.mkDefault true; 55 + 56 + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 57 + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 58 + }
+71
home-server/system/network.nix
··· 1 + { ... }: 2 + { 3 + networking = { 4 + hostName = "snowlab"; 5 + 6 + # Some good default dns servers 7 + nameservers = [ 8 + # Cloudflare 9 + "2606:4700:4700::1111" 10 + "1.1.1.1" 11 + "2606:4700:4700::1001" 12 + "1.0.0.1" 13 + 14 + # Mullvad 15 + "2a07:e340::2" 16 + "194.242.2.2" 17 + ]; 18 + 19 + # Use more modern nftables instead of iptables 20 + nftables.enable = true; 21 + 22 + # # Gateways, these are specified in netcup 23 + # defaultGateway6 = { 24 + # address = "fe80::1"; 25 + # interface = "ens3"; 26 + # }; 27 + 28 + # defaultGateway = { 29 + # address = "89.58.16.1"; 30 + # interface = "ens3"; 31 + # }; 32 + 33 + # interfaces = { 34 + # ens3 = { 35 + # ipv6.addresses = [ 36 + # { 37 + # # Based on ipv6 block allocated in netcup 38 + # address = "2a0a:4cc0:0:1eb::c0ff:ee"; 39 + # prefixLength = 64; 40 + # } 41 + # ]; 42 + # ipv4.addresses = [ 43 + # { 44 + # # Based on ipv4 allocated in netcup 45 + # address = "89.58.19.34"; 46 + # prefixLength = 22; 47 + # } 48 + # ]; 49 + # }; 50 + # }; 51 + 52 + firewall = { 53 + enable = true; 54 + 55 + allowedTCPPorts = [ 56 + # HTTP 57 + 80 58 + 443 59 + 60 + # ssh 61 + 22 62 + ]; 63 + allowedUDPPorts = [ 64 + # HTTP3 65 + 80 66 + 443 67 + ]; 68 + }; 69 + 70 + }; 71 + }
+24
home-server/system/services.nix
··· 1 + { config, ... }: 2 + { 3 + services = { 4 + # openssh, lol 5 + openssh = { 6 + enable = true; 7 + ports = [ 8 + 22 9 + ]; 10 + allowSFTP = true; 11 + settings = { 12 + PasswordAuthentication = false; 13 + PermitRootLogin = "yes"; 14 + }; 15 + }; 16 + 17 + # caddy = { 18 + # enable = true; 19 + # virtualHosts = { 20 + # 21 + # }; 22 + # }; 23 + }; 24 + }
+59
server/containers/caddy.nix
··· 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 6 + }: 7 + 8 + let 9 + release = "nixos-25.05"; 10 + 11 + in 12 + { 13 + containers.caddy = { 14 + autoStart = true; 15 + privateNetwork = false; 16 + config = 17 + { 18 + config, 19 + pkgs, 20 + lib, 21 + ... 22 + }: 23 + { 24 + system.stateVersion = "25.05"; 25 + 26 + services.caddy = { 27 + enable = true; 28 + virtualHosts = { 29 + "mrsnowy.dev" = { 30 + serverAliases = [ 31 + "fpps4.net" 32 + "www.paradijs-in-hongarije.nl" 33 + "paradijs-in-hongarije.nl" 34 + "prowebservice.nl" 35 + "smarty.nl" 36 + "www.zendojaku.nl" 37 + "zendojaku.nl" 38 + ]; 39 + 40 + extraConfig = '' 41 + reverse_proxy https://10.0.100.65 { 42 + transport http { 43 + tls_insecure_skip_verify 44 + } 45 + } 46 + ''; 47 + }; 48 + 49 + "headscale.mrsnowy.dev" = { 50 + extraConfig = '' 51 + reverse_proxy http://localhost:3443 52 + ''; 53 + }; 54 + }; 55 + }; 56 + }; 57 + 58 + }; 59 + }
-6
server/flake.nix
··· 9 9 }; 10 10 11 11 deploy-rs.url = "github:serokell/deploy-rs"; 12 - 13 - # zenium.url = "git+https://git.killuaa.dev/Rouffy/Zenium"; 14 12 }; 15 13 16 14 outputs = ··· 37 35 modules = [ 38 36 ./system/configuration.nix 39 37 ./containers/main.nix 40 - # <nixpkgs/nixos/modules/profiles/minimal.nix> 41 38 "${nixpkgs}/nixos/modules/profiles/minimal.nix" 42 - # ./lxd-config.nix 43 - # proxmox-nixos.nixosModules.proxmox-ve 44 39 45 40 home-manager.nixosModules.home-manager 46 41 { ··· 51 46 snow = import ./home-manager/snow.nix; 52 47 }; 53 48 } 54 - 55 49 ]; 56 50 }; 57 51
+4 -20
server/home-manager/apps/fish.nix
··· 3 3 programs.fish = { 4 4 enable = true; 5 5 generateCompletions = true; 6 - # functions = { 7 - # docker = { 8 - # body = '' 9 - # if test (count $argv) -eq 1; and test "$argv[1]" = ps 10 - # ctop 11 - # else 12 - # command docker $argv 13 - # end 14 - # ''; 15 - # }; 16 - # }; 17 6 18 7 shellAliases = { 19 - fetch = "clear && fastfetch"; 20 - helix = "hx"; 21 - nano = "$EDITOR"; 22 8 ls = "eza -ihg --icons"; 9 + 23 10 cat = "/etc/profiles/per-user/snow/bin/bat"; 24 11 bat = "/run/current-system/sw/bin/cat"; 25 - ctl = "sudo systemctl"; 26 - myip = "curl https://ipinfo.io/ip"; 12 + 13 + myip4 = "curl https://ipinfo.io/ip"; 27 14 myip6 = "curl https://v6.ipinfo.io/ip"; 15 + 28 16 docres = "docker compose down && docker compose up -d"; 29 17 docvol = "cd ~/.local/share/docker/volumes"; 30 18 31 19 logboot = "journalctl --boot=-1 --reverse"; 32 - # reslave = "nh os switch ~/Nixos -u && nh clean all"; 33 - # rebuild = "nh os switch ~/Nixos"; 34 - # rebuildc = "nh os switch ~/Nixos && nh clean all"; 35 20 listgens = "sudo nix-env -p /nix/var/nix/profiles/system --list-generations"; 36 21 }; 37 22 ··· 43 28 fastfetch 44 29 end 45 30 ''; 46 - 47 31 }; 48 32 }
+7 -7
server/home-manager/apps/helix.nix
··· 37 37 display-inlay-hints = true; 38 38 display-progress-messages = true; 39 39 }; 40 - keys.select = { 41 - y = ":clipboard-yank"; 42 - }; 43 - keys.normal = { 44 - y = ":clipboard-yank"; 45 - }; 40 + # keys.select = { 41 + # y = ":clipboard-yank"; 42 + # }; 43 + # keys.normal = { 44 + # y = ":clipboard-yank"; 45 + # }; 46 46 }; 47 47 }; 48 - } 48 + }
+21 -18
server/home-manager/snow.nix
··· 5 5 ./apps/fish.nix 6 6 ./apps/fastfetch.nix 7 7 ]; 8 - home.username = "snow"; 9 - home.homeDirectory = "/home/snow"; 10 8 11 - home.packages = with pkgs; [ 12 - git 13 - nixd 14 - nixfmt-rfc-style 15 - devenv 16 - # yazi 17 - ctop 18 - # inputs.zenium.packages."${system}".zenium-remote-server-bin 19 - ]; 9 + home = { 10 + username = "snow"; 11 + homeDirectory = "/home/snow"; 12 + stateVersion = "25.05"; 13 + enableNixpkgsReleaseCheck = false; 20 14 21 - services = { 22 - # cliphist = { 23 - # enable = true; 24 - # allowImages = true; 25 - # }; 15 + packages = with pkgs; [ 16 + git 17 + # nixd 18 + # nixfmt-rfc-style 19 + devenv 20 + # yazi 21 + ctop 22 + # inputs.zenium.packages."${system}".zenium-remote-server-bin 23 + ]; 26 24 }; 25 + 26 + # services = { 27 + # # cliphist = { 28 + # # enable = true; 29 + # # allowImages = true; 30 + # # }; 31 + # }; 27 32 28 33 programs = { 29 34 home-manager = { ··· 40 45 }; 41 46 }; 42 47 43 - home.stateVersion = "25.05"; 44 - home.enableNixpkgsReleaseCheck = false; 45 48 }
+4 -1
server/justfile
··· 5 5 nixos-rebuild dry-run --flake .#snow-den 6 6 7 7 deploy: 8 - nixos-rebuild switch --flake .#snow-den --target-host server --use-remote-sudo 8 + nixos-rebuild switch --flake .#snow-den --target-host server --use-remote-sudo 9 + 10 + test-vm: 11 + nixos-rebuild build-vm-with-bootloader --flake .#snow-den && QEMU_NET_OPTS="hostfwd=tcp::2221-:335,hostfwd=tcp::8080-:80" ./result/bin/run-snow-den-vm
+1
server/result
··· 1 + /nix/store/q2l4r4920q2zrm7mh6j718h68k8kz4nz-nixos-vm
+11
server/services/main.nix
··· 1 + { 2 + config, 3 + lib, 4 + pkgs, 5 + ... 6 + }: 7 + { 8 + imports = [ 9 + ./incus.nix 10 + ]; 11 + }
+16 -5
server/system/configuration.nix
··· 13 13 imports = [ 14 14 # Include the results of the hardware scan. 15 15 ./hardware-configuration.nix 16 - ./lxd-config.nix 17 - # ./ets2-config.nix 16 + ../services/main.nix 18 17 ./network.nix 19 18 ]; 20 - 21 - # nixpkgs.config.allowUnfree = true; 22 19 23 20 zramSwap = { 24 21 enable = true; ··· 172 169 # }; 173 170 # }; 174 171 172 + headscale = { 173 + enable = true; 174 + port = 3443; 175 + settings = { 176 + server_url = "https://headscale.mrsnowy.dev:3443"; 177 + dns.base_domain = "magicdns.headscale.mrsnowy.dev"; 178 + }; 179 + }; 180 + 175 181 tailscale.enable = true; 176 182 177 183 # prometheus = { ··· 206 212 pam = { 207 213 services.sudo.rssh = true; 208 214 services.sudo.unixAuth = false; 215 + 209 216 rssh = { 210 217 enable = true; 211 218 settings = { ··· 236 243 237 244 users = { 238 245 groups.radcliffe = { }; 246 + groups.proc-bypass = { }; 239 247 users = { 240 248 snow = { 241 249 isNormalUser = true; ··· 243 251 linger = true; 244 252 extraGroups = [ 245 253 "wheel" 254 + "proc-bypass" 246 255 ]; 247 256 shell = pkgs.fish; 248 257 openssh.authorizedKeys.keys = [ ··· 253 262 isNormalUser = true; 254 263 linger = true; 255 264 group = "radcliffe"; 265 + extraGroups = [ 266 + "proc-bypass" 267 + ]; 256 268 shell = pkgs.fish; 257 269 openssh.authorizedKeys.keys = [ 258 270 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL2za6psnuIMZ6FrdUehhyQlqYvy05+wv8dKER+Lctna snowy@Snowflake" 259 - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGiRKJiC+keGpcnWC9vItrPGqYSq9+bK3pNWc+zgnrMR user@radcliffe" 260 271 ]; 261 272 }; 262 273 root = {
+5 -1
server/system/hardware-configuration.nix
··· 28 28 fileSystems."/" = { 29 29 device = "/dev/disk/by-uuid/b435993e-0760-44ba-afa7-ead509b87e62"; 30 30 fsType = "ext4"; 31 + autoResize = true; 31 32 }; 33 + 34 + boot.growPartition = true; 35 + virtualisation.diskSize = 12144; 32 36 33 37 fileSystems."/proc" = { 34 38 device = "proc"; 35 39 fsType = "proc"; 36 40 options = [ 37 41 "hidepid=2" 38 - "gid=wheel" 42 + "gid=proc-bypass" 39 43 ]; 40 44 }; 41 45
+12 -10
server/system/lxd-config.nix server/services/incus.nix
··· 1 1 { pkgs, ... }: 2 2 { 3 - virtualisation.lxd = { 3 + virtualisation.incus = { 4 4 enable = true; 5 - recommendedSysctlSettings = true; 5 + 6 + softDaemonRestart = true; 7 + socketActivation = false; 6 8 7 9 ui = { 8 10 enable = true; 9 - package = pkgs.lxd-ui; 11 + package = pkgs.incus-ui-canonical; 10 12 }; 11 13 12 14 preseed = { 13 15 config = { 14 - "core.https_address" = ":8443"; 16 + "core.https_address" = ":8444"; 15 17 "core.shutdown_timeout" = "3"; 16 18 "images.compression_algorithm" = "xz"; 17 19 "backups.compression_algorithm" = "xz"; ··· 33 35 34 36 storage_pools = [ 35 37 { 36 - name = "hestia-pool"; 38 + name = "hestia_pool"; 37 39 description = "Storage pool for hestia"; 38 40 driver = "dir"; 39 - config = { 40 - source = "/var/lib/lxd/storage-pools/hestia-pool"; 41 - }; 41 + # config = { 42 + # source = "/var/lib/incus/storage-pools/hestia_pool"; 43 + # }; 42 44 } 43 45 ]; 44 46 45 47 storage_volumes = [ 46 48 { 47 - name = "hestia-backups"; 49 + name = "hestia_volume_backups"; 48 50 # type = "custom"; 49 51 content_type = "filesystem"; 50 - pool = "hestia-pool"; 52 + pool = "hestia_pool"; 51 53 config = { 52 54 size = "32GiB"; 53 55 };
+27 -15
server/system/network.nix
··· 2 2 { 3 3 networking = { 4 4 hostName = "snow-den"; 5 + 5 6 nameservers = [ 7 + # Mullvad 8 + "2a07:e340::2" 9 + "194.242.2.2" 10 + 6 11 # Cloudflare 7 12 "2606:4700:4700::1111" 8 13 "1.1.1.1" 9 14 "2606:4700:4700::1001" 10 15 "1.0.0.1" 16 + ]; 11 17 12 - # Mullvad 13 - "2a07:e340::2" 14 - "194.242.2.2" 15 - ]; 18 + nftables.enable = true; 16 19 17 20 defaultGateway6 = { 18 21 address = "fe80::1"; ··· 49 52 "hestia-bridge" 50 53 ]; 51 54 52 - extraCommands = '' 53 - iptables -t nat -A POSTROUTING -s 10.0.100.0/24 ! -d 10.0.100.0/24 -j MASQUERADE 54 - ''; 55 + # extraCommands = '' 56 + # iptables -t nat -A POSTROUTING -s 10.0.100.0/24 ! -d 10.0.100.0/24 -j MASQUERADE 57 + # ''; 55 58 56 59 allowedTCPPorts = [ 57 60 # HTTP ··· 65 68 66 69 # LXD 67 70 8443 71 + 72 + # Incus 73 + 8444 68 74 69 75 # email 70 76 ## IMAP ··· 94 100 95 101 # mc 96 102 25565 103 + 41448 104 + 8100 97 105 ]; 98 106 allowedUDPPorts = [ 99 107 # HTTP ··· 112 120 # Steam 113 121 27015 114 122 27016 123 + 124 + # mc 125 + 41448 126 + 8100 115 127 ]; 116 128 }; 117 129 ··· 125 137 { 126 138 sourcePort = 665; 127 139 proto = "tcp"; 128 - destination = "10.0.100.126:22"; 140 + destination = "10.0.100.65:22"; 129 141 } 130 142 131 143 # IMAP 132 144 { 133 145 sourcePort = 143; 134 146 proto = "tcp"; 135 - destination = "10.0.100.126:143"; 147 + destination = "10.0.100.65:143"; 136 148 } 137 149 { 138 150 sourcePort = 993; 139 151 proto = "tcp"; 140 - destination = "10.0.100.126:993"; 152 + destination = "10.0.100.65:993"; 141 153 } 142 154 # POP3 143 155 { 144 156 sourcePort = 110; 145 157 proto = "tcp"; 146 - destination = "10.0.100.126:110"; 158 + destination = "10.0.100.65:110"; 147 159 } 148 160 { 149 161 sourcePort = 995; 150 162 proto = "tcp"; 151 - destination = "10.0.100.126:995"; 163 + destination = "10.0.100.65:995"; 152 164 } 153 165 # SMTP 154 166 { 155 167 sourcePort = 25; 156 168 proto = "tcp"; 157 - destination = "10.0.100.126:25"; 169 + destination = "10.0.100.65:25"; 158 170 } 159 171 { 160 172 sourcePort = 465; 161 173 proto = "tcp"; 162 - destination = "10.0.100.126:465"; 174 + destination = "10.0.100.65:465"; 163 175 } 164 176 { 165 177 sourcePort = 587; 166 178 proto = "tcp"; 167 - destination = "10.0.100.126:587"; 179 + destination = "10.0.100.65:587"; 168 180 } 169 181 ]; 170 182 };