95 lines
3.1 KiB
Nix
95 lines
3.1 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}: {
|
|
networking = {
|
|
inherit (config.secrets.secrets.local.networking) hostId;
|
|
};
|
|
systemd.network.networks = {
|
|
"10-lan01" = {
|
|
address = [(lib.net.cidr.hostCidr config.secrets.secrets.global.net.ips.${config.node.name} config.secrets.secrets.global.net.privateSubnetv4)];
|
|
gateway = [(lib.net.cidr.host 1 config.secrets.secrets.global.net.privateSubnetv4)];
|
|
#matchConfig.MACAddress = config.secrets.secrets.local.networking.interfaces.lan01.mac;
|
|
matchConfig.Name = "lan";
|
|
dhcpV6Config.UseDNS = false;
|
|
dhcpV4Config.UseDNS = false;
|
|
ipv6AcceptRAConfig.UseDNS = false;
|
|
networkConfig = {
|
|
MulticastDNS = true;
|
|
};
|
|
};
|
|
"40-lan01" = {
|
|
dhcpV6Config.UseDNS = false;
|
|
dhcpV4Config.UseDNS = false;
|
|
ipv6AcceptRAConfig.UseDNS = false;
|
|
networkConfig = {
|
|
MulticastDNS = true;
|
|
};
|
|
};
|
|
};
|
|
boot.initrd.systemd.network = {
|
|
enable = true;
|
|
networks = {
|
|
# redo the network cause the livesystem has macvlans
|
|
"10-lan01" = {
|
|
address = [(lib.net.cidr.hostCidr config.secrets.secrets.global.net.ips.${config.node.name} config.secrets.secrets.global.net.privateSubnetv4)];
|
|
gateway = [(lib.net.cidr.host 1 config.secrets.secrets.global.net.privateSubnetv4)];
|
|
matchConfig.MACAddress = config.secrets.secrets.local.networking.interfaces.lan01.mac;
|
|
dhcpV6Config.UseDNS = false;
|
|
dhcpV4Config.UseDNS = false;
|
|
ipv6AcceptRAConfig.UseDNS = false;
|
|
networkConfig = {
|
|
IPv6PrivacyExtensions = "yes";
|
|
MulticastDNS = true;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
networking.nftables.firewall.zones.untrusted.interfaces = ["lan"];
|
|
|
|
wireguard.elisabeth.server = {
|
|
host = lib.net.cidr.host config.secrets.secrets.global.net.ips.${config.node.name} config.secrets.secrets.global.net.privateSubnetv4;
|
|
reservedAddresses = ["10.42.0.0/20" "fd00:1764::/112"];
|
|
openFirewall = true;
|
|
};
|
|
# To be able to ping containers from the host, it is necessary
|
|
# to create a macvlan on the host on the VLAN 1 network.
|
|
networking.macvlans.lan = {
|
|
interface = "lan01";
|
|
mode = "bridge";
|
|
};
|
|
|
|
age.secrets.cloudflare_token_acme = {
|
|
rekeyFile = ./secrets/cloudflare_api_token.age;
|
|
mode = "440";
|
|
group = "acme";
|
|
};
|
|
security.acme = {
|
|
acceptTerms = true;
|
|
defaults = {
|
|
email = config.secrets.secrets.global.devEmail;
|
|
dnsProvider = "cloudflare";
|
|
dnsPropagationCheck = true;
|
|
reloadServices = ["nginx"];
|
|
credentialFiles = {
|
|
"CF_DNS_API_TOKEN_FILE" = config.age.secrets.cloudflare_token_acme.path;
|
|
"CF_ZONE_API_TOKEN_FILE" = config.age.secrets.cloudflare_token_acme.path;
|
|
};
|
|
};
|
|
};
|
|
security.acme.certs.web = {
|
|
domain = config.secrets.secrets.global.domains.web;
|
|
extraDomainNames = ["*.${config.secrets.secrets.global.domains.web}"];
|
|
};
|
|
users.groups.acme.members = ["nginx"];
|
|
environment.persistence."/state".directories = [
|
|
{
|
|
directory = "/var/lib/acme";
|
|
user = "acme";
|
|
group = "acme";
|
|
mode = "0755";
|
|
}
|
|
];
|
|
}
|