summaryrefslogtreecommitdiff
path: root/config/networking/bridges.nix
blob: e423e03ed65d39dd7c6ea128c88972eb8abf4cd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
  config,
  lib,
  pkgs,
  ...
}: let
  nets = config.personal.networking.networks;
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 = [];

      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]));
}