liminix/modules/ppp/l2tp.nix

41 lines
791 B
Nix

{
lib,
liminix,
output-template,
serviceFns,
svc,
writeAshScript,
writeText,
xl2tpd,
callPackage
} :
{ lns,
ppp-options,
lcpEcho,
username,
password,
debug
}:
let
name = "${lns}.l2tp";
common = callPackage ./common.nix { inherit svc; };
conf = writeText "xl2tpd.conf" ''
[lac upstream]
lns = ${lns}
require authentication = no
pppoptfile = /run/${name}/ppp-options
autodial = yes
redial = yes
redial timeout = 1
max redials = 2 # this gives 1 actual retry, as xl2tpd can't count
'';
control = "/run/${name}/control";
in common {
inherit name debug username password lcpEcho ppp-options;
command = ''
touch ${control}
exec ${xl2tpd}/bin/xl2tpd -D -p /run/${name}/${name}.pid -c ${conf} -C ${control}
'';
}