networkmanager service: fix simultaneous append and insert of nameservers

Before only one of them could work at the same time.
This commit is contained in:
Nikolay Amiantov 2019-06-10 18:29:13 +03:00
parent 68de116eb4
commit 33b7e5f6c7

View File

@ -64,19 +64,19 @@ let
}); });
''; '';
ns = xs: writeText "nameservers" ( ns = xs: pkgs.writeText "nameservers" (
concatStrings (map (s: "nameserver ${s}\n") xs) concatStrings (map (s: "nameserver ${s}\n") xs)
); );
overrideNameserversScript = writeScript "02overridedns" '' overrideNameserversScript = pkgs.writeScript "02overridedns" ''
#!/bin/sh #!/bin/sh
tmp=`${coreutils}/bin/mktemp` PATH=${with pkgs; makeBinPath [ gnused gnugrep coreutils ]}
${gnused}/bin/sed '/nameserver /d' /etc/resolv.conf > $tmp tmp=`mktemp`
${gnugrep}/bin/grep 'nameserver ' /etc/resolv.conf | \ sed '/nameserver /d' /etc/resolv.conf > $tmp
${gnugrep}/bin/grep -vf ${ns (cfg.appendNameservers ++ cfg.insertNameservers)} > $tmp.ns grep 'nameserver ' /etc/resolv.conf | \
${optionalString (cfg.appendNameservers != []) "${coreutils}/bin/cat $tmp $tmp.ns ${ns cfg.appendNameservers} > /etc/resolv.conf"} grep -vf ${ns (cfg.appendNameservers ++ cfg.insertNameservers)} > $tmp.ns
${optionalString (cfg.insertNameservers != []) "${coreutils}/bin/cat $tmp ${ns cfg.insertNameservers} $tmp.ns > /etc/resolv.conf"} cat $tmp ${ns cfg.insertNameservers} $tmp.ns ${ns cfg.appendNameservers} > /etc/resolv.conf
${coreutils}/bin/rm -f $tmp $tmp.ns rm -f $tmp $tmp.ns
''; '';
dispatcherTypesSubdirMap = { dispatcherTypesSubdirMap = {