Replace static zone file with dynamically generated records: - Add homelab.dns module with enable/cnames options - Extract IPs from systemd.network configs (filters VPN interfaces) - Use git commit timestamp as zone serial number - Move external hosts to separate external-hosts.nix Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
46 lines
1.0 KiB
Nix
46 lines
1.0 KiB
Nix
{ self, lib, ... }:
|
|
let
|
|
dnsLib = import ../../lib/dns-zone.nix { inherit lib; };
|
|
externalHosts = import ./external-hosts.nix;
|
|
|
|
# Generate zone from flake hosts + external hosts
|
|
# Use lastModified from git commit as serial number
|
|
zoneData = dnsLib.generateZone {
|
|
inherit self externalHosts;
|
|
serial = self.sourceInfo.lastModified;
|
|
domain = "home.2rjus.net";
|
|
};
|
|
in
|
|
{
|
|
sops.secrets.ns_xfer_key = {
|
|
path = "/etc/nsd/xfer.key";
|
|
};
|
|
|
|
networking.firewall.allowedTCPPorts = [ 8053 ];
|
|
networking.firewall.allowedUDPPorts = [ 8053 ];
|
|
|
|
services.nsd = {
|
|
enable = true;
|
|
port = 8053;
|
|
ipv6 = false;
|
|
verbosity = 2;
|
|
identity = "home.2rjus.net server";
|
|
interfaces = [ "0.0.0.0" ];
|
|
|
|
keys = {
|
|
"xferkey" = {
|
|
algorithm = "hmac-sha256";
|
|
keyFile = "/etc/nsd/xfer.key";
|
|
};
|
|
};
|
|
|
|
zones = {
|
|
"home.2rjus.net" = {
|
|
provideXFR = [ "10.69.13.6 xferkey" ];
|
|
notify = [ "10.69.13.6@8053 xferkey" ];
|
|
data = zoneData;
|
|
};
|
|
};
|
|
};
|
|
}
|