refactor(user): use configurable default roles

This commit is contained in:
Giulio De Pasquale 2025-08-13 10:39:08 +01:00
parent 639a43c7d4
commit 6a804dded9

View File

@ -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 let
roles_mod = (map (r: mkHomeRole r) roles); roles_mod = (map (r: mkHomeRole r) roles);
defaults_mod = (map (r: mkHomeRole r) defaultRoles);
in in
{ {
fileSystems."/home/${name}/Downloads" = pkgs.lib.mkIf stdenv.isLinux { fileSystems."/home/${name}/Downloads" = pkgs.lib.mkIf stdenv.isLinux {
@ -27,16 +35,13 @@
programs.zsh.enable = true; programs.zsh.enable = true;
home-manager.users.${name}.imports = [ home-manager.users.${name}.imports = defaults_mod ++ roles_mod;
(mkHomeRole "common")
(mkHomeRole "zsh")
(mkHomeRole "aichat")
] ++ roles_mod;
}; };
mkHMUser = { name, roles ? [ ] }: mkHMUser = { name, roles ? [ ], defaultRoles ? defaultHMUserRoles }:
let let
roles_mod = (map (r: mkHomeRole r) roles); roles_mod = (map (r: mkHomeRole r) roles);
defaults_mod = (map (r: mkHomeRole r) defaultRoles);
in in
home-manager.lib.homeManagerConfiguration { home-manager.lib.homeManagerConfiguration {
inherit pkgs; inherit pkgs;
@ -48,8 +53,6 @@
if stdenv.isLinux then "/home/${name}" else "/Users/${name}"; if stdenv.isLinux then "/home/${name}" else "/Users/${name}";
}; };
} }
(mkHomeRole "common") ] ++ defaults_mod ++ roles_mod;
(mkHomeRole "aichat")
] ++ roles_mod;
}; };
} }