nixos/lib/host.nix

46 lines
1.2 KiB
Nix
Raw Normal View History

{ pkgs, nixpkgs, nixos-unstable, unstable, 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:
mkUser {
2023-02-11 02:29:48 +00:00
name = u.user;
roles = u.roles;
})
users);
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 {
2022-10-13 17:08:08 +01:00
inherit system;
modules = [
{
imports = users_mod ++ roles_mod ++ add_imports ++ [
(mkSysRole "common")
(mkSysRole "acme")
];
2022-10-13 17:08:08 +01:00
nixpkgs = { inherit pkgs; };
nix.nixPath = [ "nixpkgs=${nixpkgs}" "unstable=${nixos-unstable}" ];
nix.registry.nixpkgs.flake = nixpkgs;
nix.registry.unstable.flake = nixos-unstable;
users.users.root = { shell = pkgs.zsh; };
home-manager = {
users.root.imports = [ (mkHomeRole "common") ];
2022-10-13 17:08:08 +01:00
extraSpecialArgs.unstable = unstable;
useGlobalPkgs = true;
};
2022-12-01 13:30:14 +00:00
system.stateVersion = "22.11";
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
}