From 3511f194c5fba2fe267781c86b43e8944adcf41d Mon Sep 17 00:00:00 2001 From: Grisha Shipunov Date: Sun, 5 Jan 2025 22:39:06 +0100 Subject: back to declarative network --- hosts/toaster/network/default.nix | 78 +++++++++++++++++++++++++-------------- 1 file changed, 51 insertions(+), 27 deletions(-) (limited to 'hosts/toaster/network') diff --git a/hosts/toaster/network/default.nix b/hosts/toaster/network/default.nix index 2bb5b39..24b3854 100644 --- a/hosts/toaster/network/default.nix +++ b/hosts/toaster/network/default.nix @@ -1,39 +1,63 @@ -{ lib, config, ... }: { +{ lib, config, pkgs, ... }: { imports = [ ./mullvad.nix ./dumpdvb.nix ./zw.nix ]; - # Networkmanager shouldn't interfere with systemd managed interfaces - networking.networkmanager.unmanaged = - let - systemd_netdevs = lib.attrsets.attrValues (lib.attrsets.mapAttrs (_name: value: value.netdevConfig.Name) config.systemd.network.netdevs); - in - systemd_netdevs; + environment.systemPackages = with pkgs; [ iwgtk ]; - systemd.network ={ - enable = true; - wait-online.enable = false; # uplink is managed by networkmanager - }; + # kick out networkmanager + networking.networkmanager.enable = lib.mkForce false; + networking.useNetworkd = true; + systemd.network.enable = true; - users.users."0xa".extraGroups = [ "networkmanager" ]; + networking = { + hostName = "toaster"; + firewall.enable = true; + wireguard.enable = true; + wireless.iwd.enable = true; + }; - networking = { - hostName = "toaster"; - firewall.enable = true; - wireguard.enable = true; - }; + services.resolved = { + enable = true; + dnssec = "allow-downgrade"; + fallbackDns = [ + "9.9.9.9" + "2620:fe::fe" + "149.112.112.112" + "2620:fe::9" + ]; + }; + + # we might have no interwebs at all + systemd.network.wait-online.enable = false; - services.resolved = { - enable = true; - dnssec = "allow-downgrade"; - fallbackDns = [ - "9.9.9.9" - "2620:fe::fe" - "149.112.112.112" - "2620:fe::9" - ]; + # uplinks + systemd.network.networks = { + "10-ether-uplink" = { + matchConfig.Name = "enp1s0f0"; + networkConfig = { + DHCP = "yes"; + IPv6AcceptRA = true; + }; + }; + "10-dock-uplink" = { + matchConfig.Name = "enp5s0f4u1u1"; + networkConfig = { + DHCP = "yes"; + IPv6AcceptRA = true; + }; + dhcpV4Config = { RouteMetric = 666; }; + dhcpV6Config = { RouteMetric = 666; }; + }; + "wlan-uplink" = { + matchConfig.Name = "wlan0"; + networkConfig = { + DHCP = "yes"; + IPv6AcceptRA = true; + }; }; + }; - } +} -- cgit v1.3.1