From 8da6495ab78c8747c8f095a9d59487a588819a19 Mon Sep 17 00:00:00 2001 From: chn Date: Thu, 21 Mar 2024 14:34:11 +0800 Subject: [PATCH] system.networking: add networkd support --- modules/services/xray.nix | 1 + modules/system/networking.nix | 39 ++++++++++++++++++++++++++++++----- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/modules/services/xray.nix b/modules/services/xray.nix index 37d3d2da..49a3b3b0 100644 --- a/modules/services/xray.nix +++ b/modules/services/xray.nix @@ -122,6 +122,7 @@ inputs: } ''; }; + resolved.enable = false; }; sops = { diff --git a/modules/system/networking.nix b/modules/system/networking.nix index 22dd9fce..05f2ad59 100644 --- a/modules/system/networking.nix +++ b/modules/system/networking.nix @@ -3,11 +3,14 @@ inputs: options.nixos.system.networking = let inherit (inputs.lib) mkOption types; in { hostname = mkOption { type = types.nonEmptyStr; }; + networkd = + { + dhcp = mkOption { type = types.listOf types.nonEmptyStr; default = []; }; + }; }; - config = - let - inherit (inputs.config.nixos.system) networking; - in + config = let inherit (inputs.config.nixos.system) networking; in inputs.lib.mkMerge + [ + # general config { networking = { @@ -44,5 +47,31 @@ inputs: "net.bridge.bridge-nf-call-ip6tables" = false; "net.bridge.bridge-nf-call-arptables" = false; }; - }; + } + # networkd + (inputs.lib.mkIf (networking.networkd.dhcp != []) + { + systemd.network = + { + enable = true; + networks = builtins.listToAttrs (builtins.map + (network: + { + name = "10-${network}"; + value = + { + matchConfig.name = network; + networkConfig = + { + DHCP = "yes"; + IPv6AcceptRA = true; + }; + linkConfig.RequiredForOnline = "routable"; + }; + }) + networking.networkd.dhcp); + }; + networking = { useDHCP = false; networkmanager.unmanaged = networking.networkd.dhcp; }; + }) + ]; }