nixos/machines/vendetta.nix

86 lines
1.9 KiB
Nix
Raw Normal View History

2023-01-17 21:57:39 +00:00
/*
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";
2023-01-18 02:06:08 +00:00
hostname = "192.168.1.157";
2023-01-17 21:57:39 +00:00
2023-01-17 23:31:47 +00:00
# this server will have to have dns records
own = {
external = [
"vendetta A ${ip_pub}"
2023-01-18 02:06:08 +00:00
"ns1 A ${ip_pub}"
# needs this, temporally
"ns2 A ${ip_pub}"
"mail A ${ip_pub}"
2023-01-17 23:31:47 +00:00
];
cname = [
#"misc CNAME vendetta"
];
};
2023-01-17 21:57:39 +00:00
in {
imports = [
# applications for this particular server
2023-01-17 23:31:47 +00:00
../applications/dns.nix
2023-01-17 21:57:39 +00:00
];
deployment = {
targetHost = hostname;
targetPort = 22;
targetUser = "root";
};
2023-01-18 02:06:08 +00:00
networking = {
firewall = {
allowedTCPPorts = [22 53];
allowedUDPPorts = [53];
};
};
2023-01-17 23:31:47 +00:00
skynet_dns = {
enable = true;
2023-01-17 21:57:39 +00:00
2023-01-17 23:31:47 +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.deployment.targetHost == hostname
then own.external
else value.config.skynet_dns.records.external
)
else []
2023-01-17 23:31:47 +00:00
) 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 []
2023-01-17 23:31:47 +00:00
) nodes
);
};
};
2023-01-17 21:57:39 +00:00
}