{ pkgs, ... }: let hostName = "r5"; domain = "home.arpa"; wan = "wan0"; bridge = "br0"; in { imports = [ ../roles/home.nix ../roles/server.nix ../roles/router.nix ]; age.secrets = { acme.file = ../../secrets/acme.age; syncthing.file = ../../secrets/syncthing.age; }; networking = { inherit domain hostName; # see ../roles/router.nix for remaining settings nat = { externalInterface = wan; internalInterfaces = [ bridge ]; }; }; systemd.network = { netdevs = { "20-${bridge}" = { netdevConfig = { Kind = "bridge"; Name = "${bridge}"; }; }; }; networks = { "30-lan1" = { matchConfig.Path = "platform-3c0000000.pcie-*"; networkConfig.Bridge = bridge; linkConfig.RequiredForOnline = "enslaved"; }; "30-lan2" = { matchConfig.Path = "platform-3c0400000.pcie-*"; networkConfig.Bridge = bridge; linkConfig.RequiredForOnline = "enslaved"; }; "40-${bridge}" = { matchConfig.Name = bridge; bridgeConfig = { }; linkConfig = { RequiredForOnline = "routable"; }; }; }; }; services.tailscale = { extraSetFlags = [ "--advertise-routes 10.0.0.0/16" ]; }; environment.systemPackages = with pkgs; [ file tree knot-dns ]; users.users.alin = { isNormalUser = true; extraGroups = [ "wheel" ]; openssh.authorizedKeys.keys = [ "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBENXbdPPOq0mA+9bPklpUkikvIXjCEKE5IRwNPNMr5/Ta1J/ND737fexCjEb7YPoAJtaf0gD/JThQQi/RxDTvy4= alin@secretive.marvin.local" ]; }; services.caddy = { globalConfig = '' pki { ca home { name "Home CA" } } ''; virtualHosts = { "${hostName}.${domain}" = { serverAliases = [ "${hostName}.${tailnet}" ]; extraConfig = '' tls { issuer internal { ca home } } root /var/lib/caddy/ca file_server browse ''; }; "ca.${domain}" = { extraConfig = '' tls { issuer internal { ca home } } acme_server { allow { domains *.test *.${domain} } } ''; }; }; }; nix = { settings = { max-jobs = 2; builders-use-substitutes = true; }; }; services.timesyncd.enable = false; services.chrony = { enable = true; extraConfig = '' rtcdevice /dev/rtc0 rtcfile /var/lib/chrony/rtc rtcautotrim 30 allow 10.0.0.0/8 allow fd12:d04f:65d:42::0/56 ''; }; system.stateVersion = "25.11"; }