mirror of
https://github.com/JulienMalka/snowfield.git
synced 2025-03-29 07:10:51 +01:00
48 lines
1 KiB
Nix
48 lines
1 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
inputs,
|
|
nixosConfigurations,
|
|
...
|
|
}:
|
|
let
|
|
zonesToList = lib.mapAttrsToList (name: value: { ${name} = value; });
|
|
zonesFromConfig = lib.mkMerge (
|
|
lib.fold (elem: acc: acc ++ (zonesToList elem.config.machine.meta.zones)) [ ] (
|
|
lib.attrValues nixosConfigurations
|
|
)
|
|
);
|
|
dnsLib = (import inputs.dns).lib;
|
|
evalZones =
|
|
zones:
|
|
(lib.evalModules {
|
|
modules = [
|
|
{
|
|
options = {
|
|
zones = lib.mkOption {
|
|
type = lib.types.attrsOf dnsLib.types.zone;
|
|
description = "DNS zones";
|
|
};
|
|
};
|
|
config = {
|
|
inherit zones;
|
|
};
|
|
}
|
|
];
|
|
}).config.zones;
|
|
|
|
in
|
|
|
|
{
|
|
services.nsd = {
|
|
enable = true;
|
|
interfaces = [
|
|
config.machine.meta.ips.public.ipv4
|
|
config.machine.meta.ips.public.ipv6
|
|
];
|
|
zones = lib.mapAttrs (_: value: {
|
|
data = builtins.toString value;
|
|
provideXFR = [ "192.168.0.0/21 NOKEY" ];
|
|
}) (evalZones zonesFromConfig);
|
|
};
|
|
}
|