snowfield/modules/dns/default.nix

50 lines
1 KiB
Nix
Raw Normal View History

2024-08-12 18:15:30 +02:00
{
lib,
2024-08-24 22:27:29 +02:00
dnsLib,
2024-08-12 18:15:30 +02:00
...
}:
let
SOA = {
nameServer = "ns";
adminEmail = "dns@malka.sh";
serial = 0;
};
2024-08-13 20:21:19 +02:00
NS = [
"ns1"
"ns2"
];
# Set some defaults for a zone
getSubmodulesCustom =
inputs@{ name, ... }:
lib.recursiveUpdate ((lib.head dnsLib.types.zone.getSubModules) ({ inherit name; } // inputs)) {
config = {
SOA = lib.mkDefault SOA;
NS = lib.mkDefault NS;
subdomains = {
ns1 = lib.mkDefault {
A = [ lib.snowfield.router.ips.public.ipv4 ];
AAAA = [ lib.snowfield.router.ips.public.ipv6 ];
};
ns2 = lib.mkDefault {
A = [ lib.snowfield.akhaten.ips.public.ipv4 ];
AAAA = [ lib.snowfield.akhaten.ips.public.ipv6 ];
};
};
};
};
2024-08-12 18:15:30 +02:00
in
with lib;
{
options = {
machine.meta.zones = mkOption {
type = types.attrsOf (
recursiveUpdate dnsLib.types.zone { getSubModules = [ getSubmodulesCustom ]; }
);
2024-08-12 18:15:30 +02:00
default = { };
};
};
}