47 lines
1.2 KiB
Nix
47 lines
1.2 KiB
Nix
# SPDX-FileCopyrightText: 2024 Ryan Lahfa <ryan.lahfa@dgnum.eu>
|
|
#
|
|
# SPDX-License-Identifier: EUPL-1.2
|
|
|
|
{ config, ... }:
|
|
let
|
|
svc = config.system.service;
|
|
in
|
|
{
|
|
# Our bridging is a bit complicated, therefore, we need iproute2.
|
|
programs.iproute2.enable = true;
|
|
|
|
services = {
|
|
int = svc.bridge.primary.build {
|
|
ifname = "int";
|
|
macAddressFromInterface = config.hardware.networkInterfaces.lan;
|
|
untagged = {
|
|
enable = true;
|
|
pvid = 1;
|
|
default-pvid = 1;
|
|
};
|
|
};
|
|
|
|
bridge = svc.bridge.members.build {
|
|
primary = config.services.int;
|
|
members = {
|
|
lan.member = config.hardware.networkInterfaces.lan;
|
|
wlan0 = {
|
|
member = config.hardware.networkInterfaces.wlan0;
|
|
# Bridge only once hostapd is ready.
|
|
dependencies = [ config.services.hostap-1-ready ];
|
|
};
|
|
wlan1 = {
|
|
member = config.hardware.networkInterfaces.wlan1;
|
|
# Bridge only once hostapd is ready.
|
|
dependencies = [ config.services.hostap-2-ready ];
|
|
};
|
|
};
|
|
};
|
|
|
|
admin-vlan = svc.vlan.build {
|
|
ifname = "admin";
|
|
primary = config.services.int;
|
|
vid = "3001";
|
|
};
|
|
};
|
|
}
|