{ lib }: { # This is only used for home-manager users without a NixOS user counterpart. mapHomeManagerUser = user: settings: let homeDirectory = "/home/${user}"; defaultUserConfig = { extraGroups = lib.mkDefault [ "wheel" ]; createHome = lib.mkDefault true; home = lib.mkDefault homeDirectory; isNormalUser = lib.mkForce true; }; in ({ lib, ... }: { home-manager.users."${user}" = { ... }: { imports = [ { home.username = user; home.homeDirectory = homeDirectory; } ../../configs/home-manager/${user} ]; }; users.users."${user}" = lib.mkMerge [ defaultUserConfig settings ]; }); /* Returns the file path of the given config of the given environment. Type: getConfig :: String -> String -> Path Example: getConfig "home-manager" "foo-dogsquared" => ../configs/home-manager/foo-dogsquared */ getConfig = type: config: ../../configs/${type}/${config}; /* Returns the file path of the given user subpart of the given environment. Only certain environments such as NixOS have this type of setup. Type: getConfig :: String -> String -> Path Example: getUser "nixos" "foo-dogsquared" => ../configs/nixos/_users/foo-dogsquared */ getUser = type: user: ../../configs/${type}/_users/${user}; }