2025-01-18 12:34:41 +00:00
|
|
|
{
|
|
|
|
inputs,
|
|
|
|
self,
|
2025-02-02 16:37:47 +00:00
|
|
|
...
|
|
|
|
}: {
|
2025-03-05 18:50:30 +00:00
|
|
|
flake.lib = let
|
|
|
|
inherit (inputs.nixpkgs.lib) nixosSystem;
|
|
|
|
inherit (builtins) mapAttrs;
|
2025-02-02 16:37:47 +00:00
|
|
|
mkHost = {
|
2025-03-05 18:50:30 +00:00
|
|
|
hostname,
|
2025-02-02 16:37:47 +00:00
|
|
|
system,
|
|
|
|
extraModules ? [],
|
2025-03-05 18:50:30 +00:00
|
|
|
extraSpecialArgs ? {},
|
2025-02-02 16:37:47 +00:00
|
|
|
}:
|
2025-03-05 18:50:30 +00:00
|
|
|
nixosSystem {
|
2025-02-02 16:37:47 +00:00
|
|
|
inherit system;
|
2025-03-05 18:50:30 +00:00
|
|
|
specialArgs = {inherit inputs self;} // extraSpecialArgs;
|
2025-02-02 16:37:47 +00:00
|
|
|
modules =
|
2025-03-05 18:50:30 +00:00
|
|
|
[
|
|
|
|
../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";
|
2025-02-08 22:24:28 +00:00
|
|
|
};
|
2024-10-16 00:03:53 +01:00
|
|
|
};
|
2025-03-05 18:50:30 +00:00
|
|
|
systemd.oomd = {
|
|
|
|
enableRootSlice = true;
|
|
|
|
extraConfig = {DefaultMemoryPressureDurationSec = "20s";};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
]
|
|
|
|
++ extraModules;
|
2024-10-16 00:03:53 +01:00
|
|
|
};
|
2025-03-05 18:50:30 +00:00
|
|
|
mkHosts = mapAttrs (hostname: args: mkHost (args // {inherit hostname;}));
|
|
|
|
in {
|
|
|
|
inherit mkHosts;
|
|
|
|
};
|
2024-10-16 00:03:53 +01:00
|
|
|
}
|