diff options
Diffstat (limited to 'config/networking/bridges.nix')
| -rw-r--r-- | config/networking/bridges.nix | 47 |
1 files changed, 24 insertions, 23 deletions
diff --git a/config/networking/bridges.nix b/config/networking/bridges.nix index e423e03..eecd34e 100644 --- a/config/networking/bridges.nix +++ b/config/networking/bridges.nix @@ -4,29 +4,30 @@ pkgs, ... }: let - nets = config.personal.networking.networks; + bridges = config.personal.networking.interfaces.bridges; in { - config = lib.mkMerge ([ - { - systemd.services.hostapd.postStart = lib.mkForce (lib.mkBefore '' - sleep 3 - ''); - } - ] - ++ (builtins.map (network: let - bridge = network.interface; - device = network.device; - in { - networking.bridges."${bridge}".interfaces = []; + config = { + networking.bridges = lib.mapAttrs (_: _: {interfaces = [];}) bridges; + systemd.services = lib.mkMerge ([ + { + hostapd.postStart = lib.mkBefore '' + sleep 10 + ''; + } + ] + ++ (lib.mapAttrsToList (bridge: {interfaces, ...}: { + "${bridge}-netdev".script = '' + echo Setting forward delay to 0 for ${bridge}... + ip link set ${bridge} type bridge forward_delay 0 + ''; - systemd.services."${bridge}-netdev".script = '' - echo Setting forward delay to 0 for ${bridge}... - ip link set ${bridge} type bridge forward_delay 0 - ''; - - systemd.services.hostapd.postStart = lib.mkForce '' - echo Setting ${device} to hairpin mode... - ${pkgs.iproute2}/bin/bridge link set dev ${device} hairpin on - ''; - }) [nets.wan nets.iot])); + hostapd.postStart = + lib.concatMapStringsSep "\n" (interface: '' + echo Setting ${interface} to hairpin mode... + ${pkgs.iproute2}/bin/bridge link set dev ${interface} hairpin on + '') + interfaces; + }) + bridges)); + }; } |
