57 lines
1.4 KiB
Nix
57 lines
1.4 KiB
Nix
{
|
|
inputs,
|
|
self,
|
|
...
|
|
}: {
|
|
flake.lib = let
|
|
inherit (inputs.nixpkgs.lib) nixosSystem;
|
|
inherit (builtins) mapAttrs;
|
|
mkHost = {
|
|
hostname,
|
|
system,
|
|
extraModules ? [],
|
|
extraSpecialArgs ? {},
|
|
}:
|
|
nixosSystem {
|
|
inherit system;
|
|
specialArgs = {inherit inputs self;} // extraSpecialArgs;
|
|
modules =
|
|
[
|
|
../hosts/${hostname}
|
|
self.nixosModules.default
|
|
{
|
|
_module.args = {
|
|
lib' = self.lib;
|
|
inherit system;
|
|
};
|
|
|
|
nixpkgs = {
|
|
inherit system;
|
|
config.allowUnfree = true;
|
|
};
|
|
}
|
|
{
|
|
networking.hostName = hostname;
|
|
nix = {
|
|
settings.extra-experimental-features = [
|
|
"nix-command"
|
|
"flakes"
|
|
];
|
|
gc = {
|
|
automatic = true;
|
|
dates = "weekly";
|
|
};
|
|
};
|
|
systemd.oomd = {
|
|
enableRootSlice = true;
|
|
extraConfig = {DefaultMemoryPressureDurationSec = "20s";};
|
|
};
|
|
}
|
|
]
|
|
++ extraModules;
|
|
};
|
|
mkHosts = mapAttrs (hostname: args: mkHost (args // {inherit hostname;}));
|
|
in {
|
|
inherit mkHosts;
|
|
};
|
|
}
|