59 lines
1.7 KiB
Nix
59 lines
1.7 KiB
Nix
{
|
|
roles.default.perInstance = { settings, ... }: {
|
|
nixosModule =
|
|
{ config, ... }:
|
|
let
|
|
creds = config.clan.core.vars.generators.gw-router;
|
|
|
|
pppInterface = if settings.wan.vlanId == null then settings.wan.interface else "wan-vlan";
|
|
in
|
|
{
|
|
clan.core.vars.generators.gw-router = {
|
|
prompts.pppoe-username = {
|
|
description = "PPPoE username (from the ISP)";
|
|
type = "hidden";
|
|
};
|
|
prompts.pppoe-password = {
|
|
description = "PPPoE password (from the ISP)";
|
|
type = "hidden";
|
|
};
|
|
files."pppoe-username".secret = true;
|
|
files."pppoe-password".secret = true;
|
|
script = ''
|
|
user="$(cat "$prompts"/pppoe-username)"
|
|
pass="$(cat "$prompts"/pppoe-password)"
|
|
printf 'user "%s"\n' "$user" > "$out"/pppoe-username
|
|
printf '"%s" * "%s"\n' "$user" "$pass" > "$out"/pppoe-password
|
|
'';
|
|
};
|
|
|
|
services.pppd = {
|
|
enable = true;
|
|
peers.wan = {
|
|
autostart = true;
|
|
config = ''
|
|
plugin pppoe.so ${pppInterface}
|
|
ifname ppp0
|
|
file ${creds.files."pppoe-username".path}
|
|
noipdefault
|
|
defaultroute
|
|
noauth
|
|
hide-password
|
|
persist
|
|
maxfail 0
|
|
holdoff 5
|
|
lcp-echo-interval 15
|
|
lcp-echo-failure 3
|
|
+ipv6
|
|
mtu 1492
|
|
mru 1492
|
|
'';
|
|
};
|
|
};
|
|
|
|
environment.etc."ppp/chap-secrets".source = creds.files."pppoe-password".path;
|
|
environment.etc."ppp/pap-secrets".source = creds.files."pppoe-password".path;
|
|
};
|
|
};
|
|
}
|