Files
matej.nix/lib/mkHost.nix
2026-02-21 12:56:46 +01:00

51 lines
1.2 KiB
Nix

{
nixpkgs,
overlays,
inputs,
}:
name:
{
system,
users ? [ ],
}:
let
hostConfig = ../hosts/${name}/configuration.nix;
hostHWConfig = ../hosts/${name}/hardware-configuration.nix;
hasHWConfig = builtins.pathExists hostHWConfig;
# Load NixOS-level user config (account, groups, SSH keys)
userNixosConfigs = map (user: ../users/${user}/nixos.nix) (
builtins.filter (user: builtins.pathExists ../users/${user}/nixos.nix) users
);
# Load home-manager user config
userHMConfigs = nixpkgs.lib.genAttrs users (user: import ../users/${user}/home-manager.nix);
in
nixpkgs.lib.nixosSystem {
inherit system;
modules = [
../nix.nix
{ nixpkgs.overlays = overlays; }
{ nixpkgs.config.allowUnfree = true; }
hostConfig
]
++ nixpkgs.lib.optional hasHWConfig hostHWConfig
++ userNixosConfigs
++ [
inputs.home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
home-manager.users = userHMConfigs;
home-manager.extraSpecialArgs = { inherit inputs; };
}
];
specialArgs = { inherit inputs; };
}