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 {
|
||||
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)
|
||||
|
|
|
@ -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
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