diff --git a/extern/default.nix b/extern/default.nix index 5484eb4e..66f4e782 100644 --- a/extern/default.nix +++ b/extern/default.nix @@ -24,4 +24,7 @@ userModules = [ ]; + # passed to all home-manager modules + userSpecialArgs = { + }; } diff --git a/hosts/default.nix b/hosts/default.nix index 1e8dec35..930f5f23 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -39,6 +39,7 @@ let useGlobalPkgs = true; useUserPackages = true; + extraSpecialArgs = extern.userSpecialArgs // { suites = suites.user; }; sharedModules = extern.userModules ++ (builtins.attrValues self.homeModules); }; @@ -71,7 +72,7 @@ let flakeModules = { imports = builtins.attrValues self.nixosModules ++ extern.modules; }; }; - specialArgs = extern.specialArgs // { inherit suites; }; + specialArgs = extern.specialArgs // { suites = suites.system; }; mkHostConfig = hostName: let diff --git a/suites/default.nix b/suites/default.nix index 7eb11e50..e1b7d668 100644 --- a/suites/default.nix +++ b/suites/default.nix @@ -3,6 +3,7 @@ let inherit (lib) dev; profiles = dev.os.mkProfileAttrs (toString ../profiles); + userProfiles = dev.os.mkProfileAttrs (toString ../users/profiles); users = dev.os.mkProfileAttrs (toString ../users); allProfiles = @@ -17,7 +18,18 @@ let suites = with profiles; rec { base = [ users.nixos users.root ]; }; + + # available as 'suites' within the home-manager configuration + userSuites = with userProfiles; rec { + base = [ direnv git ]; + }; + in -lib.mapAttrs (_: v: dev.os.profileMap v) suites // { - inherit allProfiles allUsers; +{ + system = lib.mapAttrs (_: v: dev.os.profileMap v) suites // { + inherit allProfiles allUsers; + }; + user = lib.mapAttrs (_: v: dev.os.profileMap v) userSuites // { + allProfiles = userProfiles; + }; } diff --git a/users/nixos/default.nix b/users/nixos/default.nix index 38bf20fd..700467b9 100644 --- a/users/nixos/default.nix +++ b/users/nixos/default.nix @@ -1,7 +1,7 @@ { ... }: { - home-manager.users.nixos = { - imports = [ ../profiles/git ../profiles/direnv ]; + home-manager.users.nixos = { suites, ... }: { + imports = suites.base; }; users.users.nixos = {