summaryrefslogtreecommitdiff
path: root/lib/user.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/user.nix')
-rw-r--r--lib/user.nix40
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/user.nix b/lib/user.nix
new file mode 100644
index 0000000..6377faa
--- /dev/null
+++ b/lib/user.nix
@@ -0,0 +1,40 @@
+{
+ inputs,
+ mapFilterDirs,
+}: rec {
+ mkHMUser = {
+ username,
+ pkgs,
+ stateVersion ? "22.11",
+ modules ? [],
+ }:
+ inputs.home-manager.lib.homeManagerConfiguration {
+ inherit pkgs;
+ modules =
+ [
+ ../users/${username}/home.nix
+ {
+ home = {
+ inherit username stateVersion;
+ homeDirectory = "/home/${username}";
+ };
+
+ programs.home-manager.enable = true;
+ }
+ ]
+ ++ modules;
+ };
+
+ mapHMUsers = inputs: system: let
+ users = import ../users inputs system;
+ in
+ mapFilterDirs ../users (n: v: v == "directory" && n != "secrets") (username: _:
+ mkHMUser {
+ inherit username;
+ inherit (users.${username}) pkgs stateVersion;
+ modules =
+ if builtins.hasAttr "modules" users.${username}
+ then users.${username}.modules
+ else [];
+ });
+}