networkmanager: Add option for overriding DNS settings
If the option is enabled, the DNS servers from networking.nameservers will be inserted in /etc/resolv.con and override any DNS servers that NetworkManager receieves by DHCP, or that is configured manually in the connection settings.
This commit is contained in:
parent
f7d11af98a
commit
e36e979d38
@ -44,13 +44,21 @@ let
|
||||
fi
|
||||
'';
|
||||
|
||||
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)}
|
||||
'';
|
||||
|
||||
in {
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
networking.networkmanager.enable = mkOption {
|
||||
networking.networkmanager = {
|
||||
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
merge = mergeEnableOption;
|
||||
description = ''
|
||||
@ -62,7 +70,7 @@ in {
|
||||
'';
|
||||
};
|
||||
|
||||
networking.networkmanager.packages = mkOption {
|
||||
packages = mkOption {
|
||||
default = [ ];
|
||||
description = ''
|
||||
Extra packages that provide NetworkManager plugins.
|
||||
@ -70,6 +78,17 @@ in {
|
||||
merge = mergeListOption;
|
||||
apply = list: [ networkmanager modemmanager wpa_supplicant ] ++ list;
|
||||
};
|
||||
|
||||
overrideNameservers = mkOption {
|
||||
default = false;
|
||||
description = ''
|
||||
If enabled, any nameservers received by DHCP or configured in
|
||||
NetworkManager will be replaced by the nameservers configured
|
||||
in the <literal>networking.nameservers</literal> option.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@ -98,7 +117,10 @@ in {
|
||||
{ source = "${networkmanager_openconnect}/etc/NetworkManager/VPN/nm-openconnect-service.name";
|
||||
target = "NetworkManager/VPN/nm-openconnect-service.name";
|
||||
}
|
||||
];
|
||||
] ++ pkgs.lib.optional cfg.overrideNameservers
|
||||
{ source = overrideNameserversScript;
|
||||
target = "NetworkManager/dispatcher.d/02overridedns";
|
||||
};
|
||||
|
||||
environment.systemPackages = cfg.packages ++ [
|
||||
networkmanager_openvpn
|
||||
|
Loading…
x
Reference in New Issue
Block a user