forked from DGNum/liminix
31f0213b6f
... and make bridge use it. We also had to convert bridge back into a pair of services. Downstreams want to depend on the bridge it self being configured even if not necessarily all the members are up. e.g. don't want to break ssh on lan if there's a misconfigured wlan device
43 lines
1.2 KiB
Nix
43 lines
1.2 KiB
Nix
## Bridge module
|
|
## =============
|
|
##
|
|
## Allows creation of Layer 2 software "bridge" network devices. A
|
|
## common use case is to merge together a hardware Ethernet device
|
|
## with one or more WLANs so that several local devices appear to be
|
|
## on the same network.
|
|
|
|
|
|
{ lib, pkgs, config, ...}:
|
|
let
|
|
inherit (lib) mkOption types;
|
|
inherit (pkgs.liminix.services) oneshot;
|
|
inherit (pkgs) liminix;
|
|
in
|
|
{
|
|
options = {
|
|
system.service.bridge = {
|
|
primary = mkOption { type = liminix.lib.types.serviceDefn; };
|
|
members = mkOption { type = liminix.lib.types.serviceDefn; };
|
|
};
|
|
};
|
|
config.system.service.bridge = {
|
|
primary = liminix.callService ./primary.nix {
|
|
ifname = mkOption {
|
|
type = types.str;
|
|
description = "bridge interface name to create";
|
|
};
|
|
};
|
|
members = liminix.callService ./members.nix {
|
|
primary = mkOption {
|
|
type = liminix.lib.types.interface;
|
|
description = "primary bridge interface";
|
|
};
|
|
|
|
members = mkOption {
|
|
type = types.listOf liminix.lib.types.interface;
|
|
description = "interfaces to add to the bridge";
|
|
};
|
|
};
|
|
};
|
|
config.kernel.config.BRIDGE = "y";
|
|
}
|