/* Name: https://masseffect.fandom.com/wiki/Vendetta Why: Vendetta held troves of important data waiting for folks to request it. Type: VM Hardware: - From: 2023 Role: DNS Server Notes: */ { pkgs, lib, nodes, ... }: let # ip_pub = "193.1.99.120"; ip_pub = "192.168.1.157"; ip_priv = "172.20.20.3"; # hostname = "vendetta.skynet.ie"; hostname = "192.168.1.157"; # this server will have to have dns records own = { external = [ "vendetta A ${ip_pub}" "ns1 A ${ip_pub}" # needs this, temporally "ns2 A ${ip_pub}" "mail A ${ip_pub}" ]; cname = [ #"misc CNAME vendetta" ]; }; in { imports = [ # applications for this particular server ../applications/dns.nix ]; deployment = { targetHost = hostname; targetPort = 22; targetUser = "root"; }; networking = { firewall = { allowedTCPPorts = [22 53]; allowedUDPPorts = [53]; }; }; skynet_dns = { enable = true; 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.deployment.targetHost == hostname then 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.deployment.targetHost == hostname then own.cname else value.config.skynet_dns.records.cname ) else [] ) nodes ); }; }; }