liminix/examples/l2tp.nix

94 lines
2 KiB
Nix
Raw Normal View History

2024-05-11 23:48:06 +02:00
{
config,
pkgs,
lib,
...
}: let
secrets = import ./extneder-secrets.nix;
rsecrets = import ./rotuer-secrets.nix;
2024-05-14 13:52:50 +02:00
lns = "l2tp.aaisp.net.uk";
2024-05-11 23:48:06 +02:00
inherit (pkgs.liminix.services) oneshot longrun bundle target;
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs) writeText dropbear ifwait serviceFns;
svc = config.system.service;
in rec {
boot = {
tftp = {
serverip = "10.0.0.1";
ipaddr = "10.0.0.8";
};
};
imports = [
2024-05-14 19:07:33 +02:00
../modules/cdc-ncm
2024-05-11 23:48:06 +02:00
../modules/network
../modules/vlan
../modules/ssh
../modules/usb.nix
../modules/watchdog
../modules/mount
../modules/ppp
];
hostname = "thing";
2024-05-15 18:36:16 +02:00
services.wwan = svc.wwan.build {
apn = "data.uk";
username = "user";
password = "one2one";
authType = "chap";
};
services.dhcpc = svc.network.dhcp.client.build {
interface = config.services.wwan;
dependencies = [ config.services.hostname ];
};
2024-05-11 23:48:06 +02:00
services.sshd = svc.ssh.build { };
services.resolvconf = oneshot rec {
dependencies = [ services.dhcpc ];
name = "resolvconf";
up = ''
. ${serviceFns}
( in_outputs ${name}
for i in $(output ${services.dhcpc} dns); do
echo "nameserver $i" > resolv.conf
done
)
'';
};
filesystem = dir {
etc = dir {
"resolv.conf" = symlink "${services.resolvconf}/.outputs/resolv.conf";
};
srv = dir {};
};
2024-05-14 13:52:50 +02:00
services.lnsroute = svc.network.route.build {
via = "$(output ${services.dhcpc} router)";
target = lns;
dependencies = [services.dhcpc];
};
2024-05-11 23:48:06 +02:00
services.l2tp = svc.l2tp.build {
2024-05-14 13:52:50 +02:00
inherit lns;
2024-05-11 23:48:06 +02:00
ppp-options = [
"debug" "+ipv6" "noauth"
"name" rsecrets.l2tp.name
"password" rsecrets.l2tp.password
];
2024-05-14 13:52:50 +02:00
dependencies = [ services.lnsroute ];
2024-05-11 23:48:06 +02:00
};
services.defaultroute4 = svc.network.route.build {
2024-05-14 13:52:50 +02:00
via = "$(output ${services.l2tp} router)";
2024-05-11 23:48:06 +02:00
target = "default";
2024-05-14 13:52:50 +02:00
dependencies = [services.l2tp];
2024-05-11 23:48:06 +02:00
};
users.root = {
passwd = lib.mkForce secrets.root.passwd;
openssh.authorizedKeys.keys = secrets.root.keys;
};
}