nix/hosts/default.nix

69 lines
1.5 KiB
Nix

{
inputs,
lib,
system,
specialArgs,
dots,
user ? "rayandrew",
...
}:
let
mkNixosConfiguration =
host:
{
pkgs ? (
import inputs.nixpkgs {
inherit system;
config.allowUnfree = true;
}
),
}:
lib.nixosSystem {
inherit pkgs;
specialArgs = specialArgs // {
inherit host user dots;
};
modules = [
inputs.disko.nixosModules.default
./${host}
./${host}/hardware.nix
../nixos
../overlays
({config, ...}: {
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = specialArgs // {
inherit host user system dots;
home-dir = config.home-manager.users.${user}.home.homeDirectory;
};
users.${user} = {
imports = [
inputs.nix-index-database.hmModules.nix-index
inputs.sops-nix.homeManagerModules.sops
../home
] ++ lib.optional(builtins.pathExists ./${host}/home.nix) ./${host}/home.nix;
};
};
})
# alias for home-manager
(lib.mkAliasOptionModule [ "hm" ] [
"home-manager"
"users"
user
])
inputs.home-manager.nixosModules.home-manager
inputs.sops-nix.nixosModules.sops
];
};
in
{
nixosConfigurations = {
pickwick = mkNixosConfiguration "pickwick" { };
lemur = mkNixosConfiguration "lemur" { };
};
}