# Lifted from: # https://github.com/Doc-Steve/dendritic-design-with-flake-parts/blob/69edacdb5a4a6ca71d649bb8eb62cf8c630c8627/modules/users/bob%20%5BNDn%5D/bob.nix#L8 { self, inputs, ... }: { config.flake.factory.user = { username, isAdmin ? false, noPassword ? false, # homeImports ? [ ], # homePackages ? [ ], }: { nixos."${username}" = { config, lib, pkgs, ... }: { imports = [ inputs.home-manager.nixosModules.home-manager ]; users.users."${username}" = { isNormalUser = true; home = "/home/${username}"; shell = lib.mkIf config.programs.zsh.enable pkgs.zsh; extraGroups = [ "input" "networkmanager" ] ++ lib.optional isAdmin "wheel" ++ lib.optional config.virtualisation.docker.enable "docker" ++ lib.optional (isAdmin && config.services.forgejo.enable) config.services.forgejo.group ++ lib.optional (isAdmin && config.services.postgresql.enable) config.services.postgresql.group; }; security.sudo-rs.enable = lib.mkIf isAdmin true; home-manager.useGlobalPkgs = true; # https://github.com/Doc-Steve/dendritic-design-with-flake-parts/wiki/Dendritic_Aspects#multi-context-aspect home-manager.users."${username}" = { imports = [ self.modules.homeManager."${username}" ]; home.username = "${username}"; home.homeDirectory = "/home/${username}"; # home.packages = homePackages; }; }; }; }