From fa7cb55c780d528e3506bbbe5313a974122b60bc Mon Sep 17 00:00:00 2001 From: John Ogle Date: Mon, 17 Nov 2025 16:40:11 -0800 Subject: [PATCH] [nix-deck] Use NixOS unstable for better Jovian compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Switch nix-deck to use nixpkgs-unstable and unstable home-manager/plasma-manager - Remove jovian-compat.nix shim (not needed on unstable) - Add bitwarden-desktop compatibility overlay for stable/unstable coexistence - Update hardware-configuration.nix with actual Steam Deck hardware detection - Add 8GB swap file configuration - Configure AMD CPU microcode updates This allows nix-deck to work with the latest Jovian-NixOS while keeping other machines on stable 25.05. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- flake.lock | 80 +++++++++++++++----- flake.nix | 52 +++++++++++-- home/roles/desktop/default.nix | 2 +- machines/nix-deck/hardware-configuration.nix | 38 +++++++--- 4 files changed, 137 insertions(+), 35 deletions(-) diff --git a/flake.lock b/flake.lock index e3c382e..2e99648 100644 --- a/flake.lock +++ b/flake.lock @@ -57,11 +57,32 @@ "type": "github" } }, + "home-manager-unstable": { + "inputs": { + "nixpkgs": [ + "nixpkgs-unstable" + ] + }, + "locked": { + "lastModified": 1763416652, + "narHash": "sha256-8EBEEvtzQ11LCxpQHMNEBQAGtQiCu/pqP9zSovDSbNM=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "ea164b7c9ccdc2321379c2ff78fd4317b4c41312", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "home-manager", + "type": "github" + } + }, "jovian": { "inputs": { "nix-github-actions": "nix-github-actions", "nixpkgs": [ - "nixpkgs" + "nixpkgs-unstable" ] }, "locked": { @@ -85,11 +106,11 @@ ] }, "locked": { - "lastModified": 1759509947, - "narHash": "sha256-4XifSIHfpJKcCf5bZZRhj8C4aCpjNBaE3kXr02s4rHU=", + "lastModified": 1762912391, + "narHash": "sha256-4hpBE7bGd24SfD28rzMdUGXsLsNEYxCCrTipFdoqoNM=", "owner": "nix-darwin", "repo": "nix-darwin", - "rev": "000eadb231812ad6ea6aebd7526974aaf4e79355", + "rev": "d76299b2cd01837c4c271a7b5186e3d5d8ebd126", "type": "github" }, "original": { @@ -127,11 +148,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1762251193, - "narHash": "sha256-CmSddz8e2kM+ITbYutluhKZyXXwI9Sg2lf7XXSvc8oY=", + "lastModified": 1763385941, + "narHash": "sha256-99CBNgyMvg3Zu/hxqixtShevrF4Kfr/qjtizQ6oseVI=", "owner": "nix-community", "repo": "NixOS-WSL", - "rev": "e001844d4553aef268f97b32d3a825b6370eed91", + "rev": "cc6483354b236c2fc95cc1d4ba1f0f40b7345e69", "type": "github" }, "original": { @@ -143,11 +164,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1761907660, - "narHash": "sha256-kJ8lIZsiPOmbkJypG+B5sReDXSD1KGu2VEPNqhRa/ew=", + "lastModified": 1762977756, + "narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2fb006b87f04c4d3bdf08cfdbc7fab9c13d94a15", + "rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55", "type": "github" }, "original": { @@ -159,11 +180,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1762596750, - "narHash": "sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV+3DSADBX7/9YQ=", + "lastModified": 1763283776, + "narHash": "sha256-Y7TDFPK4GlqrKrivOcsHG8xSGqQx3A6c+i7novT85Uk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b6a8526db03f735b89dd5ff348f53f752e7ddc8e", + "rev": "50a96edd8d0db6cc8db57dab6bb6d6ee1f3dc49a", "type": "github" }, "original": { @@ -175,11 +196,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1762498405, - "narHash": "sha256-Zg/SCgCaAioc0/SVZQJxuECGPJy+OAeBcGeA5okdYDc=", + "lastModified": 1763049705, + "narHash": "sha256-A5LS0AJZ1yDPTa2fHxufZN++n8MCmtgrJDtxFxrH4S8=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6faeb062ee4cf4f105989d490831713cc5a43ee1", + "rev": "3acb677ea67d4c6218f33de0db0955f116b7588c", "type": "github" }, "original": { @@ -212,16 +233,41 @@ "type": "github" } }, + "plasma-manager-unstable": { + "inputs": { + "home-manager": [ + "home-manager-unstable" + ], + "nixpkgs": [ + "nixpkgs-unstable" + ] + }, + "locked": { + "lastModified": 1762784320, + "narHash": "sha256-odsk96Erywk5hs0dhArF38zb7Oe0q6LZ70gXbxAPKno=", + "owner": "nix-community", + "repo": "plasma-manager", + "rev": "7911a0f8a44c7e8b29d031be3149ee8943144321", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "plasma-manager", + "type": "github" + } + }, "root": { "inputs": { "google-cookie-retrieval": "google-cookie-retrieval", "home-manager": "home-manager", + "home-manager-unstable": "home-manager-unstable", "jovian": "jovian", "nix-darwin": "nix-darwin", "nixos-wsl": "nixos-wsl", "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable", - "plasma-manager": "plasma-manager" + "plasma-manager": "plasma-manager", + "plasma-manager-unstable": "plasma-manager-unstable" } } }, diff --git a/flake.nix b/flake.nix index 856081e..3d4d47c 100644 --- a/flake.nix +++ b/flake.nix @@ -16,12 +16,23 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + home-manager-unstable = { + url = "github:nix-community/home-manager/master"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; + }; + plasma-manager = { url = "github:nix-community/plasma-manager"; inputs.nixpkgs.follows = "nixpkgs"; inputs.home-manager.follows = "home-manager"; }; + plasma-manager-unstable = { + url = "github:nix-community/plasma-manager"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; + inputs.home-manager.follows = "home-manager-unstable"; + }; + google-cookie-retrieval = { url = "git+https://git.johnogle.info/johno/google-cookie-retrieval.git"; inputs.nixpkgs.follows = "nixpkgs"; @@ -29,7 +40,7 @@ jovian = { url = "github:Jovian-Experiments/Jovian-NixOS"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; }; }; @@ -38,7 +49,6 @@ ./roles ] ++ [ inputs.home-manager.nixosModules.home-manager - ./roles/jovian-compat.nix # Compatibility shim for Jovian on stable NixOS inputs.jovian.nixosModules.jovian { nixpkgs.overlays = [ @@ -48,6 +58,8 @@ config.allowUnfree = true; }; custom = prev.callPackage ./packages {}; + # Compatibility: bitwarden renamed to bitwarden-desktop in unstable + bitwarden-desktop = prev.bitwarden-desktop or prev.bitwarden; }) ]; home-manager.useGlobalPkgs = true; @@ -60,6 +72,34 @@ }; } ]; + # Modules for unstable-based systems (like nix-deck) + nixosModulesUnstable = [ + ./roles + ] ++ [ + inputs.home-manager-unstable.nixosModules.home-manager + inputs.jovian.nixosModules.jovian + { + nixpkgs.overlays = [ + (final: prev: { + unstable = import nixpkgs-unstable { + system = prev.system; + config.allowUnfree = true; + }; + custom = prev.callPackage ./packages {}; + # Compatibility: bitwarden renamed to bitwarden-desktop in unstable + bitwarden-desktop = prev.bitwarden-desktop or prev.bitwarden; + }) + ]; + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.sharedModules = [ + inputs.plasma-manager-unstable.homeModules.plasma-manager + ]; + home-manager.extraSpecialArgs = { + globalInputs = inputs; + }; + } + ]; darwinModules = [ ./roles/darwin.nix ] ++ [ @@ -72,6 +112,8 @@ config.allowUnfree = true; }; custom = prev.callPackage ./packages {}; + # Compatibility: bitwarden renamed to bitwarden-desktop in unstable + bitwarden-desktop = prev.bitwarden-desktop or prev.bitwarden; }) ]; home-manager.useGlobalPkgs = true; @@ -149,10 +191,10 @@ ]; }; - # Steam Deck configuration - nixosConfigurations.nix-deck = nixpkgs.lib.nixosSystem rec { + # Steam Deck configuration (using unstable for better Jovian compatibility) + nixosConfigurations.nix-deck = nixpkgs-unstable.lib.nixosSystem rec { system = "x86_64-linux"; - modules = nixosModules ++ [ + modules = nixosModulesUnstable ++ [ ./machines/nix-deck/configuration.nix { home-manager.users.johno = import ./home/home-desktop.nix; diff --git a/home/roles/desktop/default.nix b/home/roles/desktop/default.nix index 72a576d..f900ec5 100644 --- a/home/roles/desktop/default.nix +++ b/home/roles/desktop/default.nix @@ -13,7 +13,7 @@ in config = mkIf cfg.enable { home.packages = with pkgs; [ # Desktop applications - bitwarden + bitwarden-desktop dunst keepassxc unstable.ghostty diff --git a/machines/nix-deck/hardware-configuration.nix b/machines/nix-deck/hardware-configuration.nix index 32c3d19..9c3e3d6 100644 --- a/machines/nix-deck/hardware-configuration.nix +++ b/machines/nix-deck/hardware-configuration.nix @@ -1,26 +1,35 @@ -# This is a placeholder hardware configuration for the Steam Deck. -# Run `nixos-generate-config --show-hardware-config` on the actual device -# to generate the real hardware configuration, then merge the jovian settings below. +# Hardware configuration for Steam Deck (nix-deck) +# Generated from nixos-generate-config on 2025-11-17 { config, lib, pkgs, modulesPath, ... }: { - imports = [ ]; + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; - # Steam Deck specific hardware configuration + # Steam Deck specific hardware configuration (Jovian) jovian.devices.steamdeck = { enable = true; autoUpdate = false; # Set to true if you want automatic firmware updates }; - # TODO: Replace this with actual hardware configuration from the Steam Deck - # Run `nixos-generate-config --show-hardware-config` on the device and merge it here - - # Minimal placeholder configuration to allow flake to build - boot.initrd.availableKernelModules = [ ]; + # Kernel modules detected by nixos-generate-config + boot.initrd.availableKernelModules = [ + "nvme" + "xhci_pci" + "usb_storage" + "uas" + "usbhid" + "sd_mod" + "sdhci_pci" + ]; boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + # IMPORTANT: Update these filesystem configurations based on your actual partition layout + # The configuration below is a placeholder - adjust according to how you partitioned the disk fileSystems."/" = { device = "/dev/disk/by-label/nixos"; fsType = "ext4"; @@ -31,7 +40,12 @@ fsType = "vfat"; }; - swapDevices = [ ]; + swapDevices = [{ + device = "/swapfile"; + size = 8192; # 8GB swap file + }]; + # AMD CPU microcode updates nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; }