2023-02-14 20:20:01 +00:00
|
|
|
{ pkgs
|
|
|
|
, nixpkgs
|
2023-02-14 20:30:37 +00:00
|
|
|
, unstablePkgs
|
2023-02-14 20:20:01 +00:00
|
|
|
, home-manager
|
|
|
|
, system
|
|
|
|
, mkHomeRole
|
|
|
|
, mkSysRole
|
|
|
|
, mkUser
|
|
|
|
, ...
|
|
|
|
}:
|
2021-10-06 18:17:06 +01:00
|
|
|
|
|
|
|
{
|
2022-10-13 17:08:08 +01:00
|
|
|
mkHost = { name, users, roles ? [ ], imports ? [ ] }:
|
|
|
|
let
|
2023-02-11 02:29:48 +00:00
|
|
|
users_mod = (map
|
|
|
|
(u:
|
2023-02-14 20:14:30 +00:00
|
|
|
mkUser {
|
2023-02-11 02:29:48 +00:00
|
|
|
name = u.user;
|
|
|
|
roles = u.roles;
|
|
|
|
})
|
|
|
|
users);
|
2023-02-14 20:14:30 +00:00
|
|
|
roles_mod = (map (r: mkSysRole r) roles);
|
2022-10-13 17:08:08 +01:00
|
|
|
add_imports = imports;
|
2023-02-11 02:29:48 +00:00
|
|
|
in
|
|
|
|
nixpkgs.lib.nixosSystem {
|
2023-02-19 06:02:00 +00:00
|
|
|
inherit system pkgs;
|
2022-10-13 17:08:08 +01:00
|
|
|
|
|
|
|
modules = [
|
|
|
|
{
|
2023-05-28 21:45:49 +01:00
|
|
|
imports = users_mod ++
|
|
|
|
roles_mod ++
|
|
|
|
add_imports ++ [
|
2023-02-14 20:14:30 +00:00
|
|
|
(mkSysRole "common")
|
|
|
|
(mkSysRole "acme")
|
2023-05-28 21:45:49 +01:00
|
|
|
(mkUser { name = "root"; roles = [ ]; })
|
2023-02-14 20:14:30 +00:00
|
|
|
];
|
2023-02-14 20:20:01 +00:00
|
|
|
|
2022-10-13 17:08:08 +01:00
|
|
|
home-manager = {
|
2023-02-14 20:30:37 +00:00
|
|
|
extraSpecialArgs.unstablePkgs = unstablePkgs;
|
2022-10-13 17:08:08 +01:00
|
|
|
useGlobalPkgs = true;
|
|
|
|
};
|
2023-02-14 20:20:01 +00:00
|
|
|
|
2023-05-27 23:16:46 +01:00
|
|
|
system.stateVersion = "23.05";
|
2022-10-13 17:08:08 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
home-manager.nixosModules.home-manager
|
|
|
|
../hosts/${name}/default.nix
|
|
|
|
];
|
|
|
|
};
|
2021-10-06 18:17:06 +01:00
|
|
|
}
|