From a59595256669d93585fca91d3cab0d0c84c8a82c Mon Sep 17 00:00:00 2001 From: oddlama Date: Fri, 12 Apr 2024 13:47:32 +0200 Subject: [PATCH] chore: move topology wireguard to extra modules --- modules/default.nix | 1 - modules/topology-wireguard.nix | 80 ---------------------------------- 2 files changed, 81 deletions(-) delete mode 100644 modules/topology-wireguard.nix diff --git a/modules/default.nix b/modules/default.nix index 77b658f..eb13425 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -39,7 +39,6 @@ ./provided-domains.nix ./secrets.nix ./telegraf.nix - ./topology-wireguard.nix ]; nixpkgs.overlays = [ diff --git a/modules/topology-wireguard.nix b/modules/topology-wireguard.nix deleted file mode 100644 index 09840a0..0000000 --- a/modules/topology-wireguard.nix +++ /dev/null @@ -1,80 +0,0 @@ -{ - config, - lib, - inputs ? {}, - ... -}: let - inherit - (lib) - flip - mapAttrsToList - mkDefault - mkEnableOption - mkIf - mkMerge - filter - ; - - headOrNull = xs: - if xs == [] - then null - else builtins.head xs; - - networkId = wgName: "wireguard-${wgName}"; -in { - options.topology.extractors.wireguard.enable = mkEnableOption "topology wireguard extractor" // {default = true;}; - - config = mkIf (config.topology.extractors.wireguard.enable && config ? wireguard) { - # Create networks (this will be duplicated by each node, - # but it doesn't matter and will be merged anyway) - topology.networks = mkMerge ( - flip mapAttrsToList config.wireguard ( - wgName: _: let - inherit (lib.wireguard inputs wgName) networkCidrs; - in { - ${networkId wgName} = { - name = mkDefault "Wireguard network '${wgName}'"; - icon = "interfaces.wireguard"; - cidrv4 = headOrNull (filter lib.net.ip.isv4 networkCidrs); - cidrv6 = headOrNull (filter lib.net.ip.isv6 networkCidrs); - }; - } - ) - ); - - # Assign network and physical connections to related interfaces - topology.self.interfaces = mkMerge ( - flip mapAttrsToList config.wireguard ( - wgName: wgCfg: let - inherit - (lib.wireguard inputs wgName) - participatingServerNodes - wgCfgOf - ; - - isServer = wgCfg.server.host != null; - filterSelf = filter (x: x != config.node.name); - - # The list of peers that are "physically" connected in the wireguard network, - # meaning they communicate directly with each other. - connectedPeers = - if isServer - then - # Other servers in the same network - filterSelf participatingServerNodes - else [wgCfg.client.via]; - in { - ${wgCfg.linkName} = { - network = networkId wgName; - virtual = true; - renderer.hidePhysicalConnections = true; - physicalConnections = flip map connectedPeers (peer: { - node = inputs.self.nodes.${peer}.config.topology.id; - interface = (wgCfgOf peer).linkName; - }); - }; - } - ) - ); - }; -}