Personal-use NixOS configuration

Upgrade to NixOS 25.11, Part 1: Desktop

+64 -124
+26 -43
flake.lock
··· 61 61 ] 62 62 }, 63 63 "locked": { 64 - "lastModified": 1764310304, 65 - "narHash": "sha256-pKM8CKzPdcMINl2eBNYMMg5CrMxJjQ16DsRWdoxeUQM=", 64 + "lastModified": 1764568283, 65 + "narHash": "sha256-X1wOfSIi0q0TUmTTzXKtrAbjvJRrco4dZf3s6jY4soI=", 66 66 "owner": "encode42", 67 67 "repo": "nixos-packages", 68 - "rev": "7c7aa46fef2471da2b2e6dfcb03c03af061d4c92", 68 + "rev": "1a0a95dbe46cc70af50dd7ba50ffbd0ae8e436c0", 69 69 "type": "github" 70 70 }, 71 71 "original": { ··· 82 82 }, 83 83 "locked": { 84 84 "dir": "pkgs/firefox-addons", 85 - "lastModified": 1764302674, 86 - "narHash": "sha256-8/zVGvLL4+cb+5A3XWiZep8JdjbQhh50gyghAs61hP8=", 85 + "lastModified": 1764561884, 86 + "narHash": "sha256-vQ3iFPPhxsLqV3c5kgmYP53mVD6id6gsP0tN+oTmqok=", 87 87 "owner": "rycee", 88 88 "repo": "nur-expressions", 89 - "rev": "de69b47670b359630d2be0ad4dbcab05554d8fb7", 89 + "rev": "aba4621459aec251d90d6452e3495b58a8a5e185", 90 90 "type": "gitlab" 91 91 }, 92 92 "original": { ··· 248 248 ] 249 249 }, 250 250 "locked": { 251 - "lastModified": 1763992789, 252 - "narHash": "sha256-WHkdBlw6oyxXIra/vQPYLtqY+3G8dUVZM8bEXk0t8x4=", 251 + "lastModified": 1764536451, 252 + "narHash": "sha256-BgtcUkBfItu9/yU14IgUaj4rYOanTOUZjUfBP20/ZB4=", 253 253 "owner": "nix-community", 254 254 "repo": "home-manager", 255 - "rev": "44831a7eaba4360fb81f2acc5ea6de5fde90aaa3", 255 + "rev": "3fdd076e08049a9c7a83149b270440d9787d2df5", 256 256 "type": "github" 257 257 }, 258 258 "original": { 259 259 "owner": "nix-community", 260 - "ref": "release-25.05", 260 + "ref": "release-25.11", 261 261 "repo": "home-manager", 262 262 "type": "github" 263 263 } ··· 332 332 "systems": "systems_2" 333 333 }, 334 334 "locked": { 335 - "lastModified": 1764264437, 336 - "narHash": "sha256-FBBmEDKDBV6d7Y/caGrLtZ+DnIhh2RVMfnuu0Xr5n5M=", 335 + "lastModified": 1764424095, 336 + "narHash": "sha256-pzXz0jGncgIBpEAKAFoXB8902NIBsrVVyGaM4uOjiN4=", 337 337 "owner": "theCapypara", 338 338 "repo": "nix-jetbrains-plugins", 339 - "rev": "7afefae7cdce0c223faa1d3d6d468d1a9aadcd77", 339 + "rev": "5f29fcde809a796493f9f23f90b8fe2ee0b8a498", 340 340 "type": "github" 341 341 }, 342 342 "original": { ··· 354 354 ] 355 355 }, 356 356 "locked": { 357 - "lastModified": 1764230686, 358 - "narHash": "sha256-nrYYXatTtHtKOn3B6BFX0KWSGKy77bCLbvL1nSWKmYU=", 357 + "lastModified": 1764489870, 358 + "narHash": "sha256-9OUgV/Ks1JKnjR/9nzViCCLMGvW24dlLj7RGIsgLaMc=", 359 359 "owner": "kaylorben", 360 360 "repo": "nixcord", 361 - "rev": "59ec57381d39bb6f7776094372093dfcfa6c55a5", 361 + "rev": "0d9cdbda7b32f14ae8de6cea61e81d072a2bfaba", 362 362 "type": "github" 363 363 }, 364 364 "original": { ··· 369 369 }, 370 370 "nixos-hardware": { 371 371 "locked": { 372 - "lastModified": 1764269296, 373 - "narHash": "sha256-lXAKymcMNIvuw3WLHBhdNWUs1bXl/BYWBtYNhhK+D1s=", 372 + "lastModified": 1764440730, 373 + "narHash": "sha256-ZlJTNLUKQRANlLDomuRWLBCH5792x+6XUJ4YdFRjtO4=", 374 374 "owner": "NixOS", 375 375 "repo": "nixos-hardware", 376 - "rev": "00e9525fb65da500852aae7bef666071eedf1b3e", 376 + "rev": "9154f4569b6cdfd3c595851a6ba51bfaa472d9f3", 377 377 "type": "github" 378 378 }, 379 379 "original": { ··· 416 416 }, 417 417 "nixpkgs-unstable": { 418 418 "locked": { 419 - "lastModified": 1764242076, 420 - "narHash": "sha256-sKoIWfnijJ0+9e4wRvIgm/HgE27bzwQxcEmo2J/gNpI=", 419 + "lastModified": 1764517877, 420 + "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", 421 421 "owner": "NixOS", 422 422 "repo": "nixpkgs", 423 - "rev": "2fad6eac6077f03fe109c4d4eb171cf96791faa4", 423 + "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", 424 424 "type": "github" 425 425 }, 426 426 "original": { ··· 430 430 "type": "github" 431 431 } 432 432 }, 433 - "nixpkgs-winboat": { 434 - "locked": { 435 - "lastModified": 1760908621, 436 - "narHash": "sha256-DMcyD+FQegBRdaoTLEKgk1eOeY0J1pIuYOk28+L0byg=", 437 - "owner": "Rexcrazy804", 438 - "repo": "nixpkgs", 439 - "rev": "4fdc48ee7d9f4d8259579d0b6aff74c3312cc5bb", 440 - "type": "github" 441 - }, 442 - "original": { 443 - "owner": "Rexcrazy804", 444 - "ref": "winboat-init", 445 - "repo": "nixpkgs", 446 - "type": "github" 447 - } 448 - }, 449 433 "nixpkgs_2": { 450 434 "locked": { 451 - "lastModified": 1763948260, 452 - "narHash": "sha256-dY9qLD0H0zOUgU3vWacPY6Qc421BeQAfm8kBuBtPVE0=", 435 + "lastModified": 1764494334, 436 + "narHash": "sha256-x2xCEXUlU4Ap56+t5HaoReOQ/bV/bIQ5rzTn/m+V3HQ=", 453 437 "owner": "NixOS", 454 438 "repo": "nixpkgs", 455 - "rev": "1c8ba8d3f7634acac4a2094eef7c32ad9106532c", 439 + "rev": "d542db745310b6929708d9abea513f3ff19b1341", 456 440 "type": "github" 457 441 }, 458 442 "original": { 459 443 "owner": "NixOS", 460 - "ref": "nixos-25.05", 444 + "ref": "nixos-25.11", 461 445 "repo": "nixpkgs", 462 446 "type": "github" 463 447 } ··· 502 486 "nixos-hardware": "nixos-hardware", 503 487 "nixpkgs": "nixpkgs_2", 504 488 "nixpkgs-unstable": "nixpkgs-unstable", 505 - "nixpkgs-winboat": "nixpkgs-winboat", 506 489 "vpn-confinement": "vpn-confinement" 507 490 } 508 491 },
+2 -4
flake.nix
··· 3 3 4 4 inputs = { 5 5 # Basic Nix/OS functionality 6 - nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; 6 + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; 7 7 nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; 8 8 9 9 nixos-hardware.url = "github:NixOS/nixos-hardware/master"; ··· 21 21 }; 22 22 23 23 home-manager = { 24 - url = "github:nix-community/home-manager/release-25.05"; 24 + url = "github:nix-community/home-manager/release-25.11"; 25 25 26 26 inputs.nixpkgs.follows = "nixpkgs"; 27 27 }; ··· 64 64 65 65 inputs.nixpkgs.follows = "nixpkgs"; 66 66 }; 67 - 68 - nixpkgs-winboat.url = "github:Rexcrazy804/nixpkgs/winboat-init"; 69 67 }; 70 68 71 69 outputs = args: import ./outputs.nix args;
+2 -1
homes/career/desktop/packages.nix
··· 5 5 slack 6 6 notion-app-enhanced 7 7 8 - modrinth-app 8 + # Awaiting the merge of #466573 9 + #modrinth-app 9 10 ]; 10 11 }
+6 -4
homes/encode42/common/git.nix
··· 2 2 programs.git = { 3 3 enable = true; 4 4 5 - userName = "encode42"; 6 - userEmail = "me@encode42.dev"; 7 - 8 5 signing = { 9 6 signByDefault = true; 10 7 ··· 12 9 key = "2DB55D48E857C8C7C6DF239580B9576520BBBF2D"; 13 10 }; 14 11 15 - extraConfig = { 12 + settings = { 13 + user = { 14 + name = "encode42"; 15 + email = "me@encode42.dev"; 16 + }; 17 + 16 18 init.defaultBranch = "main"; 17 19 }; 18 20 };
+7
homes/encode42/desktop/bitwarden.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + home.packages = with pkgs; [ 5 + bitwarden-desktop 6 + ]; 7 + }
-12
homes/encode42/desktop/environments/gnome.nix
··· 29 29 enabled-extensions = with pkgs; [ 30 30 gnomeExtensions.appindicator.extensionUuid # TODO: make this not needed 31 31 gnomeExtensions.tiling-shell.extensionUuid 32 - gnomeExtensions.pano.extensionUuid 33 32 gnomeExtensions.hide-top-bar.extensionUuid 34 33 gnomeExtensions.blur-my-shell.extensionUuid 35 34 ]; ··· 97 96 top-edge-maximize = true; 98 97 }; 99 98 100 - "org/gnome/shell/extensions/pano" = { 101 - keep-search-entry = false; 102 - play-audio-on-copy = false; 103 - send-notification-on-copy = false; 104 - 105 - exclusion-list = [ "Goldwarden" ]; 106 - 107 - session-only-mode = true; 108 - }; 109 - 110 99 "org/gnome/shell/extensions/blur-my-shell/hidetopbar" = { 111 100 compatibility = true; 112 101 }; ··· 124 113 home.packages = with pkgs; [ 125 114 gnomeExtensions.hide-top-bar 126 115 gnomeExtensions.tiling-shell 127 - gnomeExtensions.pano 128 116 gnomeExtensions.blur-my-shell 129 117 130 118 jetbrains-mono
+1 -1
homes/encode42/desktop/firefox.nix
··· 45 45 }; 46 46 47 47 extensions = { 48 - packages = with firefox-addons.packages.${pkgs.system}; [ 48 + packages = with firefox-addons.packages.${pkgs.stdenv.hostPlatform.system}; [ 49 49 fastforwardteam 50 50 indie-wiki-buddy 51 51 ];
+1 -5
homes/encode42/desktop/zed.nix
··· 1 1 { 2 2 lib, 3 3 pkgs, 4 - pkgs-unstable, 5 4 ... 6 5 }: 7 6 8 7 let 9 - # stable is way too outdated 10 - biomePackage = pkgs-unstable.biome; 8 + biomePackage = pkgs.biome; 11 9 in 12 10 { 13 11 programs.zed-editor = { 14 12 enable = true; 15 - 16 - package = pkgs-unstable.zed-editor; 17 13 18 14 extensions = [ 19 15 "rust"
-1
hosts/decryption/users/encode42.nix
··· 10 10 11 11 (flakeRoot + /packages/common/yubikey.nix) 12 12 13 - (flakeRoot + /packages/desktop/gnome/goldwarden.nix) 14 13 (flakeRoot + /packages/desktop/gnome/localsend.nix) 15 14 16 15 (flakeRoot + /packages/desktop/dolphin.nix)
+3 -4
hosts/encryption/homes/encode42.nix
··· 1 1 { 2 2 flakeRoot, 3 3 pkgs, 4 - pkgs-unstable, 5 4 pkgs-personal, 6 5 ... 7 6 }: ··· 64 63 ffmpeg 65 64 rsgain 66 65 audacity 67 - pkgs-unstable.puddletag 68 - pkgs-unstable.eartag 66 + puddletag 67 + mediaelch 69 68 70 69 blockbench 71 70 72 71 clonehero 73 72 openrct2 74 73 r2modman 75 - pkgs-unstable.olympus 74 + olympus 76 75 pkgs-personal.iso2god-rs 77 76 ]; 78 77 }
-1
hosts/encryption/users/encode42.nix
··· 10 10 11 11 (flakeRoot + /packages/common/yubikey.nix) 12 12 13 - (flakeRoot + /packages/desktop/gnome/goldwarden.nix) 14 13 (flakeRoot + /packages/desktop/gnome/localsend.nix) 15 14 16 15 (flakeRoot + /packages/desktop/obs.nix)
+2
hosts/index/homes/encode42.nix
··· 15 15 16 16 home.packages = with pkgs; [ 17 17 cyanrip 18 + 19 + # Unstable to keep up-to-date with authentication servers 18 20 pkgs-unstable.makemkv 19 21 ]; 20 22 }
+2 -2
hosts/prospect/homes/config/games.nix
··· 14 14 xemu # Microsoft Xbox 15 15 melonDS # Nintendo DS 16 16 ppsspp-qt # Sony Playstation Portable 17 + xenia-canary # Microsoft Xbox 360 17 18 rpcs3 # Sony Playstation 3 18 19 azahar # Nintendo 3DS 19 20 cemu # Nintendo Wii U 20 21 ]; 21 22 22 23 unstable-emulators = with pkgs-unstable; [ 23 - xenia-canary # Microsoft Xbox 360 24 24 ]; 25 25 26 26 # TODO: Vita3k and Gearsystem ··· 30 30 with pkgs; 31 31 [ 32 32 r2modman 33 - pkgs-unstable.olympus 33 + olympus 34 34 ] 35 35 ++ stable-emulators 36 36 ++ unstable-emulators;
+1 -1
lib/customJetbrainsPackage.nix
··· 8 8 9 9 let 10 10 marketplacePluginBase = 11 - nix-jetbrains-plugins.plugins.${pkgs.system}.${idePackage.pname}.${idePackage.version}; 11 + nix-jetbrains-plugins.plugins.${pkgs.stdenv.hostPlatform.system}.${idePackage.pname}.${idePackage.version}; 12 12 marketplacePluginList = builtins.map (pluginId: marketplacePluginBase.${pluginId}) pluginIds; 13 13 14 14 pluginList = patchedPlugins ++ marketplacePluginList;
-5
lib/mkSystem.nix
··· 25 25 26 26 pkgs-personal = inputs.encode42-packages.packages.${system}; 27 27 28 - pkgs-winboat = import inputs.nixpkgs-winboat { 29 - inherit system; 30 - }; 31 - 32 28 lib = inputs.nixpkgs.lib; 33 29 34 30 flakeLib = import ./default.nix { ··· 62 58 flakeLib 63 59 pkgs-unstable 64 60 pkgs-personal 65 - pkgs-winboat 66 61 isLaptop 67 62 hostName 68 63 ;
-8
modules/common/virtualization.nix
··· 7 7 8 8 qemu = { 9 9 swtpm.enable = true; 10 - 11 - ovmf = { 12 - enable = true; 13 - 14 - packages = with pkgs; [ 15 - OVMFFull.fd 16 - ]; 17 - }; 18 10 }; 19 11 }; 20 12
+2 -4
modules/desktop/environments/gnome.nix
··· 5 5 ./common.nix 6 6 ]; 7 7 8 - services.xserver = { 9 - displayManager.gdm.enable = true; 10 - desktopManager.gnome.enable = true; 11 - }; 8 + services.displayManager.gdm.enable = true; 9 + services.desktopManager.gnome.enable = true; 12 10 13 11 environment.gnome.excludePackages = with pkgs; [ 14 12 snapshot
-7
packages/desktop/gnome/goldwarden.nix
··· 1 - { 2 - programs.goldwarden = { 3 - enable = true; 4 - 5 - useSshAgent = false; 6 - }; 7 - }
+5 -3
packages/desktop/winboat.nix
··· 1 - { pkgs, pkgs-winboat, ... }: 1 + { pkgs, pkgs-unstable, ... }: 2 2 3 3 { 4 4 environment.systemPackages = with pkgs; [ 5 - freerdp3 5 + freerdp 6 6 docker-compose 7 - pkgs-winboat.winboat 7 + 8 + # Unstable for winboat 0.9.0, roll back to stable once backported 9 + pkgs-unstable.winboat 8 10 ]; 9 11 10 12 virtualisation.docker.enable = true;
+2 -3
packages/server/caddy/default.nix
··· 1 1 { email }: 2 2 3 - { pkgs-unstable, ... }: 3 + { pkgs, ... }: 4 4 5 5 { 6 6 services.caddy = { ··· 21 21 order scgi after reverse_proxy 22 22 ''; 23 23 24 - # unstable for caddy 2.10.2, roll back to stable once 25.11 releases 25 - package = pkgs-unstable.caddy.withPlugins { 24 + package = pkgs.caddy.withPlugins { 26 25 plugins = [ 27 26 "github.com/caddy-dns/cloudflare@v0.2.1" 28 27 "github.com/WeidiDeng/caddy-cloudflare-ip@v0.0.0-20231130002422-f53b62aa13cb"
-3
packages/server/media/navidrome.nix
··· 5 5 { 6 6 config, 7 7 flakeLib, 8 - pkgs-unstable, 9 8 ... 10 9 }: 11 10 ··· 63 62 ImageCacheSize = "2GB"; 64 63 TranscodingCacheSize = "8GB"; 65 64 }; 66 - 67 - package = pkgs-unstable.navidrome; # TODO: Switch back to stable once BFR is ready 68 65 }; 69 66 70 67 # Caddy reverse proxy configuration
-3
packages/server/sharing/flood.nix
··· 7 7 lib, 8 8 flakeLib, 9 9 pkgs, 10 - pkgs-unstable, 11 10 utils ? pkgs.utils, 12 11 ... 13 12 }: ··· 18 17 { 19 18 services.flood = { 20 19 enable = true; 21 - 22 - package = pkgs-unstable.flood; 23 20 24 21 extraArgs = [ 25 22 "--rtsocket=${config.services.rtorrent.rpcSocket}"
-8
packages/server/sharing/prowlarr.nix
··· 4 4 5 5 { 6 6 config, 7 - pkgs-unstable, 8 7 flakeLib, 9 8 ... 10 9 }: 11 10 12 - let 13 - prowlarrModulePath = "services/misc/servarr/prowlarr.nix"; 14 - in 15 11 { 16 - # Unstable to use dataDir option, roll back to stable once 25.11 releases 17 - disabledModules = [ prowlarrModulePath ]; 18 12 imports = [ 19 - "${pkgs-unstable.path}/nixos/modules/${prowlarrModulePath}" 20 - 21 13 ./byparr.nix 22 14 ]; 23 15
+1
packages/server/sharing/rtorrent.nix
··· 18 18 services.rtorrent = { 19 19 enable = true; 20 20 21 + # Unstable for rtorrent 0.16.3, roll back to stable once backported 21 22 package = pkgs-unstable.rtorrent; 22 23 23 24 configText = ''
+1 -1
packages/server/web/vaultwarden.nix
··· 2 2 hosts ? [ ], 3 3 }: 4 4 5 - { flakeLib, pkgs-unstable, ... }: 5 + { flakeLib, ... }: 6 6 7 7 let 8 8 socket = "/run/vaultwarden/vaultwarden.sock";