nixos-config/hosts/thinkpad/modules/networks/default.nix

185 lines
4.5 KiB
Nix
Raw Normal View History

{ pkgs, config, ... }:
{
imports = [ ./uni.nix ];
2023-11-16 13:29:18 +01:00
age.secrets = {
wireless = {
file = ../../../../secrets/thinkpad/wireless.age;
};
"wireguard/dorm/private" = {
2023-11-16 13:29:18 +01:00
file = ../../../../secrets/thinkpad/wireguard/dorm/private.age;
owner = config.users.users.systemd-network.name;
};
"wireguard/dorm/preshared" = {
2023-11-16 13:29:18 +01:00
file = ../../../../secrets/thinkpad/wireguard/dorm/preshared.age;
owner = config.users.users.systemd-network.name;
};
2023-11-16 13:29:18 +01:00
2022-12-30 11:02:10 +01:00
};
environment.systemPackages = with pkgs; [
mtr
whois
inetutils
openssl
dnsutils
2024-01-04 00:10:15 +01:00
nmap
2024-02-11 20:01:15 +01:00
curlFull
2024-02-18 17:08:02 +01:00
wireguard-tools
];
services.resolved = {
fallbackDns = [
"9.9.9.9"
"149.112.112.112"
"2620:fe::fe"
"2620:fe::9"
];
# allow downgrade since fritzbox at home doesn't support it (yet?)
dnssec = "allow-downgrade";
};
2023-04-12 22:09:46 +02:00
networking = {
2023-10-26 12:12:45 +02:00
nftables.enable = true;
2023-04-12 22:09:46 +02:00
useNetworkd = true;
hostName = "thinkpad";
2023-08-02 18:04:26 +02:00
hostId = "d8d34032";
2023-04-12 15:05:15 +02:00
enableIPv6 = true;
wireless = {
enable = true;
userControlled.enable = true;
2023-12-24 23:40:01 +01:00
# sadly broken on my machine
scanOnLowSignal = false;
2023-11-16 13:29:18 +01:00
environmentFile = config.age.secrets.wireless.path;
networks = {
"@HOME_SSID@" = {
psk = "@HOME_PSK@";
authProtocols = [ "WPA-PSK" ];
};
"@DORM_SSID@" = {
psk = "@DORM_PSK@";
authProtocols = [ "SAE" ];
};
2023-11-20 22:46:51 +01:00
"@DORM5_SSID@" = {
priority = 5;
psk = "@DORM_PSK@";
authProtocols = [ "SAE" ];
};
"@PIXEL_SSID@" = {
psk = "@PIXEL_PSK@";
authProtocols = [ "WPA-PSK" ];
};
2023-12-17 17:22:12 +01:00
"WIFI@DB" = {
authProtocols = [ "NONE" ];
};
};
};
};
systemd.network = {
enable = true;
2023-12-23 17:30:24 +01:00
wait-online.enable = false;
config = {
networkConfig = {
SpeedMeter = true;
};
};
2023-01-15 14:27:49 +01:00
networks."10-loopback" = {
matchConfig.Name = "lo";
};
2023-10-22 15:45:30 +02:00
networks."10-wired-default" = {
matchConfig.Name = "en*";
2023-02-14 19:49:31 +01:00
linkConfig.RequiredForOnline = false;
2023-01-15 14:27:49 +01:00
networkConfig = {
DHCP = "yes";
2023-05-30 17:33:15 +02:00
IPv6AcceptRA = "yes";
IPv6PrivacyExtensions = "yes";
};
2023-01-15 14:27:49 +01:00
dhcpV4Config = {
RouteMetric = 10;
};
};
2023-01-15 14:58:38 +01:00
networks."10-wireless-home" = {
matchConfig = {
Name = "wlp9s0";
2023-04-06 11:00:53 +02:00
SSID = "Smoerrebroed";
2023-01-15 14:58:38 +01:00
};
networkConfig = {
DHCP = "yes";
IgnoreCarrierLoss = "3s";
IPv6AcceptRA = "yes";
IPv6PrivacyExtensions = "yes";
2023-01-15 14:58:38 +01:00
};
dhcpV4Config = {
RouteMetric = 20;
};
routes = [
# Route to the Model train network via raspi
2023-12-23 17:30:24 +01:00
{
routeConfig = {
Gateway = "192.168.178.63";
GatewayOnLink = true;
Destination = "192.168.179.0/24";
};
}
2023-01-15 14:58:38 +01:00
];
};
networks."15-wireless-default" = {
2023-01-15 14:27:49 +01:00
matchConfig.Name = "wlp9s0";
networkConfig = {
DHCP = "yes";
IgnoreCarrierLoss = "3s";
2023-04-12 15:05:15 +02:00
IPv6AcceptRA = "yes";
2023-05-30 17:33:15 +02:00
IPv6PrivacyExtensions = "yes";
};
2023-01-15 14:27:49 +01:00
dhcpV4Config = {
RouteMetric = 20;
2022-12-30 11:02:10 +01:00
};
2023-04-12 15:05:15 +02:00
2022-12-30 11:02:10 +01:00
};
# some wireguard interfaces
2023-10-22 15:45:30 +02:00
netdevs."30-wg0" = {
2023-01-15 14:27:49 +01:00
netdevConfig = {
Kind = "wireguard";
2023-10-22 15:45:30 +02:00
Name = "wg0";
2023-01-15 14:27:49 +01:00
};
wireguardConfig = {
2023-11-16 13:29:18 +01:00
PrivateKeyFile = config.age.secrets."wireguard/dorm/private".path;
2023-01-15 14:27:49 +01:00
ListenPort = 51820;
2023-12-23 17:30:24 +01:00
RouteTable = "main";
RouteMetric = 30;
2023-01-15 14:27:49 +01:00
};
wireguardPeers = [
{
wireguardPeerConfig = {
PublicKey = "Z5lwwHTCDr6OF4lfaCdSHNveunOn4RzuOQeyB+El9mQ=";
2023-11-16 13:29:18 +01:00
PresharedKeyFile = config.age.secrets."wireguard/dorm/preshared".path;
2024-03-09 12:40:02 +01:00
Endpoint = "nuc.rfive.de:51820";
2023-10-22 15:45:30 +02:00
AllowedIPs = "192.168.42.0/24, 192.168.43.0/24";
2023-01-15 14:27:49 +01:00
};
}
];
};
2023-10-22 15:45:30 +02:00
networks."30-wg0" = {
matchConfig.Name = "wg0";
2023-12-23 17:30:24 +01:00
linkConfig.RequiredForOnline = "carrier";
2023-05-05 23:43:40 +02:00
networkConfig = {
2023-12-27 22:22:42 +01:00
Address = "192.168.43.3/32";
2024-01-04 00:10:15 +01:00
DNS = "192.168.43.1";
Domains = "~lan";
2023-12-23 17:30:24 +01:00
DNSSEC = true;
2024-01-11 14:14:19 +01:00
BindCarrier = [ "wlp9s0" ];
2023-05-05 23:43:40 +02:00
};
2023-01-15 14:27:49 +01:00
};
};
2023-11-24 09:57:15 +01:00
programs.wireshark = {
enable = true;
package = pkgs.wireshark-qt;
};
users.groups.etherape = { };
security.wrappers.etherape = {
source = "${pkgs.etherape}/bin/etherape";
capabilities = "cap_net_raw,cap_net_admin+eip";
owner = "root";
group = "etherape"; # too lazy to create a new one
permissions = "u+rx,g+x";
};
}