summaryrefslogtreecommitdiff
path: root/hosts/vidhar/network/pppoe.nix
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2026-04-16 19:15:46 +0200
committerGregor Kleen <gkleen@yggdrasil.li>2026-04-16 19:15:46 +0200
commitd02070251ba23429ba2514d71f30eebece187b7f (patch)
tree8bb792fd3aca1f5d6a57c934c4759195889eedc8 /hosts/vidhar/network/pppoe.nix
parent75152da49a7f6b6ade429b69bde169c810c674ee (diff)
downloadnixos-d02070251ba23429ba2514d71f30eebece187b7f.tar
nixos-d02070251ba23429ba2514d71f30eebece187b7f.tar.gz
nixos-d02070251ba23429ba2514d71f30eebece187b7f.tar.bz2
nixos-d02070251ba23429ba2514d71f30eebece187b7f.tar.xz
nixos-d02070251ba23429ba2514d71f30eebece187b7f.zip
bump vidhar
Diffstat (limited to 'hosts/vidhar/network/pppoe.nix')
-rw-r--r--hosts/vidhar/network/pppoe.nix145
1 files changed, 0 insertions, 145 deletions
diff --git a/hosts/vidhar/network/pppoe.nix b/hosts/vidhar/network/pppoe.nix
deleted file mode 100644
index 7b342b69..00000000
--- a/hosts/vidhar/network/pppoe.nix
+++ /dev/null
@@ -1,145 +0,0 @@
1{ config, lib, pkgs, ... }:
2
3with lib;
4
5let
6 inherit (config.networking) pppInterface;
7in {
8 options = {
9 networking.pppInterface = mkOption {
10 type = types.str;
11 default = "ppp";
12 };
13 };
14
15 config = {
16 networking.vlans = {
17 telekom = {
18 id = 7;
19 interface = "eno2";
20 };
21 };
22
23 services.pppd = {
24 enable = true;
25 package = pkgs.ppp.overrideAttrs (oldAttrs: {
26 patches = (oldAttrs.patches or []) ++ [
27 ./no-double-timeout.patch
28 ];
29 });
30 peers.telekom.config = ''
31 nodefaultroute
32 ifname ${pppInterface}
33 lcp-echo-adaptive
34 lcp-echo-failure 10
35 lcp-echo-interval 1
36 maxfail 0
37 mtu 1492
38 mru 1492
39 plugin pppoe.so
40 pppoe-padi-timeout 1
41 pppoe-padi-attempts 10
42 user congstar
43 password congstar
44 nic-telekom
45 debug
46 +ipv6
47 '';
48 };
49 systemd.services."pppd-telekom" = {
50 stopIfChanged = true;
51
52 serviceConfig = {
53 Type = lib.mkForce "notify";
54 ExecStart = lib.mkForce "${getBin config.services.pppd.package}/sbin/pppd call telekom up_sdnotify nolog";
55 PIDFile = "/run/pppd/${pppInterface}.pid";
56 };
57 restartTriggers = with config; [
58 environment.etc."ppp/ip-pre-up".source
59 environment.etc."ppp/ip-up".source
60 environment.etc."ppp/ip-down".source
61 ];
62 };
63
64 environment.etc = {
65 "ppp/ip-pre-up".source = pkgs.resholve.writeScript "ip-pre-up" {
66 interpreter = pkgs.runtimeShell;
67 inputs = [ pkgs.iproute2 pkgs.ethtool ];
68 execer = [
69 "cannot:${lib.getExe' pkgs.iproute2 "ip"}"
70 "cannot:${lib.getExe' pkgs.iproute2 "tc"}"
71 ];
72 } ''
73 ethtool -K telekom tso off gso off gro off
74
75 ip link del "ifb4$1" || true
76 ip link add name "ifb4$1" type ifb
77 ip link set "ifb4$1" up
78
79 tc qdisc del dev "ifb4$1" root || true
80 tc qdisc del dev "$1" ingress || true
81 tc qdisc del dev "$1" root || true
82
83 tc qdisc add dev "$1" handle ffff: ingress
84 tc filter add dev "$1" parent ffff: basic action ctinfo dscp 0x0000003f 0x00000040 action mirred egress redirect dev "ifb4$1"
85 tc qdisc replace dev "ifb4$1" root cake memlimit 128Mb overhead 35 mpu 74 regional diffserv4 bandwidth ${toString (builtins.floor (177968 * 0.95))}kbit
86 tc qdisc replace dev "$1" root cake memlimit 128Mb overhead 35 mpu 74 regional nat diffserv4 wash bandwidth ${toString (builtins.floor (41216 * 0.95))}kbit
87 '';
88 "ppp/ip-up".source = pkgs.resholve.writeScript "ip-up" {
89 interpreter = pkgs.runtimeShell;
90 inputs = [ pkgs.iproute2 ];
91 execer = [ "cannot:${lib.getExe' pkgs.iproute2 "ip"}" ];
92 } ''
93 ip addr add "$4" peer "$5"/32 dev "$1"
94 ip route add default dev "$1" metric 512
95 '';
96 "ppp/ip-down".source = pkgs.resholve.writeScript "ip-down" {
97 interpreter = pkgs.runtimeShell;
98 inputs = [ pkgs.iproute2 ];
99 execer = [ "cannot:${lib.getExe' pkgs.iproute2 "ip"}" ];
100 } ''
101 ip link del "ifb4$1"
102 '';
103 };
104
105 systemd.package = pkgs.systemd.overrideAttrs (oldAttrs: {
106 patches = (oldAttrs.patches or []) ++ [
107 (pkgs.fetchpatch {
108 url = "https://github.com/sysedwinistrator/systemd/commit/b9691a43551739ddacdb8d53a4312964c3ddfa08.patch";
109 hash = "sha256-TLfOTFodLzCVywnF4Xp4BR2Pja0Qq4ItE/yaKkzI414=";
110 })
111 ];
112 });
113
114 systemd.network.networks = {
115 "40-${pppInterface}" = {
116 matchConfig.Name = pppInterface;
117 dns = [ "::1" "127.0.0.1" ];
118 domains = [ "~." ];
119 networkConfig = {
120 DHCP = true;
121 DNSSEC = true;
122 };
123 dhcpV6Config = {
124 PrefixDelegationHint = "::/64";
125 WithoutRA = "solicit";
126 };
127 };
128 };
129
130 boot.kernelModules = [ "ifb" ];
131 boot.kernel.sysctl = {
132 "net.ipv6.conf.all.forwarding" = true;
133 "net.ipv6.conf.default.forwarding" = true;
134 "net.ipv4.conf.all.forwarding" = true;
135 "net.ipv4.conf.default.forwarding" = true;
136
137 "net.core.rmem_max" = 4194304;
138 "net.core.wmem_max" = 4194304;
139 };
140 systemd.services."pppd-telekom" = {
141 bindsTo = [ "sys-subsystem-net-devices-telekom.device" ];
142 after = [ "sys-subsystem-net-devices-telekom.device" ];
143 };
144 };
145}