summary refs log tree commit diff
path: root/pkgs/tools/networking/network-manager
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/networking/network-manager')
-rw-r--r--pkgs/tools/networking/network-manager/applet.nix15
-rw-r--r--pkgs/tools/networking/network-manager/fortisslvpn.nix43
-rw-r--r--pkgs/tools/networking/network-manager/fortisslvpn/default.nix45
-rw-r--r--pkgs/tools/networking/network-manager/fortisslvpn/fix-paths.patch11
-rw-r--r--pkgs/tools/networking/network-manager/iodine.nix46
-rw-r--r--pkgs/tools/networking/network-manager/iodine/default.nix47
-rw-r--r--pkgs/tools/networking/network-manager/iodine/fix-paths.patch11
-rw-r--r--pkgs/tools/networking/network-manager/l2tp.nix52
-rw-r--r--pkgs/tools/networking/network-manager/l2tp/default.nix48
-rw-r--r--pkgs/tools/networking/network-manager/l2tp/fix-paths.patch20
-rw-r--r--pkgs/tools/networking/network-manager/libnm-gtk-mbpi.patch33
-rw-r--r--pkgs/tools/networking/network-manager/openconnect/default.nix (renamed from pkgs/tools/networking/network-manager/openconnect.nix)29
-rw-r--r--pkgs/tools/networking/network-manager/openconnect/fix-paths.patch20
-rw-r--r--pkgs/tools/networking/network-manager/openvpn/default.nix17
-rw-r--r--pkgs/tools/networking/network-manager/strongswan.nix35
-rw-r--r--pkgs/tools/networking/network-manager/vpnc.nix45
-rw-r--r--pkgs/tools/networking/network-manager/vpnc/default.nix42
-rw-r--r--pkgs/tools/networking/network-manager/vpnc/fix-paths.patch31
18 files changed, 354 insertions, 236 deletions
diff --git a/pkgs/tools/networking/network-manager/applet.nix b/pkgs/tools/networking/network-manager/applet.nix
index 52e350c6319e..0b6a7e622a86 100644
--- a/pkgs/tools/networking/network-manager/applet.nix
+++ b/pkgs/tools/networking/network-manager/applet.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, meson, ninja, intltool, gtk-doc, pkgconfig, networkmanager, gnome3
 , libnotify, libsecret, polkit, isocodes, modemmanager, libxml2, docbook_xsl
 , mobile-broadband-provider-info, glib-networking, gsettings-desktop-schemas
-, libgudev, hicolor-icon-theme, jansson, wrapGAppsHook, webkitgtk, gobjectIntrospection
+, libgudev, jansson, wrapGAppsHook, gobjectIntrospection
 , libappindicator-gtk3, withGnome ? false }:
 
 let
@@ -15,27 +15,28 @@ in stdenv.mkDerivation rec {
     sha256 = "0lmlkh4yyl9smvkgrzshn127zqfbp9f41f448ks8dlhhm38s38v2";
   };
 
+  patches = [
+    # https://gitlab.gnome.org/GNOME/network-manager-applet/merge_requests/19
+    ./libnm-gtk-mbpi.patch
+  ];
+
   mesonFlags = [
     "-Dselinux=false"
     "-Dappindicator=yes"
     "-Dgcr=${if withGnome then "true" else "false"}"
   ];
 
-  outputs = [ "out" "dev" "devdoc" ];
+  outputs = [ "out" "lib" "dev" "devdoc" "man" ];
 
   buildInputs = [
     gnome3.gtk networkmanager libnotify libsecret gsettings-desktop-schemas
     polkit isocodes mobile-broadband-provider-info libgudev
     modemmanager jansson glib-networking
     libappindicator-gtk3
-  ] ++ stdenv.lib.optionals withGnome [ gnome3.gcr webkitgtk ];
+  ] ++ stdenv.lib.optionals withGnome [ gnome3.gcr ]; # advanced certificate chooser
 
   nativeBuildInputs = [ meson ninja intltool pkgconfig wrapGAppsHook gobjectIntrospection gtk-doc docbook_xsl libxml2 ];
 
-  propagatedUserEnvPkgs = [
-    hicolor-icon-theme
-  ];
-
   postPatch = ''
     chmod +x meson_post_install.py # patchShebangs requires executable file
     patchShebangs meson_post_install.py
diff --git a/pkgs/tools/networking/network-manager/fortisslvpn.nix b/pkgs/tools/networking/network-manager/fortisslvpn.nix
deleted file mode 100644
index ab49514d720b..000000000000
--- a/pkgs/tools/networking/network-manager/fortisslvpn.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{ stdenv, fetchurl, openfortivpn, automake, autoconf, libtool, intltool, pkgconfig,
-networkmanager, ppp, libsecret, withGnome ? true, gnome3 }:
-
-let
-  pname   = "NetworkManager-fortisslvpn";
-  version = "1.2.8";
-in stdenv.mkDerivation rec {
-  name    = "${pname}${if withGnome then "-gnome" else ""}-${version}";
-
-  src = fetchurl {
-    url    = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "01gvdv9dknvzx05plq863jh1xz1v8vgj5w7v9fmw5v601ggybf4w";
-  };
-
-  buildInputs = [ openfortivpn networkmanager ppp libtool libsecret ]
-    ++ stdenv.lib.optionals withGnome [ gnome3.gtk gnome3.libgnome-keyring gnome3.networkmanagerapplet ];
-
-  nativeBuildInputs = [ automake autoconf intltool pkgconfig ];
-
-  configureFlags = [
-    "${if withGnome then "--with-gnome" else "--without-gnome"}"
-    "--disable-static"
-    "--localstatedir=/tmp"
-  ];
-
-  preConfigure = ''
-     substituteInPlace "src/nm-fortisslvpn-service.c" \
-       --replace "/bin/openfortivpn" "${openfortivpn}/bin/openfortivpn"
-  '';
-
-  passthru = {
-    updateScript = gnome3.updateScript {
-      packageName = pname;
-      attrPath = "networkmanager-fortisslvpn";
-    };
-  };
-
-  meta = {
-    description = "NetworkManager's FortiSSL plugin";
-    inherit (networkmanager.meta) maintainers platforms;
-  };
-}
-
diff --git a/pkgs/tools/networking/network-manager/fortisslvpn/default.nix b/pkgs/tools/networking/network-manager/fortisslvpn/default.nix
new file mode 100644
index 000000000000..11b29081f9bb
--- /dev/null
+++ b/pkgs/tools/networking/network-manager/fortisslvpn/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, substituteAll, openfortivpn, intltool, pkgconfig,
+networkmanager, ppp, libsecret, withGnome ? true, gnome3 }:
+
+let
+  pname = "NetworkManager-fortisslvpn";
+  version = "1.2.8";
+in stdenv.mkDerivation rec {
+  name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "01gvdv9dknvzx05plq863jh1xz1v8vgj5w7v9fmw5v601ggybf4w";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit openfortivpn;
+    })
+  ];
+
+  buildInputs = [ openfortivpn networkmanager ppp ]
+    ++ stdenv.lib.optionals withGnome [ gnome3.gtk libsecret gnome3.networkmanagerapplet ];
+
+  nativeBuildInputs = [ intltool pkgconfig ];
+
+  configureFlags = [
+    "--with-gnome=${if withGnome then "yes" else "no"}"
+    "--localstatedir=/tmp"
+  ];
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      attrPath = "networkmanager-fortisslvpn";
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "NetworkManager's FortiSSL plugin";
+    inherit (networkmanager.meta) maintainers platforms;
+    license = licenses.gpl2;
+  };
+}
+
diff --git a/pkgs/tools/networking/network-manager/fortisslvpn/fix-paths.patch b/pkgs/tools/networking/network-manager/fortisslvpn/fix-paths.patch
new file mode 100644
index 000000000000..a1241b6738c2
--- /dev/null
+++ b/pkgs/tools/networking/network-manager/fortisslvpn/fix-paths.patch
@@ -0,0 +1,11 @@
+--- a/src/nm-fortisslvpn-service.c
++++ b/src/nm-fortisslvpn-service.c
+@@ -387,7 +387,7 @@
+ {
+ 	static const char *openfortivpn_binary_paths[] =
+ 		{
+-			"/bin/openfortivpn",
++			"@openfortivpn@/bin/openfortivpn",
+ 			"/usr/bin/openfortivpn",
+ 			"/usr/local/bin/openfortivpn",
+ 			NULL
diff --git a/pkgs/tools/networking/network-manager/iodine.nix b/pkgs/tools/networking/network-manager/iodine.nix
deleted file mode 100644
index cbc0e6e6d2d1..000000000000
--- a/pkgs/tools/networking/network-manager/iodine.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ stdenv, fetchurl, iodine, intltool, pkgconfig, networkmanager, libsecret
-, withGnome ? true, gnome3 }:
-
-let
-  pname   = "NetworkManager-iodine";
-  version = "1.2.0";
-in stdenv.mkDerivation rec {
-  name    = "${pname}${if withGnome then "-gnome" else ""}-${version}";
-
-  src = fetchurl {
-    url    = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0njdigakidji6mfmbsp8lfi8wl88z1dk8cljbva2w0xazyddbwyh";
-  };
-
-  buildInputs = [ iodine networkmanager libsecret ]
-    ++ stdenv.lib.optionals withGnome [ gnome3.gtk gnome3.libgnome-keyring
-                                        gnome3.networkmanagerapplet ];
-
-  nativeBuildInputs = [ intltool pkgconfig ];
-
-  # Fixes deprecation errors with networkmanager 1.10.2
-  NIX_CFLAGS_COMPILE = "-Wno-deprecated-declarations";
-
-  configureFlags = [
-    "${if withGnome then "--with-gnome" else "--without-gnome"}"
-    "--disable-static"
-    "--localstatedir=/" # needed for the management socket under /run/NetworkManager
-  ];
-
-  preConfigure = ''
-     substituteInPlace "src/nm-iodine-service.c" \
-       --replace "/usr/bin/iodine" "${iodine}/bin/iodine"
-  '';
-
-  passthru = {
-    updateScript = gnome3.updateScript {
-      packageName = pname;
-      attrPath = "networkmanager-iodine";
-    };
-  };
-
-  meta = {
-    description = "NetworkManager's iodine plugin";
-    inherit (networkmanager.meta) maintainers platforms;
-  };
-}
diff --git a/pkgs/tools/networking/network-manager/iodine/default.nix b/pkgs/tools/networking/network-manager/iodine/default.nix
new file mode 100644
index 000000000000..a3dbeaf82651
--- /dev/null
+++ b/pkgs/tools/networking/network-manager/iodine/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, substituteAll, iodine, intltool, pkgconfig, networkmanager, libsecret
+, withGnome ? true, gnome3 }:
+
+let
+  pname = "NetworkManager-iodine";
+  version = "1.2.0";
+in stdenv.mkDerivation rec {
+  name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "0njdigakidji6mfmbsp8lfi8wl88z1dk8cljbva2w0xazyddbwyh";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit iodine;
+    })
+  ];
+
+  buildInputs = [ iodine networkmanager ]
+    ++ stdenv.lib.optionals withGnome [ gnome3.gtk libsecret gnome3.networkmanagerapplet ];
+
+  nativeBuildInputs = [ intltool pkgconfig ];
+
+  # Fixes deprecation errors with networkmanager 1.10.2
+  NIX_CFLAGS_COMPILE = "-Wno-deprecated-declarations";
+
+  configureFlags = [
+    "--with-gnome=${if withGnome then "yes" else "no"}"
+    "--localstatedir=/" # needed for the management socket under /run/NetworkManager
+  ];
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      attrPath = "networkmanager-iodine";
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "NetworkManager's iodine plugin";
+    inherit (networkmanager.meta) maintainers platforms;
+    license = licenses.gpl2Plus;
+  };
+}
diff --git a/pkgs/tools/networking/network-manager/iodine/fix-paths.patch b/pkgs/tools/networking/network-manager/iodine/fix-paths.patch
new file mode 100644
index 000000000000..d32dbfadbafa
--- /dev/null
+++ b/pkgs/tools/networking/network-manager/iodine/fix-paths.patch
@@ -0,0 +1,11 @@
+--- a/src/nm-iodine-service.c
++++ b/src/nm-iodine-service.c
+@@ -62,7 +62,7 @@
+ 
+ static const char *iodine_binary_paths[] =
+ {
+-	"/usr/bin/iodine",
++	"@iodine@/bin/iodine",
+ 	"/usr/sbin/iodine",
+ 	"/usr/local/bin/iodine",
+ 	"/usr/local/sbin/iodine",
diff --git a/pkgs/tools/networking/network-manager/l2tp.nix b/pkgs/tools/networking/network-manager/l2tp.nix
deleted file mode 100644
index 54670ff1bce7..000000000000
--- a/pkgs/tools/networking/network-manager/l2tp.nix
+++ /dev/null
@@ -1,52 +0,0 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, libtool, intltool, pkgconfig
-, networkmanager, ppp, xl2tpd, strongswan, libsecret
-, withGnome ? true, gnome3, networkmanagerapplet }:
-
-stdenv.mkDerivation rec {
-  name    = "${pname}${if withGnome then "-gnome" else ""}-${version}";
-  pname   = "NetworkManager-l2tp";
-  version = "1.2.8";
-
-  src = fetchFromGitHub {
-    owner  = "nm-l2tp";
-    repo   = "network-manager-l2tp";
-    rev    = "${version}";
-    sha256 = "110157dpamgr7r5kb8aidi0a2ap9z2m52bff94fb4nhxacz69yv8";
-  };
-
-  buildInputs = [ networkmanager ppp libsecret ]
-    ++ stdenv.lib.optionals withGnome [ gnome3.gtk gnome3.libgnome-keyring networkmanagerapplet ];
-
-  nativeBuildInputs = [ autoreconfHook libtool intltool pkgconfig ];
-
-  postPatch = ''
-    sed -i -e 's%"\(/usr/sbin\|/usr/pkg/sbin\|/usr/local/sbin\)/[^"]*",%%g' ./src/nm-l2tp-service.c
-
-    substituteInPlace ./Makefile.am \
-      --replace '$(sysconfdir)/dbus-1/system.d' "$out/etc/dbus-1/system.d"
-
-    substituteInPlace ./src/nm-l2tp-service.c \
-      --replace /sbin/ipsec  ${strongswan}/bin/ipsec \
-      --replace /sbin/xl2tpd ${xl2tpd}/bin/xl2tpd
-  '';
-
-  preConfigure = ''
-    intltoolize -f
-  '';
-
-  configureFlags = [
-    "--with-gnome=${if withGnome then "yes" else "no"}"
-    "--localstatedir=/var"
-    "--sysconfdir=$(out)/etc"
-  ];
-
-  enableParallelBuilding = true;
-
-  meta = with stdenv.lib; {
-    description = "L2TP plugin for NetworkManager";
-    inherit (networkmanager.meta) platforms;
-    homepage = https://github.com/nm-l2tp/network-manager-l2tp;
-    license = licenses.gpl2;
-    maintainers = with maintainers; [ abbradar obadz ];
-  };
-}
diff --git a/pkgs/tools/networking/network-manager/l2tp/default.nix b/pkgs/tools/networking/network-manager/l2tp/default.nix
new file mode 100644
index 000000000000..d48d2e910f50
--- /dev/null
+++ b/pkgs/tools/networking/network-manager/l2tp/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, substituteAll, fetchFromGitHub, autoreconfHook, libtool, intltool, pkgconfig
+, networkmanager, ppp, xl2tpd, strongswan, libsecret
+, withGnome ? true, gnome3, networkmanagerapplet }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
+  pname = "NetworkManager-l2tp";
+  version = "1.2.10";
+
+  src = fetchFromGitHub {
+    owner = "nm-l2tp";
+    repo = "network-manager-l2tp";
+    rev = "${version}";
+    sha256 = "1vm004nj2n5abpywr7ji6r28scf7xs45zw4rqrm8jn7mysf96h0x";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit strongswan xl2tpd;
+    })
+  ];
+
+  buildInputs = [ networkmanager ppp ]
+    ++ stdenv.lib.optionals withGnome [ gnome3.gtk libsecret networkmanagerapplet ];
+
+  nativeBuildInputs = [ autoreconfHook libtool intltool pkgconfig ];
+
+  preConfigure = ''
+    intltoolize -f
+  '';
+
+  configureFlags = [
+    "--with-gnome=${if withGnome then "yes" else "no"}"
+    "--localstatedir=/var"
+    "--sysconfdir=$(out)/etc"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "L2TP plugin for NetworkManager";
+    inherit (networkmanager.meta) platforms;
+    homepage = https://github.com/nm-l2tp/network-manager-l2tp;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ abbradar obadz ];
+  };
+}
diff --git a/pkgs/tools/networking/network-manager/l2tp/fix-paths.patch b/pkgs/tools/networking/network-manager/l2tp/fix-paths.patch
new file mode 100644
index 000000000000..0a068ee800c6
--- /dev/null
+++ b/pkgs/tools/networking/network-manager/l2tp/fix-paths.patch
@@ -0,0 +1,20 @@
+--- a/src/nm-l2tp-service.c
++++ b/src/nm-l2tp-service.c
+@@ -480,7 +480,7 @@
+ {
+ 	static const char *ipsec_binary_paths[] =
+ 		{
+-			"/sbin/ipsec",
++			"@strongswan@/bin/ipsec",
+ 			"/usr/sbin/ipsec",
+ 			"/usr/local/sbin/ipsec",
+ 			"/sbin/strongswan",
+@@ -505,7 +505,7 @@
+ {
+ 	static const char *l2tp_binary_paths[] =
+ 		{
+-			"/sbin/xl2tpd",
++			"@xl2tpd@/bin/xl2tpd",
+ 			"/usr/sbin/xl2tpd",
+ 			"/usr/local/sbin/xl2tpd",
+ 			NULL
diff --git a/pkgs/tools/networking/network-manager/libnm-gtk-mbpi.patch b/pkgs/tools/networking/network-manager/libnm-gtk-mbpi.patch
new file mode 100644
index 000000000000..d7eef5749dba
--- /dev/null
+++ b/pkgs/tools/networking/network-manager/libnm-gtk-mbpi.patch
@@ -0,0 +1,33 @@
+--- a/meson.build
++++ b/meson.build
+@@ -137,7 +137,7 @@
+   mobile_broadband_provider_info_dep = dependency('mobile-broadband-provider-info')
+   config_h.set_quoted('MOBILE_BROADBAND_PROVIDER_INFO_DATABASE', mobile_broadband_provider_info_dep.get_pkgconfig_variable('database'))
+ else
+-  config_h.set_quoted('MOBILE_BROADBAND_PROVIDER_INFO_DATABASE', join_paths(nma_prefix, 'share', 'mobile-broadband-provider-info', 'serviceproviders.xml'))
++  config_h.set_quoted('MOBILE_BROADBAND_PROVIDER_INFO_DATABASE', join_paths(nma_datadir, 'mobile-broadband-provider-info', 'serviceproviders.xml'))
+ endif
+ 
+ gio_dep = dependency('gio-2.0', version: '>= 2.38')
+--- a/src/libnm-gtk/nm-mobile-providers.c
++++ b/src/libnm-gtk/nm-mobile-providers.c
+@@ -30,10 +30,6 @@
+ 
+ #include "nm-mobile-providers.h"
+ 
+-#ifndef MOBILE_BROADBAND_PROVIDER_INFO
+-#define MOBILE_BROADBAND_PROVIDER_INFO DATADIR"/mobile-broadband-provider-info/serviceproviders.xml"
+-#endif
+-
+ #define ISO_3166_COUNTRY_CODES ISO_CODES_PREFIX"/share/xml/iso-codes/iso_3166.xml"
+ #define ISO_CODES_LOCALESDIR ISO_CODES_PREFIX"/share/locale"
+ 
+@@ -990,7 +986,7 @@
+ 	if (!country_codes)
+ 		country_codes = ISO_3166_COUNTRY_CODES;
+ 	if (!service_providers)
+-		service_providers = MOBILE_BROADBAND_PROVIDER_INFO;
++		service_providers = MOBILE_BROADBAND_PROVIDER_INFO_DATABASE;
+ 
+ 	countries = read_country_codes (country_codes,
+ 	                                cancellable,
diff --git a/pkgs/tools/networking/network-manager/openconnect.nix b/pkgs/tools/networking/network-manager/openconnect/default.nix
index ad15723dd331..23d4c816a20d 100644
--- a/pkgs/tools/networking/network-manager/openconnect.nix
+++ b/pkgs/tools/networking/network-manager/openconnect/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, openconnect, intltool, pkgconfig, networkmanager, libsecret
-, withGnome ? true, gnome3, sysctl, kmod }:
+{ stdenv, fetchurl, substituteAll, openconnect, intltool, pkgconfig, networkmanager, libsecret
+, withGnome ? true, gnome3, kmod }:
 
 let
   pname   = "NetworkManager-openconnect";
@@ -12,24 +12,22 @@ in stdenv.mkDerivation rec {
     sha256 = "15j98wwspv6mcmy91w30as5qc1bzsnhlk060xhjy4qrvd37y0xx1";
   };
 
-  buildInputs = [ openconnect networkmanager libsecret ]
-    ++ stdenv.lib.optionals withGnome [ gnome3.gtk gnome3.libgnome-keyring ];
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit kmod openconnect;
+    })
+  ];
+
+  buildInputs = [ openconnect networkmanager ]
+    ++ stdenv.lib.optionals withGnome [ gnome3.gtk libsecret ];
 
   nativeBuildInputs = [ intltool pkgconfig ];
 
   configureFlags = [
-    "${if withGnome then "--with-gnome --with-gtkver=3" else "--without-gnome"}"
-    "--disable-static"
+    "--with-gnome=${if withGnome then "yes" else "no"}"
   ];
 
-  preConfigure = ''
-     substituteInPlace "configure" \
-       --replace "/sbin/sysctl" "${sysctl}/bin/sysctl"
-     substituteInPlace "src/nm-openconnect-service.c" \
-       --replace "/usr/sbin/openconnect" "${openconnect}/bin/openconnect" \
-       --replace "/sbin/modprobe" "${kmod}/bin/modprobe"
-  '';
-
   passthru = {
     updateScript = gnome3.updateScript {
       packageName = pname;
@@ -37,8 +35,9 @@ in stdenv.mkDerivation rec {
     };
   };
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "NetworkManager's OpenConnect plugin";
     inherit (networkmanager.meta) maintainers platforms;
+    license = licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/tools/networking/network-manager/openconnect/fix-paths.patch b/pkgs/tools/networking/network-manager/openconnect/fix-paths.patch
new file mode 100644
index 000000000000..9b342f5bd08b
--- /dev/null
+++ b/pkgs/tools/networking/network-manager/openconnect/fix-paths.patch
@@ -0,0 +1,20 @@
+--- a/src/nm-openconnect-service.c
++++ b/src/nm-openconnect-service.c
+@@ -60,7 +60,7 @@
+ 
+ static const char *openconnect_binary_paths[] =
+ {
+-	"/usr/bin/openconnect",
++	"@openconnect@/bin/openconnect",
+ 	"/usr/sbin/openconnect",
+ 	"/usr/local/bin/openconnect",
+ 	"/usr/local/sbin/openconnect",
+@@ -734,7 +734,7 @@
+ 
+ 	_LOGD ("nm-openconnect-service (version " DIST_VERSION ") starting...");
+ 
+-	if (system ("/sbin/modprobe tun") == -1)
++	if (system ("@kmod@/bin/modprobe tun") == -1)
+ 		exit (EXIT_FAILURE);
+ 
+ 	if (bus_name)
diff --git a/pkgs/tools/networking/network-manager/openvpn/default.nix b/pkgs/tools/networking/network-manager/openvpn/default.nix
index 28b7c873d364..8d3bd874718c 100644
--- a/pkgs/tools/networking/network-manager/openvpn/default.nix
+++ b/pkgs/tools/networking/network-manager/openvpn/default.nix
@@ -2,13 +2,13 @@
 , withGnome ? true, gnome3, kmod }:
 
 let
-  pname   = "NetworkManager-openvpn";
+  pname = "NetworkManager-openvpn";
   version = "1.8.4";
 in stdenv.mkDerivation rec {
-  name    = "${pname}${if withGnome then "-gnome" else ""}-${version}";
+  name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
 
   src = fetchurl {
-    url    = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
     sha256 = "0gyrv46h9k17qym48qacq4zpxbap6hi17shn921824zm98m2bdvr";
   };
 
@@ -19,15 +19,13 @@ in stdenv.mkDerivation rec {
     })
   ];
 
-  buildInputs = [ openvpn networkmanager libsecret ]
-    ++ stdenv.lib.optionals withGnome [ gnome3.gtk gnome3.libgnome-keyring
-                                        gnome3.networkmanagerapplet ];
+  buildInputs = [ openvpn networkmanager ]
+    ++ stdenv.lib.optionals withGnome [ gnome3.gtk libsecret gnome3.networkmanagerapplet ];
 
   nativeBuildInputs = [ intltool pkgconfig libxml2 ];
 
   configureFlags = [
-    "${if withGnome then "--with-gnome --with-gtkver=3" else "--without-gnome"}"
-    "--disable-static"
+    "--with-gnome=${if withGnome then "yes" else "no"}"
     "--localstatedir=/" # needed for the management socket under /run/NetworkManager
   ];
 
@@ -38,8 +36,9 @@ in stdenv.mkDerivation rec {
     };
   };
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "NetworkManager's OpenVPN plugin";
     inherit (networkmanager.meta) maintainers platforms;
+    license = licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/tools/networking/network-manager/strongswan.nix b/pkgs/tools/networking/network-manager/strongswan.nix
index fb3ba2bbdf5a..fc10fc6364c9 100644
--- a/pkgs/tools/networking/network-manager/strongswan.nix
+++ b/pkgs/tools/networking/network-manager/strongswan.nix
@@ -1,38 +1,35 @@
-{ stdenv, fetchurl, intltool, pkgconfig, networkmanager, strongswanNM, sysctl
-, gnome3, libgnome-keyring, libsecret }:
+{ stdenv, fetchurl, intltool, pkgconfig, networkmanager, strongswanNM
+, gnome3, libsecret }:
 
 stdenv.mkDerivation rec {
-  name    = "${pname}-${version}";
-  pname   = "NetworkManager-strongswan";
-  version = "1.4.3";
+  name = "${pname}-${version}";
+  pname = "NetworkManager-strongswan";
+  version = "1.4.4";
 
   src = fetchurl {
-    url    = "https://download.strongswan.org/NetworkManager/${name}.tar.bz2";
-    sha256 = "0jzl52wmh2q2djb1s546kxliy7s6akhi5bx6rp2ppjfk3wbi2a2l";
+    url = "https://download.strongswan.org/NetworkManager/${name}.tar.bz2";
+    sha256 = "1xhj5cipwbihf0cna8lpicpz7cd8fgkagpmg0xvj6pshymm5jbcd";
   };
 
-  postPatch = ''
-    sed -i "s,nm_plugindir=.*,nm_plugindir=$out/lib/NetworkManager," "configure"
-    sed -i "s,nm_libexecdir=.*,nm_libexecdir=$out/libexec," "configure"
-  '';
-
   buildInputs = [ networkmanager strongswanNM libsecret ]
-      ++ (with gnome3; [ gtk libgnome-keyring networkmanagerapplet ]);
+    ++ (with gnome3; [ gtk networkmanagerapplet ]);
 
   nativeBuildInputs = [ intltool pkgconfig ];
 
   # Fixes deprecation errors with networkmanager 1.10.2
   NIX_CFLAGS_COMPILE = "-Wno-deprecated-declarations";
 
-  preConfigure = ''
-     substituteInPlace "configure" \
-       --replace "/sbin/sysctl" "${sysctl}/bin/sysctl"
-  '';
+  configureFlags = [
+    "--with-charon=${strongswanNM}/libexec/ipsec/charon-nm"
+    "--with-nm-libexecdir=$(out)/libexec"
+    "--with-nm-plugindir=$(out)/lib/NetworkManager"
+  ];
 
-  configureFlags = [ "--with-charon=${strongswanNM}/libexec/ipsec/charon-nm" ];
+  PKG_CONFIG_LIBNM_VPNSERVICEDIR = "$(out)/lib/NetworkManager/VPN";
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "NetworkManager's strongswan plugin";
     inherit (networkmanager.meta) platforms;
+    license = licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/tools/networking/network-manager/vpnc.nix b/pkgs/tools/networking/network-manager/vpnc.nix
deleted file mode 100644
index 577e04f6648d..000000000000
--- a/pkgs/tools/networking/network-manager/vpnc.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{ stdenv, fetchurl, vpnc, intltool, pkgconfig, networkmanager, libsecret
-, withGnome ? true, gnome3, procps, kmod, file }:
-let
-  pname   = "NetworkManager-vpnc";
-  version = "1.2.6";
-in stdenv.mkDerivation rec {
-  name    = "${pname}${if withGnome then "-gnome" else ""}-${version}";
-
-  src = fetchurl {
-    url    = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "1js5lwcsqws4klgypfxl4ikmakv7v7xgddij1fj6b0y0qicx0kyy";
-  };
-
-  buildInputs = [ vpnc networkmanager libsecret ]
-    ++ stdenv.lib.optionals withGnome [ gnome3.gtk gnome3.libgnome-keyring
-                                        gnome3.networkmanagerapplet ];
-
-  nativeBuildInputs = [ intltool pkgconfig file ];
-
-  configureFlags = [
-    "${if withGnome then "--with-gnome --with-gtkver=3" else "--without-gnome"}"
-    "--disable-static"
-  ];
-
-  preConfigure = ''
-     substituteInPlace "configure" \
-       --replace "/sbin/sysctl" "${procps}/bin/sysctl"
-     substituteInPlace "src/nm-vpnc-service.c" \
-       --replace "/sbin/vpnc" "${vpnc}/bin/vpnc" \
-       --replace "/sbin/modprobe" "${kmod}/bin/modprobe"
-  '';
-
-  passthru = {
-    updateScript = gnome3.updateScript {
-      packageName = pname;
-      attrPath = "networkmanager-vpnc";
-    };
-  };
-
-  meta = {
-    description = "NetworkManager's VPNC plugin";
-    inherit (networkmanager.meta) maintainers platforms;
-  };
-}
-
diff --git a/pkgs/tools/networking/network-manager/vpnc/default.nix b/pkgs/tools/networking/network-manager/vpnc/default.nix
new file mode 100644
index 000000000000..d2b3a345d495
--- /dev/null
+++ b/pkgs/tools/networking/network-manager/vpnc/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, substituteAll, vpnc, intltool, pkgconfig, networkmanager, libsecret
+, withGnome ? true, gnome3, kmod, file }:
+let
+  pname = "NetworkManager-vpnc";
+  version = "1.2.6";
+in stdenv.mkDerivation rec {
+  name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "1js5lwcsqws4klgypfxl4ikmakv7v7xgddij1fj6b0y0qicx0kyy";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit vpnc kmod;
+    })
+  ];
+
+  buildInputs = [ vpnc networkmanager ]
+    ++ stdenv.lib.optionals withGnome [ gnome3.gtk libsecret gnome3.networkmanagerapplet ];
+
+  nativeBuildInputs = [ intltool pkgconfig file ];
+
+  configureFlags = [
+    "--with-gnome=${if withGnome then "yes" else "no"}"
+  ];
+
+  passthru = {
+    updateScript = gnome3.updateScript {
+      packageName = pname;
+      attrPath = "networkmanager-vpnc";
+    };
+  };
+
+  meta = with stdenv.lib; {
+    description = "NetworkManager's VPNC plugin";
+    inherit (networkmanager.meta) maintainers platforms;
+    license = licenses.gpl2Plus;
+  };
+}
diff --git a/pkgs/tools/networking/network-manager/vpnc/fix-paths.patch b/pkgs/tools/networking/network-manager/vpnc/fix-paths.patch
new file mode 100644
index 000000000000..98238ac01f76
--- /dev/null
+++ b/pkgs/tools/networking/network-manager/vpnc/fix-paths.patch
@@ -0,0 +1,31 @@
+--- a/properties/nm-vpnc-editor-plugin.c
++++ b/properties/nm-vpnc-editor-plugin.c
+@@ -161,7 +161,7 @@
+ 	GError *error = NULL;
+ 
+ 	const char *decrypt_possible_paths[] = {
+-		"/usr/lib/vpnc/cisco-decrypt",
++		"@vpnc@/bin/cisco-decrypt",
+ 		"/usr/bin/cisco-decrypt",
+ 		NULL
+ 	};
+--- a/src/nm-vpnc-service.c
++++ b/src/nm-vpnc-service.c
+@@ -610,7 +610,7 @@
+ find_vpnc (void)
+ {
+ 	static const char *vpnc_paths[] = {
+-		"/usr/sbin/vpnc",
++		"@vpnc@/bin/vpnc",
+ 		"/sbin/vpnc",
+ 		"/usr/local/sbin/vpnc",
+ 		NULL
+@@ -1308,7 +1308,7 @@
+ 	_LOGD ("   vpnc interactive mode is %s", interactive_available ? "enabled" : "disabled");
+ 	_LOGD ("   uses%s --bus-name \"%s\"", bus_name_free ? "" : " default", bus_name);
+ 
+-	if (system ("/sbin/modprobe tun") == -1)
++	if (system ("@kmod@/bin/modprobe tun") == -1)
+ 		exit (EXIT_FAILURE);
+ 
+ 	plugin = nm_vpnc_plugin_new (bus_name);