Streamline creation of user modules
This commit is contained in:
parent
8ca8b885e2
commit
6933014d75
3 changed files with 38 additions and 40 deletions
30
flake.nix
30
flake.nix
|
@ -126,24 +126,20 @@
|
||||||
"${username}@${hostname}" = home-manager.lib.homeManagerConfiguration {
|
"${username}@${hostname}" = home-manager.lib.homeManagerConfiguration {
|
||||||
modules =
|
modules =
|
||||||
let
|
let
|
||||||
getUserConfig = pkgs.callPackage (import ./lib/utils/user-config.nix);
|
getUserModule = pkgs.callPackage (import ./lib/utils/user-module.nix);
|
||||||
userConfigPath = getUserConfig { inherit hostname username; };
|
in
|
||||||
in [
|
getUserModule {
|
||||||
(
|
machine = machine // {
|
||||||
{ pkgs, ... }: {
|
name = hostname;
|
||||||
config._module.args = {
|
config = machineConfig;
|
||||||
machine = machine // {
|
};
|
||||||
name = hostname;
|
|
||||||
config = machineConfig;
|
|
||||||
};
|
|
||||||
|
|
||||||
user = {
|
user = {
|
||||||
name = username;
|
name = username;
|
||||||
} // user;
|
} // user;
|
||||||
};
|
} ++ [
|
||||||
})
|
sops-nix.homeManagerModules.sops
|
||||||
sops-nix.homeManagerModules.sops
|
];
|
||||||
] ++ (lib.optional (userConfigPath != null) userConfigPath);
|
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
machineConfig.users)
|
machineConfig.users)
|
||||||
|
|
|
@ -37,29 +37,13 @@
|
||||||
users =
|
users =
|
||||||
lib.attrsets.concatMapAttrs (username: user:
|
lib.attrsets.concatMapAttrs (username: user:
|
||||||
let
|
let
|
||||||
hostname = machine.name;
|
getUserModule = pkgs.callPackage (import ./utils/user-module.nix);
|
||||||
getUserConfig = pkgs.callPackage (import ./utils/user-config.nix);
|
in {
|
||||||
configPath = getUserConfig { inherit hostname username; };
|
${username} = (getUserModule {
|
||||||
in
|
inherit machine;
|
||||||
if (configPath != null)
|
user = { name = username; } // user;
|
||||||
then {
|
});
|
||||||
${username} = { pkgs, ... }: {
|
})
|
||||||
imports = [
|
|
||||||
configPath
|
|
||||||
];
|
|
||||||
|
|
||||||
config = {
|
|
||||||
_module.args = {
|
|
||||||
inherit machine;
|
|
||||||
|
|
||||||
user = {
|
|
||||||
name = username;
|
|
||||||
} // user;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else {})
|
|
||||||
machine.config.users;
|
machine.config.users;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
18
lib/utils/user-module.nix
Normal file
18
lib/utils/user-module.nix
Normal 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
|
||||||
|
;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue