dns: auto-generate zone entries from host configurations

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>
This commit is contained in:
2026-02-04 21:43:44 +01:00
parent 4ceee04308
commit cee1b264cd
14 changed files with 296 additions and 103 deletions

View File

@@ -0,0 +1,52 @@
# DNS records for hosts not managed by this flake
# These are manually maintained and combined with auto-generated records
{
aRecords = {
# 8_k8s
"kube-blue1" = "10.69.8.150";
"kube-blue2" = "10.69.8.151";
"kube-blue3" = "10.69.8.152";
"kube-blue4" = "10.69.8.153";
"kube-blue5" = "10.69.8.154";
"kube-blue6" = "10.69.8.155";
"kube-blue7" = "10.69.8.156";
"kube-blue8" = "10.69.8.157";
"kube-blue9" = "10.69.8.158";
"kube-blue10" = "10.69.8.159";
# 10
"gw" = "10.69.10.1";
# 12_CORE
"virt-mini1" = "10.69.12.11";
"nas" = "10.69.12.50";
"nzbget-jail" = "10.69.12.51";
"restic" = "10.69.12.52";
"radarr-jail" = "10.69.12.53";
"sonarr-jail" = "10.69.12.54";
"bazarr" = "10.69.12.55";
"mpnzb" = "10.69.12.57";
"pve1" = "10.69.12.75";
"inc1" = "10.69.12.80";
"inc2" = "10.69.12.81";
# 22_WLAN
"unifi-ctrl" = "10.69.22.5";
# 30
"gunter" = "10.69.30.105";
# 31
"media" = "10.69.31.50";
# 99_MGMT
"sw1" = "10.69.99.2";
"testing" = "10.69.33.33";
};
cnames = {
# k8s services
"rook" = "kube-blue4";
"git" = "kube-blue5";
};
}