72 lines
2.0 KiB
Nix
Raw Normal View History

2024-08-04 13:47:36 +03:00
{ config, lib, pkgs, ... }:
2023-12-23 01:26:18 +03:00
let
2024-07-17 12:56:22 +03:00
inherit (import ./hardware/networks.nix) interfaces domain hasIPv6;
2023-12-23 01:26:18 +03:00
in {
services.resolved.enable = true;
networking = {
2024-07-17 12:56:22 +03:00
enableIPv6 = lib.mkForce hasIPv6;
usePredictableInterfaceNames = lib.mkForce true;
2023-12-23 01:26:18 +03:00
useDHCP = false;
dhcpcd.enable = false;
nftables.enable = false; # incompatible with tailscale and docker
hostName = config.device;
domain = domain;
};
systemd.network = with interfaces.main'; {
enable = true;
wait-online.ignoredInterfaces = [ "lo" ];
networks = {
"40-${ifname}" = {
matchConfig.Name = ifname;
linkConfig.RequiredForOnline = "enslaved";
networkConfig.Bridge = bridgeName;
networkConfig.DHCP = "no";
};
"60-${bridgeName}" = {
matchConfig.Name = bridgeName;
address = [
IPv4.address
"192.168.0.1/24"
2024-07-17 12:56:22 +03:00
] ++ lib.optionals hasIPv6 [
IPv6.address
2023-12-23 01:26:18 +03:00
"fc00::1/64"
];
linkConfig.RequiredForOnline = "routable";
networkConfig = {
2024-01-12 23:57:57 +03:00
DHCPServer = true;
2023-12-23 01:26:18 +03:00
IPForward = true;
2024-01-12 23:57:57 +03:00
# IPv6PrivacyExtensions = "kernel";
2024-07-17 12:56:22 +03:00
DNS = IPv4.dns ++ lib.optionals hasIPv6 IPv6.dns;
2023-12-23 01:26:18 +03:00
};
routes = [{
routeConfig.Gateway = IPv4.gateway;
routeConfig.GatewayOnLink = true;
2024-07-17 12:56:22 +03:00
}] ++ lib.optionals hasIPv6 [{
2023-12-23 01:26:18 +03:00
routeConfig.Gateway = IPv6.gateway;
routeConfig.GatewayOnLink = true;
2024-01-12 23:57:57 +03:00
}];
dhcpServerConfig = {
ServerAddress = "192.168.0.1/24";
PoolOffset = 100;
PoolSize = 100;
};
2023-12-23 01:26:18 +03:00
};
};
netdevs = {
"60-${bridgeName}" = {
netdevConfig = {
Kind = "bridge";
Name = bridgeName;
2024-01-12 23:57:57 +03:00
MACAddress = mac;
2023-12-23 01:26:18 +03:00
};
};
};
};
2024-08-04 13:47:36 +03:00
system.activationScripts.udp-gro-forwarding = {
text = with interfaces.main'; ''
2024-09-11 18:03:05 +03:00
${pkgs.ethtool}/bin/ethtool -K ${bridgeName} rx-udp-gro-forwarding on rx-gro-list off
2024-08-04 13:47:36 +03:00
'';
};
2023-12-23 01:26:18 +03:00
}