diff options
Diffstat (limited to 'util/user.nix')
| -rw-r--r-- | util/user.nix | 109 |
1 files changed, 25 insertions, 84 deletions
diff --git a/util/user.nix b/util/user.nix index 3953f11..c120e31 100644 --- a/util/user.nix +++ b/util/user.nix @@ -1,92 +1,33 @@ -{home-manager, ...}: let - commonHM = { - nixpkgs.config = { - allowUnfree = true; - allowUnsupportedSystem = true; - }; - xdg.configFile."nixpkgs/config.nix".text = '' - { - allowUnfree = true; - } - ''; - }; -in { +{ + lib, + inputs, + mapFilterDirs, + ... +}: rec { mkHMUser = { username, - channel, - modules ? [], + pkgs, stateVersion ? "22.11", - system ? "x86_64-linux", - extraSpecialArgs ? {}, - }: - home-manager.lib.homeManagerConfiguration { - pkgs = channel.legacyPackages.${system}; - inherit extraSpecialArgs; - modules = - [ - ../users/${username}/home.nix - ({pkgs, ...}: - { - home = { - inherit username stateVersion; - homeDirectory = "/home/${username}"; - }; - - programs.home-manager.enable = true; - nix = { - package = pkgs.nixFlakes; - settings.experimental-features = ["nix-command" "flakes"]; - }; - } - // commonHM) - ] - ++ modules; - }; - mkUser = { - username, - extraGroups ? [], - extraModules ? [], - extraSpecialArgs ? {}, - hashedPassword, - hm ? false, - shell, - stateVersion, - system ? "x86_64-linux", }: - [ - { - users.users.${username} = { - inherit extraGroups hashedPassword shell; - isNormalUser = true; - }; - } - ] - ++ extraModules - ++ ( - if hm - then [ - home-manager.nixosModules.home-manager + inputs.home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [ + ../users/${username}/home.nix { - home-manager = { - inherit extraSpecialArgs; - useGlobalPkgs = true; - useUserPackages = true; - users.${username} = - { - imports = [ - ../users/${username}/home.nix - ]; - home.stateVersion = stateVersion; - } - // commonHM - // ( - if builtins.match ".*-linux" system != null - then {systemd.user.startServices = true;} - else {} - ); + home = { + inherit username stateVersion; + homeDirectory = "/home/${username}"; }; + + programs.home-manager.enable = true; } - ] - else [] - ); + ]; + }; + + mapHMUsers = users: + mapFilterDirs ../users (n: v: v == "directory" && n != "root") (username: _: + mkHMUser { + inherit username; + inherit (users.${username}) pkgs stateVersion; + }); } |
