nixos/machines/vendetta.nix

105 lines
2.4 KiB
Nix
Raw Normal View History

2023-01-25 11:48:44 +00:00
/*
Name: https://masseffect.fandom.com/wiki/Vendetta
Why: Vendetta held troves of important data waiting for folks to request it.
Type: Physical
Hardware: PowerEdge r210
From: 2011 (?)
2023-01-25 11:48:44 +00:00
Role: DNS Server
Notes: Using the server that used to be called Earth
2023-01-25 11:48:44 +00:00
*/
{ pkgs, lib, nodes, ... }:
let
# name of the server, sets teh hostname and record for it
name = "vendetta";
ip_pub = "193.1.99.120";
ip_priv = "172.20.20.3";
hostname = "${name}.skynet.ie";
2023-01-25 11:48:44 +00:00
# sets which nameserver it is
ns = "ns1";
in {
imports = [
# the physical hardware for this
./hardware/RM002.nix
2023-01-25 11:48:44 +00:00
];
deployment = {
targetHost = ip_pub;
2023-01-25 11:48:44 +00:00
targetPort = 22;
targetUser = "root";
2023-04-20 13:09:36 +00:00
2023-04-20 22:15:59 +00:00
tags = [ "active" "dns" ];
2023-01-25 11:48:44 +00:00
};
networking = {
# needs to have an address statically assigned
interfaces = {
eno1 = {
ipv4.addresses = [
{
address = "193.1.99.120";
prefixLength = 26;
}
];
};
};
2023-01-25 11:48:44 +00:00
};
skynet_dns = {
enable = true;
# primary dns server
primary = true;
2023-01-25 11:48:44 +00:00
# this server will have to have dns records
own = {
nameserver = ns;
ip = ip_pub;
2023-01-25 11:48:44 +00:00
external = [
"${name} A ${ip_pub}"
"${ns} A ${ip_pub}"
# needs this, temporally
"mail A ${ip_pub}"
];
cname = [
#"misc CNAME vendetta"
];
2023-05-21 18:05:47 +00:00
reverse = [
"${builtins.substring 9 3 ip_pub} IN PTR ${name}"
];
2023-01-25 11:48:44 +00:00
};
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
);
};
};
}