@ -5,18 +5,6 @@ with lib;
let
cfg = config . networking . networkmanager ;
basePackages = with pkgs ; [
modemmanager
networkmanager
networkmanager-fortisslvpn
networkmanager-iodine
networkmanager-l2tp
networkmanager-openconnect
networkmanager-openvpn
networkmanager-vpnc
networkmanager-sstp
] ++ optional ( ! delegateWireless && ! enableIwd ) wpa_supplicant ;
delegateWireless = config . networking . wireless . enable == true && cfg . unmanaged != [ ] ;
enableIwd = cfg . wifi . backend == " i w d " ;
@ -145,6 +133,15 @@ let
'' ;
} ;
packages = [
pkgs . modemmanager
pkgs . networkmanager
]
++ cfg . plugins
++ lib . optionals ( ! delegateWireless && ! enableIwd ) [
pkgs . wpa_supplicant
] ;
in {
meta = {
@ -227,13 +224,29 @@ in {
'' ;
} ;
packages = mkOption {
type = types . listOf types . package ;
plugins = mkOption {
type =
let
networkManagerPluginPackage = types . package // {
description = " N e t w o r k M a n a g e r p l u g - i n " ;
check =
p :
lib . assertMsg
( types . package . check p
&& p ? networkManagerPlugin
&& lib . isString p . networkManagerPlugin )
''
Package ‘ $ { p . name } ’ , is not a NetworkManager plug-in .
Those need to have a ‘ networkManagerPlugin ’ attribute .
'' ;
} ;
in
types . listOf networkManagerPluginPackage ;
default = [ ] ;
description = ''
Extra packages that provide NetworkManager plugins .
List of NetworkManager plug-ins to enable .
Some plug-ins are enabled by the NetworkManager module by default .
'' ;
apply = list : basePackages ++ list ;
} ;
dhcp = mkOption {
@ -380,7 +393,7 @@ in {
< /para > <para>
If you enable this option the
<literal> networkmanager_strongswan < /literal > plugin will be added to
the <option> networking . networkmanager . package s < /option > option
the <option> networking . networkmanager . plugin s < /option > option
so you don't need to to that yourself .
'' ;
} ;
@ -399,6 +412,9 @@ in {
} ;
imports = [
( mkRenamedOptionModule
[ " n e t w o r k i n g " " n e t w o r k m a n a g e r " " p a c k a g e s " ]
[ " n e t w o r k i n g " " n e t w o r k m a n a g e r " " p l u g i n s " ] )
( mkRenamedOptionModule [ " n e t w o r k i n g " " n e t w o r k m a n a g e r " " u s e D n s m a s q " ] [ " n e t w o r k i n g " " n e t w o r k m a n a g e r " " d n s " ] )
( mkRemovedOptionModule [ " n e t w o r k i n g " " n e t w o r k m a n a g e r " " d y n a m i c H o s t s " ] ''
This option was removed because allowing ( multiple ) regular users to
@ -426,31 +442,12 @@ in {
hardware . wirelessRegulatoryDatabase = true ;
environment . etc = with pkgs ; {
" N e t w o r k M a n a g e r / N e t w o r k M a n a g e r . c o n f " . source = configFile ;
" N e t w o r k M a n a g e r / V P N / n m - o p e n v p n - s e r v i c e . n a m e " . source =
" ${ networkmanager-openvpn } / l i b / N e t w o r k M a n a g e r / V P N / n m - o p e n v p n - s e r v i c e . n a m e " ;
" N e t w o r k M a n a g e r / V P N / n m - v p n c - s e r v i c e . n a m e " . source =
" ${ networkmanager-vpnc } / l i b / N e t w o r k M a n a g e r / V P N / n m - v p n c - s e r v i c e . n a m e " ;
" N e t w o r k M a n a g e r / V P N / n m - o p e n c o n n e c t - s e r v i c e . n a m e " . source =
" ${ networkmanager-openconnect } / l i b / N e t w o r k M a n a g e r / V P N / n m - o p e n c o n n e c t - s e r v i c e . n a m e " ;
" N e t w o r k M a n a g e r / V P N / n m - f o r t i s s l v p n - s e r v i c e . n a m e " . source =
" ${ networkmanager-fortisslvpn } / l i b / N e t w o r k M a n a g e r / V P N / n m - f o r t i s s l v p n - s e r v i c e . n a m e " ;
" N e t w o r k M a n a g e r / V P N / n m - l 2 t p - s e r v i c e . n a m e " . source =
" ${ networkmanager-l2tp } / l i b / N e t w o r k M a n a g e r / V P N / n m - l 2 t p - s e r v i c e . n a m e " ;
" N e t w o r k M a n a g e r / V P N / n m - i o d i n e - s e r v i c e . n a m e " . source =
" ${ networkmanager-iodine } / l i b / N e t w o r k M a n a g e r / V P N / n m - i o d i n e - s e r v i c e . n a m e " ;
" N e t w o r k M a n a g e r / V P N / n m - s s t p - s e r v i c e . n a m e " . source =
" ${ networkmanager-sstp } / l i b / N e t w o r k M a n a g e r / V P N / n m - s s t p - s e r v i c e . n a m e " ;
environment . etc = {
" N e t w o r k M a n a g e r / N e t w o r k M a n a g e r . c o n f " . source = configFile ;
}
// builtins . listToAttrs ( map ( pkg : nameValuePair " N e t w o r k M a n a g e r / ${ pkg . networkManagerPlugin } " {
source = " ${ pkg } / l i b / N e t w o r k M a n a g e r / ${ pkg . networkManagerPlugin } " ;
} ) cfg . plugins )
// optionalAttrs cfg . enableFccUnlock
{
" M o d e m M a n a g e r / f c c - u n l o c k . d " . source =
@ -460,18 +457,13 @@ in {
{
" N e t w o r k M a n a g e r / d i s p a t c h e r . d / 0 2 o v e r r i d e d n s " . source = overrideNameserversScript ;
}
// optionalAttrs cfg . enableStrongSwan
{
" N e t w o r k M a n a g e r / V P N / n m - s t r o n g s w a n - s e r v i c e . n a m e " . source =
" ${ pkgs . networkmanager_strongswan } / l i b / N e t w o r k M a n a g e r / V P N / n m - s t r o n g s w a n - s e r v i c e . n a m e " ;
}
// listToAttrs ( lib . imap1 ( i : s :
{
name = " N e t w o r k M a n a g e r / d i s p a t c h e r . d / ${ dispatcherTypesSubdirMap . ${ s . type } } 0 3 u s e r s c r i p t ${ lib . fixedWidthNumber 4 i } " ;
value = { mode = " 0 5 4 4 " ; inherit ( s ) source ; } ;
} ) cfg . dispatcherScripts ) ;
environment . systemPackages = cfg . packages ;
environment . systemPackages = packages ;
users . groups = {
networkmanager . gid = config . ids . gids . networkmanager ;
@ -490,7 +482,7 @@ in {
} ;
} ;
systemd . packages = cfg . packages ;
systemd . packages = packages ;
systemd . tmpfiles . rules = [
" d / e t c / N e t w o r k M a n a g e r / s y s t e m - c o n n e c t i o n s 0 7 0 0 r o o t r o o t - "
@ -534,8 +526,20 @@ in {
useDHCP = false ;
} )
{
networkmanager . plugins = with pkgs ; [
networkmanager-fortisslvpn
networkmanager-iodine
networkmanager-l2tp
networkmanager-openconnect
networkmanager-openvpn
networkmanager-vpnc
networkmanager-sstp
] ;
}
( mkIf cfg . enableStrongSwan {
networkmanager . packages = [ pkgs . networkmanager_strongswan ] ;
networkmanager . plugin s = [ pkgs . networkmanager_strongswan ] ;
} )
( mkIf enableIwd {
@ -559,10 +563,10 @@ in {
security . polkit . enable = true ;
security . polkit . extraConfig = polkitConf ;
services . dbus . packages = cfg . packages
services . dbus . packages = packages
++ optional cfg . enableStrongSwan pkgs . strongswanNM
++ optional ( cfg . dns == " d n s m a s q " ) pkgs . dnsmasq ;
services . udev . packages = cfg . packages ;
services . udev . packages = packages ;
} ;
}