/* Name: https://masseffect.fandom.com/wiki/Vigil Why: Counterpart to Vendetta Type: VM Hardware: - From: 2023 Role: DNS Server Notes: */ { pkgs, lib, nodes, ... }: let name = "vigil"; ip_pub = "193.1.99.109"; ip_priv = "172.20.20.4"; hostname = "${name}.skynet.ie"; # sets which nameserver it is ns = "ns2"; in { imports = [ ]; deployment = { targetHost = ip_pub; targetPort = 22; targetUser = "root"; tags = [ "active" "dns" ]; }; skynet_dns = { enable = true; # this server will have to have dns records own = { nameserver = ns; ip = ip_pub; external = [ "${name} A ${ip_pub}" "${ns} A ${ip_pub}" ]; cname = [ #"misc CNAME vendetta" ]; reverse = [ "${builtins.substring 9 3 ip_pub} IN PTR ${hostname}." ]; }; records = { # using the same logic as the firewall, comments there external = builtins.concatLists ( lib.attrsets.mapAttrsToList (key: value: if builtins.hasAttr "skynet_dns" value.config then ( if value.config.skynet_dns.enable then value.config.skynet_dns.own.external else value.config.skynet_dns.records.external ) else [] ) nodes ); cname = builtins.concatLists ( lib.attrsets.mapAttrsToList (key: value: if builtins.hasAttr "skynet_dns" value.config then ( if value.config.skynet_dns.enable then value.config.skynet_dns.own.cname else value.config.skynet_dns.records.cname ) else [] ) nodes ); reverse = builtins.concatLists ( lib.attrsets.mapAttrsToList (key: value: if builtins.hasAttr "skynet_dns" value.config then ( if value.config.skynet_dns.enable then value.config.skynet_dns.own.reverse else value.config.skynet_dns.records.reverse ) else [] ) nodes ); }; }; }