summary refs log tree commit diff
path: root/pkgs/tools/networking
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/networking')
-rw-r--r--pkgs/tools/networking/altermime/default.nix13
-rw-r--r--pkgs/tools/networking/argus-clients/default.nix2
-rw-r--r--pkgs/tools/networking/aria2/default.nix4
-rw-r--r--pkgs/tools/networking/cadaver/default.nix2
-rw-r--r--pkgs/tools/networking/chrony/default.nix4
-rw-r--r--pkgs/tools/networking/curl/7_59.nix1
-rw-r--r--pkgs/tools/networking/curl/default.nix3
-rw-r--r--pkgs/tools/networking/dd-agent/5.nix (renamed from pkgs/tools/networking/dd-agent/default.nix)5
-rw-r--r--pkgs/tools/networking/dd-agent/6.nix77
-rw-r--r--pkgs/tools/networking/dd-agent/deps.nix353
-rw-r--r--pkgs/tools/networking/dd-agent/integrations-core.nix91
-rw-r--r--pkgs/tools/networking/fping/default.nix7
-rw-r--r--pkgs/tools/networking/getmail/default.nix1
-rw-r--r--pkgs/tools/networking/haproxy/default.nix21
-rw-r--r--pkgs/tools/networking/infiniband-diags/default.nix6
-rw-r--r--pkgs/tools/networking/lftp/default.nix4
-rw-r--r--pkgs/tools/networking/mailutils/default.nix39
-rw-r--r--pkgs/tools/networking/megatools/default.nix6
-rw-r--r--pkgs/tools/networking/mtr/default.nix2
-rw-r--r--pkgs/tools/networking/network-manager/applet.nix32
-rw-r--r--pkgs/tools/networking/network-manager/default.nix13
-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
-rw-r--r--pkgs/tools/networking/ntp/default.nix8
-rw-r--r--pkgs/tools/networking/offlineimap/default.nix9
-rw-r--r--pkgs/tools/networking/p2p/amule/default.nix23
-rw-r--r--pkgs/tools/networking/p2p/libtorrent/default.nix8
-rw-r--r--pkgs/tools/networking/p2p/rtorrent/default.nix9
-rw-r--r--pkgs/tools/networking/polygraph/default.nix4
-rw-r--r--pkgs/tools/networking/ppp/default.nix7
-rw-r--r--pkgs/tools/networking/pptp/default.nix6
-rw-r--r--pkgs/tools/networking/reaver-wps/default.nix2
-rw-r--r--pkgs/tools/networking/siege/default.nix2
-rw-r--r--pkgs/tools/networking/slack-cli/default.nix48
-rw-r--r--pkgs/tools/networking/socat/default.nix12
-rw-r--r--pkgs/tools/networking/speedtest-cli/default.nix4
-rw-r--r--pkgs/tools/networking/spoofer/default.nix4
-rw-r--r--pkgs/tools/networking/sshpass/default.nix7
-rw-r--r--pkgs/tools/networking/ssmtp/default.nix6
-rw-r--r--pkgs/tools/networking/sstp/default.nix1
-rw-r--r--pkgs/tools/networking/surfraw/default.nix1
-rw-r--r--pkgs/tools/networking/swec/default.nix4
-rw-r--r--pkgs/tools/networking/tcpdump/default.nix8
-rw-r--r--pkgs/tools/networking/trickle/default.nix2
-rw-r--r--pkgs/tools/networking/vtun/default.nix9
-rw-r--r--pkgs/tools/networking/webalizer/default.nix9
-rw-r--r--pkgs/tools/networking/wget/default.nix5
-rw-r--r--pkgs/tools/networking/wireguard-tools/default.nix4
-rw-r--r--pkgs/tools/networking/x11-ssh-askpass/default.nix20
-rw-r--r--pkgs/tools/networking/zerotierone/default.nix10
65 files changed, 1111 insertions, 382 deletions
diff --git a/pkgs/tools/networking/altermime/default.nix b/pkgs/tools/networking/altermime/default.nix
index f1e85487d8fc..a77fd56f6739 100644
--- a/pkgs/tools/networking/altermime/default.nix
+++ b/pkgs/tools/networking/altermime/default.nix
@@ -6,7 +6,7 @@ stdenv.mkDerivation rec {
   version = "0.3.11";
 
   src = fetchurl {
-    url = "http://www.pldaniels.com/${baseName}/${name}.tar.gz";
+    url = "https://pldaniels.com/${baseName}/${name}.tar.gz";
     sha256 = "15zxg6spcmd35r6xbidq2fgcg2nzyv1sbbqds08lzll70mqx4pj7";
   };
 
@@ -21,12 +21,11 @@ stdenv.mkDerivation rec {
     mkdir -p "$out/bin"
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "MIME alteration tool";
-    maintainers = with stdenv.lib.maintainers; [
-      raskin
-    ];
-    platforms = with stdenv.lib.platforms; linux;
-    downloadPage = "http://www.pldaniels.com/altermime/";
+    maintainers = [ maintainers.raskin ];
+    platforms = platforms.linux;
+    license.fullName = "alterMIME LICENSE";
+    downloadPage = "https://pldaniels.com/altermime/";
   };
 }
diff --git a/pkgs/tools/networking/argus-clients/default.nix b/pkgs/tools/networking/argus-clients/default.nix
index 766ae4116061..dccab1796fbc 100644
--- a/pkgs/tools/networking/argus-clients/default.nix
+++ b/pkgs/tools/networking/argus-clients/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
     done
     '';
 
-  configureFlags = "--with-perl=${perl}/bin/perl";
+  configureFlags = [ "--with-perl=${perl}/bin/perl" ];
 
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ libpcap bison cyrus_sasl tcp_wrappers flex ];
diff --git a/pkgs/tools/networking/aria2/default.nix b/pkgs/tools/networking/aria2/default.nix
index 87725f51a7fb..028691229e3b 100644
--- a/pkgs/tools/networking/aria2/default.nix
+++ b/pkgs/tools/networking/aria2/default.nix
@@ -1,5 +1,6 @@
 { stdenv, fetchFromGitHub, pkgconfig, autoreconfHook
 , openssl, c-ares, libxml2, sqlite, zlib, libssh2
+, cppunit
 , Security
 }:
 
@@ -21,6 +22,9 @@ stdenv.mkDerivation rec {
 
   configureFlags = [ "--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt" ];
 
+  checkInputs = [ cppunit ];
+  doCheck = false; # needs the net
+
   enableParallelBuilding = true;
 
   meta = with stdenv.lib; {
diff --git a/pkgs/tools/networking/cadaver/default.nix b/pkgs/tools/networking/cadaver/default.nix
index 6bc96a5b8c72..75a05108b8bf 100644
--- a/pkgs/tools/networking/cadaver/default.nix
+++ b/pkgs/tools/networking/cadaver/default.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
     })
   ];
 
-  configureFlags = "--with-ssl";
+  configureFlags = [ "--with-ssl" ];
 
   buildInputs = [ openssl ];
 
diff --git a/pkgs/tools/networking/chrony/default.nix b/pkgs/tools/networking/chrony/default.nix
index 2db26985dcf9..bf1ef0600bcc 100644
--- a/pkgs/tools/networking/chrony/default.nix
+++ b/pkgs/tools/networking/chrony/default.nix
@@ -13,6 +13,10 @@ stdenv.mkDerivation rec {
     sha256 = "0a1ilzr88xhzx1ql3xhn36a4rvl79hvp0dvgm3az4cjhhzav47qd";
   };
 
+  postPatch = ''
+    patchShebangs test
+  '';
+
   buildInputs = [ readline texinfo nss nspr ]
     ++ stdenv.lib.optionals stdenv.isLinux [ libcap libseccomp pps-tools ];
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/tools/networking/curl/7_59.nix b/pkgs/tools/networking/curl/7_59.nix
index 71a87a8e9d15..0482bcf52629 100644
--- a/pkgs/tools/networking/curl/7_59.nix
+++ b/pkgs/tools/networking/curl/7_59.nix
@@ -101,6 +101,7 @@ stdenv.mkDerivation rec {
     description = "A command line tool for transferring files with URL syntax";
     homepage    = https://curl.haxx.se/;
     maintainers = with maintainers; [ lovek323 ];
+    license = licenses.curl;
     platforms   = platforms.all;
   };
 }
diff --git a/pkgs/tools/networking/curl/default.nix b/pkgs/tools/networking/curl/default.nix
index d15e6084a8b9..d42cdcd4a347 100644
--- a/pkgs/tools/networking/curl/default.nix
+++ b/pkgs/tools/networking/curl/default.nix
@@ -105,6 +105,7 @@ stdenv.mkDerivation rec {
     description = "A command line tool for transferring files with URL syntax";
     homepage    = https://curl.haxx.se/;
     maintainers = with maintainers; [ lovek323 ];
-    platforms   = platforms.all;
+    license = licenses.curl;
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/tools/networking/dd-agent/default.nix b/pkgs/tools/networking/dd-agent/5.nix
index ff4a24fb7810..d3c4a2af7652 100644
--- a/pkgs/tools/networking/dd-agent/default.nix
+++ b/pkgs/tools/networking/dd-agent/5.nix
@@ -89,7 +89,10 @@ in stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "Event collector for the DataDog analysis service";
+    description = ''
+      Event collector for the DataDog analysis service
+      -- v5 Python implementation
+    '';
     homepage    = https://www.datadoghq.com;
     license     = stdenv.lib.licenses.bsd3;
     platforms   = stdenv.lib.platforms.all;
diff --git a/pkgs/tools/networking/dd-agent/6.nix b/pkgs/tools/networking/dd-agent/6.nix
new file mode 100644
index 000000000000..56a71595cea7
--- /dev/null
+++ b/pkgs/tools/networking/dd-agent/6.nix
@@ -0,0 +1,77 @@
+{ stdenv, fetchFromGitHub, buildGoPackage, makeWrapper, pythonPackages, pkgconfig }:
+
+let
+  # keep this in sync with github.com/DataDog/agent-payload dependency
+  payloadVersion = "4.7";
+
+in buildGoPackage rec {
+  name = "datadog-agent-${version}";
+  version = "6.1.4";
+  owner   = "DataDog";
+  repo    = "datadog-agent";
+
+  src = fetchFromGitHub {
+    inherit owner repo;
+    rev    = "a8ee76deb11fa334470d9b8f2356214999980894";
+    sha256 = "06grcwwbfvcw1k1d4nqrasrf76qkpik1gsw60zwafllfd9ffhl1v";
+  };
+
+  subPackages = [
+    "cmd/agent"
+    "cmd/dogstatsd"
+    "cmd/py-launcher"
+    "cmd/cluster-agent"
+  ];
+  goDeps = ./deps.nix;
+  goPackagePath = "github.com/${owner}/${repo}";
+
+  # Explicitly set this here to allow it to be overridden.
+  python = pythonPackages.python;
+
+  nativeBuildInputs = [ pkgconfig makeWrapper ];
+  PKG_CONFIG_PATH = "${python}/lib/pkgconfig";
+
+  buildFlagsArray = let
+    ldFlags = stdenv.lib.concatStringsSep " " [
+      "-X ${goPackagePath}/pkg/version.Commit=${src.rev}"
+      "-X ${goPackagePath}/pkg/version.AgentVersion=${version}"
+      "-X ${goPackagePath}/pkg/serializer.AgentPayloadVersion=${payloadVersion}"
+      "-X ${goPackagePath}/pkg/collector/py.pythonHome=${python}"
+      "-r ${python}/lib"
+    ];
+  in [
+    "-ldflags=${ldFlags}"
+  ];
+  buildFlags = "-tags cpython";
+
+  # DataDog use paths relative to the agent binary, so fix these.
+  postPatch = ''
+    sed -e "s|PyChecksPath =.*|PyChecksPath = \"$bin/${python.sitePackages}\"|" \
+        -e "s|distPath =.*|distPath = \"$bin/share/datadog-agent\"|" \
+        -i cmd/agent/common/common_nix.go
+  '';
+
+  # Install the config files and python modules from the "dist" dir
+  # into standard paths.
+  postInstall = ''
+    mkdir -p $bin/${python.sitePackages} $bin/share/datadog-agent
+    cp -R $src/cmd/agent/dist/{conf.d,trace-agent.conf} $bin/share/datadog-agent
+    cp -R $src/cmd/agent/dist/{checks,utils,config.py} $bin/${python.sitePackages}
+
+    cp -R $src/pkg/status/dist/templates $bin/share/datadog-agent
+
+    wrapProgram "$bin/bin/agent" \
+        --set PYTHONPATH "$bin/${python.sitePackages}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = ''
+      Event collector for the DataDog analysis service
+      -- v6 new golang implementation.
+    '';
+    homepage    = https://www.datadoghq.com;
+    license     = licenses.bsd3;
+    platforms   = platforms.all;
+    maintainers = with maintainers; [ thoughtpolice domenkozar rvl ];
+  };
+}
diff --git a/pkgs/tools/networking/dd-agent/deps.nix b/pkgs/tools/networking/dd-agent/deps.nix
new file mode 100644
index 000000000000..7a8fc69b2a42
--- /dev/null
+++ b/pkgs/tools/networking/dd-agent/deps.nix
@@ -0,0 +1,353 @@
+[
+  {
+    goPackagePath = "github.com/DataDog/agent-payload";
+    fetch = {
+      type = "git";
+      url = "https://github.com/DataDog/agent-payload";
+      rev = "3b793015ecfa5b829e8a466bd7cce836891502cc";
+      sha256 = "0lg7c1whmvk4a13mrivdjfzfxqan07kvs2calgylncy7yf4szdp6";
+    };
+  }
+  {
+    goPackagePath = "github.com/DataDog/gohai";
+    fetch = {
+      type = "git";
+      url = "https://github.com/DataDog/gohai";
+      rev = "d80d0f562a71fa2380fbeccc93ba5a2e325606e4";
+      sha256 = "1frslms7f5i8dc8n0v9pb64mf4zdj3q2c005qxajl8j8i9nhj7yb";
+    };
+  }
+  {
+    goPackagePath = "github.com/DataDog/mmh3";
+    fetch = {
+      type = "git";
+      url = "https://github.com/DataDog/mmh3";
+      rev = "2cfb68475274527a10701355c739f31dd404718c";
+      sha256 = "09jgzxi08pkxllxk3f5qwipz96jxrw5v035fj2bkid1d4akn8y0b";
+    };
+  }
+  {
+    goPackagePath = "github.com/beevik/ntp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/beevik/ntp";
+      rev = "cb3dae3a7588ae35829eb5724df611cd75152fba";
+      sha256 = "0nc6f7d0xw23y18z9qxrmm8kvnywihassyk706mn9v4makmhalnz";
+    };
+  }
+  {
+    goPackagePath = "github.com/cihub/seelog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cihub/seelog";
+      rev = "f561c5e57575bb1e0a2167028b7339b3a8d16fb4";
+      sha256 = "0r3228hvgljgpaggj6b9mvxfsizfw25q2c1761wsvcif8gz49cvl";
+    };
+  }
+  {
+    goPackagePath = "github.com/docker/docker";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/docker";
+      rev = "092cba3727bb9b4a2f0e922cd6c0f93ea270e363";
+      sha256 = "0l9kjibnpwcgk844sibxk9ppyqniw9r0np1mzp95f8f461jb0iar";
+    };
+  }
+  {
+    goPackagePath = "github.com/dsnet/compress";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dsnet/compress";
+      rev = "cc9eb1d7ad760af14e8f918698f745e80377af4f";
+      sha256 = "159liclywmyb6zx88ga5gn42hfl4cpk1660zss87fkx31hdq9fgx";
+    };
+  }
+  {
+    goPackagePath = "github.com/fatih/color";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/color";
+      rev = "507f6050b8568533fb3f5504de8e5205fa62a114";
+      sha256 = "0k1v9dkhrxiqhg48yqkwzpd7x40xx38gv2pgknswbsy4r8w644i7";
+    };
+  }
+  {
+    goPackagePath = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-ini/ini";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-ini/ini";
+      rev = "bda519ae5f4cbc60d391ff8610711627a08b86ae";
+      sha256 = "05vcc3ssxyrk8g3sr4gs888vllgjqfq11na63qz2pvaiy7m0rqrs";
+    };
+  }
+  {
+    goPackagePath = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev = "1ef32a8b9fc3f8ec940126907cedb5998f6318e4";
+      sha256 = "0zk2n0n35ksskr5cd83k5k8wg21ckrcggjy88bym2s21ngj5w4fh";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/snappy";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/snappy";
+      rev = "553a641470496b2327abcac10b36396bd98e45c9";
+      sha256 = "0kssxnih1l722hx9219c7javganjqkqhvl3i0hp0hif6xm6chvqk";
+    };
+  }
+  {
+    goPackagePath = "github.com/gorilla/mux";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/mux";
+      rev = "ded0c29b24f96f46cf349e6701b099db601cf8ec";
+      sha256 = "125dxfxs7his95fd2r28bn1rpb78pldfgm3lmw84ha1c0v5gfh33";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev = "ef8a98b0bbce4a65b5aa4c368430a80ddc533168";
+      sha256 = "1qalfsc31fra7hcw2lc3s20aj7al62fq3j5fn5kga3mg99b82nyr";
+    };
+  }
+  {
+    goPackagePath = "github.com/kardianos/osext";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kardianos/osext";
+      rev = "ae77be60afb1dcacde03767a8c37337fad28ac14";
+      sha256 = "056dkgxrqjj5r18bnc3knlpgdz5p3yvp12y4y978hnsfhwaqvbjz";
+    };
+  }
+  {
+    goPackagePath = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev = "2c9e9502788518c97fe44e8955cd069417ee89df";
+      sha256 = "1w0rl9rla61m0qbha75jg48yiq1vs91sfy96rgqa6nags9v9b1rl";
+    };
+  }
+  {
+    goPackagePath = "github.com/mholt/archiver";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mholt/archiver";
+      rev = "e4ef56d48eb029648b0e895bb0b6a393ef0829c3";
+      sha256 = "1krxyh6iq0s0rwhz7gg6dn795j9qq64rsgq9nivav7fhrqpgr6hb";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev = "00c29f56e2386353d58c599509e8dc3801b0d716";
+      sha256 = "1vw8fvhax0d567amgvxr7glcl12lvzg2sbzs007q5k5bbwn1szyb";
+    };
+  }
+  {
+    goPackagePath = "github.com/nwaples/rardecode";
+    fetch = {
+      type = "git";
+      url = "https://github.com/nwaples/rardecode";
+      rev = "e06696f847aeda6f39a8f0b7cdff193b7690aef6";
+      sha256 = "1aj7l8ii7hxnn3q4wzxlx3f92b1aspck6ncyqgb4h2g228phcibw";
+    };
+  }
+  {
+    goPackagePath = "github.com/patrickmn/go-cache";
+    fetch = {
+      type = "git";
+      url = "https://github.com/patrickmn/go-cache";
+      rev = "a3647f8e31d79543b2d0f0ae2fe5c379d72cedc0";
+      sha256 = "10020inkzrm931r4bixf8wqr9n39wcrb78vfyxmbvjavvw4zybgs";
+    };
+  }
+  {
+    goPackagePath = "github.com/pelletier/go-toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-toml";
+      rev = "66540cf1fcd2c3aee6f6787dfa32a6ae9a870f12";
+      sha256 = "1n8na0yg90gm0rpifmzrby5r385vvd62cdam3ls7ssy02bjvfw15";
+    };
+  }
+  {
+    goPackagePath = "github.com/pierrec/lz4";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pierrec/lz4";
+      rev = "ed8d4cc3b461464e69798080a0092bd028910298";
+      sha256 = "0flsn2ka108lb63gkxfzl90bkhndh1znnscv4v1k6j5h2s3zksls";
+    };
+  }
+  {
+    goPackagePath = "github.com/pierrec/xxHash";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pierrec/xxHash";
+      rev = "a0006b13c722f7f12368c00a3d3c2ae8a999a0c6";
+      sha256 = "1hf7hqrqx0cbgx0alfwnqs0mrxg9rnwsijn5d0lv06w6vzqbvnzj";
+    };
+  }
+  {
+    goPackagePath = "github.com/shirou/gopsutil";
+    fetch = {
+      type = "git";
+      url = "https://github.com/shirou/gopsutil";
+      rev = "57f370e13068146efe1cb7129f79e5d51da8a242";
+      sha256 = "1ij0bbnfjj65afin8vhccr3cxvg6r0awmvcvb2ilza5wbbsslggb";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/afero";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/afero";
+      rev = "63644898a8da0bc22138abf860edaf5277b6102e";
+      sha256 = "13piahaq4vw1y1sklq5scrsflqx0a8hzmdqfz1fy4871kf2gl8qw";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cast";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cast";
+      rev = "8965335b8c7107321228e3e3702cab9832751bac";
+      sha256 = "177bk7lq40jbgv9p9r80aydpaccfk8ja3a7jjhfwiwk9r1pa4rr2";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev = "ef82de70bb3f60c65fb8eebacbb2d122ef517385";
+      sha256 = "1q1nsx05svyv9fv3fy6xv6gs9ffimkyzsfm49flvl3wnvf1ncrkd";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev = "7c0cea34c8ece3fbeb2b27ab9b59511d360fb394";
+      sha256 = "132p84i20b9s5r6fs597lsa6648vd415ch7c0d018vm8smzqpd0h";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev = "583c0c0531f06d5278b7d917446061adc344b5cd";
+      sha256 = "0nr4mdpfhhk94hq4ymn5b2sxc47b29p1akxd8b0hx4dvdybmipb5";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/viper";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/viper";
+      rev = "8dc2790b029dc41e2b8ff772c63c26adbb1db70d";
+      sha256 = "147zq6v34pgb79r4m0m2mwm8739jxwawxs8mpqvvhq7gxwvhng40";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "c679ae2cc0cb27ec3293fea7e254e47386f05d69";
+      sha256 = "1rrdn7k83j492rzhqwkh6956sj8m2nbk44d7r1xa9nsn3hfwj691";
+    };
+  }
+  {
+    goPackagePath = "github.com/ulikunitz/xz";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ulikunitz/xz";
+      rev = "0c6b41e72360850ca4f98dc341fd999726ea007f";
+      sha256 = "0a6l7sp67ipxim093qh6fvw8knbxj24l7bj5lykcddi5gwfi78n3";
+    };
+  }
+  {
+    goPackagePath = "github.com/urfave/negroni";
+    fetch = {
+      type = "git";
+      url = "https://github.com/urfave/negroni";
+      rev = "22c5532ea862c34fdad414e90f8cc00b4f6f4cab";
+      sha256 = "0jxd10cr3imm96xa01mdgyad4nq6mc7yr49z830fv3vywfr7bac8";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "640f4622ab692b87c2f3a94265e6f579fe38263d";
+      sha256 = "097m4qhcljhp180171j5fjhq4740iirfkkajfd7yrxqhp4s9hljx";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "6f686a352de66814cdd080d970febae7767857a3";
+      sha256 = "1z3pwvxlzq8kghjdsd9xmf184iiz13h8h66ipp626k4rc7kydr03";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "7922cc490dd5a7dbaa7fd5d6196b49db59ac042f";
+      sha256 = "06sicjc24hv7v9p1l6psaq87w4lycx3mjixd6gsd1wnd4jhqvlnr";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "5420a8b6744d3b0345ab293f6fcba19c978f1183";
+      sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
+    };
+  }
+  {
+    goPackagePath = "github.com/sbinet/go-python";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sbinet/go-python";
+      rev = "6d13f941744b9332d6ed00dc2cd2722acd79a47e";
+      sha256 = "0x5q4nyv6gck9q33g54gy2ajmyjksxjmzh0jfqqn97jpgf4qfaym";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/reflectwalk";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/reflectwalk";
+      rev = "63d60e9d0dbc60cf9164e6510889b0db6683d98c";
+      sha256 = "1hpq6sjr6l1h25x68mz13q7sd52dv1mjfxbl5p7m3j7cv85khnvc";
+    };
+  }
+]
diff --git a/pkgs/tools/networking/dd-agent/integrations-core.nix b/pkgs/tools/networking/dd-agent/integrations-core.nix
new file mode 100644
index 000000000000..9212209e775b
--- /dev/null
+++ b/pkgs/tools/networking/dd-agent/integrations-core.nix
@@ -0,0 +1,91 @@
+# The declarations in this file build the Datadog agent's core
+# integrations. These integrations are tracked in a separate
+# repository[1] outside of the agent's primary repository and provide
+# checks for various kinds of services.
+#
+# Not all services are relevant for all users, however. As some of
+# them depend on various tools and Python packages it is nonsensical
+# to build *all* integrations by default.
+#
+# A set of default integrations is defined and built either way.
+# Additional integrations can be specified by overriding
+# `extraIntegrations` in datadog-integrations-core.
+#
+# In practice the syntax for using this with additional integrations
+# is not the most beautiful, but it works. For example to use
+# datadog-agent from the top-level with the `ntp`-integration
+# included, one could say:
+#
+# let
+#   integrationsWithNtp = datadog-integrations-core {
+#     # Extra integrations map from the integration name (as in the
+#     # integrations-core repository) to a function that receives the
+#     # Python package set and returns the required dependencies.g
+#     ntp = (ps: [ ps.ntplib ]);
+#   };
+#
+# in ddAgentWithNtp = datadog-agent.overrideAttrs(_ : {
+#   python = integrationsWithNtp.python;
+# });
+#
+# The NixOS module 'datadog-agent' provides a simplified interface to
+# this. Please see the module itself for more information.
+#
+# [1]: https://github.com/DataDog/integrations-core
+
+{ pkgs, python, extraIntegrations ? {} }:
+
+with pkgs.lib;
+
+let
+  src = pkgs.fetchFromGitHub {
+    owner = "DataDog";
+    repo = "integrations-core";
+    rev = "7be76e73969a8b9c993903681b300e1dd32f4b4d";
+    sha256 = "1qsqzm5iswgv9jrflh5mvbz9a7js7jf42cb28lzdzsp45iwfs2aa";
+  };
+  version = "git-2018-05-27";
+
+  # Build helper to build a single datadog integration package.
+  buildIntegration = { pname, ... }@args: python.pkgs.buildPythonPackage (args // {
+    inherit src version;
+    name = "datadog-integration-${pname}-${version}";
+
+    postPatch = ''
+      # jailbreak install_requires
+      sed -i 's/==.*//' requirements.in
+      cp requirements.in requirements.txt
+    '';
+    sourceRoot = "source/${args.sourceRoot or pname}";
+    doCheck = false;
+  });
+
+  # Base package depended on by all other integrations.
+  datadog_checks_base = buildIntegration {
+    pname = "checks-base";
+    sourceRoot = "datadog_checks_base";
+    propagatedBuildInputs = with python.pkgs; [
+      requests protobuf prometheus_client uuid simplejson uptime
+    ];
+  };
+
+  # Default integrations that should be built:
+  defaultIntegrations = {
+    disk     = (ps: [ ps.psutil ]);
+    mongo    = (ps: [ ps.pymongo ]);
+    network  = (ps: [ ps.psutil ]);
+    nginx    = (ps: []);
+    postgres = (ps: with ps; [ pg8000 psycopg2 ]);
+  };
+
+  # All integrations (default + extra):
+  integrations = defaultIntegrations // extraIntegrations;
+  builtIntegrations = mapAttrs (pname: fdeps: buildIntegration {
+    inherit pname;
+    propagatedBuildInputs = (fdeps python.pkgs) ++ [ datadog_checks_base ];
+  }) integrations;
+
+in builtIntegrations // {
+  inherit datadog_checks_base;
+  python = python.withPackages (_: (attrValues builtIntegrations));
+}
diff --git a/pkgs/tools/networking/fping/default.nix b/pkgs/tools/networking/fping/default.nix
index 2b19c8e6a057..adcb59135ee1 100644
--- a/pkgs/tools/networking/fping/default.nix
+++ b/pkgs/tools/networking/fping/default.nix
@@ -10,10 +10,11 @@ stdenv.mkDerivation rec {
 
   configureFlags = [ "--enable-ipv6" "--enable-ipv4" ];
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://fping.org/;
     description = "Send ICMP echo probes to network hosts";
-    maintainers = with stdenv.lib.maintainers; [ the-kenny ];
-    platforms = with stdenv.lib.platforms; all;
+    maintainers = with maintainers; [ the-kenny ];
+    license = licenses.bsd0;
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/tools/networking/getmail/default.nix b/pkgs/tools/networking/getmail/default.nix
index 224c7a4ab484..ac69fd992658 100644
--- a/pkgs/tools/networking/getmail/default.nix
+++ b/pkgs/tools/networking/getmail/default.nix
@@ -26,5 +26,6 @@ python2Packages.buildPythonApplication rec {
     homepage = http://pyropus.ca/software/getmail/;
     inherit version;
     updateWalker = true;
+    license = stdenv.lib.licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/tools/networking/haproxy/default.nix b/pkgs/tools/networking/haproxy/default.nix
index 1690d3fcc3e3..8f72976d7dce 100644
--- a/pkgs/tools/networking/haproxy/default.nix
+++ b/pkgs/tools/networking/haproxy/default.nix
@@ -1,6 +1,6 @@
 { useLua ? !stdenv.isDarwin
 , usePcre ? true
-, stdenv, fetchurl, fetchpatch
+, stdenv, fetchurl
 , openssl, zlib, lua5_3 ? null, pcre ? null
 }:
 
@@ -9,26 +9,14 @@ assert usePcre -> pcre != null;
 
 stdenv.mkDerivation rec {
   pname = "haproxy";
-  version = "1.8.9";
+  version = "1.8.13";
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "https://www.haproxy.org/download/${stdenv.lib.versions.majorMinor version}/src/${name}.tar.gz";
-    sha256 = "00miblgwll3mycsgmp3gd3cn4lwsagxzgjxk5i6csnyqgj97fss3";
+    sha256 = "2bf5dafbb5f1530c0e67ab63666565de948591f8e0ee2a1d3c84c45e738220f1";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "CVE-2018-11469.patch";
-      url = "https://git.haproxy.org/?p=haproxy-1.8.git;a=patch;h=17514045e5d934dede62116216c1b016fe23dd06";
-      sha256 = "0hzcvghg8qz45n3mrcgsjgvrvicvbvm52cc4hs5jbk1yb50qvls7";
-    })
-  ] ++ stdenv.lib.optional stdenv.isDarwin (fetchpatch {
-    name = "fix-darwin-no-threads-build.patch";
-    url = "https://git.haproxy.org/?p=haproxy-1.8.git;a=patch;h=fbf09c441a4e72c4a690bc7ef25d3374767fe5c5;hp=3157ef219c493f3b01192f1b809a086a5b119a1e";
-    sha256 = "16ckzb160anf7xih7mmqy59pfz8sdywmyblxnr7lz9xix3jwk55r";
-  });
-
   buildInputs = [ openssl zlib ]
     ++ stdenv.lib.optional useLua lua5_3
     ++ stdenv.lib.optional usePcre pcre;
@@ -51,7 +39,8 @@ stdenv.mkDerivation rec {
     "USE_LUA=yes"
     "LUA_LIB=${lua5_3}/lib"
     "LUA_INC=${lua5_3}/include"
-  ] ++ stdenv.lib.optional stdenv.isDarwin "CC=cc";
+  ] ++ stdenv.lib.optional stdenv.isDarwin "CC=cc"
+    ++ stdenv.lib.optional stdenv.isLinux "USE_GETADDRINFO=1";
 
   meta = {
     description = "Reliable, high performance TCP/HTTP load balancer";
diff --git a/pkgs/tools/networking/infiniband-diags/default.nix b/pkgs/tools/networking/infiniband-diags/default.nix
index f769a3fcffac..fbca48fa17c8 100644
--- a/pkgs/tools/networking/infiniband-diags/default.nix
+++ b/pkgs/tools/networking/infiniband-diags/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   name = "infiniband-diags-${version}";
-  version = "2.0.0";
+  version = "2.1.0";
 
   src = fetchFromGitHub {
     owner = "linux-rdma";
     repo = "infiniband-diags";
     rev = version;
-    sha256 = "06x8yy3ly1vzraznc9r8pfsal9mjavxzhgrla3q2493j5jz0sx76";
+    sha256 = "1qgyyvnig28x1m47df0zx6b2rcb5nm1k8r02zx7wzfb5pn9k2zh1";
   };
 
   nativeBuildInputs = [ autoconf automake libtool pkgconfig makeWrapper ];
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
     ./autogen.sh
   '';
 
-  configureFlags = "--with-perl-installdir=\${out}/lib/perl5/site_perl --sbindir=\${out}/bin";
+  configureFlags = [ "--with-perl-installdir=\${out}/lib/perl5/site_perl" "--sbindir=\${out}/bin" ];
 
   postInstall = ''
     rmdir $out/var/run $out/var
diff --git a/pkgs/tools/networking/lftp/default.nix b/pkgs/tools/networking/lftp/default.nix
index 86d162648238..bb627f49971b 100644
--- a/pkgs/tools/networking/lftp/default.nix
+++ b/pkgs/tools/networking/lftp/default.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   name = "lftp-${version}";
-  version = "4.8.3";
+  version = "4.8.4";
 
   src = fetchurl {
     urls = [
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
       "https://ftp.st.ryukoku.ac.jp/pub/network/ftp/lftp/${name}.tar.xz"
       "https://lftp.yar.ru/ftp/${name}.tar.xz"
       ];
-    sha256 = "12y77jlfs4x4zvcah92mw2h2sb4j0bvbaxkh3wwsm8gs392ywyny";
+    sha256 = "0qks22357xv9y6ripmf5j2n5svh8j5z0yniphfk89sjwkqg2gg2f";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/tools/networking/mailutils/default.nix b/pkgs/tools/networking/mailutils/default.nix
index 4df7f80fff6c..f4e14d982480 100644
--- a/pkgs/tools/networking/mailutils/default.nix
+++ b/pkgs/tools/networking/mailutils/default.nix
@@ -2,9 +2,7 @@
 , gdbm, pam, readline, ncurses, gnutls, guile, texinfo, gnum4, sasl, fribidi, nettools
 , python, gss, mysql, sendmailPath ? "/run/wrappers/bin/sendmail" }:
 
-let
-  p = "https://raw.githubusercontent.com/gentoo/gentoo/9c921e89d51876fd876f250324893fd90c019326/net-mail/mailutils/files";
-in stdenv.mkDerivation rec {
+stdenv.mkDerivation rec {
   name = "${project}-${version}";
   project = "mailutils";
   version = "3.2";
@@ -14,9 +12,21 @@ in stdenv.mkDerivation rec {
     sha256 = "0zh7xn8yvnw9zkc7gi5290i34viwxp1rn0g1q9nyvmckkvk59lwn";
   };
 
+  postPatch = ''
+    sed -i -e '/chown root:mail/d' \
+           -e 's/chmod [24]755/chmod 0755/' \
+      */Makefile{.in,.am}
+    sed -i 's:/usr/lib/mysql:${mysql.connector-c}/lib/mysql:' configure.ac
+    sed -i 's/0\.18/0.19/' configure.ac
+    sed -i -e 's:mysql/mysql.h:mysql.h:' \
+           -e 's:mysql/errmsg.h:errmsg.h:' \
+      sql/mysql.c
+  '';
+
   nativeBuildInputs = [
     autoreconfHook gettext pkgconfig
-  ] ++ stdenv.lib.optional doCheck dejagnu;
+  ];
+
   buildInputs = [
     gdbm pam readline ncurses gnutls guile texinfo gnum4 sasl fribidi nettools
     gss mysql.connector-c python
@@ -33,7 +43,6 @@ in stdenv.mkDerivation rec {
     ./path-to-cat.patch
   ];
 
-  doCheck = true;
   enableParallelBuilding = false;
   hardeningDisable = [ "format" ];
 
@@ -44,26 +53,21 @@ in stdenv.mkDerivation rec {
     "--with-path-sendmail=${sendmailPath}"
   ];
 
-  readmsg-tests = stdenv.lib.optionals doCheck [
+  readmsg-tests = let
+    p = "https://raw.githubusercontent.com/gentoo/gentoo/9c921e89d51876fd876f250324893fd90c019326/net-mail/mailutils/files";
+  in [
     (fetchurl { url = "${p}/hdr.at"; sha256 = "0phpkqyhs26chn63wjns6ydx9468ng3ssbjbfhcvza8h78jlsd98"; })
     (fetchurl { url = "${p}/nohdr.at"; sha256 = "1vkbkfkbqj6ml62s1am8i286hxwnpsmbhbnq0i2i0j1i7iwkk4b7"; })
     (fetchurl { url = "${p}/twomsg.at"; sha256 = "15m29rg2xxa17xhx6jp4s2vwa9d4khw8092vpygqbwlhw68alk9g"; })
     (fetchurl { url = "${p}/weed.at"; sha256 = "1101xakhc99f5gb9cs3mmydn43ayli7b270pzbvh7f9rbvh0d0nh"; })
   ];
 
-  postPatch = ''
-    sed -i -e '/chown root:mail/d' \
-           -e 's/chmod [24]755/chmod 0755/' \
-      */Makefile{.in,.am}
-    sed -i 's:/usr/lib/mysql:${mysql.connector-c}/lib/mysql:' configure.ac
-    sed -i 's/0\.18/0.19/' configure.ac
-    sed -i -e 's:mysql/mysql.h:mysql.h:' \
-           -e 's:mysql/errmsg.h:errmsg.h:' \
-      sql/mysql.c
-  '';
-
   NIX_CFLAGS_COMPILE = "-L${mysql.connector-c}/lib/mysql -I${mysql.connector-c}/include/mysql";
 
+  checkInputs = [ dejagnu ];
+  doCheck = false; # fails 1 out of a bunch of tests, looks like a bug
+  doInstallCheck = false; # fails
+
   preCheck = ''
     # Add missing test files
     cp ${builtins.toString readmsg-tests} readmsg/tests/
@@ -79,6 +83,7 @@ in stdenv.mkDerivation rec {
     # Provide libraries for mhn.
     export LD_LIBRARY_PATH=$(pwd)/lib/.libs
   '';
+
   postCheck = ''
     unset LD_LIBRARY_PATH
   '';
diff --git a/pkgs/tools/networking/megatools/default.nix b/pkgs/tools/networking/megatools/default.nix
index e2d4880250c2..c995eea7b14d 100644
--- a/pkgs/tools/networking/megatools/default.nix
+++ b/pkgs/tools/networking/megatools/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   name = "megatools-${version}";
-  version = "2017-10-26";
+  version = "1.10.2";
 
   src = fetchFromGitHub {
     owner = "megous";
     repo = "megatools";
-    rev = "35dfba3262f620b4701ec1975293463957e20f26";
-    sha256 = "0xphgv78j731rmhxic4fwzdr7vq5px921qifrw1y40b93nhy4d5n";
+    rev = "${version}";
+    sha256 = "001hw8j36ld03wwaphq3xdaazf2dpl36h84k8xmk524x8vlia8lk";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/networking/mtr/default.nix b/pkgs/tools/networking/mtr/default.nix
index 8932360c7176..3c2ced1712fd 100644
--- a/pkgs/tools/networking/mtr/default.nix
+++ b/pkgs/tools/networking/mtr/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
     substituteInPlace Makefile.in --replace ' install-exec-hook' ""
   '';
 
-  configureFlags = stdenv.lib.optionalString (!withGtk) "--without-gtk";
+  configureFlags = stdenv.lib.optional (!withGtk) "--without-gtk";
 
   nativeBuildInputs = [ autoreconfHook pkgconfig ];
 
diff --git a/pkgs/tools/networking/network-manager/applet.nix b/pkgs/tools/networking/network-manager/applet.nix
index 98b9b0aef4d6..0b6a7e622a86 100644
--- a/pkgs/tools/networking/network-manager/applet.nix
+++ b/pkgs/tools/networking/network-manager/applet.nix
@@ -1,25 +1,23 @@
-{ stdenv, fetchurl, fetchpatch, meson, ninja, intltool, gtk-doc, pkgconfig, networkmanager, gnome3
+{ 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
-, libindicator-gtk3, libappindicator-gtk3, withGnome ? false }:
+, libgudev, jansson, wrapGAppsHook, gobjectIntrospection
+, libappindicator-gtk3, withGnome ? false }:
 
 let
   pname = "network-manager-applet";
-  version = "1.8.14";
+  version = "1.8.16";
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz";
-    sha256 = "1js0i2kwfklahsn77qgxzdscy33drrlym3mrj1qhlw0zf8ri56ya";
+    sha256 = "0lmlkh4yyl9smvkgrzshn127zqfbp9f41f448ks8dlhhm38s38v2";
   };
 
   patches = [
-    (fetchpatch {
-      url = https://gitlab.gnome.org/GNOME/network-manager-applet/merge_requests/12.patch;
-      sha256 = "0q5qbjpbrfvhqsprnwjwz4c42nly59cgnbn41w2zlxvqf29gjvwk";
-    })
+    # https://gitlab.gnome.org/GNOME/network-manager-applet/merge_requests/19
+    ./libnm-gtk-mbpi.patch
   ];
 
   mesonFlags = [
@@ -28,25 +26,17 @@ in stdenv.mkDerivation rec {
     "-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 libgudev
+    polkit isocodes mobile-broadband-provider-info libgudev
     modemmanager jansson glib-networking
-    libindicator-gtk3 libappindicator-gtk3
-  ] ++ stdenv.lib.optionals withGnome [ gnome3.gcr webkitgtk ];
+    libappindicator-gtk3
+  ] ++ 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
-  ];
-
-  NIX_CFLAGS = [
-    ''-DMOBILE_BROADBAND_PROVIDER_INFO=\"${mobile-broadband-provider-info}/share/mobile-broadband-provider-info/serviceproviders.xml\"''
-  ];
-
   postPatch = ''
     chmod +x meson_post_install.py # patchShebangs requires executable file
     patchShebangs meson_post_install.py
diff --git a/pkgs/tools/networking/network-manager/default.nix b/pkgs/tools/networking/network-manager/default.nix
index 62c9e7b63d16..01b979c3c5bf 100644
--- a/pkgs/tools/networking/network-manager/default.nix
+++ b/pkgs/tools/networking/network-manager/default.nix
@@ -9,11 +9,11 @@ let
   pname = "NetworkManager";
 in stdenv.mkDerivation rec {
   name = "network-manager-${version}";
-  version = "1.12.0";
+  version = "1.12.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "15bzjkrfa7sw5p5hkdha4a67y1zfnzh1s6za11sh8s1yxmyvkziq";
+    sha256 = "09hsh34m8hg4m402pw5n11f29vsfjw6lm3p5m56yxwq57bwnzq3b";
   };
 
   outputs = [ "out" "dev" ];
@@ -66,16 +66,15 @@ in stdenv.mkDerivation rec {
   ];
 
   patches = [
-    # https://bugzilla.gnome.org/show_bug.cgi?id=796752
-    (fetchurl {
-      url = https://bugzilla.gnome.org/attachment.cgi?id=372955;
-      sha256 = "17rl19lprnsz4wjmp54c1qw6a3pf8x97bhd69xavwy7cx6z84b3n";
-    })
     # https://bugzilla.gnome.org/show_bug.cgi?id=796751
     (fetchurl {
       url = https://bugzilla.gnome.org/attachment.cgi?id=372953;
       sha256 = "1crjplyiiipkhjjlifrv6hhvxinlcxd6irp9ijbc7jij31g44i0a";
     })
+    (fetchurl {
+      url = https://gitlab.freedesktop.org/NetworkManager/NetworkManager/commit/0a3755c1799d3a4dc1875d4c59c7c568a64c8456.patch;
+      sha256 = "af1717f7c6fdd6dadb4082dd847f4bbc42cf1574833299f3e47024e785533f2e";
+    })
     (substituteAll {
       src = ./fix-paths.patch;
       inherit inetutils kmod openconnect;
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);
diff --git a/pkgs/tools/networking/ntp/default.nix b/pkgs/tools/networking/ntp/default.nix
index 467b17e468a2..8c4462c36bcf 100644
--- a/pkgs/tools/networking/ntp/default.nix
+++ b/pkgs/tools/networking/ntp/default.nix
@@ -8,11 +8,11 @@ let
 in
 
 stdenv.mkDerivation rec {
-  name = "ntp-4.2.8p11";
+  name = "ntp-4.2.8p12";
 
   src = fetchurl {
     url = "https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/${name}.tar.gz";
-    sha256 = "13i7rp1va29ffjdk08fvsfl6n47zzwsp147zhgb550k8agvkjjpi";
+    sha256 = "0m04ndn0674kcf9x0aggjya07a3hlig2nlzzpwk7vmqka0mj56vh";
   };
 
   # The hardcoded list of allowed system calls for seccomp is
@@ -41,6 +41,10 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = http://www.ntp.org/;
     description = "An implementation of the Network Time Protocol";
+    license = {
+      # very close to isc and bsd2
+      url = https://www.eecis.udel.edu/~mills/ntp/html/copyright.html;
+    };
     maintainers = [ maintainers.eelco ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/tools/networking/offlineimap/default.nix b/pkgs/tools/networking/offlineimap/default.nix
index 647b7ed26da9..13c195d64e88 100644
--- a/pkgs/tools/networking/offlineimap/default.nix
+++ b/pkgs/tools/networking/offlineimap/default.nix
@@ -1,10 +1,9 @@
-{ stdenv, fetchFromGitHub, pythonPackages,
+{ stdenv, fetchFromGitHub, python2Packages,
   asciidoc, libxml2, libxslt, docbook_xsl }:
 
-pythonPackages.buildPythonApplication rec {
+python2Packages.buildPythonApplication rec {
   version = "7.2.1";
-  name = "offlineimap-${version}";
-  namePrefix = "";
+  pname = "offlineimap";
 
   src = fetchFromGitHub {
     owner = "OfflineIMAP";
@@ -21,7 +20,7 @@ pythonPackages.buildPythonApplication rec {
   doCheck = false;
 
   nativeBuildInputs = [ asciidoc libxml2 libxslt docbook_xsl ];
-  propagatedBuildInputs = [ pythonPackages.six pythonPackages.kerberos ];
+  propagatedBuildInputs = with python2Packages; [ six kerberos ];
 
   postInstall = ''
     make -C docs man
diff --git a/pkgs/tools/networking/p2p/amule/default.nix b/pkgs/tools/networking/p2p/amule/default.nix
index ac440fc6d338..a74242ba5e17 100644
--- a/pkgs/tools/networking/p2p/amule/default.nix
+++ b/pkgs/tools/networking/p2p/amule/default.nix
@@ -8,10 +8,7 @@
 assert httpServer -> libpng != null;
 assert client -> libX11 != null;
 with stdenv;
-let
-  # Enable/Disable Feature
-  edf = enabled: flag: if enabled then "--enable-" + flag else "--disable-" + flag;
-in
+
 mkDerivation rec {
   name = "aMule-2.3.2";
 
@@ -27,15 +24,15 @@ mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  configureFlags = ''
-    --with-crypto-prefix=${cryptopp}
-    --disable-debug
-    --enable-optimize
-    ${edf monolithic "monolithic"}
-    ${edf daemon "amule-daemon"}
-    ${edf client "amule-gui"}
-    ${edf httpServer "webserver"}
-  '';
+  configureFlags = [
+    "--with-crypto-prefix=${cryptopp}"
+    "--disable-debug"
+    "--enable-optimize"
+    (stdenv.lib.enableFeature monolithic "monolithic")
+    (stdenv.lib.enableFeature daemon "amule-daemon")
+    (stdenv.lib.enableFeature client "amule-gui")
+    (stdenv.lib.enableFeature httpServer "webserver")
+  ];
 
   postConfigure = ''
     sed -i "src/libs/ec/file_generator.pl"     \
diff --git a/pkgs/tools/networking/p2p/libtorrent/default.nix b/pkgs/tools/networking/p2p/libtorrent/default.nix
index 87cf6d172c0c..9c6f5eec11b7 100644
--- a/pkgs/tools/networking/p2p/libtorrent/default.nix
+++ b/pkgs/tools/networking/p2p/libtorrent/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   name = "libtorrent-${version}";
-  version = "20161212";
+  version = "0.13.7";
 
   src = fetchFromGitHub {
     owner = "rakshasa";
     repo = "libtorrent";
-    rev = "c167c5a9e0bcf0df23ae5efd91396aae0e37eb87";
-    sha256 = "0y9759sxx5dyamyw8w58dsxq7bmnn57q7s2f4cw2zln2pp5gripw";
+    rev = "v${version}";
+    sha256 = "027qanwcisxhx0bq8dn8cpg8563q0k2pm8ls278f04n7jqvvwkp0";
   };
 
   nativeBuildInputs = [ pkgconfig ];
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
   preConfigure = "./autogen.sh";
 
   meta = with stdenv.lib; {
-    homepage = "http://rtorrent.net/downloads/";
+    inherit (src.meta) homepage;
     description = "A BitTorrent library written in C++ for *nix, with focus on high performance and good code";
 
     platforms = platforms.unix;
diff --git a/pkgs/tools/networking/p2p/rtorrent/default.nix b/pkgs/tools/networking/p2p/rtorrent/default.nix
index 6ab462ac5a8c..63652557efa5 100644
--- a/pkgs/tools/networking/p2p/rtorrent/default.nix
+++ b/pkgs/tools/networking/p2p/rtorrent/default.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation rec {
   name = "rtorrent-${version}";
-  version = "20161023";
+  version = "0.9.7";
 
   src = fetchFromGitHub {
     owner = "rakshasa";
     repo = "rtorrent";
-    rev = "226e670decf92e7adaa845a6982aca4f164ea740";
-    sha256 = "0cxyakc09bn6wjfj42gh508hc62awx825skzacpizx2bqs6v7xvb";
+    rev = "v${version}";
+    sha256 = "0a9dk3cz56f7gad8ghsma79iy900rwdvzngs6k6x08nlwaqid8ga";
   };
 
   nativeBuildInputs = [ pkgconfig ];
@@ -42,10 +42,11 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with stdenv.lib; {
-    inherit (src.meta) homepage;
+    homepage = https://rakshasa.github.io/rtorrent/;
     description = "An ncurses client for libtorrent, ideal for use with screen, tmux, or dtach";
 
     platforms = platforms.unix;
     maintainers = with maintainers; [ ebzzry codyopel ];
+    license = licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/tools/networking/polygraph/default.nix b/pkgs/tools/networking/polygraph/default.nix
index 46680ab47af4..c05e44fb1c07 100644
--- a/pkgs/tools/networking/polygraph/default.nix
+++ b/pkgs/tools/networking/polygraph/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, openssl, zlib, ncurses }:
 
 stdenv.mkDerivation rec {
-  name = "polygraph-4.11.0";
+  name = "polygraph-4.12.0";
 
   src = fetchurl {
     url = "http://www.web-polygraph.org/downloads/srcs/${name}-src.tgz";
-    sha256 = "1ii60yl3p89qawvl19sd1bkpkw39fz8kpvmc3cawa32nxzbm9pbs";
+    sha256 = "1anrdc30yi9pb67642flmn7w82q37cnc45r9bh15mpbc66yk3kzz";
   };
 
   buildInputs = [ openssl zlib ncurses ];
diff --git a/pkgs/tools/networking/ppp/default.nix b/pkgs/tools/networking/ppp/default.nix
index 96016ee7b4f3..cea8a3f133f4 100644
--- a/pkgs/tools/networking/ppp/default.nix
+++ b/pkgs/tools/networking/ppp/default.nix
@@ -55,10 +55,11 @@ stdenv.mkDerivation rec {
     done
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = https://ppp.samba.org/;
     description = "Point-to-point implementation for Linux and Solaris";
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.falsifian ];
+    license = with licenses; [ bsdOriginal publicDomain gpl2 lgpl2 ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.falsifian ];
   };
 }
diff --git a/pkgs/tools/networking/pptp/default.nix b/pkgs/tools/networking/pptp/default.nix
index d8a633f03321..03270ce87881 100644
--- a/pkgs/tools/networking/pptp/default.nix
+++ b/pkgs/tools/networking/pptp/default.nix
@@ -22,10 +22,10 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ perl which ];
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "PPTP client for Linux";
     homepage = http://pptpclient.sourceforge.net/;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/reaver-wps/default.nix b/pkgs/tools/networking/reaver-wps/default.nix
index 6cbee7d2a851..ed48feabb85a 100644
--- a/pkgs/tools/networking/reaver-wps/default.nix
+++ b/pkgs/tools/networking/reaver-wps/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
     sourceRoot=$(echo */src)
   '';
 
-  configureFlags = "--sysconfdir=${confdir}";
+  configureFlags = [ "--sysconfdir=${confdir}" ];
 
   installPhase = ''
     mkdir -p $out/{bin,etc}
diff --git a/pkgs/tools/networking/siege/default.nix b/pkgs/tools/networking/siege/default.nix
index cac3e3e6361f..a0a659974148 100644
--- a/pkgs/tools/networking/siege/default.nix
+++ b/pkgs/tools/networking/siege/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     description = "HTTP load tester";
     maintainers = with maintainers; [ ocharles raskin ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     license = licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/tools/networking/slack-cli/default.nix b/pkgs/tools/networking/slack-cli/default.nix
new file mode 100644
index 000000000000..18f192d3535f
--- /dev/null
+++ b/pkgs/tools/networking/slack-cli/default.nix
@@ -0,0 +1,48 @@
+# slack-cli must be configured using the SLACK_CLI_TOKEN environment variable.
+# Using `slack init` will not work because it tries to write to the Nix store.
+#
+# There is no reason that we couldn't change the file path that slack-cli uses
+# for token storage, except that it would make the Nix package inconsistent with
+# upstream and other distributions.
+
+{ stdenv, lib, writeShellScriptBin, fetchFromGitHub, curl, jq }:
+
+stdenv.mkDerivation rec {
+  name = "slack-cli-${version}";
+  version = "0.18.0";
+
+  src = fetchFromGitHub {
+    owner = "rockymadden";
+    repo = "slack-cli";
+    rev = "v${version}";
+    sha256 = "022yr3cpfg0v7cxi62zzk08vp0l3w851qpfh6amyfgjiynnfyddl";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    cp src/slack "$out/bin/.slack-wrapped"
+
+    cat <<-WRAPPER > "$out/bin/slack"
+    #!${stdenv.shell}
+    [ "\$1" = "init" -a -z "\$SLACK_CLI_TOKEN" ] && cat <<-'MESSAGE' >&2
+    WARNING: slack-cli must be configured using the SLACK_CLI_TOKEN
+    environment variable. Using \`slack init\` will not work because it tries
+    to write to the Nix store.
+
+    MESSAGE
+
+    export PATH=${lib.makeBinPath [ curl jq ]}:"\$PATH"
+    exec "$out/bin/.slack-wrapped" "\$@"
+    WRAPPER
+
+    chmod +x "$out/bin/slack"
+  '';
+
+  meta = {
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.qyliss ];
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/pkgs/tools/networking/socat/default.nix b/pkgs/tools/networking/socat/default.nix
index 0e9efb028ba8..37fe3398ae8b 100644
--- a/pkgs/tools/networking/socat/default.nix
+++ b/pkgs/tools/networking/socat/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, openssl, readline }:
+{ stdenv, fetchurl, openssl, readline, which, nettools }:
 
 stdenv.mkDerivation rec {
   name = "socat-1.7.3.2";
@@ -8,10 +8,20 @@ stdenv.mkDerivation rec {
     sha256 = "0lcj6zpra33xhgvhmz9l3cqz10v8ybafb8dd1yqkwf1rhy01ymp3";
   };
 
+  postPatch = ''
+    patchShebangs test.sh
+    substituteInPlace test.sh \
+      --replace /bin/rm rm \
+      --replace /sbin/ifconfig ifconfig
+  '';
+
   buildInputs = [ openssl readline ];
 
   hardeningEnable = [ "pie" ];
 
+  checkInputs = [ which nettools ];
+  doCheck = false; # fails a bunch, hangs
+
   meta = {
     description = "A utility for bidirectional data transfer between two independent data channels";
     homepage = http://www.dest-unreach.org/socat/;
diff --git a/pkgs/tools/networking/speedtest-cli/default.nix b/pkgs/tools/networking/speedtest-cli/default.nix
index 623081fbb4ef..eedea841356d 100644
--- a/pkgs/tools/networking/speedtest-cli/default.nix
+++ b/pkgs/tools/networking/speedtest-cli/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchFromGitHub, pythonPackages }:
+{ stdenv, fetchFromGitHub, python3Packages }:
 
-pythonPackages.buildPythonApplication rec {
+python3Packages.buildPythonApplication rec {
   name = "speedtest-cli-${version}";
   version = "2.0.2";
 
diff --git a/pkgs/tools/networking/spoofer/default.nix b/pkgs/tools/networking/spoofer/default.nix
index acda30dbfef8..ad03e9266c68 100644
--- a/pkgs/tools/networking/spoofer/default.nix
+++ b/pkgs/tools/networking/spoofer/default.nix
@@ -6,12 +6,12 @@ in
 
 stdenv.mkDerivation rec {
   pname = "spoofer";
-  version = "1.3.2";
+  version = "1.3.3";
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "https://www.caida.org/projects/spoofer/downloads/${name}.tar.gz";
-    sha256 = "05297dyyq8bdpbr3zz974l7vm766lq1bsxvzp5pa4jfpvnj7cl1g";
+    sha256 = "0zpqn3jj14grwggzl235smm93d2lm5r5cr6z6wydw1045m5rlvrp";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/tools/networking/sshpass/default.nix b/pkgs/tools/networking/sshpass/default.nix
index aedb89ce4891..94221a359c1d 100644
--- a/pkgs/tools/networking/sshpass/default.nix
+++ b/pkgs/tools/networking/sshpass/default.nix
@@ -9,10 +9,11 @@ stdenv.mkDerivation rec {
     sha256 = "0q7fblaczb7kwbsz0gdy9267z0sllzgmf0c7z5c9mf88wv74ycn6";
   };
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = https://sourceforge.net/projects/sshpass/;
     description = "Non-interactive ssh password auth";
-    maintainers = [ stdenv.lib.maintainers.madjar ];
-    platforms = stdenv.lib.platforms.unix;
+    license = licenses.gpl2;
+    maintainers = [ maintainers.madjar ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/ssmtp/default.nix b/pkgs/tools/networking/ssmtp/default.nix
index 031f32b53626..24e96491f9d8 100644
--- a/pkgs/tools/networking/ssmtp/default.nix
+++ b/pkgs/tools/networking/ssmtp/default.nix
@@ -14,7 +14,10 @@ stdenv.mkDerivation {
   # See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=858781
   patches = [ ./ssmtp_support_AuthPassFile_parameter.patch ];
 
-  configureFlags = "--sysconfdir=/etc ${if tlsSupport then "--enable-ssl" else ""}";
+  configureFlags = [
+    "--sysconfdir=/etc"
+    (stdenv.lib.enableFeature tlsSupport "ssl")
+  ];
 
   postConfigure =
     ''
@@ -33,6 +36,7 @@ stdenv.mkDerivation {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
+    license = licenses.gpl2;
     maintainers = with maintainers; [ basvandijk ];
   };
 }
diff --git a/pkgs/tools/networking/sstp/default.nix b/pkgs/tools/networking/sstp/default.nix
index dce6d1acb776..e8db3a071843 100644
--- a/pkgs/tools/networking/sstp/default.nix
+++ b/pkgs/tools/networking/sstp/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     homepage = http://sstp-client.sourceforge.net/;
     platforms = stdenv.lib.platforms.linux;
     maintainers = [ stdenv.lib.maintainers.ktosiek ];
+    license = stdenv.lib.licenses.gpl2;
   };
 }
diff --git a/pkgs/tools/networking/surfraw/default.nix b/pkgs/tools/networking/surfraw/default.nix
index b23616c57e92..80daf6447efa 100644
--- a/pkgs/tools/networking/surfraw/default.nix
+++ b/pkgs/tools/networking/surfraw/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     homepage = http://surfraw.alioth.debian.org;
     maintainers = [];
     platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.publicDomain;
   };
 }
diff --git a/pkgs/tools/networking/swec/default.nix b/pkgs/tools/networking/swec/default.nix
index 4af7e1eb5bab..bc9c9532e4f0 100644
--- a/pkgs/tools/networking/swec/default.nix
+++ b/pkgs/tools/networking/swec/default.nix
@@ -9,8 +9,8 @@ stdenv.mkDerivation rec {
     sha256 = "1m3971z4z1wr0paggprfz0n8ng8vsnkc9m6s3bdplgyz7qjk6jwx";
   };
 
-  buildInputs = [ makeWrapper perl LWP URI HTMLParser ]
-   ++ stdenv.lib.optionals doCheck [ HTTPServerSimple Parent ];
+  buildInputs = [ makeWrapper perl LWP URI HTMLParser ];
+  checkInputs = [ HTTPServerSimple Parent ];
 
   configurePhase = ''
     for i in swec tests/{runTests,testServer}
diff --git a/pkgs/tools/networking/tcpdump/default.nix b/pkgs/tools/networking/tcpdump/default.nix
index 8b4850a6347c..58f020e1bdd8 100644
--- a/pkgs/tools/networking/tcpdump/default.nix
+++ b/pkgs/tools/networking/tcpdump/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libpcap }:
+{ stdenv, fetchurl, libpcap, perl }:
 
 stdenv.mkDerivation rec {
   name = "tcpdump-${version}";
@@ -16,6 +16,12 @@ stdenv.mkDerivation rec {
   #   sha256 = "1vzrvn1q7x28h18yskqc390y357pzpg5xd3pzzj4xz3llnvsr64p";
   # };
 
+  postPatch = ''
+    patchShebangs tests
+  '';
+
+  checkInputs = [ perl ];
+
   buildInputs = [ libpcap ];
 
   configureFlags = stdenv.lib.optional
diff --git a/pkgs/tools/networking/trickle/default.nix b/pkgs/tools/networking/trickle/default.nix
index f6c88bb66b7c..7a4adc14c2df 100644
--- a/pkgs/tools/networking/trickle/default.nix
+++ b/pkgs/tools/networking/trickle/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
 
   LDFLAGS = "-levent";
 
-  configureFlags = "--with-libevent";
+  configureFlags = [ "--with-libevent" ];
 
   hardeningDisable = [ "format" ];
 
diff --git a/pkgs/tools/networking/vtun/default.nix b/pkgs/tools/networking/vtun/default.nix
index fb0ee64cc2c0..d2cbb5d8a4ee 100644
--- a/pkgs/tools/networking/vtun/default.nix
+++ b/pkgs/tools/networking/vtun/default.nix
@@ -20,10 +20,11 @@ stdenv.mkDerivation rec {
   '';
   buildInputs = [ lzo openssl zlib yacc flex ];
 
-  configureFlags = ''
-    --with-lzo-headers=${lzo}/include/lzo
-    --with-ssl-headers=${openssl.dev}/include/openssl
-    --with-blowfish-headers=${openssl.dev}/include/openssl'';
+  configureFlags = [
+    "--with-lzo-headers=${lzo}/include/lzo"
+    "--with-ssl-headers=${openssl.dev}/include/openssl"
+    "--with-blowfish-headers=${openssl.dev}/include/openssl"
+  ];
 
   meta = with stdenv.lib; {
       description = "Virtual Tunnels over TCP/IP with traffic shaping, compression and encryption";
diff --git a/pkgs/tools/networking/webalizer/default.nix b/pkgs/tools/networking/webalizer/default.nix
index 5d31d35bd634..67a95f32b619 100644
--- a/pkgs/tools/networking/webalizer/default.nix
+++ b/pkgs/tools/networking/webalizer/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, zlib, libpng, gd, geoip, db}:
+{ stdenv, fetchurl, zlib, libpng, gd, geoip, db }:
 
 stdenv.mkDerivation {
   name = "webalizer-2.23-05";
@@ -16,7 +16,12 @@ stdenv.mkDerivation {
 
   buildInputs = [zlib libpng gd geoip db]; 
 
-  configureFlags = "--enable-dns --enable-geoip --disable-static --enable-shared";
+  configureFlags = [
+    "--enable-dns"
+    "--enable-geoip"
+    "--disable-static"
+    "--enable-shared"
+  ];
 
   meta = {
     platforms = stdenv.lib.platforms.unix;
diff --git a/pkgs/tools/networking/wget/default.nix b/pkgs/tools/networking/wget/default.nix
index 5c1636ddb862..0bd99c635961 100644
--- a/pkgs/tools/networking/wget/default.nix
+++ b/pkgs/tools/networking/wget/default.nix
@@ -34,8 +34,9 @@ stdenv.mkDerivation rec {
     ++ stdenv.lib.optional (libpsl != null) libpsl
     ++ stdenv.lib.optional stdenv.isDarwin perl;
 
-  configureFlags =
-    if openssl != null then "--with-ssl=openssl" else "--without-ssl";
+  configureFlags = [
+    (stdenv.lib.withFeatureAs (openssl != null) "ssl" "openssl")
+  ];
 
   doCheck = false;
 
diff --git a/pkgs/tools/networking/wireguard-tools/default.nix b/pkgs/tools/networking/wireguard-tools/default.nix
index 24a19b8de9db..96e2a094ac0a 100644
--- a/pkgs/tools/networking/wireguard-tools/default.nix
+++ b/pkgs/tools/networking/wireguard-tools/default.nix
@@ -4,11 +4,11 @@ with stdenv.lib;
 
 stdenv.mkDerivation rec {
   name = "wireguard-tools-${version}";
-  version = "0.0.20180708";
+  version = "0.0.20180809";
 
   src = fetchzip {
     url = "https://git.zx2c4.com/WireGuard/snapshot/WireGuard-${version}.tar.xz";
-    sha256 = "04c3vynr7rfmnnw7gccbap9xcfi89ma09lq66c4bzjzxny1n2wdz";
+    sha256 = "07sbaignf8l4lndfxypgacaf2qmgyfkv1j5z7kn0cw5mgfsphmkx";
   };
 
   sourceRoot = "source/src/tools";
diff --git a/pkgs/tools/networking/x11-ssh-askpass/default.nix b/pkgs/tools/networking/x11-ssh-askpass/default.nix
index 1075e4616186..4061d5284aa6 100644
--- a/pkgs/tools/networking/x11-ssh-askpass/default.nix
+++ b/pkgs/tools/networking/x11-ssh-askpass/default.nix
@@ -1,20 +1,28 @@
-{stdenv, fetchurl, xlibsWrapper, imake}:
+{ stdenv, fetchurl, xlibsWrapper, imake }:
 
 stdenv.mkDerivation {
   name = "x11-ssh-askpass-1.2.4.1";
 
+  outputs = [ "out" "man" ];
+
   src = fetchurl {
     url = http://www.jmknoble.net/software/x11-ssh-askpass/x11-ssh-askpass-1.2.4.1.tar.gz;
     sha1 = "78c992951685d4dbffb77536f37b83ae2a6eafc7";
   };
 
-  preConfigure = "
-    configureFlags=\"--with-app-defaults-dir=$out/etc/X11/app-defaults\"
-  ";
+  nativeBuildInputs = [ imake ];
+  buildInputs = [ xlibsWrapper ];
+
+  configureFlags = [
+    "--with-app-defaults-dir=$out/etc/X11/app-defaults"
+  ];
 
-  buildPhase = "xmkmf; make includes; make";
+  preBuild = ''
+    xmkmf
+    make includes
+  '';
 
-  buildInputs = [xlibsWrapper imake];
+  installTargets = [ "install" "install.man" ];
 
   meta = {
     homepage = http://www.jmknoble.net/software/x11-ssh-askpass/;
diff --git a/pkgs/tools/networking/zerotierone/default.nix b/pkgs/tools/networking/zerotierone/default.nix
index bc8b1a5e0cdf..2853c595e431 100644
--- a/pkgs/tools/networking/zerotierone/default.nix
+++ b/pkgs/tools/networking/zerotierone/default.nix
@@ -1,15 +1,21 @@
 { stdenv, fetchurl, openssl, lzo, zlib, iproute, which, ronn }:
 
 stdenv.mkDerivation rec {
-  version = "1.2.10";
+  version = "1.2.12";
   name = "zerotierone-${version}";
 
   src = fetchurl {
     url = "https://github.com/zerotier/ZeroTierOne/archive/${version}.tar.gz";
-    sha256 = "0mqckh51xj79z468n2683liczqracip36jvhfyd0fr3pwrbyqy8w";
+    sha256 = "1m7ynrgzpg2sp37hcmjkx6w173icfhakzn1c1zrdzrxmmszrj9r1";
   };
 
   preConfigure = ''
+      substituteInPlace ./osdep/ManagedRoute.cpp \
+        --replace '/usr/sbin/ip' '${iproute}/bin/ip'
+
+      substituteInPlace ./osdep/ManagedRoute.cpp \
+        --replace '/sbin/ip' '${iproute}/bin/ip'
+
       substituteInPlace ./osdep/LinuxEthernetTap.cpp \
         --replace 'execlp("ip",' 'execlp("${iproute}/bin/ip",'