{ pkgs, home-manager, mkHomeRole, ... }: { mkUser = { name, roles ? [ ] }: let roles_mod = (map (r: mkHomeRole r) roles); in { fileSystems."/home/${name}/Downloads" = { device = "tmpfs"; fsType = "tmpfs"; options = [ "size=3G" ]; }; users = { users.${name} = { isNormalUser = name != "root"; extraGroups = [ "wheel" "plugdev" ]; shell = pkgs.zsh; }; }; programs.zsh.enable = true; home-manager.users.${name}.imports = [ (mkHomeRole "common") (mkHomeRole "zsh") ] ++ roles_mod; }; mkHMUser = { name, roles ? [ ] }: let roles_mod = (map (r: mkHomeRole r) roles); in home-manager.lib.homeManagerConfiguration { inherit pkgs; modules = [ { home = { username = name; homeDirectory = if pkgs.stdenv.isLinux then "/home/${name}" else "/Users/${name}"; }; } (mkHomeRole "common") ] ++ roles_mod; }; }