From 20dc8e5c5e24cea8d643726504b59166e987031a Mon Sep 17 00:00:00 2001 From: "quentin@aristote.fr" Date: Sat, 8 Jun 2024 19:38:25 +0200 Subject: networking: dhcp: add bridge around enp3s0 --- config/networking/bridges.nix | 46 +++++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 13 deletions(-) (limited to 'config/networking/bridges.nix') diff --git a/config/networking/bridges.nix b/config/networking/bridges.nix index cdef41b..9e18ea8 100644 --- a/config/networking/bridges.nix +++ b/config/networking/bridges.nix @@ -1,26 +1,46 @@ -{ config, lib, utils, pkgs, ... }: - -let nets = config.personal.networking.networks; +{ + 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 + config = lib.mkMerge ([ + { + systemd.services.hostapd.postStart = lib.mkForce (lib.mkBefore '' + sleep 3 + ''); + } + { + # create a bridge on top of enp3s0 along with a dummy interface + # for kea to work even when enp3s0 is disconnected + # if you change this, you may want to change: + # - the kea configuration in ./services/dhcp.nix + # - the eth0 net configuration ./default.nix + networking = { + bridges.eth0.interfaces = ["enp3s0" "enp3s0-dummy"]; + localCommands = '' + ip link add enp3s0-dummy type dummy + ''; + }; + boot.kernelModules = ["dummy"]; + } + ] + ++ (builtins.map (network: let bridge = network.interface; device = network.device; in { - networking.bridges."${bridge}".interfaces = [ ]; + 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 ('' + 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 ])); + ''; + }) [nets.wan nets.iot])); } -- cgit v1.2.3