diff --git a/flake.nix b/flake.nix index a0b0422..e9c8f20 100644 --- a/flake.nix +++ b/flake.nix @@ -56,94 +56,75 @@ }; outputs = { self, nixpkgs, nixpkgs-unstable, nixos-wsl, ... } @ inputs: let + # Shared overlay function to reduce duplication across module sets + # Parameters: + # unstableOverlays: Additional overlays to apply when importing nixpkgs-unstable + mkBaseOverlay = { unstableOverlays ? [] }: (final: prev: { + unstable = import nixpkgs-unstable { + system = prev.stdenv.hostPlatform.system; + config.allowUnfree = true; + overlays = unstableOverlays; + }; + custom = prev.callPackage ./packages {}; + # Compatibility: bitwarden renamed to bitwarden-desktop in unstable + bitwarden-desktop = prev.bitwarden-desktop or prev.bitwarden; + }); + + # Shared home-manager configuration factory + # Parameters: + # sharedModules: Additional modules to include in home-manager.sharedModules + mkHomeManagerConfig = { sharedModules ? [] }: { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.sharedModules = sharedModules ++ [ + inputs.nix-doom-emacs-unstraightened.homeModule + ]; + home-manager.extraSpecialArgs = { + globalInputs = inputs; + }; + }; + nixosModules = [ ./roles - ] ++ [ inputs.home-manager.nixosModules.home-manager { - nixpkgs.overlays = [ - (final: prev: { - unstable = import nixpkgs-unstable { - system = prev.stdenv.hostPlatform.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.homeModules.plasma-manager - inputs.nix-doom-emacs-unstraightened.homeModule - ]; - home-manager.extraSpecialArgs = { - globalInputs = inputs; - }; + nixpkgs.overlays = [ (mkBaseOverlay {}) ]; } + (mkHomeManagerConfig { + sharedModules = [ inputs.plasma-manager.homeModules.plasma-manager ]; + }) ]; + # 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.stdenv.hostPlatform.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 - inputs.nix-doom-emacs-unstraightened.homeModule - ]; - home-manager.extraSpecialArgs = { - globalInputs = inputs; - }; + nixpkgs.overlays = [ (mkBaseOverlay {}) ]; } + (mkHomeManagerConfig { + sharedModules = [ inputs.plasma-manager-unstable.homeModules.plasma-manager ]; + }) ]; + darwinModules = [ ./roles/darwin.nix - ] ++ [ inputs.home-manager.darwinModules.home-manager { nixpkgs.overlays = [ - (final: prev: { - unstable = import nixpkgs-unstable { - system = prev.stdenv.hostPlatform.system; - config.allowUnfree = true; - overlays = [ - # Override claude-code in unstable to use our custom GCS-based build - # (needed for corporate networks that block npm registry) - (ufinal: uprev: { - claude-code = prev.custom.claude-code or (prev.callPackage ./packages {}).claude-code; - }) - ]; - }; - custom = prev.callPackage ./packages {}; - # Compatibility: bitwarden renamed to bitwarden-desktop in unstable - bitwarden-desktop = prev.bitwarden-desktop or prev.bitwarden; + (mkBaseOverlay { + # Override claude-code in unstable to use our custom GCS-based build + # (needed for corporate networks that block npm registry) + unstableOverlays = [ + (ufinal: uprev: { + claude-code = uprev.callPackage ./packages/claude-code {}; + }) + ]; }) ]; - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.sharedModules = [ - inputs.nix-doom-emacs-unstraightened.homeModule - ]; - home-manager.extraSpecialArgs = { - globalInputs = inputs; - }; } + (mkHomeManagerConfig { sharedModules = []; }) ]; in {