liminix

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

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 }