2022-09-26 13:26:54 +02:00
|
|
|
{
|
|
|
|
callPackage
|
|
|
|
, liminix
|
2023-03-01 18:55:52 +01:00
|
|
|
, ifwait
|
2023-02-25 00:49:05 +01:00
|
|
|
, lib
|
2023-08-28 00:38:59 +02:00
|
|
|
, serviceFns
|
2022-09-26 13:26:54 +02:00
|
|
|
}:
|
2023-02-25 00:49:05 +01:00
|
|
|
let
|
|
|
|
inherit (liminix.services) oneshot longrun;
|
|
|
|
inherit (lib) concatStringsSep optional;
|
2023-08-28 00:38:59 +02:00
|
|
|
ifup = name : ifname : ''
|
|
|
|
. ${serviceFns}
|
|
|
|
${ifwait}/bin/ifwait -v ${ifname} present
|
|
|
|
ip link set up dev ${ifname}
|
|
|
|
(in_outputs ${name}
|
|
|
|
echo ${ifname} > ifname
|
|
|
|
)
|
|
|
|
'';
|
|
|
|
|
2022-09-26 13:26:54 +02:00
|
|
|
in {
|
2023-08-28 00:38:59 +02:00
|
|
|
inherit ifup;
|
2023-08-31 19:30:22 +02:00
|
|
|
|
2023-06-30 11:17:33 +02:00
|
|
|
route = { name, target, via, dependencies, dev ? null }:
|
|
|
|
let with_dev = if dev != null then "dev ${dev}" else "";
|
|
|
|
in oneshot {
|
2022-09-26 13:55:10 +02:00
|
|
|
inherit name;
|
|
|
|
up = ''
|
2023-06-30 11:17:33 +02:00
|
|
|
ip route add ${target} via ${via} ${with_dev}
|
2022-09-26 13:55:10 +02:00
|
|
|
'';
|
|
|
|
down = ''
|
2023-06-30 11:17:33 +02:00
|
|
|
ip route del ${target} via ${via} ${with_dev}
|
2022-09-26 13:55:10 +02:00
|
|
|
'';
|
|
|
|
inherit dependencies;
|
|
|
|
};
|
2022-09-26 13:26:54 +02:00
|
|
|
}
|