diff --git a/lib/user.nix b/lib/user.nix index cecec0f..7e6bc01 100644 --- a/lib/user.nix +++ b/lib/user.nix @@ -5,10 +5,18 @@ , ... }: +let + # Default roles that all NixOS users get + defaultSystemUserRoles = [ "common" "zsh" "aichat" ]; + + # Default roles for standalone home-manager configs + defaultHMUserRoles = [ "common" "aichat" ]; +in { - mkUser = { name, roles ? [ ] }: + mkUser = { name, roles ? [ ], defaultRoles ? defaultSystemUserRoles }: let roles_mod = (map (r: mkHomeRole r) roles); + defaults_mod = (map (r: mkHomeRole r) defaultRoles); in { fileSystems."/home/${name}/Downloads" = pkgs.lib.mkIf stdenv.isLinux { @@ -27,16 +35,13 @@ programs.zsh.enable = true; - home-manager.users.${name}.imports = [ - (mkHomeRole "common") - (mkHomeRole "zsh") - (mkHomeRole "aichat") - ] ++ roles_mod; + home-manager.users.${name}.imports = defaults_mod ++ roles_mod; }; - mkHMUser = { name, roles ? [ ] }: + mkHMUser = { name, roles ? [ ], defaultRoles ? defaultHMUserRoles }: let roles_mod = (map (r: mkHomeRole r) roles); + defaults_mod = (map (r: mkHomeRole r) defaultRoles); in home-manager.lib.homeManagerConfiguration { inherit pkgs; @@ -48,8 +53,6 @@ if stdenv.isLinux then "/home/${name}" else "/Users/${name}"; }; } - (mkHomeRole "common") - (mkHomeRole "aichat") - ] ++ roles_mod; + ] ++ defaults_mod ++ roles_mod; }; }