liminix

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

members.nix (588B)


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