Streamline creation of user modules

This commit is contained in:
Manuel Thalmann 2024-05-11 21:35:13 +02:00
parent 8ca8b885e2
commit 6933014d75
3 changed files with 38 additions and 40 deletions

View file

@ -126,24 +126,20 @@
"${username}@${hostname}" = home-manager.lib.homeManagerConfiguration {
modules =
let
getUserConfig = pkgs.callPackage (import ./lib/utils/user-config.nix);
userConfigPath = getUserConfig { inherit hostname username; };
in [
(
{ pkgs, ... }: {
config._module.args = {
machine = machine // {
name = hostname;
config = machineConfig;
};
getUserModule = pkgs.callPackage (import ./lib/utils/user-module.nix);
in
getUserModule {
machine = machine // {
name = hostname;
config = machineConfig;
};
user = {
name = username;
} // user;
};
})
sops-nix.homeManagerModules.sops
] ++ (lib.optional (userConfigPath != null) userConfigPath);
user = {
name = username;
} // user;
} ++ [
sops-nix.homeManagerModules.sops
];
};
})
machineConfig.users)

View file

@ -37,29 +37,13 @@
users =
lib.attrsets.concatMapAttrs (username: user:
let
hostname = machine.name;
getUserConfig = pkgs.callPackage (import ./utils/user-config.nix);
configPath = getUserConfig { inherit hostname username; };
in
if (configPath != null)
then {
${username} = { pkgs, ... }: {
imports = [
configPath
];
config = {
_module.args = {
inherit machine;
user = {
name = username;
} // user;
};
};
};
}
else {})
getUserModule = pkgs.callPackage (import ./utils/user-module.nix);
in {
${username} = (getUserModule {
inherit machine;
user = { name = username; } // user;
});
})
machine.config.users;
};

18
lib/utils/user-module.nix Normal file
View file

@ -0,0 +1,18 @@
{ lib, pkgs, machine, user }:
let
hostname = machine.name;
username = user.name;
getUserConfig = pkgs.callPackage (import ./user-config.nix);
userConfigPath = getUserConfig { inherit hostname username; };
in { pkgs, ... }: {
imports = lib.optional (userConfigPath != null) userConfigPath;
config = {
_module.args = {
inherit
machine
user
;
};
};
}