{ config, lib, ... }: with lib; { networking = { hostName = config.machine.hostName; useNetworkd = config.machine.useNetworkd; useDHCP = !config.machine.useNetworkd; dhcpcd.enable = !config.machine.useNetworkd; }; # Based on # https://github.com/NixOS/nixpkgs/issues/10001#issuecomment-905532069 systemd.network = mkIf config.machine.useNetworkd { enable = true; networks = let networkConfig = { DHCP = "yes"; DNSSEC = "yes"; DNSOverTLS = "yes"; DNS = [ "1.1.1.1" "1.0.0.1" ]; }; in { "40-wired" = { enable = true; name = "en*"; dhcpV4Config.RouteMetric = 2048; inherit networkConfig; }; "40-wireless" = { enable = true; name = "wl*"; dhcpV4Config.RouteMetric = 1024; inherit networkConfig; }; }; }; # Wait for any interface to become available, not for all systemd.services."systemd-networkd-wait-online".serviceConfig.ExecStart = [ "" "${config.systemd.package}/lib/systemd/systemd-networkd-wait-online --any" ]; }