From 1ff7584a3097d966d2d1ff85f83bd2a872251dd6 Mon Sep 17 00:00:00 2001 From: Rickard Nilsson Date: Tue, 20 Aug 2013 13:36:01 +0200 Subject: [PATCH] networkmanager: Add option for appending DNS settings If the option is enabled, the DNS servers from networking.nameservers will be inserted in /etc/resolv.conf after the DNS servers that NetworkManager receieves by DHCP, or that is configured manually in the connection settings. --- .../services/networking/networkmanager.nix | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/modules/services/networking/networkmanager.nix b/modules/services/networking/networkmanager.nix index 75db6bf51ad4..7750f3d06f6d 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"; };