merge bridge services into one

This commit is contained in:
Daniel Barlow
2023-08-16 19:44:00 +01:00
parent a019e59a80
commit 6f92f8fa8b
5 changed files with 23 additions and 45 deletions

View File

@@ -0,0 +1,26 @@
{
liminix
, ifwait
, lib
}:
{ members, ifname } :
let
inherit (liminix.networking) interface;
inherit (liminix.services) bundle oneshot;
inherit (lib) mkOption types;
primary = interface {
device = ifname;
type = "bridge";
};
addif = member :
oneshot {
name = "add-${member.device}-to-br-${primary.device}";
up = "${ifwait}/bin/ifwait ${member.device} running && ip link set dev ${member.device} master ${primary.device}";
down = "ip link set dev ${member.device} nomaster";
dependencies = [ primary member ];
};
in (bundle {
name = "bridge-${primary.device}-members";
contents = [ primary ] ++ map addif members;
}) // { device = primary.device; }