{ callPackage , liminix }: let inherit (liminix.services) oneshot longrun; in { interface = { type, device } @ args: oneshot { name = "${device}.link"; up = "ip link set up dev ${device}"; down = "ip link set down dev ${device}"; } // { inherit device; }; address = interface: { family, prefixLength, address } @ args: let inherit (builtins) toString; in oneshot { dependencies = [ interface ]; name = "${interface.device}.addr.${address}"; up = "ip address add ${address}/${toString prefixLength} dev ${interface.device} "; down = "ip address del ${address}/${toString prefixLength} dev ${interface.device} "; }; udhcpc = callPackage ./udhcpc.nix {}; odhcpc = interface: { ... } @ args: longrun { name = "${interface.device}.odhcp"; run = "odhcpcd ${interface.device}"; }; pppoe = callPackage ./pppoe.nix {}; }