commit
8951505dc9
@ -1,6 +1,5 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with pkgs;
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
@ -12,7 +11,7 @@ let
|
|||||||
# /var/lib/misc is for dnsmasq.leases.
|
# /var/lib/misc is for dnsmasq.leases.
|
||||||
stateDirs = "/var/lib/NetworkManager /var/lib/dhclient /var/lib/misc";
|
stateDirs = "/var/lib/NetworkManager /var/lib/dhclient /var/lib/misc";
|
||||||
|
|
||||||
configFile = writeText "NetworkManager.conf" ''
|
configFile = pkgs.writeText "NetworkManager.conf" ''
|
||||||
[main]
|
[main]
|
||||||
plugins=keyfile
|
plugins=keyfile
|
||||||
dhcp=${cfg.dhcp}
|
dhcp=${cfg.dhcp}
|
||||||
@ -65,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 = {
|
||||||
@ -176,7 +175,8 @@ in {
|
|||||||
# Ugly hack for using the correct gnome3 packageSet
|
# Ugly hack for using the correct gnome3 packageSet
|
||||||
basePackages = mkOption {
|
basePackages = mkOption {
|
||||||
type = types.attrsOf types.package;
|
type = types.attrsOf types.package;
|
||||||
default = { inherit networkmanager modemmanager wpa_supplicant
|
default = { inherit (pkgs)
|
||||||
|
networkmanager modemmanager wpa_supplicant
|
||||||
networkmanager-openvpn networkmanager-vpnc
|
networkmanager-openvpn networkmanager-vpnc
|
||||||
networkmanager-openconnect networkmanager-fortisslvpn
|
networkmanager-openconnect networkmanager-fortisslvpn
|
||||||
networkmanager-l2tp networkmanager-iodine; };
|
networkmanager-l2tp networkmanager-iodine; };
|
||||||
@ -425,13 +425,10 @@ in {
|
|||||||
{ source = "${networkmanager-l2tp}/lib/NetworkManager/VPN/nm-l2tp-service.name";
|
{ source = "${networkmanager-l2tp}/lib/NetworkManager/VPN/nm-l2tp-service.name";
|
||||||
target = "NetworkManager/VPN/nm-l2tp-service.name";
|
target = "NetworkManager/VPN/nm-l2tp-service.name";
|
||||||
}
|
}
|
||||||
{ source = "${networkmanager_strongswan}/lib/NetworkManager/VPN/nm-strongswan-service.name";
|
|
||||||
target = "NetworkManager/VPN/nm-strongswan-service.name";
|
|
||||||
}
|
|
||||||
{ source = "${networkmanager-iodine}/lib/NetworkManager/VPN/nm-iodine-service.name";
|
{ source = "${networkmanager-iodine}/lib/NetworkManager/VPN/nm-iodine-service.name";
|
||||||
target = "NetworkManager/VPN/nm-iodine-service.name";
|
target = "NetworkManager/VPN/nm-iodine-service.name";
|
||||||
}
|
}
|
||||||
] ++ optional (cfg.appendNameservers == [] || cfg.insertNameservers == [])
|
] ++ optional (cfg.appendNameservers != [] || cfg.insertNameservers != [])
|
||||||
{ source = overrideNameserversScript;
|
{ source = overrideNameserversScript;
|
||||||
target = "NetworkManager/dispatcher.d/02overridedns";
|
target = "NetworkManager/dispatcher.d/02overridedns";
|
||||||
}
|
}
|
||||||
@ -440,11 +437,15 @@ in {
|
|||||||
target = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}";
|
target = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}";
|
||||||
mode = "0544";
|
mode = "0544";
|
||||||
}) cfg.dispatcherScripts
|
}) cfg.dispatcherScripts
|
||||||
++ optional (dynamicHostsEnabled)
|
++ optional dynamicHostsEnabled
|
||||||
{ target = "NetworkManager/dnsmasq.d/dyndns.conf";
|
{ target = "NetworkManager/dnsmasq.d/dyndns.conf";
|
||||||
text = concatMapStrings (n: ''
|
text = concatMapStrings (n: ''
|
||||||
hostsdir=/run/NetworkManager/hostsdirs/${n}
|
hostsdir=/run/NetworkManager/hostsdirs/${n}
|
||||||
'') (attrNames cfg.dynamicHosts.hostsDirs);
|
'') (attrNames cfg.dynamicHosts.hostsDirs);
|
||||||
|
}
|
||||||
|
++ optional cfg.enableStrongSwan
|
||||||
|
{ source = "${pkgs.networkmanager_strongswan}/lib/NetworkManager/VPN/nm-strongswan-service.name";
|
||||||
|
target = "NetworkManager/VPN/nm-strongswan-service.name";
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = cfg.packages;
|
environment.systemPackages = cfg.packages;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user