33 lines
752 B
Nix
33 lines
752 B
Nix
{ self, nixpkgs, system }:
|
|
|
|
with nixpkgs.legacyPackages.${system};
|
|
|
|
let
|
|
servConf = self.lib.config.site.net.serv;
|
|
masterAddrs =
|
|
[servConf.hosts4.dns] ++
|
|
map (hosts6: hosts6.dns)
|
|
(builtins.attrValues servConf.hosts6);
|
|
mastersStr =
|
|
builtins.foldl' (result: addr:
|
|
"${result} ${addr};"
|
|
) "" masterAddrs;
|
|
in
|
|
|
|
writeText "named.slave.conf" (
|
|
lib.concatMapStringsSep "\n" ({ name, ns, ... }: ''
|
|
zone "${name}" IN {
|
|
type slave;
|
|
masters {${mastersStr} };
|
|
file "/var/lib/bind/slave/${name}.zone";
|
|
allow-notify {${mastersStr} };
|
|
allow-query { any; };
|
|
};
|
|
'') (
|
|
# public zones only
|
|
builtins.filter ({ ns, ... }:
|
|
ns == self.lib.dns.publicNS
|
|
) self.lib.dns.localZones
|
|
)
|
|
)
|