diff --git a/modules/services/networking/networkmanager.nix b/modules/services/networking/networkmanager.nix
index 75db6bf51ad..7750f3d06f6 100644
--- a/modules/services/networking/networkmanager.nix
+++ b/modules/services/networking/networkmanager.nix
@@ -46,8 +46,8 @@ let
overrideNameserversScript = writeScript "02overridedns" ''
#!/bin/sh
- ${pkgs.gnused}/bin/sed -i '/nameserver /d' /etc/resolv.conf
- ${pkgs.lib.concatStringsSep ";" (map (s: "echo 'nameserver ${s}' >> /etc/resolv.conf") config.networking.nameservers)}
+ ${optionalString cfg.overrideNameservers "${gnused}/bin/sed -i '/nameserver /d' /etc/resolv.conf"}
+ ${concatStringsSep ";" (map (s: "echo 'nameserver ${s}' >> /etc/resolv.conf") config.networking.nameservers)}
'';
in {
@@ -84,7 +84,18 @@ in {
description = ''
If enabled, any nameservers received by DHCP or configured in
NetworkManager will be replaced by the nameservers configured
- in the networking.nameservers option.
+ in the networking.nameservers option. This
+ option overrides the appendNameservers option
+ if both are enabled.
+ '';
+ };
+
+ appendNameservers = mkOption {
+ default = false;
+ description = ''
+ If enabled, the name servers configured in the
+ networking.nameservers option will be appended
+ to the ones configured in NetworkManager or received by DHCP.
'';
};
@@ -117,7 +128,7 @@ in {
{ source = "${networkmanager_openconnect}/etc/NetworkManager/VPN/nm-openconnect-service.name";
target = "NetworkManager/VPN/nm-openconnect-service.name";
}
- ] ++ pkgs.lib.optional cfg.overrideNameservers
+ ] ++ pkgs.lib.optional (cfg.overrideNameservers || cfg.appendNameservers)
{ source = overrideNameserversScript;
target = "NetworkManager/dispatcher.d/02overridedns";
};