|
1 | | -args@{ hostname |
2 | | -, # hostname of the router |
3 | | - lanMac ? null |
4 | | -, # MAC address of the local area network interface |
5 | | - wanMac |
6 | | -, # MAC address of the upstream interface |
7 | | - lanIp |
8 | | -, # IP adderss/subnet |
| 1 | +args@{ |
| 2 | + hostname, |
| 3 | + # hostname of the router |
| 4 | + lanMac ? null, |
| 5 | + # MAC address of the local area network interface |
| 6 | + wanMac, |
| 7 | + # MAC address of the upstream interface |
| 8 | + lanIp, # IP adderss/subnet |
9 | 9 | }: |
10 | 10 |
|
11 | | -{ config, pkgs, lib, ... }: |
| 11 | +{ |
| 12 | + config, |
| 13 | + pkgs, |
| 14 | + lib, |
| 15 | + ... |
| 16 | +}: |
12 | 17 | let |
13 | 18 | ifNotNull = maybeNull: attrSet: lib.attrsets.optionalAttrs (!builtins.isNull maybeNull) attrSet; |
14 | 19 | in |
|
28 | 33 | services.nftables.internetHostOverride = gatewayAddress; |
29 | 34 | services.nftables.lanInterfaces = "lan"; |
30 | 35 |
|
31 | | - environment.systemPackages = with pkgs; [ htop vim curl dig tcpdump cargo ]; |
| 36 | + environment.systemPackages = with pkgs; [ |
| 37 | + htop |
| 38 | + vim |
| 39 | + curl |
| 40 | + dig |
| 41 | + tcpdump |
| 42 | + cargo |
| 43 | + ]; |
32 | 44 |
|
33 | 45 | networking.hostName = args.hostname; |
34 | 46 | networking.useDHCP = true; |
|
54 | 66 | }; |
55 | 67 | }; |
56 | 68 |
|
57 | | - networking = { firewall.enable = false; }; |
| 69 | + networking = { |
| 70 | + firewall.enable = false; |
| 71 | + }; |
58 | 72 | hardware.bluetooth.enable = false; |
59 | 73 |
|
60 | 74 | boot.kernel.sysctl = { |
|
85 | 99 |
|
86 | 100 | networking.wireguard.interfaces.staging = { |
87 | 101 | privateKeyFile = "/staging-wg-private-key"; |
88 | | - ips = [ "10.64.9.184/32" "fc00:bbbb:bbbb:bb01::a40:9b8/128" ]; |
| 102 | + ips = [ |
| 103 | + "10.64.9.184/32" |
| 104 | + "fc00:bbbb:bbbb:bb01::a40:9b8/128" |
| 105 | + ]; |
89 | 106 | allowedIPsAsRoutes = true; |
90 | 107 | # postSetup could be used to dynamically fetch the IP of the staging API and set up the route to that IP through this interface too. |
91 | 108 | # postSetup = ''''; |
92 | | - peers = [{ |
93 | | - publicKey = "2KS+F8ZAOUSMwygl2CYqkqFhbi3L5u58b3kIpaylaEk="; |
94 | | - name = "se-sto-wg-001-staging"; |
95 | | - endpoint = "85.203.53.81:51820"; |
96 | | - allowedIPs = [ |
97 | | - # api.stagemole.eu |
98 | | - "185.217.116.129/32" |
99 | | - # api-app.stagemole.eu |
100 | | - "185.217.116.132/32" |
101 | | - # api-partners.stagemole.eu |
102 | | - "185.217.116.131/32" |
103 | | - ]; |
104 | | - }]; |
| 109 | + peers = [ |
| 110 | + { |
| 111 | + publicKey = "2KS+F8ZAOUSMwygl2CYqkqFhbi3L5u58b3kIpaylaEk="; |
| 112 | + name = "se-sto-wg-001-staging"; |
| 113 | + endpoint = "85.203.53.81:51820"; |
| 114 | + allowedIPs = [ |
| 115 | + # api.stagemole.eu |
| 116 | + "185.217.116.129/32" |
| 117 | + # api-app.stagemole.eu |
| 118 | + "185.217.116.132/32" |
| 119 | + # api-partners.stagemole.eu |
| 120 | + "185.217.116.131/32" |
| 121 | + ]; |
| 122 | + } |
| 123 | + ]; |
105 | 124 | }; |
106 | 125 |
|
107 | 126 | systemd.network.enable = true; |
|
125 | 144 | UseDNS = true; |
126 | 145 | }; |
127 | 146 |
|
128 | | - dhcpV6Config = { UseDNS = true; }; |
| 147 | + dhcpV6Config = { |
| 148 | + UseDNS = true; |
| 149 | + }; |
129 | 150 | }; |
130 | 151 |
|
131 | 152 | # obtain all leases |
|
142 | 163 | linkConfig.RequiredForOnline = "enslaved"; |
143 | 164 | }; |
144 | 165 |
|
145 | | - |
146 | 166 | systemd.network.networks.lan = { |
147 | 167 | name = "lan"; |
148 | 168 | address = [ "192.168.105.1/24" ]; |
|
157 | 177 |
|
158 | 178 | dhcpServerConfig = { |
159 | 179 | ServerAddress = "192.168.105.1/24"; |
160 | | - DNS = [ "1.1.1.1" "1.0.0.1" ]; |
| 180 | + DNS = [ |
| 181 | + "1.1.1.1" |
| 182 | + "1.0.0.1" |
| 183 | + ]; |
161 | 184 | PoolOffset = 128; |
162 | 185 | EmitDNS = true; |
163 | 186 | EmitNTP = true; |
|
197 | 220 |
|
198 | 221 | services.openssh = { |
199 | 222 | enable = true; |
200 | | - ports = [ 22 2021 ]; |
| 223 | + ports = [ |
| 224 | + 22 |
| 225 | + 2021 |
| 226 | + ]; |
201 | 227 | settings.PermitRootLogin = "yes"; |
202 | 228 | }; |
203 | 229 |
|
|
217 | 243 | enable = true; |
218 | 244 | description = "Web service to apply blocking firewall rules"; |
219 | 245 | bindsTo = [ "sys-subsystem-net-devices-lan.device" ]; |
220 | | - after = [ "systemd-networkd.service" "network-online.target" ]; |
| 246 | + after = [ |
| 247 | + "systemd-networkd.service" |
| 248 | + "network-online.target" |
| 249 | + ]; |
221 | 250 | wantedBy = [ "multi-user.target" ]; |
222 | 251 | serviceConfig.ExecStart = '' |
223 | 252 | ${raas}/bin/raas ${listenAddress}:80 |
|
0 commit comments