{ config, ... }: let inherit (config.lib.topology) mkInternet mkConnection; mkTS = addresses: { inherit addresses; network = "tailscale"; virtual = true; }; in { topology = { }; nodes.internet = mkInternet { connections = [ (mkConnection "marvin" "wlp41s0") (mkConnection "prefect" "enp1s0") (mkConnection "thought" "enp1s0") (mkConnection "zaphod" "wlp1s0") ]; }; networks.tailscale = { name = "Tailscale"; cidrv4 = "100.64.0.0/10"; cidrv6 = "fd7a:115c:a1e0::/96"; }; nodes = { marvin = { interfaces.enp42s0 = { renderer.hidePhysicalConnections = true; }; interfaces.tailscale0 = mkTS [ "100.123.15.72" "\n" "fd7a:115c:a1e0:ab12:4843:cd96:627b:f48" ] // { physicalConnections = [ (mkConnection "prefect" "tailscale0") (mkConnection "marvin" "tailscale0") ]; }; }; zaphod = { interfaces = { vboxnet0.virtual = true; tailscale0 = mkTS [ "100.125.9.36" "" "fd7a:115c:a1e0:ab12:4843:cd96:627d:924" ] // { physicalConnections = [ (mkConnection "prefect" "tailscale0") (mkConnection "marvin" "tailscale0") ]; }; }; }; prefect = { interfaces.tailscale0 = mkTS [ "100.93.63.54" "\n" "fd7a:115c:a1e0:ab12:4843:cd96:625d:3f36" ] // { physicalConnections = [ (mkConnection "marvin" "tailscale0") (mkConnection "zaphod" "tailscale0") ]; }; }; thought = { }; }; }