liminix/modules/bridge/default.nix

38 lines
1 KiB
Nix
Raw Normal View History

2023-08-07 22:43:12 +02:00
## Bridge module
## =============
2023-08-07 22:43:12 +02:00
##
## 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. Create a ``primary`` service to specify the
## new device, and a ``members`` service to add constituent devices
## to it.
{ lib, pkgs, config, ...}:
let
inherit (lib) mkOption types;
inherit (pkgs.liminix.services) oneshot;
2023-08-05 15:08:02 +02:00
inherit (pkgs) liminix;
in
{
options = {
2023-08-16 20:44:00 +02:00
system.service.bridge = mkOption {
type = liminix.lib.types.serviceDefn;
};
};
2023-08-16 20:44:00 +02:00
config.system.service = {
bridge = liminix.callService ./service.nix {
2023-08-05 15:08:02 +02:00
members = mkOption {
type = types.listOf liminix.lib.types.service;
description = "interfaces to add to the bridge";
};
2023-08-16 20:44:00 +02:00
ifname = mkOption {
type = types.str;
description = "bridge interface name to create";
2023-08-05 15:08:02 +02:00
};
};
};
2023-08-05 15:08:02 +02:00
config.kernel.config.BRIDGE = "y";
}