nixos/machines/agentjones.nix

98 lines
2.1 KiB
Nix
Raw Normal View History

2023-01-17 21:25:28 +00:00
/*
Name: https://matrix.fandom.com/wiki/Agent_Jones
Type: Physical
Hardware: PowerEdge r210
From: 2011 (?)
Role: Firewall
Notes: Used to have Agent Smith as a partner but it died (Ironically)
*/
{ pkgs, lib, nodes, ... }:
let
2023-01-18 02:37:16 +00:00
# name of the server, sets teh hostname and record for it
2023-01-18 22:37:49 +00:00
name = "agentjones";
2023-01-17 20:50:17 +00:00
ip_pub = "193.1.99.72";
ip_priv = "172.20.20.1";
2023-01-18 02:37:16 +00:00
# hostname = "${name}.skynet.ie";
hostname = ip_pub;
in {
imports = [
# applications for this particular server
../applications/firewall.nix
2023-01-18 02:06:08 +00:00
../applications/dns.nix
];
2023-01-15 17:45:21 +00:00
deployment = {
targetHost = hostname;
2023-01-15 17:45:21 +00:00
targetPort = 22;
targetUser = "root";
};
2023-01-18 02:06:08 +00:00
skynet_dns.records = {
external = [
2023-01-18 02:37:16 +00:00
"${name} A ${ip_pub}"
2023-01-18 02:06:08 +00:00
];
cname = [];
};
# this has to be defined for any physical servers
# vms are defined by teh vm host
networking.interfaces = {
eth0 = {
ipv4.addresses = [
{
2023-01-17 20:50:17 +00:00
address = "${ip_pub}/32";
prefixLength = 24;
}
];
};
priv0 = {
ipv4.addresses = [
{
address = "${ip_priv}/32";
prefixLength = 24;
}
];
};
};
2023-01-15 15:10:40 +00:00
# this server is teh firewall
skynet_firewall = {
2023-01-15 19:18:24 +00:00
# always good to know oneself
own = {
2023-01-17 20:50:17 +00:00
ip = ip_pub;
ports = {
tcp = [
# ssh in
22
];
udp = [];
};
};
2023-01-15 19:18:24 +00:00
enable = true;
# gonna have to get all the
forward = builtins.concatLists (
# using this function "(key: value: value.config.skynet_firewall.forward)" turn the values ointo a list
lib.attrsets.mapAttrsToList (key: value:
# make sure that anything running this firewall dosent count (recursion otherewise)
# firewall may want to open ports in itself but can deal with that later
if builtins.hasAttr "skynet_firewall" value.config
then (
if value.config.skynet_firewall.enable
then []
else value.config.skynet_firewall.forward
)
else []
) nodes
);
};
2023-01-15 15:10:40 +00:00
}