summaryrefslogtreecommitdiff
path: root/config/networking/bridges.nix
blob: 217f77975f822364a16a4809784ecf3986c411eb (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
{ config, lib, utils, pkgs, ... }:

let cfg = config.personal.networking;
in {
  config = lib.mkMerge ((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 = ''
        sleep 3
        ${pkgs.iproute2}/bin/bridge link set dev ${device} hairpin on
      '';
    }) [ cfg.networks.wan cfg.networks.iot ]) ++ [{
      systemd.services."${cfg.networks.wan.interface}-netdev".script = ''
        echo Attaching enp3s0 to wan...
        ip link set dev enp3s0 master wan
      '';
    }]);
}