/* Name: https://en.wikipedia.org/wiki/Skynet_(Terminator) Why: Skynet is eternal Type: VM Hardware: - From: 2023 Role: Webserver and member linux box Notes: Does not host offical sites */ { pkgs, lib, nodes, inputs, ... }: let name = "skynet"; # DMZ that ITD provided ip_pub = "193.1.96.165"; ip_int = "193.1.99.81"; hostname = "${name}.skynet.ie"; in { imports = [ ../applications/skynet_users.nix ]; deployment = { targetHost = ip_pub; targetPort = 22; targetUser = null; # this one is manually deployed tags = ["active-ext"]; }; skynet_dns.records = [ { record = name; r_type = "A"; value = ip_pub; server = true; } { record = ip_pub; r_type = "PTR"; value = hostname; } ]; services.skynet_backup.host = { ip = ip_pub; name = name; }; proxmoxLXC.manageNetwork = true; networking = { hostName = name; # needed to use the dmz first defaultGateway = lib.mkForce "193.1.96.161"; interfaces = { # need it for dns validation for letsencrypt eth0.ipv4 = { addresses = [ { address = ip_int; prefixLength = 26; } ]; routes = [ { # need to be able to get to the dns server address = "193.1.99.120"; prefixLength = 26; via = "193.1.99.65"; } ]; }; # primary ip for logging in eth1.ipv4.addresses = [ { address = ip_pub; prefixLength = 28; } ]; }; }; services.skynet_users = { host = { ip = ip_pub; name = name; }; }; }