yep, more dotfiles
1name: { description, profile, keys ? [ ], user ? { } }: 2 3{ self 4, pkgs 5, lib 6, isDarwin 7, ... 8}: 9 10let 11 inherit (self.inputs) home-manager; 12 inherit (self.flake-lib) specialModuleArgs; 13in 14{ 15 imports = [ 16 (if isDarwin then home-manager.darwinModules.home-manager else home-manager.nixosModules.home-manager) 17 ]; 18 19 options = { 20 local.user.username = lib.mkOption { 21 type = with lib.types; str; 22 description = "The name of the main user account"; 23 }; 24 }; 25 26 config = { 27 local.user.username = name; 28 29 users.users.${name} = { 30 inherit description; 31 shell = pkgs.fish; 32 33 openssh.authorizedKeys.keys = keys; 34 } // (if isDarwin then { 35 home = "/Users/${name}"; 36 } else { 37 home = "/home/${name}"; 38 extraGroups = [ 39 "wheel" # sudo access 40 "networkmanager" # needed for nm 41 ]; 42 isNormalUser = true; 43 }) // user; 44 45 home-manager = { 46 extraSpecialArgs = specialModuleArgs pkgs; 47 48 useUserPackages = false; 49 useGlobalPkgs = true; 50 51 users.${name} = { ... }: { 52 imports = [ 53 ../../home-manager/profiles/${profile}.nix 54 ../../home-manager/fragments/default.nix 55 ../../home-manager/options.nix 56 ]; 57 }; 58 }; 59 }; 60}