members.nix (626B)
1 { 2 liminix 3 , ifwait 4 , lib 5 }: 6 { members, primary } : 7 8 let 9 inherit (liminix.networking) interface; 10 inherit (liminix.services) bundle oneshot; 11 inherit (lib) mkOption types; 12 addif = member : 13 oneshot { 14 name = "${primary.name}.member.${member.name}"; 15 up = '' 16 dev=$(output ${member} ifname) 17 ${ifwait}/bin/ifwait $dev running && ip link set dev $dev master $(output ${primary} ifname) 18 ''; 19 down = "ip link set dev $(output ${member} ifname) nomaster"; 20 dependencies = [ primary member ]; 21 }; 22 in bundle { 23 name = "${primary.name}.members"; 24 contents = map addif members; 25 }