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/6tunnel/default.nix2
-rw-r--r--pkgs/tools/networking/acme-client/default.nix15
-rw-r--r--pkgs/tools/networking/ahcpd/default.nix6
-rw-r--r--pkgs/tools/networking/aircrack-ng/default.nix12
-rw-r--r--pkgs/tools/networking/airfield/default.nix7
-rw-r--r--pkgs/tools/networking/airfield/node-packages.nix174
-rw-r--r--pkgs/tools/networking/airfield/node.nix10
-rw-r--r--pkgs/tools/networking/altermime/default.nix17
-rw-r--r--pkgs/tools/networking/amass/default.nix17
-rw-r--r--pkgs/tools/networking/anevicon/default.nix43
-rw-r--r--pkgs/tools/networking/argus-clients/default.nix12
-rw-r--r--pkgs/tools/networking/argus/default.nix12
-rw-r--r--pkgs/tools/networking/aria2/default.nix10
-rw-r--r--pkgs/tools/networking/arping/default.nix8
-rw-r--r--pkgs/tools/networking/arpoison/default.nix4
-rw-r--r--pkgs/tools/networking/assh/default.nix19
-rw-r--r--pkgs/tools/networking/atftp/default.nix7
-rw-r--r--pkgs/tools/networking/atinout/default.nix10
-rw-r--r--pkgs/tools/networking/autossh/default.nix13
-rw-r--r--pkgs/tools/networking/axel/default.nix12
-rw-r--r--pkgs/tools/networking/babeld/default.nix18
-rw-r--r--pkgs/tools/networking/bacnet-stack/default.nix31
-rw-r--r--pkgs/tools/networking/badvpn/default.nix22
-rw-r--r--pkgs/tools/networking/bandwhich/default.nix14
-rw-r--r--pkgs/tools/networking/bgpdump/default.nix10
-rw-r--r--pkgs/tools/networking/bgpq3/default.nix4
-rw-r--r--pkgs/tools/networking/bgpq4/default.nix25
-rw-r--r--pkgs/tools/networking/biosdevname/default.nix4
-rw-r--r--pkgs/tools/networking/bore/default.nix47
-rw-r--r--pkgs/tools/networking/boringtun/default.nix8
-rw-r--r--pkgs/tools/networking/boundary/default.nix66
-rwxr-xr-xpkgs/tools/networking/boundary/update.sh39
-rw-r--r--pkgs/tools/networking/brook/default.nix4
-rw-r--r--pkgs/tools/networking/bsd-finger/default.nix6
-rw-r--r--pkgs/tools/networking/bud/default.nix10
-rw-r--r--pkgs/tools/networking/bukubrow/default.nix8
-rw-r--r--pkgs/tools/networking/bully/default.nix4
-rw-r--r--pkgs/tools/networking/burpsuite/default.nix47
-rw-r--r--pkgs/tools/networking/bwm-ng/default.nix6
-rw-r--r--pkgs/tools/networking/cadaver/configure.patch20
-rw-r--r--pkgs/tools/networking/cadaver/default.nix10
-rw-r--r--pkgs/tools/networking/calendar-cli/default.nix34
-rw-r--r--pkgs/tools/networking/cantoolz/default.nix62
-rw-r--r--pkgs/tools/networking/carddav-util/default.nix12
-rw-r--r--pkgs/tools/networking/cassowary/default.nix6
-rw-r--r--pkgs/tools/networking/ccnet/default.nix25
-rw-r--r--pkgs/tools/networking/cdpr/default.nix25
-rw-r--r--pkgs/tools/networking/chaos/default.nix29
-rw-r--r--pkgs/tools/networking/chisel/default.nix36
-rw-r--r--pkgs/tools/networking/chrony/allow-clock_adjtime.patch26
-rw-r--r--pkgs/tools/networking/chrony/default.nix23
-rw-r--r--pkgs/tools/networking/chrony/fix-seccomp-build.patch13
-rw-r--r--pkgs/tools/networking/circus/default.nix15
-rw-r--r--pkgs/tools/networking/cjdns/default.nix14
-rw-r--r--pkgs/tools/networking/cksfv/default.nix8
-rw-r--r--pkgs/tools/networking/clash/default.nix14
-rw-r--r--pkgs/tools/networking/cloud-custodian/default.nix4
-rw-r--r--pkgs/tools/networking/cntlm/default.nix6
-rw-r--r--pkgs/tools/networking/cocom/default.nix32
-rw-r--r--pkgs/tools/networking/connect/default.nix12
-rw-r--r--pkgs/tools/networking/connman/connman-gtk/default.nix6
-rw-r--r--pkgs/tools/networking/connman/connman-ncurses/default.nix6
-rw-r--r--pkgs/tools/networking/connman/connman-notify/default.nix4
-rw-r--r--pkgs/tools/networking/connman/connman.nix22
-rw-r--r--pkgs/tools/networking/connman/connman_dmenu/default.nix8
-rw-r--r--pkgs/tools/networking/corerad/default.nix12
-rw-r--r--pkgs/tools/networking/corkscrew/default.nix11
-rw-r--r--pkgs/tools/networking/crackle/default.nix24
-rw-r--r--pkgs/tools/networking/croc/default.nix25
-rw-r--r--pkgs/tools/networking/croc/test-local-relay.nix19
-rw-r--r--pkgs/tools/networking/curl-unix-socket/default.nix4
-rw-r--r--pkgs/tools/networking/curl/CVE-2021-22897.patch64
-rw-r--r--pkgs/tools/networking/curl/CVE-2021-22898.patch25
-rw-r--r--pkgs/tools/networking/curl/CVE-2021-22901.patch437
-rw-r--r--pkgs/tools/networking/curl/default.nix42
-rw-r--r--pkgs/tools/networking/curlie/default.nix8
-rw-r--r--pkgs/tools/networking/darkstat/default.nix4
-rw-r--r--pkgs/tools/networking/davix/default.nix14
-rw-r--r--pkgs/tools/networking/dd-agent/5.nix19
-rw-r--r--pkgs/tools/networking/dd-agent/datadog-agent-deps.nix2
-rw-r--r--pkgs/tools/networking/dd-agent/datadog-agent.nix10
-rw-r--r--pkgs/tools/networking/dd-agent/datadog-process-agent-deps.nix2
-rw-r--r--pkgs/tools/networking/dd-agent/datadog-process-agent.nix4
-rw-r--r--pkgs/tools/networking/dd-agent/integrations-core.nix2
-rw-r--r--pkgs/tools/networking/ddclient/default.nix27
-rw-r--r--pkgs/tools/networking/dhcp/default.nix21
-rw-r--r--pkgs/tools/networking/dhcpcd/default.nix11
-rw-r--r--pkgs/tools/networking/dhcpdump/default.nix4
-rw-r--r--pkgs/tools/networking/dhcping/default.nix6
-rw-r--r--pkgs/tools/networking/dibbler/default.nix6
-rw-r--r--pkgs/tools/networking/dirb/default.nix8
-rw-r--r--pkgs/tools/networking/djbdns/default.nix4
-rw-r--r--pkgs/tools/networking/dnscrypt-proxy2/default.nix8
-rw-r--r--pkgs/tools/networking/dnscrypt-wrapper/default.nix6
-rw-r--r--pkgs/tools/networking/dnsmasq/default.nix20
-rw-r--r--pkgs/tools/networking/dnsperf/default.nix21
-rw-r--r--pkgs/tools/networking/dnsproxy/default.nix8
-rw-r--r--pkgs/tools/networking/dnstop/default.nix8
-rw-r--r--pkgs/tools/networking/dnstracer/default.nix10
-rw-r--r--pkgs/tools/networking/dnstwist/default.nix37
-rw-r--r--pkgs/tools/networking/dnsviz/default.nix51
-rw-r--r--pkgs/tools/networking/dnsviz/fix-path.patch18
-rw-r--r--pkgs/tools/networking/dogdns/default.nix38
-rw-r--r--pkgs/tools/networking/driftnet/default.nix69
-rw-r--r--pkgs/tools/networking/driftnet/fix-darwin-build.patch61
-rw-r--r--pkgs/tools/networking/drill/default.nix18
-rw-r--r--pkgs/tools/networking/dropbear/default.nix10
-rw-r--r--pkgs/tools/networking/dsniff/default.nix23
-rw-r--r--pkgs/tools/networking/easyrsa/2.x.nix4
-rw-r--r--pkgs/tools/networking/easyrsa/default.nix13
-rw-r--r--pkgs/tools/networking/easyrsa/fix-paths.patch48
-rw-r--r--pkgs/tools/networking/eggdrop/default.nix4
-rw-r--r--pkgs/tools/networking/email/default.nix2
-rw-r--r--pkgs/tools/networking/eternal-terminal/default.nix23
-rw-r--r--pkgs/tools/networking/evillimiter/default.nix53
-rw-r--r--pkgs/tools/networking/fakeroute/default.nix4
-rw-r--r--pkgs/tools/networking/fastd/default.nix52
-rw-r--r--pkgs/tools/networking/fdm/default.nix24
-rw-r--r--pkgs/tools/networking/ferm/default.nix16
-rw-r--r--pkgs/tools/networking/filegive/default.nix4
-rw-r--r--pkgs/tools/networking/findomain/default.nix13
-rw-r--r--pkgs/tools/networking/flannel/default.nix4
-rw-r--r--pkgs/tools/networking/flvstreamer/default.nix12
-rw-r--r--pkgs/tools/networking/fping/default.nix4
-rw-r--r--pkgs/tools/networking/freebind/default.nix4
-rw-r--r--pkgs/tools/networking/frp/default.nix8
-rw-r--r--pkgs/tools/networking/gandi-cli/default.nix30
-rw-r--r--pkgs/tools/networking/getmail/default.nix9
-rw-r--r--pkgs/tools/networking/getmail6/default.nix35
-rw-r--r--pkgs/tools/networking/gftp/default.nix8
-rw-r--r--pkgs/tools/networking/ghostunnel/default.nix29
-rw-r--r--pkgs/tools/networking/globalprotect-openconnect/default.nix43
-rw-r--r--pkgs/tools/networking/gmrender-resurrect/default.nix14
-rw-r--r--pkgs/tools/networking/gmvault/default.nix31
-rw-r--r--pkgs/tools/networking/gmvault/gmvault.py4
-rw-r--r--pkgs/tools/networking/gnirehtet/default.nix27
-rw-r--r--pkgs/tools/networking/gnirehtet/paths.patch48
-rw-r--r--pkgs/tools/networking/go-shadowsocks2/default.nix14
-rw-r--r--pkgs/tools/networking/go-shadowsocks2/deps.nix30
-rw-r--r--pkgs/tools/networking/gobgp/default.nix33
-rw-r--r--pkgs/tools/networking/goimapnotify/default.nix8
-rw-r--r--pkgs/tools/networking/goklp/default.nix4
-rw-r--r--pkgs/tools/networking/goreplay/default.nix26
-rw-r--r--pkgs/tools/networking/gping/default.nix33
-rw-r--r--pkgs/tools/networking/grpcui/default.nix6
-rw-r--r--pkgs/tools/networking/grpcurl/default.nix27
-rw-r--r--pkgs/tools/networking/grpcurl/deps.nix183
-rw-r--r--pkgs/tools/networking/guardian-agent/default.nix7
-rw-r--r--pkgs/tools/networking/gupnp-tools/default.nix17
-rw-r--r--pkgs/tools/networking/gvpe/default.nix6
-rw-r--r--pkgs/tools/networking/hans/default.nix4
-rw-r--r--pkgs/tools/networking/haproxy/default.nix13
-rw-r--r--pkgs/tools/networking/hey/default.nix6
-rw-r--r--pkgs/tools/networking/horst/default.nix6
-rw-r--r--pkgs/tools/networking/hping/default.nix57
-rw-r--r--pkgs/tools/networking/htpdate/default.nix4
-rw-r--r--pkgs/tools/networking/http-prompt/default.nix4
-rw-r--r--pkgs/tools/networking/httperf/default.nix8
-rw-r--r--pkgs/tools/networking/httpie/default.nix48
-rw-r--r--pkgs/tools/networking/httpie/strip-venv.patch13
-rw-r--r--pkgs/tools/networking/httping/default.nix4
-rw-r--r--pkgs/tools/networking/httplab/default.nix4
-rw-r--r--pkgs/tools/networking/httplz/default.nix10
-rw-r--r--pkgs/tools/networking/httpstat/default.nix42
-rw-r--r--pkgs/tools/networking/httptunnel/default.nix4
-rw-r--r--pkgs/tools/networking/hue-cli/gemset.nix2
-rw-r--r--pkgs/tools/networking/hurl/default.nix40
-rw-r--r--pkgs/tools/networking/hyenae/default.nix10
-rw-r--r--pkgs/tools/networking/i2p/default.nix14
-rw-r--r--pkgs/tools/networking/i2p/i2p.patch2
-rw-r--r--pkgs/tools/networking/i2pd/default.nix19
-rw-r--r--pkgs/tools/networking/ifstat-legacy/default.nix6
-rw-r--r--pkgs/tools/networking/iftop/default.nix6
-rw-r--r--pkgs/tools/networking/igmpproxy/default.nix26
-rw-r--r--pkgs/tools/networking/imapproxy/default.nix6
-rw-r--r--pkgs/tools/networking/imapsync/default.nix4
-rw-r--r--pkgs/tools/networking/inadyn/default.nix8
-rw-r--r--pkgs/tools/networking/inetutils/default.nix23
-rw-r--r--pkgs/tools/networking/innernet/default.nix53
-rw-r--r--pkgs/tools/networking/iodine/default.nix6
-rw-r--r--pkgs/tools/networking/iouyap/default.nix4
-rw-r--r--pkgs/tools/networking/ip2location/default.nix4
-rw-r--r--pkgs/tools/networking/ip2unix/default.nix14
-rw-r--r--pkgs/tools/networking/ipcalc/default.nix6
-rw-r--r--pkgs/tools/networking/iperf/2.nix4
-rw-r--r--pkgs/tools/networking/iperf/3.nix10
-rw-r--r--pkgs/tools/networking/ipgrep/default.nix16
-rw-r--r--pkgs/tools/networking/ipinfo/default.nix28
-rw-r--r--pkgs/tools/networking/ipv6calc/default.nix10
-rw-r--r--pkgs/tools/networking/isync/default.nix14
-rw-r--r--pkgs/tools/networking/iwgtk/default.nix28
-rw-r--r--pkgs/tools/networking/jnettop/default.nix10
-rw-r--r--pkgs/tools/networking/junkie/default.nix10
-rw-r--r--pkgs/tools/networking/jwhois/default.nix6
-rw-r--r--pkgs/tools/networking/kail/default.nix5
-rw-r--r--pkgs/tools/networking/kail/deps.nix2
-rw-r--r--pkgs/tools/networking/kapp/default.nix32
-rw-r--r--pkgs/tools/networking/kea/default.nix47
-rw-r--r--pkgs/tools/networking/kea/dont-create-var.patch18
-rw-r--r--pkgs/tools/networking/keepalived/default.nix12
-rw-r--r--pkgs/tools/networking/lftp/default.nix12
-rw-r--r--pkgs/tools/networking/libnids/default.nix6
-rw-r--r--pkgs/tools/networking/libreswan/default.nix152
-rw-r--r--pkgs/tools/networking/linkchecker/default.nix33
-rw-r--r--pkgs/tools/networking/lldpd/default.nix8
-rw-r--r--pkgs/tools/networking/logmein-hamachi/default.nix8
-rw-r--r--pkgs/tools/networking/lsh/default.nix4
-rw-r--r--pkgs/tools/networking/lxi-tools/default.nix34
-rw-r--r--pkgs/tools/networking/lychee/default.nix35
-rw-r--r--pkgs/tools/networking/maildrop/default.nix6
-rw-r--r--pkgs/tools/networking/mailsend/default.nix10
-rw-r--r--pkgs/tools/networking/mailutils/default.nix30
-rw-r--r--pkgs/tools/networking/maphosts/default.nix5
-rw-r--r--pkgs/tools/networking/maphosts/gemset.nix2
-rw-r--r--pkgs/tools/networking/maxscale/default.nix12
-rw-r--r--pkgs/tools/networking/mcrcon/default.nix8
-rw-r--r--pkgs/tools/networking/mdk4/default.nix33
-rw-r--r--pkgs/tools/networking/megatools/default.nix10
-rw-r--r--pkgs/tools/networking/memtier-benchmark/default.nix12
-rw-r--r--pkgs/tools/networking/minidlna/default.nix10
-rw-r--r--pkgs/tools/networking/minio-client/default.nix19
-rw-r--r--pkgs/tools/networking/minissdpd/default.nix4
-rw-r--r--pkgs/tools/networking/miniupnpc/default.nix8
-rw-r--r--pkgs/tools/networking/miniupnpd/default.nix15
-rw-r--r--pkgs/tools/networking/miredo/default.nix6
-rw-r--r--pkgs/tools/networking/mitmproxy/default.nix55
-rw-r--r--pkgs/tools/networking/mmsd/default.nix8
-rw-r--r--pkgs/tools/networking/modem-manager/default.nix48
-rw-r--r--pkgs/tools/networking/moodle-dl/default.nix34
-rw-r--r--pkgs/tools/networking/mosh/default.nix26
-rw-r--r--pkgs/tools/networking/mosh/mosh-client_path.patch22
-rw-r--r--pkgs/tools/networking/mozwire/default.nix14
-rw-r--r--pkgs/tools/networking/mpack/default.nix4
-rw-r--r--pkgs/tools/networking/mtr/default.nix40
-rw-r--r--pkgs/tools/networking/mu/default.nix27
-rw-r--r--pkgs/tools/networking/mubeng/default.nix25
-rw-r--r--pkgs/tools/networking/n2n/default.nix32
-rw-r--r--pkgs/tools/networking/nat-traverse/default.nix4
-rw-r--r--pkgs/tools/networking/nbd/default.nix18
-rw-r--r--pkgs/tools/networking/ncftp/default.nix6
-rw-r--r--pkgs/tools/networking/ndisc6/default.nix4
-rw-r--r--pkgs/tools/networking/ndjbdns/default.nix6
-rw-r--r--pkgs/tools/networking/nebula/default.nix10
-rw-r--r--pkgs/tools/networking/netboot/default.nix8
-rw-r--r--pkgs/tools/networking/netcat/default.nix4
-rw-r--r--pkgs/tools/networking/nethogs/default.nix4
-rw-r--r--pkgs/tools/networking/netifd/default.nix19
-rw-r--r--pkgs/tools/networking/netkit/tftp/default.nix8
-rw-r--r--pkgs/tools/networking/netmask/default.nix4
-rw-r--r--pkgs/tools/networking/netrw/default.nix10
-rw-r--r--pkgs/tools/networking/netselect/default.nix4
-rw-r--r--pkgs/tools/networking/netsniff-ng/default.nix64
-rw-r--r--pkgs/tools/networking/nettee/default.nix2
-rw-r--r--pkgs/tools/networking/network-manager/fix-paths.patch100
-rw-r--r--pkgs/tools/networking/networkmanager/0.9.8/default.nix (renamed from pkgs/tools/networking/network-manager/0.9.8/default.nix)8
-rw-r--r--pkgs/tools/networking/networkmanager/0.9.8/libnl-3.2.25.patch (renamed from pkgs/tools/networking/network-manager/0.9.8/libnl-3.2.25.patch)0
-rw-r--r--pkgs/tools/networking/networkmanager/0.9.8/nixos-purity.patch (renamed from pkgs/tools/networking/network-manager/0.9.8/nixos-purity.patch)0
-rw-r--r--pkgs/tools/networking/networkmanager/applet/default.nix (renamed from pkgs/tools/networking/network-manager/applet/default.nix)21
-rw-r--r--pkgs/tools/networking/networkmanager/default.nix (renamed from pkgs/tools/networking/network-manager/default.nix)26
-rw-r--r--pkgs/tools/networking/networkmanager/dmenu/default.nix (renamed from pkgs/tools/networking/network-manager/dmenu/default.nix)16
-rw-r--r--pkgs/tools/networking/networkmanager/fix-install-paths.patch (renamed from pkgs/tools/networking/network-manager/fix-install-paths.patch)0
-rw-r--r--pkgs/tools/networking/networkmanager/fix-paths.patch92
-rw-r--r--pkgs/tools/networking/networkmanager/fortisslvpn/default.nix (renamed from pkgs/tools/networking/network-manager/fortisslvpn/default.nix)13
-rw-r--r--pkgs/tools/networking/networkmanager/fortisslvpn/fix-paths.patch (renamed from pkgs/tools/networking/network-manager/fortisslvpn/fix-paths.patch)0
-rw-r--r--pkgs/tools/networking/networkmanager/iodine/default.nix (renamed from pkgs/tools/networking/network-manager/iodine/default.nix)12
-rw-r--r--pkgs/tools/networking/networkmanager/iodine/fix-paths.patch (renamed from pkgs/tools/networking/network-manager/iodine/fix-paths.patch)0
-rw-r--r--pkgs/tools/networking/networkmanager/l2tp/default.nix (renamed from pkgs/tools/networking/network-manager/l2tp/default.nix)8
-rw-r--r--pkgs/tools/networking/networkmanager/l2tp/fix-paths.patch (renamed from pkgs/tools/networking/network-manager/l2tp/fix-paths.patch)0
-rw-r--r--pkgs/tools/networking/networkmanager/libnma/default.nix (renamed from pkgs/tools/networking/network-manager/libnma/default.nix)14
-rw-r--r--pkgs/tools/networking/networkmanager/libnma/hardcode-gsettings.patch (renamed from pkgs/tools/networking/network-manager/libnma/hardcode-gsettings.patch)0
-rw-r--r--pkgs/tools/networking/networkmanager/openconnect/default.nix (renamed from pkgs/tools/networking/network-manager/openconnect/default.nix)17
-rw-r--r--pkgs/tools/networking/networkmanager/openconnect/fix-paths.patch (renamed from pkgs/tools/networking/network-manager/openconnect/fix-paths.patch)0
-rw-r--r--pkgs/tools/networking/networkmanager/openvpn/default.nix (renamed from pkgs/tools/networking/network-manager/openvpn/default.nix)15
-rw-r--r--pkgs/tools/networking/networkmanager/openvpn/fix-paths.patch (renamed from pkgs/tools/networking/network-manager/openvpn/fix-paths.patch)0
-rw-r--r--pkgs/tools/networking/networkmanager/sstp/default.nix64
-rw-r--r--pkgs/tools/networking/networkmanager/strongswan/default.nix (renamed from pkgs/tools/networking/network-manager/strongswan/default.nix)8
-rw-r--r--pkgs/tools/networking/networkmanager/tray.nix (renamed from pkgs/tools/networking/network-manager/tray.nix)0
-rw-r--r--pkgs/tools/networking/networkmanager/vpnc/default.nix (renamed from pkgs/tools/networking/network-manager/vpnc/default.nix)15
-rw-r--r--pkgs/tools/networking/networkmanager/vpnc/fix-paths.patch (renamed from pkgs/tools/networking/network-manager/vpnc/fix-paths.patch)0
-rw-r--r--pkgs/tools/networking/nfdump/default.nix12
-rw-r--r--pkgs/tools/networking/nfstrace/default.nix17
-rw-r--r--pkgs/tools/networking/ngrep/default.nix2
-rw-r--r--pkgs/tools/networking/ngrok-2/default.nix11
-rwxr-xr-xpkgs/tools/networking/ngrok-2/update.sh1
-rw-r--r--pkgs/tools/networking/ngrok-2/versions.json36
-rw-r--r--pkgs/tools/networking/nikto/NIKTODIR-nix-wrapper-fix.patch26
-rw-r--r--pkgs/tools/networking/nikto/default.nix64
-rw-r--r--pkgs/tools/networking/noip/default.nix8
-rw-r--r--pkgs/tools/networking/notemap/default.nix37
-rw-r--r--pkgs/tools/networking/nss-mdns/default.nix8
-rw-r--r--pkgs/tools/networking/nss-pam-ldapd/default.nix8
-rw-r--r--pkgs/tools/networking/ntopng/default.nix12
-rw-r--r--pkgs/tools/networking/ntp/default.nix8
-rw-r--r--pkgs/tools/networking/nuttcp/default.nix4
-rw-r--r--pkgs/tools/networking/nxdomain/default.nix29
-rw-r--r--pkgs/tools/networking/nylon/default.nix4
-rw-r--r--pkgs/tools/networking/nzbget/default.nix6
-rw-r--r--pkgs/tools/networking/oapi-codegen/default.nix25
-rw-r--r--pkgs/tools/networking/ocproxy/default.nix4
-rw-r--r--pkgs/tools/networking/ocserv/default.nix10
-rw-r--r--pkgs/tools/networking/offlineimap/default.nix6
-rw-r--r--pkgs/tools/networking/ofono/default.nix20
-rw-r--r--pkgs/tools/networking/olsrd/default.nix27
-rw-r--r--pkgs/tools/networking/oneshot/default.nix6
-rw-r--r--pkgs/tools/networking/ookla-speedtest/default.nix43
-rw-r--r--pkgs/tools/networking/openapi-generator-cli/default.nix22
-rw-r--r--pkgs/tools/networking/openapi-generator-cli/example.nix31
-rw-r--r--pkgs/tools/networking/openapi-generator-cli/unstable.nix24
-rw-r--r--pkgs/tools/networking/openconnect/default.nix63
-rw-r--r--pkgs/tools/networking/openconnect_pa/default.nix40
-rw-r--r--pkgs/tools/networking/openfortivpn/default.nix48
-rw-r--r--pkgs/tools/networking/openntpd/default.nix8
-rw-r--r--pkgs/tools/networking/openresolv/default.nix14
-rw-r--r--pkgs/tools/networking/opensm/default.nix4
-rw-r--r--pkgs/tools/networking/opensnitch/daemon.nix50
-rw-r--r--pkgs/tools/networking/opensnitch/ui.nix46
-rw-r--r--pkgs/tools/networking/openssh/common.nix127
-rw-r--r--pkgs/tools/networking/openssh/copyid.nix11
-rw-r--r--pkgs/tools/networking/openssh/default.nix176
-rw-r--r--pkgs/tools/networking/openssh/ssh-copy-id-fix-eof.patch21
-rw-r--r--pkgs/tools/networking/openssh/ssh-keysign-8.4.patch (renamed from pkgs/tools/networking/openssh/ssh-keysign.patch)0
-rw-r--r--pkgs/tools/networking/openssh/ssh-keysign-8.5.patch24
-rw-r--r--pkgs/tools/networking/openvpn/default.nix117
-rw-r--r--pkgs/tools/networking/openvpn/openvpn-auth-ldap.nix61
-rw-r--r--pkgs/tools/networking/openvpn/openvpn_learnaddress.nix11
-rw-r--r--pkgs/tools/networking/openvpn/update-resolv-conf.nix2
-rw-r--r--pkgs/tools/networking/openvpn/update-systemd-resolved.nix6
-rw-r--r--pkgs/tools/networking/p2p/amule/default.nix75
-rw-r--r--pkgs/tools/networking/p2p/azureus/default.nix6
-rw-r--r--pkgs/tools/networking/p2p/gtk-gnutella/default.nix20
-rw-r--r--pkgs/tools/networking/p2p/libtorrent-jesec/default.nix38
-rw-r--r--pkgs/tools/networking/p2p/libtorrent/default.nix6
-rw-r--r--pkgs/tools/networking/p2p/rtorrent-jesec/default.nix57
-rw-r--r--pkgs/tools/networking/p2p/rtorrent/default.nix8
-rw-r--r--pkgs/tools/networking/p2p/seeks/default.nix69
-rw-r--r--pkgs/tools/networking/packetdrill/default.nix34
-rw-r--r--pkgs/tools/networking/packetdrill/nix.patch24
-rw-r--r--pkgs/tools/networking/pacparser/default.nix4
-rw-r--r--pkgs/tools/networking/par2cmdline/default.nix4
-rw-r--r--pkgs/tools/networking/pcapc/default.nix6
-rw-r--r--pkgs/tools/networking/pcapfix/default.nix6
-rw-r--r--pkgs/tools/networking/pdnsd/default.nix4
-rw-r--r--pkgs/tools/networking/pdsh/default.nix12
-rw-r--r--pkgs/tools/networking/persepolis/default.nix8
-rw-r--r--pkgs/tools/networking/philter/default.nix6
-rw-r--r--pkgs/tools/networking/phodav/default.nix14
-rw-r--r--pkgs/tools/networking/photon/default.nix8
-rw-r--r--pkgs/tools/networking/pingtcp/default.nix6
-rw-r--r--pkgs/tools/networking/pirate-get/default.nix4
-rw-r--r--pkgs/tools/networking/pixiecore/default.nix8
-rw-r--r--pkgs/tools/networking/pixiewps/default.nix10
-rw-r--r--pkgs/tools/networking/pmacct/default.nix15
-rw-r--r--pkgs/tools/networking/polygraph/default.nix6
-rw-r--r--pkgs/tools/networking/polysh/default.nix4
-rw-r--r--pkgs/tools/networking/ppp/default.nix73
-rw-r--r--pkgs/tools/networking/ppp/musl-fix-headers.patch137
-rw-r--r--pkgs/tools/networking/ppp/nix-purity.patch34
-rw-r--r--pkgs/tools/networking/pptp/default.nix6
-rw-r--r--pkgs/tools/networking/pptpd/default.nix4
-rw-r--r--pkgs/tools/networking/pritunl-ssh/default.nix29
-rw-r--r--pkgs/tools/networking/privoxy/default.nix31
-rw-r--r--pkgs/tools/networking/proxify/default.nix31
-rw-r--r--pkgs/tools/networking/proxychains/default.nix27
-rw-r--r--pkgs/tools/networking/pssh/default.nix4
-rw-r--r--pkgs/tools/networking/pwnat/default.nix6
-rw-r--r--pkgs/tools/networking/pykms/default.nix57
-rw-r--r--pkgs/tools/networking/pykms/log-to-current-directory-by-default.patch20
-rw-r--r--pkgs/tools/networking/qr-filetransfer/default.nix30
-rw-r--r--pkgs/tools/networking/qr-filetransfer/deps.nix66
-rw-r--r--pkgs/tools/networking/qrcp/default.nix44
-rw-r--r--pkgs/tools/networking/quickserve/default.nix6
-rw-r--r--pkgs/tools/networking/quicktun/default.nix4
-rw-r--r--pkgs/tools/networking/radsecproxy/default.nix10
-rw-r--r--pkgs/tools/networking/radvd/default.nix15
-rw-r--r--pkgs/tools/networking/ratools/default.nix4
-rw-r--r--pkgs/tools/networking/rcon/default.nix30
-rw-r--r--pkgs/tools/networking/rdrview/default.nix26
-rw-r--r--pkgs/tools/networking/reaver-wps-t6x/default.nix4
-rw-r--r--pkgs/tools/networking/reaver-wps/default.nix4
-rw-r--r--pkgs/tools/networking/redfang/default.nix35
-rw-r--r--pkgs/tools/networking/redir/default.nix8
-rw-r--r--pkgs/tools/networking/redsocks/default.nix8
-rw-r--r--pkgs/tools/networking/ripmime/default.nix7
-rw-r--r--pkgs/tools/networking/rp-pppoe/default.nix4
-rw-r--r--pkgs/tools/networking/rshijack/default.nix8
-rw-r--r--pkgs/tools/networking/s3cmd/default.nix6
-rw-r--r--pkgs/tools/networking/s3gof3r/default.nix4
-rw-r--r--pkgs/tools/networking/s3rs/default.nix26
-rw-r--r--pkgs/tools/networking/s4cmd/default.nix4
-rw-r--r--pkgs/tools/networking/s5cmd/default.nix22
-rw-r--r--pkgs/tools/networking/s6-dns/default.nix4
-rw-r--r--pkgs/tools/networking/s6-networking/default.nix15
-rw-r--r--pkgs/tools/networking/saldl/default.nix14
-rw-r--r--pkgs/tools/networking/samplicator/default.nix6
-rw-r--r--pkgs/tools/networking/shadowfox/default.nix8
-rw-r--r--pkgs/tools/networking/shadowsocks-libev/default.nix8
-rw-r--r--pkgs/tools/networking/shadowsocks-rust/default.nix19
-rw-r--r--pkgs/tools/networking/shncpd/default.nix4
-rw-r--r--pkgs/tools/networking/shorewall/default.nix20
-rw-r--r--pkgs/tools/networking/siege/default.nix28
-rw-r--r--pkgs/tools/networking/simpleproxy/default.nix4
-rw-r--r--pkgs/tools/networking/sipcalc/default.nix4
-rw-r--r--pkgs/tools/networking/sipsak/default.nix6
-rw-r--r--pkgs/tools/networking/sish/default.nix25
-rw-r--r--pkgs/tools/networking/slirp4netns/default.nix9
-rw-r--r--pkgs/tools/networking/smartdns/default.nix11
-rw-r--r--pkgs/tools/networking/smokeping/default.nix8
-rw-r--r--pkgs/tools/networking/snabb/default.nix10
-rw-r--r--pkgs/tools/networking/sniffglue/default.nix12
-rw-r--r--pkgs/tools/networking/socat/2.x.nix6
-rw-r--r--pkgs/tools/networking/socat/default.nix26
-rw-r--r--pkgs/tools/networking/spiped/default.nix27
-rw-r--r--pkgs/tools/networking/spoofer/default.nix16
-rw-r--r--pkgs/tools/networking/srelay/default.nix6
-rw-r--r--pkgs/tools/networking/ssh-askpass-fullscreen/default.nix31
-rw-r--r--pkgs/tools/networking/ssh-ident/default.nix21
-rw-r--r--pkgs/tools/networking/sshoogr/default.nix10
-rw-r--r--pkgs/tools/networking/sshpass/default.nix4
-rw-r--r--pkgs/tools/networking/sshping/default.nix6
-rw-r--r--pkgs/tools/networking/ssldump/default.nix8
-rw-r--r--pkgs/tools/networking/sslsplit/default.nix4
-rw-r--r--pkgs/tools/networking/ssmtp/default.nix10
-rw-r--r--pkgs/tools/networking/sstp/default.nix16
-rw-r--r--pkgs/tools/networking/stevenblack-blocklist/default.nix20
-rw-r--r--pkgs/tools/networking/strongswan/default.nix8
-rw-r--r--pkgs/tools/networking/stubby/default.nix6
-rw-r--r--pkgs/tools/networking/stun/default.nix4
-rw-r--r--pkgs/tools/networking/stunnel/default.nix12
-rw-r--r--pkgs/tools/networking/subfinder/default.nix25
-rw-r--r--pkgs/tools/networking/subfinder/deps.nix165
-rw-r--r--pkgs/tools/networking/surfraw/default.nix6
-rw-r--r--pkgs/tools/networking/swagger-codegen/default.nix16
-rw-r--r--pkgs/tools/networking/swagger-codegen3/default.nix33
-rw-r--r--pkgs/tools/networking/swaks/default.nix13
-rw-r--r--pkgs/tools/networking/swec/default.nix9
-rw-r--r--pkgs/tools/networking/tayga/default.nix4
-rw-r--r--pkgs/tools/networking/tcp-cutter/default.nix (renamed from pkgs/tools/networking/cutter/default.nix)9
-rw-r--r--pkgs/tools/networking/tcpdump/default.nix18
-rw-r--r--pkgs/tools/networking/tcpflow/default.nix14
-rw-r--r--pkgs/tools/networking/tcpreplay/default.nix20
-rw-r--r--pkgs/tools/networking/tcptraceroute/default.nix6
-rw-r--r--pkgs/tools/networking/tdns-cli/default.nix6
-rw-r--r--pkgs/tools/networking/telepresence/default.nix8
-rw-r--r--pkgs/tools/networking/telepresence2/default.nix28
-rw-r--r--pkgs/tools/networking/tendermint/default.nix20
-rw-r--r--pkgs/tools/networking/termshark/default.nix12
-rw-r--r--pkgs/tools/networking/tftp-hpa/default.nix4
-rw-r--r--pkgs/tools/networking/tgt/default.nix12
-rw-r--r--pkgs/tools/networking/tinc/default.nix6
-rw-r--r--pkgs/tools/networking/tinc/pre.nix20
-rw-r--r--pkgs/tools/networking/tinyfecvpn/default.nix6
-rw-r--r--pkgs/tools/networking/tinyproxy/default.nix46
-rw-r--r--pkgs/tools/networking/tlspool/default.nix8
-rw-r--r--pkgs/tools/networking/tnat64/default.nix37
-rw-r--r--pkgs/tools/networking/toss/default.nix20
-rw-r--r--pkgs/tools/networking/tox-node/default.nix24
-rw-r--r--pkgs/tools/networking/toxvpn/default.nix6
-rw-r--r--pkgs/tools/networking/tracebox/default.nix8
-rw-r--r--pkgs/tools/networking/traceroute/default.nix6
-rw-r--r--pkgs/tools/networking/trickle/default.nix11
-rw-r--r--pkgs/tools/networking/tridactyl-native/default.nix8
-rw-r--r--pkgs/tools/networking/tunnelto/default.nix14
-rw-r--r--pkgs/tools/networking/twa/default.nix2
-rw-r--r--pkgs/tools/networking/ua/default.nix12
-rw-r--r--pkgs/tools/networking/ubridge/default.nix4
-rw-r--r--pkgs/tools/networking/ucspi-tcp/default.nix4
-rw-r--r--pkgs/tools/networking/udptunnel/default.nix8
-rw-r--r--pkgs/tools/networking/uget-integrator/default.nix14
-rw-r--r--pkgs/tools/networking/uget/default.nix12
-rw-r--r--pkgs/tools/networking/unbound/default.nix65
-rw-r--r--pkgs/tools/networking/unbound/python.nix6
-rw-r--r--pkgs/tools/networking/updog/default.nix26
-rw-r--r--pkgs/tools/networking/urlwatch/default.nix28
-rw-r--r--pkgs/tools/networking/userhosts/default.nix23
-rw-r--r--pkgs/tools/networking/uwimap/default.nix16
-rw-r--r--pkgs/tools/networking/v2ray/default.nix79
-rw-r--r--pkgs/tools/networking/v2ray/generic.nix52
-rwxr-xr-xpkgs/tools/networking/v2ray/update.sh12
-rw-r--r--pkgs/tools/networking/vde2/default.nix16
-rw-r--r--pkgs/tools/networking/vegeta/default.nix10
-rw-r--r--pkgs/tools/networking/vegeta/deps.nix9
-rw-r--r--pkgs/tools/networking/vlan/default.nix4
-rw-r--r--pkgs/tools/networking/vpnc-scripts/default.nix41
-rw-r--r--pkgs/tools/networking/vpnc/default.nix9
-rw-r--r--pkgs/tools/networking/vtun/default.nix6
-rw-r--r--pkgs/tools/networking/waitron/default.nix30
-rw-r--r--pkgs/tools/networking/waitron/deps.nix57
-rw-r--r--pkgs/tools/networking/waitron/staticfiles-directory.patch13
-rw-r--r--pkgs/tools/networking/wakelan/default.nix8
-rw-r--r--pkgs/tools/networking/wakeonlan/default.nix29
-rw-r--r--pkgs/tools/networking/wavemon/default.nix16
-rw-r--r--pkgs/tools/networking/wbox/default.nix6
-rw-r--r--pkgs/tools/networking/webalizer/default.nix4
-rw-r--r--pkgs/tools/networking/webwormhole/default.nix22
-rw-r--r--pkgs/tools/networking/weighttp/default.nix11
-rw-r--r--pkgs/tools/networking/wget/default.nix25
-rw-r--r--pkgs/tools/networking/wget2/default.nix100
-rw-r--r--pkgs/tools/networking/whois/default.nix10
-rw-r--r--pkgs/tools/networking/wicd/default.nix14
-rw-r--r--pkgs/tools/networking/wifish/default.nix47
-rw-r--r--pkgs/tools/networking/wifite2/default.nix4
-rw-r--r--pkgs/tools/networking/wireguard-go/default.nix4
-rw-r--r--pkgs/tools/networking/wireguard-tools/default.nix29
-rw-r--r--pkgs/tools/networking/wol/default.nix4
-rw-r--r--pkgs/tools/networking/wolfebin/default.nix6
-rw-r--r--pkgs/tools/networking/wormhole-william/default.nix10
-rw-r--r--pkgs/tools/networking/wrk/default.nix4
-rw-r--r--pkgs/tools/networking/wrk2/default.nix8
-rw-r--r--pkgs/tools/networking/wstunnel/default.nix41
-rw-r--r--pkgs/tools/networking/wuzz/default.nix4
-rw-r--r--pkgs/tools/networking/x11-ssh-askpass/default.nix4
-rw-r--r--pkgs/tools/networking/xh/default.nix50
-rw-r--r--pkgs/tools/networking/xl2tpd/default.nix4
-rw-r--r--pkgs/tools/networking/xnbd/default.nix10
-rw-r--r--pkgs/tools/networking/yggdrasil/default.nix6
-rw-r--r--pkgs/tools/networking/yrd/default.nix4
-rw-r--r--pkgs/tools/networking/ytcc/default.nix36
-rw-r--r--pkgs/tools/networking/zap/default.nix48
-rw-r--r--pkgs/tools/networking/zerotierone/default.nix26
-rw-r--r--pkgs/tools/networking/zs-apc-spdu-ctl/default.nix36
-rw-r--r--pkgs/tools/networking/zs-wait4host/default.nix34
-rw-r--r--pkgs/tools/networking/zssh/default.nix10
522 files changed, 6769 insertions, 3796 deletions
diff --git a/pkgs/tools/networking/6tunnel/default.nix b/pkgs/tools/networking/6tunnel/default.nix
index bf0e8ba3316..fbdd23f754e 100644
--- a/pkgs/tools/networking/6tunnel/default.nix
+++ b/pkgs/tools/networking/6tunnel/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
     description = "Tunnelling for application that don't speak IPv6";
     homepage = "https://github.com/wojtekka/6tunnel";
     license = licenses.gpl2;
-    maintainers = with maintainers; [ filalex77 ];
+    maintainers = with maintainers; [ Br1ght0ne ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/acme-client/default.nix b/pkgs/tools/networking/acme-client/default.nix
index 00f8778cafd..f20d4eefb47 100644
--- a/pkgs/tools/networking/acme-client/default.nix
+++ b/pkgs/tools/networking/acme-client/default.nix
@@ -1,24 +1,23 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
-, apple_sdk ? null
 , libbsd
 , libressl
-, pkgconfig
+, pkg-config
 }:
 
-with stdenv.lib;
+with lib;
 
 stdenv.mkDerivation rec {
   pname = "acme-client";
-  version = "1.0.1";
+  version = "1.2.0";
 
   src = fetchurl {
     url = "https://data.wolfsden.cz/sources/acme-client-${version}.tar.xz";
-    sha256 = "0gmdvmyw8a61w08hrxllypf7rpnqg0fxipbk3zmvsxj7m5i6iysj";
+    sha256 = "sha256-fRSYwQmyV0WapjUJNG0UGO/tUDNTGUraj/BWq/a1QTo=";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ libbsd libressl ] ++ optional stdenv.isDarwin apple_sdk.sdk;
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ libbsd libressl ];
 
   makeFlags = [ "PREFIX=${placeholder "out"}" ];
 
diff --git a/pkgs/tools/networking/ahcpd/default.nix b/pkgs/tools/networking/ahcpd/default.nix
index 0789b37c65a..75a7fc83858 100644
--- a/pkgs/tools/networking/ahcpd/default.nix
+++ b/pkgs/tools/networking/ahcpd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   name = "ahcpd-0.53";
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "http://www.pps.univ-paris-diderot.fr/~jch/software/ahcp/";
     description = "Autoconfiguration protocol for IPv6 and dual-stack IPv6/IPv4 networks";
-    license = stdenv.lib.licenses.mit;
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.mit;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/aircrack-ng/default.nix b/pkgs/tools/networking/aircrack-ng/default.nix
index fe07d203607..33a90636659 100644
--- a/pkgs/tools/networking/aircrack-ng/default.nix
+++ b/pkgs/tools/networking/aircrack-ng/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, libpcap, openssl, zlib, wirelesstools
-, iw, ethtool, pciutils, libnl, pkgconfig, makeWrapper
+{ lib, stdenv, fetchurl, libpcap, openssl, zlib, wirelesstools
+, iw, ethtool, pciutils, libnl, pkg-config, makeWrapper
 , autoreconfHook, usbutils }:
 
 stdenv.mkDerivation rec {
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
     sha256 = "0ix2k64qg7x3w0bzdsbk1m50kcpq1ws59g3zkwiafvpwdr4gs2sg";
   };
 
-  nativeBuildInputs = [ pkgconfig makeWrapper autoreconfHook ];
+  nativeBuildInputs = [ pkg-config makeWrapper autoreconfHook ];
   buildInputs = [ libpcap openssl zlib libnl iw ethtool pciutils ];
 
   patchPhase = ''
@@ -18,16 +18,16 @@ stdenv.mkDerivation rec {
   '';
 
   postFixup = ''
-    wrapProgram $out/bin/airmon-ng --prefix PATH : ${stdenv.lib.makeBinPath [
+    wrapProgram $out/bin/airmon-ng --prefix PATH : ${lib.makeBinPath [
       ethtool iw pciutils usbutils
     ]}
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Wireless encryption cracking tools";
     homepage = "http://www.aircrack-ng.org/";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ domenkozar ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/airfield/default.nix b/pkgs/tools/networking/airfield/default.nix
index d08996eb13f..374a76871cb 100644
--- a/pkgs/tools/networking/airfield/default.nix
+++ b/pkgs/tools/networking/airfield/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub
+{ lib, stdenv, fetchFromGitHub
 , pkgs, makeWrapper, buildEnv
 , nodejs, runtimeShell
 }:
@@ -42,7 +42,8 @@ let
 in stdenv.mkDerivation {
   inherit name version src;
 
-  buildInputs = [ makeWrapper nodejs ];
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ nodejs ];
 
   dontBuild = true;
 
@@ -60,7 +61,7 @@ in stdenv.mkDerivation {
       --set NODE_PATH "${runtimeEnv}/lib/node_modules"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A web-interface for hipache-proxy";
     license = licenses.mit;
     homepage = "https://github.com/emblica/airfield";
diff --git a/pkgs/tools/networking/airfield/node-packages.nix b/pkgs/tools/networking/airfield/node-packages.nix
index 66e70162675..b43d2938009 100644
--- a/pkgs/tools/networking/airfield/node-packages.nix
+++ b/pkgs/tools/networking/airfield/node-packages.nix
@@ -1,16 +1,16 @@
-# This file has been generated by node2nix 1.8.0. Do not edit!
+# This file has been generated by node2nix 1.9.0. Do not edit!
 
-{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+{nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}:
 
 let
   sources = {
-    "ajv-6.12.0" = {
+    "ajv-6.12.6" = {
       name = "ajv";
       packageName = "ajv";
-      version = "6.12.0";
+      version = "6.12.6";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz";
-        sha512 = "0gkcic96nmpcq311i2jfwbaa961x0mj7mkl7iwk213hyn4jgxbl0a472lcpg9dr7ybacn3i45fj6q0dz3g8rqmva7r14i9la240ba0g";
+        url = "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz";
+        sha512 = "j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==";
       };
     };
     "asn1-0.2.4" = {
@@ -19,7 +19,7 @@ let
       version = "0.2.4";
       src = fetchurl {
         url = "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz";
-        sha512 = "1v2z1ll0l8rif8hh0d03jc49kz3p8hym63q8ixbas48w4a8akl413hwn08nx83m89sj3mxl06aa0grp7n8hj6hcbsb2k3fhj913674g";
+        sha512 = "jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==";
       };
     };
     "assert-plus-1.0.0" = {
@@ -49,13 +49,13 @@ let
         sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
       };
     };
-    "aws4-1.9.1" = {
+    "aws4-1.11.0" = {
       name = "aws4";
       packageName = "aws4";
-      version = "1.9.1";
+      version = "1.11.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz";
-        sha512 = "2x4b6c0ny64yv6ljfs6sv82akh200klmnh1m1i18hdj28ksxkr9c0szphnwcasy3g5y3l1wn858wcxnc2gi9q5wql8s678fc61xbhf0";
+        url = "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz";
+        sha512 = "xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==";
       };
     };
     "bcrypt-pbkdf-1.0.2" = {
@@ -100,7 +100,7 @@ let
       version = "1.0.8";
       src = fetchurl {
         url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz";
-        sha512 = "1v09nkip7zpn3k3prkkg53w331rhczpfgcqb0q42i97nafra43l2khl5zvhd4ar0qmh145nmw7944jy8p108ny0xpgy29gf2wqph0qm";
+        sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
       };
     };
     "commander-0.6.1" = {
@@ -166,13 +166,13 @@ let
         sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
       };
     };
-    "debug-4.1.1" = {
+    "debug-4.3.2" = {
       name = "debug";
       packageName = "debug";
-      version = "4.1.1";
+      version = "4.3.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz";
-        sha512 = "1kmf9j5pka2rsljg5x6shniwmgs9444ksgdn0d3fjmis7yghxxn2zj526s36ip8rmpfni9zpj8z74w7irax32a67j59xw38wk6hi055";
+        url = "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz";
+        sha512 = "mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==";
       };
     };
     "delayed-stream-1.0.0" = {
@@ -184,13 +184,13 @@ let
         sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
       };
     };
-    "denque-1.4.1" = {
+    "denque-1.5.0" = {
       name = "denque";
       packageName = "denque";
-      version = "1.4.1";
+      version = "1.5.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz";
-        sha512 = "2spb0s12jkarfiydj4sj4iw1yfjzaplakzw7bma0pwnbra23l1b85rsyzc25szlfdl3bm5bb42fmy4xhf1xdpxaywmwh6aa4swwzz1r";
+        url = "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz";
+        sha512 = "CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==";
       };
     };
     "ecc-jsbn-0.1.2" = {
@@ -208,7 +208,7 @@ let
       version = "3.0.2";
       src = fetchurl {
         url = "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz";
-        sha512 = "3zad2109w3q3gh46s5msrnzfy2nl581sqpy20b52fs7v5pdjh3irpg7szl3xvh4sfy63218jy8ry6qlnir3baxbbfrb03swkw5swfky";
+        sha512 = "fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==";
       };
     };
     "extsprintf-1.3.0" = {
@@ -220,13 +220,13 @@ let
         sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
       };
     };
-    "fast-deep-equal-3.1.1" = {
+    "fast-deep-equal-3.1.3" = {
       name = "fast-deep-equal";
       packageName = "fast-deep-equal";
-      version = "3.1.1";
+      version = "3.1.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz";
-        sha512 = "1j7wq3vqvfgnpd2sjblnlgryxlic2fsy343fx8w4ywb2mngj1w5afq8fmly8cp9fi66dhz1fhcfpn23g5zasnzs6n1snb83qkkilhgi";
+        url = "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz";
+        sha512 = "f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==";
       };
     };
     "fast-json-stable-stringify-2.1.0" = {
@@ -235,7 +235,7 @@ let
       version = "2.1.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz";
-        sha512 = "0gz06zkjlqc4r59ka14n3vwqjdgn40zd8r115ql3rkwqb7j42frmnsj3axr7p2md8ik52nqjn3myyv8ddavdhl4cq3xz4wbbz07y5wn";
+        sha512 = "lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==";
       };
     };
     "forever-agent-0.6.1" = {
@@ -253,7 +253,7 @@ let
       version = "2.3.3";
       src = fetchurl {
         url = "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz";
-        sha512 = "0jj3hgqp9pmxmfavx6rvdfl3r4yf98clpsarqadz3hq0dxhjlh2ppd9x8bvmaq3nwjdqpdvqx25pwyin4ipixhgsn7s3p9fcc3wllnn";
+        sha512 = "1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==";
       };
     };
     "formidable-1.0.11" = {
@@ -292,13 +292,13 @@ let
         sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
       };
     };
-    "har-validator-5.1.3" = {
+    "har-validator-5.1.5" = {
       name = "har-validator";
       packageName = "har-validator";
-      version = "5.1.3";
+      version = "5.1.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz";
-        sha512 = "3kaldgfsh3lfvgvw31s8b7q345zf7ixjahllncdckcw6qfs3gnbsamdxgs9kfigq7rwmja7v51ghh7y0rsp6q7jmvmbydhh645wxnxh";
+        url = "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz";
+        sha512 = "nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==";
       };
     };
     "http-signature-1.2.0" = {
@@ -352,7 +352,7 @@ let
       version = "0.4.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
-        sha512 = "1bbgxs4777gn3q3yxi0n792cgz9pimf85pypr0w4wzpb22nr8fl9xi98pkcqd3n4fn7lnzffpq7qwpcl4dqc15py19lwqa2jwgw5dn5";
+        sha512 = "xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==";
       };
     };
     "json-stringify-safe-5.0.1" = {
@@ -391,22 +391,22 @@ let
         sha1 = "b1f86c768c025fa87b48075f1709f28aeaf20365";
       };
     };
-    "mime-db-1.43.0" = {
+    "mime-db-1.45.0" = {
       name = "mime-db";
       packageName = "mime-db";
-      version = "1.43.0";
+      version = "1.45.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz";
-        sha512 = "36x3p6lll5v1g7na92kbba0bpcl36i1argsqn8iy4mgz3zh3llnqhzhfw0l26jqcb0mh9rhhmrx718kvqzchga6y79qdg9884c6r5zv";
+        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz";
+        sha512 = "CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==";
       };
     };
-    "mime-types-2.1.26" = {
+    "mime-types-2.1.28" = {
       name = "mime-types";
       packageName = "mime-types";
-      version = "2.1.26";
+      version = "2.1.28";
       src = fetchurl {
-        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz";
-        sha512 = "1cxsgrndjg6jyfqzm74hv6cmy9lil52f1kzkq2niknaiqz20p3yiw0fpgsyld2zrbxr9abpdabz1q6nqa50xr9a0cmbjbi0cqymlnnk";
+        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz";
+        sha512 = "0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==";
       };
     };
     "mkdirp-0.3.3" = {
@@ -424,7 +424,7 @@ let
       version = "2.1.2";
       src = fetchurl {
         url = "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz";
-        sha512 = "3dqfiiw6nxvvi24fndbzlccnjcas99bsd1kz5m2r78lzgpp6vx57jzbmxq3k1m7bsw88rwra0n4848l720fxxn5x20djck3wp3hysdh";
+        sha512 = "sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==";
       };
     };
     "oauth-sign-0.9.0" = {
@@ -433,7 +433,7 @@ let
       version = "0.9.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz";
-        sha512 = "1jz644r7ybsq688ifahm64ih3ljqjjskm533bgir20pvc350f9cl0z162scih0r1idx8lpw5f8hxa2pkf0lhbdhr5y6ak2ga5863v3x";
+        sha512 = "fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==";
       };
     };
     "pause-0.0.1" = {
@@ -454,13 +454,13 @@ let
         sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
       };
     };
-    "psl-1.7.0" = {
+    "psl-1.8.0" = {
       name = "psl";
       packageName = "psl";
-      version = "1.7.0";
+      version = "1.8.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz";
-        sha512 = "0whj0m29370fn3imrlj2dw0xmr33j2gn30kn96xpxckz7i1b21pj6vlgsn4ggxl79mz2ckng5mdxbkczcwkjry497s8xkgw7c815nz4";
+        url = "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz";
+        sha512 = "RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==";
       };
     };
     "punycode-2.1.1" = {
@@ -469,7 +469,7 @@ let
       version = "2.1.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz";
-        sha512 = "381vqgh5xkqzrr6cxbzfykgnnk83m7qgpx3wjwj1hddn3sg2aibjxyr30rajpgv4js0cqknrbzwbfk5ryhiiyigzfjrk3zysy6i26sx";
+        sha512 = "XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==";
       };
     };
     "qs-0.5.1" = {
@@ -487,7 +487,7 @@ let
       version = "6.5.2";
       src = fetchurl {
         url = "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz";
-        sha512 = "0c46ws0x9g3mmkgfmvd78bzvnmv2b8ryg4ah6jvyyqgjv9v994z7xdyvsc4vg9sf98gg7phvy3q1ahgaj5fy3dwzf2rki6bixgl15ip";
+        sha512 = "N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==";
       };
     };
     "range-parser-0.0.4" = {
@@ -499,13 +499,13 @@ let
         sha1 = "c0427ffef51c10acba0782a46c9602e744ff620b";
       };
     };
-    "redis-commands-1.5.0" = {
+    "redis-commands-1.6.0" = {
       name = "redis-commands";
       packageName = "redis-commands";
-      version = "1.5.0";
+      version = "1.6.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/redis-commands/-/redis-commands-1.5.0.tgz";
-        sha512 = "0kdmbh04hif6g8qr3zcwjkjg1v3rjgss0dq3sy144l5ja5vp4ndb5hdn2acrx57w01swbwpkskmy788lr2nxdq0g46azqsrmad5mb78";
+        url = "https://registry.npmjs.org/redis-commands/-/redis-commands-1.6.0.tgz";
+        sha512 = "2jnZ0IkjZxvguITjFTrGiLyzQZcTvaw8DAaCXxZq/dsHXz7KfMQ3OUJy7Tz9vnRtZRVz6VRCPDvruvU8Ts44wQ==";
       };
     };
     "redis-errors-1.2.0" = {
@@ -526,13 +526,13 @@ let
         sha1 = "b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4";
       };
     };
-    "safe-buffer-5.2.0" = {
+    "safe-buffer-5.2.1" = {
       name = "safe-buffer";
       packageName = "safe-buffer";
-      version = "5.2.0";
+      version = "5.2.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz";
-        sha512 = "1pb164cfv1ip3s1rp008433rak88mdcch24q84cbfndg0dzky2ij8vjvsiyx2qf3rg4dgs82zk7vnrd9hkqqdcvp4lbk5ymcr8314bx";
+        url = "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz";
+        sha512 = "rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==";
       };
     };
     "safer-buffer-2.1.2" = {
@@ -541,7 +541,7 @@ let
       version = "2.1.2";
       src = fetchurl {
         url = "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz";
-        sha512 = "2v99f22kh56y72d3s8wrgdvf5n10ry40dh3fwnsxr4d5rfvxdfxfmc3qyqkscnj4f8799jy9bpg6cm21x2d811dr9ib83wjrlmkg6k1";
+        sha512 = "YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==";
       };
     };
     "send-0.1.0" = {
@@ -559,7 +559,7 @@ let
       version = "1.16.1";
       src = fetchurl {
         url = "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz";
-        sha512 = "0i4jnrxh6i17qij2vfki7qxmk435cnacvg363qg0hya5incfj57akgbas8zcx2cl5pds9jfgfyhqm8wlqz6damsg059gymv99aylx8x";
+        sha512 = "HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==";
       };
     };
     "tough-cookie-2.5.0" = {
@@ -568,7 +568,7 @@ let
       version = "2.5.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz";
-        sha512 = "3xgcny117pqhfncr4gbmagzlnjiqqgq0lrvmljdfcdy64nc0xjfcbf1r08dmp1v1m3s51kq0yxc18nl3j9lbpr5bp5lgmi6719yqlly";
+        sha512 = "nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==";
       };
     };
     "tunnel-agent-0.6.0" = {
@@ -589,22 +589,22 @@ let
         sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
       };
     };
-    "underscore-1.9.2" = {
+    "underscore-1.12.0" = {
       name = "underscore";
       packageName = "underscore";
-      version = "1.9.2";
+      version = "1.12.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/underscore/-/underscore-1.9.2.tgz";
-        sha512 = "0fpcm4n2qlycl50j6k3fv7baybnzf1wbsm2ng0vwfsdi40fyvsvvl0k1i427hgpknhj5hbcwff3swckw6wx96kw4dgwvldi56v6lzqg";
+        url = "https://registry.npmjs.org/underscore/-/underscore-1.12.0.tgz";
+        sha512 = "21rQzss/XPMjolTiIezSu3JAjgagXKROtNrYFEOWK109qY1Uv2tVjPTZ1ci2HgvQDA16gHYSthQIJfB+XId/rQ==";
       };
     };
-    "uri-js-4.2.2" = {
+    "uri-js-4.4.1" = {
       name = "uri-js";
       packageName = "uri-js";
-      version = "4.2.2";
+      version = "4.4.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz";
-        sha512 = "2fz60s71ghl56ddfiiaws81xpiidlbjk69jyjmahz190d2advy9zdbcwh5if4rgg5hxdbfxhkwiipjrnjy8w834bxsmzambd2p4b3r9";
+        url = "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz";
+        sha512 = "7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==";
       };
     };
     "uuid-3.4.0" = {
@@ -613,7 +613,7 @@ let
       version = "3.4.0";
       src = fetchurl {
         url = "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz";
-        sha512 = "3y9pcli1v8nqryqd2c4pxj9kcv92mjc22z4smg08pdjzrbwda19xmjbzms1dwr04995h4carz9s8mldbiqb8708694lwr501r3q6d0y";
+        sha512 = "HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==";
       };
     };
     "verror-1.10.0" = {
@@ -644,7 +644,7 @@ in
       sources."cookie-0.0.5"
       sources."cookie-signature-0.0.1"
       sources."crc-0.2.0"
-      sources."debug-4.1.1"
+      sources."debug-4.3.2"
       sources."formidable-1.0.11"
       sources."fresh-0.1.0"
       sources."methods-0.0.1"
@@ -673,7 +673,7 @@ in
       sha1 = "544bfb3bd837608873eed6a72c672a28cb1f1b3f";
     };
     dependencies = [
-      sources."underscore-1.9.2"
+      sources."underscore-1.12.0"
     ];
     buildInputs = globalBuildInputs;
     meta = {
@@ -706,11 +706,11 @@ in
     version = "3.0.2";
     src = fetchurl {
       url = "https://registry.npmjs.org/redis/-/redis-3.0.2.tgz";
-      sha512 = "26lf40x7al63vywd96j6idqbn8fagv4jp6ar9cc80aili5d59sy14hvb3haw8xhjqxc3481dkmbvza8x3p1dcn3p2az5snlp054pn1w";
+      sha512 = "PNhLCrjU6vKVuMOyFu7oSP296mwBkcE6lrAjruBYG5LgdSqtRBoVQIylrMyVZD/lkF24RSNNatzvYag6HRBHjQ==";
     };
     dependencies = [
-      sources."denque-1.4.1"
-      sources."redis-commands-1.5.0"
+      sources."denque-1.5.0"
+      sources."redis-commands-1.6.0"
       sources."redis-errors-1.2.0"
       sources."redis-parser-3.0.0"
     ];
@@ -727,10 +727,10 @@ in
   connect-redis = nodeEnv.buildNodePackage {
     name = "connect-redis";
     packageName = "connect-redis";
-    version = "4.0.4";
+    version = "5.0.0";
     src = fetchurl {
-      url = "https://registry.npmjs.org/connect-redis/-/connect-redis-4.0.4.tgz";
-      sha512 = "014p1jjd7bzdsd81v0918ac5j4k1qs4qi2nzzndyn50rznd04hx85l23jpicznwc2j3nkz5bj15zbi98ld3akxb5rwl46r5sdp3nyb9";
+      url = "https://registry.npmjs.org/connect-redis/-/connect-redis-5.0.0.tgz";
+      sha512 = "R4nTW5uXeG5s6zr/q4abmtcdloglZrL/A3cpa0JU0RLFJU4mTR553HUY8OZ0ngeySkGDclwQ5xmCcjjKkxdOSg==";
     };
     buildInputs = globalBuildInputs;
     meta = {
@@ -748,7 +748,7 @@ in
     version = "3.2.0";
     src = fetchurl {
       url = "https://registry.npmjs.org/async/-/async-3.2.0.tgz";
-      sha512 = "1kwiqca4ql149ywfzbp1lpmqixnh1y9i5aizcd0fvndrq9sn31j0cr38wdgbr5xqvlxgjfs3jwryg7ddnwc8n1b5nlksfjmj48sc7ad";
+      sha512 = "TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==";
     };
     buildInputs = globalBuildInputs;
     meta = {
@@ -766,15 +766,15 @@ in
     version = "2.88.2";
     src = fetchurl {
       url = "https://registry.npmjs.org/request/-/request-2.88.2.tgz";
-      sha512 = "23hm71jcxrwvp33azx8mx3w6dg21fr4w6lwvkvxyf6ckvhk3hz9dk8lzgkbiyzfl9ylhp4n807xp88ppq4gj5h07cmrgxf6nwxfvjrj";
+      sha512 = "MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==";
     };
     dependencies = [
-      sources."ajv-6.12.0"
+      sources."ajv-6.12.6"
       sources."asn1-0.2.4"
       sources."assert-plus-1.0.0"
       sources."asynckit-0.4.0"
       sources."aws-sign2-0.7.0"
-      sources."aws4-1.9.1"
+      sources."aws4-1.11.0"
       sources."bcrypt-pbkdf-1.0.2"
       sources."caseless-0.12.0"
       sources."combined-stream-1.0.8"
@@ -784,13 +784,13 @@ in
       sources."ecc-jsbn-0.1.2"
       sources."extend-3.0.2"
       sources."extsprintf-1.3.0"
-      sources."fast-deep-equal-3.1.1"
+      sources."fast-deep-equal-3.1.3"
       sources."fast-json-stable-stringify-2.1.0"
       sources."forever-agent-0.6.1"
       sources."form-data-2.3.3"
       sources."getpass-0.1.7"
       sources."har-schema-2.0.0"
-      sources."har-validator-5.1.3"
+      sources."har-validator-5.1.5"
       sources."http-signature-1.2.0"
       sources."is-typedarray-1.0.0"
       sources."isstream-0.1.2"
@@ -799,20 +799,20 @@ in
       sources."json-schema-traverse-0.4.1"
       sources."json-stringify-safe-5.0.1"
       sources."jsprim-1.4.1"
-      sources."mime-db-1.43.0"
-      sources."mime-types-2.1.26"
+      sources."mime-db-1.45.0"
+      sources."mime-types-2.1.28"
       sources."oauth-sign-0.9.0"
       sources."performance-now-2.1.0"
-      sources."psl-1.7.0"
+      sources."psl-1.8.0"
       sources."punycode-2.1.1"
       sources."qs-6.5.2"
-      sources."safe-buffer-5.2.0"
+      sources."safe-buffer-5.2.1"
       sources."safer-buffer-2.1.2"
       sources."sshpk-1.16.1"
       sources."tough-cookie-2.5.0"
       sources."tunnel-agent-0.6.0"
       sources."tweetnacl-0.14.5"
-      sources."uri-js-4.2.2"
+      sources."uri-js-4.4.1"
       sources."uuid-3.4.0"
       sources."verror-1.10.0"
     ];
diff --git a/pkgs/tools/networking/airfield/node.nix b/pkgs/tools/networking/airfield/node.nix
index e306e49c849..0bcd0eb4b85 100644
--- a/pkgs/tools/networking/airfield/node.nix
+++ b/pkgs/tools/networking/airfield/node.nix
@@ -1,4 +1,4 @@
-# This file has been generated by node2nix 1.8.0. Do not edit!
+# This file has been generated by node2nix 1.9.0. Do not edit!
 
 {pkgs ? import <nixpkgs> {
     inherit system;
@@ -6,12 +6,12 @@
 
 let
   nodeEnv = import ../../../development/node-packages/node-env.nix {
-    inherit (pkgs) stdenv python2 utillinux runCommand writeTextFile;
-    inherit nodejs;
+    inherit (pkgs) stdenv lib python2 runCommand writeTextFile;
+    inherit pkgs nodejs;
     libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
   };
 in
 import ./node-packages.nix {
-  inherit (pkgs) fetchurl fetchgit;
+  inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
   inherit nodeEnv;
-}
\ No newline at end of file
+}
diff --git a/pkgs/tools/networking/altermime/default.nix b/pkgs/tools/networking/altermime/default.nix
index b1481b2208c..703af40864a 100644
--- a/pkgs/tools/networking/altermime/default.nix
+++ b/pkgs/tools/networking/altermime/default.nix
@@ -1,12 +1,11 @@
-{ stdenv, fetchurl }:
+{ lib, gccStdenv, fetchurl }:
 
-stdenv.mkDerivation rec {
-  baseName = "altermime";
-  name = "${baseName}-${version}";
+gccStdenv.mkDerivation rec {
+  pname = "altermime";
   version = "0.3.11";
 
   src = fetchurl {
-    url = "https://pldaniels.com/${baseName}/${name}.tar.gz";
+    url = "https://pldaniels.com/${pname}/${pname}-${version}.tar.gz";
     sha256 = "15zxg6spcmd35r6xbidq2fgcg2nzyv1sbbqds08lzll70mqx4pj7";
   };
 
@@ -19,14 +18,14 @@ stdenv.mkDerivation rec {
   ];
 
   postPatch = ''
-    sed -i Makefile -e "s@/usr/local@$out@"
-    mkdir -p "$out/bin"
+    mkdir -p $out/bin
+    substituteInPlace Makefile --replace "/usr/local" "$out"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "MIME alteration tool";
     maintainers = [ maintainers.raskin ];
-    platforms = platforms.linux;
+    platforms = platforms.all;
     license.fullName = "alterMIME LICENSE";
     downloadPage = "https://pldaniels.com/altermime/";
   };
diff --git a/pkgs/tools/networking/amass/default.nix b/pkgs/tools/networking/amass/default.nix
index b690b63ef4b..5d539cc5697 100644
--- a/pkgs/tools/networking/amass/default.nix
+++ b/pkgs/tools/networking/amass/default.nix
@@ -5,27 +5,28 @@
 
 buildGoModule rec {
   pname = "amass";
-  version = "3.8.2";
+  version = "3.13.4";
 
   src = fetchFromGitHub {
     owner = "OWASP";
     repo = "Amass";
     rev = "v${version}";
-    sha256 = "0hm5h8glva0d9mj870j56bc721w4br7dzwhns096rgzyv93m7rx0";
+    sha256 = "0zlkr0r06w3y34nx174wyfwk69i2q0bcq88kfvb0j3d28fdh5p31";
   };
 
-  vendorSha256 = "1g3jbdx7m5m56ifcc1p6hgz2wzmb287cyyaiz03ffdvwd3k73k4j";
-
-  doCheck = false;
+  vendorSha256 = "065n1vhj5003ay4pflp418w32s84jvza52lghj6cpcdzs0rwgc45";
 
   outputs = [ "out" "wordlists" ];
 
   postInstall = ''
     mkdir -p $wordlists
-    cp -R $src/examples/wordlists/*.txt $wordlists
+    cp -R examples/wordlists/*.txt $wordlists
     gzip $wordlists/*.txt
   '';
 
+  # https://github.com/OWASP/Amass/issues/640
+  doCheck = false;
+
   meta = with lib; {
     description = "In-Depth DNS Enumeration and Network Mapping";
     longDescription = ''
@@ -39,8 +40,8 @@ buildGoModule rec {
       Amass ships with a set of wordlist (to be used with the amass -w flag)
       that are found under the wordlists output.
       '';
-    homepage = "https://www.owasp.org/index.php/OWASP_Amass_Project";
+    homepage = "https://owasp.org/www-project-amass/";
     license = licenses.asl20;
-    maintainers = with maintainers; [ kalbasit ];
+    maintainers = with maintainers; [ kalbasit fab ];
   };
 }
diff --git a/pkgs/tools/networking/anevicon/default.nix b/pkgs/tools/networking/anevicon/default.nix
new file mode 100644
index 00000000000..cff22fa71e6
--- /dev/null
+++ b/pkgs/tools/networking/anevicon/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, rustPlatform
+, libiconv
+, Security
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "anevicon";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "rozgo";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1m3ci7g7nn28p6x5m85av3ljgszwlg55f1hmgjnarc6bas5bapl7";
+  };
+
+  cargoSha256 = "1g15v13ysx09fy0b8qddw5fwql2pvwzc2g2h1ndhzpxvfy7fzpr1";
+
+  buildInputs = lib.optionals stdenv.isDarwin [ libiconv Security ];
+
+  cargoPatches = [
+    # Add Cargo.lock file, https://github.com/rozgo/anevicon/pull/1
+    (fetchpatch {
+      name = "cargo-lock-file.patch";
+      url = "https://github.com/rozgo/anevicon/commit/205440a0863aaea34394f30f4255fa0bb1704aed.patch";
+      sha256 = "02syzm7irn4slr3s5dwwhvg1qx8fdplwlhza8gfkc6ajl7vdc7ri";
+    })
+  ];
+
+  # Tries to send large UDP packets that Darwin rejects.
+  doCheck = !stdenv.isDarwin;
+
+  meta = with lib; {
+    description = "UDP-based load generator";
+    homepage = "https://github.com/rozgo/anevicon";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/networking/argus-clients/default.nix b/pkgs/tools/networking/argus-clients/default.nix
index a1ff30faff3..cd935a5f5d7 100644
--- a/pkgs/tools/networking/argus-clients/default.nix
+++ b/pkgs/tools/networking/argus-clients/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libpcap, bison, flex, cyrus_sasl, tcp_wrappers, pkgconfig, perl }:
+{ lib, stdenv, fetchurl, libpcap, bison, flex, cyrus_sasl, tcp_wrappers, pkg-config, perl, libtirpc, libnsl }:
 
 stdenv.mkDerivation rec {
   pname = "argus-clients";
@@ -9,7 +9,9 @@ stdenv.mkDerivation rec {
     sha256 = "1c9vj6ma00gqq9h92fg71sxcsjzz912166sdg90ahvnmvmh3l1rj";
   };
 
-  patchPhase = ''
+  NIX_CFLAGS_COMPILE = [ "-I${libtirpc.dev}/include/tirpc" ];
+
+  postPatch = ''
     for file in ./examples/*/*.pl; do
       substituteInPlace $file \
         --subst-var-by PERLBIN ${perl}/bin/perl
@@ -18,10 +20,10 @@ stdenv.mkDerivation rec {
 
   configureFlags = [ "--with-perl=${perl}/bin/perl" ];
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ libpcap bison cyrus_sasl tcp_wrappers flex ];
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ libpcap bison cyrus_sasl tcp_wrappers flex libnsl ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Clients for ARGUS";
     longDescription = ''Clients for Audit Record Generation and
     Utilization System (ARGUS). The Argus Project is focused on developing all
diff --git a/pkgs/tools/networking/argus/default.nix b/pkgs/tools/networking/argus/default.nix
index 32c6c785fa5..bbb9d220144 100644
--- a/pkgs/tools/networking/argus/default.nix
+++ b/pkgs/tools/networking/argus/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, libpcap, bison, flex, cyrus_sasl, tcp_wrappers,
-  pkgconfig, procps, which, wget, lsof, net-snmp, perl }:
+{ lib, stdenv, fetchurl, libpcap, bison, flex, cyrus_sasl, tcp_wrappers,
+  pkg-config, procps, which, wget, lsof, net-snmp, perl }:
 
 stdenv.mkDerivation rec {
   pname = "argus";
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
     sha256 = "1zzf688dbbcb5z2r9v1p28rddns6znzx35nc05ygza6lp7aknkna";
   };
 
-  nativeBuildInputs = [ pkgconfig bison flex ];
+  nativeBuildInputs = [ pkg-config bison flex ];
   buildInputs = [ libpcap cyrus_sasl tcp_wrappers ];
   propagatedBuildInputs = [ procps which wget lsof net-snmp ];
 
@@ -23,11 +23,11 @@ stdenv.mkDerivation rec {
     substituteInPlace events/argus-vmstat.sh \
       --replace vm_stat ${procps}/bin/vmstat
     substituteInPlace events/argus-snmp.sh \
-      --replace /usr/bin/snmpget ${stdenv.lib.getBin net-snmp}/bin/snmpget \
-      --replace /usr/bin/snmpwalk ${stdenv.lib.getBin net-snmp}/bin/snmpwalk
+      --replace /usr/bin/snmpget ${lib.getBin net-snmp}/bin/snmpget \
+      --replace /usr/bin/snmpwalk ${lib.getBin net-snmp}/bin/snmpwalk
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Audit Record Generation and Utilization System for networks";
     longDescription = ''The Argus Project is focused on developing all
     aspects of large scale network situtational awareness derived from
diff --git a/pkgs/tools/networking/aria2/default.nix b/pkgs/tools/networking/aria2/default.nix
index 5ede0db598c..7e4f06302f2 100644
--- a/pkgs/tools/networking/aria2/default.nix
+++ b/pkgs/tools/networking/aria2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchpatch, fetchFromGitHub, pkgconfig, autoreconfHook
+{ lib, stdenv, fetchpatch, fetchFromGitHub, pkg-config, autoreconfHook
 , openssl, c-ares, libxml2, sqlite, zlib, libssh2
 , cppunit, sphinx
 , Security
@@ -15,10 +15,10 @@ stdenv.mkDerivation rec {
     sha256 = "195r3711ly3drf9jkygwdc2m7q99hiqlfrig3ip1127b837gzsf9";
   };
 
-  nativeBuildInputs = [ pkgconfig autoreconfHook sphinx ];
+  nativeBuildInputs = [ pkg-config autoreconfHook sphinx ];
 
   buildInputs = [ openssl c-ares libxml2 sqlite zlib libssh2 ] ++
-    stdenv.lib.optional stdenv.isDarwin Security;
+    lib.optional stdenv.isDarwin Security;
 
   outputs = [ "bin" "dev" "out" "doc" "man" ];
 
@@ -36,11 +36,11 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://aria2.github.io";
     description = "A lightweight, multi-protocol, multi-source, command-line download utility";
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ filalex77 koral ];
+    maintainers = with maintainers; [ Br1ght0ne koral ];
   };
 }
diff --git a/pkgs/tools/networking/arping/default.nix b/pkgs/tools/networking/arping/default.nix
index ad0139b184d..54ea08ceaef 100644
--- a/pkgs/tools/networking/arping/default.nix
+++ b/pkgs/tools/networking/arping/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, libnet, libpcap }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, libnet, libpcap }:
 
 stdenv.mkDerivation rec {
-  version = "2.21";
+  version = "2.22";
   pname = "arping";
 
   buildInputs = [ libnet libpcap ];
@@ -10,12 +10,12 @@ stdenv.mkDerivation rec {
     owner = "ThomasHabets";
     repo = pname;
     rev = "${pname}-${version}";
-    sha256 = "1i7rjn863bnq51ahbvypm1bkzhyshlm5b32yzdd9iaqyz7sa7pa7";
+    sha256 = "sha256-yFSLhhyz6i7xyJR8Ax8FnHFGNe/HE40YirkkeefBqC4=";
   };
 
   nativeBuildInputs = [ autoreconfHook ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Broadcasts a who-has ARP packet on the network and prints answers";
     homepage = "https://github.com/ThomasHabets/arping";
     license = with licenses; [ gpl2 ];
diff --git a/pkgs/tools/networking/arpoison/default.nix b/pkgs/tools/networking/arpoison/default.nix
index eac2f380d15..6268d958204 100644
--- a/pkgs/tools/networking/arpoison/default.nix
+++ b/pkgs/tools/networking/arpoison/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, libnet }:
+{ lib, stdenv, fetchzip, libnet }:
 
 stdenv.mkDerivation rec {
   name = "arpoison-0.7";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
     cp arpoison.8.gz $out/share/man/man8
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "UNIX arp cache update utility";
     homepage = "http://www.arpoison.net/";
     license = with licenses; [ gpl2 ];
diff --git a/pkgs/tools/networking/assh/default.nix b/pkgs/tools/networking/assh/default.nix
index caebcb6fe8c..7d3c662b368 100644
--- a/pkgs/tools/networking/assh/default.nix
+++ b/pkgs/tools/networking/assh/default.nix
@@ -1,20 +1,29 @@
-{ stdenv, buildGoModule, fetchFromGitHub, openssh, makeWrapper }:
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, openssh
+, makeWrapper
+}:
 
 buildGoModule rec {
   pname = "assh";
-  version = "2.10.0";
+  version = "2.11.3";
 
   src = fetchFromGitHub {
     repo = "advanced-ssh-config";
     owner = "moul";
     rev = "v${version}";
-    sha256 = "0qsb5p52v961akshgs1yla2d7lhcbwixv2skqaappdmhj18a23q2";
+    sha256 = "sha256-NH7Dmqsu7uRhKWGFHBnh5GGqsNFOijDxsc+ATt28jtY=";
   };
 
-  vendorSha256 = "03ycjhal4g7bs9fhzrq01ijj48czvs272qcqkd9farsha5gf0q0b";
+  vendorSha256 = "sha256-6OAsO7zWAgPfQWD9k+nYH7hnDDUlKIjTB61ivvoubn0=";
 
   doCheck = false;
 
+  preBuild = ''
+    buildFlagsArray+=("-ldflags" "-s -w -X moul.io/assh/v2/pkg/version.Version=${version}")
+  '';
+
   nativeBuildInputs = [ makeWrapper ];
 
   postInstall = ''
@@ -27,7 +36,7 @@ buildGoModule rec {
     $out/bin/assh --help > /dev/null
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Advanced SSH config - Regex, aliases, gateways, includes and dynamic hosts";
     homepage = "https://github.com/moul/assh";
     changelog = "https://github.com/moul/assh/releases/tag/v${version}";
diff --git a/pkgs/tools/networking/atftp/default.nix b/pkgs/tools/networking/atftp/default.nix
index 7fcd677044f..0e76cb94346 100644
--- a/pkgs/tools/networking/atftp/default.nix
+++ b/pkgs/tools/networking/atftp/default.nix
@@ -2,14 +2,15 @@
 
 stdenv.mkDerivation rec {
   pname = "atftp";
-  version = "0.7.2";
+  version = "0.7.4";
 
   src = fetchurl {
     url = "mirror://sourceforge/atftp/${pname}-${version}.tar.gz";
-    sha256 = "0hah3fhzl6vfs381883vbvf4d13cdhsyf0x7ncbl55wz9rkq1l0s";
+    sha256 = "sha256-08nNDZcd/Hhtel9AVcNdTmaq/IECrANHPvIlvfftsmo=";
   };
 
-  buildInputs = [ readline tcp_wrappers pcre makeWrapper gcc ];
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ readline tcp_wrappers pcre gcc ];
 
   # Expects pre-GCC5 inline semantics
   NIX_CFLAGS_COMPILE = "-std=gnu89";
diff --git a/pkgs/tools/networking/atinout/default.nix b/pkgs/tools/networking/atinout/default.nix
index fcd48564da0..93535531d91 100644
--- a/pkgs/tools/networking/atinout/default.nix
+++ b/pkgs/tools/networking/atinout/default.nix
@@ -1,11 +1,11 @@
-{ stdenv, fetchgit, ronn, mount }:
+{ lib, stdenv, fetchgit, ronn, mount }:
 
 stdenv.mkDerivation rec {
   name = "atinout-${version}";
   version = "0.9.2-alpha";
 
-  NIX_CFLAGS_COMPILE = "-Werror=implicit-fallthrough=0";
-  LANG = "C.UTF-8";
+  NIX_CFLAGS_COMPILE = lib.optionalString (!stdenv.cc.isClang) "-Werror=implicit-fallthrough=0";
+  LANG = if stdenv.isDarwin then "en_US.UTF-8" else "C.UTF-8";
   nativeBuildInputs = [ ronn mount ];
 
   src = fetchgit {
@@ -14,11 +14,13 @@ stdenv.mkDerivation rec {
     sha256 = "0bninv2bklz7ly140cxx8iyaqjlq809jjx6xqpimn34ghwsaxbpv";
   };
 
+  makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
+
   installPhase = ''
     make PREFIX=$out install
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://atinout.sourceforge.net";
     description = "Tool for talking to modems";
     platforms = platforms.unix;
diff --git a/pkgs/tools/networking/autossh/default.nix b/pkgs/tools/networking/autossh/default.nix
index f89302c4295..9b8e7f712fd 100644
--- a/pkgs/tools/networking/autossh/default.nix
+++ b/pkgs/tools/networking/autossh/default.nix
@@ -1,10 +1,11 @@
-{stdenv, fetchurl, openssh}:
+{lib, stdenv, fetchurl, openssh}:
 
 stdenv.mkDerivation rec {
-  name = "autossh-1.4g";
+  pname = "autossh";
+  version = "1.4g";
 
   src = fetchurl {
-    url = "http://www.harding.motd.ca/autossh/${name}.tgz";
+    url = "http://www.harding.motd.ca/autossh/${pname}-${version}.tgz";
     sha256 = "0xqjw8df68f4kzkns5gcah61s5wk0m44qdk2z1d6388w6viwxhsz";
   };
 
@@ -15,8 +16,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ openssh ];
 
-  installPhase =
-    ''
+  installPhase = ''
       install -D -m755 autossh      $out/bin/autossh                          || return 1
       install -D -m644 CHANGES      $out/share/doc/autossh/CHANGES            || return 1
       install -D -m644 README       $out/share/doc/autossh/README             || return 1
@@ -25,9 +25,10 @@ stdenv.mkDerivation rec {
       install -D -m644 autossh.1    $out/man/man1/autossh.1                   || return 1
     '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://www.harding.motd.ca/autossh/";
     description = "Automatically restart SSH sessions and tunnels";
+    license = licenses.bsd1;
     platforms = platforms.unix;
     maintainers = with maintainers; [ pSub ];
   };
diff --git a/pkgs/tools/networking/axel/default.nix b/pkgs/tools/networking/axel/default.nix
index 5cd8e41f70c..f7e761ac0fd 100644
--- a/pkgs/tools/networking/axel/default.nix
+++ b/pkgs/tools/networking/axel/default.nix
@@ -1,24 +1,24 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, autoconf-archive
-, pkgconfig, gettext, libssl, txt2man }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, autoconf-archive
+, pkg-config, gettext, libssl, txt2man }:
 
 stdenv.mkDerivation rec {
   pname = "axel";
-  version = "2.17.9";
+  version = "2.17.10";
 
   src = fetchFromGitHub {
     owner = "axel-download-accelerator";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1bhzgvvqcwa5bd487400hg1nycvw8qqxzbzvq5ywyz5d9j12hdrd";
+    sha256 = "01mpfkz98r2fx4n0gyi3b4zvlyfd5bxydp2wh431lnj0ahrsiikp";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig autoconf-archive txt2man ];
+  nativeBuildInputs = [ autoreconfHook pkg-config autoconf-archive txt2man ];
 
   buildInputs = [ gettext libssl ];
 
   installFlags = [ "ETCDIR=${placeholder "out"}/etc" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Console downloading program with some features for parallel connections for faster downloading";
     homepage = "https://github.com/axel-download-accelerator/axel";
     maintainers = with maintainers; [ pSub ];
diff --git a/pkgs/tools/networking/babeld/default.nix b/pkgs/tools/networking/babeld/default.nix
index debd918eb39..47894c1a532 100644
--- a/pkgs/tools/networking/babeld/default.nix
+++ b/pkgs/tools/networking/babeld/default.nix
@@ -1,12 +1,12 @@
-{ stdenv, fetchurl, nixosTests }:
+{ lib, stdenv, fetchurl, nixosTests }:
 
 stdenv.mkDerivation rec {
   pname = "babeld";
-  version = "1.9.2";
+  version = "1.10";
 
   src = fetchurl {
-    url = "http://www.pps.univ-paris-diderot.fr/~jch/software/files/${pname}-${version}.tar.gz";
-    sha256 = "01vzhrspnm4sy9ggaz9n3bfl5hy3qlynr218j3mdcddzm3h00kqm";
+    url = "https://www.irif.fr/~jch/software/files/${pname}-${version}.tar.gz";
+    sha256 = "1sld5bbig2pkcr4zrdpvfzifc6a3lc8i8kdzk5ryjh166844mxd5";
   };
 
   preBuild = ''
@@ -15,11 +15,11 @@ stdenv.mkDerivation rec {
 
   passthru.tests.babeld = nixosTests.babeld;
 
-  meta = {
-    homepage = "http://www.pps.univ-paris-diderot.fr/~jch/software/babel/";
+  meta = with lib; {
+    homepage = "http://www.irif.fr/~jch/software/babel/";
     description = "Loop-avoiding distance-vector routing protocol";
-    license = stdenv.lib.licenses.mit;
-    maintainers = with stdenv.lib.maintainers; [ fpletz ];
-    platforms = with stdenv.lib.platforms; linux;
+    license = licenses.mit;
+    maintainers = with maintainers; [ fpletz hexa ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/bacnet-stack/default.nix b/pkgs/tools/networking/bacnet-stack/default.nix
new file mode 100644
index 00000000000..a4f2ef36360
--- /dev/null
+++ b/pkgs/tools/networking/bacnet-stack/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "bacnet-stack";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "bacnet-stack";
+    repo = "bacnet-stack";
+    rev = "bacnet-stack-${version}";
+    sha256 = "078p7qsy9v6fl7pzwgcr72pgjqxfxmfxyqajih2zqlb5g5sf88vh";
+  };
+
+  hardeningDisable = [ "all" ];
+
+  buildPhase = ''
+    make BUILD=debug BACNET_PORT=linux BACDL_DEFINE=-DBACDL_BIP=1 BACNET_DEFINES=" -DPRINT_ENABLED=1 -DBACFILE -DBACAPP_ALL -DBACNET_PROPERTY_LISTS"
+  '';
+
+  installPhase = ''
+    mkdir $out
+    cp -r bin $out/bin
+  '';
+
+  meta = with lib; {
+    description = "BACnet open source protocol stack for embedded systems, Linux, and Windows";
+    platforms = platforms.linux;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ WhittlesJr ];
+  };
+}
diff --git a/pkgs/tools/networking/badvpn/default.nix b/pkgs/tools/networking/badvpn/default.nix
index c9ebc12b0db..fd7c3b23adf 100644
--- a/pkgs/tools/networking/badvpn/default.nix
+++ b/pkgs/tools/networking/badvpn/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, cmake, openssl, nss, pkgconfig, nspr, bash, debug ? false}:
+{lib, stdenv, fetchurl, cmake, openssl, nss, pkg-config, nspr, bash, debug ? false}:
 let
   s = # Generated upstream information
   rec {
@@ -10,15 +10,15 @@ let
     sha256="02b1fra43l75mljkhrq45vcrrqv0znicjn15g7nbqx3jppzbpm5z";
   };
 
-  buildInputs = [
-    cmake openssl nss nspr
-  ];
-  compileFlags = "-O3 ${stdenv.lib.optionalString (!debug) "-DNDEBUG"}";
+
+  compileFlags = "-O3 ${lib.optionalString (!debug) "-DNDEBUG"}";
 in
 stdenv.mkDerivation {
   inherit (s) name version;
-  nativeBuildInputs = [ pkgconfig ];
-  inherit buildInputs;
+  nativeBuildInputs = [ cmake pkg-config ];
+  buildInputs = [
+    openssl nss nspr
+  ];
   src = fetchurl {
     inherit (s) url sha256;
   };
@@ -31,9 +31,9 @@ stdenv.mkDerivation {
 
   meta = {
     inherit (s) version;
-    description = ''A set of network-related (mostly VPN-related) tools'';
-    license = stdenv.lib.licenses.bsd3 ;
-    maintainers = [stdenv.lib.maintainers.raskin];
-    platforms = stdenv.lib.platforms.linux;
+    description = "A set of network-related (mostly VPN-related) tools";
+    license = lib.licenses.bsd3 ;
+    maintainers = [lib.maintainers.raskin];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/bandwhich/default.nix b/pkgs/tools/networking/bandwhich/default.nix
index 31efdaddb74..233c57bc635 100644
--- a/pkgs/tools/networking/bandwhich/default.nix
+++ b/pkgs/tools/networking/bandwhich/default.nix
@@ -1,21 +1,21 @@
-{ stdenv, fetchFromGitHub, rustPlatform, Security }:
+{ lib, stdenv, fetchFromGitHub, rustPlatform, Security, fetchpatch }:
 
 rustPlatform.buildRustPackage rec {
   pname = "bandwhich";
-  version = "0.16.0";
+  version = "0.20.0";
 
   src = fetchFromGitHub {
     owner = "imsnif";
     repo = pname;
     rev = version;
-    sha256 = "074bgdgv6flg5xjzk7sxgqsy89ygnx7swhaqz75vvrcpx9ldysvz";
+    sha256 = "014blvrv0kk4gzga86mbk7gd5dl1szajfi972da3lrfznck1w24n";
   };
 
-  cargoSha256 = "0aq3k64g04l03h42cnnpljqffkkl1gdg6r5rqi237h0jrhci8c7w";
+  cargoSha256 = "119szaighki565w28la6qg25s3cv8wviqin9f7f9w8x2rif3ipb3";
 
-  buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
+  buildInputs = lib.optional stdenv.isDarwin Security;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A CLI utility for displaying current network utilization";
     longDescription = ''
       bandwhich sniffs a given network interface and records IP packet size, cross
@@ -26,7 +26,7 @@ rustPlatform.buildRustPackage rec {
     '';
     homepage = "https://github.com/imsnif/bandwhich";
     license = licenses.mit;
-    maintainers = with maintainers; [ filalex77 ma27 ];
+    maintainers = with maintainers; [ Br1ght0ne ma27 ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/bgpdump/default.nix b/pkgs/tools/networking/bgpdump/default.nix
index a6f66ea10fc..18d72daa009 100644
--- a/pkgs/tools/networking/bgpdump/default.nix
+++ b/pkgs/tools/networking/bgpdump/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, autoreconfHook, zlib, bzip2 }:
+{ lib, stdenv, fetchurl, autoreconfHook, zlib, bzip2 }:
 
 stdenv.mkDerivation rec {
   pname = "bgpdump";
@@ -14,9 +14,9 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = "https://bitbucket.org/ripencc/bgpdump/";
-    description = ''Analyze dump files produced by Zebra/Quagga or MRT'';
-    license = stdenv.lib.licenses.hpnd;
-    maintainers = with stdenv.lib.maintainers; [ lewo ];
-    platforms = with stdenv.lib.platforms; linux;
+    description = "Analyze dump files produced by Zebra/Quagga or MRT";
+    license = lib.licenses.hpnd;
+    maintainers = with lib.maintainers; [ lewo ];
+    platforms = with lib.platforms; linux;
   };
 }
diff --git a/pkgs/tools/networking/bgpq3/default.nix b/pkgs/tools/networking/bgpq3/default.nix
index e3d2218b0c9..bd0a623a916 100644
--- a/pkgs/tools/networking/bgpq3/default.nix
+++ b/pkgs/tools/networking/bgpq3/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub }:
+{ lib, stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation rec {
   pname = "bgpq3";
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   # Fix binary install location. Remove with next upstream release.
   preInstall = "mkdir -p $out/bin";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "bgp filtering automation tool";
     homepage = "https://github.com/snar/bgpq3";
     license = licenses.bsd2;
diff --git a/pkgs/tools/networking/bgpq4/default.nix b/pkgs/tools/networking/bgpq4/default.nix
new file mode 100644
index 00000000000..40c65b35a03
--- /dev/null
+++ b/pkgs/tools/networking/bgpq4/default.nix
@@ -0,0 +1,25 @@
+{ lib, stdenv, fetchFromGitHub, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  pname = "bgpq4";
+  version = "0.0.7";
+
+  src = fetchFromGitHub {
+    owner = "bgp";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-iEm4BYlJi56Y4OBCdEDgRQ162F65PLZyvHSEQzULFww=";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+  ];
+
+  meta = with lib; {
+    description = "BGP filtering automation tool";
+    homepage = "https://github.com/bgp/bgpq4";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ vincentbernat ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/tools/networking/biosdevname/default.nix b/pkgs/tools/networking/biosdevname/default.nix
index 7cd7254518a..f44574fb036 100644
--- a/pkgs/tools/networking/biosdevname/default.nix
+++ b/pkgs/tools/networking/biosdevname/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, zlib, pciutils }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, zlib, pciutils }:
 
 stdenv.mkDerivation rec {
   pname = "biosdevname";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
 
   configureFlags = [ "--sbindir=\${out}/bin" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Udev helper for naming devices per BIOS names";
     license = licenses.gpl2;
     platforms = ["x86_64-linux" "i686-linux"];
diff --git a/pkgs/tools/networking/bore/default.nix b/pkgs/tools/networking/bore/default.nix
new file mode 100644
index 00000000000..b22cdb0c2ae
--- /dev/null
+++ b/pkgs/tools/networking/bore/default.nix
@@ -0,0 +1,47 @@
+{ lib, stdenv, rustPlatform, fetchFromBitbucket, llvmPackages, Libsystem, SystemConfiguration, installShellFiles }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "bore";
+  version = "0.3.3";
+
+  src = fetchFromBitbucket {
+    owner = "delan";
+    repo = "nonymous";
+    rev = version;
+    sha256 = "0gws1f625izrb3armh6bay1k8l9p9csl37jx03yss1r720k4vn2x";
+  };
+
+  cargoSha256 = "1n09gcp1y885lz6g2f73zw3fd0fmv7nwlvaqba2yl0kylzk7naa6";
+  cargoBuildFlags = "-p ${pname}";
+
+  # FIXME can’t test --all-targets and --doc in a single invocation
+  cargoTestFlags = "--features std --all-targets --workspace";
+
+  nativeBuildInputs = [ installShellFiles ]
+    ++ lib.optional stdenv.isDarwin llvmPackages.libclang;
+
+  buildInputs = lib.optionals stdenv.isDarwin [
+    Libsystem
+    SystemConfiguration
+  ];
+
+  LIBCLANG_PATH="${llvmPackages.libclang.lib}/lib";
+
+  postInstall = ''
+    installManPage $src/bore/doc/bore.1
+  '';
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    printf '\0\0\0\0\0\0\0\0\0\0\0\0' \
+    | $out/bin/bore --decode \
+    | grep -q ';; NoError #0 Query 0 0 0 0 flags'
+  '';
+
+  meta = with lib; {
+    description = "DNS query tool";
+    homepage = "https://crates.io/crates/bore";
+    license = licenses.isc;
+    maintainers = [ maintainers.delan ];
+  };
+}
diff --git a/pkgs/tools/networking/boringtun/default.nix b/pkgs/tools/networking/boringtun/default.nix
index 7c322638712..a071b5b4a3a 100644
--- a/pkgs/tools/networking/boringtun/default.nix
+++ b/pkgs/tools/networking/boringtun/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, rustPlatform, darwin }:
+{ lib, stdenv, fetchFromGitHub, rustPlatform, darwin }:
 
 rustPlatform.buildRustPackage rec {
   pname = "boringtun";
@@ -11,14 +11,14 @@ rustPlatform.buildRustPackage rec {
     sha256 = "0b57c7z87xwrirmq9aa9jswqyj5bavkifmq7a9hgfphcmwcskmdb";
   };
 
-  cargoSha256 = "0bms93xg75b23ls2hb8dv26y4al4nr67pqcm57rp9d4rbsfafg8c";
+  cargoSha256 = "1xn6scc8nrb9xk89hsp9v67jvyww23rjaq5fcagpbqdwf5dvg4ja";
 
-  buildInputs = stdenv.lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Security;
+  buildInputs = lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Security;
 
   # Testing this project requires sudo, Docker and network access, etc.
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Userspace WireGuard® implementation in Rust";
     homepage = "https://github.com/cloudflare/boringtun";
     license = licenses.bsd3;
diff --git a/pkgs/tools/networking/boundary/default.nix b/pkgs/tools/networking/boundary/default.nix
new file mode 100644
index 00000000000..5c9abf57892
--- /dev/null
+++ b/pkgs/tools/networking/boundary/default.nix
@@ -0,0 +1,66 @@
+{ stdenv, lib, fetchzip }:
+
+stdenv.mkDerivation rec {
+  pname = "boundary";
+  version = "0.4.0";
+
+  src =
+    let
+      inherit (stdenv.hostPlatform) system;
+      selectSystem = attrs: attrs.${system} or (throw "Unsupported system: ${system}");
+      suffix = selectSystem {
+        x86_64-linux = "linux_amd64";
+        aarch64-linux = "linux_arm64";
+        x86_64-darwin = "darwin_amd64";
+      };
+      sha256 = selectSystem {
+        x86_64-linux = "sha256-xHvg2Kdm7hoJ7Dwh4pLXJE+EPcl9Zta/00IN3wRnOzU=";
+        aarch64-linux = "sha256-Kbr7tZjVcYiejy1CB9r10mqG+0serRx+mjPXds2/TJQ=";
+        x86_64-darwin = "sha256-a8e3gKTTsK5QRAYrB4/DtrFFGM2In73wKEcEMcbeUTI=";
+      };
+    in
+    fetchzip {
+      url = "https://releases.hashicorp.com/boundary/${version}/boundary_${version}_${suffix}.zip";
+      inherit sha256;
+    };
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+    install -D boundary $out/bin/boundary
+    runHook postInstall
+  '';
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    runHook preInstallCheck
+    $out/bin/boundary --help
+    $out/bin/boundary version
+    runHook postInstallCheck
+  '';
+
+  dontPatchELF = true;
+  dontPatchShebangs = true;
+
+  passthru.updateScript = ./update.sh;
+
+  meta = with lib; {
+    homepage = "https://boundaryproject.io/";
+    changelog = "https://github.com/hashicorp/boundary/blob/v${version}/CHANGELOG.md";
+    description = "Enables identity-based access management for dynamic infrastructure";
+    longDescription = ''
+      Boundary provides a secure way to access hosts and critical systems
+      without having to manage credentials or expose your network, and is
+      entirely open source.
+
+      Boundary is designed to be straightforward to understand, highly scalable,
+      and resilient. It can run in clouds, on-prem, secure enclaves and more,
+      and does not require an agent to be installed on every end host.
+    '';
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ jk ];
+    platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" ];
+  };
+}
diff --git a/pkgs/tools/networking/boundary/update.sh b/pkgs/tools/networking/boundary/update.sh
new file mode 100755
index 00000000000..43733930710
--- /dev/null
+++ b/pkgs/tools/networking/boundary/update.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl gnused gawk nix-prefetch
+
+set -euo pipefail
+
+ROOT="$(dirname "$(readlink -f "$0")")"
+NIX_DRV="$ROOT/default.nix"
+if [ ! -f "$NIX_DRV" ]; then
+  echo "ERROR: cannot find default.nix in $ROOT"
+  exit 1
+fi
+
+fetch_arch() {
+  VER="$1"; ARCH="$2"
+  URL="https://releases.hashicorp.com/boundary/${VER}/boundary_${VER}_${ARCH}.zip"
+  nix-prefetch "{ stdenv, fetchzip }:
+stdenv.mkDerivation rec {
+  pname = \"boundary\"; version = \"${VER}\";
+  src = fetchzip { url = \"$URL\"; };
+}
+"
+}
+
+replace_sha() {
+  sed -i "s#$1 = \"sha256-.\{44\}\"#$1 = \"$2\"#" "$NIX_DRV"
+}
+
+# https://releases.hashicorp.com/boundary/0.1.4/boundary_0.1.4_linux_amd64.zip
+BOUNDARY_VER=$(curl -Ls -w "%{url_effective}" -o /dev/null https://github.com/hashicorp/boundary/releases/latest | awk -F'/' '{print $NF}' | sed 's/v//')
+
+BOUNDARY_LINUX_X64_SHA256=$(fetch_arch "$BOUNDARY_VER" "linux_amd64")
+BOUNDARY_DARWIN_X64_SHA256=$(fetch_arch "$BOUNDARY_VER" "darwin_amd64")
+BOUNDARY_LINUX_AARCH64_SHA256=$(fetch_arch "$BOUNDARY_VER" "linux_arm64")
+
+sed -i "s/version = \".*\"/version = \"$BOUNDARY_VER\"/" "$NIX_DRV"
+
+replace_sha "x86_64-linux" "$BOUNDARY_LINUX_X64_SHA256"
+replace_sha "x86_64-darwin" "$BOUNDARY_DARWIN_X64_SHA256"
+replace_sha "aarch64-linux" "$BOUNDARY_LINUX_AARCH64_SHA256"
diff --git a/pkgs/tools/networking/brook/default.nix b/pkgs/tools/networking/brook/default.nix
index b70eb080a7a..b6f7cb1869a 100644
--- a/pkgs/tools/networking/brook/default.nix
+++ b/pkgs/tools/networking/brook/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildGoPackage, fetchFromGitHub }:
+{ lib, buildGoPackage, fetchFromGitHub }:
 
 buildGoPackage rec {
   pname = "brook";
@@ -15,7 +15,7 @@ buildGoPackage rec {
 
   goDeps = ./deps.nix;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/txthinking/brook";
     description = "A cross-platform Proxy/VPN software";
     license = with licenses; [ gpl3 ];
diff --git a/pkgs/tools/networking/bsd-finger/default.nix b/pkgs/tools/networking/bsd-finger/default.nix
index d011665a492..189f636cd1f 100644
--- a/pkgs/tools/networking/bsd-finger/default.nix
+++ b/pkgs/tools/networking/bsd-finger/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 # !!! Duplication: this package is almost exactly the same as `bsd-finger'.
 
@@ -16,9 +16,9 @@ stdenv.mkDerivation rec {
 
   preBuild = "cd finger";
 
-  preInstall = '' mkdir -p $out/man/man1 $out/bin '';
+  preInstall = "mkdir -p $out/man/man1 $out/bin ";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     platforms = platforms.linux;
     license = licenses.bsdOriginal;
   };
diff --git a/pkgs/tools/networking/bud/default.nix b/pkgs/tools/networking/bud/default.nix
index a79cbdc8bbd..7a4bd5adcba 100644
--- a/pkgs/tools/networking/bud/default.nix
+++ b/pkgs/tools/networking/bud/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchgit, python, gyp, utillinux }:
+{ stdenv, lib, fetchgit, python2, util-linux }:
 
 stdenv.mkDerivation {
   pname = "bud";
@@ -11,9 +11,11 @@ stdenv.mkDerivation {
     sha256 = "08yr6l4lc2m6rng06253fcaznf6sq0v053wfr8bbym42c32z0xdh";
   };
 
-  buildInputs = [
-    python gyp
-  ] ++ lib.optional stdenv.isLinux utillinux;
+  nativeBuildInputs = [
+    python2 python2.pkgs.gyp
+  ] ++ lib.optional stdenv.isLinux util-linux;
+
+  strictDeps = true;
 
   buildPhase = ''
     python ./gyp_bud -f make
diff --git a/pkgs/tools/networking/bukubrow/default.nix b/pkgs/tools/networking/bukubrow/default.nix
index b8f2d70848d..f9747d4e0a0 100644
--- a/pkgs/tools/networking/bukubrow/default.nix
+++ b/pkgs/tools/networking/bukubrow/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, rustPlatform, fetchFromGitHub, sqlite }: let
+{ lib, rustPlatform, fetchFromGitHub, sqlite }: let
 
 manifest = {
   description = "Bukubrow extension host application";
@@ -18,7 +18,7 @@ in rustPlatform.buildRustPackage rec {
     sha256 = "1a3gqxj6d1shv3w0v9m8x2xr0bvcynchy778yqalxkc3x4vr0nbn";
   };
 
-  cargoSha256 = "1k6mffcs9g0z5lh8hpflyharx6653cs1f2rjpldab0fc5fjmjfza";
+  cargoSha256 = "0z6i9wzz5gy9rs8cxfmwg4mpfajv0xvj4nn6jfl7f1rw6k457jc9";
 
   buildInputs = [ sqlite ];
 
@@ -38,8 +38,8 @@ in rustPlatform.buildRustPackage rec {
     install -Dm0644 chrome.json $out/etc/chromium/native-messaging-hosts/com.samhh.bukubrow.json
   '';
 
-  meta = with stdenv.lib; {
-    description = "Bukubrow is a WebExtension for Buku, a command-line bookmark manager";
+  meta = with lib; {
+    description = "A WebExtension for Buku, a command-line bookmark manager";
     homepage = "https://github.com/SamHH/bukubrow-host";
     license = licenses.gpl3;
     maintainers = with maintainers; [ infinisil ];
diff --git a/pkgs/tools/networking/bully/default.nix b/pkgs/tools/networking/bully/default.nix
index 4117932550f..b49af33cd9e 100644
--- a/pkgs/tools/networking/bully/default.nix
+++ b/pkgs/tools/networking/bully/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, libpcap }:
+{ lib, stdenv, fetchFromGitHub, libpcap }:
 
 stdenv.mkDerivation rec {
   pname = "bully";
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
     install -Dm444 -t $out/share/doc/${pname} ../*.md
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Retrieve WPA/WPA2 passphrase from a WPS enabled access point";
     homepage = "https://github.com/kimocoder/bully";
     license = licenses.gpl3;
diff --git a/pkgs/tools/networking/burpsuite/default.nix b/pkgs/tools/networking/burpsuite/default.nix
index e8caddcbe29..53d1a3d4f23 100644
--- a/pkgs/tools/networking/burpsuite/default.nix
+++ b/pkgs/tools/networking/burpsuite/default.nix
@@ -1,28 +1,37 @@
-{ stdenv, fetchurl, jre, runtimeShell }:
+{ lib, stdenv, fetchurl, jdk11, runtimeShell, unzip, chromium }:
 
-let
-  version = "2020.1";
-  jar = fetchurl {
+stdenv.mkDerivation rec {
+  pname = "burpsuite";
+  version = "2021.6";
+
+  src = fetchurl {
     name = "burpsuite.jar";
-    url = "https://portswigger.net/Burp/Releases/Download?productId=100&version=${version}&type=Jar";
-    sha256 = "12awfy0f8fyqjc0kza1gkmdx1g8bniw1xqaps2dhjimi6s0lq5jx";
+    urls = [
+      "https://portswigger.net/Burp/Releases/Download?productId=100&version=${version}&type=Jar"
+      "https://web.archive.org/web/https://portswigger.net/Burp/Releases/Download?productId=100&version=${version}&type=Jar"
+    ];
+    sha256 = "sha256-DPUi/KRnJkwrc7KMq10+LE6+MX9yJLgrgIHKhlfL+vc=";
   };
-  launcher = ''
-    #!${runtimeShell}
-    exec ${jre}/bin/java -jar ${jar} "$@"
-  '';
-in stdenv.mkDerivation {
-  pname = "burpsuite";
-  inherit version;
-  buildCommand = ''
+
+  dontUnpack = true;
+  dontBuild = true;
+  installPhase = ''
+    runHook preInstall
+
     mkdir -p $out/bin
-    echo "${launcher}" > $out/bin/burpsuite
+    echo '#!${runtimeShell}
+    eval "$(${unzip}/bin/unzip -p ${src} chromium.properties)"
+    mkdir -p "$HOME/.BurpSuite/burpbrowser/$linux64"
+    ln -sf "${chromium}/bin/chromium" "$HOME/.BurpSuite/burpbrowser/$linux64/chrome"
+    exec ${jdk11}/bin/java -jar ${src} "$@"' > $out/bin/burpsuite
     chmod +x $out/bin/burpsuite
+
+    runHook postInstall
   '';
 
   preferLocalBuild = true;
 
-  meta = {
+  meta = with lib; {
     description = "An integrated platform for performing security testing of web applications";
     longDescription = ''
       Burp Suite is an integrated platform for performing security testing of web applications.
@@ -32,9 +41,9 @@ in stdenv.mkDerivation {
     '';
     homepage = "https://portswigger.net/burp/";
     downloadPage = "https://portswigger.net/burp/freedownload";
-    license = [ stdenv.lib.licenses.unfree ];
-    platforms = jre.meta.platforms;
+    license = licenses.unfree;
+    platforms = jdk11.meta.platforms;
     hydraPlatforms = [];
-    maintainers = with stdenv.lib.maintainers; [ bennofs ];
+    maintainers = with maintainers; [ bennofs ];
   };
 }
diff --git a/pkgs/tools/networking/bwm-ng/default.nix b/pkgs/tools/networking/bwm-ng/default.nix
index ae3edf7dcea..26cdfe7c0db 100644
--- a/pkgs/tools/networking/bwm-ng/default.nix
+++ b/pkgs/tools/networking/bwm-ng/default.nix
@@ -1,4 +1,4 @@
-{ writeText, stdenv, fetchurl, ncurses }:
+{ writeText, lib, stdenv, fetchurl, ncurses }:
 
 let
   version = "0.6.1";
@@ -41,9 +41,9 @@ stdenv.mkDerivation rec {
 
 
   # This code uses inline in the gnu89 sense: see http://clang.llvm.org/compatibility.html#inline
-  NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isClang "-std=gnu89";
+  NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-std=gnu89";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A small and simple console-based live network and disk io bandwidth monitor";
     homepage = "http://www.gropp.org/?id=projects&sub=bwm-ng";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/cadaver/configure.patch b/pkgs/tools/networking/cadaver/configure.patch
new file mode 100644
index 00000000000..b618099b371
--- /dev/null
+++ b/pkgs/tools/networking/cadaver/configure.patch
@@ -0,0 +1,20 @@
+--- a/configure.orig
++++ b/configure
+@@ -9595,7 +9595,7 @@ fi
+ $as_echo "$ne_cv_lib_neon" >&6; }
+     if test "$ne_cv_lib_neon" = "yes"; then
+        ne_cv_lib_neonver=no
+-       for v in 27 28 29; do
++       for v in 27 28 29 30 31; do
+           case $ne_libver in
+           0.$v.*) ne_cv_lib_neonver=yes ;;
+           esac
+@@ -10328,7 +10328,7 @@ fi
+ $as_echo "$ne_cv_lib_neon" >&6; }
+     if test "$ne_cv_lib_neon" = "yes"; then
+        ne_cv_lib_neonver=no
+-       for v in 27 28 29; do
++       for v in 27 28 29 30 31; do
+           case $ne_libver in
+           0.$v.*) ne_cv_lib_neonver=yes ;;
+           esac
diff --git a/pkgs/tools/networking/cadaver/default.nix b/pkgs/tools/networking/cadaver/default.nix
index 46ebb234fb1..70c7972bd65 100644
--- a/pkgs/tools/networking/cadaver/default.nix
+++ b/pkgs/tools/networking/cadaver/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fetchpatch, openssl, readline }:
+{ lib, stdenv, fetchurl, fetchpatch, neon, pkg-config, readline, zlib}:
 
 stdenv.mkDerivation rec {
   name = "cadaver-0.23.3";
@@ -14,13 +14,17 @@ stdenv.mkDerivation rec {
       name = "disable-sslv2.patch";
       sha256 = "1qx65hv584wdarks51yhd3y38g54affkphm5wz27xiz4nhmbssrr";
     })
+    # Cadaver also works with newer versions of neon than stated
+    # in the configure script
+    ./configure.patch
   ];
 
   configureFlags = [ "--with-ssl" "--with-readline" ];
 
-  buildInputs = [ openssl readline ];
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ neon readline zlib ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A command-line WebDAV client";
     homepage    = "http://www.webdav.org/cadaver";
     maintainers = with maintainers; [ ianwookim ];
diff --git a/pkgs/tools/networking/calendar-cli/default.nix b/pkgs/tools/networking/calendar-cli/default.nix
new file mode 100644
index 00000000000..497b77b57ac
--- /dev/null
+++ b/pkgs/tools/networking/calendar-cli/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, python3
+, fetchFromGitHub
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "calendar-cli";
+  version = "0.12.0";
+
+  src = fetchFromGitHub {
+    owner = "tobixen";
+    repo = "calendar-cli";
+    rev = "v${version}";
+    sha256 = "0qjld2m7hl3dx90491pqbjcja82c1f5gwx274kss4lkb8aw0kmlv";
+  };
+
+  propagatedBuildInputs = with python3.pkgs; [
+    icalendar
+    caldav
+    pytz
+    tzlocal
+    six
+  ];
+
+  # tests require networking
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Simple command-line CalDav client";
+    homepage = "https://github.com/tobixen/calendar-cli";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/tools/networking/cantoolz/default.nix b/pkgs/tools/networking/cantoolz/default.nix
new file mode 100644
index 00000000000..11a0315184c
--- /dev/null
+++ b/pkgs/tools/networking/cantoolz/default.nix
@@ -0,0 +1,62 @@
+{ lib
+, bitstring
+, buildPythonApplication
+, fetchFromGitHub
+, fetchpatch
+, flask
+, mido
+, numpy
+, pyserial
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonApplication rec {
+  pname = "cantoolz";
+  version = "3.7.0";
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "CANToolz";
+    repo = "CANToolz";
+    rev = "v${version}";
+    sha256 = "0xkj7zyx6pz866q61c84mdagpgdyd633v85hk7qxhamca33rc4yi";
+  };
+
+  patches = [
+    (fetchpatch {
+      # Replace time.clock() which was removed, https://github.com/CANToolz/CANToolz/pull/30
+      url = "https://github.com/CANToolz/CANToolz/pull/30/commits/d75574523d3b273c40fb714532c4de27f9e6dd3e.patch";
+      sha256 = "0g91hywg5q6f2qk1awgklywigclrbhh6a6mwd0kpbkk1wawiiwbc";
+    })
+  ];
+
+  propagatedBuildInputs = [
+    flask
+    pyserial
+    mido
+    numpy
+    bitstring
+  ];
+
+  checkInputs = [ pytestCheckHook ];
+  disabledTests = [ "test_process" ];
+  pythonImportsCheck = [ "cantoolz" ];
+
+  meta = with lib; {
+    description = "Black-box CAN network analysis framework";
+    longDescription = ''
+      CANToolz is a framework for analysing CAN networks and devices. It
+      provides multiple modules that can be chained using CANToolz's pipe
+      system and used by security researchers, automotive/OEM security
+      testers in black-box analysis.
+
+      CANToolz can be used for ECU discovery, MitM testing, fuzzing, brute
+      forcing, scanning or R&D, testing and validation. More can easily be
+      implemented with a new module.
+    '';
+    homepage = "https://github.com/CANToolz/CANToolz";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/networking/carddav-util/default.nix b/pkgs/tools/networking/carddav-util/default.nix
index c28048a56c0..300e03761a6 100644
--- a/pkgs/tools/networking/carddav-util/default.nix
+++ b/pkgs/tools/networking/carddav-util/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, python, pythonPackages, makeWrapper }:
+{ lib, stdenv, fetchgit, python3Packages, makeWrapper }:
 
 stdenv.mkDerivation {
 
@@ -10,9 +10,11 @@ stdenv.mkDerivation {
     sha256 = "0f0raffdy032wlnxfck6ky60r163nhqfbr311y4ry55l60s4497n";
   };
 
-  buildInputs = [makeWrapper];
+  nativeBuildInputs = [ makeWrapper ];
 
-  propagatedBuildInputs = with pythonPackages; [ requests vobject lxml ];
+  propagatedBuildInputs = with python3Packages; [ requests vobject lxml ];
+
+  strictDeps = true;
 
   doCheck = false; # no test
 
@@ -20,7 +22,7 @@ stdenv.mkDerivation {
     mkdir -p $out/bin
     cp $src/carddav-util.py $out/bin
 
-    pythondir="$out/lib/${python.libPrefix}/site-packages"
+    pythondir="$out/lib/${python3Packages.python.sitePackages}"
     mkdir -p "$pythondir"
     cp $src/carddav.py "$pythondir"
   '';
@@ -31,7 +33,7 @@ stdenv.mkDerivation {
       --prefix PATH : "$prefix/bin:$PATH"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/ljanyst/carddav-util";
     description = "A CardDAV import/export utility";
     platforms = platforms.unix;
diff --git a/pkgs/tools/networking/cassowary/default.nix b/pkgs/tools/networking/cassowary/default.nix
index 962a46cb27f..527ecfbf98d 100644
--- a/pkgs/tools/networking/cassowary/default.nix
+++ b/pkgs/tools/networking/cassowary/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "cassowary";
-  version = "0.11.0";
+  version = "0.14.0";
 
   src = fetchFromGitHub {
     owner = "rogerwelin";
     repo = pname;
     rev = "v${version}";
-    sha256 = "161wzcdq7kpny6fzxsqk2ivnah0xwmh2knv37jn0x18lclga1k9s";
+    sha256 = "sha256-rQNrxAKf2huY9I6iqdf1iYxgXaQI0LG1Lkrnv1OuJsg=";
   };
 
-  vendorSha256 = "1qgilmkai9isbbg4pzqic6i8v5z8cay0ilw1gb69z4a6f2q4zhkp";
+  vendorSha256 = "sha256-hGpiL88x2roFEjJJM4CKyt3k66VK1pEnpOwvhDPDp6M=";
 
   doCheck = false;
 
diff --git a/pkgs/tools/networking/ccnet/default.nix b/pkgs/tools/networking/ccnet/default.nix
deleted file mode 100644
index 48d675ea09b..00000000000
--- a/pkgs/tools/networking/ccnet/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{stdenv, fetchurl, which, autoreconfHook, pkgconfig, vala, python, libsearpc, libzdb, libuuid, libevent, sqlite, openssl}:
-
-stdenv.mkDerivation rec {
-  version = "6.1.8";
-  seafileVersion = "6.1.8";
-  pname = "ccnet";
-
-  src = fetchurl {
-    url = "https://github.com/haiwen/ccnet/archive/v${version}.tar.gz";
-    sha256 = "0qlpnrz30ldrqnvbj59d54qdghxpxc5lsq6kf3dw2b93jnzkcmmm";
-  };
-
-  nativeBuildInputs = [ pkgconfig which autoreconfHook vala python ];
-  propagatedBuildInputs = [ libsearpc libzdb libuuid libevent sqlite openssl ];
-
-  configureFlags = [ "--enable-server" ];
-
-  meta = with stdenv.lib; {
-    homepage = "https://github.com/haiwen/ccnet";
-    description = "A framework for writing networked applications in C";
-    license = licenses.gpl3Plus;
-    platforms = platforms.linux;
-    maintainers = [ ];
-  };
-}
diff --git a/pkgs/tools/networking/cdpr/default.nix b/pkgs/tools/networking/cdpr/default.nix
new file mode 100644
index 00000000000..6ac69b95dba
--- /dev/null
+++ b/pkgs/tools/networking/cdpr/default.nix
@@ -0,0 +1,25 @@
+{ lib, stdenv, fetchurl, libpcap }:
+
+stdenv.mkDerivation rec {
+  pname = "cdpr";
+  version = "2.4";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${pname}/${version}/${pname}-${version}.tgz";
+    sha256 = "1idyvyafkk0ifcbi7mc65b60qia6hpsdb6s66j4ggqp7if6vblrj";
+  };
+
+  buildInputs = [ libpcap ];
+
+  installPhase = ''
+    install -Dm755 cdpr $out/bin/cdpr
+  '';
+
+  meta = with lib; {
+    description = "Cisco Discovery Protocol Reporter";
+    homepage = "http://cdpr.sourceforge.net/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.sgo ];
+  };
+}
diff --git a/pkgs/tools/networking/chaos/default.nix b/pkgs/tools/networking/chaos/default.nix
new file mode 100644
index 00000000000..dc46032dcde
--- /dev/null
+++ b/pkgs/tools/networking/chaos/default.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "chaos";
+  version = "0.1.9";
+
+  src = fetchFromGitHub {
+    owner = "projectdiscovery";
+    repo = "chaos-client";
+    rev = "v${version}";
+    sha256 = "13lblrckf65y7kd3lw4s12bi05rv4iv25sr5xbp63l9ly5sbzaz6";
+  };
+
+  vendorSha256 = "1mc60jkf7xmf3zsb2fihsgg3jkb2mfvsw84aby2kqcf14hdsk2gl";
+
+  subPackages = [
+    "cmd/chaos/"
+  ];
+
+  meta = with lib; {
+    description = "Tool to communicate with Chaos DNS API";
+    homepage = "https://github.com/projectdiscovery/chaos-client";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/networking/chisel/default.nix b/pkgs/tools/networking/chisel/default.nix
new file mode 100644
index 00000000000..5d82a549e88
--- /dev/null
+++ b/pkgs/tools/networking/chisel/default.nix
@@ -0,0 +1,36 @@
+{ buildGoModule
+, fetchFromGitHub
+, lib
+}:
+
+buildGoModule rec {
+  pname = "chisel";
+  version = "1.7.6";
+
+  src = fetchFromGitHub {
+    owner = "jpillora";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-hUurgwbSUcNZiSi+eVTG/Ija/yxPeWuvEE5pUiG7Dls=";
+  };
+
+  vendorSha256 = "sha256-GzsQ6LXxe9UQc13XbsYFOWPe0EzlyHechchKc6xDkAc=";
+
+  buildFlagsArray = [ "-ldflags=-s -w -X github.com/jpillora/chisel/share.BuildVersion=${version}" ];
+
+  # tests require access to the network
+  doCheck = false;
+
+  meta = with lib; {
+    description = "TCP/UDP tunnel over HTTP";
+    longDescription = ''
+      Chisel is a fast TCP/UDP tunnel, transported over HTTP, secured via
+      SSH. Single executable including both client and server. Chisel is
+      mainly useful for passing through firewalls, though it can also be
+      used to provide a secure endpoint into your network.
+    '';
+    homepage = "https://github.com/jpillora/chisel";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/networking/chrony/allow-clock_adjtime.patch b/pkgs/tools/networking/chrony/allow-clock_adjtime.patch
deleted file mode 100644
index 2fa3baca722..00000000000
--- a/pkgs/tools/networking/chrony/allow-clock_adjtime.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 0cf506c92967c84f9ed83ba9e1be946a7fda6425 Mon Sep 17 00:00:00 2001
-From: Miroslav Lichvar <mlichvar@redhat.com>
-Date: Mon, 2 Dec 2019 12:47:13 +0100
-Subject: sys_linux: allow clock_adjtime in seccomp filter
-
-The adjtimex() function in glibc was switched to the clock_adjtime
-system call.
-
-diff --git a/sys_linux.c b/sys_linux.c
-index 63eb8f1..fcf89c2 100644
---- a/sys_linux.c
-+++ b/sys_linux.c
-@@ -478,8 +478,8 @@ SYS_Linux_EnableSystemCallFilter(int level)
- {
-   const int syscalls[] = {
-     /* Clock */
--    SCMP_SYS(adjtimex), SCMP_SYS(clock_gettime), SCMP_SYS(gettimeofday),
--    SCMP_SYS(settimeofday), SCMP_SYS(time),
-+    SCMP_SYS(adjtimex), SCMP_SYS(clock_adjtime), SCMP_SYS(clock_gettime),
-+    SCMP_SYS(gettimeofday), SCMP_SYS(settimeofday), SCMP_SYS(time),
-     /* Process */
-     SCMP_SYS(clone), SCMP_SYS(exit), SCMP_SYS(exit_group), SCMP_SYS(getpid),
-     SCMP_SYS(getrlimit), SCMP_SYS(rt_sigaction), SCMP_SYS(rt_sigreturn),
--- 
-cgit v0.10.2
-
diff --git a/pkgs/tools/networking/chrony/default.nix b/pkgs/tools/networking/chrony/default.nix
index 6c8254c797b..24968c64a09 100644
--- a/pkgs/tools/networking/chrony/default.nix
+++ b/pkgs/tools/networking/chrony/default.nix
@@ -1,36 +1,31 @@
-{ stdenv, fetchurl, pkgconfig, libcap, readline, texinfo, nss, nspr
-, libseccomp, pps-tools }:
+{ lib, stdenv, fetchurl, pkg-config, libcap, readline, texinfo, nss, nspr
+, libseccomp, pps-tools, gnutls }:
 
 assert stdenv.isLinux -> libcap != null;
 
 stdenv.mkDerivation rec {
   pname = "chrony";
-  version = "3.5.1";
+  version = "4.1";
 
   src = fetchurl {
     url = "https://download.tuxfamily.org/chrony/${pname}-${version}.tar.gz";
-    sha256 = "19ywl8a3lb2id7lcna5hp2g4pjnfwdc9ihr0fk6i9m45vdq2za0v";
+    sha256 = "sha256-7Xby0/k0esYiGpGtS9VT3QVlrBiM10kNCAHQj3FxFkw=";
   };
 
-  patches = [
-    ./allow-clock_adjtime.patch
-    ./fix-seccomp-build.patch
-  ];
-
   postPatch = ''
     patchShebangs test
   '';
 
-  buildInputs = [ readline texinfo nss nspr ]
-    ++ stdenv.lib.optionals stdenv.isLinux [ libcap libseccomp pps-tools ];
-  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ readline texinfo nss nspr gnutls ]
+    ++ lib.optionals stdenv.isLinux [ libcap libseccomp pps-tools ];
+  nativeBuildInputs = [ pkg-config ];
 
   hardeningEnable = [ "pie" ];
 
   configureFlags = [ "--chronyvardir=$(out)/var/lib/chrony" ]
-    ++ stdenv.lib.optional stdenv.isLinux "--enable-scfilter";
+    ++ lib.optional stdenv.isLinux "--enable-scfilter";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Sets your computer's clock from time servers on the Net";
     homepage = "https://chrony.tuxfamily.org/";
     repositories.git = "git://git.tuxfamily.org/gitroot/chrony/chrony.git";
diff --git a/pkgs/tools/networking/chrony/fix-seccomp-build.patch b/pkgs/tools/networking/chrony/fix-seccomp-build.patch
deleted file mode 100644
index 6888e7efeb7..00000000000
--- a/pkgs/tools/networking/chrony/fix-seccomp-build.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/sys_linux.c b/sys_linux.c
-index 898dc7a7f75..fcd334ecf03 100644
---- a/sys_linux.c
-+++ b/sys_linux.c
-@@ -503,7 +503,7 @@ SYS_Linux_EnableSystemCallFilter(int level)
-     SCMP_SYS(socketcall),
-     /* General I/O */
-     SCMP_SYS(_newselect), SCMP_SYS(close), SCMP_SYS(open), SCMP_SYS(openat), SCMP_SYS(pipe),
--    SCMP_SYS(pipe2), SCMP_SYS(poll), SCMP_SYS(ppoll), SCMP_SYS(pselect6), SCMP_SYS(read),
-+    SCMP_SYS(pipe2), SCMP_SYS(poll), SCMP_SYS(pselect6), SCMP_SYS(read),
-     SCMP_SYS(futex), SCMP_SYS(select), SCMP_SYS(set_robust_list), SCMP_SYS(write),
-     /* Miscellaneous */
-     SCMP_SYS(getrandom), SCMP_SYS(sysinfo), SCMP_SYS(uname),
diff --git a/pkgs/tools/networking/circus/default.nix b/pkgs/tools/networking/circus/default.nix
index 82c9db90432..f24c0e629cb 100644
--- a/pkgs/tools/networking/circus/default.nix
+++ b/pkgs/tools/networking/circus/default.nix
@@ -1,7 +1,14 @@
-{ stdenv, python3Packages }:
+{ lib, python3 }:
 
 let
-  inherit (python3Packages) buildPythonApplication fetchPypi iowait psutil pyzmq tornado_4 mock;
+  python = python3.override {
+    self = python;
+    packageOverrides = self: super: {
+      tornado = super.tornado_4;
+    };
+  };
+
+  inherit (python.pkgs) buildPythonApplication fetchPypi iowait psutil pyzmq tornado mock six;
 in
 
 buildPythonApplication rec {
@@ -23,9 +30,9 @@ buildPythonApplication rec {
 
   doCheck = false; # weird error
 
-  propagatedBuildInputs = [ iowait psutil pyzmq tornado_4 ];
+  propagatedBuildInputs = [ iowait psutil pyzmq tornado six ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A process and socket manager";
     homepage = "https://github.circus.com/circus-tent/circus";
     license = licenses.asl20;
diff --git a/pkgs/tools/networking/cjdns/default.nix b/pkgs/tools/networking/cjdns/default.nix
index 13388d33779..474c9d59c9e 100644
--- a/pkgs/tools/networking/cjdns/default.nix
+++ b/pkgs/tools/networking/cjdns/default.nix
@@ -1,23 +1,23 @@
-{ stdenv, fetchFromGitHub, nodejs, which, python27, utillinux, nixosTests }:
+{ lib, stdenv, fetchFromGitHub, nodejs, which, python27, util-linux, nixosTests }:
 
 stdenv.mkDerivation rec {
   pname = "cjdns";
-  version = "20.7";
+  version = "21.1";
 
   src = fetchFromGitHub {
     owner = "cjdelisle";
     repo = "cjdns";
     rev = "cjdns-v${version}";
-    sha256 = "09gpqpzc00pp3cj7lyq9876p7is4bcndpdi5knqbv824vk4bj3k0";
+    sha256 = "NOmk+vMZ8i0E2MjrUzksk+tkJ9XVVNEXlE5OOTNa+Y0=";
   };
 
   buildInputs = [ which python27 nodejs ] ++
     # for flock
-    stdenv.lib.optional stdenv.isLinux utillinux;
+    lib.optional stdenv.isLinux util-linux;
 
   CFLAGS = "-O2 -Wno-error=stringop-truncation";
   buildPhase =
-    stdenv.lib.optionalString stdenv.isAarch32 "Seccomp_NO=1 "
+    lib.optionalString stdenv.isAarch32 "Seccomp_NO=1 "
     + "bash do";
   installPhase = ''
     install -Dt "$out/bin/" cjdroute makekeys privatetopublic publictoip6
@@ -31,10 +31,10 @@ stdenv.mkDerivation rec {
 
   passthru.tests.basic = nixosTests.cjdns;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/cjdelisle/cjdns";
     description = "Encrypted networking for regular people";
-    license = licenses.gpl3;
+    license = licenses.gpl3Plus;
     maintainers = with maintainers; [ ehmry ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/tools/networking/cksfv/default.nix b/pkgs/tools/networking/cksfv/default.nix
index c777f487b3d..581d39636fa 100644
--- a/pkgs/tools/networking/cksfv/default.nix
+++ b/pkgs/tools/networking/cksfv/default.nix
@@ -1,14 +1,14 @@
-{stdenv, fetchurl}:
+{lib, stdenv, fetchurl}:
 
 stdenv.mkDerivation rec {
-  name = "cksfv-1.3.14";
+  name = "cksfv-1.3.15";
 
   src = fetchurl {
     url = "http://zakalwe.fi/~shd/foss/cksfv/files/${name}.tar.bz2";
-    sha256 = "0lnz0z57phl6s52hjvlryn96xrlph9b0h89ahhv027sa79pj8g4g";
+    sha256 = "0k06aq94cn5xp4knjw0p7gz06hzh622ql2xvnrlr3q8rcmdvwwx1";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://zakalwe.fi/~shd/foss/cksfv/";
     description = "A tool for verifying files against a SFV checksum file";
     platforms = platforms.all;
diff --git a/pkgs/tools/networking/clash/default.nix b/pkgs/tools/networking/clash/default.nix
index 4447ab0f048..61e529dc872 100644
--- a/pkgs/tools/networking/clash/default.nix
+++ b/pkgs/tools/networking/clash/default.nix
@@ -1,17 +1,17 @@
-{ stdenv, fetchFromGitHub, buildGoModule }:
+{ lib, fetchFromGitHub, buildGoModule }:
 
 buildGoModule rec {
   pname = "clash";
-  version = "1.1.0";
+  version = "1.6.0";
 
   src = fetchFromGitHub {
     owner = "Dreamacro";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0cbbih035h40hhl7ykmyh9q9nzdqq1p8hmvzd4358cigz1gjc3j2";
+    sha256 = "sha256-XG/nci8Sj0vfa/SFPpJwl1Zmt/23LfKxocejplZtS0E=";
   };
 
-  vendorSha256 = "0s7mhbjfpfmzqf48d7k0d416m39x6fh5ds4q3xnvhcfx5kmdymq6";
+  vendorSha256 = "sha256-WR1CpjEMHRkpd0/iqrOm0oVXvyQO+r6GyeP0L0zx8aA=";
 
   doCheck = false;
 
@@ -20,10 +20,10 @@ buildGoModule rec {
     "-X github.com/Dreamacro/clash/constant.Version=${version}"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A rule-based tunnel in Go";
     homepage = "https://github.com/Dreamacro/clash";
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ contrun filalex77 ];
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ contrun Br1ght0ne ];
   };
 }
diff --git a/pkgs/tools/networking/cloud-custodian/default.nix b/pkgs/tools/networking/cloud-custodian/default.nix
index a57d9f13d78..c5e1f7527da 100644
--- a/pkgs/tools/networking/cloud-custodian/default.nix
+++ b/pkgs/tools/networking/cloud-custodian/default.nix
@@ -3,7 +3,7 @@
 , boto3
 , botocore
 , certifi
-, dateutil
+, python-dateutil
 , jsonpatch
 , jsonschema
 , pyyaml
@@ -26,7 +26,7 @@ buildPythonApplication rec {
     boto3
     botocore
     certifi
-    dateutil
+    python-dateutil
     jsonpatch
     jsonschema
     pyyaml
diff --git a/pkgs/tools/networking/cntlm/default.nix b/pkgs/tools/networking/cntlm/default.nix
index d05d8e48dc0..fdfac8fdcbc 100644
--- a/pkgs/tools/networking/cntlm/default.nix
+++ b/pkgs/tools/networking/cntlm/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, which}:
+{ lib, stdenv, fetchurl, which}:
 
 stdenv.mkDerivation rec {
   pname = "cntlm";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ which ];
 
-  preConfigure = stdenv.lib.optionalString stdenv.isDarwin ''
+  preConfigure = lib.optionalString stdenv.isDarwin ''
     substituteInPlace configure --replace "xlc_r gcc" "xlc_r gcc $CC"
     substitute Makefile Makefile.$CC --replace "CC=gcc" "CC=$CC"
   '';
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
     mkdir -p $out/man/; cp doc/cntlm.1 $out/man/;
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "NTLM/NTLMv2 authenticating HTTP proxy";
     homepage = "http://cntlm.sourceforge.net/";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/cocom/default.nix b/pkgs/tools/networking/cocom/default.nix
new file mode 100644
index 00000000000..f4a896af7d1
--- /dev/null
+++ b/pkgs/tools/networking/cocom/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, rustPlatform
+, Security
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cocom";
+  version = "1.1.3";
+
+  src = fetchFromGitHub {
+    owner = "LamdaLamdaLamda";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0sl4ivn95sr5pgw2z877gmhyfc4mk9xr457i5g2i4wqnf2jmy14j";
+  };
+
+  cargoSha256 = "04kj1yj6hhnis3ss0xs4zq8rl71rzn577g8i0wmapkjqzqwg37yb";
+
+  buildInputs = lib.optional stdenv.isDarwin Security;
+
+  # Tests require network access
+  doCheck = false;
+
+  meta = with lib; {
+    description = "NTP client";
+    homepage = "https://github.com/LamdaLamdaLamda/cocom";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/networking/connect/default.nix b/pkgs/tools/networking/connect/default.nix
index 2fbd8ddf4a3..8b8c0018c66 100644
--- a/pkgs/tools/networking/connect/default.nix
+++ b/pkgs/tools/networking/connect/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "connect";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "00yld6yinc8s4xv3b8kbvzn2f4rja5dmp6ysv3n4847qn4k60dh7";
   };
 
-  makeFlags = [ "CC=cc" ];      # gcc and/or clang compat
+  makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];      # gcc and/or clang compat
 
   installPhase = ''
     install -D -m ugo=rx connect $out/bin/connect
@@ -19,11 +19,11 @@ stdenv.mkDerivation rec {
     description = "Make network connection via SOCKS and https proxy";
     longDescription = ''
       This proxy traversal tool is intended to assist OpenSSH (via ProxyCommand
-      in ~/.ssh/config) and GIT (via $GIT_PROXY_COMMAND) utilize SOCKS and https proxies. 
+      in ~/.ssh/config) and GIT (via $GIT_PROXY_COMMAND) utilize SOCKS and https proxies.
       '';
     homepage = "https://bitbucket.org/gotoh/connect/wiki/Home";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
-    maintainers = with stdenv.lib.maintainers; [ jcumming ];
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.gnu ++ lib.platforms.linux ++ lib.platforms.darwin;
+    maintainers = with lib.maintainers; [ jcumming ];
   };
 }
diff --git a/pkgs/tools/networking/connman/connman-gtk/default.nix b/pkgs/tools/networking/connman/connman-gtk/default.nix
index 5de63098185..c75254a27b1 100644
--- a/pkgs/tools/networking/connman/connman-gtk/default.nix
+++ b/pkgs/tools/networking/connman/connman-gtk/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoconf, automake, intltool, pkgconfig,
+{ lib, stdenv, fetchFromGitHub, autoconf, automake, intltool, pkg-config,
 gtk3, connman, openconnect, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
     autoconf
     automake
     intltool
-    pkgconfig
+    pkg-config
     wrapGAppsHook
   ];
 
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
     ./autogen.sh
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "GTK GUI for Connman";
     homepage = "https://github.com/jgke/connman-gtk";
     license = licenses.gpl2Plus;
diff --git a/pkgs/tools/networking/connman/connman-ncurses/default.nix b/pkgs/tools/networking/connman/connman-ncurses/default.nix
index 1e7f54f9ddb..976708c038c 100644
--- a/pkgs/tools/networking/connman/connman-ncurses/default.nix
+++ b/pkgs/tools/networking/connman/connman-ncurses/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchpatch, fetchFromGitHub, autoreconfHook, pkgconfig, dbus, json_c, ncurses, connman }:
+{ lib, stdenv, fetchpatch, fetchFromGitHub, autoreconfHook, pkg-config, dbus, json_c, ncurses, connman }:
 
 stdenv.mkDerivation {
   pname = "connman-ncurses";
@@ -20,7 +20,7 @@ stdenv.mkDerivation {
     })
   ];
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
 
   buildInputs = [ dbus ncurses json_c connman ];
 
@@ -31,7 +31,7 @@ stdenv.mkDerivation {
     cp -va connman_ncurses "$out/bin/"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Simple ncurses UI for connman";
     homepage = "https://github.com/eurogiciel-oss/connman-json-client";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/connman/connman-notify/default.nix b/pkgs/tools/networking/connman/connman-notify/default.nix
index df72a947489..cbf50091303 100644
--- a/pkgs/tools/networking/connman/connman-notify/default.nix
+++ b/pkgs/tools/networking/connman/connman-notify/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitLab, python3Packages, glib, gobject-introspection, wrapGAppsHook }:
+{ lib, fetchFromGitLab, python3Packages, glib, gobject-introspection, wrapGAppsHook }:
 
 python3Packages.buildPythonApplication {
   pname = "connman-notify";
@@ -26,7 +26,7 @@ python3Packages.buildPythonApplication {
     install -D -t $out/share/doc README.rst
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Desktop notification integration for connman";
     homepage = "https://gitlab.com/wavexx/connman-notify";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/connman/connman.nix b/pkgs/tools/networking/connman/connman.nix
index 51219487220..3ec9bce0b4c 100644
--- a/pkgs/tools/networking/connman/connman.nix
+++ b/pkgs/tools/networking/connman/connman.nix
@@ -1,6 +1,6 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
-, pkgconfig
+, pkg-config
 , file
 , glib
 # always required runtime dependencies
@@ -48,17 +48,17 @@
 , enableTist ? false
 }:
 
-assert stdenv.lib.asserts.assertOneOf "firewallType" firewallType [ "iptables" "nftables" ];
-assert stdenv.lib.asserts.assertOneOf "dnsType" dnsType [ "internal" "systemd-resolved" ];
+assert lib.asserts.assertOneOf "firewallType" firewallType [ "iptables" "nftables" ];
+assert lib.asserts.assertOneOf "dnsType" dnsType [ "internal" "systemd-resolved" ];
 
-let inherit (stdenv.lib) optionals; in
+let inherit (lib) optionals; in
 
 stdenv.mkDerivation rec {
   pname = "connman";
-  version = "1.38";
+  version = "1.40";
   src = fetchurl {
     url = "mirror://kernel/linux/network/connman/${pname}-${version}.tar.xz";
-    sha256 = "0awkqigvhwwxiapw0x6yd4whl465ka8a4al0v2pcqy9ggjlsqc6b";
+    sha256 = "sha256-GleufOI0qjoXRKrDvlwhIdmNzpmUQO+KucxO39XtyxI=";
   };
 
   buildInputs = [
@@ -67,10 +67,10 @@ stdenv.mkDerivation rec {
     libmnl
     gnutls
     readline
-  ];
+  ] ++ optionals (enableOpenconnect) [ openconnect ];
 
   nativeBuildInputs = [
-    pkgconfig
+    pkg-config
     file
   ]
     ++ optionals (enablePolkit) [ polkit ]
@@ -86,7 +86,7 @@ stdenv.mkDerivation rec {
 
   configureFlags = [
     # directories flags
-    "--sysconfdir=${placeholder "out"}/etc"
+    "--sysconfdir=/etc"
     "--localstatedir=/var"
     "--with-dbusconfdir=${placeholder "out"}/share"
     "--with-dbusdatadir=${placeholder "out"}/share"
@@ -161,7 +161,7 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A daemon for managing internet connections";
     homepage = "https://01.org/connman";
     maintainers = [ maintainers.matejc ];
diff --git a/pkgs/tools/networking/connman/connman_dmenu/default.nix b/pkgs/tools/networking/connman/connman_dmenu/default.nix
index 8bc1b47e198..3ac730f471f 100644
--- a/pkgs/tools/networking/connman/connman_dmenu/default.nix
+++ b/pkgs/tools/networking/connman/connman_dmenu/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, connman, dmenu }:
+{ lib, stdenv, fetchFromGitHub, connman, dmenu }:
 
 stdenv.mkDerivation {
   pname = "connman_dmenu";
@@ -28,8 +28,8 @@ stdenv.mkDerivation {
   meta = {
     description  = "A dmenu wrapper for connmann";
     homepage     = "https://github.com/march-linux/connman_dmenu";
-    license      = stdenv.lib.licenses.free;
-    maintainers  = [ stdenv.lib.maintainers.magnetophon ];
-    platforms    = stdenv.lib.platforms.all;
+    license      = lib.licenses.free;
+    maintainers  = [ lib.maintainers.magnetophon ];
+    platforms    = lib.platforms.all;
   };
 }
diff --git a/pkgs/tools/networking/corerad/default.nix b/pkgs/tools/networking/corerad/default.nix
index 4ab266e5495..8ba8109f266 100644
--- a/pkgs/tools/networking/corerad/default.nix
+++ b/pkgs/tools/networking/corerad/default.nix
@@ -1,17 +1,17 @@
-{ stdenv, buildGoModule, fetchFromGitHub, nixosTests }:
+{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
 
 buildGoModule rec {
   pname = "corerad";
-  version = "0.2.8";
+  version = "0.3.3";
 
   src = fetchFromGitHub {
     owner = "mdlayher";
     repo = "corerad";
     rev = "v${version}";
-    sha256 = "053rihi8lqai3z837ddi441yl41lsg1zj9gl62s9vbjmq5l11fjh";
+    sha256 = "1xfqjxygf6r5wbf3brilx4d4hm0h518zaadmmzvkmbbz6w0fyl0k";
   };
 
-  vendorSha256 = "1ra4yfplmgzxzs1nlbm0izg339fjnkfrw071y8w4m6q6wnzdhljb";
+  vendorSha256 = "0ydyfdx9syrv719knwv64srfx4d1m9pzkivfc3q188bx5qx67pjw";
 
   doCheck = false;
 
@@ -31,9 +31,9 @@ buildGoModule rec {
     inherit (nixosTests) corerad;
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/mdlayher/corerad";
-    description = "CoreRAD extensible and observable IPv6 NDP RA daemon";
+    description = "Extensible and observable IPv6 NDP RA daemon";
     license = licenses.asl20;
     maintainers = with maintainers; [ mdlayher ];
   };
diff --git a/pkgs/tools/networking/corkscrew/default.nix b/pkgs/tools/networking/corkscrew/default.nix
index 9cfe65873ac..3aacb0da6a2 100644
--- a/pkgs/tools/networking/corkscrew/default.nix
+++ b/pkgs/tools/networking/corkscrew/default.nix
@@ -1,10 +1,11 @@
-{ stdenv, fetchurl, automake }:
+{ lib, stdenv, fetchurl, automake }:
 
 stdenv.mkDerivation rec {
-  name = "corkscrew-2.0";
+  pname = "corkscrew";
+  version = "2.0";
 
   src = fetchurl {
-    url = "http://agroman.net/corkscrew/${name}.tar.gz";
+    url = "http://agroman.net/corkscrew/corkscrew-${version}.tar.gz";
     sha256 = "0d0fcbb41cba4a81c4ab494459472086f377f9edb78a2e2238ed19b58956b0be";
   };
 
@@ -13,10 +14,10 @@ stdenv.mkDerivation rec {
     ln -sf ${automake}/share/automake-*/config.guess config.guess
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage    = "http://agroman.net/corkscrew/";
     description = "A tool for tunneling SSH through HTTP proxies";
-    license = stdenv.lib.licenses.gpl2;
+    license = lib.licenses.gpl2;
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/crackle/default.nix b/pkgs/tools/networking/crackle/default.nix
new file mode 100644
index 00000000000..00d0acd2aa9
--- /dev/null
+++ b/pkgs/tools/networking/crackle/default.nix
@@ -0,0 +1,24 @@
+{ lib, stdenv, fetchFromGitHub, libpcap, coreutils }:
+
+stdenv.mkDerivation {
+  pname = "crackle";
+  version = "unstable-2020-12-13";
+
+  src = fetchFromGitHub {
+    owner = "mikeryan";
+    repo = "crackle";
+    rev = "d83b4b6f4145ca53c46c36bbd7ccad751af76b75";
+    sha256 = "sha256-Dy4s/hr9ySrogltyk2GVsuAvwNF5+b6CDjaD+2FaPHA=";
+  };
+
+  buildInputs = [ libpcap ];
+
+  installFlags = [ "DESTDIR=$(out)" "PREFIX=" "INSTALL=${coreutils}/bin/install" ];
+
+  meta = with lib; {
+    description = "Crack and decrypt BLE encryption";
+    homepage = "https://github.com/mikeryan/crackle";
+    maintainers = with maintainers; [ fortuneteller2k ];
+    license = licenses.bsd2;
+  };
+}
diff --git a/pkgs/tools/networking/croc/default.nix b/pkgs/tools/networking/croc/default.nix
index ed4f7a5f704..001ee1c725a 100644
--- a/pkgs/tools/networking/croc/default.nix
+++ b/pkgs/tools/networking/croc/default.nix
@@ -1,29 +1,29 @@
-{ stdenv, buildGoModule, fetchFromGitHub }:
+{ lib, buildGoModule, fetchFromGitHub, callPackage }:
 
 buildGoModule rec {
   pname = "croc";
-  version = "8.0.13";
+  version = "9.2.0";
 
   src = fetchFromGitHub {
     owner = "schollz";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0vinccakinp996kqzry8irk7sf4djajxdfmpy982dl5y45491l4a";
+    sha256 = "sha256-wEgR/4t2NRqdlAtHS41sACSNZpDY+4IEaeftCgRpEEk=";
   };
 
-  vendorSha256 = "1d6gg7c0rb45zy9rilacn2xyr3kcb7acsh389hk6lppipmhpzr5a";
+  vendorSha256 = "sha256-YwMqIbxj6ldYBjLb3Gs96oOHM2Li4Qq8PEMeYtrcSnE=";
 
   doCheck = false;
 
   subPackages = [ "." ];
 
-  meta = with stdenv.lib; {
-    description =
-      "Easily and securely send things from one computer to another";
-    homepage = "https://github.com/schollz/croc";
-    license = licenses.mit;
-    maintainers = with maintainers; [ hugoreeves equirosa ];
-
+  passthru = {
+    tests = {
+      local-relay = callPackage ./test-local-relay.nix { };
+    };
+  };
+  meta = with lib; {
+    description = "Easily and securely send things from one computer to another";
     longDescription = ''
       Croc is a command line tool written in Go that allows any two computers to
       simply and securely transfer files and folders.
@@ -36,5 +36,8 @@ buildGoModule rec {
       - Allows resuming transfers that are interrupted
       - Does not require a server or port-forwarding
     '';
+    homepage = "https://github.com/schollz/croc";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hugoreeves equirosa SuperSandro2000 ];
   };
 }
diff --git a/pkgs/tools/networking/croc/test-local-relay.nix b/pkgs/tools/networking/croc/test-local-relay.nix
new file mode 100644
index 00000000000..bdcecb6b54c
--- /dev/null
+++ b/pkgs/tools/networking/croc/test-local-relay.nix
@@ -0,0 +1,19 @@
+{ stdenv, croc }:
+
+stdenv.mkDerivation {
+  name = "croc-test-local-relay";
+  meta.timeout = 300;
+  buildCommand = ''
+          HOME=$(mktemp -d)
+          # start a local relay
+          ${croc}/bin/croc relay --ports 11111,11112 &
+          # start sender in background
+          MSG="See you later, alligator!"
+          ${croc}/bin/croc --relay localhost:11111 send --code correct-horse-battery-staple --text "$MSG" &
+          # wait for things to settle
+          sleep 1
+          MSG2=$(${croc}/bin/croc --relay localhost:11111 --yes correct-horse-battery-staple)
+          # compare
+          [ "$MSG" = "$MSG2" ] && touch $out
+  '';
+}
diff --git a/pkgs/tools/networking/curl-unix-socket/default.nix b/pkgs/tools/networking/curl-unix-socket/default.nix
index b25e5dcab0b..ab4c3292ea5 100644
--- a/pkgs/tools/networking/curl-unix-socket/default.nix
+++ b/pkgs/tools/networking/curl-unix-socket/default.nix
@@ -1,4 +1,4 @@
-{ buildGoPackage, stdenv, fetchFromGitHub }:
+{ buildGoPackage, lib, fetchFromGitHub }:
 
 buildGoPackage rec {
   name = "curl-unix-socket-2015-04-10";
@@ -21,7 +21,7 @@ buildGoPackage rec {
     runHook postBuild
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Run HTTP requests over UNIX socket";
     license = licenses.mit;
     homepage = "https://github.com/Soulou/curl-unix-socket";
diff --git a/pkgs/tools/networking/curl/CVE-2021-22897.patch b/pkgs/tools/networking/curl/CVE-2021-22897.patch
new file mode 100644
index 00000000000..a4888879503
--- /dev/null
+++ b/pkgs/tools/networking/curl/CVE-2021-22897.patch
@@ -0,0 +1,64 @@
+From bbb71507b7bab52002f9b1e0880bed6a32834511 Mon Sep 17 00:00:00 2001
+From: Daniel Stenberg <daniel@haxx.se>
+Date: Fri, 23 Apr 2021 10:54:10 +0200
+Subject: [PATCH] schannel: don't use static to store selected ciphers
+
+CVE-2021-22897
+
+Bug: https://curl.se/docs/CVE-2021-22897.html
+---
+ lib/vtls/schannel.c | 9 +++++----
+ lib/vtls/schannel.h | 3 +++
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/lib/vtls/schannel.c b/lib/vtls/schannel.c
+index 8c25ac5dd5a5..dba7072273a9 100644
+--- a/lib/vtls/schannel.c
++++ b/lib/vtls/schannel.c
+@@ -328,12 +328,12 @@ get_alg_id_by_name(char *name)
+ }
+ 
+ static CURLcode
+-set_ssl_ciphers(SCHANNEL_CRED *schannel_cred, char *ciphers)
++set_ssl_ciphers(SCHANNEL_CRED *schannel_cred, char *ciphers,
++                int *algIds)
+ {
+   char *startCur = ciphers;
+   int algCount = 0;
+-  static ALG_ID algIds[45]; /*There are 45 listed in the MS headers*/
+-  while(startCur && (0 != *startCur) && (algCount < 45)) {
++  while(startCur && (0 != *startCur) && (algCount < NUMOF_CIPHERS)) {
+     long alg = strtol(startCur, 0, 0);
+     if(!alg)
+       alg = get_alg_id_by_name(startCur);
+@@ -593,7 +593,8 @@ schannel_connect_step1(struct Curl_easy *data, struct connectdata *conn,
+     }
+ 
+     if(SSL_CONN_CONFIG(cipher_list)) {
+-      result = set_ssl_ciphers(&schannel_cred, SSL_CONN_CONFIG(cipher_list));
++      result = set_ssl_ciphers(&schannel_cred, SSL_CONN_CONFIG(cipher_list),
++                               BACKEND->algIds);
+       if(CURLE_OK != result) {
+         failf(data, "Unable to set ciphers to passed via SSL_CONN_CONFIG");
+         return result;
+diff --git a/lib/vtls/schannel.h b/lib/vtls/schannel.h
+index 2952caa1a5a1..77853aa30f96 100644
+--- a/lib/vtls/schannel.h
++++ b/lib/vtls/schannel.h
+@@ -71,6 +71,8 @@ CURLcode Curl_verify_certificate(struct Curl_easy *data,
+ #endif
+ #endif
+ 
++#define NUMOF_CIPHERS 45 /* There are 45 listed in the MS headers */
++
+ struct Curl_schannel_cred {
+   CredHandle cred_handle;
+   TimeStamp time_stamp;
+@@ -102,6 +104,7 @@ struct ssl_backend_data {
+ #ifdef HAS_MANUAL_VERIFY_API
+   bool use_manual_cred_validation; /* true if manual cred validation is used */
+ #endif
++  ALG_ID algIds[NUMOF_CIPHERS];
+ };
+ #endif /* EXPOSE_SCHANNEL_INTERNAL_STRUCTS */
+ 
diff --git a/pkgs/tools/networking/curl/CVE-2021-22898.patch b/pkgs/tools/networking/curl/CVE-2021-22898.patch
new file mode 100644
index 00000000000..ea4d2cb37e8
--- /dev/null
+++ b/pkgs/tools/networking/curl/CVE-2021-22898.patch
@@ -0,0 +1,25 @@
+From 39ce47f219b09c380b81f89fe54ac586c8db6bde Mon Sep 17 00:00:00 2001
+From: Harry Sintonen <sintonen@iki.fi>
+Date: Fri, 7 May 2021 13:09:57 +0200
+Subject: [PATCH] telnet: check sscanf() for correct number of matches
+
+CVE-2021-22898
+
+Bug: https://curl.se/docs/CVE-2021-22898.html
+---
+ lib/telnet.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/telnet.c b/lib/telnet.c
+index 26e0658ba9cc..fdd137fb0c04 100644
+--- a/lib/telnet.c
++++ b/lib/telnet.c
+@@ -922,7 +922,7 @@ static void suboption(struct Curl_easy *data)
+         size_t tmplen = (strlen(v->data) + 1);
+         /* Add the variable only if it fits */
+         if(len + tmplen < (int)sizeof(temp)-6) {
+-          if(sscanf(v->data, "%127[^,],%127s", varname, varval)) {
++          if(sscanf(v->data, "%127[^,],%127s", varname, varval) == 2) {
+             msnprintf((char *)&temp[len], sizeof(temp) - len,
+                       "%c%s%c%s", CURL_NEW_ENV_VAR, varname,
+                       CURL_NEW_ENV_VALUE, varval);
diff --git a/pkgs/tools/networking/curl/CVE-2021-22901.patch b/pkgs/tools/networking/curl/CVE-2021-22901.patch
new file mode 100644
index 00000000000..6bd70aa41b1
--- /dev/null
+++ b/pkgs/tools/networking/curl/CVE-2021-22901.patch
@@ -0,0 +1,437 @@
+Based on upstream 7f4a9a9b2a49547eae24d2e19bc5c346e9026479, modified by ris to
+apply without 0c55fbab45bedb761766109d41c3da49c4bc66c6
+
+diff --git a/lib/multi.c b/lib/multi.c
+index 54365f399e9b..1b3e261c682a 100644
+--- a/lib/multi.c
++++ b/lib/multi.c
+@@ -878,8 +878,10 @@ bool Curl_multiplex_wanted(const struct Curl_multi *multi)
+ void Curl_detach_connnection(struct Curl_easy *data)
+ {
+   struct connectdata *conn = data->conn;
+-  if(conn)
++  if(conn) {
+     Curl_llist_remove(&conn->easyq, &data->conn_queue, NULL);
++    Curl_ssl_detach_conn(data, conn);
++  }
+   data->conn = NULL;
+ }
+ 
+@@ -896,6 +898,7 @@ void Curl_attach_connnection(struct Curl_easy *data,
+   data->conn = conn;
+   Curl_llist_insert_next(&conn->easyq, conn->easyq.tail, data,
+                          &data->conn_queue);
++  Curl_ssl_associate_conn(data, conn);
+ }
+ 
+ static int waitconnect_getsock(struct connectdata *conn,
+diff --git a/lib/vtls/gskit.c b/lib/vtls/gskit.c
+index c648f624579b..ca953769d1ba 100644
+--- a/lib/vtls/gskit.c
++++ b/lib/vtls/gskit.c
+@@ -1304,7 +1304,9 @@ const struct Curl_ssl Curl_ssl_gskit = {
+   Curl_none_set_engine_default,   /* set_engine_default */
+   Curl_none_engines_list,         /* engines_list */
+   Curl_none_false_start,          /* false_start */
+-  NULL                            /* sha256sum */
++  NULL,                           /* sha256sum */
++  NULL,                           /* associate_connection */
++  NULL                            /* disassociate_connection */
+ };
+ 
+ #endif /* USE_GSKIT */
+diff --git a/lib/vtls/gtls.c b/lib/vtls/gtls.c
+index a10c0dbcca05..ecde5c44deeb 100644
+--- a/lib/vtls/gtls.c
++++ b/lib/vtls/gtls.c
+@@ -1656,7 +1656,9 @@ const struct Curl_ssl Curl_ssl_gnutls = {
+   Curl_none_set_engine_default,  /* set_engine_default */
+   Curl_none_engines_list,        /* engines_list */
+   Curl_none_false_start,         /* false_start */
+-  gtls_sha256sum                 /* sha256sum */
++  gtls_sha256sum,                /* sha256sum */
++  NULL,                          /* associate_connection */
++  NULL                           /* disassociate_connection */
+ };
+ 
+ #endif /* USE_GNUTLS */
+diff --git a/lib/vtls/mbedtls.c b/lib/vtls/mbedtls.c
+index ca77de58667c..3a0be0f04b4f 100644
+--- a/lib/vtls/mbedtls.c
++++ b/lib/vtls/mbedtls.c
+@@ -1093,7 +1093,9 @@ const struct Curl_ssl Curl_ssl_mbedtls = {
+   Curl_none_set_engine_default,     /* set_engine_default */
+   Curl_none_engines_list,           /* engines_list */
+   Curl_none_false_start,            /* false_start */
+-  mbedtls_sha256sum                 /* sha256sum */
++  mbedtls_sha256sum,                /* sha256sum */
++  NULL,                             /* associate_connection */
++  NULL                              /* disassociate_connection */
+ };
+ 
+ #endif /* USE_MBEDTLS */
+diff --git a/lib/vtls/mesalink.c b/lib/vtls/mesalink.c
+index f16c77c27fe0..bf8600d3230b 100644
+--- a/lib/vtls/mesalink.c
++++ b/lib/vtls/mesalink.c
+@@ -666,7 +666,9 @@ const struct Curl_ssl Curl_ssl_mesalink = {
+   Curl_none_set_engine_default,  /* set_engine_default */
+   Curl_none_engines_list,        /* engines_list */
+   Curl_none_false_start,         /* false_start */
+-  NULL                           /* sha256sum */
++  NULL,                          /* sha256sum */
++  NULL,                          /* associate_connection */
++  NULL                           /* disassociate_connection */
+ };
+ 
+ #endif
+diff --git a/lib/vtls/nss.c b/lib/vtls/nss.c
+index 2aa4bdaa134f..1582b1e580a9 100644
+--- a/lib/vtls/nss.c
++++ b/lib/vtls/nss.c
+@@ -2465,7 +2465,9 @@ const struct Curl_ssl Curl_ssl_nss = {
+   Curl_none_set_engine_default, /* set_engine_default */
+   Curl_none_engines_list,       /* engines_list */
+   nss_false_start,              /* false_start */
+-  nss_sha256sum                 /* sha256sum */
++  nss_sha256sum,                /* sha256sum */
++  NULL,                         /* associate_connection */
++  NULL                          /* disassociate_connection */
+ };
+ 
+ #endif /* USE_NSS */
+diff --git a/lib/vtls/openssl.c b/lib/vtls/openssl.c
+index 1521600dd5f6..ebd7abc3b4ac 100644
+--- a/lib/vtls/openssl.c
++++ b/lib/vtls/openssl.c
+@@ -240,6 +240,10 @@ struct ssl_backend_data {
+ #endif
+ };
+ 
++static void ossl_associate_connection(struct Curl_easy *data,
++                                      struct connectdata *conn,
++                                      int sockindex);
++
+ /*
+  * Number of bytes to read from the random number seed file. This must be
+  * a finite value (because some entropy "files" like /dev/urandom have
+@@ -2581,6 +2585,7 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
+   curl_socket_t sockfd = conn->sock[sockindex];
+   struct ssl_connect_data *connssl = &conn->ssl[sockindex];
+   ctx_option_t ctx_options = 0;
++  void *ssl_sessionid = NULL;
+ 
+ #ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME
+   bool sni;
+@@ -3225,46 +3230,23 @@ static CURLcode ossl_connect_step1(struct Curl_easy *data,
+   }
+ #endif
+ 
+-  /* Check if there's a cached ID we can/should use here! */
+-  if(SSL_SET_OPTION(primary.sessionid)) {
+-    void *ssl_sessionid = NULL;
+-    int data_idx = ossl_get_ssl_data_index();
+-    int connectdata_idx = ossl_get_ssl_conn_index();
+-    int sockindex_idx = ossl_get_ssl_sockindex_index();
+-    int proxy_idx = ossl_get_proxy_index();
+-
+-    if(data_idx >= 0 && connectdata_idx >= 0 && sockindex_idx >= 0 &&
+-       proxy_idx >= 0) {
+-      /* Store the data needed for the "new session" callback.
+-       * The sockindex is stored as a pointer to an array element. */
+-      SSL_set_ex_data(backend->handle, data_idx, data);
+-      SSL_set_ex_data(backend->handle, connectdata_idx, conn);
+-      SSL_set_ex_data(backend->handle, sockindex_idx, conn->sock + sockindex);
+-#ifndef CURL_DISABLE_PROXY
+-      SSL_set_ex_data(backend->handle, proxy_idx, SSL_IS_PROXY() ? (void *) 1:
+-                      NULL);
+-#else
+-      SSL_set_ex_data(backend->handle, proxy_idx, NULL);
+-#endif
+-
+-    }
++  ossl_associate_connection(data, conn, sockindex);
+ 
+-    Curl_ssl_sessionid_lock(data);
+-    if(!Curl_ssl_getsessionid(data, conn, SSL_IS_PROXY() ? TRUE : FALSE,
+-                              &ssl_sessionid, NULL, sockindex)) {
+-      /* we got a session id, use it! */
+-      if(!SSL_set_session(backend->handle, ssl_sessionid)) {
+-        Curl_ssl_sessionid_unlock(data);
+-        failf(data, "SSL: SSL_set_session failed: %s",
+-              ossl_strerror(ERR_get_error(), error_buffer,
+-                            sizeof(error_buffer)));
+-        return CURLE_SSL_CONNECT_ERROR;
+-      }
+-      /* Informational message */
+-      infof(data, "SSL re-using session ID\n");
++  Curl_ssl_sessionid_lock(data);
++  if(!Curl_ssl_getsessionid(data, conn, SSL_IS_PROXY() ? TRUE : FALSE,
++                            &ssl_sessionid, NULL, sockindex)) {
++    /* we got a session id, use it! */
++    if(!SSL_set_session(backend->handle, ssl_sessionid)) {
++      Curl_ssl_sessionid_unlock(data);
++      failf(data, "SSL: SSL_set_session failed: %s",
++            ossl_strerror(ERR_get_error(), error_buffer,
++                          sizeof(error_buffer)));
++      return CURLE_SSL_CONNECT_ERROR;
+     }
+-    Curl_ssl_sessionid_unlock(data);
++    /* Informational message */
++    infof(data, "SSL re-using session ID\n");
+   }
++  Curl_ssl_sessionid_unlock(data);
+ 
+ #ifndef CURL_DISABLE_PROXY
+   if(conn->proxy_ssl[sockindex].use) {
+@@ -4498,6 +4480,90 @@ static void *ossl_get_internals(struct ssl_connect_data *connssl,
+          (void *)backend->ctx : (void *)backend->handle;
+ }
+ 
++static void ossl_associate_connection(struct Curl_easy *data,
++                                      struct connectdata *conn,
++                                      int sockindex)
++{
++  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
++  struct ssl_backend_data *backend = connssl->backend;
++
++  /* If we don't have SSL context, do nothing. */
++  if(!backend->handle)
++    return;
++
++  if(SSL_SET_OPTION(primary.sessionid)) {
++    int data_idx = ossl_get_ssl_data_index();
++    int connectdata_idx = ossl_get_ssl_conn_index();
++    int sockindex_idx = ossl_get_ssl_sockindex_index();
++    int proxy_idx = ossl_get_proxy_index();
++
++    if(data_idx >= 0 && connectdata_idx >= 0 && sockindex_idx >= 0 &&
++       proxy_idx >= 0) {
++      /* Store the data needed for the "new session" callback.
++       * The sockindex is stored as a pointer to an array element. */
++      SSL_set_ex_data(backend->handle, data_idx, data);
++      SSL_set_ex_data(backend->handle, connectdata_idx, conn);
++      SSL_set_ex_data(backend->handle, sockindex_idx, conn->sock + sockindex);
++#ifndef CURL_DISABLE_PROXY
++      SSL_set_ex_data(backend->handle, proxy_idx, SSL_IS_PROXY() ? (void *) 1:
++                      NULL);
++#else
++      SSL_set_ex_data(backend->handle, proxy_idx, NULL);
++#endif
++    }
++  }
++}
++
++/*
++ * Starting with TLS 1.3, the ossl_new_session_cb callback gets called after
++ * the handshake. If the transfer that sets up the callback gets killed before
++ * this callback arrives, we must make sure to properly clear the data to
++ * avoid UAF problems. A future optimization could be to instead store another
++ * transfer that might still be using the same connection.
++ */
++
++static void ossl_disassociate_connection(struct Curl_easy *data,
++                                         int sockindex)
++{
++  struct connectdata *conn = data->conn;
++  struct ssl_connect_data *connssl = &conn->ssl[sockindex];
++  struct ssl_backend_data *backend = connssl->backend;
++
++  /* If we don't have SSL context, do nothing. */
++  if(!backend->handle)
++    return;
++
++  if(SSL_SET_OPTION(primary.sessionid)) {
++    bool isproxy = FALSE;
++    bool incache;
++    void *old_ssl_sessionid = NULL;
++    int data_idx = ossl_get_ssl_data_index();
++    int connectdata_idx = ossl_get_ssl_conn_index();
++    int sockindex_idx = ossl_get_ssl_sockindex_index();
++    int proxy_idx = ossl_get_proxy_index();
++
++    if(data_idx >= 0 && connectdata_idx >= 0 && sockindex_idx >= 0 &&
++       proxy_idx >= 0) {
++      /* Invalidate the session cache entry, if any */
++      isproxy = SSL_get_ex_data(backend->handle, proxy_idx) ? TRUE : FALSE;
++
++      /* Disable references to data in "new session" callback to avoid
++       * accessing a stale pointer. */
++      SSL_set_ex_data(backend->handle, data_idx, NULL);
++      SSL_set_ex_data(backend->handle, connectdata_idx, NULL);
++      SSL_set_ex_data(backend->handle, sockindex_idx, NULL);
++      SSL_set_ex_data(backend->handle, proxy_idx, NULL);
++    }
++
++    Curl_ssl_sessionid_lock(data);
++    incache = !(Curl_ssl_getsessionid(data, conn, isproxy,
++                                      &old_ssl_sessionid, NULL, sockindex));
++    if(incache)
++      Curl_ssl_delsessionid(data, old_ssl_sessionid);
++    Curl_ssl_sessionid_unlock(data);
++  }
++}
++
+ const struct Curl_ssl Curl_ssl_openssl = {
+   { CURLSSLBACKEND_OPENSSL, "openssl" }, /* info */
+ 
+@@ -4533,10 +4599,12 @@ const struct Curl_ssl Curl_ssl_openssl = {
+   ossl_engines_list,        /* engines_list */
+   Curl_none_false_start,    /* false_start */
+ #if (OPENSSL_VERSION_NUMBER >= 0x0090800fL) && !defined(OPENSSL_NO_SHA256)
+-  ossl_sha256sum            /* sha256sum */
++  ossl_sha256sum,           /* sha256sum */
+ #else
+-  NULL                      /* sha256sum */
++  NULL,                     /* sha256sum */
+ #endif
++  ossl_associate_connection, /* associate_connection */
++  ossl_disassociate_connection /* disassociate_connection */
+ };
+ 
+ #endif /* USE_OPENSSL */
+diff --git a/lib/vtls/rustls.c b/lib/vtls/rustls.c
+index 9dfbd2c3c4c2..161f3bf51d75 100644
+--- a/lib/vtls/rustls.c
++++ b/lib/vtls/rustls.c
+@@ -604,7 +604,9 @@ const struct Curl_ssl Curl_ssl_rustls = {
+   Curl_none_set_engine_default,    /* set_engine_default */
+   Curl_none_engines_list,          /* engines_list */
+   Curl_none_false_start,           /* false_start */
+-  NULL                             /* sha256sum */
++  NULL,                            /* sha256sum */
++  NULL,                            /* associate_connection */
++  NULL                             /* disassociate_connection */
+ };
+ 
+ #endif /* USE_RUSTLS */
+diff --git a/lib/vtls/schannel.c b/lib/vtls/schannel.c
+index dba7072273a9..2bcf11db2576 100644
+--- a/lib/vtls/schannel.c
++++ b/lib/vtls/schannel.c
+@@ -329,7 +329,7 @@ get_alg_id_by_name(char *name)
+ 
+ static CURLcode
+ set_ssl_ciphers(SCHANNEL_CRED *schannel_cred, char *ciphers,
+-                int *algIds)
++                ALG_ID *algIds)
+ {
+   char *startCur = ciphers;
+   int algCount = 0;
+@@ -2433,7 +2433,9 @@ const struct Curl_ssl Curl_ssl_schannel = {
+   Curl_none_set_engine_default,      /* set_engine_default */
+   Curl_none_engines_list,            /* engines_list */
+   Curl_none_false_start,             /* false_start */
+-  schannel_sha256sum                 /* sha256sum */
++  schannel_sha256sum,                /* sha256sum */
++  NULL,                              /* associate_connection */
++  NULL                               /* disassociate_connection */
+ };
+ 
+ #endif /* USE_SCHANNEL */
+diff --git a/lib/vtls/sectransp.c b/lib/vtls/sectransp.c
+index 4276b89cfb3a..8b1e84ed7715 100644
+--- a/lib/vtls/sectransp.c
++++ b/lib/vtls/sectransp.c
+@@ -3453,6 +3453,8 @@ const struct Curl_ssl Curl_ssl_sectransp = {
+   Curl_none_engines_list,             /* engines_list */
+   sectransp_false_start,              /* false_start */
+   sectransp_sha256sum                 /* sha256sum */
++  NULL,                               /* associate_connection */
++  NULL                                /* disassociate_connection */
+ };
+ 
+ #ifdef __clang__
+diff --git a/lib/vtls/vtls.c b/lib/vtls/vtls.c
+index d63fd5c76386..65f4f773dd63 100644
+--- a/lib/vtls/vtls.c
++++ b/lib/vtls/vtls.c
+@@ -586,6 +586,25 @@ CURLcode Curl_ssl_addsessionid(struct Curl_easy *data,
+   return CURLE_OK;
+ }
+ 
++void Curl_ssl_associate_conn(struct Curl_easy *data,
++                             struct connectdata *conn)
++{
++  if(Curl_ssl->associate_connection) {
++    Curl_ssl->associate_connection(data, conn, FIRSTSOCKET);
++    if(conn->sock[SECONDARYSOCKET] && conn->bits.sock_accepted)
++      Curl_ssl->associate_connection(data, conn, SECONDARYSOCKET);
++  }
++}
++
++void Curl_ssl_detach_conn(struct Curl_easy *data,
++                          struct connectdata *conn)
++{
++  if(Curl_ssl->disassociate_connection) {
++    Curl_ssl->disassociate_connection(data, FIRSTSOCKET);
++    if(conn->sock[SECONDARYSOCKET] && conn->bits.sock_accepted)
++      Curl_ssl->disassociate_connection(data, SECONDARYSOCKET);
++  }
++}
+ 
+ void Curl_ssl_close_all(struct Curl_easy *data)
+ {
+@@ -1214,7 +1233,9 @@ static const struct Curl_ssl Curl_ssl_multi = {
+   Curl_none_set_engine_default,      /* set_engine_default */
+   Curl_none_engines_list,            /* engines_list */
+   Curl_none_false_start,             /* false_start */
+-  NULL                               /* sha256sum */
++  NULL,                              /* sha256sum */
++  NULL,                              /* associate_connection */
++  NULL                               /* disassociate_connection */
+ };
+ 
+ const struct Curl_ssl *Curl_ssl =
+diff --git a/lib/vtls/vtls.h b/lib/vtls/vtls.h
+index a22d526ca810..7f93e7aedb21 100644
+--- a/lib/vtls/vtls.h
++++ b/lib/vtls/vtls.h
+@@ -84,6 +84,11 @@ struct Curl_ssl {
+   bool (*false_start)(void);
+   CURLcode (*sha256sum)(const unsigned char *input, size_t inputlen,
+                     unsigned char *sha256sum, size_t sha256sumlen);
++
++  void (*associate_connection)(struct Curl_easy *data,
++                               struct connectdata *conn,
++                               int sockindex);
++  void (*disassociate_connection)(struct Curl_easy *data, int sockindex);
+ };
+ 
+ #ifdef USE_SSL
+@@ -283,6 +288,11 @@ bool Curl_ssl_cert_status_request(void);
+ 
+ bool Curl_ssl_false_start(void);
+ 
++void Curl_ssl_associate_conn(struct Curl_easy *data,
++                             struct connectdata *conn);
++void Curl_ssl_detach_conn(struct Curl_easy *data,
++                          struct connectdata *conn);
++
+ #define SSL_SHUTDOWN_TIMEOUT 10000 /* ms */
+ 
+ #else /* if not USE_SSL */
+@@ -309,6 +319,8 @@ bool Curl_ssl_false_start(void);
+ #define Curl_ssl_cert_status_request() FALSE
+ #define Curl_ssl_false_start() FALSE
+ #define Curl_ssl_tls13_ciphersuites() FALSE
++#define Curl_ssl_associate_conn(a,b) Curl_nop_stmt
++#define Curl_ssl_detach_conn(a,b) Curl_nop_stmt
+ #endif
+ 
+ #endif /* HEADER_CURL_VTLS_H */
+diff --git a/lib/vtls/wolfssl.c b/lib/vtls/wolfssl.c
+index 02fcd236697e..60e27e366252 100644
+--- a/lib/vtls/wolfssl.c
++++ b/lib/vtls/wolfssl.c
+@@ -1125,7 +1125,9 @@ const struct Curl_ssl Curl_ssl_wolfssl = {
+   Curl_none_set_engine_default,    /* set_engine_default */
+   Curl_none_engines_list,          /* engines_list */
+   Curl_none_false_start,           /* false_start */
+-  wolfssl_sha256sum                /* sha256sum */
++  wolfssl_sha256sum,               /* sha256sum */
++  NULL,                            /* associate_connection */
++  NULL                             /* disassociate_connection */
+ };
+ 
+ #endif
diff --git a/pkgs/tools/networking/curl/default.nix b/pkgs/tools/networking/curl/default.nix
index 9a8a245a790..984a6ecaaef 100644
--- a/pkgs/tools/networking/curl/default.nix
+++ b/pkgs/tools/networking/curl/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchurl, pkgconfig, perl
+{ stdenv, lib, fetchurl, pkg-config, perl
 , http2Support ? true, nghttp2
 , idnSupport ? false, libidn ? null
 , ldapSupport ? false, openldap ? null
@@ -7,7 +7,15 @@
 , gnutlsSupport ? false, gnutls ? null
 , wolfsslSupport ? false, wolfssl ? null
 , scpSupport ? zlibSupport && !stdenv.isSunOS && !stdenv.isCygwin, libssh2 ? null
-, gssSupport ? !stdenv.hostPlatform.isWindows, libkrb5 ? null
+, gssSupport ? with stdenv.hostPlatform; !(
+    !isWindows &&
+    # a very sad story re static: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=439039
+    !isStatic &&
+    # the "mig" tool does not configure its compiler correctly. This could be
+    # fixed in mig, but losing gss support on cross compilation to darwin is
+    # not worth the effort.
+    !(isDarwin && (stdenv.buildPlatform != stdenv.hostPlatform))
+  ), libkrb5 ? null
 , c-aresSupport ? false, c-ares ? null
 , brotliSupport ? false, brotli ? null
 }:
@@ -34,27 +42,33 @@ assert gssSupport -> libkrb5 != null;
 
 stdenv.mkDerivation rec {
   pname = "curl";
-  version = "7.71.1";
+  version = "7.76.1";
 
   src = fetchurl {
     urls = [
       "https://curl.haxx.se/download/${pname}-${version}.tar.bz2"
       "https://github.com/curl/curl/releases/download/${lib.replaceStrings ["."] ["_"] pname}-${version}/${pname}-${version}.tar.bz2"
     ];
-    sha256 = "097jnkbayscifgzgl7v8kwd7m2crpvbyaazac3ab1yal0pca8llx";
+    sha256 = "1scmfrp0c27pkd7yva9k50miprjpsyfbb33apx72qc9igm6ii3ks";
   };
 
+  patches = [
+    ./CVE-2021-22897.patch
+    ./CVE-2021-22898.patch
+    ./CVE-2021-22901.patch
+  ];
+
   outputs = [ "bin" "dev" "out" "man" "devdoc" ];
   separateDebugInfo = stdenv.isLinux;
 
   enableParallelBuilding = true;
 
-  nativeBuildInputs = [ pkgconfig perl ];
+  nativeBuildInputs = [ pkg-config perl ];
 
   # Zlib and OpenSSL must be propagated because `libcurl.la' contains
   # "-lz -lssl", which aren't necessary direct build inputs of
   # applications that use Curl.
-  propagatedBuildInputs = with stdenv.lib;
+  propagatedBuildInputs = with lib;
     optional http2Support nghttp2 ++
     optional idnSupport libidn ++
     optional ldapSupport openldap ++
@@ -89,13 +103,13 @@ stdenv.mkDerivation rec {
       ( if idnSupport then "--with-libidn=${libidn.dev}" else "--without-libidn" )
       ( if brotliSupport then "--with-brotli" else "--without-brotli" )
     ]
-    ++ stdenv.lib.optional wolfsslSupport "--with-wolfssl=${wolfssl.dev}"
-    ++ stdenv.lib.optional c-aresSupport "--enable-ares=${c-ares}"
-    ++ stdenv.lib.optional gssSupport "--with-gssapi=${libkrb5.dev}"
+    ++ lib.optional wolfsslSupport "--with-wolfssl=${wolfssl.dev}"
+    ++ lib.optional c-aresSupport "--enable-ares=${c-ares}"
+    ++ lib.optional gssSupport "--with-gssapi=${libkrb5.dev}"
        # For the 'urandom', maybe it should be a cross-system option
-    ++ stdenv.lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
+    ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
        "--with-random=/dev/urandom"
-    ++ stdenv.lib.optionals stdenv.hostPlatform.isWindows [
+    ++ lib.optionals stdenv.hostPlatform.isWindows [
       "--disable-shared"
       "--enable-static"
     ];
@@ -110,9 +124,9 @@ stdenv.mkDerivation rec {
 
     # Install completions
     make -C scripts install
-  '' + stdenv.lib.optionalString scpSupport ''
+  '' + lib.optionalString scpSupport ''
     sed '/^dependency_libs/s|${libssh2.dev}|${libssh2.out}|' -i "$out"/lib/*.la
-  '' + stdenv.lib.optionalString gnutlsSupport ''
+  '' + lib.optionalString gnutlsSupport ''
     ln $out/lib/libcurl.so $out/lib/libcurl-gnutls.so
     ln $out/lib/libcurl.so $out/lib/libcurl-gnutls.so.4
     ln $out/lib/libcurl.so $out/lib/libcurl-gnutls.so.4.4.0
@@ -122,7 +136,7 @@ stdenv.mkDerivation rec {
     inherit sslSupport openssl;
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A command line tool for transferring files with URL syntax";
     homepage    = "https://curl.haxx.se/";
     license = licenses.curl;
diff --git a/pkgs/tools/networking/curlie/default.nix b/pkgs/tools/networking/curlie/default.nix
index b2c4d46a8ce..9d3e4025a99 100644
--- a/pkgs/tools/networking/curlie/default.nix
+++ b/pkgs/tools/networking/curlie/default.nix
@@ -2,21 +2,21 @@
 
 buildGoModule rec {
   pname = "curlie";
-  version = "1.3.1";
+  version = "1.6.2";
 
   src= fetchFromGitHub {
     owner = "rs";
     repo = pname;
     rev = "v${version}";
-    sha256 = "09v8alrbw6qva3q3bcqxnyjm7svagfxqvhdff7cqf5pbmkxnhln9";
+    sha256 = "sha256-2CZpqc1MnAY6M1UFakKLaqGjaifw+7bN4hxc0jWgSps=";
   };
 
-  vendorSha256 = "1mxgf004czf65a2mv99gfp27g98xhllmfcz4ynfv66nfkbfz6a8n";
+  vendorSha256 = "sha256-tYZtnD7RUurhl8yccXlTIvOxybBJITM+it1ollYJ1OI=";
 
   doCheck = false;
 
   meta = with lib; {
-    description = "Curlie is a frontend to curl that adds the ease of use of httpie, without compromising on features and performance";
+    description = "Frontend to curl that adds the ease of use of httpie, without compromising on features and performance";
     homepage = "https://curlie.io/";
     maintainers = with maintainers; [ ma27 ];
     license = licenses.mit;
diff --git a/pkgs/tools/networking/darkstat/default.nix b/pkgs/tools/networking/darkstat/default.nix
index af15e70aa86..04cab365578 100644
--- a/pkgs/tools/networking/darkstat/default.nix
+++ b/pkgs/tools/networking/darkstat/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libpcap, zlib }:
+{ lib, stdenv, fetchurl, libpcap, zlib }:
 
 stdenv.mkDerivation rec {
   version = "3.0.719";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Network statistics web interface";
     longDescription = ''
       Captures network traffic, calculates statistics about usage, and serves
diff --git a/pkgs/tools/networking/davix/default.nix b/pkgs/tools/networking/davix/default.nix
index 797791e1c0b..d9f36845559 100644
--- a/pkgs/tools/networking/davix/default.nix
+++ b/pkgs/tools/networking/davix/default.nix
@@ -1,21 +1,21 @@
-{ stdenv, fetchurl, cmake, pkgconfig, openssl, libxml2, boost, python3, libuuid }:
+{ lib, stdenv, fetchurl, cmake, pkg-config, openssl, libxml2, boost, python3, libuuid }:
 
 stdenv.mkDerivation rec {
   version = "0.7.6";
   pname = "davix";
-  nativeBuildInputs = [ cmake pkgconfig python3 ];
+  nativeBuildInputs = [ cmake pkg-config python3 ];
   buildInputs = [ openssl libxml2 boost libuuid ];
 
-  # using the url below since the 0.7.6 release did carry a broken CMake file,
-  # supposedly fixed in the next release
-  # https://github.com/cern-fts/davix/issues/40
+  # using the url below since the github release page states
+  # "please ignore the GitHub-generated tarballs, as they are incomplete"
+  # https://github.com/cern-fts/davix/releases/tag/R_0_7_6
   src = fetchurl {
-    url = "http://grid-deployment.web.cern.ch/grid-deployment/dms/lcgutil/tar/davix/${version}/davix-${version}.tar.gz";
+    url = "https://github.com/cern-fts/${pname}/releases/download/R_${lib.replaceStrings ["."] ["_"] version}/${pname}-${version}.tar.gz";
     sha256 = "0wq66spnr616cns72f9dvr2xfvkdvfqqmc6d7dx29fpp57zzvrx2";
   };
 
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Toolkit for Http-based file management";
 
     longDescription = "Davix is a toolkit designed for file
diff --git a/pkgs/tools/networking/dd-agent/5.nix b/pkgs/tools/networking/dd-agent/5.nix
index dd206eb8c97..744fd482ab1 100644
--- a/pkgs/tools/networking/dd-agent/5.nix
+++ b/pkgs/tools/networking/dd-agent/5.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchFromGitHub, python
+{ lib, stdenv, fetchFromGitHub, python2
 , unzip, makeWrapper }:
 let
-  python' = python.override {
+  python' = python2.override {
     packageOverrides = self: super: {
       docker = self.buildPythonPackage rec {
         name = "docker-${version}";
@@ -17,12 +17,11 @@ let
         propagatedBuildInputs = with self; [
           six
           requests
-          websocket_client
+          websocket-client
           ipaddress
-          backports_ssl_match_hostname
           docker_pycreds
           uptime
-        ];
+        ] ++ lib.optionals (self.pythonOlder "3.7") [ backports_ssl_match_hostname ];
 
         # due to flake8
         doCheck = false;
@@ -51,8 +50,8 @@ in stdenv.mkDerivation rec {
 
   patches = [ ./40103-iostat-fix.patch ];
 
+  nativeBuildInputs = [ unzip ];
   buildInputs = [
-    unzip
     makeWrapper
   ] ++ (with python'.pkgs; [
     requests
@@ -83,7 +82,7 @@ in stdenv.mkDerivation rec {
 
     cat > $out/bin/dd-jmxfetch <<EOF
     #!/usr/bin/env bash
-    exec ${python}/bin/python $out/agent/jmxfetch.py $@
+    exec ${python'.interpreter} $out/agent/jmxfetch.py $@
     EOF
     chmod a+x $out/bin/dd-jmxfetch
 
@@ -105,8 +104,8 @@ in stdenv.mkDerivation rec {
       -- v5 Python implementation
     '';
     homepage    = "https://www.datadoghq.com";
-    license     = stdenv.lib.licenses.bsd3;
-    platforms   = stdenv.lib.platforms.all;
-    maintainers = with stdenv.lib.maintainers; [ thoughtpolice domenkozar ];
+    license     = lib.licenses.bsd3;
+    platforms   = lib.platforms.all;
+    maintainers = with lib.maintainers; [ thoughtpolice domenkozar ];
   };
 }
diff --git a/pkgs/tools/networking/dd-agent/datadog-agent-deps.nix b/pkgs/tools/networking/dd-agent/datadog-agent-deps.nix
index 1121ec0405c..fb6f66b5a4e 100644
--- a/pkgs/tools/networking/dd-agent/datadog-agent-deps.nix
+++ b/pkgs/tools/networking/dd-agent/datadog-agent-deps.nix
@@ -1350,4 +1350,4 @@
       sha256 = "1wpqijsvf8s4iqjrrzgbxi3gay6vaglscyq14vxma4iacg8fx1jk";
     };
   }
-]
\ No newline at end of file
+]
diff --git a/pkgs/tools/networking/dd-agent/datadog-agent.nix b/pkgs/tools/networking/dd-agent/datadog-agent.nix
index c3d07ddca95..ad37245d57c 100644
--- a/pkgs/tools/networking/dd-agent/datadog-agent.nix
+++ b/pkgs/tools/networking/dd-agent/datadog-agent.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, buildGoPackage, makeWrapper, pythonPackages, pkgconfig, systemd, hostname, extraTags ? [] }:
+{ lib, fetchFromGitHub, buildGoPackage, makeWrapper, pythonPackages, pkg-config, systemd, hostname, extraTags ? [] }:
 
 let
   # keep this in sync with github.com/DataDog/agent-payload dependency
@@ -28,13 +28,13 @@ in buildGoPackage rec {
   goPackagePath = "github.com/${owner}/${repo}";
 
 
-  nativeBuildInputs = [ pkgconfig makeWrapper ];
+  nativeBuildInputs = [ pkg-config makeWrapper ];
   buildInputs = [ systemd ];
   PKG_CONFIG_PATH = "${python}/lib/pkgconfig";
 
 
   preBuild = let
-    ldFlags = stdenv.lib.concatStringsSep " " [
+    ldFlags = lib.concatStringsSep " " [
       "-X ${goPackagePath}/pkg/version.Commit=${src.rev}"
       "-X ${goPackagePath}/pkg/version.AgentVersion=${version}"
       "-X ${goPackagePath}/pkg/serializer.AgentPayloadVersion=${payloadVersion}"
@@ -65,10 +65,10 @@ in buildGoPackage rec {
 
     wrapProgram "$out/bin/agent" \
       --set PYTHONPATH "$out/${python.sitePackages}" \
-      --prefix LD_LIBRARY_PATH : ${systemd.lib}/lib
+      --prefix LD_LIBRARY_PATH : ${lib.getLib systemd}/lib
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = ''
       Event collector for the DataDog analysis service
       -- v6 new golang implementation.
diff --git a/pkgs/tools/networking/dd-agent/datadog-process-agent-deps.nix b/pkgs/tools/networking/dd-agent/datadog-process-agent-deps.nix
index 2a81702feee..4533b31dd23 100644
--- a/pkgs/tools/networking/dd-agent/datadog-process-agent-deps.nix
+++ b/pkgs/tools/networking/dd-agent/datadog-process-agent-deps.nix
@@ -666,4 +666,4 @@
       sha256 = "0bcsb7s4wlmrja35zvz4s10cf3w7dfn2ckjv6apxd1ykdjxnsk71";
     };
   }
-]
\ No newline at end of file
+]
diff --git a/pkgs/tools/networking/dd-agent/datadog-process-agent.nix b/pkgs/tools/networking/dd-agent/datadog-process-agent.nix
index a59f70f633b..e2c497dad40 100644
--- a/pkgs/tools/networking/dd-agent/datadog-process-agent.nix
+++ b/pkgs/tools/networking/dd-agent/datadog-process-agent.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, buildGoPackage  }:
+{ lib, fetchFromGitHub, buildGoPackage  }:
 
 buildGoPackage rec {
   pname = "datadog-process-agent";
@@ -15,7 +15,7 @@ buildGoPackage rec {
   goDeps = ./datadog-process-agent-deps.nix;
   goPackagePath = "github.com/${owner}/${repo}";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Live process collector for the DataDog Agent v6";
     homepage    = "https://www.datadoghq.com";
     license     = licenses.bsd3;
diff --git a/pkgs/tools/networking/dd-agent/integrations-core.nix b/pkgs/tools/networking/dd-agent/integrations-core.nix
index edf7a8faaf8..e466be816e4 100644
--- a/pkgs/tools/networking/dd-agent/integrations-core.nix
+++ b/pkgs/tools/networking/dd-agent/integrations-core.nix
@@ -75,7 +75,7 @@ let
     mongo    = (ps: [ ps.pymongo ]);
     network  = (ps: [ ps.psutil ]);
     nginx    = (ps: []);
-    postgres = (ps: with ps; [ pg8000_1_12 psycopg2 ]);
+    postgres = (ps: with ps; [ pg8000 psycopg2 ]);
   };
 
   # All integrations (default + extra):
diff --git a/pkgs/tools/networking/ddclient/default.nix b/pkgs/tools/networking/ddclient/default.nix
index 375898913c8..e4bb685b518 100644
--- a/pkgs/tools/networking/ddclient/default.nix
+++ b/pkgs/tools/networking/ddclient/default.nix
@@ -1,26 +1,28 @@
-{ stdenv, fetchurl, perlPackages, iproute, perl }:
+{ lib, fetchFromGitHub, perlPackages, iproute2, perl }:
 
 perlPackages.buildPerlPackage rec {
   pname = "ddclient";
-  version = "3.9.0";
+  version = "3.9.1";
 
-  src = fetchurl {
-    url = "mirror://sourceforge/ddclient/${pname}-${version}.tar.gz";
-    sha256 = "0fwyhab8yga2yi1kdfkbqxa83wxhwpagmj1w1mwkg2iffh1fjjlw";
+  src = fetchFromGitHub {
+    owner = "ddclient";
+    repo = "ddclient";
+    rev = "v${version}";
+    sha256 = "0hf377g4j9r9sac75xp17nk2h58mazswz4vkg4g2gl2yyhvzq91w";
   };
 
   # perl packages by default get devdoc which isn't present
   outputs = [ "out" ];
 
-  buildInputs = with perlPackages; [ IOSocketSSL DigestSHA1 DataValidateIP JSONPP ];
+  buildInputs = with perlPackages; [ IOSocketSSL DigestSHA1 DataValidateIP JSONPP IOSocketInet6 ];
 
   # Use iproute2 instead of ifconfig
   preConfigure = ''
     touch Makefile.PL
     substituteInPlace ddclient \
       --replace 'in the output of ifconfig' 'in the output of ip addr show' \
-      --replace 'ifconfig -a' '${iproute}/sbin/ip addr show' \
-      --replace 'ifconfig $arg' '${iproute}/sbin/ip addr show $arg' \
+      --replace 'ifconfig -a' '${iproute2}/sbin/ip addr show' \
+      --replace 'ifconfig $arg' '${iproute2}/sbin/ip addr show $arg' \
       --replace '/usr/bin/perl' '${perl}/bin/perl' # Until we get the patchShebangs fixed (issue #55786) we need to patch this manually
   '';
 
@@ -36,11 +38,12 @@ perlPackages.buildPerlPackage rec {
   # there are no tests distributed with ddclient
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Client for updating dynamic DNS service entries";
-    homepage    = "https://sourceforge.net/p/ddclient/wiki/Home/";
-    license     = licenses.gpl2Plus;
+    homepage = "https://ddclient.net/";
+    license = licenses.gpl2Plus;
     # Mostly since `iproute` is Linux only.
-    platforms   = platforms.linux;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/tools/networking/dhcp/default.nix b/pkgs/tools/networking/dhcp/default.nix
index 5222f731efb..2a722d17c01 100644
--- a/pkgs/tools/networking/dhcp/default.nix
+++ b/pkgs/tools/networking/dhcp/default.nix
@@ -1,15 +1,15 @@
-{ stdenv, fetchurl, perl, file, nettools, iputils, iproute, makeWrapper
+{ stdenv, fetchurl, perl, file, nettools, iputils, iproute2, makeWrapper
 , coreutils, gnused, openldap ? null
 , buildPackages, lib
 }:
 
 stdenv.mkDerivation rec {
   pname = "dhcp";
-  version = "4.4.2";
+  version = "4.4.2-P1";
 
   src = fetchurl {
     url = "https://ftp.isc.org/isc/dhcp/${version}/${pname}-${version}.tar.gz";
-    sha256 = "08a5003zdxgl41b29zjkxa92h2i40zyjgxg0npvnhpkfl5jcsz0s";
+    sha256 = "06jsr0cg5rsmyibshrpcb9za0qgwvqccashdma7mlm1rflrh8pmh";
   };
 
   patches =
@@ -20,9 +20,9 @@ stdenv.mkDerivation rec {
       ./set-hostname.patch
     ];
 
-  nativeBuildInputs = [ perl ];
+  nativeBuildInputs = [ perl makeWrapper ];
 
-  buildInputs = [ makeWrapper openldap ];
+  buildInputs = [ openldap ];
 
   depsBuildBuild = [ buildPackages.stdenv.cc ];
 
@@ -37,13 +37,14 @@ stdenv.mkDerivation rec {
     "--sysconfdir=/etc"
     "--localstatedir=/var"
   ] ++ lib.optional stdenv.isLinux "--with-randomdev=/dev/random"
-    ++ stdenv.lib.optionals (openldap != null) [ "--with-ldap" "--with-ldapcrypto" ];
+    ++ lib.optionals (openldap != null) [ "--with-ldap" "--with-ldapcrypto" ];
 
   NIX_CFLAGS_COMPILE = builtins.toString [
     "-Wno-error=pointer-compare"
     "-Wno-error=format-truncation"
     "-Wno-error=stringop-truncation"
     "-Wno-error=format-overflow"
+    "-Wno-error=stringop-overflow=8"
   ];
 
   installFlags = [ "DESTDIR=\${out}" ];
@@ -58,7 +59,7 @@ stdenv.mkDerivation rec {
 
       cp client/scripts/linux $out/sbin/dhclient-script
       substituteInPlace $out/sbin/dhclient-script \
-        --replace /sbin/ip ${iproute}/sbin/ip
+        --replace /sbin/ip ${iproute2}/sbin/ip
       wrapProgram "$out/sbin/dhclient-script" --prefix PATH : \
         "${nettools}/bin:${nettools}/sbin:${iputils}/bin:${coreutils}/bin:${gnused}/bin"
     '';
@@ -67,12 +68,12 @@ stdenv.mkDerivation rec {
     ''
       substituteInPlace configure --replace "/usr/bin/file" "${file}/bin/file"
       sed -i "includes/dhcpd.h" \
-	-"es|^ *#define \+_PATH_DHCLIENT_SCRIPT.*$|#define _PATH_DHCLIENT_SCRIPT \"$out/sbin/dhclient-script\"|g"
+          -e "s|^ *#define \+_PATH_DHCLIENT_SCRIPT.*$|#define _PATH_DHCLIENT_SCRIPT \"$out/sbin/dhclient-script\"|g"
 
       export AR='${stdenv.cc.bintools.bintools}/bin/${stdenv.cc.targetPrefix}ar'
     '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Dynamic Host Configuration Protocol (DHCP) tools";
 
     longDescription = ''
@@ -83,7 +84,7 @@ stdenv.mkDerivation rec {
    '';
 
     homepage = "https://www.isc.org/dhcp/";
-    license = licenses.isc;
+    license = licenses.mpl20;
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/dhcpcd/default.nix b/pkgs/tools/networking/dhcpcd/default.nix
index 1a16645cc9b..cc1bad106f7 100644
--- a/pkgs/tools/networking/dhcpcd/default.nix
+++ b/pkgs/tools/networking/dhcpcd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fetchpatch, pkgconfig, udev, runtimeShellPackage,
+{ lib, stdenv, fetchurl, fetchpatch, pkg-config, udev, runtimeShellPackage,
 runtimeShell }:
 
 stdenv.mkDerivation rec {
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     sha256 = "0gf1qif25wy5lffzw39pi4sshmpxz1f4a1m9sglj7am1gaix3817";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
     udev
     runtimeShellPackage # So patchShebangs finds a bash suitable for the installed scripts
@@ -24,7 +24,8 @@ stdenv.mkDerivation rec {
 
   patches = [
     (fetchpatch {
-      url = "https://roy.marples.name/cgit/dhcpcd.git/patch/?id=114870290a8d3d696bc4049c32eef3eed03d6070";
+      name = "?id=114870290a8d3d696bc4049c32eef3eed03d6070";
+      url = "https://roy.marples.name/git/dhcpcd/commitdiff_plain/114870290a8d3d696bc4049c32eef3eed03d6070";
       sha256 = "0kzpwjh2gzvl5lvlnw6lis610p67nassk3apns68ga2pyxlky8qb";
     })
   ];
@@ -43,9 +44,9 @@ stdenv.mkDerivation rec {
   installFlags = [ "DBDIR=$(TMPDIR)/db" "SYSCONFDIR=${placeholder "out"}/etc" ];
 
   # Check that the udev plugin got built.
-  postInstall = stdenv.lib.optional (udev != null) "[ -e ${placeholder "out"}/lib/dhcpcd/dev/udev.so ]";
+  postInstall = lib.optional (udev != null) "[ -e ${placeholder "out"}/lib/dhcpcd/dev/udev.so ]";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A client for the Dynamic Host Configuration Protocol (DHCP)";
     homepage = "https://roy.marples.name/projects/dhcpcd";
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/dhcpdump/default.nix b/pkgs/tools/networking/dhcpdump/default.nix
index f68d68382dd..dba08fea795 100644
--- a/pkgs/tools/networking/dhcpdump/default.nix
+++ b/pkgs/tools/networking/dhcpdump/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libpcap, perl }:
+{ lib, stdenv, fetchurl, libpcap, perl }:
 
 stdenv.mkDerivation {
   name = "dhcpdump-1.8";
@@ -17,7 +17,7 @@ stdenv.mkDerivation {
     cp dhcpdump $out/bin
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A tool for visualization of DHCP packets as recorded and output by tcpdump to analyze DHCP server responses";
     homepage = "http://www.mavetju.org/unix/dhcpdump-man.php";
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/dhcping/default.nix b/pkgs/tools/networking/dhcping/default.nix
index 36f81555495..f1f8cd8b5e4 100644
--- a/pkgs/tools/networking/dhcping/default.nix
+++ b/pkgs/tools/networking/dhcping/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "dhcping";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Send DHCP request to find out if a DHCP server is running";
     longDescription = ''
       dhcping sends either a DHCPREQUEST or DHCPINFORM packet to the server
@@ -27,6 +27,6 @@ stdenv.mkDerivation rec {
     '';
     homepage = "http://www.mavetju.org/unix/general.php";
     license = licenses.bsd2;
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/dibbler/default.nix b/pkgs/tools/networking/dibbler/default.nix
index 1849890d23c..1633505763c 100644
--- a/pkgs/tools/networking/dibbler/default.nix
+++ b/pkgs/tools/networking/dibbler/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "dibbler";
@@ -13,9 +13,9 @@ stdenv.mkDerivation rec {
     "--enable-resolvconf"
   ];
 
-  NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin "-D__APPLE_USE_RFC_2292=1";
+  NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-D__APPLE_USE_RFC_2292=1";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Portable DHCPv6 implementation";
     homepage = "http://www.klub.com.pl/dhcpv6/";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/dirb/default.nix b/pkgs/tools/networking/dirb/default.nix
index 1f9516ccacc..09f1fbc2f9f 100644
--- a/pkgs/tools/networking/dirb/default.nix
+++ b/pkgs/tools/networking/dirb/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, autoreconfHook, curl }:
+{ fetchurl, lib, stdenv, autoreconfHook, curl }:
 
 let
   major = "2";
@@ -33,8 +33,8 @@ in stdenv.mkDerivation rec {
   meta = {
     description = "A web content scanner";
     homepage = "http://dirb.sourceforge.net/";
-    maintainers = with stdenv.lib.maintainers; [ bennofs ];
-    license = with stdenv.lib.licenses; [ gpl2 ];
-    platforms = stdenv.lib.platforms.unix;
+    maintainers = with lib.maintainers; [ bennofs ];
+    license = with lib.licenses; [ gpl2 ];
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/djbdns/default.nix b/pkgs/tools/networking/djbdns/default.nix
index ca622a6244f..1b93d64d08f 100644
--- a/pkgs/tools/networking/djbdns/default.nix
+++ b/pkgs/tools/networking/djbdns/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, glibc, dns-root-data } :
+{ lib, stdenv, fetchurl, glibc, dns-root-data } :
 
 let
   version = "1.05";
@@ -41,7 +41,7 @@ stdenv.mkDerivation {
     rm -rv djbdns-man;
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A collection of Domain Name System tools";
     longDescription = "Includes software for all the fundamental DNS operations: DNS cache: finding addresses of Internet hosts; DNS server: publishing addresses of Internet hosts; and DNS client: talking to a DNS cache.";
     homepage = "https://cr.yp.to/djbdns.html";
diff --git a/pkgs/tools/networking/dnscrypt-proxy2/default.nix b/pkgs/tools/networking/dnscrypt-proxy2/default.nix
index 64a58bc15a9..8aedb403260 100644
--- a/pkgs/tools/networking/dnscrypt-proxy2/default.nix
+++ b/pkgs/tools/networking/dnscrypt-proxy2/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, buildGoModule, fetchFromGitHub }:
+{ lib, buildGoModule, fetchFromGitHub }:
 
 buildGoModule rec {
   pname = "dnscrypt-proxy2";
-  version = "2.0.44";
+  version = "2.0.45";
 
   vendorSha256 = null;
 
@@ -12,10 +12,10 @@ buildGoModule rec {
     owner = "DNSCrypt";
     repo = "dnscrypt-proxy";
     rev = version;
-    sha256 = "08bg60j5z349blj5sip1f8f793q12ix3zmqkayym5nf69s1pfm7l";
+    sha256 = "sha256-BvCxrFMRWPVVjK2sDlVbJKC/YK/bi4lBquIsdwOFXkw=";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A tool that provides secure DNS resolution";
 
     license = licenses.isc;
diff --git a/pkgs/tools/networking/dnscrypt-wrapper/default.nix b/pkgs/tools/networking/dnscrypt-wrapper/default.nix
index 5c44734665c..88d753baf5b 100644
--- a/pkgs/tools/networking/dnscrypt-wrapper/default.nix
+++ b/pkgs/tools/networking/dnscrypt-wrapper/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, libsodium, libevent }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, libsodium, libevent }:
 
 stdenv.mkDerivation rec {
   pname = "dnscrypt-wrapper";
@@ -13,10 +13,10 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+  nativeBuildInputs = [ pkg-config autoreconfHook ];
   buildInputs = [ libsodium libevent ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A tool for adding dnscrypt support to any name resolver";
     homepage = "https://dnscrypt.info/";
     license = licenses.isc;
diff --git a/pkgs/tools/networking/dnsmasq/default.nix b/pkgs/tools/networking/dnsmasq/default.nix
index 19dbd00c1ee..131a645d838 100644
--- a/pkgs/tools/networking/dnsmasq/default.nix
+++ b/pkgs/tools/networking/dnsmasq/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchurl, pkgconfig, dbus, nettle, fetchpatch
-, libidn, libnetfilter_conntrack }:
+{ lib, stdenv, fetchurl, pkg-config, dbus, nettle, fetchpatch
+, libidn, libnetfilter_conntrack, buildPackages }:
 
-with stdenv.lib;
+with lib;
 let
   copts = concatStringsSep " " ([
     "-DHAVE_IDN"
@@ -12,14 +12,15 @@ let
   ]);
 in
 stdenv.mkDerivation rec {
-  name = "dnsmasq-2.82";
+  pname = "dnsmasq";
+  version = "2.85";
 
   src = fetchurl {
-    url = "http://www.thekelleys.org.uk/dnsmasq/${name}.tar.xz";
-    sha256 = "0cn1xd1s6xs78jmrmwjnh9m6w3q38pk6dyqy2phvasqiyd33cll4";
+    url = "https://www.thekelleys.org.uk/dnsmasq/${pname}-${version}.tar.xz";
+    sha256 = "sha256-rZjTgD32h+W5OAgPPSXGKP5ByHh1LQP7xhmXh/7jEvo=";
   };
 
-  postPatch = stdenv.lib.optionalString stdenv.hostPlatform.isLinux ''
+  postPatch = lib.optionalString stdenv.hostPlatform.isLinux ''
     sed '1i#include <linux/sockios.h>' -i src/dhcp.c
   '';
 
@@ -32,6 +33,7 @@ stdenv.mkDerivation rec {
     "BINDIR=$(out)/bin"
     "MANDIR=$(out)/man"
     "LOCALEDIR=$(out)/share/locale"
+    "PKG_CONFIG=${buildPackages.pkg-config}/bin/${buildPackages.pkg-config.targetPrefix}pkg-config"
   ];
 
   hardeningEnable = [ "pie" ];
@@ -65,13 +67,13 @@ stdenv.mkDerivation rec {
     END
   '';
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ nettle libidn ]
     ++ optionals stdenv.isLinux [ dbus libnetfilter_conntrack ];
 
   meta = {
     description = "An integrated DNS, DHCP and TFTP server for small networks";
-    homepage = "http://www.thekelleys.org.uk/dnsmasq/doc.html";
+    homepage = "https://www.thekelleys.org.uk/dnsmasq/doc.html";
     license = licenses.gpl2;
     platforms = with platforms; linux ++ darwin;
     maintainers = with maintainers; [ eelco fpletz globin ];
diff --git a/pkgs/tools/networking/dnsperf/default.nix b/pkgs/tools/networking/dnsperf/default.nix
index 63e19e924fc..bb63e05c0e1 100644
--- a/pkgs/tools/networking/dnsperf/default.nix
+++ b/pkgs/tools/networking/dnsperf/default.nix
@@ -1,25 +1,30 @@
-{ stdenv, fetchurl, fetchFromGitHub, autoreconfHook, pkgconfig
-, bind, zlib, openssl, libcap
+{ lib, stdenv, fetchurl, fetchFromGitHub, autoreconfHook, pkg-config
+, openssl, ldns, libck
 }:
 
 stdenv.mkDerivation rec {
   pname = "dnsperf";
-  version = "2.3.1";
+  version = "2.5.2";
 
   # The same as the initial commit of the new GitHub repo (only readme changed).
   src = fetchFromGitHub {
     owner = "DNS-OARC";
     repo = "dnsperf";
     rev = "v${version}";
-    sha256 = "0yxwm5xi9ry154ayzn2h27bnwwc202bsna8h6i4a65pn76nrn81w";
+    sha256 = "0dzi28z7hnyxbibwdsalvd93czf4d5pgmvrbn6hlh52znsn40gbb";
   };
 
   outputs = [ "out" "man" "doc" ];
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
 
-  buildInputs = [ bind zlib openssl ]
-    ++ stdenv.lib.optionals stdenv.isLinux [ libcap.lib ];
+  buildInputs = [
+    openssl
+    ldns # optional for DDNS (but cheap anyway)
+    libck
+  ];
+
+  doCheck = true;
 
   # For now, keep including the old PDFs as well.
   # https://github.com/DNS-OARC/dnsperf/issues/27
@@ -34,7 +39,7 @@ stdenv.mkDerivation rec {
     cp ./dnsperf-src-*/doc/*.pdf "$doc/share/doc/dnsperf/"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     outputsToInstall = outputs; # The man pages and docs are likely useful to most.
 
     description = "Tools for DNS benchmaring";
diff --git a/pkgs/tools/networking/dnsproxy/default.nix b/pkgs/tools/networking/dnsproxy/default.nix
index 8f231935ee3..ffa2138ffa8 100644
--- a/pkgs/tools/networking/dnsproxy/default.nix
+++ b/pkgs/tools/networking/dnsproxy/default.nix
@@ -1,21 +1,21 @@
-{ stdenv, fetchFromGitHub, buildGoModule }:
+{ lib, fetchFromGitHub, buildGoModule }:
 
 buildGoModule rec {
   pname = "dnsproxy";
-  version = "0.31.0";
+  version = "0.38.3";
 
   src = fetchFromGitHub {
     owner = "AdguardTeam";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1jyik1022iv8nqjfrv3lkvcpr8zsaxfx8hi7yagklbs6vzlg80jg";
+    sha256 = "sha256-VfEfxcewKo8D8kNsMuCvrLOZNl632ZIFyD+RG8qzjQ4=";
   };
 
   vendorSha256 = null;
 
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Simple DNS proxy with DoH, DoT, and DNSCrypt support";
     homepage = "https://github.com/AdguardTeam/dnsproxy";
     license = licenses.gpl3;
diff --git a/pkgs/tools/networking/dnstop/default.nix b/pkgs/tools/networking/dnstop/default.nix
index 705888568d9..cee24f1976f 100644
--- a/pkgs/tools/networking/dnstop/default.nix
+++ b/pkgs/tools/networking/dnstop/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libpcap, ncurses }:
+{ lib, stdenv, fetchurl, libpcap, ncurses }:
 
 stdenv.mkDerivation rec {
   name = "dnstop-20140915";
@@ -14,10 +14,10 @@ stdenv.mkDerivation rec {
     mkdir -p $out/share/man/man8 $out/bin
   '';
 
-  meta = { 
+  meta = {
     description = "libpcap application that displays DNS traffic on your network";
     homepage = "http://dns.measurement-factory.com/tools/dnstop";
-    license = stdenv.lib.licenses.bsd3;
-    platforms = stdenv.lib.platforms.unix;
+    license = lib.licenses.bsd3;
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/dnstracer/default.nix b/pkgs/tools/networking/dnstracer/default.nix
index 7109a294543..597592b4d7c 100644
--- a/pkgs/tools/networking/dnstracer/default.nix
+++ b/pkgs/tools/networking/dnstracer/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libresolv, perl }:
+{ lib, stdenv, fetchurl, libresolv, perl }:
 
 stdenv.mkDerivation rec {
   version = "1.10";
@@ -20,12 +20,12 @@ stdenv.mkDerivation rec {
     install -Dm755 -t $man/share/man/man8 dnstracer.8
   '';
 
-  buildInputs = [] ++ stdenv.lib.optionals stdenv.isDarwin [ libresolv ];
+  buildInputs = [] ++ lib.optionals stdenv.isDarwin [ libresolv ];
 
-  NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isDarwin "-lresolv";
+  NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-lresolv";
 
-  meta = with stdenv.lib; {
-    description = "Dnstracer determines where a given Domain Name Server (DNS) gets its information from, and follows the chain of DNS servers back to the servers which know the data.";
+  meta = with lib; {
+    description = "Determines where a given Domain Name Server (DNS) gets its information from, and follows the chain of DNS servers back to the servers which know the data";
     homepage = "http://www.mavetju.org/unix/general.php";
     license = licenses.bsd2;
     maintainers = with maintainers; [ andir ];
diff --git a/pkgs/tools/networking/dnstwist/default.nix b/pkgs/tools/networking/dnstwist/default.nix
new file mode 100644
index 00000000000..e19b4dabd78
--- /dev/null
+++ b/pkgs/tools/networking/dnstwist/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, fetchFromGitHub
+, python3
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "dnstwist";
+  version = "20201228";
+  disabled = python3.pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "elceef";
+    repo = pname;
+    rev = version;
+    sha256 = "0bxshi1p0va2f449v6vsm8bav5caa3r3pyknj3zf4n5rvk6say70";
+  };
+
+  propagatedBuildInputs = with python3.pkgs; [
+    dnspython
+    GeoIP
+    ppdeep
+    requests
+    tld
+    whois
+  ];
+
+  # Project has no tests
+  doCheck = false;
+  pythonImportsCheck = [ "dnstwist" ];
+
+  meta = with lib; {
+    description = "Domain name permutation engine for detecting homograph phishing attacks";
+    homepage = "https://github.com/elceef/dnstwist";
+    license = with licenses; [ gpl3Only ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/networking/dnsviz/default.nix b/pkgs/tools/networking/dnsviz/default.nix
new file mode 100644
index 00000000000..ba31aba8d6c
--- /dev/null
+++ b/pkgs/tools/networking/dnsviz/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonApplication
+, fetchFromGitHub
+, dnspython
+, m2crypto
+, pygraphviz
+}:
+
+buildPythonApplication rec {
+  pname = "dnsviz";
+  version = "0.9.3";
+
+  src = fetchFromGitHub {
+    owner = "dnsviz";
+    repo = "dnsviz";
+    rev = "v${version}";
+    sha256 = "sha256-QsTYpNaAJiIRUrr2JYjXWOKFihENhAccvmB/DRhX1PA=";
+  };
+
+  patches = [
+    # override DNSVIZ_INSTALL_PREFIX with $out
+    ./fix-path.patch
+  ];
+
+  propagatedBuildInputs = [
+    dnspython
+    m2crypto
+    pygraphviz
+  ];
+
+  postPatch = ''
+    substituteInPlace dnsviz/config.py.in --replace '@out@' $out
+  '';
+
+  # Tests require network connection and /etc/resolv.conf
+  doCheck = false;
+
+  pythonImportsCheck = [ "dnsviz" ];
+
+  meta = with lib; {
+    description = "Tool suite for analyzing and visualizing DNS and DNSSEC behavior";
+    longDescription = ''
+      DNSViz is a tool suite for analysis and visualization of Domain Name System (DNS) behavior,
+      including its security extensions (DNSSEC).
+
+      This tool suite powers the Web-based analysis available at https://dnsviz.net/
+    '';
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ jojosch ];
+  };
+}
diff --git a/pkgs/tools/networking/dnsviz/fix-path.patch b/pkgs/tools/networking/dnsviz/fix-path.patch
new file mode 100644
index 00000000000..7906058cd98
--- /dev/null
+++ b/pkgs/tools/networking/dnsviz/fix-path.patch
@@ -0,0 +1,18 @@
+diff --git a/dnsviz/config.py.in b/dnsviz/config.py.in
+index 373fde2..007f0f1 100644
+--- a/dnsviz/config.py.in
++++ b/dnsviz/config.py.in
+@@ -26,12 +26,7 @@ from __future__ import unicode_literals
+ import os
+ import sys
+ 
+-_prefix = '__DNSVIZ_INSTALL_PREFIX__'
+-if (hasattr(sys, 'real_prefix') or hasattr(sys, 'base_prefix')) and \
+-        not _prefix:
+-    DNSVIZ_INSTALL_PREFIX = sys.prefix
+-else:
+-    DNSVIZ_INSTALL_PREFIX = _prefix
++DNSVIZ_INSTALL_PREFIX = "@out@"
+ DNSVIZ_SHARE_PATH = os.path.join(DNSVIZ_INSTALL_PREFIX, 'share', 'dnsviz')
+ JQUERY_PATH = __JQUERY_PATH__
+ JQUERY_UI_PATH = __JQUERY_UI_PATH__
diff --git a/pkgs/tools/networking/dogdns/default.nix b/pkgs/tools/networking/dogdns/default.nix
new file mode 100644
index 00000000000..1374e4473c0
--- /dev/null
+++ b/pkgs/tools/networking/dogdns/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenv
+, fetchFromGitHub
+, rustPlatform
+, pkg-config
+, openssl
+, Security
+, installShellFiles
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "dogdns";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "ogham";
+    repo = "dog";
+    rev = "v${version}";
+    sha256 = "088ib0sncv0vrvnqfvxf5zc79v7pnxd2cmgp4378r6pmgax9z9zy";
+  };
+
+  nativeBuildInputs = [ installShellFiles ]
+    ++ lib.optionals stdenv.isLinux [ pkg-config ];
+  buildInputs = lib.optionals stdenv.isLinux [ openssl ]
+    ++ lib.optionals stdenv.isDarwin [ Security ];
+
+  cargoSha256 = "0zgzaq303zy8lymhldm6dpm5hwsxi2ph42zw5brvsdjmgm9ga0rb";
+
+  postInstall = ''
+    installShellCompletion completions/dog.{bash,fish,zsh}
+  '';
+
+  meta = with lib; {
+    description = "Command-line DNS client";
+    homepage = "https://dns.lookup.dog";
+    license = licenses.eupl12;
+    maintainers = with maintainers; [ bbigras ];
+  };
+}
diff --git a/pkgs/tools/networking/driftnet/default.nix b/pkgs/tools/networking/driftnet/default.nix
index 44101910371..042f29d3ca3 100644
--- a/pkgs/tools/networking/driftnet/default.nix
+++ b/pkgs/tools/networking/driftnet/default.nix
@@ -1,31 +1,64 @@
-{ stdenv, lib, fetchFromGitHub, libpcap, libjpeg , libungif, libpng
-, giflib, glib, gtk2, cairo, pango, gdk-pixbuf, atk
-, pkgconfig, autoreconfHook }:
+{ stdenv
+, lib
+, fetchFromGitHub
+, fetchpatch
+, autoreconfHook
+, cairo
+, giflib
+, glib
+, gtk2-x11
+, libjpeg
+, libpcap
+, libpng
+, libwebsockets
+, pkg-config
+, libuv
+, openssl
+}:
 
-with lib;
-
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   pname = "driftnet";
-  version = "1.1.5";
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [
-    libpcap libjpeg libungif libpng giflib
-    glib gtk2 glib cairo pango gdk-pixbuf atk autoreconfHook
-  ];
+  version = "1.3.0";
 
   src = fetchFromGitHub {
     owner = "deiv";
     repo = "driftnet";
-    rev = "0ae4a91";
-    sha256 = "1sagpx0mw68ggvqd9c3crjhghqmj7391mf2cb6cjw1cpd2hcddsj";
+    rev = "v${version}";
+    sha256 = "0kd22aqb25kf54jjv3ml8wy8xm7lmbf0xz1wfp31m08cbzsbizib";
   };
 
-  meta = {
-    description = "Driftnet watches network traffic, and picks out and displays JPEG and GIF images for display";
+  # https://github.com/deiv/driftnet/pull/33
+  # remove on version bump from 1.3.0
+  patches = [
+    (fetchpatch {
+      name = "fix-darwin-build";
+      url = "https://github.com/deiv/driftnet/pull/33/commits/bef5f3509ab5710161e9e21ea960a997eada534f.patch";
+      sha256 = "1b7p9fkgp7dxv965l7q7y632s80h3nnrkaqnak2h0hakwv0i4pvm";
+    })
+  ];
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkg-config autoreconfHook ];
+
+  buildInputs = [
+    cairo
+    giflib
+    glib
+    gtk2-x11
+    libjpeg
+    libpcap
+    libpng
+    libwebsockets
+    openssl
+    libuv
+  ];
+
+  meta = with lib; {
+    description = "Watches network traffic, and picks out and displays JPEG and GIF images for display";
     homepage = "https://github.com/deiv/driftnet";
     maintainers = with maintainers; [ offline ];
-    platforms = platforms.linux;
+    platforms = platforms.linux ++ platforms.darwin;
     license = licenses.gpl2;
   };
 }
diff --git a/pkgs/tools/networking/driftnet/fix-darwin-build.patch b/pkgs/tools/networking/driftnet/fix-darwin-build.patch
new file mode 100644
index 00000000000..d1bde0f2e60
--- /dev/null
+++ b/pkgs/tools/networking/driftnet/fix-darwin-build.patch
@@ -0,0 +1,61 @@
+diff --git a/src/compat/compat.h b/src/compat/compat.h
+index 6add422..ea80406 100644
+--- a/src/compat/compat.h
++++ b/src/compat/compat.h
+@@ -17,7 +17,7 @@
+     #include <config.h>
+ #endif
+ 
+-#ifdef __FreeBSD__
++#if defined(__FreeBSD__) || defined(__APPLE__)
+     #include <sys/types.h>
+ #endif
+ 
+diff --git a/src/network/layer2.c b/src/network/layer2.c
+index 763f0ac..2497b72 100644
+--- a/src/network/layer2.c
++++ b/src/network/layer2.c
+@@ -14,7 +14,7 @@
+ 
+ #include <string.h>
+ 
+-#ifdef __FreeBSD__
++#if defined(__FreeBSD__) || defined(__APPLE__)
+ #include <netinet/in_systm.h>
+ #include <netinet/in.h>
+ #else
+@@ -29,7 +29,7 @@
+ /*
+  * Freebsd and Cygwin doesn't define 'ethhdr'
+  */
+-#if defined(__FreeBSD__) || defined(__CYGWIN__)
++#if defined(__FreeBSD__) || defined(__CYGWIN__) || defined(__APPLE__)
+ 
+ #define ETH_ALEN	6			/* Octets in one ethernet addr	 */
+ #define ETH_P_IP	0x0800		/* Internet Protocol packet	*/
+diff --git a/src/network/layer3.c b/src/network/layer3.c
+index 7864126..aae2041 100644
+--- a/src/network/layer3.c
++++ b/src/network/layer3.c
+@@ -15,7 +15,7 @@
+ #include <string.h>
+ #include <assert.h>
+ 
+-#ifdef __FreeBSD__
++#if defined(__FreeBSD__) || defined(__APPLE__)
+ #include <netinet/in_systm.h>
+ #include <netinet/in.h>
+ #include <sys/socket.h>
+diff --git a/src/pid.c b/src/pid.c
+index 621834e..94e7dcc 100644
+--- a/src/pid.c
++++ b/src/pid.c
+@@ -14,7 +14,7 @@
+ 
+ #include "compat/compat.h"
+ 
+-#ifdef __FreeBSD__
++#if defined(__FreeBSD__) || defined(__APPLE__)
+ #include <sys/stat.h>
+ #endif
+ #include <fcntl.h>
diff --git a/pkgs/tools/networking/drill/default.nix b/pkgs/tools/networking/drill/default.nix
index 572dc0d8384..f29a7ee705f 100644
--- a/pkgs/tools/networking/drill/default.nix
+++ b/pkgs/tools/networking/drill/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib, stdenv
 , rustPlatform
 , fetchFromGitHub
 , pkg-config
@@ -8,26 +8,26 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "drill";
-  version = "0.6.0";
+  version = "0.7.0";
 
   src = fetchFromGitHub {
     owner = "fcsonline";
     repo = pname;
     rev = version;
-    sha256 = "0pcc91nk68z7hlhj7xvh6v3rybxpy6bzv3pzjcyaq7l0szjljrpw";
+    sha256 = "07zz0dj0wjwrc1rmayz7s8kpcv03i0ygl4vfwsam72qd4nf6v538";
   };
 
-  cargoSha256 = "1611w8b60d3x16ik8v96za0mkr5p0f9gdpz0awprfgj6c3r6s16m";
+  cargoSha256 = "04gj9gaysjcm2d81ds2raak847hr8w84jgfdwqd51wi8xm32w5jf";
 
-  nativeBuildInputs = stdenv.lib.optionals stdenv.isLinux [ pkg-config ];
+  nativeBuildInputs = lib.optionals stdenv.isLinux [ pkg-config ];
   buildInputs = [ ]
-    ++ stdenv.lib.optionals stdenv.isLinux [ openssl ]
-    ++ stdenv.lib.optionals stdenv.isDarwin [ Security ];
+    ++ lib.optionals stdenv.isLinux [ openssl ]
+    ++ lib.optionals stdenv.isDarwin [ Security ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "HTTP load testing application inspired by Ansible syntax";
     homepage = "https://github.com/fcsonline/drill";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ filalex77 ];
+    maintainers = with maintainers; [ Br1ght0ne ];
   };
 }
diff --git a/pkgs/tools/networking/dropbear/default.nix b/pkgs/tools/networking/dropbear/default.nix
index dcb05eb8484..f922a70344c 100644
--- a/pkgs/tools/networking/dropbear/default.nix
+++ b/pkgs/tools/networking/dropbear/default.nix
@@ -1,14 +1,14 @@
 { stdenv, lib, fetchurl, glibc, zlib
-, enableStatic ? false
+, enableStatic ? stdenv.hostPlatform.isStatic
 , sftpPath ? "/run/current-system/sw/libexec/sftp-server"
 }:
 
 stdenv.mkDerivation rec {
-  name = "dropbear-2020.80";
+  name = "dropbear-2020.81";
 
   src = fetchurl {
     url = "https://matt.ucc.asn.au/dropbear/releases/${name}.tar.bz2";
-    sha256 = "0jbrbpdzyv11x5rkljdimzq9p6a7da5siw9k405ibnpjj4dr89yr";
+    sha256 = "0fy5ma4cfc2pk25mcccc67b2mf1rnb2c06ilb7ddnxbpnc85s8s8";
   };
 
   dontDisableStatic = enableStatic;
@@ -30,8 +30,8 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ zlib ] ++ lib.optionals enableStatic [ glibc.static zlib.static ];
 
-  meta = with stdenv.lib; {
-    homepage = "http://matt.ucc.asn.au/dropbear/dropbear.html";
+  meta = with lib; {
+    homepage = "https://matt.ucc.asn.au/dropbear/dropbear.html";
     description = "A small footprint implementation of the SSH 2 protocol";
     license = licenses.mit;
     maintainers = with maintainers; [ abbradar ];
diff --git a/pkgs/tools/networking/dsniff/default.nix b/pkgs/tools/networking/dsniff/default.nix
index 50de41b921c..8e641ec83e7 100644
--- a/pkgs/tools/networking/dsniff/default.nix
+++ b/pkgs/tools/networking/dsniff/default.nix
@@ -1,4 +1,10 @@
-{ stdenv, fetchFromGitLab, autoreconfHook, libpcap, db, glib, libnet, libnids, symlinkJoin, openssl }:
+{ gcc9Stdenv, lib, fetchFromGitLab, autoreconfHook, libpcap, db, glib, libnet, libnids, symlinkJoin, openssl
+, rpcsvc-proto, libtirpc, libnsl
+}:
+
+# We compile with GCC 9 since GCC 10 segfaults on the code
+# (see https://bugzilla.redhat.com/show_bug.cgi?id=1862809).
+
 let
   /*
   dsniff's build system unconditionnaly wants static libraries and does not
@@ -36,7 +42,7 @@ let
     inherit (openssl) name;
     paths = with openssl.override { static = true; }; [ out dev ];
   };
-in stdenv.mkDerivation {
+in gcc9Stdenv.mkDerivation rec {
   pname = "dsniff";
   version = "2.4b1";
   # upstream is so old that nearly every distribution packages the beta version.
@@ -47,14 +53,15 @@ in stdenv.mkDerivation {
     domain = "salsa.debian.org";
     owner = "pkg-security-team";
     repo = "dsniff";
-    rev = "debian%2F2.4b1%2Bdebian-29"; # %2B = urlquote("+"), %2F = urlquote("/")
-    sha256 = "10zz9krf65jsqvlcr72ycp5cd27xwr18jkc38zqp2i4j6x0caj2g";
+    rev = "debian/${version}+debian-30";
+    sha256 = "1fk2k0sfdp5g27i11g0sbzm7al52raz5yr1aibzssnysv7l9xgzh";
     name = "dsniff.tar.gz";
   };
 
-  nativeBuildInputs = [ autoreconfHook ];
-  buildInputs = [ glib pcap ];
-  NIX_CFLAGS_LINK = "-lglib-2.0 -lpthread -ldl";
+  nativeBuildInputs = [ autoreconfHook rpcsvc-proto ];
+  buildInputs = [ glib pcap libtirpc libnsl ];
+  NIX_CFLAGS_LINK = "-lglib-2.0 -lpthread -ldl -ltirpc";
+  NIX_CFLAGS_COMPILE = [ "-I${libtirpc.dev}/include/tirpc" ];
   postPatch = ''
     for patch in debian/patches/*.patch; do
       patch < $patch
@@ -68,7 +75,7 @@ in stdenv.mkDerivation {
     "--with-openssl=${ssl}"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "collection of tools for network auditing and penetration testing";
     longDescription = ''
       dsniff, filesnarf, mailsnarf, msgsnarf, urlsnarf, and webspy passively monitor a network for interesting data (passwords, e-mail, files, etc.). arpspoof, dnsspoof, and macof facilitate the interception of network traffic normally unavailable to an attacker (e.g, due to layer-2 switching). sshmitm and webmitm implement active monkey-in-the-middle attacks against redirected SSH and HTTPS sessions by exploiting weak bindings in ad-hoc PKI.
diff --git a/pkgs/tools/networking/easyrsa/2.x.nix b/pkgs/tools/networking/easyrsa/2.x.nix
index fef2648de7f..52cf2082d63 100644
--- a/pkgs/tools/networking/easyrsa/2.x.nix
+++ b/pkgs/tools/networking/easyrsa/2.x.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, autoreconfHook, makeWrapper
+{ lib, stdenv, fetchurl, autoreconfHook, makeWrapper
 , gnugrep, openssl }:
 
 stdenv.mkDerivation {
@@ -28,7 +28,7 @@ stdenv.mkDerivation {
     sed -i "/EASY_RSA=\|OPENSSL=\|GREP=/d" $out/share/easy-rsa/vars
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Simple shell based CA utility";
     homepage = "https://openvpn.net/";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/easyrsa/default.nix b/pkgs/tools/networking/easyrsa/default.nix
index 90e05e5310b..34e326858fd 100644
--- a/pkgs/tools/networking/easyrsa/default.nix
+++ b/pkgs/tools/networking/easyrsa/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchFromGitHub, openssl, runtimeShell }:
+{ lib, stdenv, fetchFromGitHub, openssl, runtimeShell }:
 
 let
-  version = "3.0.0";
+  version = "3.0.8";
 in stdenv.mkDerivation {
   pname = "easyrsa";
   inherit version;
@@ -10,14 +10,15 @@ in stdenv.mkDerivation {
     owner = "OpenVPN";
     repo = "easy-rsa";
     rev = "v${version}";
-    sha256 = "0wbdv3wmqwm5680rpb971l56xiw49adpicqshk3vhfmpvqzl4dbs";
+    sha256 = "05q60s343ydh9j6hzj0840qdcq8fkyz06q68yw4pqgqg4w68rbgs";
   };
 
   patches = [ ./fix-paths.patch ];
 
   installPhase = ''
     mkdir -p $out/share/easyrsa
-    cp -r easyrsa3/{openssl*.cnf,x509-types,vars.example} $out/share/easyrsa
+    cp -r easyrsa3/{*.cnf,x509-types,vars.example} $out/share/easyrsa
+    cp easyrsa3/openssl-easyrsa.cnf $out/share/easyrsa/safessl-easyrsa.cnf
     install -D -m755 easyrsa3/easyrsa $out/bin/easyrsa
     substituteInPlace $out/bin/easyrsa \
       --subst-var out \
@@ -31,11 +32,11 @@ in stdenv.mkDerivation {
     chmod +x $out/bin/easyrsa-init
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Simple shell based CA utility";
     homepage = "https://openvpn.net/";
     license = licenses.gpl2;
-    maintainers = [ maintainers.offline ];
+    maintainers = [ maintainers.offline maintainers.numinit ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/easyrsa/fix-paths.patch b/pkgs/tools/networking/easyrsa/fix-paths.patch
index 82688fa7946..7891adcb20c 100644
--- a/pkgs/tools/networking/easyrsa/fix-paths.patch
+++ b/pkgs/tools/networking/easyrsa/fix-paths.patch
@@ -1,33 +1,49 @@
 diff --git a/easyrsa3/easyrsa b/easyrsa3/easyrsa
-index 6fec288..210648a 100755
+index 261336f..7b9a79b 100755
 --- a/easyrsa3/easyrsa
 +++ b/easyrsa3/easyrsa
-@@ -1003,7 +1003,7 @@ Note: using Easy-RSA configuration from: $vars"
+@@ -1661,7 +1661,7 @@ Note: using Easy-RSA configuration from: $vars"
  	
  	# Set defaults, preferring existing env-vars if present
- 	set_var EASYRSA		"$PWD"
+ 	set_var EASYRSA		"$prog_dir"
 -	set_var EASYRSA_OPENSSL	openssl
 +	set_var EASYRSA_OPENSSL	"@openssl@"
- 	set_var EASYRSA_PKI	"$EASYRSA/pki"
+ 	set_var EASYRSA_PKI	"$PWD/pki"
  	set_var EASYRSA_DN	cn_only
  	set_var EASYRSA_REQ_COUNTRY	"US"
-@@ -1030,13 +1030,17 @@ Note: using Easy-RSA configuration from: $vars"
- 	# Detect openssl config, preferring EASYRSA_PKI over EASYRSA
- 	if [ -f "$EASYRSA_PKI/openssl-1.0.cnf" ]; then
- 		set_var EASYRSA_SSL_CONF	"$EASYRSA_PKI/openssl-1.0.cnf"
--	else	set_var EASYRSA_SSL_CONF	"$EASYRSA/openssl-1.0.cnf"
-+	elif [ -f "$EASYRSA/openssl-1.0.cnf" ]; then
-+		set_var EASYRSA_SSL_CONF	"$EASYRSA/openssl-1.0.cnf"
-+	else	set_var EASYRSA_SSL_CONF	"@out@/share/easyrsa/openssl-1.0.cnf"
- 	fi
+@@ -1683,16 +1683,31 @@ Note: using Easy-RSA configuration from: $vars"
+ 	set_var EASYRSA_TEMP_DIR	"$EASYRSA_PKI"
+ 	set_var EASYRSA_REQ_CN		ChangeMe
+ 	set_var EASYRSA_DIGEST		sha256
+-	set_var EASYRSA_SSL_CONF	"$EASYRSA_PKI/openssl-easyrsa.cnf"
+-	set_var EASYRSA_SAFE_CONF	"$EASYRSA_PKI/safessl-easyrsa.cnf"
+ 	set_var EASYRSA_KDC_REALM	"CHANGEME.EXAMPLE.COM"
  
++	if [ -f "$EASYRSA_PKI/safessl-easyrsa.conf" ]; then
++		set_var EASYRSA_SAFE_CONF	"$EASYRSA_PKI/safessl-easyrsa.cnf"
++	elif [ -f "$EASYRSA/safessl-easyrsa.conf" ]; then
++		set_var EASYRSA_SAFE_CONF	"$EASYRSA/safessl-easyrsa.cnf"
++	elif [ -f "@out@/share/easyrsa/safessl-easyrsa.cnf" ]; then
++		set_var EASYRSA_SAFE_CONF	"@out@/share/easyrsa/safessl-easyrsa.cnf"
++	fi
++
++	if [ -f "$EASYRSA_PKI/openssl-easyrsa.conf" ]; then
++		set_var EASYRSA_SSL_CONF	"$EASYRSA_PKI/openssl-easyrsa.cnf"
++	elif [ -f "$EASYRSA/openssl-easyrsa.conf" ]; then
++		set_var EASYRSA_SSL_CONF	"$EASYRSA/openssl-easyrsa.cnf"
++	elif [ -f "@out@/share/easyrsa/openssl-easyrsa.cnf" ]; then
++		set_var EASYRSA_SSL_CONF	"@out@/share/easyrsa/openssl-easyrsa.cnf"
++	fi
++
  	# Same as above for the x509-types extensions dir
  	if [ -d "$EASYRSA_PKI/x509-types" ]; then
  		set_var EASYRSA_EXT_DIR		"$EASYRSA_PKI/x509-types"
--	else	set_var EASYRSA_EXT_DIR		"$EASYRSA/x509-types"
+-	else	
+-		#TODO: This should be removed.  Not really suitable for packaging.
 +	elif [ -d "$EASYRSA/x509-types" ]; then
-+		set_var EASYRSA_EXT_DIR		"$EASYRSA/x509-types"
-+	else	set_var EASYRSA_EXT_DIR		"@out@/share/easyrsa/x509-types"
+ 		set_var EASYRSA_EXT_DIR		"$EASYRSA/x509-types"
++	else
++		set_var EASYRSA_EXT_DIR		"@out@/share/easyrsa/x509-types"
  	fi
  
  	# EASYRSA_ALGO_PARAMS must be set depending on selected algo
diff --git a/pkgs/tools/networking/eggdrop/default.nix b/pkgs/tools/networking/eggdrop/default.nix
index dc5bf1ef976..2db99bfa828 100644
--- a/pkgs/tools/networking/eggdrop/default.nix
+++ b/pkgs/tools/networking/eggdrop/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, tcl }:
+{ lib, stdenv, fetchFromGitHub, tcl }:
 
 stdenv.mkDerivation rec {
   pname = "eggdrop";
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
     "--with-tclinc=${tcl}/include/tcl.h"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     license = licenses.gpl2;
     platforms = platforms.unix;
     homepage = "http://www.eggheads.org";
diff --git a/pkgs/tools/networking/email/default.nix b/pkgs/tools/networking/email/default.nix
index b61503b1b3f..5c24acb912f 100644
--- a/pkgs/tools/networking/email/default.nix
+++ b/pkgs/tools/networking/email/default.nix
@@ -35,6 +35,6 @@ stdenv.mkDerivation {
     description = "Command line SMTP client";
     license = with lib.licenses; [ gpl2 ];
     homepage = "https://deanproxy.com/code";
-    platforms = stdenv.lib.platforms.unix;
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/eternal-terminal/default.nix b/pkgs/tools/networking/eternal-terminal/default.nix
index 452a9873bec..21bd75a3eba 100644
--- a/pkgs/tools/networking/eternal-terminal/default.nix
+++ b/pkgs/tools/networking/eternal-terminal/default.nix
@@ -1,29 +1,40 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , cmake
 , gflags
 , libsodium
+, openssl
 , protobuf
+, zlib
 }:
 
 stdenv.mkDerivation rec {
   pname = "eternal-terminal";
-  version = "6.0.11";
+  version = "6.1.8";
 
   src = fetchFromGitHub {
     owner = "MisterTea";
     repo = "EternalTerminal";
     rev = "et-v${version}";
-    sha256 = "0yjf639ldfaxrw4pbg9avdkhhmcpnx58j3x70zskvgkajny8yqqr";
+    sha256 = "sha256-VSJ6AoVBvlCdKSirSDqsemixF+kAnvPgBQlyJxjoPcs=";
   };
 
+  cmakeFlags= [
+    "-DDISABLE_VCPKG=TRUE"
+    "-DDISABLE_SENTRY=TRUE"
+    "-DDISABLE_CRASH_LOG=TRUE"
+  ];
+
+  CXXFLAGS = lib.optional stdenv.cc.isClang "-std=c++17";
+  LDFLAGS = lib.optional stdenv.cc.isClang "-lc++fs";
+
   nativeBuildInputs = [ cmake ];
-  buildInputs = [ gflags libsodium protobuf ];
+  buildInputs = [ gflags openssl zlib libsodium protobuf ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Remote shell that automatically reconnects without interrupting the session";
     license = licenses.asl20;
-    homepage = "https://mistertea.github.io/EternalTerminal/";
+    homepage = "https://eternalterminal.dev/";
     platforms = platforms.linux ++ platforms.darwin;
     maintainers = with maintainers; [ dezgeg pingiun ];
   };
diff --git a/pkgs/tools/networking/evillimiter/default.nix b/pkgs/tools/networking/evillimiter/default.nix
new file mode 100644
index 00000000000..20cc10728d6
--- /dev/null
+++ b/pkgs/tools/networking/evillimiter/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, buildPythonApplication
+, fetchFromGitHub
+, colorama
+, iproute2
+, iptables
+, netaddr
+, netifaces
+, scapy
+, terminaltables
+, tqdm
+}:
+
+buildPythonApplication rec {
+  pname = "evillimiter";
+  version = "1.5.0";
+
+  src = fetchFromGitHub {
+    owner = "bitbrute";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1l0acd4a36wzz1gyc6mcw3zpagyi2mc425c6d4c6anq3jxwm3847";
+  };
+
+  propagatedBuildInputs = [
+    colorama
+    iproute2
+    iptables
+    netaddr
+    netifaces
+    scapy
+    terminaltables
+    tqdm
+  ];
+
+  # no tests present
+  doCheck = false;
+
+  pythonImportsCheck = [ "evillimiter.evillimiter" ];
+
+  meta = with lib; {
+    description = "Tool that monitors, analyzes and limits the bandwidth";
+    longDescription = ''
+      A tool to monitor, analyze and limit the bandwidth (upload/download) of
+      devices on your local network without physical or administrative access.
+      evillimiter employs ARP spoofing and traffic shaping to throttle the
+      bandwidth of hosts on the network.
+    '';
+    homepage = "https://github.com/bitbrute/evillimiter";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/networking/fakeroute/default.nix b/pkgs/tools/networking/fakeroute/default.nix
index 2bfecc389d5..025eef72332 100644
--- a/pkgs/tools/networking/fakeroute/default.nix
+++ b/pkgs/tools/networking/fakeroute/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "fakeroute";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "1sp342rxgm1gz4mvi5vvz1knz7kn9px9s39ii3jdjp4ks7lr5c8f";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = ''
       Makes your machine appear to be anywhere on the internet
       to any host running a (UDP) unix traceroute
diff --git a/pkgs/tools/networking/fastd/default.nix b/pkgs/tools/networking/fastd/default.nix
index 8c9a877b8f1..8d1594b8187 100644
--- a/pkgs/tools/networking/fastd/default.nix
+++ b/pkgs/tools/networking/fastd/default.nix
@@ -1,32 +1,54 @@
-{ stdenv, fetchFromGitHub, cmake, bison, pkgconfig
-, libuecc, libsodium, libcap, json_c, openssl }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, bison
+, meson
+, ninja
+, pkg-config
+, libmnl
+, libuecc
+, libsodium
+, libcap
+, json_c
+, openssl
+}:
 
 stdenv.mkDerivation rec {
   pname = "fastd";
-  version = "19";
+  version = "22";
 
   src = fetchFromGitHub {
     owner  = "Neoraider";
     repo = "fastd";
     rev = "v${version}";
-    sha256 = "1h3whjvy2n2cyvbkbg4y1z9vlrn790spzbdhj4glwp93xcykhz5i";
+    sha256 = "0qni32j7d3za9f87m68wq8zgalvfxdrx1zxi6l4x7vvmpcw5nhpq";
   };
 
-  postPatch = ''
-    substituteInPlace src/crypto/cipher/CMakeLists.txt \
-      --replace 'add_subdirectory(aes128_ctr)' ""
-  '';
-
-  nativeBuildInputs = [ pkgconfig bison cmake ];
-  buildInputs = [ libuecc libsodium libcap json_c openssl ];
+  nativeBuildInputs = [
+    bison
+    meson
+    ninja
+    pkg-config
+  ];
 
-  cmakeFlags = [
-    "-DENABLE_OPENSSL=true"
+  buildInputs = [
+    json_c
+    libcap
+    libsodium
+    libuecc
+    openssl
+  ] ++ lib.optionals (stdenv.isLinux) [
+    libmnl
   ];
 
-  enableParallelBuilding = true;
+  # some options are only available on x86
+  mesonFlags = lib.optionals (!stdenv.isx86_64 && !stdenv.isi686) [
+    "-Dcipher_salsa20_xmm=disabled"
+    "-Dcipher_salsa2012_xmm=disabled"
+    "-Dmac_ghash_pclmulqdq=disabled"
+  ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Fast and Secure Tunneling Daemon";
     homepage = "https://projects.universe-factory.net/projects/fastd/wiki";
     license = with licenses; [ bsd2 bsd3 ];
diff --git a/pkgs/tools/networking/fdm/default.nix b/pkgs/tools/networking/fdm/default.nix
index fb125b486d7..608b669535d 100644
--- a/pkgs/tools/networking/fdm/default.nix
+++ b/pkgs/tools/networking/fdm/default.nix
@@ -1,29 +1,23 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, openssl, tdb, zlib, flex, bison }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, openssl, tdb, zlib, flex, bison }:
 
-let
-
-  baseName = "fdm";
-  version = "1.9.0.20170124";
-
-in
-
-stdenv.mkDerivation {
-  name = "${baseName}-${version}";
+stdenv.mkDerivation rec {
+  pname = "fdm";
+  version = "2.0";
 
   src = fetchFromGitHub {
     owner = "nicm";
-    repo = baseName;
-    rev = "cae4ea37b6b296d1b2e48f62934ea3a7f6085e33";
-    sha256 = "048191wdv1yprwinipmx2152gvd2iq1ssv7xfb1bzh6zirh1ya3n";
+    repo = pname;
+    rev = version;
+    sha256 = "0j2n271ni5wslgjq1f4zgz1nsvqjf895dxy3ij5c904bbp8ckcwq";
   };
 
   nativeBuildInputs = [ autoreconfHook ];
   buildInputs = [ openssl tdb zlib flex bison ];
 
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Mail fetching and delivery tool - should do the job of getmail and procmail";
-    maintainers = with maintainers; [ raskin ];
+    maintainers = with maintainers; [ ninjin raskin ];
     platforms = with platforms; linux;
     homepage = "https://github.com/nicm/fdm";
     downloadPage = "https://github.com/nicm/fdm/releases";
diff --git a/pkgs/tools/networking/ferm/default.nix b/pkgs/tools/networking/ferm/default.nix
index 855a57b7720..29f9481fe32 100644
--- a/pkgs/tools/networking/ferm/default.nix
+++ b/pkgs/tools/networking/ferm/default.nix
@@ -1,14 +1,14 @@
-{ stdenv, fetchurl, makeWrapper, perl, ebtables, ipset, iptables, nixosTests }:
+{ lib, stdenv, fetchurl, makeWrapper, perl, ebtables, ipset, iptables, nixosTests }:
 
 let
-  inherit (stdenv.lib.versions) majorMinor;
+  inherit (lib.versions) majorMinor;
 in stdenv.mkDerivation rec {
-  version = "2.5.1";
+  version = "2.6";
   pname = "ferm";
 
   src = fetchurl {
     url = "http://ferm.foo-projects.org/download/${majorMinor version}/ferm-${version}.tar.xz";
-    sha256 = "0awl9s243sxgayr2fcmfks8xydhrmb9gy8bd9sfq738dgq7vybjb";
+    sha256 = "sha256-aJVBRl58Bzy9YEyc0Y8RPDHAtBuxJhRyalmxfkQFiIU=";
   };
 
   # perl is used at build time to gather the ferm version.
@@ -23,7 +23,7 @@ in stdenv.mkDerivation rec {
   postInstall = ''
     rm -r $out/lib/systemd
     for i in "$out/sbin/"*; do
-      wrapProgram "$i" --prefix PATH : "${stdenv.lib.makeBinPath [ iptables ipset ebtables ]}"
+      wrapProgram "$i" --prefix PATH : "${lib.makeBinPath [ iptables ipset ebtables ]}"
     done
   '';
 
@@ -39,8 +39,8 @@ in stdenv.mkDerivation rec {
       command. The firewall configuration resembles structured programming-like
       language, which can contain levels and lists.
     '';
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = with stdenv.lib.maintainers; [mic92];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    maintainers = with lib.maintainers; [mic92];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/filegive/default.nix b/pkgs/tools/networking/filegive/default.nix
index bedb97200c1..1d7bf884edd 100644
--- a/pkgs/tools/networking/filegive/default.nix
+++ b/pkgs/tools/networking/filegive/default.nix
@@ -1,4 +1,4 @@
-{ buildGoPackage, stdenv, fetchurl }:
+{ buildGoPackage, lib, fetchurl }:
 
 buildGoPackage rec {
   name = "filegive-0.7.4";
@@ -12,7 +12,7 @@ buildGoPackage rec {
 
   goPackagePath = "viric.name/soft/filegive";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://viric.name/cgi-bin/filegive";
     description = "Easy p2p file sending program";
     license = licenses.agpl3Plus;
diff --git a/pkgs/tools/networking/findomain/default.nix b/pkgs/tools/networking/findomain/default.nix
index 07c7dda6446..018a210e4aa 100644
--- a/pkgs/tools/networking/findomain/default.nix
+++ b/pkgs/tools/networking/findomain/default.nix
@@ -4,24 +4,25 @@
 , rustPlatform
 , installShellFiles
 , perl
+, libiconv
 , Security
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "findomain";
-  version = "2.1.1";
+  version = "4.3.0";
 
   src = fetchFromGitHub {
     owner = "Edu4rdSHL";
     repo = pname;
     rev = version;
-    sha256 = "0v6m0c329wmba2fihnqvrmfnrb5b1l4nm6xr0dsjiwsjpclrmy86";
+    sha256 = "sha256-UC70XmhAVf2a2QO9bkIRE5vEsWyIA0DudZfKraNffGY=";
   };
 
-  cargoSha256 = "130kjjig5jsv3kdywj6ag2s55d5hwsslpcnaanrqyl70a6pvgpb2";
+  cargoSha256 = "sha256-Cdfh3smX6UjiG29L9hG22bOQQIjaNrv+okl153mIiso=";
 
   nativeBuildInputs = [ installShellFiles perl ];
-  buildInputs = lib.optional stdenv.isDarwin Security;
+  buildInputs = lib.optionals stdenv.isDarwin [ libiconv Security ];
 
   postInstall = ''
     installManPage ${pname}.1
@@ -30,7 +31,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     description = "The fastest and cross-platform subdomain enumerator";
     homepage = "https://github.com/Edu4rdSHL/findomain";
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ filalex77 ];
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ Br1ght0ne ];
   };
 }
diff --git a/pkgs/tools/networking/flannel/default.nix b/pkgs/tools/networking/flannel/default.nix
index 7ecfb559dcc..86010f4adb9 100644
--- a/pkgs/tools/networking/flannel/default.nix
+++ b/pkgs/tools/networking/flannel/default.nix
@@ -4,7 +4,7 @@ with lib;
 
 buildGoPackage rec {
   pname = "flannel";
-  version = "0.12.0";
+  version = "0.13.0";
   rev = "v${version}";
 
   goPackagePath = "github.com/coreos/flannel";
@@ -13,7 +13,7 @@ buildGoPackage rec {
     inherit rev;
     owner = "coreos";
     repo = "flannel";
-    sha256 = "04g7rzgyi3xs3sf5p1a9dmd08crdrz6y1b02ziv3444qk40jyswd";
+    sha256 = "0mmswnaybwpf18h832haapcs5b63wn5w2hax0smm3inldiggsbw8";
   };
 
   meta = {
diff --git a/pkgs/tools/networking/flvstreamer/default.nix b/pkgs/tools/networking/flvstreamer/default.nix
index 57f29b275e3..d31751e7d5c 100644
--- a/pkgs/tools/networking/flvstreamer/default.nix
+++ b/pkgs/tools/networking/flvstreamer/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
 
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
   };
 
   buildPhase = ''
-    make CC=cc posix
+    make CC=${stdenv.cc.targetPrefix}cc posix
   '';
 
   installPhase = ''
@@ -25,15 +25,15 @@ stdenv.mkDerivation rec {
     description = "Command-line RTMP client";
 
     longDescription =
-      '' flvstreamer is an open source command-line RTMP client intended to 
+      '' flvstreamer is an open source command-line RTMP client intended to
          stream audio or video content from all types of flash or rtmp servers.
       '';
 
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = lib.licenses.gpl2Plus;
 
     homepage = "https://savannah.nongnu.org/projects/flvstreamer";
 
-    maintainers = [ stdenv.lib.maintainers.thammers ];
-    platforms = with stdenv.lib.platforms; linux ++ darwin;
+    maintainers = [ lib.maintainers.thammers ];
+    platforms = with lib.platforms; linux ++ darwin;
   };
 }
diff --git a/pkgs/tools/networking/fping/default.nix b/pkgs/tools/networking/fping/default.nix
index d170ee4cd0e..7974fdd244b 100644
--- a/pkgs/tools/networking/fping/default.nix
+++ b/pkgs/tools/networking/fping/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   name = "fping-5.0";
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
 
   configureFlags = [ "--enable-ipv6" "--enable-ipv4" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://fping.org/";
     description = "Send ICMP echo probes to network hosts";
     license = licenses.bsd0;
diff --git a/pkgs/tools/networking/freebind/default.nix b/pkgs/tools/networking/freebind/default.nix
index c1dc3d8fd5f..5ba462f15b2 100644
--- a/pkgs/tools/networking/freebind/default.nix
+++ b/pkgs/tools/networking/freebind/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, libnetfilter_queue, libnfnetlink }:
+{ lib, stdenv, fetchFromGitHub, libnetfilter_queue, libnfnetlink }:
 
 stdenv.mkDerivation {
   pname = "freebind";
@@ -22,7 +22,7 @@ stdenv.mkDerivation {
     mkdir -p $out/bin $out/lib
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "IPv4 and IPv6 address rate limiting evasion tool";
     homepage = "https://github.com/blechschmidt/freebind";
     license = licenses.gpl3;
diff --git a/pkgs/tools/networking/frp/default.nix b/pkgs/tools/networking/frp/default.nix
index a998b25e3e7..871dd5ee5bd 100644
--- a/pkgs/tools/networking/frp/default.nix
+++ b/pkgs/tools/networking/frp/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "frp";
-  version = "0.33.0";
+  version = "0.36.1";
 
   src = fetchFromGitHub {
     owner = "fatedier";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1z914p20n3i1bf4hx5iq2fylx1s49knb70cbg53ji2n7nrm1q33r";
+    sha256 = "sha256-oOq5Y/6n7VHU9WPjnt+moVWZgo8mQl6Jd8daLJ2/pSQ=";
   };
 
-  vendorSha256 = "0pi661mb5vwj16wwxnyx9b0ic7gzby6qfs3y4w00agn6sn5nahx2";
+  vendorSha256 = "sha256-Q4ZwCH/RTa8cLtSg06s1S790MdZLgfWOvaD+WAt/RBM=";
 
   doCheck = false;
 
@@ -27,6 +27,6 @@ buildGoModule rec {
     '';
     homepage = "https://github.com/fatedier/frp";
     license = licenses.asl20;
-    maintainers = with maintainers; [ filalex77 ];
+    maintainers = with maintainers; [ Br1ght0ne ];
   };
 }
diff --git a/pkgs/tools/networking/gandi-cli/default.nix b/pkgs/tools/networking/gandi-cli/default.nix
index b323cde28bc..d7394ac94d8 100644
--- a/pkgs/tools/networking/gandi-cli/default.nix
+++ b/pkgs/tools/networking/gandi-cli/default.nix
@@ -1,26 +1,38 @@
-{ stdenv, python3Packages, fetchFromGitHub }:
-
-with python3Packages;
+{ lib
+, buildPythonApplication
+, click
+, fetchFromGitHub
+, ipy
+, pyyaml
+, requests
+}:
 
 buildPythonApplication rec {
   pname = "gandi-cli";
-  version = "1.5";
+  version = "1.6";
 
   src = fetchFromGitHub {
     owner = "Gandi";
     repo = "gandi.cli";
     rev = version;
-    sha256 = "1jcabpphlm6qajw8dz0h4gynm03g1mxi0cn900i3v7wdfww1gfab";
+    sha256 = "sha256-KLeEbbzgqpmBjeTc5RYsFScym8xtMqVjU+H0lyDM0+o=";
   };
 
-  propagatedBuildInputs = [ click ipy pyyaml requests ];
+  propagatedBuildInputs = [
+    click
+    ipy
+    pyyaml
+    requests
+  ];
 
-  doCheck = false;    # Tests try to contact the actual remote API
+  # Tests try to contact the actual remote API
+  doCheck = false;
+  pythonImportsCheck = [ "gandi" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Command-line interface to the public Gandi.net API";
     homepage = "https://cli.gandi.net/";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ kampka ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/tools/networking/getmail/default.nix b/pkgs/tools/networking/getmail/default.nix
index 0bf0ebb07b3..fc06ba0363d 100644
--- a/pkgs/tools/networking/getmail/default.nix
+++ b/pkgs/tools/networking/getmail/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, python2Packages }:
+{ lib, fetchurl, python2Packages }:
 
 python2Packages.buildPythonApplication rec {
   pname = "getmail";
@@ -19,12 +19,11 @@ python2Packages.buildPythonApplication rec {
 
   meta = {
     description = "A program for retrieving mail";
-    maintainers = [ stdenv.lib.maintainers.raskin stdenv.lib.maintainers.domenkozar ];
-    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ lib.maintainers.raskin ];
+    platforms = lib.platforms.linux;
 
     homepage = "http://pyropus.ca/software/getmail/";
-    inherit version;
     updateWalker = true;
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = lib.licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/tools/networking/getmail6/default.nix b/pkgs/tools/networking/getmail6/default.nix
new file mode 100644
index 00000000000..dc36a7d124a
--- /dev/null
+++ b/pkgs/tools/networking/getmail6/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, python3
+, fetchFromGitHub
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "getmail6";
+  version = "6.18.3";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-8tBSi9QzWcVL09j6aa2yWFhLlqaI6DREX2PpKvHC3qU=";
+  };
+
+  # needs a Docker setup
+  doCheck = false;
+
+  pythonImportsCheck = [ "getmailcore" ];
+
+  postPatch = ''
+    # getmail spends a lot of effort to build an absolute path for
+    # documentation installation; too bad it is counterproductive now
+    sed -e '/datadir or prefix,/d' -i setup.py
+  '';
+
+  meta = with lib; {
+    description = "A program for retrieving mail";
+    homepage = "https://getmail6.org";
+    updateWalker = true;
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ abbe dotlambda ];
+  };
+}
diff --git a/pkgs/tools/networking/gftp/default.nix b/pkgs/tools/networking/gftp/default.nix
index f6aa4c061ce..b228967a73b 100644
--- a/pkgs/tools/networking/gftp/default.nix
+++ b/pkgs/tools/networking/gftp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, gtk2, readline, ncurses, gettext, openssl, pkgconfig }:
+{ lib, stdenv, fetchurl, gtk2, readline, ncurses, gettext, openssl, pkg-config }:
 
 stdenv.mkDerivation {
   name = "gftp-2.0.19";
@@ -12,13 +12,13 @@ stdenv.mkDerivation {
     sed -i -e '/<stropts.h>/d' lib/pty.c
   '';
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ gtk2 readline ncurses gettext openssl ];
 
   meta = {
     description = "GTK-based FTP client";
     homepage = "http://www.gftp.org";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.unix;
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/ghostunnel/default.nix b/pkgs/tools/networking/ghostunnel/default.nix
new file mode 100644
index 00000000000..5d00b493bc3
--- /dev/null
+++ b/pkgs/tools/networking/ghostunnel/default.nix
@@ -0,0 +1,29 @@
+{
+  buildGoModule,
+  fetchFromGitHub,
+  lib,
+  nixosTests,
+}:
+
+buildGoModule rec {
+  pname = "ghostunnel";
+  version = "1.5.3";
+
+  src = fetchFromGitHub {
+    owner = "ghostunnel";
+    repo = "ghostunnel";
+    rev = "v${version}";
+    sha256 = "15rmd89j7sfpznzznss899smizbyshprsrvsdmrbhb617myd9fpy";
+  };
+
+  vendorSha256 = "1i95fx4a0fh6id6iy6afbva4pazr7ym6sbwi9r7la6gxzyncd023";
+
+  meta = with lib; {
+    description = "A simple TLS proxy with mutual authentication support for securing non-TLS backend applications";
+    homepage = "https://github.com/ghostunnel/ghostunnel#readme";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ roberth ];
+  };
+
+  passthru.tests.nixos = nixosTests.ghostunnel;
+}
diff --git a/pkgs/tools/networking/globalprotect-openconnect/default.nix b/pkgs/tools/networking/globalprotect-openconnect/default.nix
new file mode 100644
index 00000000000..d61668f7b65
--- /dev/null
+++ b/pkgs/tools/networking/globalprotect-openconnect/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, lib, fetchFromGitHub
+, qmake, qtwebsockets, qtwebengine, wrapQtAppsHook, openconnect
+}:
+
+stdenv.mkDerivation rec {
+  pname = "globalprotect-openconnect";
+  version = "1.2.6";
+
+  src = fetchFromGitHub {
+    owner = "yuezk";
+    repo = "GlobalProtect-openconnect";
+    rev = "c14a6ad1d2b62f8d297bc4cfbcb1dcea4d99112f";
+    fetchSubmodules = true;
+    sha256 = "1zkc3vk1j31n2zs5ammzv23dah7x163gfrzz222ynbkvsccrhzrk";
+  };
+
+  nativeBuildInputs = [ qmake wrapQtAppsHook ];
+
+  buildInputs = [ openconnect qtwebsockets qtwebengine ];
+
+  patchPhase = ''
+    for f in GPClient/GPClient.pro \
+      GPClient/com.yuezk.qt.gpclient.desktop \
+      GPService/GPService.pro \
+      GPService/dbus/com.yuezk.qt.GPService.service \
+      GPService/systemd/gpservice.service; do
+        substituteInPlace $f \
+          --replace /usr $out \
+          --replace /etc $out/lib;
+    done;
+
+    substituteInPlace GPService/gpservice.h \
+      --replace /usr/local/bin/openconnect ${openconnect}/bin/openconnect;
+  '';
+
+  meta = with lib; {
+    description = "GlobalProtect VPN client (GUI) for Linux based on OpenConnect that supports SAML auth mode";
+    homepage = "https://github.com/yuezk/GlobalProtect-openconnect";
+    license = licenses.gpl3Only;
+    maintainers = [ maintainers.jerith666 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/networking/gmrender-resurrect/default.nix b/pkgs/tools/networking/gmrender-resurrect/default.nix
index fa364dc4eab..d4fc1b22e8f 100644
--- a/pkgs/tools/networking/gmrender-resurrect/default.nix
+++ b/pkgs/tools/networking/gmrender-resurrect/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, makeWrapper, gstreamer
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, makeWrapper, gstreamer
 , gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, gst-libav, libupnp }:
 
 let
-  version = "0.0.8";
+  version = "0.0.9";
 
   makePluginPath = plugins: builtins.concatStringsSep ":" (map (p: p + "/lib/gstreamer-1.0") plugins);
 
@@ -16,11 +16,11 @@ in
       owner = "hzeller";
       repo = "gmrender-resurrect";
       rev = "v${version}";
-      sha256 = "14i5jrry6qiap5l2x2jqj7arymllajl3wgnk29ccvr8d45zp4jn1";
+      sha256 = "0byxd28hnhkhf3lqsad43n6czfajvc1ksg9zikxb95wwk4ljqv1q";
     };
 
     buildInputs = [ gstreamer libupnp ];
-    nativeBuildInputs = [ autoreconfHook pkgconfig makeWrapper ];
+    nativeBuildInputs = [ autoreconfHook pkg-config makeWrapper ];
 
     postInstall = ''
       for prog in "$out/bin/"*; do
@@ -28,11 +28,11 @@ in
       done
     '';
 
-    meta = with stdenv.lib; {
+    meta = with lib; {
       description = "Resource efficient UPnP/DLNA renderer, optimal for Raspberry Pi, CuBox or a general MediaServer";
       homepage = "https://github.com/hzeller/gmrender-resurrect";
-      license = licenses.gpl2;
+      license = licenses.gpl2Plus;
       platforms = platforms.linux;
-      maintainers = with maintainers; [ koral ashkitten ];
+      maintainers = with maintainers; [ koral hzeller ];
     };
   }
diff --git a/pkgs/tools/networking/gmvault/default.nix b/pkgs/tools/networking/gmvault/default.nix
deleted file mode 100644
index 31b91c01c2d..00000000000
--- a/pkgs/tools/networking/gmvault/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ pkgs, fetchurl, pythonPackages }:
-
-pythonPackages.buildPythonApplication rec {
-  version = "1.9.1";
-  pname = "gmvault";
-
-  src = fetchurl {
-    url = "https://bitbucket.org/gaubert/gmvault-official-download/downloads/gmvault-v${version}-src.tar.gz";
-    name = "${pname}-${version}.tar.bz";
-    sha256 = "0ffp8df3gdf6lf3pj75hzsmxmvmscppb6bjda58my1n4ppxp1rji";
-  };
-
-  doCheck = false;
-
-  propagatedBuildInputs = with pythonPackages; [ gdata IMAPClient Logbook chardet ];
-
-  startScript = ./gmvault.py;
-
-  patchPhase = ''
-    cat ${startScript} > etc/scripts/gmvault
-    chmod +x etc/scripts/gmvault
-    substituteInPlace setup.py --replace "==" ">="
-    substituteInPlace setup.py --replace "argparse" ""
-  '';
-
-  meta = {
-    description = "Backup and restore your gmail account";
-    homepage = "http://gmvault.org";
-    license = pkgs.lib.licenses.agpl3Plus;
-  };
-}
diff --git a/pkgs/tools/networking/gmvault/gmvault.py b/pkgs/tools/networking/gmvault/gmvault.py
deleted file mode 100644
index 127036577f3..00000000000
--- a/pkgs/tools/networking/gmvault/gmvault.py
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env python
-
-import gmv.gmv_cmd as runner
-runner.bootstrap_run()
diff --git a/pkgs/tools/networking/gnirehtet/default.nix b/pkgs/tools/networking/gnirehtet/default.nix
index f739e80be1f..123ab3d76ee 100644
--- a/pkgs/tools/networking/gnirehtet/default.nix
+++ b/pkgs/tools/networking/gnirehtet/default.nix
@@ -1,12 +1,12 @@
-{stdenv, rustPlatform, fetchFromGitHub, fetchzip, androidenv, substituteAll}:
+{ lib, stdenv, rustPlatform, fetchFromGitHub, fetchzip, androidenv, makeWrapper }:
 let
-version = "2.4";
+version = "2.5";
 apk = stdenv.mkDerivation {
   pname = "gnirehtet.apk";
   inherit version;
   src = fetchzip {
     url = "https://github.com/Genymobile/gnirehtet/releases/download/v${version}/gnirehtet-rust-linux64-v${version}.zip";
-    sha256 = "13gsh5982v961j86j5y71pgas94g2d1v1fgnbslbqw4h69fbf48g";
+    sha256 = "1db0gkg5z8lighhkyqfsr9jiacrck89zmfnmp74vj865hhxgjzgq";
   };
   installPhase = ''
     mkdir $out
@@ -22,21 +22,20 @@ rustPlatform.buildRustPackage {
       owner = "Genymobile";
       repo = "gnirehtet";
       rev = "v${version}";
-      sha256 = "1c99d6zpjxa8xlrg0n1825am20d2pjiicfcjwv8iay9ylfdnvygl";
+      sha256 = "0wk6n082gnj9xk46n542h1012h8gyhldca23bs7vl73g0534g878";
   };
   sourceRoot = "source/relay-rust";
-  cargoSha256 = "0rb5xcqg5ikgrxpmzrql5n298j50aqgkkp45znbfv2x2n40dywad";
+  cargoSha256 = "03r8ivsvmhi5f32gj4yacbyzanziymszya18dani53bq9zis9z31";
 
-  patchFlags = [ "-p2" ];
-  patches = [
-    (substituteAll {
-      src = ./paths.patch;
-      adb = "${androidenv.androidPkgs_9_0.platform-tools}/bin/adb";
-      inherit apk;
-    })
-  ];
+  nativeBuildInputs = [ makeWrapper ];
 
-  meta = with stdenv.lib; {
+  postInstall = ''
+    wrapProgram $out/bin/gnirehtet \
+    --set GNIREHTET_APK ${apk}/gnirehtet.apk \
+    --set ADB ${androidenv.androidPkgs_9_0.platform-tools}/bin/adb
+  '';
+
+  meta = with lib; {
     description = "Reverse tethering over adb for Android";
     longDescription = ''
       This project provides reverse tethering over adb for Android: it allows devices to use the internet connection of the computer they are plugged on. It does not require any root access (neither on the device nor on the computer).
diff --git a/pkgs/tools/networking/gnirehtet/paths.patch b/pkgs/tools/networking/gnirehtet/paths.patch
deleted file mode 100644
index e5df4b8e4fe..00000000000
--- a/pkgs/tools/networking/gnirehtet/paths.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-Index: gnirehtet/relay-rust/src/main.rs
-===================================================================
---- gnirehtet.orig/relay-rust/src/main.rs
-+++ gnirehtet/relay-rust/src/main.rs
-@@ -299,7 +299,7 @@ impl Command for RelayCommand {
- 
- fn cmd_install(serial: Option<&String>) -> Result<(), CommandExecutionError> {
-     info!(target: TAG, "Installing gnirehtet client...");
--    exec_adb(serial, vec!["install", "-r", "gnirehtet.apk"])
-+    exec_adb(serial, vec!["install", "-r", "@apk@/gnirehtet.apk"])
- }
- 
- fn cmd_uninstall(serial: Option<&String>) -> Result<(), CommandExecutionError> {
-@@ -464,8 +464,8 @@ fn exec_adb<S: Into<String>>(
-     args: Vec<S>,
- ) -> Result<(), CommandExecutionError> {
-     let adb_args = create_adb_args(serial, args);
--    debug!(target: TAG, "Execute: adb {:?}", adb_args);
--    match process::Command::new("adb").args(&adb_args[..]).status() {
-+    debug!(target: TAG, "Execute: @adb@ {:?}", adb_args);
-+    match process::Command::new("@adb@").args(&adb_args[..]).status() {
-         Ok(exit_status) => {
-             if exit_status.success() {
-                 Ok(())
-@@ -487,8 +487,8 @@ fn must_install_client(serial: Option<&S
-         serial,
-         vec!["shell", "dumpsys", "package", "com.genymobile.gnirehtet"],
-     );
--    debug!(target: TAG, "Execute: adb {:?}", args);
--    match process::Command::new("adb").args(&args[..]).output() {
-+    debug!(target: TAG, "Execute: @adb@ {:?}", args);
-+    match process::Command::new("@adb@").args(&args[..]).output() {
-         Ok(output) => {
-             if output.status.success() {
-                 // the "regex" crate makes the binary far bigger, so just parse the versionCode
-Index: gnirehtet/relay-rust/src/adb_monitor.rs
-===================================================================
---- gnirehtet.orig/relay-rust/src/adb_monitor.rs
-+++ gnirehtet/relay-rust/src/adb_monitor.rs
-@@ -206,7 +206,7 @@ impl AdbMonitor {
-
-     fn start_adb_daemon() -> bool {
-         info!(target: TAG, "Restarting adb daemon");
--        match process::Command::new("adb")
-+        match process::Command::new("@adb@")
-             .args(&["start-server"])
-             .status() {
-             Ok(exit_status) => {
diff --git a/pkgs/tools/networking/go-shadowsocks2/default.nix b/pkgs/tools/networking/go-shadowsocks2/default.nix
index 6b55c21b5b0..0c8505c7001 100644
--- a/pkgs/tools/networking/go-shadowsocks2/default.nix
+++ b/pkgs/tools/networking/go-shadowsocks2/default.nix
@@ -1,21 +1,19 @@
-{ stdenv, buildGoPackage, fetchFromGitHub }:
+{ lib, buildGoModule, fetchFromGitHub }:
 
-buildGoPackage rec {
+buildGoModule rec {
   pname = "go-shadowsocks2";
-  version = "0.0.11";
-
-  goPackagePath = "github.com/shadowsocks/go-shadowsocks2";
+  version = "0.1.4";
 
   src = fetchFromGitHub {
     owner = "shadowsocks";
     repo = "go-shadowsocks2";
     rev = "v${version}";
-    sha256 = "1dprz84gmcp6xcsk873lhj32wm8b55vnqn0s984ggvwf1rjqw00c";
+    sha256 = "sha256-ouJGrVribymak4SWaLbGhlp41iuw07VdxCypoBr1hWA=";
   };
 
-  goDeps = ./deps.nix;
+  vendorSha256 = "sha256-RrHksWET5kicbdQ5HRDWhNxx4rTi2zaVeaPoLdg4uQw=";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Fresh implementation of Shadowsocks in Go";
     homepage = "https://github.com/shadowsocks/go-shadowsocks2/";
     license = licenses.asl20;
diff --git a/pkgs/tools/networking/go-shadowsocks2/deps.nix b/pkgs/tools/networking/go-shadowsocks2/deps.nix
deleted file mode 100644
index 7fe0c2b6985..00000000000
--- a/pkgs/tools/networking/go-shadowsocks2/deps.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-# This file was generated by https://github.com/kamilchm/go2nix v1.3.0
-[
-  {
-    goPackagePath = "github.com/aead/chacha20";
-    fetch = {
-      type = "git";
-      url = "https://github.com/aead/chacha20";
-      rev = "8b13a72661dae6e9e5dea04f344f0dc95ea29547";
-      sha256 = "0gbmgq5kbqmbyrsav57ql4jzbvqvp1q7yvcd5fl3wf5g94iyv56r";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/crypto";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/crypto";
-      rev = "60c769a6c58655dab1b9adac0d58967dd517cfba";
-      sha256 = "1wy2pg38dz29vf1h48yfqf8m3jqvwnbdw8vkk3ldlj5d8fbbbmv8";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/sys";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/sys";
-      rev = "fb81701db80f1745f51259b1f286de3fe2ec80c8";
-      sha256 = "1cgvyzkmsbvgyp75nxp10fpnpy08scz6ak60s9w0mkgibw7irhz3";
-    };
-  }
-]
diff --git a/pkgs/tools/networking/gobgp/default.nix b/pkgs/tools/networking/gobgp/default.nix
new file mode 100644
index 00000000000..98925489e54
--- /dev/null
+++ b/pkgs/tools/networking/gobgp/default.nix
@@ -0,0 +1,33 @@
+{ buildGoModule, fetchFromGitHub, lib }:
+
+buildGoModule rec {
+  pname = "gobgp";
+  version = "2.29.0";
+
+  src = fetchFromGitHub {
+    owner = "osrg";
+    repo = "gobgp";
+    rev = "v${version}";
+    sha256 = "sha256-DhSIf8fAG2Zf0mwJ/iMgQU5sugHK2jJ6WJPbFbA/mhM=";
+  };
+
+  vendorSha256 = "sha256-PWm7XnO6LPaU8g8ymmqRkQv2KSX9kLv9RVaa000mrTY=";
+
+  postConfigure = ''
+    export CGO_ENABLED=0
+  '';
+
+  buildFlagsArray = ''
+    -ldflags=
+    -s -w -extldflags '-static'
+  '';
+
+  subPackages = [ "cmd/gobgp" ];
+
+  meta = with lib; {
+    description = "A CLI tool for GoBGP";
+    homepage = "https://osrg.github.io/gobgp/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ higebu ];
+  };
+}
diff --git a/pkgs/tools/networking/goimapnotify/default.nix b/pkgs/tools/networking/goimapnotify/default.nix
index fb64ff65cc1..619e364c884 100644
--- a/pkgs/tools/networking/goimapnotify/default.nix
+++ b/pkgs/tools/networking/goimapnotify/default.nix
@@ -1,4 +1,4 @@
-{ buildGoPackage, fetchFromGitLab, lib }:
+{ buildGoPackage, fetchFromGitLab, lib, runtimeShell }:
 
 buildGoPackage rec {
   pname = "goimapnotify";
@@ -9,10 +9,14 @@ buildGoPackage rec {
   src = fetchFromGitLab {
     owner = "shackra";
     repo = "goimapnotify";
-    rev = "${version}";
+    rev = version;
     sha256 = "1d42gd3m2rkvy985d181dbcm5i3f7xsg2z8z6s4bpvw24pfnzs42";
   };
 
+  postPatch = ''
+    substituteInPlace command.go --replace '"sh"' '"${runtimeShell}"'
+  '';
+
   goDeps = ./deps.nix;
 
   meta = with lib; {
diff --git a/pkgs/tools/networking/goklp/default.nix b/pkgs/tools/networking/goklp/default.nix
index 534a809e46a..10c5c8ea64f 100644
--- a/pkgs/tools/networking/goklp/default.nix
+++ b/pkgs/tools/networking/goklp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildGoPackage, fetchFromGitHub }:
+{ lib, buildGoPackage, fetchFromGitHub }:
 
 buildGoPackage rec {
   pname = "goklp";
@@ -15,7 +15,7 @@ buildGoPackage rec {
 
   goDeps = ./deps.nix;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Golang OpenSSH Keys Ldap Provider for AuthorizedKeysCommand";
     homepage = "https://github.com/AppliedTrust/goklp";
     maintainers = with maintainers; [ disassembler ];
diff --git a/pkgs/tools/networking/goreplay/default.nix b/pkgs/tools/networking/goreplay/default.nix
new file mode 100644
index 00000000000..14d0a16366b
--- /dev/null
+++ b/pkgs/tools/networking/goreplay/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoPackage, fetchFromGitHub, libpcap }:
+
+buildGoPackage rec {
+  pname = "goreplay";
+  version = "1.1.0";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/buger/goreplay";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner  = "buger";
+    repo   = "goreplay";
+    sha256 = "07nsrx5hwmk6l8bqp48gqk40i9bxf0g4fbmpqbngx6j5f7lpbk2n";
+  };
+
+  buildInputs = [ libpcap ];
+
+  meta = {
+    homepage = "https://github.com/buger/goreplay";
+    license = lib.licenses.lgpl3Only;
+    description = "Open-source tool for capturing and replaying live HTTP traffic";
+    platforms = lib.platforms.unix;
+    maintainers = with lib.maintainers; [ lovek323 ];
+  };
+}
diff --git a/pkgs/tools/networking/gping/default.nix b/pkgs/tools/networking/gping/default.nix
index 092f3611abb..a6ace183df6 100644
--- a/pkgs/tools/networking/gping/default.nix
+++ b/pkgs/tools/networking/gping/default.nix
@@ -1,32 +1,29 @@
 { lib
-, iputils
-, python3
-, python3Packages
+, stdenv
+, rustPlatform
+, fetchFromGitHub
+, libiconv
 }:
 
-python3Packages.buildPythonApplication rec {
+rustPlatform.buildRustPackage rec {
   pname = "gping";
-  version = "1.1";
+  version = "1.2.1";
 
-  propagatedBuildInputs = with python3Packages; [ colorama ];
-
-  src = python3Packages.fetchPypi {
-    inherit version;
-    pname  = "pinggraph";
-    sha256 = "0q5ma98457zb6vxsnhmrr3p38j1vg0gl155y0adzfg67wlniac92";
+  src = fetchFromGitHub {
+    owner = "orf";
+    repo = "gping";
+    rev = "v${version}";
+    sha256 = "sha256-lApm1JLXNjDKLj6zj25OaZDVp7lLW3qyrDsvJrudl8I=";
   };
 
-  # Make path to ping explicit
-  postFixup = ''
-    substituteInPlace $out/${python3.sitePackages}/gping/pinger.py \
-      --replace 'subprocess.getoutput("ping ' 'subprocess.getoutput("${iputils}/bin/ping ' \
-      --replace 'args = ["ping"]' 'args = ["${iputils}/bin/ping"]'
-  '';
+  cargoSha256 = "sha256-d1NjPwT3YDp1U9JWeUejpWDbJonFlt5lYbUf7p3jVT0=";
+
+  buildInputs = lib.optional stdenv.isDarwin libiconv;
 
   meta = with lib; {
     description = "Ping, but with a graph";
     homepage = "https://github.com/orf/gping";
-    license = licenses.gpl2;
+    license = licenses.mit;
     maintainers = with maintainers; [ andrew-d ];
   };
 }
diff --git a/pkgs/tools/networking/grpcui/default.nix b/pkgs/tools/networking/grpcui/default.nix
index be3ed2ea2c6..a9fb7c823f9 100644
--- a/pkgs/tools/networking/grpcui/default.nix
+++ b/pkgs/tools/networking/grpcui/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "grpcui";
-  version = "1.0.0";
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "fullstorydev";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0b6rc294v8jagk79hcjbaldfi7y7idx8bknsbdi3djym5rspdg6s";
+    sha256 = "1l8ldx7nx2pa2ac5znss0j0dhapn3syj02xqys4jz22hr5gvfj6m";
   };
 
-  vendorSha256 = "0wih9xvpgqqd82v1pxy5rslrsd6wsl0ys1bi1mf373dnfq5vh5a9";
+  vendorSha256 = "15qgpbsl41swifw8w1lx0pbniwv3rf35127ald7h1r157vfa0r8b";
 
   doCheck = false;
 
diff --git a/pkgs/tools/networking/grpcurl/default.nix b/pkgs/tools/networking/grpcurl/default.nix
index 6a72be9a1e4..734a751daf0 100644
--- a/pkgs/tools/networking/grpcurl/default.nix
+++ b/pkgs/tools/networking/grpcurl/default.nix
@@ -1,27 +1,26 @@
-# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
-# and modified to add meta and switch to fetchFromGitHub
-{ stdenv, buildGoPackage, fetchFromGitHub }:
+{ lib, buildGoModule, fetchFromGitHub }:
 
-buildGoPackage rec {
+buildGoModule rec {
   pname = "grpcurl";
-  version = "1.4.0";
-  rev = "v${version}";
-
-  goPackagePath = "github.com/fullstorydev/grpcurl";
+  version = "1.8.2";
 
   src = fetchFromGitHub {
     owner = "fullstorydev";
     repo = "grpcurl";
-    rev = "ccc9007156e7177388c8dd45ec694aebeb2da996";
-    sha256 = "1zgiqg9c6vk45x16n04bpfvj9z838nck7ihdcsbfz89xgq7f1c0b";
+    rev = "v${version}";
+    sha256 = "sha256-/no8bRGoKibtcjaITUuzwAbX+gPHNJROSf79iuuRwe4=";
   };
 
-  goDeps = ./deps.nix;
+  subPackages = [ "cmd/grpcurl" ];
+
+  vendorSha256 = "sha256-nl8vKVhUMSO20qCDyhNkU5cghNy8vIFqSBvLk59nbWg=";
+
+  buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version}" ];
 
-  meta = {
+  meta = with lib; {
     description = "Like cURL, but for gRPC: Command-line tool for interacting with gRPC servers";
     homepage = "https://github.com/fullstorydev/grpcurl";
-    license = stdenv.lib.licenses.mit;
-    maintainers = with stdenv.lib.maintainers; [ knl ];
+    license = licenses.mit;
+    maintainers = with maintainers; [ knl ];
   };
 }
diff --git a/pkgs/tools/networking/grpcurl/deps.nix b/pkgs/tools/networking/grpcurl/deps.nix
deleted file mode 100644
index 91ec4db79b6..00000000000
--- a/pkgs/tools/networking/grpcurl/deps.nix
+++ /dev/null
@@ -1,183 +0,0 @@
-# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
-[
-  {
-    goPackagePath = "cloud.google.com/go";
-    fetch = {
-      type = "git";
-      url = "https://code.googlesource.com/gocloud";
-      rev = "v0.26.0";
-      sha256 = "149v3ci17g6wd2pm18mzcncq5qpl9hwdjnz3rlbn5rfidyn46la1";
-    };
-  }
-  {
-    goPackagePath = "github.com/BurntSushi/toml";
-    fetch = {
-      type = "git";
-      url = "https://github.com/BurntSushi/toml";
-      rev = "v0.3.1";
-      sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6";
-    };
-  }
-  {
-    goPackagePath = "github.com/client9/misspell";
-    fetch = {
-      type = "git";
-      url = "https://github.com/client9/misspell";
-      rev = "v0.3.4";
-      sha256 = "1vwf33wsc4la25zk9nylpbp9px3svlmldkm0bha4hp56jws4q9cs";
-    };
-  }
-  {
-    goPackagePath = "github.com/golang/glog";
-    fetch = {
-      type = "git";
-      url = "https://github.com/golang/glog";
-      rev = "23def4e6c14b";
-      sha256 = "0jb2834rw5sykfr937fxi8hxi2zy80sj2bdn9b3jb4b26ksqng30";
-    };
-  }
-  {
-    goPackagePath = "github.com/golang/mock";
-    fetch = {
-      type = "git";
-      url = "https://github.com/golang/mock";
-      rev = "v1.1.1";
-      sha256 = "0ap8wb6pdl6ccmdb43advjll2ly4sz26wsc3axw0hbrjrybybzgy";
-    };
-  }
-  {
-    goPackagePath = "github.com/golang/protobuf";
-    fetch = {
-      type = "git";
-      url = "https://github.com/golang/protobuf";
-      rev = "v1.3.1";
-      sha256 = "15am4s4646qy6iv0g3kkqq52rzykqjhm4bf08dk0fy2r58knpsyl";
-    };
-  }
-  {
-    goPackagePath = "github.com/google/go-cmp";
-    fetch = {
-      type = "git";
-      url = "https://github.com/google/go-cmp";
-      rev = "v0.2.0";
-      sha256 = "1fbv0x27k9sn8svafc0hjwsnckk864lv4yi7bvzrxvmd3d5hskds";
-    };
-  }
-  {
-    goPackagePath = "github.com/jhump/protoreflect";
-    fetch = {
-      type = "git";
-      url = "https://github.com/jhump/protoreflect";
-      rev = "v1.5.0";
-      sha256 = "1xwccif809sbgf0xginpd1cm3q1dv7c1rv0qhnvjwbkp9agd0x2a";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/crypto";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/crypto";
-      rev = "c2843e01d9a2";
-      sha256 = "01xgxbj5r79nmisdvpq48zfy8pzaaj90bn6ngd4nf33j9ar1dp8r";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/lint";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/lint";
-      rev = "d0100b6bd8b3";
-      sha256 = "0b0amr9x4ji66iv9ayfx7zrfx52k1m5g66qfcxkgj80qrb1y2yn7";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/net";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/net";
-      rev = "d8887717615a";
-      sha256 = "1wfm6ngxjyj7v5a2dqib6lw8bb2rdnf1kl48diykxjrsddn0s163";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/oauth2";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/oauth2";
-      rev = "d2e6202438be";
-      sha256 = "0wbn75fd10485nb93bm4kqldqifdim5xqy4v7r5sdvimvf3fyhn7";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/sync";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/sync";
-      rev = "1d60e4601c6f";
-      sha256 = "046jlanz2lkxq1r57x9bl6s4cvfqaic6p2xybsj8mq1120jv4rs6";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/sys";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/sys";
-      rev = "d0b11bdaac8a";
-      sha256 = "18yfsmw622l7gc5sqriv5qmck6903vvhivpzp8i3xfy3z33dybdl";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/text";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/text";
-      rev = "v0.3.0";
-      sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/tools";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/tools";
-      rev = "11955173bddd";
-      sha256 = "0hlkai67w167wiyivkzd1fgqrnyxkb94l2c6kr51jwcscizfyfn3";
-    };
-  }
-  {
-    goPackagePath = "google.golang.org/appengine";
-    fetch = {
-      type = "git";
-      url = "https://github.com/golang/appengine";
-      rev = "v1.1.0";
-      sha256 = "1pz202zszg8f35dk5pfhwgcdi3r6dx1l4yk6x6ly7nb4j45zi96x";
-    };
-  }
-  {
-    goPackagePath = "google.golang.org/genproto";
-    fetch = {
-      type = "git";
-      url = "https://github.com/google/go-genproto";
-      rev = "c66870c02cf8";
-      sha256 = "0siq7sv68556ygqi2d2zmvx8l1xjqdc0fylqzci5h1mq2i14bayn";
-    };
-  }
-  {
-    goPackagePath = "google.golang.org/grpc";
-    fetch = {
-      type = "git";
-      url = "https://github.com/grpc/grpc-go";
-      rev = "v1.21.0";
-      sha256 = "0zxjlxnvjqfn6zfx7gbmqhadx0j788vxfn95g1ngbmjkgppzsnfp";
-    };
-  }
-  {
-    goPackagePath = "honnef.co/go/tools";
-    fetch = {
-      type = "git";
-      url = "https://github.com/dominikh/go-tools";
-      rev = "c2f93a96b099";
-      sha256 = "07lg29aiap80ca9f201jzng9vjr168cv3qmvjmbd7v5pmww9kmr8";
-    };
-  }
-]
diff --git a/pkgs/tools/networking/guardian-agent/default.nix b/pkgs/tools/networking/guardian-agent/default.nix
index 262234ca67b..57080d223fa 100644
--- a/pkgs/tools/networking/guardian-agent/default.nix
+++ b/pkgs/tools/networking/guardian-agent/default.nix
@@ -20,6 +20,7 @@ buildGoPackage rec {
 
   goPackagePath = "github.com/StanfordSNR/guardian-agent";
 
+  deleteVendor = true;
   goDeps = ./deps.nix;
 
   postInstall = ''
@@ -29,9 +30,9 @@ buildGoPackage rec {
   '';
 
   postFixup = ''
-		wrapProgram $out/bin/sga-guard \
-			--prefix PATH : "$out/bin" \
-			--prefix PATH : "${autossh}/bin"
+    wrapProgram $out/bin/sga-guard \
+      --prefix PATH : "$out/bin" \
+      --prefix PATH : "${autossh}/bin"
   '';
 
   meta = with lib; {
diff --git a/pkgs/tools/networking/gupnp-tools/default.nix b/pkgs/tools/networking/gupnp-tools/default.nix
index c93873caa07..c1861e33c08 100644
--- a/pkgs/tools/networking/gupnp-tools/default.nix
+++ b/pkgs/tools/networking/gupnp-tools/default.nix
@@ -1,16 +1,16 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
 , meson
 , ninja
 , gupnp
 , gssdp
-, pkgconfig
+, pkg-config
 , gtk3
 , libuuid
 , gettext
 , gupnp-av
 , gtksourceview4
-, gnome3
+, gnome
 , wrapGAppsHook
 }:
 
@@ -19,14 +19,14 @@ stdenv.mkDerivation rec {
   version = "0.10.0";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
     sha256 = "13d1qr1avz9r76989nvgxhhclmqzr025xjk4rfnja94fpbspznj1";
   };
 
   nativeBuildInputs = [
     meson
     ninja
-    pkgconfig
+    pkg-config
     gettext
     wrapGAppsHook
   ];
@@ -38,16 +38,17 @@ stdenv.mkDerivation rec {
     gtk3
     gupnp-av
     gtksourceview4
-    gnome3.adwaita-icon-theme
+    gnome.adwaita-icon-theme
   ];
 
   passthru = {
-    updateScript = gnome3.updateScript {
+    updateScript = gnome.updateScript {
       packageName = pname;
+      versionPolicy = "odd-unstable";
     };
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Set of utilities and demos to work with UPnP";
     homepage = "https://wiki.gnome.org/Projects/GUPnP";
     license = licenses.gpl2Plus;
diff --git a/pkgs/tools/networking/gvpe/default.nix b/pkgs/tools/networking/gvpe/default.nix
index 3dea0217b60..59748f6f967 100644
--- a/pkgs/tools/networking/gvpe/default.nix
+++ b/pkgs/tools/networking/gvpe/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, openssl, gmp, zlib, iproute, nettools }:
+{ lib, stdenv, fetchurl, openssl, gmp, zlib, iproute2, nettools }:
 
 stdenv.mkDerivation rec {
   pname = "gvpe";
@@ -20,11 +20,11 @@ stdenv.mkDerivation rec {
     ];
 
   preBuild = ''
-    sed -e 's@"/sbin/ifconfig.*"@"${iproute}/sbin/ip link set $IFNAME address $MAC mtu $MTU"@' -i src/device-linux.C
+    sed -e 's@"/sbin/ifconfig.*"@"${iproute2}/sbin/ip link set $IFNAME address $MAC mtu $MTU"@' -i src/device-linux.C
     sed -e 's@/sbin/ifconfig@${nettools}/sbin/ifconfig@g' -i src/device-*.C
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A protected multinode virtual network";
     homepage = "http://software.schmorp.de/pkg/gvpe.html";
     maintainers = [ maintainers.raskin ];
diff --git a/pkgs/tools/networking/hans/default.nix b/pkgs/tools/networking/hans/default.nix
index cea13bca24c..04271d6ef71 100644
--- a/pkgs/tools/networking/hans/default.nix
+++ b/pkgs/tools/networking/hans/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, nettools }:
+{ lib, stdenv, fetchFromGitHub, nettools }:
 
 stdenv.mkDerivation rec {
   pname = "hans";
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
     install -D -m0755 hans $out/bin/hans
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Tunnel IPv4 over ICMP";
     longDescription = ''
       Hans makes it possible to tunnel IPv4 through ICMP echo packets, so you
diff --git a/pkgs/tools/networking/haproxy/default.nix b/pkgs/tools/networking/haproxy/default.nix
index 91112a2628e..bb79ad956a6 100644
--- a/pkgs/tools/networking/haproxy/default.nix
+++ b/pkgs/tools/networking/haproxy/default.nix
@@ -1,7 +1,7 @@
 { useLua ? !stdenv.isDarwin
 , usePcre ? true
 , withPrometheusExporter ? true
-, stdenv, lib, fetchurl
+, stdenv, lib, fetchurl, nixosTests
 , openssl, zlib
 , lua5_3 ? null, pcre ? null, systemd ? null
 }:
@@ -11,11 +11,11 @@ assert usePcre -> pcre != null;
 
 stdenv.mkDerivation rec {
   pname = "haproxy";
-  version = "2.2.2";
+  version = "2.3.10";
 
   src = fetchurl {
-    url = "https://www.haproxy.org/download/${stdenv.lib.versions.majorMinor version}/src/${pname}-${version}.tar.gz";
-    sha256 = "1mjld865p4f7i465fcc5c4jclih1c3345a3ylriql8668rd7071r";
+    url = "https://www.haproxy.org/download/${lib.versions.majorMinor version}/src/${pname}-${version}.tar.gz";
+    sha256 = "sha256-mUbgz8g/KQcrNDHjckYiHPnUqdKKFYwHVxTTRSZvTzU=";
   };
 
   buildInputs = [ openssl zlib ]
@@ -40,6 +40,7 @@ stdenv.mkDerivation rec {
     "USE_PCRE_JIT=yes"
   ] ++ lib.optionals useLua [
     "USE_LUA=yes"
+    "LUA_LIB_NAME=lua"
     "LUA_LIB=${lua5_3}/lib"
     "LUA_INC=${lua5_3}/include"
   ] ++ lib.optionals stdenv.isLinux [
@@ -47,10 +48,12 @@ stdenv.mkDerivation rec {
     "USE_GETADDRINFO=1"
   ] ++ lib.optionals withPrometheusExporter [
     "EXTRA_OBJS=contrib/prometheus-exporter/service-prometheus.o"
-  ] ++ lib.optional stdenv.isDarwin "CC=cc";
+  ] ++ [ "CC=${stdenv.cc.targetPrefix}cc" ];
 
   enableParallelBuilding = true;
 
+  passthru.tests.haproxy = nixosTests.haproxy;
+
   meta = with lib; {
     description = "Reliable, high performance TCP/HTTP load balancer";
     longDescription = ''
diff --git a/pkgs/tools/networking/hey/default.nix b/pkgs/tools/networking/hey/default.nix
index 22f933a4b65..edf91dd311d 100644
--- a/pkgs/tools/networking/hey/default.nix
+++ b/pkgs/tools/networking/hey/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "hey";
-  version = "0.1.3";
+  version = "0.1.4";
 
   src = fetchFromGitHub {
     owner = "rakyll";
     repo = pname;
     rev = "v${version}";
-    sha256 = "06w5hf0np0ayvjnfy8zgy605yrs5j326nk2gm0fy7amhwx1fzkwv";
+    sha256 = "0gsdksrzlwpba14a43ayyy41l1hxpw4ayjpvqyd4ycakddlkvgzb";
   };
 
   vendorSha256 = null;
@@ -19,6 +19,6 @@ buildGoModule rec {
     description = "HTTP load generator, ApacheBench (ab) replacement";
     homepage = "https://github.com/rakyll/hey";
     license = licenses.asl20;
-    maintainers = with maintainers; [ filalex77 ];
+    maintainers = with maintainers; [ Br1ght0ne ];
   };
 }
diff --git a/pkgs/tools/networking/horst/default.nix b/pkgs/tools/networking/horst/default.nix
index 704eaa85cd0..194365130bf 100644
--- a/pkgs/tools/networking/horst/default.nix
+++ b/pkgs/tools/networking/horst/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchFromGitHub, pkgconfig, ncurses, libnl }:
+{lib, stdenv, fetchFromGitHub, pkg-config, ncurses, libnl }:
 
 stdenv.mkDerivation rec {
   pname = "horst";
@@ -11,12 +11,12 @@ stdenv.mkDerivation rec {
     sha256 = "140pyv6rlsh4c745w4b59pz3hrarr39qq3mz9z1lsd3avc12nx1a";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ ncurses libnl ];
 
   installFlags = [ "DESTDIR=${placeholder "out"}" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Small and lightweight IEEE802.11 wireless LAN analyzer with a text interface";
     homepage = "http://br1.einfach.org/tech/horst/";
     maintainers = [ maintainers.fpletz ];
diff --git a/pkgs/tools/networking/hping/default.nix b/pkgs/tools/networking/hping/default.nix
index 1ef02b599e8..97b45c64ee2 100644
--- a/pkgs/tools/networking/hping/default.nix
+++ b/pkgs/tools/networking/hping/default.nix
@@ -1,50 +1,41 @@
-{ stdenv, fetchurl, libpcap, tcl }:
+{ lib, stdenv, fetchFromGitHub, libpcap, withTcl ? true, tcl }:
 
 stdenv.mkDerivation rec {
   pname = "hping";
-  version = "20051105";
+  version = "2014-12-26";
 
-  src = fetchurl {
-    url = "http://www.hping.org/hping3-${version}.tar.gz";
-    sha256 = "1s5f9xd1msx05ibhwaw37jmc7l9fahcxxslqz8a83p0i5ak739pm";
+  src = fetchFromGitHub {
+    owner = "antirez";
+    repo = pname;
+    rev = "3547c7691742c6eaa31f8402e0ccbb81387c1b99"; # there are no tags/releases
+    sha256 = "0y0n1ybij3yg9lfgzcwfmjz1sjg913zcqrv391xx83dm0j80sdpb";
   };
 
-  buildInputs = [ libpcap tcl ];
+  buildInputs = [ libpcap ] ++ lib.optional withTcl tcl;
 
-  configurePhase = ''
-    MANPATH="$out/share/man" ./configure
-    sed -i -r -e 's|/usr(/s?bin)|'"$out"'\1|g' Makefile
-  '';
-
-  TCLSH = "${tcl}/bin/tclsh";
-
-  prePatch = ''
-    sed -i -e '/#if.*defined(__i386__)/a \
-      || defined(__x86_64__) \\
-    ' bytesex.h
-
-    sed -i -e 's|#include.*net/bpf.h|#include <pcap/bpf.h>|' \
+  postPatch = ''
+    substituteInPlace Makefile.in --replace "gcc" "$CC"
+    substituteInPlace version.c --replace "RELEASE_DATE" "\"$version\""
+  '' + lib.optionalString stdenv.isLinux ''
+    sed -i -e 's|#include <net/bpf.h>|#include <pcap/bpf.h>|' \
       libpcap_stuff.c script.c
-
-    sed -i -r -e 's|"(/usr/(local/)?)?bin/"|"${tcl}/bin"|g' \
-              -e 's!/usr/(local/)?(lib|include)!${tcl}/\2!g' \
-              configure
   '';
 
-  preInstall = ''
-    mkdir -vp "$out/sbin" "$out/share/man/man8"
-  '';
+  configureFlags = [ (if withTcl then "TCLSH=${tcl}/bin/tclsh" else "--no-tcl") ];
 
-  postInstall = ''
-    ln -vs hping3.8.gz "$out/share/man/man8/hping.8.gz"
-    ln -vs hping3.8.gz "$out/share/man/man8/hping2.8.gz"
+  installPhase = ''
+    install -Dm755 hping3 -t $out/sbin
+    ln -s $out/sbin/hping3 $out/sbin/hping
+    ln -s $out/sbin/hping3 $out/sbin/hping2
+    install -Dm644 docs/hping3.8 -t $out/share/man/man8
+    ln -s hping3.8.gz $out/share/man/man8/hping.8.gz
+    ln -s hping3.8.gz $out/share/man/man8/hping2.8.gz
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A command-line oriented TCP/IP packet assembler/analyzer";
     homepage = "http://www.hping.org/";
-    license = licenses.gpl2;
-    platforms = platforms.all;
-    broken = stdenv.isDarwin;
+    license = licenses.gpl2Only;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/htpdate/default.nix b/pkgs/tools/networking/htpdate/default.nix
index d03b08cf5eb..cd2b3a18d42 100644
--- a/pkgs/tools/networking/htpdate/default.nix
+++ b/pkgs/tools/networking/htpdate/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   version = "1.2.2";
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Utility to fetch time and set the system clock over HTTP";
     homepage = "http://www.vervest.org/htp/";
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/http-prompt/default.nix b/pkgs/tools/networking/http-prompt/default.nix
index 9c524c0cc09..3732fbd879f 100644
--- a/pkgs/tools/networking/http-prompt/default.nix
+++ b/pkgs/tools/networking/http-prompt/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, python3Packages, httpie }:
+{ lib, fetchFromGitHub, python3Packages, httpie }:
 
 python3Packages.buildPythonApplication rec {
   pname = "http-prompt";
@@ -24,7 +24,7 @@ python3Packages.buildPythonApplication rec {
     $out/bin/${pname} --version | grep -q "${version}"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An interactive command-line HTTP client featuring autocomplete and syntax highlighting";
     homepage = "https://github.com/eliangcs/http-prompt";
     license = licenses.mit;
diff --git a/pkgs/tools/networking/httperf/default.nix b/pkgs/tools/networking/httperf/default.nix
index 50c35fbb33c..975b050de7e 100644
--- a/pkgs/tools/networking/httperf/default.nix
+++ b/pkgs/tools/networking/httperf/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, openssl }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, openssl }:
 
 stdenv.mkDerivation rec {
   pname = "httperf";
@@ -26,12 +26,12 @@ stdenv.mkDerivation rec {
     mv -v src/httperf $out/bin
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "The httperf HTTP load generator";
     homepage = "https://github.com/httperf/httperf";
-    maintainers = with maintainers; [ nand0p ];
+    maintainers = with maintainers; [ ];
     license = licenses.gpl2;
-    platforms = platforms.linux;
+    platforms = platforms.all;
   };
 
 }
diff --git a/pkgs/tools/networking/httpie/default.nix b/pkgs/tools/networking/httpie/default.nix
index bf80cd48ffa..a7ecabe8e62 100644
--- a/pkgs/tools/networking/httpie/default.nix
+++ b/pkgs/tools/networking/httpie/default.nix
@@ -1,31 +1,26 @@
-{ stdenv, fetchFromGitHub, python3Packages, docutils, fetchpatch }:
+{ lib, fetchFromGitHub, python3Packages, docutils }:
 
 python3Packages.buildPythonApplication rec {
   pname = "httpie";
-  version = "2.2.0";
+  version = "2.4.0";
 
   src = fetchFromGitHub {
-    owner = "jakubroztocil";
+    owner = "httpie";
     repo = "httpie";
     rev = version;
-    sha256 = "0caazv24jr0844c4mdx77vzwwi5m869n10wa42cydb08ppx1xxj6";
+    sha256 = "00lafjqg9nfnak0nhcr2l2hzzkwn2y6qv0wdkm6r6f69snizy3hf";
   };
 
-  outputs = [ "out" "doc" "man" ];
-
-  propagatedBuildInputs = with python3Packages; [ pygments requests setuptools ];
-  dontUseSetuptoolsCheck = true;
   patches = [
     ./strip-venv.patch
-
-    # Fix `test_ciphers_none_can_be_selected`
-    # TODO: remove on next release
-    (fetchpatch {
-      url = "https://github.com/jakubroztocil/httpie/commit/49e71d252f54871a6bc49cb1cba103d385a543b8.patch";
-      sha256 = "13b2faf50gimj7f17dlx4gmd8ph8ipgihpzfqbvmfjlbf1v95fsj";
-    })
   ];
 
+  outputs = [ "out" "doc" "man" ];
+
+  nativeBuildInputs = [ docutils ];
+
+  propagatedBuildInputs = with python3Packages; [ pygments requests requests-toolbelt setuptools ];
+
   checkInputs = with python3Packages; [
     mock
     pytest
@@ -56,7 +51,7 @@ python3Packages.buildPythonApplication rec {
     sed -e 's/^|build|//g' -i README.rst
 
     toHtml() {
-      ${docutils}/bin/rst2html5 \
+      rst2html5 \
         --strip-elements-with-class=no-web \
         --title=http \
         --no-generator \
@@ -70,16 +65,7 @@ python3Packages.buildPythonApplication rec {
     toHtml CHANGELOG.rst $docdir/html/CHANGELOG.html
     toHtml CONTRIBUTING.rst $docdir/html/CONTRIBUTING.html
 
-    # change a few links to the local files
-    substituteInPlace $docdir/html/index.html \
-      --replace \
-        'https://github.com/jakubroztocil/httpie/blob/master/CHANGELOG.rst' \
-        "CHANGELOG.html" \
-      --replace \
-        'https://github.com/jakubroztocil/httpie/blob/master/CONTRIBUTING.rst' \
-        "CONTRIBUTING.html"
-
-    ${docutils}/bin/rst2man \
+    rst2man \
       --strip-elements-with-class=no-web \
       --title=http \
       --no-generator \
@@ -94,10 +80,14 @@ python3Packages.buildPythonApplication rec {
     export PATH=${docutils}/bin:$PATH
   '';
 
-  meta = {
+  checkPhase = ''
+    py.test ./httpie ./tests --doctest-modules --verbose ./httpie ./tests -k 'not test_chunked and not test_verbose_chunked and not test_multipart_chunked and not test_request_body_from_file_by_path_chunked'
+  '';
+
+  meta = with lib; {
     description = "A command line HTTP client whose goal is to make CLI human-friendly";
     homepage = "https://httpie.org/";
-    license = stdenv.lib.licenses.bsd3;
-    maintainers = with stdenv.lib.maintainers; [ antono relrod schneefux ];
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ antono relrod schneefux SuperSandro2000 ];
   };
 }
diff --git a/pkgs/tools/networking/httpie/strip-venv.patch b/pkgs/tools/networking/httpie/strip-venv.patch
index 99ea80a3f56..9cfddbfdf78 100644
--- a/pkgs/tools/networking/httpie/strip-venv.patch
+++ b/pkgs/tools/networking/httpie/strip-venv.patch
@@ -1,11 +1,11 @@
 diff --git a/tests/test_docs.py b/tests/test_docs.py
-index 7a41822..720ecf6 100644
+index 340e64d..a6b4dc9 100644
 --- a/tests/test_docs.py
 +++ b/tests/test_docs.py
-@@ -41,12 +41,10 @@ assert filenames
- 
+@@ -42,15 +42,10 @@ assert filenames
  # HACK: hardcoded paths, venv should be irrelevant, etc.
- # TODO: replaces the process with Python code
+ # TODO: simplify by using the Python API instead of a subprocess
+ #       then we wont’t need the paths.
 -VENV_BIN = Path(__file__).parent.parent / 'venv/bin'
 -VENV_PYTHON = VENV_BIN / 'python'
 -VENV_RST2PSEUDOXML = VENV_BIN / 'rst2pseudoxml.py'
@@ -13,7 +13,10 @@ index 7a41822..720ecf6 100644
 +VENV_RST2PSEUDOXML = 'rst2pseudoxml.py'
  
  
--@pytest.mark.skipif(not os.path.exists(VENV_RST2PSEUDOXML), reason='docutils not installed')
+-@pytest.mark.skipif(
+-    not VENV_RST2PSEUDOXML.exists(),
+-    reason='docutils not installed',
+-)
  @pytest.mark.parametrize('filename', filenames)
  def test_rst_file_syntax(filename):
      p = subprocess.Popen(
diff --git a/pkgs/tools/networking/httping/default.nix b/pkgs/tools/networking/httping/default.nix
index 74aff38e1a6..7389c78ef8d 100644
--- a/pkgs/tools/networking/httping/default.nix
+++ b/pkgs/tools/networking/httping/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, gettext, libintl, ncurses, openssl
+{ lib, stdenv, fetchurl, gettext, libintl, ncurses, openssl
 , fftw ? null }:
 
 stdenv.mkDerivation rec {
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
     "PREFIX="
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://vanheusden.com/httping";
     description = "ping with HTTP requests";
     longDescription = ''
diff --git a/pkgs/tools/networking/httplab/default.nix b/pkgs/tools/networking/httplab/default.nix
index f4fb4fe9607..40851d370c7 100644
--- a/pkgs/tools/networking/httplab/default.nix
+++ b/pkgs/tools/networking/httplab/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildGoPackage, fetchFromGitHub }:
+{ lib, buildGoPackage, fetchFromGitHub }:
 
 buildGoPackage rec {
   pname = "httplab";
@@ -14,7 +14,7 @@ buildGoPackage rec {
     sha256 = "0442nnpxyfl2gi9pilv7q6cxs2cd98wblg8d4nw6dx98yh4h99zs";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/gchaincl/httplab";
     description = "Interactive WebServer";
     license = licenses.mit;
diff --git a/pkgs/tools/networking/httplz/default.nix b/pkgs/tools/networking/httplz/default.nix
index bf0a5b90388..2424018d885 100644
--- a/pkgs/tools/networking/httplz/default.nix
+++ b/pkgs/tools/networking/httplz/default.nix
@@ -1,5 +1,5 @@
 { stdenv, lib, fetchFromGitHub, makeWrapper, rustPlatform
-, openssl, pkgconfig, darwin, libiconv }:
+, openssl, pkg-config, darwin, libiconv }:
 
 rustPlatform.buildRustPackage rec {
   pname = "httplz";
@@ -12,24 +12,24 @@ rustPlatform.buildRustPackage rec {
     sha256 = "154alxxclz78r29m656c8yahnzq0vd64s4sp19h0ca92dfw4s46y";
   };
 
-  nativeBuildInputs = [ makeWrapper pkgconfig ];
+  nativeBuildInputs = [ makeWrapper pkg-config ];
   buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [
     libiconv darwin.apple_sdk.frameworks.Security
   ];
 
   cargoBuildFlags = [ "--bin httplz" ];
   cargoPatches = [ ./cargo-lock.patch ];
-  cargoSha256 = "1rpwzrr9bvw375vn97y5fqhraqz35d3ani9kfflvn2758x3g8gwf";
+  cargoSha256 = "0r33vg9431jv32r03ryxb3rc4mp6h1kc00d3h1knssfvkwsh31yn";
 
   postInstall = ''
     wrapProgram $out/bin/httplz \
       --prefix PATH : "${openssl}/bin"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A basic http server for hosting a folder fast and simply";
     homepage = "https://github.com/thecoshman/http";
     license = licenses.mit;
-    maintainers = with maintainers; [ bbigras ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/tools/networking/httpstat/default.nix b/pkgs/tools/networking/httpstat/default.nix
index 70bbabc35bb..be4a8f2a168 100644
--- a/pkgs/tools/networking/httpstat/default.nix
+++ b/pkgs/tools/networking/httpstat/default.nix
@@ -1,24 +1,24 @@
-{ stdenv, fetchFromGitHub, curl, pythonPackages, glibcLocales }:
+{ lib, fetchFromGitHub, curl, python3Packages, glibcLocales }:
 
-pythonPackages.buildPythonApplication rec {
-    pname = "httpstat";
-    version = "1.2.1";
-    src = fetchFromGitHub {
-      owner = "reorx";
-      repo = pname;
-      rev = version;
-      sha256 = "1vriibcsq4j1hvm5yigbbmmv21dc40y5c9gvd31dg9qkaz26hml6";
-    };
-    doCheck = false; # No tests
-    buildInputs = [ glibcLocales ];
-    runtimeDeps = [ curl ];
+python3Packages.buildPythonApplication rec {
+  pname = "httpstat";
+  version = "1.3.1";
+  src = fetchFromGitHub {
+    owner = "reorx";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-zUdis41sQpJ1E3LdNwaCVj6gexi/Rk21IBUgoFISiDM=";
+  };
+  doCheck = false; # No tests
+  buildInputs = [ glibcLocales ];
+  runtimeDeps = [ curl ];
 
-    LC_ALL = "en_US.UTF-8";
+  LC_ALL = "en_US.UTF-8";
 
-    meta = {
-      description = "curl statistics made simple";
-      homepage = "https://github.com/reorx/httpstat";
-      license = stdenv.lib.licenses.mit;
-      maintainers = with stdenv.lib.maintainers; [ nequissimus ];
-    };
-  }
+  meta = {
+    description = "curl statistics made simple";
+    homepage = "https://github.com/reorx/httpstat";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ nequissimus ];
+  };
+}
diff --git a/pkgs/tools/networking/httptunnel/default.nix b/pkgs/tools/networking/httptunnel/default.nix
index e8ed86da3da..13ef6417535 100644
--- a/pkgs/tools/networking/httptunnel/default.nix
+++ b/pkgs/tools/networking/httptunnel/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   version = "3.3";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "0mn5s6p68n32xzadz6ds5i6bp44dyxzkq68r1yljlv470jr84bql";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Creates a bidirectional virtual data connection tunnelled in HTTP requests";
     homepage    = "http://www.nocrew.org/software/httptunnel";
     license     = licenses.gpl2;
diff --git a/pkgs/tools/networking/hue-cli/gemset.nix b/pkgs/tools/networking/hue-cli/gemset.nix
index 69d12f25a80..08fd67c3885 100644
--- a/pkgs/tools/networking/hue-cli/gemset.nix
+++ b/pkgs/tools/networking/hue-cli/gemset.nix
@@ -31,4 +31,4 @@
     };
     version = "2.2.0";
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/tools/networking/hurl/default.nix b/pkgs/tools/networking/hurl/default.nix
new file mode 100644
index 00000000000..6ecff2e6e38
--- /dev/null
+++ b/pkgs/tools/networking/hurl/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkg-config
+, libxml2
+, openssl
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "hurl";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    owner = "Orange-OpenSource";
+    repo = pname;
+    rev = version;
+    sha256 = "0hbyqj794pvvfrg6jgz63mih73bnmnvgmwbv705c2238w7wsgk9w";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+  ];
+
+  buildInputs = [
+    libxml2
+    openssl
+  ];
+
+  # Tests require network access to a test server
+  doCheck = false;
+
+  cargoSha256 = "09ndgm6kmqwdz7yn2rqxk5xr1qkai87zm1k138cng4wq135c3w6g";
+
+  meta = with lib; {
+    description = "Command line tool that performs HTTP requests defined in a simple plain text format.";
+    homepage = "https://hurl.dev/";
+    maintainers = with maintainers; [ eonpatapon ];
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/tools/networking/hyenae/default.nix b/pkgs/tools/networking/hyenae/default.nix
index 2ec22f2bab6..5007a69fb9b 100644
--- a/pkgs/tools/networking/hyenae/default.nix
+++ b/pkgs/tools/networking/hyenae/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, libdnet, pkgconfig, libpcap}:
+{lib, stdenv, fetchurl, libdnet, pkg-config, libpcap}:
 
 stdenv.mkDerivation {
   name = "hyenae-0.36-1";
@@ -10,14 +10,14 @@ stdenv.mkDerivation {
     sha256 = "1f3x4yn9a9p4f4wk4l8pv7hxfjc8q7cv20xzf7ky735sq1hj0xcg";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [libdnet libpcap];
 
   meta = {
     description = "";
     homepage = "https://sourceforge.net/projects/hyenae/";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [stdenv.lib.maintainers.marcweber];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl3;
+    maintainers = [lib.maintainers.marcweber];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/i2p/default.nix b/pkgs/tools/networking/i2p/default.nix
index 681d5d0e7a9..a3b52d19e2d 100644
--- a/pkgs/tools/networking/i2p/default.nix
+++ b/pkgs/tools/networking/i2p/default.nix
@@ -1,12 +1,12 @@
-{ stdenv, ps, coreutils, fetchurl, jdk, jre, ant, gettext, which }:
+{ lib, stdenv, ps, coreutils, fetchurl, jdk, jre, ant, gettext, which }:
 
 let wrapper = stdenv.mkDerivation rec {
   pname = "wrapper";
-  version = "3.5.35";
+  version = "3.5.44";
 
   src = fetchurl {
     url = "https://wrapper.tanukisoftware.com/download/${version}/wrapper_${version}_src.tar.gz";
-    sha256 = "0mjyw9ays9v6lnj21pmfd3qdvd9b6rwxfmw3pg6z0kyf2jadixw2";
+    sha256 = "1iq4j7srzy5p8q3nci9316bnwx4g71jyvzd1i5hp3s8v1k61910g";
   };
 
   buildInputs = [ jdk ];
@@ -32,11 +32,11 @@ in
 
 stdenv.mkDerivation rec {
   pname = "i2p";
-  version = "0.9.42";
+  version = "0.9.48";
 
   src = fetchurl {
     url = "https://download.i2p2.de/releases/${version}/i2psource_${version}.tar.bz2";
-    sha256 = "04y71hzkdpjzbac569rhyg1zfx37j0alggbl9gnkaqfbprb2nj1h";
+    sha256 = "0cnm4bwl1gqcx89i96j2qlq6adphy4l72h5whamqwv86n8bmpig8";
   };
 
   buildInputs = [ jdk ant gettext which ];
@@ -72,11 +72,11 @@ stdenv.mkDerivation rec {
     rm $out/{osid,postinstall.sh,INSTALL-headless.txt}
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Applications and router for I2P, anonymity over the Internet";
     homepage = "https://geti2p.net";
     license = licenses.gpl2;
     platforms = [ "x86_64-linux" "i686-linux" ];
-    maintainers = [ maintainers.joelmo ];
+    maintainers = with maintainers; [ joelmo ];
   };
 }
diff --git a/pkgs/tools/networking/i2p/i2p.patch b/pkgs/tools/networking/i2p/i2p.patch
index 74031eb7aef..3bb4da72917 100644
--- a/pkgs/tools/networking/i2p/i2p.patch
+++ b/pkgs/tools/networking/i2p/i2p.patch
@@ -19,7 +19,7 @@ index eb4995dfe..0186cede3 100644
  
  # Try using the Java binary that I2P was installed with.
  # If it's not found, try looking in the system PATH.
--JAVA=$(which %JAVA_HOME/bin/java || which java)
+-JAVA=$(which "%JAVA_HOME"/bin/java || which java)
 +JAVA=%JAVA%
  
  if [ -z $JAVA ] || [ ! -x $JAVA ]; then
diff --git a/pkgs/tools/networking/i2pd/default.nix b/pkgs/tools/networking/i2pd/default.nix
index b686ea4d04f..48ebf33c41b 100644
--- a/pkgs/tools/networking/i2pd/default.nix
+++ b/pkgs/tools/networking/i2pd/default.nix
@@ -1,25 +1,26 @@
-{ stdenv, fetchFromGitHub
+{ lib, stdenv, fetchFromGitHub
 , boost, zlib, openssl
 , upnpSupport ? true, miniupnpc ? null
-, aesniSupport ? false
-, avxSupport ? false
+, aesniSupport ? stdenv.hostPlatform.aesSupport
+, avxSupport   ? stdenv.hostPlatform.avxSupport
 }:
 
 assert upnpSupport -> miniupnpc != null;
 
 stdenv.mkDerivation rec {
   pname = "i2pd";
-  version = "2.32.1";
+  version = "2.38.0";
 
   src = fetchFromGitHub {
     owner = "PurpleI2P";
     repo = pname;
     rev = version;
-    sha256 = "15ng2c7i3jxmhpc2q0dl8arc72qbsq9y9paz5hgln907yy7dqx7c";
+    sha256 = "sha256-8wy6Zdnw0JgnHFLa1U3qlzjpDIqi2gykbkkV7lh+Zag=";
   };
 
-  buildInputs = with stdenv.lib; [ boost zlib openssl ]
+  buildInputs = with lib; [ boost zlib openssl ]
     ++ optional upnpSupport miniupnpc;
+
   makeFlags =
     let ynf = a: b: a + "=" + (if b then "yes" else "no"); in
     [ (ynf "USE_AESNI" aesniSupport)
@@ -27,15 +28,17 @@ stdenv.mkDerivation rec {
       (ynf "USE_UPNP"  upnpSupport)
     ];
 
+  enableParallelBuilding = true;
+
   installPhase = ''
     install -D i2pd $out/bin/i2pd
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://i2pd.website";
     description = "Minimal I2P router written in C++";
     license = licenses.bsd3;
     maintainers = with maintainers; [ edwtjo ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/ifstat-legacy/default.nix b/pkgs/tools/networking/ifstat-legacy/default.nix
index 25b6af5e92f..014cce5ea4f 100644
--- a/pkgs/tools/networking/ifstat-legacy/default.nix
+++ b/pkgs/tools/networking/ifstat-legacy/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, autoreconfHook, net-snmp }:
+{ lib, stdenv, fetchurl, autoreconfHook, net-snmp }:
 
 stdenv.mkDerivation rec {
   pname = "ifstat-legacy";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "01zmv6vk5kh5xmd563xws8a1qnxjb6b6kv59yzz9r3rrghxhd6c5";
   };
 
-  buildInputs = [ net-snmp ];
+  buildInputs = lib.optional stdenv.isLinux net-snmp;
 
   nativeBuildInputs = [ autoreconfHook ];
 
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     mv $out/share/man/man1/ifstat.1 $out/share/man/man1/ifstat-legacy.1
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Report network interfaces bandwith just like vmstat/iostat do for other system counters - legacy version";
     homepage    = "http://gael.roualland.free.fr/ifstat/";
     maintainers = with maintainers; [ peterhoeg ];
diff --git a/pkgs/tools/networking/iftop/default.nix b/pkgs/tools/networking/iftop/default.nix
index 70c1f0b6c96..c3e71e6132d 100644
--- a/pkgs/tools/networking/iftop/default.nix
+++ b/pkgs/tools/networking/iftop/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ncurses, libpcap, automake, nixosTests }:
+{ lib, stdenv, fetchurl, ncurses, libpcap, automake, nixosTests }:
 
 stdenv.mkDerivation {
   name = "iftop-1.0pre4";
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
 
   # Explicitly link against libgcc_s, to work around the infamous
   # "libgcc_s.so.1 must be installed for pthread_cancel to work".
-  LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lgcc_s";
+  LDFLAGS = lib.optionalString stdenv.isLinux "-lgcc_s";
 
   preConfigure = ''
     cp ${automake}/share/automake*/config.{sub,guess} config
@@ -20,7 +20,7 @@ stdenv.mkDerivation {
 
   passthru.tests = { inherit (nixosTests) iftop; };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Display bandwidth usage on a network interface";
     longDescription = ''
       iftop does for network usage what top(1) does for CPU usage. It listens
diff --git a/pkgs/tools/networking/igmpproxy/default.nix b/pkgs/tools/networking/igmpproxy/default.nix
new file mode 100644
index 00000000000..9f924964907
--- /dev/null
+++ b/pkgs/tools/networking/igmpproxy/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, fetchFromGitHub, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  pname = "igmpproxy";
+  version = "0.3";
+
+  src = fetchFromGitHub {
+    owner = "pali";
+    repo = "igmpproxy";
+    rev = version;
+    sha256 = "sha256-B7mq+5pKWMO4dJeFPB7tiyjDQjj90g/kmYB2ApBE3Ic=";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+
+  meta = with lib; {
+    description = "A daemon that routes multicast using IGMP forwarding";
+    homepage = "https://github.com/pali/igmpproxy/";
+    changelog = "https://github.com/pali/igmpproxy/releases/tag/${version}";
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.sdier ];
+    # The maintainer is using this on linux, but if you test it on other platforms
+    # please add them here!
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/networking/imapproxy/default.nix b/pkgs/tools/networking/imapproxy/default.nix
index 01480056a2a..dd149f57432 100644
--- a/pkgs/tools/networking/imapproxy/default.nix
+++ b/pkgs/tools/networking/imapproxy/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, openssl, ncurses}:
+{lib, stdenv, fetchurl, openssl, ncurses}:
 
 stdenv.mkDerivation {
   name = "imapproxy-1.2.7";
@@ -16,7 +16,7 @@ stdenv.mkDerivation {
   meta = {
     homepage = "http://imapproxy.org/";
     description = "It proxies IMAP transactions caching server connections";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.unix;
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/imapsync/default.nix b/pkgs/tools/networking/imapsync/default.nix
index aa0980a2514..bec0b197c18 100644
--- a/pkgs/tools/networking/imapsync/default.nix
+++ b/pkgs/tools/networking/imapsync/default.nix
@@ -1,4 +1,4 @@
-{stdenv, makeWrapper, fetchurl, perl, openssl, perlPackages }:
+{lib, stdenv, makeWrapper, fetchurl, perl, openssl, perlPackages }:
 
 stdenv.mkDerivation rec {
   name = "imapsync-1.727";
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
     IOSocketInet6 NTLM
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.linux-france.org/prj/imapsync/";
     description = "Mail folder synchronizer between IMAP servers";
     license = licenses.gpl2Plus;
diff --git a/pkgs/tools/networking/inadyn/default.nix b/pkgs/tools/networking/inadyn/default.nix
index 2a551c56768..47d86615026 100644
--- a/pkgs/tools/networking/inadyn/default.nix
+++ b/pkgs/tools/networking/inadyn/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config
 , gnutls, libite, libconfuse }:
 
 stdenv.mkDerivation rec {
@@ -12,14 +12,14 @@ stdenv.mkDerivation rec {
     sha256 = "00jhayx0hfl9dw78d58bdxa5390bvxq73lz26q9h1gg1xw76adan";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
 
   buildInputs = [ gnutls libite libconfuse ];
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
-    homepage = "http://troglobit.com/project/inadyn/";
+  meta = with lib; {
+    homepage = "https://troglobit.com/project/inadyn/";
     description = "Free dynamic DNS client";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/tools/networking/inetutils/default.nix b/pkgs/tools/networking/inetutils/default.nix
index 1290ec2bdb1..285031aaca5 100644
--- a/pkgs/tools/networking/inetutils/default.nix
+++ b/pkgs/tools/networking/inetutils/default.nix
@@ -1,4 +1,6 @@
-{ stdenv, lib, fetchurl, ncurses, perl, help2man }:
+{ stdenv, lib, fetchurl, ncurses, perl, help2man
+, apparmorRulesFromClosure
+}:
 
 stdenv.mkDerivation rec {
   name = "inetutils-1.9.4";
@@ -8,6 +10,8 @@ stdenv.mkDerivation rec {
     sha256 = "05n65k4ixl85dc6rxc51b1b732gnmm8xnqi424dy9f1nz7ppb3xy";
   };
 
+  outputs = ["out" "apparmor"];
+
   patches = [
     ./whois-Update-Canadian-TLD-server.patch
     ./service-name.patch
@@ -41,6 +45,23 @@ stdenv.mkDerivation rec {
 
   installFlags = [ "SUIDMODE=" ];
 
+  postInstall = ''
+    mkdir $apparmor
+    cat >$apparmor/bin.ping <<EOF
+    $out/bin/ping {
+      include <abstractions/base>
+      include <abstractions/consoles>
+      include <abstractions/nameservice>
+      include "${apparmorRulesFromClosure { name = "ping"; } [stdenv.cc.libc]}"
+      include <local/bin.ping>
+      capability net_raw,
+      network inet raw,
+      network inet6 raw,
+      mr $out/bin/ping,
+    }
+    EOF
+  '';
+
   meta = with lib; {
     description = "Collection of common network programs";
 
diff --git a/pkgs/tools/networking/innernet/default.nix b/pkgs/tools/networking/innernet/default.nix
new file mode 100644
index 00000000000..f643702d625
--- /dev/null
+++ b/pkgs/tools/networking/innernet/default.nix
@@ -0,0 +1,53 @@
+{ lib, stdenv, rustPlatform, fetchFromGitHub, llvmPackages, sqlite, installShellFiles, Security, libiconv }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "innernet";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "tonarino";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-n+xNWhOkRCIcoBHR8u+xZK81fU0usIfFhYg3BO9yXik=";
+  };
+  cargoSha256 = "sha256-cTqQtJpuwVlUKfAK8ASf6vq6PU2NE8PT/el/Hz4HgtA=";
+
+  nativeBuildInputs = with llvmPackages; [
+    llvm
+    clang
+    installShellFiles
+  ];
+  buildInputs = [ sqlite ] ++ lib.optionals stdenv.isDarwin [ Security libiconv ];
+
+  LIBCLANG_PATH = "${llvmPackages.libclang.lib}/lib";
+
+  postInstall = ''
+    installManPage doc/innernet-server.8.gz
+    installManPage doc/innernet.8.gz
+    installShellCompletion doc/innernet.completions.{bash,fish,zsh}
+    installShellCompletion doc/innernet-server.completions.{bash,fish,zsh}
+  '';
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    if [[ "$("$out/bin/${pname}"-server --version)" == "${pname}-server ${version}" ]]; then
+      echo '${pname}-server smoke check passed'
+    else
+      echo '${pname}-server smoke check failed'
+      return 1
+    fi
+    if [[ "$("$out/bin/${pname}" --version)" == "${pname} ${version}" ]]; then
+      echo '${pname} smoke check passed'
+    else
+      echo '${pname} smoke check failed'
+      return 1
+    fi
+  '';
+
+  meta = with lib; {
+    description = "A private network system that uses WireGuard under the hood";
+    homepage = "https://github.com/tonarino/innernet";
+    license = licenses.mit;
+    maintainers = with maintainers; [ tomberek _0x4A6F ];
+  };
+}
diff --git a/pkgs/tools/networking/iodine/default.nix b/pkgs/tools/networking/iodine/default.nix
index 2703ca0fc64..226cfb9ce8e 100644
--- a/pkgs/tools/networking/iodine/default.nix
+++ b/pkgs/tools/networking/iodine/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, zlib, nettools, nixosTests }:
+{ lib, stdenv, fetchFromGitHub, zlib, nettools, nixosTests }:
 
 stdenv.mkDerivation rec {
   pname = "iodine";
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "http://code.kryo.se/iodine/";
     description = "Tool to tunnel IPv4 data through a DNS server";
-    license = stdenv.lib.licenses.isc;
-    platforms = stdenv.lib.platforms.unix;
+    license = lib.licenses.isc;
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/iouyap/default.nix b/pkgs/tools/networking/iouyap/default.nix
index b49b34d6dc7..2367261b522 100644
--- a/pkgs/tools/networking/iouyap/default.nix
+++ b/pkgs/tools/networking/iouyap/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, bison, flex }:
+{ lib, stdenv, fetchFromGitHub, bison, flex }:
 
 stdenv.mkDerivation rec {
   pname = "iouyap";
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
     install -D -m555 iouyap $out/bin/iouyap;
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Bridge IOU to UDP, TAP and Ethernet";
     inherit (src.meta) homepage;
     license = licenses.gpl3Plus;
diff --git a/pkgs/tools/networking/ip2location/default.nix b/pkgs/tools/networking/ip2location/default.nix
index 205a4e6e701..df5d26b4f5d 100644
--- a/pkgs/tools/networking/ip2location/default.nix
+++ b/pkgs/tools/networking/ip2location/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "ip2location";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Look up locations of host names and IP addresses";
     longDescription = ''
       A command-line tool to find the country, region, city,coordinates,
diff --git a/pkgs/tools/networking/ip2unix/default.nix b/pkgs/tools/networking/ip2unix/default.nix
index 269dd0f1f34..7e2eef70b8a 100644
--- a/pkgs/tools/networking/ip2unix/default.nix
+++ b/pkgs/tools/networking/ip2unix/default.nix
@@ -1,21 +1,21 @@
-{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, libyamlcpp, systemd
+{ lib, stdenv, fetchFromGitHub, meson, ninja, pkg-config, libyamlcpp, systemd
 , python3Packages, asciidoc, libxslt, docbook_xml_dtd_45, docbook_xsl
 , libxml2, docbook5
 }:
 
 stdenv.mkDerivation rec {
   pname = "ip2unix";
-  version = "2.1.3";
+  version = "2.1.4";
 
   src = fetchFromGitHub {
     owner = "nixcloud";
     repo = "ip2unix";
     rev = "v${version}";
-    sha256 = "19c449h60b2m1d8kawnhpi4y9y4ddm24jmlh8kilqmx8m5l2khr6";
+    sha256 = "1pl8ayadxb0zzh5s26yschkjhr1xffbzzv347m88f9y0jv34d24r";
   };
 
   nativeBuildInputs = [
-    meson ninja pkgconfig asciidoc libxslt.bin docbook_xml_dtd_45 docbook_xsl
+    meson ninja pkg-config asciidoc libxslt.bin docbook_xml_dtd_45 docbook_xsl
     libxml2.bin docbook5 python3Packages.pytest python3Packages.pytest-timeout
     systemd
   ];
@@ -39,8 +39,8 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://github.com/nixcloud/ip2unix";
     description = "Turn IP sockets into Unix domain sockets";
-    platforms = stdenv.lib.platforms.linux;
-    license = stdenv.lib.licenses.lgpl3;
-    maintainers = [ stdenv.lib.maintainers.aszlig ];
+    platforms = lib.platforms.linux;
+    license = lib.licenses.lgpl3;
+    maintainers = [ lib.maintainers.aszlig ];
   };
 }
diff --git a/pkgs/tools/networking/ipcalc/default.nix b/pkgs/tools/networking/ipcalc/default.nix
index 7f118193a3a..5fec55899e4 100644
--- a/pkgs/tools/networking/ipcalc/default.nix
+++ b/pkgs/tools/networking/ipcalc/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, perl}:
+{lib, stdenv, fetchurl, perl}:
 stdenv.mkDerivation rec {
   pname = "ipcalc";
   version = "0.41";
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Simple IP network calculator";
     homepage = "http://jodies.de/ipcalc";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.all;
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.all;
   };
 }
diff --git a/pkgs/tools/networking/iperf/2.nix b/pkgs/tools/networking/iperf/2.nix
index f90b74313e5..3270a25e67b 100644
--- a/pkgs/tools/networking/iperf/2.nix
+++ b/pkgs/tools/networking/iperf/2.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   name = "iperf-2.0.13";
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
     ln -s $out/bin/iperf2 $out/bin/iperf
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://sourceforge.net/projects/iperf/";
     description = "Tool to measure IP bandwidth using UDP or TCP";
     platforms = platforms.unix;
diff --git a/pkgs/tools/networking/iperf/3.nix b/pkgs/tools/networking/iperf/3.nix
index 4910ff21da6..5ab3f7f30fb 100644
--- a/pkgs/tools/networking/iperf/3.nix
+++ b/pkgs/tools/networking/iperf/3.nix
@@ -1,12 +1,12 @@
-{ stdenv, fetchurl, openssl, fetchpatch }:
+{ lib, stdenv, fetchurl, openssl, fetchpatch }:
 
 stdenv.mkDerivation rec {
   pname = "iperf";
-  version = "3.8.1";
+  version = "3.9";
 
   src = fetchurl {
     url = "https://downloads.es.net/pub/iperf/iperf-${version}.tar.gz";
-    sha256 = "15pdgnan9krf3dijan9in73ir8rcmhk3iw8085d732is4zrq1c75";
+    sha256 = "0f601avdmzpwsa3lbi0ppjhkrdipm5wifhhxy5czf99370k3mdi4";
   };
 
   buildInputs = [ openssl ];
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
 
   outputs = [ "out" "man" ];
 
-  patches = stdenv.lib.optionals stdenv.hostPlatform.isMusl [
+  patches = lib.optionals stdenv.hostPlatform.isMusl [
     (fetchpatch {
       url = "https://git.alpinelinux.org/aports/plain/main/iperf3/remove-pg-flags.patch?id=7f979fc51ae31d5c695d8481ba84a4afc5080efb";
       name = "remove-pg-flags.patch";
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
     ln -s $man/share/man/man1/iperf3.1 $man/share/man/man1/iperf.1
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://software.es.net/iperf/";
     description = "Tool to measure IP bandwidth using UDP or TCP";
     platforms = platforms.unix;
diff --git a/pkgs/tools/networking/ipgrep/default.nix b/pkgs/tools/networking/ipgrep/default.nix
index 6ea930fccaa..d1f5316c27b 100644
--- a/pkgs/tools/networking/ipgrep/default.nix
+++ b/pkgs/tools/networking/ipgrep/default.nix
@@ -1,29 +1,31 @@
-{ stdenv, fetchFromGitHub, pythonPackages }:
+{ lib, fetchFromGitHub, python3Packages }:
 
-pythonPackages.buildPythonApplication rec {
-  version = "1.0";
+python3Packages.buildPythonApplication rec {
+  version = "1.0.1";
   pname = "ipgrep";
 
+  disabled = python3Packages.isPy27;
+
   src = fetchFromGitHub {
     owner = "jedisct1";
     repo = pname;
     rev = version;
-    sha256 = "1qaxvbqdalvz05aplhhrg7s4h7yx4clbfd50k46bgavhgcqqv8n3";
+    hash = "sha256-NrhcUFQM+L66KaDRRpAoC+z5s54a+1fqEepTRXVZ5Qs=";
   };
 
   patchPhase = ''
-    mkdir -p ${pname} 
+    mkdir -p ${pname}
     substituteInPlace setup.py \
       --replace "'scripts': []" "'scripts': { '${pname}.py' }"
   '';
 
-  propagatedBuildInputs = with pythonPackages; [
+  propagatedBuildInputs = with python3Packages; [
     pycares
     urllib3
     requests
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Extract, defang, resolve names and IPs from text";
     longDescription = ''
       ipgrep extracts possibly obfuscated host names and IP addresses
diff --git a/pkgs/tools/networking/ipinfo/default.nix b/pkgs/tools/networking/ipinfo/default.nix
new file mode 100644
index 00000000000..91bc654c83a
--- /dev/null
+++ b/pkgs/tools/networking/ipinfo/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "ipinfo";
+  version = "2.0.1";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = "cli";
+    rev = "${pname}-${version}";
+    sha256 = "00rqqkybvzxcpa6fy799fxmn95xqx7s3z3mqfryzi35dlmjdfzqy";
+  };
+
+  vendorSha256 = null;
+
+  # Tests require network access
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Command Line Interface for the IPinfo API";
+    homepage = "https://github.com/ipinfo/cli";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/networking/ipv6calc/default.nix b/pkgs/tools/networking/ipv6calc/default.nix
index 35aeb23a9a8..158a979fb40 100644
--- a/pkgs/tools/networking/ipv6calc/default.nix
+++ b/pkgs/tools/networking/ipv6calc/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, getopt, ip2location-c, openssl, perl
+{ lib, stdenv, fetchurl, getopt, ip2location-c, openssl, perl
 , libmaxminddb ? null, geolite-legacy ? null }:
 
 stdenv.mkDerivation rec {
@@ -30,13 +30,13 @@ stdenv.mkDerivation rec {
     "--disable-bundled-md5"
     "--disable-dynamic-load"
     "--enable-shared"
-  ] ++ stdenv.lib.optional (libmaxminddb != null) "--enable-mmdb"
-    ++ stdenv.lib.optional (geolite-legacy != null) "--with-geoip-db=${geolite-legacy}/share/GeoIP"
-    ++ stdenv.lib.optional (ip2location-c != null) "--enable-ip2location";
+  ] ++ lib.optional (libmaxminddb != null) "--enable-mmdb"
+    ++ lib.optional (geolite-legacy != null) "--with-geoip-db=${geolite-legacy}/share/GeoIP"
+    ++ lib.optional (ip2location-c != null) "--enable-ip2location";
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Calculate/manipulate (not only) IPv6 addresses";
     longDescription = ''
       ipv6calc is a small utility to manipulate (not only) IPv6 addresses and
diff --git a/pkgs/tools/networking/isync/default.nix b/pkgs/tools/networking/isync/default.nix
index 44eb5c50ba8..666e19ca81a 100644
--- a/pkgs/tools/networking/isync/default.nix
+++ b/pkgs/tools/networking/isync/default.nix
@@ -1,20 +1,22 @@
-{ stdenv, fetchurl, pkg-config, perl
-, openssl, db, zlib, cyrus_sasl
+{ lib, stdenv, fetchurl, pkg-config, perl
+, openssl, db, cyrus_sasl, zlib
+, Security
 }:
 
 stdenv.mkDerivation rec {
   pname = "isync";
-  version = "1.3.3";
+  version = "1.4.2";
 
   src = fetchurl {
     url = "mirror://sourceforge/isync/${pname}-${version}.tar.gz";
-    sha256 = "10n8ykag0q3ws6fc15xqyg3v980v5nq3kzpablly2rh2z7vkn8gj";
+    sha256 = "0hskfpj4r4q3959k3npyqli353daj3r5d9mfia9bbmig87nyfd8r";
   };
 
   nativeBuildInputs = [ pkg-config perl ];
-  buildInputs = [ openssl db cyrus_sasl zlib ];
+  buildInputs = [ openssl db cyrus_sasl zlib ]
+    ++ lib.optionals stdenv.isDarwin [ Security ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://isync.sourceforge.net/";
     # https://sourceforge.net/projects/isync/
     changelog = "https://sourceforge.net/p/isync/isync/ci/v${version}/tree/NEWS";
diff --git a/pkgs/tools/networking/iwgtk/default.nix b/pkgs/tools/networking/iwgtk/default.nix
new file mode 100644
index 00000000000..5c89facd3fa
--- /dev/null
+++ b/pkgs/tools/networking/iwgtk/default.nix
@@ -0,0 +1,28 @@
+{ fetchFromGitHub, gtk3, lib, pkg-config, stdenv }:
+
+stdenv.mkDerivation rec {
+  pname = "iwgtk";
+  version = "0.4";
+
+  src = fetchFromGitHub {
+    owner = "j-lentz";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "129h7vq9b1r9a5c79hk8d06bj8lgzrnhq55x54hqri9c471jjh0s";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ gtk3 ];
+
+  makeFlags = [ "prefix=$(out)" ];
+
+  meta = with lib; {
+    description = "Lightweight, graphical wifi management utility for Linux";
+    homepage = "https://github.com/j-lentz/iwgtk";
+    changelog = "https://github.com/j-lentz/iwgtk/blob/v${version}/CHANGELOG";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/pkgs/tools/networking/jnettop/default.nix b/pkgs/tools/networking/jnettop/default.nix
index 2d23ff1f1fd..bd31235b6f9 100644
--- a/pkgs/tools/networking/jnettop/default.nix
+++ b/pkgs/tools/networking/jnettop/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, fetchpatch, stdenv, autoconf, libpcap, ncurses, pkgconfig, glib }:
+{ fetchurl, fetchpatch, lib, stdenv, autoconf, libpcap, ncurses, pkg-config, glib }:
 
 stdenv.mkDerivation {
   name = "jnettop-0.13.0";
@@ -8,7 +8,7 @@ stdenv.mkDerivation {
     sha256 = "1855np7c4b0bqzhf1l1dyzxb90fpnvrirdisajhci5am6als31z9";
   };
 
-  nativeBuildInputs = [ pkgconfig autoconf ];
+  nativeBuildInputs = [ pkg-config autoconf ];
   buildInputs = [ libpcap ncurses glib ];
 
   patches = [
@@ -19,7 +19,7 @@ stdenv.mkDerivation {
     })
   ];
 
-  preConfigure = '' autoconf '';
+  preConfigure = "autoconf ";
 
   meta = {
     description = "Network traffic visualizer";
@@ -31,7 +31,7 @@ stdenv.mkDerivation {
     '';
 
     homepage = "http://jnettop.kubs.info/";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.unix;
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/junkie/default.nix b/pkgs/tools/networking/junkie/default.nix
index 29fe71c9365..58b35f2f53f 100644
--- a/pkgs/tools/networking/junkie/default.nix
+++ b/pkgs/tools/networking/junkie/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkgconfig, libpcap, guile, openssl }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, libpcap, guile, openssl }:
 
 stdenv.mkDerivation rec {
   pname = "junkie";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     sha256 = "0kfdjgch667gfb3qpiadd2dj3fxc7r19nr620gffb1ahca02wq31";
   };
   buildInputs = [ libpcap guile openssl ];
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   configureFlags = [
     "GUILELIBDIR=\${out}/share/guile/site"
     "GUILECACHEDIR=\${out}/lib/guile/ccache"
@@ -20,9 +20,9 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Deep packet inspection swiss-army knife";
     homepage = "https://github.com/rixed/junkie";
-    license = stdenv.lib.licenses.agpl3Plus;
-    maintainers = [ stdenv.lib.maintainers.rixed ];
-    platforms = stdenv.lib.platforms.unix;
+    license = lib.licenses.agpl3Plus;
+    maintainers = [ lib.maintainers.rixed ];
+    platforms = lib.platforms.unix;
     longDescription = ''
       Junkie is a network sniffer like Tcpdump or Wireshark, but designed to
       be easy to program and extend.
diff --git a/pkgs/tools/networking/jwhois/default.nix b/pkgs/tools/networking/jwhois/default.nix
index 0a9ac99e236..6eb26de82fc 100644
--- a/pkgs/tools/networking/jwhois/default.nix
+++ b/pkgs/tools/networking/jwhois/default.nix
@@ -1,4 +1,4 @@
-{stdenv, lynx, fetchurl}:
+{lib, stdenv, lynx, fetchurl}:
 
 stdenv.mkDerivation {
   name = "jwhois-4.0";
@@ -20,7 +20,7 @@ stdenv.mkDerivation {
   meta = {
     description = "A client for the WHOIS protocol allowing you to query the owner of a domain name";
     homepage = "https://www.gnu.org/software/jwhois/";
-    license = stdenv.lib.licenses.gpl3;
-    platforms = stdenv.lib.platforms.unix;
+    license = lib.licenses.gpl3;
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/kail/default.nix b/pkgs/tools/networking/kail/default.nix
index e7c9b499675..ae431b329ea 100644
--- a/pkgs/tools/networking/kail/default.nix
+++ b/pkgs/tools/networking/kail/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildGoPackage, fetchFromGitHub }:
+{ lib, buildGoPackage, fetchFromGitHub }:
 
 buildGoPackage rec {
   pname = "kail";
@@ -20,9 +20,10 @@ buildGoPackage rec {
   # git checkout <version>
   # dep init
   # dep2nix
+  deleteVendor = true;
   goDeps = ./deps.nix;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Kubernetes log viewer";
     homepage = "https://github.com/boz/kail";
     license = licenses.mit;
diff --git a/pkgs/tools/networking/kail/deps.nix b/pkgs/tools/networking/kail/deps.nix
index ee5d2fb8271..b6d9c3e9cf3 100644
--- a/pkgs/tools/networking/kail/deps.nix
+++ b/pkgs/tools/networking/kail/deps.nix
@@ -405,4 +405,4 @@
       sha256 = "1vkcjg80l49hxiadqmkkd031kj6kc10m8mwcnla3k1ml8fv4qna9";
     };
   }
-]
\ No newline at end of file
+]
diff --git a/pkgs/tools/networking/kapp/default.nix b/pkgs/tools/networking/kapp/default.nix
new file mode 100644
index 00000000000..181a9d9b85e
--- /dev/null
+++ b/pkgs/tools/networking/kapp/default.nix
@@ -0,0 +1,32 @@
+{ lib, buildGoModule, fetchFromGitHub, installShellFiles }:
+buildGoModule rec {
+  pname = "kapp";
+  version = "0.37.0";
+
+  src = fetchFromGitHub {
+    owner = "vmware-tanzu";
+    repo = "carvel-kapp";
+    rev = "v${version}";
+    sha256 = "sha256-SxS6KBiKc68PcRycdVDWWfXBKOJvo7GuG/0dUQGcHsg=";
+  };
+
+  vendorSha256 = null;
+
+  subPackages = [ "cmd/kapp" ];
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  postInstall = ''
+    for shell in bash fish zsh; do
+      $out/bin/kapp completion $shell > kapp.$shell
+      installShellCompletion kapp.$shell
+    done
+  '';
+
+  meta = with lib; {
+    description = "CLI tool that encourages Kubernetes users to manage bulk resources with an application abstraction for grouping";
+    homepage = "https://get-kapp.io";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ brodes ];
+  };
+}
diff --git a/pkgs/tools/networking/kea/default.nix b/pkgs/tools/networking/kea/default.nix
index 386a3ae280a..e3e4a67c131 100644
--- a/pkgs/tools/networking/kea/default.nix
+++ b/pkgs/tools/networking/kea/default.nix
@@ -1,41 +1,64 @@
-{ stdenv, fetchurl, autoreconfHook, pkgconfig, openssl, botan2, log4cplus
-, boost, python3, postgresql, libmysqlclient, gmp, bzip2 }:
+{ stdenv
+, lib
+, fetchurl
+, autoreconfHook
+, pkg-config
+, boost
+, botan2
+, libmysqlclient
+, log4cplus
+, postgresql
+, python3
+, nixosTests
+}:
 
 stdenv.mkDerivation rec {
   pname = "kea";
-  version = "1.5.0-P1";
+  version = "1.9.9";
 
   src = fetchurl {
     url = "https://ftp.isc.org/isc/${pname}/${version}/${pname}-${version}.tar.gz";
-    sha256 = "0bqxzp3f7cmraa5davj2az1hx1gbbchqzlz3ai26c802agzafyhz";
+    sha256 = "sha256-iVSWBR1+SkXlkwMii2PXpcxFSXYigz4lfNnMZBvS2kM=";
   };
 
   patches = [ ./dont-create-var.patch ];
 
   postPatch = ''
     substituteInPlace ./src/bin/keactrl/Makefile.am --replace '@sysconfdir@' "$out/etc"
-    substituteInPlace ./src/bin/keactrl/Makefile.am --replace '@(sysconfdir)@' "$out/etc"
   '';
 
   configureFlags = [
+    "--enable-perfdhcp"
+    "--enable-shell"
     "--localstatedir=/var"
+    "--with-mysql=${lib.getDev libmysqlclient}/bin/mysql_config"
     "--with-pgsql=${postgresql}/bin/pg_config"
-    "--with-mysql=${libmysqlclient}/bin/mysql_config"
   ];
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [
+    autoreconfHook
+    pkg-config
+  ];
+
   buildInputs = [
-    openssl log4cplus boost python3 libmysqlclient
-    botan2 gmp bzip2
+    boost
+    botan2
+    libmysqlclient
+    log4cplus
+    python3
   ];
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  passthru.tests = {
+    inherit (nixosTests) kea;
+  };
+
+  meta = with lib; {
     homepage = "https://kea.isc.org/";
     description = "High-performance, extensible DHCP server by ISC";
     longDescription = ''
-      KEA is a new open source DHCPv4/DHCPv6 server being developed by
+      Kea is a new open source DHCPv4/DHCPv6 server being developed by
       Internet Systems Consortium. The objective of this project is to
       provide a very high-performance, extensible DHCP server engine for
       use by enterprises and service providers, either as is or with
@@ -43,6 +66,6 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.mpl20;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ fpletz ];
+    maintainers = with maintainers; [ fpletz hexa ];
   };
 }
diff --git a/pkgs/tools/networking/kea/dont-create-var.patch b/pkgs/tools/networking/kea/dont-create-var.patch
index 385113d160f..53e05b5b62b 100644
--- a/pkgs/tools/networking/kea/dont-create-var.patch
+++ b/pkgs/tools/networking/kea/dont-create-var.patch
@@ -1,26 +1,28 @@
 diff --git a/Makefile.am b/Makefile.am
-index 2c0733c..974bb5e 100644
+index 10708e7..d4efd73 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -135,11 +135,6 @@ cppcheck:
- 		--template '{file}:{line}: check_fail: {message} ({severity},{id})' \
- 		src
+@@ -150,13 +150,6 @@ cppcheck:
+ docs:
+ 	$(MAKE) -C doc/sphinx
  
+-
 -# These steps are necessary during installation
 -install-exec-hook:
 -	mkdir -p $(DESTDIR)${localstatedir}/log/
--	mkdir -p $(DESTDIR)${localstatedir}/run/${PACKAGE_NAME}
+-	mkdir -p $(DESTDIR)${localstatedir}/lib/${PACKAGE_NAME}
+-	mkdir -p $(DESTDIR)${runstatedir}/${PACKAGE_NAME}
 -
  EXTRA_DIST  = tools/path_replacer.sh
  EXTRA_DIST += tools/mk_cfgrpt.sh
  
 diff --git a/src/lib/dhcpsrv/Makefile.am b/src/lib/dhcpsrv/Makefile.am
-index 564f623..7cea9f2 100644
+index a0a0289..ba42f8a 100644
 --- a/src/lib/dhcpsrv/Makefile.am
 +++ b/src/lib/dhcpsrv/Makefile.am
-@@ -352,5 +352,3 @@ libkea_dhcpsrv_parsers_include_HEADERS = \
+@@ -408,5 +408,3 @@ libkea_dhcpsrv_parsers_include_HEADERS = \
+ 	parsers/simple_parser4.h \
  	parsers/simple_parser6.h
  
- 
 -install-data-local:
 -	$(mkinstalldirs) $(DESTDIR)$(dhcp_data_dir)
diff --git a/pkgs/tools/networking/keepalived/default.nix b/pkgs/tools/networking/keepalived/default.nix
index 076953161a3..48fe72d4296 100644
--- a/pkgs/tools/networking/keepalived/default.nix
+++ b/pkgs/tools/networking/keepalived/default.nix
@@ -1,16 +1,16 @@
-{ stdenv, fetchFromGitHub, nixosTests
+{ lib, stdenv, fetchFromGitHub, nixosTests
 , libnfnetlink, libnl, net-snmp, openssl
-, pkgconfig, autoreconfHook }:
+, pkg-config, autoreconfHook }:
 
 stdenv.mkDerivation rec {
   pname = "keepalived";
-  version = "2.0.20";
+  version = "2.2.2";
 
   src = fetchFromGitHub {
     owner = "acassen";
     repo = "keepalived";
     rev = "v${version}";
-    sha256 = "0ijzw56hbac24dhrgjd0hjgf45072imyzq3mcgsirdl3xqjc6x12";
+    sha256 = "sha256-qugEEbOQ4bemzelIOaNFvo3piMZpKUZGjR+4XF8aLHw=";
   };
 
   buildInputs = [
@@ -22,14 +22,14 @@ stdenv.mkDerivation rec {
 
   passthru.tests.keepalived = nixosTests.keepalived;
 
-  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+  nativeBuildInputs = [ pkg-config autoreconfHook ];
 
   configureFlags = [
     "--enable-sha1"
     "--enable-snmp"
  ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://keepalived.org";
     description = "Routing software written in C";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/lftp/default.nix b/pkgs/tools/networking/lftp/default.nix
index 3bd61a0bd49..f51c6f034dd 100644
--- a/pkgs/tools/networking/lftp/default.nix
+++ b/pkgs/tools/networking/lftp/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, fetchurl, gnutls, pkgconfig, readline, zlib, libidn2, gmp, libiconv, libunistring, gettext }:
+{ lib, stdenv, fetchurl, gnutls, pkg-config, readline, zlib, libidn2, gmp, libiconv, libunistring, gettext }:
 
 stdenv.mkDerivation rec {
   pname = "lftp";
-  version = "4.9.1";
+  version = "4.9.2";
 
   src = fetchurl {
     urls = [
@@ -10,14 +10,14 @@ stdenv.mkDerivation rec {
       "https://ftp.st.ryukoku.ac.jp/pub/network/ftp/lftp/${pname}-${version}.tar.xz"
       "https://lftp.yar.ru/ftp/${pname}-${version}.tar.xz"
       ];
-    sha256 = "0jq2g8h1bx06ya9fsja748vwb2qrca4wsfrgi3fmaa8hznpgqsar";
+    sha256 = "03b7y0h3mf4jfq5y8zw6hv9v44z3n6i8hc1iswax96y3z7sc85y5";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [ gnutls readline zlib libidn2 gmp libiconv libunistring gettext ];
 
-  hardeningDisable = stdenv.lib.optional stdenv.isDarwin "format";
+  hardeningDisable = lib.optional stdenv.isDarwin "format";
 
   configureFlags = [
     "--with-readline=${readline.dev}"
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A file transfer program supporting a number of network protocols";
     homepage = "https://lftp.tech/";
     license = licenses.gpl3;
diff --git a/pkgs/tools/networking/libnids/default.nix b/pkgs/tools/networking/libnids/default.nix
index 2a93d3c8a59..a2cf239b56b 100644
--- a/pkgs/tools/networking/libnids/default.nix
+++ b/pkgs/tools/networking/libnids/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, libpcap, glib, pkgconfig, libnet }:
+{ lib, stdenv, fetchzip, libpcap, glib, pkg-config, libnet }:
 stdenv.mkDerivation {
   pname = "libnids";
   version = "1.24";
@@ -6,7 +6,7 @@ stdenv.mkDerivation {
     url = "mirror://sourceforge/libnids/libnids-1.24.tar.gz";
     sha256 = "1cblklfdfxcmy0an6xyyzx4l877xdawhjd28daqfsvrh81mb07k1";
   };
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libpcap glib libnet ];
 
   /*
@@ -20,7 +20,7 @@ stdenv.mkDerivation {
   */
   NIX_CFLAGS_COMPILE="-Dg_thread_init= ";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "An E-component of Network Intrusion Detection System which emulates the IP stack of Linux 2.0.x";
     homepage = "http://libnids.sourceforge.net/";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/libreswan/default.nix b/pkgs/tools/networking/libreswan/default.nix
index 3e7719c40d4..24b7176e82b 100644
--- a/pkgs/tools/networking/libreswan/default.nix
+++ b/pkgs/tools/networking/libreswan/default.nix
@@ -1,59 +1,114 @@
-{ stdenv, fetchurl, makeWrapper,
-  pkgconfig, systemd, gmp, unbound, bison, flex, pam, libevent, libcap_ng, curl, nspr,
-  bash, iproute, iptables, procps, coreutils, gnused, gawk, nss, which, python,
-  docs ? false, xmlto, libselinux, ldns
-  }:
+{ lib
+, stdenv
+, fetchurl
+, fetchpatch
+, nixosTests
+, pkg-config
+, systemd
+, gmp
+, unbound
+, bison
+, flex
+, pam
+, libevent
+, libcap_ng
+, curl
+, nspr
+, bash
+, iproute2
+, iptables
+, procps
+, coreutils
+, gnused
+, gawk
+, nss
+, which
+, python3
+, libselinux
+, ldns
+, xmlto
+, docbook_xml_dtd_412
+, docbook_xsl
+, findXMLCatalogs
+}:
 
 let
-  binPath = stdenv.lib.makeBinPath [
-    bash iproute iptables procps coreutils gnused gawk nss.tools which python
+  # Tools needed by ipsec scripts
+  binPath = lib.makeBinPath [
+    iproute2 iptables procps
+    coreutils gnused gawk
+    nss.tools which
   ];
 in
 
-assert docs -> xmlto != null;
-assert stdenv.isLinux -> libselinux != null;
-
 stdenv.mkDerivation rec {
   pname = "libreswan";
-  version = "3.32";
+  version = "4.4";
 
   src = fetchurl {
     url = "https://download.libreswan.org/${pname}-${version}.tar.gz";
-    sha256 = "0bj3g6qwd3ir3gk6hdl9npy3k44shf56vcgjahn30qpmx3z5fsr3";
+    sha256 = "0xj974yc0y1r7235zl4jhvxqz3bpb8js2fy9ic820zq9swh0lgsz";
   };
 
-  # These flags were added to compile v3.18. Try to lift them when updating.
-  NIX_CFLAGS_COMPILE = toString [ "-Wno-error=redundant-decls" "-Wno-error=format-nonliteral"
-    # these flags were added to build with gcc7
-    "-Wno-error=implicit-fallthrough"
-    "-Wno-error=format-truncation"
-    "-Wno-error=pointer-compare"
-    "-Wno-error=stringop-truncation"
+  strictDeps = true;
+
+  nativeBuildInputs = [
+    bison
+    flex
+    pkg-config
+    xmlto
+    docbook_xml_dtd_412
+    docbook_xsl
+    findXMLCatalogs
   ];
 
-  nativeBuildInputs = [ makeWrapper pkgconfig ];
-  buildInputs = [ bash iproute iptables systemd coreutils gnused gawk gmp unbound bison flex pam libevent
-                  libcap_ng curl nspr nss python ldns ]
-                ++ stdenv.lib.optional docs xmlto
-                ++ stdenv.lib.optional stdenv.isLinux libselinux;
+  buildInputs = [
+    systemd coreutils
+    gnused gawk gmp unbound pam libevent
+    libcap_ng curl nspr nss ldns
+    # needed to patch shebangs
+    python3 bash
+  ] ++ lib.optional stdenv.isLinux libselinux;
+
+  patches = [
+    # Fix compilation on aarch64, remove on next update
+    (fetchpatch {
+      url = "https://github.com/libreswan/libreswan/commit/ea50d36d2886e44317ba5ba841de1d1bf91aee6c.patch";
+      sha256 = "1jp89rm9jp55zmiyimyhg7yadj0fwwxaw7i5gyclrs38w3y1aacj";
+    })
+  ];
 
   prePatch = ''
-    # Correct bash path
-    sed -i -e 's|/bin/bash|/usr/bin/env bash|' mk/config.mk
-
-    # Fix systemd unit directory, and prevent the makefile from trying to reload the
-    # systemd daemon or create tmpfiles
-    sed -i -e 's|UNITDIR=.*$|UNITDIR=$\{out}/etc/systemd/system/|g' \
-      -e 's|TMPFILESDIR=.*$|TMPFILESDIR=$\{out}/tmpfiles.d/|g' \
-      -e 's|systemctl|true|g' \
-      -e 's|systemd-tmpfiles|true|g' \
-      initsystems/systemd/Makefile
+    # Correct iproute2 path
+    sed -e 's|"/sbin/ip"|"${iproute2}/bin/ip"|' \
+        -e 's|"/sbin/iptables"|"${iptables}/bin/iptables"|' \
+        -i initsystems/systemd/ipsec.service.in \
+           programs/verify/verify.in
+
+    # Prevent the makefile from trying to
+    # reload the systemd daemon or create tmpfiles
+    sed -e 's|systemctl|true|g' \
+        -e 's|systemd-tmpfiles|true|g' \
+        -i initsystems/systemd/Makefile
 
     # Fix the ipsec program from crushing the PATH
-    sed -i -e 's|\(PATH=".*"\):.*$|\1:$PATH|' programs/ipsec/ipsec.in
+    sed -e 's|\(PATH=".*"\):.*$|\1:$PATH|' -i programs/ipsec/ipsec.in
 
     # Fix python script to use the correct python
-    sed -i -e 's|#!/usr/bin/python|#!/usr/bin/env python|' -e 's/^\(\W*\)installstartcheck()/\1sscmd = "ss"\n\0/' programs/verify/verify.in
+    sed -e 's/^\(\W*\)installstartcheck()/\1sscmd = "ss"\n\0/' \
+        -i programs/verify/verify.in
+
+    # Replace wget with curl to save a dependency
+    curlArgs='-s --remote-name-all --output-dir'
+    sed -e "s|wget -q -P|${curl}/bin/curl $curlArgs|g" \
+        -i programs/letsencrypt/letsencrypt.in
+
+    # Patch the Makefile:
+    # 1. correct the pam.d directory install path
+    # 2. do not create the /var/lib/ directory
+    sed -e 's|$(DESTDIR)/etc/pam.d|$(out)/etc/pam.d|' \
+        -e '/test ! -d $(NSSDIR)/,+3d' \
+        -i configs/Makefile
   '';
 
   # Set appropriate paths for build
@@ -61,10 +116,10 @@ stdenv.mkDerivation rec {
 
   makeFlags = [
     "INITSYSTEM=systemd"
-    (if docs then "all" else "base")
+    "UNITDIR=$(out)/etc/systemd/system/"
+    "TMPFILESDIR=$(out)/lib/tmpfiles.d/"
   ];
 
-  installTargets = [ (if docs then "install" else "install-base") ];
   # Hack to make install work
   installFlags = [
     "FINALVARDIR=\${out}/var"
@@ -72,18 +127,23 @@ stdenv.mkDerivation rec {
   ];
 
   postInstall = ''
-    for i in $out/bin/* $out/libexec/ipsec/*; do
-      wrapProgram "$i" --prefix PATH ':' "$out/bin:${binPath}"
-    done
+    # Install examples directory (needed for letsencrypt)
+    cp -r docs/examples $out/share/doc/libreswan/examples
+  '';
+
+  postFixup = ''
+    # Add a PATH to the main "ipsec" script
+    sed -e '0,/^$/{s||export PATH=${binPath}:$PATH|}' \
+        -i $out/bin/ipsec
   '';
 
-  enableParallelBuilding = true;
+  passthru.tests.libreswan = nixosTests.libreswan;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://libreswan.org";
     description = "A free software implementation of the VPN protocol based on IPSec and the Internet Key Exchange";
-    platforms = platforms.linux ++ platforms.darwin ++ platforms.freebsd;
-    license = licenses.gpl2;
-    maintainers = [ maintainers.afranchuk ];
+    platforms = platforms.linux ++ platforms.freebsd;
+    license = with licenses; [ gpl2Plus mpl20 ] ;
+    maintainers = with maintainers; [ afranchuk rnhmjoj ];
   };
 }
diff --git a/pkgs/tools/networking/linkchecker/default.nix b/pkgs/tools/networking/linkchecker/default.nix
index 6f94e0c63c5..480321ad15f 100644
--- a/pkgs/tools/networking/linkchecker/default.nix
+++ b/pkgs/tools/networking/linkchecker/default.nix
@@ -1,27 +1,31 @@
-{ stdenv, lib, fetchFromGitHub, python2Packages, gettext }:
+{ stdenv, lib, fetchFromGitHub, python3Packages, gettext }:
 
-python2Packages.buildPythonApplication rec {
+with python3Packages;
+
+buildPythonApplication rec {
   pname = "linkchecker";
-  version = "9.4.0";
+  version = "10.0.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
-    rev = "v${version}";
-    sha256 = "1vbwl2vb8dyzki27z3sl5yf9dhdd2cpkg10vbgaz868dhpqlshgs";
+    rev = "v" + version;
+    sha256 = "sha256-gcaamRxGn124LZ8rU+WzjRookU3akDO0ZyzI7/S6kFA=";
   };
 
   nativeBuildInputs = [ gettext ];
 
-  propagatedBuildInputs = with python2Packages; [
-    ConfigArgParse
+  propagatedBuildInputs = [
+    configargparse
     argcomplete
+    beautifulsoup4
+    pyopenssl
     dnspython
     pyxdg
     requests
   ];
 
-  checkInputs = with python2Packages; [
+  checkInputs = [
     parameterized
     pytest
   ];
@@ -29,21 +33,16 @@ python2Packages.buildPythonApplication rec {
   postPatch = ''
     sed -i 's/^requests.*$/requests>=2.2/' requirements.txt
     sed -i "s/'request.*'/'requests >= 2.2'/" setup.py
-    sed -i 's~/usr/lib/python2.7/argparse.py~~g' po/Makefile
   '';
 
+  # test_timeit2 is flakey, and depends sleep being precise to the milisecond
   checkPhase = ''
-    runHook preCheck
-
-    # the mime test fails for me...
-    rm tests/test_mimeutil.py
     ${lib.optionalString stdenv.isDarwin ''
       # network tests fails on darwin
-      rm tests/test_network.py
+      rm tests/test_network.py tests/checker/test_http*.py tests/checker/test_content_allows_robots.py tests/checker/test_noproxy.py
     ''}
-    make test PYTESTOPTS="--tb=short" TESTS="tests/test_*.py tests/logger/test_*.py"
-
-    runHook postCheck
+      pytest --ignore=tests/checker/{test_telnet,telnetserver}.py \
+        -k 'not TestLoginUrl and not test_timeit2'
   '';
 
   meta = {
diff --git a/pkgs/tools/networking/lldpd/default.nix b/pkgs/tools/networking/lldpd/default.nix
index 8462d907a1f..a4e5d565756 100644
--- a/pkgs/tools/networking/lldpd/default.nix
+++ b/pkgs/tools/networking/lldpd/default.nix
@@ -1,14 +1,14 @@
-{ stdenv, lib, fetchurl, pkgconfig, removeReferencesTo
+{ stdenv, lib, fetchurl, pkg-config, removeReferencesTo
 , libevent, readline, net-snmp, openssl
 }:
 
 stdenv.mkDerivation rec {
   pname = "lldpd";
-  version = "1.0.5";
+  version = "1.0.11";
 
   src = fetchurl {
     url = "https://media.luffy.cx/files/lldpd/${pname}-${version}.tar.gz";
-    sha256 = "16fbqrs3l976gdslx647nds8x7sz4h5h3h4l4yxzrayvyh9b5lrd";
+    sha256 = "sha256-tR0VcA+678t/uFw1BrSdMxc6DxXXAPkz7wRAZ7QtRuQ=";
   };
 
   configureFlags = [
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
     "--with-systemdsystemunitdir=\${out}/lib/systemd/system"
   ];
 
-  nativeBuildInputs = [ pkgconfig removeReferencesTo ];
+  nativeBuildInputs = [ pkg-config removeReferencesTo ];
   buildInputs = [ libevent readline net-snmp openssl ];
 
   enableParallelBuilding = true;
diff --git a/pkgs/tools/networking/logmein-hamachi/default.nix b/pkgs/tools/networking/logmein-hamachi/default.nix
index 4abe083a0b9..4512e1dc625 100644
--- a/pkgs/tools/networking/logmein-hamachi/default.nix
+++ b/pkgs/tools/networking/logmein-hamachi/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
-with stdenv.lib;
+with lib;
 
 let
   arch =
@@ -12,7 +12,7 @@ let
     if stdenv.hostPlatform.system == "x86_64-linux" then "0zy0jzvdqccfsg42m2lq1rj8r2c4iypd1h9vxl9824cbl92yim37"
     else if stdenv.hostPlatform.system == "i686-linux" then "03ml9xv19km99f0z7fpr21b1zkxvw7q39kjzd8wpb2pds51wnc62"
     else throwSystem;
-  libraries = stdenv.lib.makeLibraryPath [ stdenv.cc.cc ];
+  libraries = lib.makeLibraryPath [ stdenv.cc.cc ];
 
 in stdenv.mkDerivation rec {
   pname = "logmein-hamachi";
@@ -35,7 +35,7 @@ in stdenv.mkDerivation rec {
   dontStrip = true;
   dontPatchELF = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A hosted VPN service that lets you securely extend LAN-like networks to distributed teams";
     homepage = "https://secure.logmein.com/products/hamachi/";
     license = licenses.unfreeRedistributable;
diff --git a/pkgs/tools/networking/lsh/default.nix b/pkgs/tools/networking/lsh/default.nix
index 56ed33ea36a..b03098d540a 100644
--- a/pkgs/tools/networking/lsh/default.nix
+++ b/pkgs/tools/networking/lsh/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, gperf, guile, gmp, zlib, liboop, readline, gnum4, pam
+{ lib, stdenv, fetchurl, gperf, guile, gmp, zlib, liboop, readline, gnum4, pam
 , nettools, lsof, procps }:
 
 stdenv.mkDerivation rec {
@@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
     '';
 
     homepage = "http://www.lysator.liu.se/~nisse/lsh/";
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = lib.licenses.gpl2Plus;
 
     maintainers = [ ];
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/tools/networking/lxi-tools/default.nix b/pkgs/tools/networking/lxi-tools/default.nix
new file mode 100644
index 00000000000..92ef7f688a5
--- /dev/null
+++ b/pkgs/tools/networking/lxi-tools/default.nix
@@ -0,0 +1,34 @@
+{ lib, stdenv, fetchFromGitHub
+, autoreconfHook, pkg-config
+, liblxi, readline, lua
+}:
+
+stdenv.mkDerivation rec {
+  pname = "lxi-tools";
+  version = "1.21";
+
+  src = fetchFromGitHub {
+    owner = "lxi-tools";
+    repo = "lxi-tools";
+    rev = "v${version}";
+    sha256 = "0rkp6ywsw2zv7hpbr12kba79wkcwqin7xagxxhd968rbfkfdxlwc";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
+
+  buildInputs = [ liblxi readline lua ];
+
+  meta = with lib; {
+    description = "Tool for communicating with LXI compatible instruments";
+    longDescription = ''
+      lxi-tools is a collection of open source software tools
+      that enables control of LXI compatible instruments such
+      as modern oscilloscopes, power supplies,
+      spectrum analyzers etc.
+    '';
+    homepage = "https://lxi-tools.github.io/";
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.vq ];
+  };
+}
diff --git a/pkgs/tools/networking/lychee/default.nix b/pkgs/tools/networking/lychee/default.nix
new file mode 100644
index 00000000000..72f5b6f57fd
--- /dev/null
+++ b/pkgs/tools/networking/lychee/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkg-config
+, openssl
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "lychee";
+  version = "0.7.0";
+
+  src = fetchFromGitHub {
+    owner = "lycheeverse";
+    repo = pname;
+    rev = version;
+    sha256 = "0kpwpbv0dqb0p4bxjlcjas6x1n91rdsvy2psrc1nyr1sh6gb1q5j";
+  };
+
+  cargoSha256 = "1b915zkg41n3azk4hhg6fgc83n7iq8p7drvdyil2m2a4qdjvp9r3";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ openssl ];
+
+  # Disabled because they currently fail
+  doCheck = false;
+
+  meta = with lib; {
+    description = "A fast, async, resource-friendly link checker written in Rust.";
+    homepage = "https://github.com/lycheeverse/lychee";
+    license = with licenses; [ asl20 mit ];
+    maintainers = with maintainers; [ tuxinaut ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/networking/maildrop/default.nix b/pkgs/tools/networking/maildrop/default.nix
index d0a74fe4b5b..b258c638df5 100644
--- a/pkgs/tools/networking/maildrop/default.nix
+++ b/pkgs/tools/networking/maildrop/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, pkgconfig, pcre, perl }:
+{ fetchurl, lib, stdenv, pkg-config, pcre, perl }:
 
 stdenv.mkDerivation {
   name = "maildrop-2.6.0";
@@ -8,14 +8,14 @@ stdenv.mkDerivation {
     sha256 = "1a94p2b41iy334cwfwmzi19557dn5j61abh0cp2rfc9dkc8ibhdg";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ pcre perl ];
 
   patches = [ ./maildrop.configure.hack.patch ]; # for building in chroot
 
   doCheck = false; # fails with "setlocale: LC_ALL: cannot change locale (en_US.UTF-8)"
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.courier-mta.org/maildrop/";
     description = "Mail filter/mail delivery agent that is used by the Courier Mail Server";
     license = licenses.gpl3;
diff --git a/pkgs/tools/networking/mailsend/default.nix b/pkgs/tools/networking/mailsend/default.nix
index 6b9a0caacb9..9856634116e 100644
--- a/pkgs/tools/networking/mailsend/default.nix
+++ b/pkgs/tools/networking/mailsend/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, openssl}:
+{lib, stdenv, fetchurl, openssl}:
 let
   s = # Generated upstream information
   rec {
@@ -31,10 +31,10 @@ stdenv.mkDerivation {
   ];
   meta = {
     inherit (s) version;
-    description = ''CLI email sending tool'';
-    license = stdenv.lib.licenses.bsd3 ;
-    maintainers = [stdenv.lib.maintainers.raskin];
-    platforms = stdenv.lib.platforms.linux;
+    description = "CLI email sending tool";
+    license = lib.licenses.bsd3 ;
+    maintainers = [lib.maintainers.raskin];
+    platforms = lib.platforms.linux;
     homepage = "https://github.com/muquit/mailsend";
     downloadPage = "https://github.com/muquit/mailsend/releases";
   };
diff --git a/pkgs/tools/networking/mailutils/default.nix b/pkgs/tools/networking/mailutils/default.nix
index 9cf5f91cd6d..74d4b61064b 100644
--- a/pkgs/tools/networking/mailutils/default.nix
+++ b/pkgs/tools/networking/mailutils/default.nix
@@ -1,15 +1,14 @@
-{ stdenv, fetchurl, fetchpatch, autoreconfHook, dejagnu, gettext, pkgconfig
+{ lib, stdenv, fetchurl, fetchpatch, autoreconfHook, dejagnu, gettext, pkg-config
 , gdbm, pam, readline, ncurses, gnutls, guile, texinfo, gnum4, sasl, fribidi, nettools
 , python3, gss, libmysqlclient, system-sendmail }:
 
 stdenv.mkDerivation rec {
-  name = "${project}-${version}";
-  project = "mailutils";
-  version = "3.9";
+  pname = "mailutils";
+  version = "3.12";
 
   src = fetchurl {
-    url = "mirror://gnu/${project}/${name}.tar.xz";
-    sha256 = "1g1xf2lal04nsnf1iym9n9n0wxjpqbcr9nysxpm98v4pniinqwsz";
+    url = "mirror://gnu/${pname}/${pname}-${version}.tar.xz";
+    sha256 = "0n51ng1f8yf5zfsnh8s0pj9bnw6icb2r0y78gl2kzijaghhzlhvd";
   };
 
   postPatch = ''
@@ -18,23 +17,26 @@ stdenv.mkDerivation rec {
       */Makefile{.in,.am}
     sed -i 's:/usr/lib/mysql:${libmysqlclient}/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
+    autoreconfHook gettext pkg-config
   ];
 
   buildInputs = [
-    gdbm pam readline ncurses gnutls guile texinfo gnum4 sasl fribidi nettools
+    gdbm pam readline ncurses gnutls guile texinfo gnum4 sasl fribidi
     gss libmysqlclient python3
-  ];
+  ] ++ lib.optionals stdenv.isLinux [ nettools ];
 
   patches = [
     ./fix-build-mb-len-max.patch
     ./path-to-cat.patch
+    # Fix cross-compilation
+    # https://lists.gnu.org/archive/html/bug-mailutils/2020-11/msg00038.html
+    (fetchpatch {
+      url = "https://lists.gnu.org/archive/html/bug-mailutils/2020-11/txtiNjqcNpqOk.txt";
+      sha256 = "0ghzqb8qx2q8cffbvqzw19mivv7r5f16whplzhm7hdj0j2i6xf6s";
+    })
   ];
 
   enableParallelBuilding = false;
@@ -56,8 +58,6 @@ stdenv.mkDerivation rec {
     (fetchurl { url = "${p}/weed.at"; sha256 = "1101xakhc99f5gb9cs3mmydn43ayli7b270pzbvh7f9rbvh0d0nh"; })
   ];
 
-  NIX_CFLAGS_COMPILE = "-L${libmysqlclient}/lib/mysql -I${libmysqlclient}/include/mysql";
-
   checkInputs = [ dejagnu ];
   doCheck = false; # fails 1 out of a bunch of tests, looks like a bug
   doInstallCheck = false; # fails
@@ -82,7 +82,7 @@ stdenv.mkDerivation rec {
     unset LD_LIBRARY_PATH
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Rich and powerful protocol-independent mail framework";
 
     longDescription = ''
diff --git a/pkgs/tools/networking/maphosts/default.nix b/pkgs/tools/networking/maphosts/default.nix
index 8e3d0cf9160..6632485b709 100644
--- a/pkgs/tools/networking/maphosts/default.nix
+++ b/pkgs/tools/networking/maphosts/default.nix
@@ -7,9 +7,10 @@ let
     gemdir = ./.;
   };
 in stdenv.mkDerivation {
-  name = "maphosts-${env.gems.maphosts.version}";
+  pname = "maphosts";
+  version = env.gems.maphosts.version;
 
-  phases = ["installPhase"];
+  dontUnpack = true;
 
   installPhase = ''
     mkdir -p "$out/bin"
diff --git a/pkgs/tools/networking/maphosts/gemset.nix b/pkgs/tools/networking/maphosts/gemset.nix
index 3469d76ea65..b50653bc96d 100644
--- a/pkgs/tools/networking/maphosts/gemset.nix
+++ b/pkgs/tools/networking/maphosts/gemset.nix
@@ -31,4 +31,4 @@
     };
     version = "1.1.1";
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/tools/networking/maxscale/default.nix b/pkgs/tools/networking/maxscale/default.nix
index 48590a9e305..bef421a7ab4 100644
--- a/pkgs/tools/networking/maxscale/default.nix
+++ b/pkgs/tools/networking/maxscale/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, cmake, pkgconfig, glibc
-, bison, curl, flex, gperftools, jansson, jemalloc, kerberos, lua, libmysqlclient
+{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, glibc
+, bison, curl, flex, gperftools, jansson, jemalloc, libkrb5, lua, libmysqlclient
 , ncurses, openssl, pcre, pcre2, perl, rabbitmq-c, sqlite, tcl
 , libaio, libedit, libtool, libui, libuuid, zlib
 }:
@@ -15,10 +15,10 @@ stdenv.mkDerivation rec {
     sha256 = "161kc6aqqj3z509q4qwvsd86h06hlyzdask4gawn2ij0h3ca58q6";
   };
 
-  nativeBuildInputs = [ cmake pkgconfig ];
+  nativeBuildInputs = [ cmake pkg-config ];
 
   buildInputs = [
-    bison curl flex gperftools jansson jemalloc kerberos lua libmysqlclient
+    bison curl flex gperftools jansson jemalloc libkrb5 lua libmysqlclient
     ncurses openssl pcre pcre2 perl rabbitmq-c sqlite tcl
     libaio libedit libtool libui libuuid zlib
   ];
@@ -77,8 +77,8 @@ stdenv.mkDerivation rec {
     rm -rf $out/{etc,var}
   '';
 
-  meta = with stdenv.lib; {
-     description = ''MaxScale database proxy extends MariaDB Server's high availability'';
+  meta = with lib; {
+     description = "MaxScale database proxy extends MariaDB Server's high availability";
      homepage = "https://mariadb.com/products/technology/maxscale";
      license = licenses.bsl11;
      platforms = platforms.linux;
diff --git a/pkgs/tools/networking/mcrcon/default.nix b/pkgs/tools/networking/mcrcon/default.nix
index 4f943f2cec6..ed2596bc88b 100644
--- a/pkgs/tools/networking/mcrcon/default.nix
+++ b/pkgs/tools/networking/mcrcon/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub }:
+{ lib, stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation rec {
   pname = "mcrcon";
@@ -21,13 +21,13 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = "https://bukkit.org/threads/admin-rcon-mcrcon-remote-connection-client-for-minecraft-servers.70910/";
-    description = "Minecraft console client with Bukkit coloring support.";
+    description = "Minecraft console client with Bukkit coloring support";
     longDescription = ''
       Mcrcon is a powerful Minecraft RCON terminal client with Bukkit coloring support.
       It is well suited for remote administration and to be used as part of automated server maintenance scripts.
       It does not trigger "IO: Broken pipe" or "IO: Connection reset" spam bugs on the server side.
     '';
-    maintainers = with stdenv.lib.maintainers; [ dermetfan ];
-    license = with stdenv.lib.licenses; [ zlib libpng ];
+    maintainers = with lib.maintainers; [ dermetfan ];
+    license = with lib.licenses; [ zlib libpng ];
   };
 }
diff --git a/pkgs/tools/networking/mdk4/default.nix b/pkgs/tools/networking/mdk4/default.nix
new file mode 100644
index 00000000000..903504633ac
--- /dev/null
+++ b/pkgs/tools/networking/mdk4/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenv, fetchFromGitHub, libnl, libpcap, pkg-config }:
+
+stdenv.mkDerivation {
+  pname = "mdk4";
+  version = "unstable-2021-04-27";
+
+  src = fetchFromGitHub {
+    owner = "aircrack-ng";
+    repo = "mdk4";
+    rev = "e94422ce8e4b8dcd132d658345814df7e63bfa41";
+    sha256 = "sha256-pZS7HQBKlSZJGqoZlSyBUzXC3osswcB56cBzgm+Sbwg=";
+  };
+
+  preBuild = ''
+    mkdir -p $out/bin
+    mkdir -p $out/share/man
+
+    substituteInPlace src/Makefile --replace '/usr/local/src/mdk4' '$out'
+  '';
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ libnl libpcap ];
+
+  makeFlags = [ "PREFIX=$(out)" "SBINDIR=$(PREFIX)/bin" ];
+
+  meta = with lib; {
+    description = "A tool that injects data into wireless networks";
+    homepage = "https://github.com/aircrack-ng/mdk4";
+    maintainers = with maintainers; [ fortuneteller2k ];
+    license = licenses.gpl2Plus;
+  };
+}
diff --git a/pkgs/tools/networking/megatools/default.nix b/pkgs/tools/networking/megatools/default.nix
index 43bbc62be95..ac37e93c736 100644
--- a/pkgs/tools/networking/megatools/default.nix
+++ b/pkgs/tools/networking/megatools/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchgit, autoreconfHook, pkg-config, glib, fuse, curl, glib-networking
-, asciidoc, libxml2, docbook_xsl, docbook_xml_dtd_45, libxslt, wrapGAppsHook }:
+{ lib, stdenv, fetchgit, autoreconfHook, pkg-config, glib, fuse, curl, glib-networking
+, asciidoc, libxml2, docbook_xsl, docbook_xml_dtd_45, libxslt, wrapGAppsNoGuiHook }:
 
 stdenv.mkDerivation rec {
   pname = "megatools";
@@ -12,15 +12,15 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    autoreconfHook pkg-config wrapGAppsHook asciidoc libxml2
+    autoreconfHook pkg-config wrapGAppsNoGuiHook asciidoc libxml2
     docbook_xsl docbook_xml_dtd_45 libxslt
   ];
   buildInputs = [ glib glib-networking curl ]
-  ++ stdenv.lib.optionals stdenv.isLinux [ fuse ];
+  ++ lib.optionals stdenv.isLinux [ fuse ];
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Command line client for Mega.co.nz";
     homepage = "https://megatools.megous.com/";
     license = licenses.gpl2Plus;
diff --git a/pkgs/tools/networking/memtier-benchmark/default.nix b/pkgs/tools/networking/memtier-benchmark/default.nix
index a45c3a2e33a..0fe128ad13c 100644
--- a/pkgs/tools/networking/memtier-benchmark/default.nix
+++ b/pkgs/tools/networking/memtier-benchmark/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, autoreconfHook
-, pkgconfig, libevent, pcre, zlib, openssl
+{ lib, stdenv, fetchFromGitHub, autoreconfHook
+, pkg-config, libevent, pcre, zlib, openssl
 }:
 
 stdenv.mkDerivation rec {
@@ -18,14 +18,14 @@ stdenv.mkDerivation rec {
       --replace '1.2.8' '${version}'
   '';
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
   buildInputs = [ libevent pcre zlib openssl ];
 
   meta = {
     description = "Redis and Memcached traffic generation and benchmarking tool";
     homepage    = "https://github.com/redislabs/memtier_benchmark";
-    license     = stdenv.lib.licenses.gpl2;
-    platforms   = stdenv.lib.platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ thoughtpolice ];
+    license     = lib.licenses.gpl2;
+    platforms   = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ thoughtpolice ];
   };
 }
diff --git a/pkgs/tools/networking/minidlna/default.nix b/pkgs/tools/networking/minidlna/default.nix
index 6a14b5f1c82..c14b8c68479 100644
--- a/pkgs/tools/networking/minidlna/default.nix
+++ b/pkgs/tools/networking/minidlna/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, ffmpeg_3, flac, libvorbis, libogg, libid3tag, libexif, libjpeg, sqlite, gettext }:
+{ lib, stdenv, fetchurl, ffmpeg, flac, libvorbis, libogg, libid3tag, libexif, libjpeg, sqlite, gettext }:
 
-let version = "1.2.1"; in
+let version = "1.3.0"; in
 
 stdenv.mkDerivation {
   pname = "minidlna";
@@ -8,14 +8,14 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "mirror://sourceforge/project/minidlna/minidlna/${version}/minidlna-${version}.tar.gz";
-    sha256 = "1v1ffhmaqxpvf2vv4yyvjsks4skr9y088853awsh7ixh7ai8nf37";
+    sha256 = "0qrw5ny82p5ybccw4pp9jma8nwl28z927v0j2561m0289imv1na7";
   };
 
   preConfigure = ''
     export makeFlags="INSTALLPREFIX=$out"
   '';
 
-  buildInputs = [ ffmpeg_3 flac libvorbis libogg libid3tag libexif libjpeg sqlite gettext ];
+  buildInputs = [ ffmpeg flac libvorbis libogg libid3tag libexif libjpeg sqlite gettext ];
 
   postInstall = ''
     mkdir -p $out/share/man/man{5,8}
@@ -23,7 +23,7 @@ stdenv.mkDerivation {
     cp minidlnad.8 $out/share/man/man8
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Media server software";
     longDescription = ''
       MiniDLNA (aka ReadyDLNA) is server software with the aim of being fully
diff --git a/pkgs/tools/networking/minio-client/default.nix b/pkgs/tools/networking/minio-client/default.nix
index 505ecc4c222..06ec1b5a83f 100644
--- a/pkgs/tools/networking/minio-client/default.nix
+++ b/pkgs/tools/networking/minio-client/default.nix
@@ -1,19 +1,17 @@
-{ stdenv, buildGoModule, fetchFromGitHub }:
+{ lib, buildGoModule, fetchFromGitHub }:
 
 buildGoModule rec {
   pname = "minio-client";
-  version = "2020-08-08T02-33-58Z";
+  version = "2021-06-13T17-48-22Z";
 
   src = fetchFromGitHub {
     owner = "minio";
     repo = "mc";
     rev = "RELEASE.${version}";
-    sha256 = "15bkl3q0jidrwy04l0cdmha43r9wlxmlqkhmwz98b57rjrq6grql";
+    sha256 = "sha256-u0WO7KSalDqlRwbN3b74FOb632fIGPZ2F0T8qLrvt+U=";
   };
 
-  vendorSha256 = "1fsx8zl2qkyf1gx3s6giccd86xawx9d1h4jdnyn1m36clsq9jkpc";
-
-  doCheck = false;
+  vendorSha256 = "sha256-BadW8AKHcrkCS3sXR7bqdgNhRYkfXIQOteMxIbiLvwg=";
 
   subPackages = [ "." ];
 
@@ -23,10 +21,15 @@ buildGoModule rec {
     sed -i "s/CommitID.*/CommitID = \"${src.rev}\"/g" cmd/build-constants.go
   '';
 
-  meta = with stdenv.lib; {
+  doInstallCheck = true;
+  installCheckPhase = ''
+    $out/bin/mc --version | grep ${version} > /dev/null
+  '';
+
+  meta = with lib; {
     homepage = "https://github.com/minio/mc";
     description = "A replacement for ls, cp, mkdir, diff and rsync commands for filesystems and object storage";
-    maintainers = with maintainers; [ eelco bachp ];
+    maintainers = with maintainers; [ bachp eelco superherointj ];
     platforms = platforms.unix;
     license = licenses.asl20;
   };
diff --git a/pkgs/tools/networking/minissdpd/default.nix b/pkgs/tools/networking/minissdpd/default.nix
index b5702b9bfad..869abe92e5c 100644
--- a/pkgs/tools/networking/minissdpd/default.nix
+++ b/pkgs/tools/networking/minissdpd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libnfnetlink }:
+{ lib, stdenv, fetchurl, libnfnetlink }:
 
 stdenv.mkDerivation rec {
   pname = "minissdpd";
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Small daemon to speed up UPnP device discoveries";
     longDescription = ''
       MiniSSDPd receives NOTIFY packets and stores (caches) that information
diff --git a/pkgs/tools/networking/miniupnpc/default.nix b/pkgs/tools/networking/miniupnpc/default.nix
index 41927278ac8..9fe476906bc 100644
--- a/pkgs/tools/networking/miniupnpc/default.nix
+++ b/pkgs/tools/networking/miniupnpc/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, which, cctools }:
+{ lib, stdenv, fetchurl, which, cctools }:
 
 let
   generic = { version, sha256 }:
@@ -11,15 +11,15 @@ let
         inherit sha256;
       };
 
-      nativeBuildInputs = stdenv.lib.optionals stdenv.isDarwin [ which cctools ];
+      nativeBuildInputs = lib.optionals stdenv.isDarwin [ which cctools ];
 
-      patches = stdenv.lib.optional stdenv.isFreeBSD ./freebsd.patch;
+      patches = lib.optional stdenv.isFreeBSD ./freebsd.patch;
 
       doCheck = !stdenv.isFreeBSD;
 
       makeFlags = [ "PREFIX=$(out)" "INSTALLPREFIX=$(out)" ];
 
-      meta = with stdenv.lib; {
+      meta = with lib; {
         homepage = "http://miniupnp.free.fr/";
         description = "A client that implements the UPnP Internet Gateway Device (IGD) specification";
         platforms = with platforms; linux ++ freebsd ++ darwin;
diff --git a/pkgs/tools/networking/miniupnpd/default.nix b/pkgs/tools/networking/miniupnpd/default.nix
index 23f02dde1f4..aea0faddf5d 100644
--- a/pkgs/tools/networking/miniupnpd/default.nix
+++ b/pkgs/tools/networking/miniupnpd/default.nix
@@ -1,9 +1,10 @@
-{ stdenv, lib, fetchurl, iptables, libuuid, pkgconfig
-, which, iproute, gnused, coreutils, gawk, makeWrapper
+{ stdenv, lib, fetchurl, iptables, libuuid, pkg-config
+, which, iproute2, gnused, coreutils, gawk, makeWrapper
+, nixosTests
 }:
 
 let
-  scriptBinEnv = lib.makeBinPath [ which iproute iptables gnused coreutils gawk ];
+  scriptBinEnv = lib.makeBinPath [ which iproute2 iptables gnused coreutils gawk ];
 in
 stdenv.mkDerivation rec {
   name = "miniupnpd-2.1.20190502";
@@ -15,7 +16,7 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [ iptables libuuid ];
-  nativeBuildInputs= [ pkgconfig makeWrapper ];
+  nativeBuildInputs= [ pkg-config makeWrapper ];
 
   makefile = "Makefile.linux";
 
@@ -30,7 +31,11 @@ stdenv.mkDerivation rec {
     done
   '';
 
-  meta = with stdenv.lib; {
+  passthru.tests = {
+    bittorrent-integration = nixosTests.bittorrent;
+  };
+
+  meta = with lib; {
     homepage = "http://miniupnp.free.fr/";
     description = "A daemon that implements the UPnP Internet Gateway Device (IGD) specification";
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/miredo/default.nix b/pkgs/tools/networking/miredo/default.nix
index 1982cab6b39..94565db2076 100644
--- a/pkgs/tools/networking/miredo/default.nix
+++ b/pkgs/tools/networking/miredo/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, nettools, iproute, judy }:
+{ lib, stdenv, fetchurl, nettools, iproute2, judy }:
 
 stdenv.mkDerivation rec {
   version = "1.2.6";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
     substituteInPlace misc/client-hook.bsd \
       --replace '/sbin/route' '${nettools}/bin/route' \
       --replace '/sbin/ifconfig' '${nettools}/bin/ifconfig'
-    substituteInPlace misc/client-hook.iproute --replace '/sbin/ip' '${iproute}/bin/ip'
+    substituteInPlace misc/client-hook.iproute --replace '/sbin/ip' '${iproute2}/bin/ip'
   '';
 
   configureFlags = [ "--with-Judy" ];
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
     rm -rf $out/lib/systemd $out/var $out/etc/miredo/miredo.conf
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Teredo IPv6 Tunneling Daemon";
     homepage = "https://www.remlab.net/miredo/";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/mitmproxy/default.nix b/pkgs/tools/networking/mitmproxy/default.nix
deleted file mode 100644
index b9d873fad6a..00000000000
--- a/pkgs/tools/networking/mitmproxy/default.nix
+++ /dev/null
@@ -1,55 +0,0 @@
-{ stdenv, fetchFromGitHub, python3Packages, glibcLocales, fetchpatch }:
-
-with python3Packages;
-
-buildPythonPackage rec {
-  pname = "mitmproxy";
-  version = "5.1.1";
-
-  src = fetchFromGitHub {
-    owner  = pname;
-    repo   = pname;
-    rev    = "v${version}";
-    sha256 = "1lirlckpvd3c6s6q3p32w4k4yfna5mlgr1x9g39lhzzq0sdiz3lk";
-  };
-
-  postPatch = ''
-    # remove dependency constraints
-    sed 's/>=\([0-9]\.\?\)\+\( \?, \?<\([0-9]\.\?\)\+\)\?//' -i setup.py
-  '';
-
-  doCheck = (!stdenv.isDarwin);
-
-  # examples.complex.xss_scanner doesn't import correctly with pytest5
-  checkPhase = ''
-    export HOME=$(mktemp -d)
-    export LC_CTYPE=en_US.UTF-8
-    pytest --ignore test/examples \
-      -k 'not test_find_unclaimed_URLs and not test_tcp'
-  '';
-
-  propagatedBuildInputs = [
-    blinker brotli certifi cffi
-    click cryptography flask h11
-    h2 hpack hyperframe itsdangerous
-    jinja2 kaitaistruct ldap3 markupsafe
-    passlib protobuf publicsuffix2 pyasn1
-    pycparser pyopenssl pyparsing pyperclip
-    ruamel_yaml setuptools six sortedcontainers
-    tornado urwid werkzeug wsproto zstandard
-  ];
-
-  checkInputs = [
-    beautifulsoup4 flask pytest
-    requests glibcLocales
-    asynctest parver pytest-asyncio
-    hypothesis
-  ];
-
-  meta = with stdenv.lib; {
-    description = "Man-in-the-middle proxy";
-    homepage    = "https://mitmproxy.org/";
-    license     = licenses.mit;
-    maintainers = with maintainers; [ fpletz kamilchm ];
-  };
-}
diff --git a/pkgs/tools/networking/mmsd/default.nix b/pkgs/tools/networking/mmsd/default.nix
index fee347dd201..f102995a3cc 100644
--- a/pkgs/tools/networking/mmsd/default.nix
+++ b/pkgs/tools/networking/mmsd/default.nix
@@ -1,7 +1,7 @@
-{ stdenv
+{ lib, stdenv
 , fetchgit
 , autoreconfHook
-, pkgconfig
+, pkg-config
 , glib
 , dbus
 }:
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     autoreconfHook
-    pkgconfig
+    pkg-config
   ];
 
   buildInputs = [
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Multimedia Messaging Service Daemon";
     homepage = "https://01.org/ofono";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/modem-manager/default.nix b/pkgs/tools/networking/modem-manager/default.nix
index c3981b902f2..2a99c127acb 100644
--- a/pkgs/tools/networking/modem-manager/default.nix
+++ b/pkgs/tools/networking/modem-manager/default.nix
@@ -1,20 +1,34 @@
-{ stdenv, fetchurl, glib, udev, libgudev, polkit, ppp, gettext, pkgconfig
-, libmbim, libqmi, systemd, vala, gobject-introspection, dbus }:
+{ lib, stdenv, fetchurl, fetchpatch
+, glib, udev, libgudev, polkit, ppp, gettext, pkg-config, python3
+, libmbim, libqmi, systemd, vala, gobject-introspection, dbus
+}:
 
 stdenv.mkDerivation rec {
   pname = "modem-manager";
-  version = "1.12.10";
+  version = "1.16.6";
 
-  package = "ModemManager";
   src = fetchurl {
-    url = "https://www.freedesktop.org/software/${package}/${package}-${version}.tar.xz";
-    sha256 = "1apq9camys2gaw6y6ic1ld20cncfwpmxnzvh4j5zkbbjpf5hbcxj";
+    url = "https://www.freedesktop.org/software/ModemManager/ModemManager-${version}.tar.xz";
+    sha256 = "05wn94x71qr36avxjzvyf56nj5illynnf9nn15b17lv61wkbd41a";
   };
 
-  nativeBuildInputs = [ vala gobject-introspection gettext pkgconfig ];
+  patches = [
+    # Fix a broken test.
+    # https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/556
+    (fetchpatch {
+      url = "https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/commit/a324667386f35df0c3b3bbf615fa0560d215485d.patch";
+      sha256 = "1xj9gfl6spbp4xdp6gn76k8zvzam5m6lgmbiwdn6ixffzhlfwi5l";
+    })
+  ];
+
+  nativeBuildInputs = [ vala gobject-introspection gettext pkg-config ];
 
   buildInputs = [ glib udev libgudev polkit ppp libmbim libqmi systemd ];
 
+  installCheckInputs = [
+    python3 python3.pkgs.dbus-python python3.pkgs.pygobject3
+  ];
+
   configureFlags = [
     "--with-polkit"
     "--with-udev-base-dir=${placeholder "out"}/lib/udev"
@@ -26,19 +40,29 @@ stdenv.mkDerivation rec {
     "--with-systemd-journal"
   ];
 
-  preCheck = ''
+  postPatch = ''
+    patchShebangs tools/test-modemmanager-service.py
+  '';
+
+  # In Nixpkgs g-ir-scanner is patched to produce absolute paths, and
+  # that interferes with ModemManager's tests, causing them to try to
+  # load libraries from the install path, which doesn't usually exist
+  # when `make check' is run.  So to work around that, we run it as an
+  # install check instead, when those paths will have been created.
+  doInstallCheck = true;
+  preInstallCheck = ''
     export G_TEST_DBUS_DAEMON="${dbus.daemon}/bin/dbus-daemon"
+    patchShebangs tools/tests/test-wrapper.sh
   '';
+  installCheckTarget = "check";
 
   enableParallelBuilding = true;
 
-  doCheck = true;
-
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "WWAN modem manager, part of NetworkManager";
     homepage = "https://www.freedesktop.org/wiki/Software/ModemManager/";
     license = licenses.gpl2Plus;
-    maintainers = [ ];
+    maintainers = teams.freedesktop.members;
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/moodle-dl/default.nix b/pkgs/tools/networking/moodle-dl/default.nix
new file mode 100644
index 00000000000..95140467f7a
--- /dev/null
+++ b/pkgs/tools/networking/moodle-dl/default.nix
@@ -0,0 +1,34 @@
+{ lib, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "moodle-dl";
+  version = "2.1.2.5";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "1gc4037dwyi48h4vi0bam23rr7pfyn6jrz334radz0r6rk94y8lz";
+  };
+
+  # nixpkgs (and the GitHub upstream for readchar) are missing 2.0.1
+  postPatch = ''
+    substituteInPlace setup.py --replace 'readchar>=2.0.1' 'readchar>=2.0.0'
+  '';
+
+  propagatedBuildInputs = with python3Packages; [
+    sentry-sdk
+    colorama
+    readchar
+    youtube-dl
+    certifi
+    html2text
+    requests
+    slixmpp
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/C0D3D3V/Moodle-Downloader-2";
+    maintainers = [ maintainers.kmein ];
+    description = "A Moodle downloader that downloads course content fast from Moodle";
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/pkgs/tools/networking/mosh/default.nix b/pkgs/tools/networking/mosh/default.nix
index 26c9035cd79..92c241967ae 100644
--- a/pkgs/tools/networking/mosh/default.nix
+++ b/pkgs/tools/networking/mosh/default.nix
@@ -1,17 +1,18 @@
-{ lib, stdenv, fetchurl, fetchpatch, zlib, protobuf, ncurses, pkgconfig
+{ lib, stdenv, fetchurl, fetchpatch, zlib, protobuf, ncurses, pkg-config
 , makeWrapper, perlPackages, openssl, autoreconfHook, openssh, bash-completion
-, libutempter ? null, withUtempter ? stdenv.isLinux }:
+, withUtempter ? stdenv.isLinux, libutempter }:
 
 stdenv.mkDerivation rec {
-  name = "mosh-1.3.2";
+  pname = "mosh";
+  version = "1.3.2";
 
   src = fetchurl {
-    url = "https://mosh.org/${name}.tar.gz";
+    url = "https://mosh.org/mosh-${version}.tar.gz";
     sha256 = "05hjhlp6lk8yjcy59zywpf0r6s0h0b9zxq0lw66dh9x8vxrhaq6s";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
-  buildInputs = [ protobuf ncurses zlib makeWrapper openssl bash-completion ]
+  nativeBuildInputs = [ autoreconfHook pkg-config makeWrapper ];
+  buildInputs = [ protobuf ncurses zlib openssl bash-completion ]
     ++ (with perlPackages; [ perl IOTty ])
     ++ lib.optional withUtempter libutempter;
 
@@ -19,6 +20,7 @@ stdenv.mkDerivation rec {
 
   patches = [
     ./ssh_path.patch
+    ./mosh-client_path.patch
     ./utempter_path.patch
     # Fix w/c++17, ::bind vs std::bind
     (fetchpatch {
@@ -31,6 +33,8 @@ stdenv.mkDerivation rec {
   postPatch = ''
     substituteInPlace scripts/mosh.pl \
         --subst-var-by ssh "${openssh}/bin/ssh"
+    substituteInPlace scripts/mosh.pl \
+        --subst-var-by mosh-client "$out/bin/mosh-client"
   '';
 
   configureFlags = [ "--enable-completion" ] ++ lib.optional withUtempter "--with-utempter";
@@ -39,9 +43,9 @@ stdenv.mkDerivation rec {
       wrapProgram $out/bin/mosh --prefix PERL5LIB : $PERL5LIB
   '';
 
-  CXXFLAGS = stdenv.lib.optionalString stdenv.cc.isClang "-std=c++11";
+  CXXFLAGS = lib.optionalString stdenv.cc.isClang "-std=c++11";
 
-  meta = {
+  meta = with lib; {
     homepage = "https://mosh.org/";
     description = "Mobile shell (ssh replacement)";
     longDescription = ''
@@ -52,8 +56,8 @@ stdenv.mkDerivation rec {
       Mosh is a replacement for SSH. It's more robust and responsive,
       especially over Wi-Fi, cellular, and long-distance links.
     '';
-    license = stdenv.lib.licenses.gpl3Plus;
-    maintainers = with stdenv.lib.maintainers; [viric];
-    platforms = stdenv.lib.platforms.unix;
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ viric ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/mosh/mosh-client_path.patch b/pkgs/tools/networking/mosh/mosh-client_path.patch
new file mode 100644
index 00000000000..327fb7af926
--- /dev/null
+++ b/pkgs/tools/networking/mosh/mosh-client_path.patch
@@ -0,0 +1,22 @@
+diff --git a/scripts/mosh.pl b/scripts/mosh.pl
+index 56e96d7..2a2177e 100755
+--- a/scripts/mosh.pl
++++ b/scripts/mosh.pl
+@@ -61,7 +61,7 @@ my $have_ipv6 = eval {
+ 
+ $|=1;
+ 
+-my $client = 'mosh-client';
++my $client = '@mosh-client@';
+ my $server = 'mosh-server';
+ 
+ my $predict = undef;
+@@ -91,7 +91,7 @@ my @cmdline = @ARGV;
+ my $usage =
+ qq{Usage: $0 [options] [--] [user@]host [command...]
+         --client=PATH        mosh client on local machine
+-                                (default: "mosh-client")
++                                (default: "@mosh-client@")
+         --server=COMMAND     mosh server on remote machine
+                                 (default: "mosh-server")
+ 
diff --git a/pkgs/tools/networking/mozwire/default.nix b/pkgs/tools/networking/mozwire/default.nix
index 6264672cfaa..afccd8376d8 100644
--- a/pkgs/tools/networking/mozwire/default.nix
+++ b/pkgs/tools/networking/mozwire/default.nix
@@ -1,21 +1,21 @@
-{ rustPlatform, stdenv, fetchFromGitHub, Security }:
+{ rustPlatform, lib, stdenv, fetchFromGitHub, Security }:
 
 rustPlatform.buildRustPackage rec {
   pname = "MozWire";
-  version = "0.5.1";
+  version = "0.7.0";
 
   src = fetchFromGitHub {
     owner = "NilsIrl";
     repo = pname;
     rev = "v${version}";
-    sha256 = "07icgswmfvrvlm3mkm78pbbk6m2hb73j7ffj7r77whzb11v027v1";
+    sha256 = "01bj3c34x9ywxygsz4rdyw5gc9cz8x6zzl5fd7db8qy8bx2lhlr9";
   };
 
-  buildInputs = stdenv.lib.optionals stdenv.isDarwin [ Security ];
-  
-  cargoSha256 = "10lhz7bdlfqj7wgsqnsxdfskms33pvj176fhf4kwci7nb8vgai4b";
+  buildInputs = lib.optionals stdenv.isDarwin [ Security ];
 
-  meta = with stdenv.lib; {
+  cargoSha256 = "0q27p2hyw6c1fh5x8kwsrw8a1hk6z90z0z3w86ga8ryz53xg4vdi";
+
+  meta = with lib; {
     description = "MozillaVPN configuration manager giving Linux, macOS users (among others), access to MozillaVPN";
     homepage = "https://github.com/NilsIrl/MozWire";
     license = licenses.gpl3;
diff --git a/pkgs/tools/networking/mpack/default.nix b/pkgs/tools/networking/mpack/default.nix
index 5a8af7de36a..3aca81596e0 100644
--- a/pkgs/tools/networking/mpack/default.nix
+++ b/pkgs/tools/networking/mpack/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   name = "mpack-1.6";
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Utilities for encoding and decoding binary files in MIME";
     license = licenses.free;
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/mtr/default.nix b/pkgs/tools/networking/mtr/default.nix
index ae5695537af..1257c167e76 100644
--- a/pkgs/tools/networking/mtr/default.nix
+++ b/pkgs/tools/networking/mtr/default.nix
@@ -1,27 +1,17 @@
-{ stdenv, lib, fetchFromGitHub, fetchpatch, autoreconfHook, pkgconfig
+{ stdenv, lib, fetchFromGitHub, autoreconfHook, pkg-config
 , libcap, ncurses
-, withGtk ? false, gtk2 ? null }:
-
-assert withGtk -> gtk2 != null;
+, withGtk ? false, gtk3 }:
 
 stdenv.mkDerivation rec {
   pname = "mtr${lib.optionalString withGtk "-gui"}";
-  version = "0.93";
+  version = "0.94";
 
   src = fetchFromGitHub {
-    owner  = "traviscross";
-    repo   = "mtr";
-    rev    = "v${version}";
-    sha256 = "0n0zr9k61w7a9psnzgp7xnc7ll1ic2xzcvqsbbbyndg3v9rff6bw";
+    owner = "traviscross";
+    repo = "mtr";
+    rev = "v${version}";
+    sha256 = "0wnz87cr2lcl74bj8qxq9xgai40az3pk9k0z893scyc8svd61xz6";
   };
-  
-  patches = [
-    # https://github.com/traviscross/mtr/pull/315
-    (fetchpatch {
-      url = "https://github.com/traviscross/mtr/pull/315.patch?full_index=1";
-      sha256 = "18qcsj9058snc2qhq6v6gdbqhz021gi5fgw9h7vfczv45gf0qasa";
-    })
-  ];
 
   # we need this before autoreconfHook does its thing
   postPatch = ''
@@ -34,21 +24,21 @@ stdenv.mkDerivation rec {
       --replace ' install-exec-hook' ""
   '';
 
-  configureFlags = stdenv.lib.optional (!withGtk) "--without-gtk";
+  configureFlags = lib.optional (!withGtk) "--without-gtk";
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
 
   buildInputs = [ ncurses ]
-    ++ stdenv.lib.optional withGtk gtk2
-    ++ stdenv.lib.optional stdenv.isLinux libcap;
+    ++ lib.optional withGtk gtk3
+    ++ lib.optional stdenv.isLinux libcap;
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A network diagnostics tool";
-    homepage    = "https://www.bitwizard.nl/mtr/";
-    license     = licenses.gpl2;
+    homepage = "https://www.bitwizard.nl/mtr/";
+    license = licenses.gpl2;
     maintainers = with maintainers; [ koral orivej raskin globin ];
-    platforms   = platforms.unix;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/mu/default.nix b/pkgs/tools/networking/mu/default.nix
index 82a22dd947d..4553063929f 100644
--- a/pkgs/tools/networking/mu/default.nix
+++ b/pkgs/tools/networking/mu/default.nix
@@ -1,21 +1,22 @@
-{ stdenv, fetchFromGitHub, sqlite, pkgconfig, autoreconfHook, pmccabe
-, xapian, glib, gmime3, texinfo , emacs, guile
+{ lib, stdenv, fetchFromGitHub, sqlite, pkg-config, autoreconfHook, pmccabe
+, xapian, glib, gmime3, texinfo, emacs, guile
 , gtk3, webkitgtk, libsoup, icu
+, makeWrapper
 , withMug ? false
 , batchSize ? null }:
 
 stdenv.mkDerivation rec {
   pname = "mu";
-  version = "1.4.13";
+  version = "1.4.15";
 
   src = fetchFromGitHub {
     owner  = "djcb";
     repo   = "mu";
     rev    = version;
-    sha256 = "03cp2ppj07xpb0c43d3cr8m9jps07mfm8clmlk03sjbxg1widsh0";
+    sha256 = "sha256-VIUA0W+AmEbvGWatv4maBGILvUTGhBgO3iQtjIc3vG8=";
   };
 
-  postPatch = stdenv.lib.optionalString (batchSize != null) ''
+  postPatch = lib.optionalString (batchSize != null) ''
     sed -i lib/mu-store.cc --regexp-extended \
       -e 's@(constexpr auto BatchSize).*@\1 = ${toString batchSize};@'
   '';
@@ -24,10 +25,10 @@ stdenv.mkDerivation rec {
     sqlite xapian glib gmime3 texinfo emacs libsoup icu
   ]
     # Workaround for https://github.com/djcb/mu/issues/1641
-    ++ stdenv.lib.optional (!stdenv.isDarwin) guile
-    ++ stdenv.lib.optionals withMug [ gtk3 webkitgtk ];
+    ++ lib.optional (!stdenv.isDarwin) guile
+    ++ lib.optionals withMug [ gtk3 webkitgtk ];
 
-  nativeBuildInputs = [ pkgconfig autoreconfHook pmccabe ];
+  nativeBuildInputs = [ pkg-config autoreconfHook pmccabe makeWrapper ];
 
   enableParallelBuilding = true;
 
@@ -37,8 +38,12 @@ stdenv.mkDerivation rec {
       --replace "@abs_top_builddir@" "$out"
   '';
 
-  # Install mug
-  postInstall = stdenv.lib.optionalString withMug ''
+  # Make sure included scripts can find their dependencies & optionally install mug
+  postInstall = ''
+    wrapProgram "$out/bin/mu" \
+      --prefix LD_LIBRARY_PATH : "$out/lib" \
+      --prefix GUILE_LOAD_PATH : "$out/share/guile/site/2.2"
+  '' + lib.optionalString withMug ''
     for f in mug ; do
       install -m755 toys/$f/$f $out/bin/$f
     done
@@ -46,7 +51,7 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A collection of utilties for indexing and searching Maildirs";
     license = licenses.gpl3Plus;
     homepage = "https://www.djcbsoftware.nl/code/mu/";
diff --git a/pkgs/tools/networking/mubeng/default.nix b/pkgs/tools/networking/mubeng/default.nix
new file mode 100644
index 00000000000..11ebe338c90
--- /dev/null
+++ b/pkgs/tools/networking/mubeng/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "mubeng";
+  version = "0.4.5";
+
+  src = fetchFromGitHub {
+    owner = "kitabisa";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "03hm4wqlvsbi06g0ijrhvbk9i2ahmd1m8l80wbcijznhbdl5msl8";
+  };
+
+  vendorSha256 = "1qcxix6724ly0klsr8bw3nv6pxn0wixqiqcgqkcp6sia4dxbbg14";
+
+  meta = with lib; {
+    description = "Proxy checker and IP rotator";
+    homepage = "https://github.com/kitabisa/mubeng";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/networking/n2n/default.nix b/pkgs/tools/networking/n2n/default.nix
new file mode 100644
index 00000000000..aec4a1c5f53
--- /dev/null
+++ b/pkgs/tools/networking/n2n/default.nix
@@ -0,0 +1,32 @@
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config }:
+
+stdenv.mkDerivation rec {
+  pname = "n2n";
+  version = "2.8";
+
+  src = fetchFromGitHub {
+    owner = "ntop";
+    repo = "n2n";
+    rev = version;
+    hash = "sha256-2xJ8gYVZJZoKs6PZ/9GacgxQ+/3tmnRntT1AbPe1At4=";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
+
+  postPatch = ''
+    patchShebangs autogen.sh
+  '';
+
+  preAutoreconf = ''
+    ./autogen.sh
+  '';
+
+  PREFIX = placeholder "out";
+
+  meta = with lib; {
+    description = "Peer-to-peer VPN";
+    homepage = "https://www.ntop.org/products/n2n/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ malvo ];
+  };
+}
diff --git a/pkgs/tools/networking/nat-traverse/default.nix b/pkgs/tools/networking/nat-traverse/default.nix
index e3bf3391f21..a1c1337a216 100644
--- a/pkgs/tools/networking/nat-traverse/default.nix
+++ b/pkgs/tools/networking/nat-traverse/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, perl }:
+{ lib, stdenv, fetchurl, perl }:
 
 stdenv.mkDerivation rec {
   pname = "nat-traverse";
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
     gzip -c nat-traverse.1 > $out/share/man/man1/nat-traverse.1.gz
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "NAT gateway traversal utility";
     longDescription = ''
       nat-traverse establishes direct connections between nodes which are
diff --git a/pkgs/tools/networking/nbd/default.nix b/pkgs/tools/networking/nbd/default.nix
index d634c37b123..6478a15aa1a 100644
--- a/pkgs/tools/networking/nbd/default.nix
+++ b/pkgs/tools/networking/nbd/default.nix
@@ -1,17 +1,17 @@
-{ stdenv, fetchurl, pkgconfig, glib, which }:
+{ lib, stdenv, fetchurl, pkg-config, glib, which }:
 
 stdenv.mkDerivation rec {
-  name = "nbd-3.20";
+  name = "nbd-3.21";
 
   src = fetchurl {
     url = "mirror://sourceforge/nbd/${name}.tar.xz";
-    sha256 = "1kfnyx52nna2mnw264njk1dl2zc8m78sz031yp65mbmpi99v7qg0";
+    sha256 = "sha256-52iK852Rczu80tsIBixE/lA9AE5RUodAE5xEr/amvvk=";
   };
 
   buildInputs = [ glib ]
-    ++ stdenv.lib.optional (stdenv ? glibc) stdenv.glibc.linuxHeaders;
+    ++ lib.optional (stdenv ? glibc) stdenv.glibc.linuxHeaders;
 
-  nativeBuildInputs = [ pkgconfig which ];
+  nativeBuildInputs = [ pkg-config which ];
 
   postInstall = ''
     mkdir -p "$out/share/doc/${name}"
@@ -23,13 +23,13 @@ stdenv.mkDerivation rec {
   # Glib calls `clock_gettime', which is in librt. Linking that library
   # here ensures that a proper rpath is added to the executable so that
   # it can be loaded at run-time.
-  NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lrt -lpthread";
+  NIX_LDFLAGS = lib.optionalString stdenv.isLinux "-lrt -lpthread";
 
   meta = {
     homepage = "http://nbd.sourceforge.net";
     description = "Map arbitrary files as block devices over the network";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.peti ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.peti ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/ncftp/default.nix b/pkgs/tools/networking/ncftp/default.nix
index 98fa6cc29f1..a43d5f4a88c 100644
--- a/pkgs/tools/networking/ncftp/default.nix
+++ b/pkgs/tools/networking/ncftp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ncurses, coreutils }:
+{ lib, stdenv, fetchurl, ncurses, coreutils }:
 
 stdenv.mkDerivation rec {
   pname = "ncftp";
@@ -14,6 +14,8 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   preConfigure = ''
+    find -name Makefile.in | xargs sed -i '/^TMPDIR=/d'
+
     find . -name '*.sh' -or -name '*.in' -or -name '*.c' -or -name configure | xargs sed -i \
       -e 's@/bin/ls@${coreutils}/bin/ls@g' \
       -e 's@/bin/rm@${coreutils}/bin/rm@g'
@@ -30,7 +32,7 @@ stdenv.mkDerivation rec {
     "--mandir=$(out)/share/man/"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Command line FTP (File Transfer Protocol) client";
     homepage = "https://www.ncftp.com/ncftp/";
     maintainers = with maintainers; [ bjornfor ];
diff --git a/pkgs/tools/networking/ndisc6/default.nix b/pkgs/tools/networking/ndisc6/default.nix
index 03304df5f79..6612315c6f2 100644
--- a/pkgs/tools/networking/ndisc6/default.nix
+++ b/pkgs/tools/networking/ndisc6/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, perl }:
+{ lib, stdenv, fetchurl, perl }:
 
 stdenv.mkDerivation rec {
   name = "ndisc6-1.0.4";
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
     "localstatedir=$(TMPDIR)"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://www.remlab.net/ndisc6/";
     description = "A small collection of useful tools for IPv6 networking";
     maintainers = with maintainers; [ eelco ];
diff --git a/pkgs/tools/networking/ndjbdns/default.nix b/pkgs/tools/networking/ndjbdns/default.nix
index 3edfe9b7e5d..651cbab86d9 100644
--- a/pkgs/tools/networking/ndjbdns/default.nix
+++ b/pkgs/tools/networking/ndjbdns/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, systemd, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, systemd, pkg-config }:
 
-with stdenv.lib;
+with lib;
 
 stdenv.mkDerivation {
   version = "1.06";
@@ -13,7 +13,7 @@ stdenv.mkDerivation {
     sha256 = "0gjyvn8r66kp49gasd6sqfvg2pj0c6v67hnq7cqwl04kj69rfy86";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
   buildInputs = [ ]
     ++ optional stdenv.isLinux systemd;
 
diff --git a/pkgs/tools/networking/nebula/default.nix b/pkgs/tools/networking/nebula/default.nix
index 178979b2caf..06615ae25fa 100644
--- a/pkgs/tools/networking/nebula/default.nix
+++ b/pkgs/tools/networking/nebula/default.nix
@@ -2,22 +2,22 @@
 
 buildGoModule rec {
   pname = "nebula";
-  version = "1.2.0";
+  version = "1.4.0";
 
   src = fetchFromGitHub {
     owner = "slackhq";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0xrki9w83b4b3l5adq1rxz374f124wf388sdyvy7ngc3b04k7qlb";
+    sha256 = "lu2/rSB9cFD7VUiK+niuqCX9CI2x+k4Pi+U5yksETSU=";
   };
 
-  vendorSha256 = "094mn1r69c40w7k3lsggjh0dpws9l0j7mgiyjy1lpblkvkyk2azm";
+  vendorSha256 = "p1inJ9+NAb2d81cn+y+ofhxFz9ObUiLgj+9cACa6Jqg=";
 
   doCheck = false;
 
   subPackages = [ "cmd/nebula" "cmd/nebula-cert" ];
 
-  buildFlagsArray = [ "-ldflags='-X main.Build=${version}'" ];
+  buildFlagsArray = [ "-ldflags=" "-X main.Build=${version}" ];
 
   meta = with lib; {
     description = "A scalable overlay networking tool with a focus on performance, simplicity and security";
@@ -38,7 +38,7 @@ buildGoModule rec {
     '';
     homepage = "https://github.com/slackhq/nebula";
     license = licenses.mit;
-    maintainers = with maintainers; [ filalex77 ];
+    maintainers = with maintainers; [ Br1ght0ne ];
   };
 
 }
diff --git a/pkgs/tools/networking/netboot/default.nix b/pkgs/tools/networking/netboot/default.nix
index 7a1eac59eea..e7d984a798b 100644
--- a/pkgs/tools/networking/netboot/default.nix
+++ b/pkgs/tools/networking/netboot/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, yacc, lzo, db4 }:
+{ lib, stdenv, fetchurl, bison, lzo, db4 }:
 
 stdenv.mkDerivation rec {
   name = "netboot-0.10.2";
@@ -7,14 +7,14 @@ stdenv.mkDerivation rec {
     sha256 = "09w09bvwgb0xzn8hjz5rhi3aibysdadbg693ahn8rylnqfq4hwg0";
   };
 
-  buildInputs = [ yacc lzo db4 ];
+  buildInputs = [ bison lzo db4 ];
 
   hardeningDisable = [ "format" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Mini PXE server";
     maintainers = [ maintainers.raskin ];
     platforms = ["x86_64-linux"];
-    license = stdenv.lib.licenses.free;
+    license = lib.licenses.free;
   };
 }
diff --git a/pkgs/tools/networking/netcat/default.nix b/pkgs/tools/networking/netcat/default.nix
index 5c275ee6ab4..7b325b2f484 100644
--- a/pkgs/tools/networking/netcat/default.nix
+++ b/pkgs/tools/networking/netcat/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation {
   name = "netcat-gnu-0.7.1";
@@ -8,7 +8,7 @@ stdenv.mkDerivation {
     sha256 = "1frjcdkhkpzk0f84hx6hmw5l0ynpmji8vcbaxg8h5k2svyxz0nmm";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Utility which reads and writes data across network connections";
     homepage = "http://netcat.sourceforge.net/";
     license = licenses.gpl2Plus;
diff --git a/pkgs/tools/networking/nethogs/default.nix b/pkgs/tools/networking/nethogs/default.nix
index 7bc6d0e2be7..c6a8f3b7f4e 100644
--- a/pkgs/tools/networking/nethogs/default.nix
+++ b/pkgs/tools/networking/nethogs/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, ncurses, libpcap }:
+{ lib, stdenv, fetchFromGitHub, ncurses, libpcap }:
 
 stdenv.mkDerivation rec {
   pname = "nethogs";
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
 
   installFlags = [ "PREFIX=$(out)" "sbin=$(out)/bin" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A small 'net top' tool, grouping bandwidth by process";
     longDescription = ''
       NetHogs is a small 'net top' tool. Instead of breaking the traffic down
diff --git a/pkgs/tools/networking/netifd/default.nix b/pkgs/tools/networking/netifd/default.nix
index 36d1ec7a423..dc343e563a7 100644
--- a/pkgs/tools/networking/netifd/default.nix
+++ b/pkgs/tools/networking/netifd/default.nix
@@ -1,27 +1,22 @@
-{ runCommand, stdenv, cmake, fetchgit, libnl, libubox, uci, ubus, json_c }:
+{ lib, stdenv, cmake, fetchgit, libnl, libubox, uci, ubus, json_c, pkg-config }:
 
 stdenv.mkDerivation {
   pname = "netifd";
-  version = "unstable-2020-07-11";
+  version = "unstable-2021-04-03";
 
   src = fetchgit {
     url = "https://git.openwrt.org/project/netifd.git";
-    rev = "3d9bd73e8c2d8a1f78effbe92dd2495bbd2552c4";
-    sha256 = "085sx1gsigbi1jr19l387rc5p6ja1np6q2gb84khjd4pyiqwk840";
+    rev = "327da9895327bc56b23413ee91a6e6b6e0e4329d";
+    sha256 = "0jvk2hx8kbkc6d72gh9rwap8ds6qgnmny6306vvzxy68v03xikwv";
   };
 
   buildInputs = [ libnl libubox uci ubus json_c ];
-  nativeBuildInputs = [ cmake ];
+  nativeBuildInputs = [ cmake pkg-config ];
 
-  preBuild = ''
-    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE \
-      -I$(echo "${stdenv.lib.getDev libnl}"/include/libnl*/)"
-  '';
-
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "OpenWrt Network interface configuration daemon";
     homepage = "https://git.openwrt.org/?p=project/netifd.git;a=summary";
-    license = licenses.lgpl21;
+    license = licenses.lgpl21Only;
     platforms = platforms.linux;
     maintainers = with maintainers; [ petabyteboy ];
   };
diff --git a/pkgs/tools/networking/netkit/tftp/default.nix b/pkgs/tools/networking/netkit/tftp/default.nix
index 847d8cbcf89..3a7a3a1deb4 100644
--- a/pkgs/tools/networking/netkit/tftp/default.nix
+++ b/pkgs/tools/networking/netkit/tftp/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl}:
+{lib, stdenv, fetchurl}:
 
 stdenv.mkDerivation rec {
   name = "netkit-tftp-0.17";
@@ -19,8 +19,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Netkit TFTP client and server";
     homepage = "ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/";
-    license = stdenv.lib.licenses.bsdOriginal;
-    maintainers = with stdenv.lib.maintainers; [viric];
-    platforms = with stdenv.lib.platforms; linux;
+    license = lib.licenses.bsdOriginal;
+    maintainers = with lib.maintainers; [viric];
+    platforms = with lib.platforms; linux;
   };
 }
diff --git a/pkgs/tools/networking/netmask/default.nix b/pkgs/tools/networking/netmask/default.nix
index fa36ee5d802..c1613fcf920 100644
--- a/pkgs/tools/networking/netmask/default.nix
+++ b/pkgs/tools/networking/netmask/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, texinfo }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, texinfo }:
 
 stdenv.mkDerivation rec {
   pname = "netmask";
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ texinfo ];
   nativeBuildInputs = [ autoreconfHook ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/tlby/netmask";
     description = "An IP address formatting tool ";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/netrw/default.nix b/pkgs/tools/networking/netrw/default.nix
index f7d73283d48..c5e54ab8f43 100644
--- a/pkgs/tools/networking/netrw/default.nix
+++ b/pkgs/tools/networking/netrw/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl
+{ lib, stdenv, fetchurl
 , checksumType ? "built-in"
 , libmhash ? null
 , openssl ? null
@@ -15,8 +15,8 @@ stdenv.mkDerivation rec {
     "--with-checksum=${checksumType}"
   ];
 
-  buildInputs = stdenv.lib.optional (checksumType == "mhash") libmhash
-             ++ stdenv.lib.optional (checksumType == "openssl") openssl;
+  buildInputs = lib.optional (checksumType == "mhash") libmhash
+             ++ lib.optional (checksumType == "openssl") openssl;
 
   src = fetchurl {
     urls = [
@@ -28,8 +28,8 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Simple tool for transporting data over the network";
-    license = stdenv.lib.licenses.gpl2;
+    license = lib.licenses.gpl2;
     homepage = "https://mamuti.net/netrw/index.en.html";
-    platforms = stdenv.lib.platforms.unix;
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/netselect/default.nix b/pkgs/tools/networking/netselect/default.nix
index dfca4c9058e..be68e3e2c60 100644
--- a/pkgs/tools/networking/netselect/default.nix
+++ b/pkgs/tools/networking/netselect/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub }:
+{ lib, stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation rec {
   pname = "netselect";
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
     runHook postInstall
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/apenwarr/netselect";
     description = "An ultrafast intelligent parallelizing binary-search implementation of \"ping\"";
     license = licenses.bsd3;
diff --git a/pkgs/tools/networking/netsniff-ng/default.nix b/pkgs/tools/networking/netsniff-ng/default.nix
index 9eb9afcb0e7..36028208f56 100644
--- a/pkgs/tools/networking/netsniff-ng/default.nix
+++ b/pkgs/tools/networking/netsniff-ng/default.nix
@@ -1,23 +1,53 @@
-{ stdenv, fetchFromGitHub, makeWrapper, bison, flex, geoip, geolite-legacy
-, libcli, libnet, libnetfilter_conntrack, libnl, libpcap, libsodium
-, liburcu, ncurses, pkgconfig, zlib }:
+{ stdenv
+, lib
+, fetchFromGitHub
+, makeWrapper
+, bison
+, flex
+, geoip
+, geolite-legacy
+, libcli
+, libnet
+, libnetfilter_conntrack
+, libnl
+, libpcap
+, libsodium
+, liburcu
+, ncurses
+, pkg-config
+, zlib
+}:
 
 stdenv.mkDerivation rec {
   pname = "netsniff-ng";
-  version = "0.6.7";
+  version = "0.6.8";
 
-  # Upstream recommends and supports git
   src = fetchFromGitHub {
     repo = pname;
     owner = pname;
     rev = "v${version}";
-    sha256 = "1jvihq30cwlpjqwny0lcrciysn40wscq6xik3s9b81nw2s7wiyqr";
+    sha256 = "10ih8amaqspy0zwg7hqvypa1v7ixpjl0n608cyfgyfzffp73lbqf";
   };
 
-  nativeBuildInputs = [ pkgconfig makeWrapper bison flex ];
+  nativeBuildInputs = [
+    bison
+    flex
+    makeWrapper
+    pkg-config
+  ];
+
   buildInputs = [
-    geoip geolite-legacy libcli libnet libnl
-    libnetfilter_conntrack libpcap libsodium liburcu ncurses zlib
+    geoip
+    geolite-legacy
+    libcli
+    libnet
+    libnl
+    libnetfilter_conntrack
+    libpcap
+    libsodium
+    liburcu
+    ncurses
+    zlib
   ];
 
   # ./configure is not autoGNU but some home-brewn magic
@@ -37,16 +67,16 @@ stdenv.mkDerivation rec {
     wrapProgram "$out/sbin/trafgen" --prefix PATH ":" "${stdenv.cc}/bin"
     wrapProgram "$out/sbin/bpfc" --prefix PATH ":" "${stdenv.cc}/bin"
 
-    ln -sv ${geolite-legacy}/share/GeoIP/GeoIP.dat		$out/etc/netsniff-ng/country4.dat
-    ln -sv ${geolite-legacy}/share/GeoIP/GeoIPv6.dat		$out/etc/netsniff-ng/country6.dat
-    ln -sv ${geolite-legacy}/share/GeoIP/GeoIPCity.dat		$out/etc/netsniff-ng/city4.dat
-    ln -sv ${geolite-legacy}/share/GeoIP/GeoIPCityv6.dat	$out/etc/netsniff-ng/city6.dat
-    ln -sv ${geolite-legacy}/share/GeoIP/GeoIPASNum.dat		$out/etc/netsniff-ng/asname4.dat
-    ln -sv ${geolite-legacy}/share/GeoIP/GeoIPASNumv6.dat	$out/etc/netsniff-ng/asname6.dat
+    ln -sv ${geolite-legacy}/share/GeoIP/GeoIP.dat $out/etc/netsniff-ng/country4.dat
+    ln -sv ${geolite-legacy}/share/GeoIP/GeoIPv6.dat $out/etc/netsniff-ng/country6.dat
+    ln -sv ${geolite-legacy}/share/GeoIP/GeoIPCity.dat $out/etc/netsniff-ng/city4.dat
+    ln -sv ${geolite-legacy}/share/GeoIP/GeoIPCityv6.dat $out/etc/netsniff-ng/city6.dat
+    ln -sv ${geolite-legacy}/share/GeoIP/GeoIPASNum.dat $out/etc/netsniff-ng/asname4.dat
+    ln -sv ${geolite-legacy}/share/GeoIP/GeoIPASNumv6.dat $out/etc/netsniff-ng/asname6.dat
     rm -v $out/etc/netsniff-ng/geoip.conf # updating databases after installation is impossible
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Swiss army knife for daily Linux network plumbing";
     longDescription = ''
       netsniff-ng is a free Linux networking toolkit. Its gain of performance
@@ -56,7 +86,7 @@ stdenv.mkDerivation rec {
       development and analysis, debugging, auditing or network reconnaissance.
     '';
     homepage = "http://netsniff-ng.org/";
-    license = licenses.gpl2;
+    license = with licenses; [ gpl2Only ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/nettee/default.nix b/pkgs/tools/networking/nettee/default.nix
index d95171807df..c5cbcb19a97 100644
--- a/pkgs/tools/networking/nettee/default.nix
+++ b/pkgs/tools/networking/nettee/default.nix
@@ -16,7 +16,7 @@ in stdenv.mkDerivation {
   meta = {
     homepage = "http://saf.bio.caltech.edu/nettee.html";
     description = ''Network "tee" program'';
-    license = stdenv.lib.licenses.gpl2;
+    license = lib.licenses.gpl2;
     maintainers = with lib.maintainers; [ Profpatsch ];
     platforms = lib.platforms.linux;
   };
diff --git a/pkgs/tools/networking/network-manager/fix-paths.patch b/pkgs/tools/networking/network-manager/fix-paths.patch
deleted file mode 100644
index 60ee437f6f4..00000000000
--- a/pkgs/tools/networking/network-manager/fix-paths.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-diff --git a/clients/common/nm-polkit-listener.c b/clients/common/nm-polkit-listener.c
-index ace205e80..f19c1dea0 100644
---- a/clients/common/nm-polkit-listener.c
-+++ b/clients/common/nm-polkit-listener.c
-@@ -552,7 +552,7 @@ begin_authentication (AuthRequest *request)
- {
- 	int fd_flags;
- 	const char *helper_argv[] = {
--		POLKIT_PACKAGE_PREFIX "/lib/polkit-1/polkit-agent-helper-1",
-+		"/run/wrappers/bin/polkit-agent-helper-1",
- 		request->username,
- 		NULL,
- 	};
-diff --git a/clients/common/nm-vpn-helpers.c b/clients/common/nm-vpn-helpers.c
-index 74ff52bb2..638857df4 100644
---- a/clients/common/nm-vpn-helpers.c
-+++ b/clients/common/nm-vpn-helpers.c
-@@ -213,10 +213,7 @@ nm_vpn_openconnect_authenticate_helper (const char *host,
- 		NULL,
- 	};
- 
--	path = nm_utils_file_search_in_paths ("openconnect", "/usr/sbin/openconnect", DEFAULT_PATHS,
--	                                      G_FILE_TEST_IS_EXECUTABLE, NULL, NULL, error);
--	if (!path)
--		return FALSE;
-+	path = "@openconnect@/bin/openconnect";
- 
- 	if (!g_spawn_sync (NULL,
- 	                   (char **) NM_MAKE_STRV (path, "--authenticate", host),
-diff --git a/data/84-nm-drivers.rules b/data/84-nm-drivers.rules
-index e398cb9f2..a43d61864 100644
---- a/data/84-nm-drivers.rules
-+++ b/data/84-nm-drivers.rules
-@@ -7,6 +7,6 @@ ACTION!="add|change", GOTO="nm_drivers_end"
- # Determine ID_NET_DRIVER if there's no ID_NET_DRIVER or DRIVERS (old udev?)
- ENV{ID_NET_DRIVER}=="?*", GOTO="nm_drivers_end"
- DRIVERS=="?*", GOTO="nm_drivers_end"
--PROGRAM="/bin/sh -c '/usr/sbin/ethtool -i $$1 |/usr/bin/sed -n s/^driver:\ //p' -- $env{INTERFACE}", ENV{ID_NET_DRIVER}="%c"
-+PROGRAM="@runtimeShell@ -c '@ethtool@/bin/ethtool -i $$1 |@gnused@/bin/sed -n s/^driver:\ //p' -- $env{INTERFACE}", ENV{ID_NET_DRIVER}="%c"
- 
- LABEL="nm_drivers_end"
-diff --git a/data/NetworkManager.service.in b/data/NetworkManager.service.in
-index 91ebd9a36..5201a56c3 100644
---- a/data/NetworkManager.service.in
-+++ b/data/NetworkManager.service.in
-@@ -8,7 +8,7 @@ Before=network.target @DISTRO_NETWORK_SERVICE@
- [Service]
- Type=dbus
- BusName=org.freedesktop.NetworkManager
--ExecReload=/usr/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Reload u 0
-+ExecReload=@systemd@/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Reload u 0
- #ExecReload=/bin/kill -HUP $MAINPID
- ExecStart=@sbindir@/NetworkManager --no-daemon
- Restart=on-failure
-diff --git a/libnm/meson.build b/libnm/meson.build
-index d3991ab19..58f01c666 100644
---- a/libnm/meson.build
-+++ b/libnm/meson.build
-@@ -283,7 +283,6 @@ if enable_introspection
-     output: 'nm-settings-docs-gir.xml',
-     command: [
-       generate_setting_docs_env,
--      python.path(),
-       join_paths(meson.source_root(), 'tools', 'generate-docs-nm-settings-docs-gir.py'),
-       '--lib-path', meson.current_build_dir(),
-       '--gir', '@INPUT@',
-diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
-index de09e4807..2755db165 100644
---- a/src/devices/nm-device.c
-+++ b/src/devices/nm-device.c
-@@ -13705,14 +13705,14 @@ nm_device_start_ip_check (NMDevice *self)
- 			gw = nm_ip4_config_best_default_route_get (priv->ip_config_4);
- 			if (gw) {
- 				_nm_utils_inet4_ntop (NMP_OBJECT_CAST_IP4_ROUTE (gw)->gateway, buf);
--				ping_binary = nm_utils_find_helper ("ping", "/usr/bin/ping", NULL);
-+				ping_binary = "@iputils@/bin/ping";
- 				log_domain = LOGD_IP4;
- 			}
- 		} else if (priv->ip_config_6 && priv->ip_state_6 == NM_DEVICE_IP_STATE_DONE) {
- 			gw = nm_ip6_config_best_default_route_get (priv->ip_config_6);
- 			if (gw) {
- 				_nm_utils_inet6_ntop (&NMP_OBJECT_CAST_IP6_ROUTE (gw)->gateway, buf);
--				ping_binary = nm_utils_find_helper ("ping6", "/usr/bin/ping6", NULL);
-+				ping_binary = "@iputils@/bin/ping";
- 				log_domain = LOGD_IP6;
- 			}
- 		}
-diff --git a/src/nm-core-utils.c b/src/nm-core-utils.c
-index 3950c3c3a..a9436d75a 100644
---- a/src/nm-core-utils.c
-+++ b/src/nm-core-utils.c
-@@ -336,7 +336,7 @@ nm_utils_modprobe (GError **error, gboolean suppress_error_logging, const char *
- 
- 	/* construct the argument list */
- 	argv = g_ptr_array_sized_new (4);
--	g_ptr_array_add (argv, "/sbin/modprobe");
-+	g_ptr_array_add (argv, "@kmod@/bin/modprobe");
- 	g_ptr_array_add (argv, "--use-blacklist");
- 	g_ptr_array_add (argv, (char *) arg1);
- 
diff --git a/pkgs/tools/networking/network-manager/0.9.8/default.nix b/pkgs/tools/networking/networkmanager/0.9.8/default.nix
index 6035e35f634..757c886fdf3 100644
--- a/pkgs/tools/networking/network-manager/0.9.8/default.nix
+++ b/pkgs/tools/networking/networkmanager/0.9.8/default.nix
@@ -1,9 +1,9 @@
-{ stdenv, fetchurl, intltool, pkgconfig, dbus-glib
+{ lib, stdenv, fetchurl, intltool, pkg-config, dbus-glib
 , udev, libnl, libuuid, gnutls, dhcp
 , libgcrypt, perl, libgudev, avahi, ppp, kmod }:
 
 stdenv.mkDerivation rec {
-  pname = "network-manager";
+  pname = "networkmanager";
   version = "0.9.8.10";
 
   src = fetchurl {
@@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [ dbus-glib ];
 
-  nativeBuildInputs = [ intltool pkgconfig ];
+  nativeBuildInputs = [ intltool pkg-config ];
 
   patches =
     [ ./libnl-3.2.25.patch
@@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
       installFlagsArray=( "sysconfdir=$out/etc" "localstatedir=$out/var" )
     '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://projects.gnome.org/NetworkManager/";
     description = "Network configuration and management tool";
     license = licenses.gpl2Plus;
diff --git a/pkgs/tools/networking/network-manager/0.9.8/libnl-3.2.25.patch b/pkgs/tools/networking/networkmanager/0.9.8/libnl-3.2.25.patch
index 17c2966b706..17c2966b706 100644
--- a/pkgs/tools/networking/network-manager/0.9.8/libnl-3.2.25.patch
+++ b/pkgs/tools/networking/networkmanager/0.9.8/libnl-3.2.25.patch
diff --git a/pkgs/tools/networking/network-manager/0.9.8/nixos-purity.patch b/pkgs/tools/networking/networkmanager/0.9.8/nixos-purity.patch
index 9ebc080ba96..9ebc080ba96 100644
--- a/pkgs/tools/networking/network-manager/0.9.8/nixos-purity.patch
+++ b/pkgs/tools/networking/networkmanager/0.9.8/nixos-purity.patch
diff --git a/pkgs/tools/networking/network-manager/applet/default.nix b/pkgs/tools/networking/networkmanager/applet/default.nix
index 9f92fcfa1ab..5f83ffae055 100644
--- a/pkgs/tools/networking/network-manager/applet/default.nix
+++ b/pkgs/tools/networking/networkmanager/applet/default.nix
@@ -1,17 +1,16 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
 , meson
 , ninja
 , gettext
 , pkg-config
 , networkmanager
-, gnome3
+, gnome
 , libnotify
 , libsecret
 , polkit
 , modemmanager
 , libnma
-, mobile-broadband-provider-info
 , glib-networking
 , gsettings-desktop-schemas
 , libgudev
@@ -26,11 +25,11 @@
 
 stdenv.mkDerivation rec {
   pname = "network-manager-applet";
-  version = "1.18.0";
+  version = "1.22.0";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "12xiy8g8qk18jvxvn78mvq03zvzp06bww49na765jjw0rq541fyx";
+    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    sha256 = "sha256-xw2AtI1AqcuZ7JZ8xDifZ+fwMBUopp1IFXIEEzGmRr4=";
   };
 
   mesonFlags = [
@@ -51,9 +50,10 @@ stdenv.mkDerivation rec {
     libgudev
     modemmanager
     jansson
+    glib
     glib-networking
     libappindicator-gtk3
-    gnome3.adwaita-icon-theme
+    gnome.adwaita-icon-theme
   ];
 
   nativeBuildInputs = [
@@ -72,16 +72,17 @@ stdenv.mkDerivation rec {
   '';
 
   passthru = {
-    updateScript = gnome3.updateScript {
+    updateScript = gnome.updateScript {
       packageName = pname;
       attrPath = "networkmanagerapplet";
+      versionPolicy = "odd-unstable";
     };
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://gitlab.gnome.org/GNOME/network-manager-applet/";
     description = "NetworkManager control applet for GNOME";
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     maintainers = with maintainers; [ phreedom ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/tools/networking/network-manager/default.nix b/pkgs/tools/networking/networkmanager/default.nix
index f5b12a6cf37..4f3b7a3204d 100644
--- a/pkgs/tools/networking/network-manager/default.nix
+++ b/pkgs/tools/networking/networkmanager/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, substituteAll, intltool, pkgconfig, fetchpatch, dbus
-, gnome3, systemd, libuuid, polkit, gnutls, ppp, dhcp, iptables, python3, vala
+{ lib, stdenv, fetchurl, substituteAll, intltool, pkg-config, fetchpatch, dbus
+, gnome, systemd, libuuid, polkit, gnutls, ppp, dhcp, iptables, python3, vala
 , libgcrypt, dnsmasq, bluez5, readline, libselinux, audit
 , gobject-introspection, modemmanager, openresolv, libndp, newt, libsoup
 , ethtool, gnused, iputils, kmod, jansson, gtk-doc, libxslt
@@ -9,12 +9,12 @@
 let
   pythonForDocs = python3.withPackages (pkgs: with pkgs; [ pygobject3 ]);
 in stdenv.mkDerivation rec {
-  pname = "network-manager";
-  version = "1.26.0";
+  pname = "networkmanager";
+  version = "1.30.4";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/NetworkManager/${stdenv.lib.versions.majorMinor version}/NetworkManager-${version}.tar.xz";
-    sha256 = "0isdqwp58d7r92sqsk7l2vlqwy518n8b7c7z94jk9gc1bdmjf8sj";
+    url = "mirror://gnome/sources/NetworkManager/${lib.versions.majorMinor version}/NetworkManager-${version}.tar.xz";
+    sha256 = "sha256-YFC3JCEuo85zhhEzWb6pr6H2eaVPYNmZpZmYkuZywZA=";
   };
 
   outputs = [ "out" "dev" "devdoc" "man" "doc" ];
@@ -45,6 +45,7 @@ in stdenv.mkDerivation rec {
     "-Ddocs=true"
     "-Dtests=no"
     "-Dqt=false"
+    "-Dpolkit_agent_helper_1=/run/wrappers/bin/polkit-agent-helper-1"
     # Allow using iwd when configured to do so
     "-Diwd=true"
     "-Dlibaudit=yes-disabled-by-default"
@@ -55,7 +56,7 @@ in stdenv.mkDerivation rec {
   patches = [
     (substituteAll {
       src = ./fix-paths.patch;
-      inherit iputils kmod openconnect ethtool gnused systemd polkit;
+      inherit iputils kmod openconnect ethtool gnused systemd;
       inherit runtimeShell;
     })
 
@@ -72,7 +73,7 @@ in stdenv.mkDerivation rec {
   propagatedBuildInputs = [ gnutls libgcrypt ];
 
   nativeBuildInputs = [
-    meson ninja intltool pkgconfig
+    meson ninja intltool pkg-config
     vala gobject-introspection dbus
     # Docs
     gtk-doc libxslt docbook_xsl docbook_xml_dtd_412 docbook_xml_dtd_42 docbook_xml_dtd_43 pythonForDocs
@@ -95,17 +96,18 @@ in stdenv.mkDerivation rec {
   '';
 
   passthru = {
-    updateScript = gnome3.updateScript {
-      packageName = pname;
+    updateScript = gnome.updateScript {
+      packageName = "NetworkManager";
       attrPath = "networkmanager";
+      versionPolicy = "odd-unstable";
     };
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://wiki.gnome.org/Projects/NetworkManager";
     description = "Network configuration and management tool";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ phreedom domenkozar obadz worldofpeace ];
+    maintainers = teams.freedesktop.members ++ (with maintainers; [ phreedom domenkozar obadz ]);
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/network-manager/dmenu/default.nix b/pkgs/tools/networking/networkmanager/dmenu/default.nix
index 4204ba1fcdb..9ea3dde19ab 100644
--- a/pkgs/tools/networking/network-manager/dmenu/default.nix
+++ b/pkgs/tools/networking/networkmanager/dmenu/default.nix
@@ -1,16 +1,16 @@
-{ stdenv, glib, fetchFromGitHub, networkmanager, python3Packages
+{ lib, stdenv, glib, fetchFromGitHub, networkmanager, python3Packages
 , gobject-introspection }:
 
 let inherit (python3Packages) python pygobject3;
 in stdenv.mkDerivation rec {
   pname = "networkmanager_dmenu";
-  version = "1.5.0";
+  version = "1.6.0";
 
   src = fetchFromGitHub {
     owner = "firecat53";
     repo = "networkmanager-dmenu";
-    rev = "${version}";
-    sha256 = "1msk4zkm4042av61rgbwc62i62vnv9py93fm1bczmw0b1f54qpmk";
+    rev = version;
+    sha256 = "1liidqh8c33pxyb07qyj0jkd0fdak73g9r2iwiq62vfzrpik09k0";
   };
 
   buildInputs = [ glib python pygobject3 gobject-introspection networkmanager python3Packages.wrapPython ];
@@ -30,11 +30,11 @@ in stdenv.mkDerivation rec {
   '';
 
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description  = "Small script to manage NetworkManager connections with dmenu instead of nm-applet";
     homepage     = "https://github.com/firecat53/networkmanager-dmenu";
-    license      = stdenv.lib.licenses.mit;
-    maintainers  = [ stdenv.lib.maintainers.jensbin ];
-    platforms    = stdenv.lib.platforms.all;
+    license      = lib.licenses.mit;
+    maintainers  = [ lib.maintainers.jensbin ];
+    platforms    = lib.platforms.all;
   };
 }
diff --git a/pkgs/tools/networking/network-manager/fix-install-paths.patch b/pkgs/tools/networking/networkmanager/fix-install-paths.patch
index 4e80247cf14..4e80247cf14 100644
--- a/pkgs/tools/networking/network-manager/fix-install-paths.patch
+++ b/pkgs/tools/networking/networkmanager/fix-install-paths.patch
diff --git a/pkgs/tools/networking/networkmanager/fix-paths.patch b/pkgs/tools/networking/networkmanager/fix-paths.patch
new file mode 100644
index 00000000000..cb9d3c3a0d2
--- /dev/null
+++ b/pkgs/tools/networking/networkmanager/fix-paths.patch
@@ -0,0 +1,92 @@
+diff --git a/clients/common/nm-vpn-helpers.c b/clients/common/nm-vpn-helpers.c
+index 15c47c3ec..4d1913aa6 100644
+--- a/clients/common/nm-vpn-helpers.c
++++ b/clients/common/nm-vpn-helpers.c
+@@ -208,15 +208,7 @@ nm_vpn_openconnect_authenticate_helper(const char *host,
+         NULL,
+     };
+ 
+-    path = nm_utils_file_search_in_paths("openconnect",
+-                                         "/usr/sbin/openconnect",
+-                                         DEFAULT_PATHS,
+-                                         G_FILE_TEST_IS_EXECUTABLE,
+-                                         NULL,
+-                                         NULL,
+-                                         error);
+-    if (!path)
+-        return FALSE;
++    path = "@openconnect@/bin/openconnect";
+ 
+     if (!g_spawn_sync(NULL,
+                       (char **) NM_MAKE_STRV(path, "--authenticate", host),
+diff --git a/data/84-nm-drivers.rules b/data/84-nm-drivers.rules
+index e398cb9f2..a43d61864 100644
+--- a/data/84-nm-drivers.rules
++++ b/data/84-nm-drivers.rules
+@@ -7,6 +7,6 @@ ACTION!="add|change", GOTO="nm_drivers_end"
+ # Determine ID_NET_DRIVER if there's no ID_NET_DRIVER or DRIVERS (old udev?)
+ ENV{ID_NET_DRIVER}=="?*", GOTO="nm_drivers_end"
+ DRIVERS=="?*", GOTO="nm_drivers_end"
+-PROGRAM="/bin/sh -c '/usr/sbin/ethtool -i $$1 |/usr/bin/sed -n s/^driver:\ //p' -- $env{INTERFACE}", ENV{ID_NET_DRIVER}="%c"
++PROGRAM="@runtimeShell@ -c '@ethtool@/bin/ethtool -i $$1 |@gnused@/bin/sed -n s/^driver:\ //p' -- $env{INTERFACE}", ENV{ID_NET_DRIVER}="%c"
+ 
+ LABEL="nm_drivers_end"
+diff --git a/data/NetworkManager.service.in b/data/NetworkManager.service.in
+index 91ebd9a36..5201a56c3 100644
+--- a/data/NetworkManager.service.in
++++ b/data/NetworkManager.service.in
+@@ -8,7 +8,7 @@ Before=network.target @DISTRO_NETWORK_SERVICE@
+ [Service]
+ Type=dbus
+ BusName=org.freedesktop.NetworkManager
+-ExecReload=/usr/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Reload u 0
++ExecReload=@systemd@/bin/busctl call org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager Reload u 0
+ #ExecReload=/bin/kill -HUP $MAINPID
+ ExecStart=@sbindir@/NetworkManager --no-daemon
+ Restart=on-failure
+diff --git a/libnm/meson.build b/libnm/meson.build
+index d0846419c..a7adb2cc6 100644
+--- a/libnm/meson.build
++++ b/libnm/meson.build
+@@ -280,7 +280,6 @@ if enable_introspection
+     output: 'nm-settings-docs-gir.xml',
+     command: [
+       generate_setting_docs_env,
+-      python.path(),
+       join_paths(meson.source_root(), 'tools', 'generate-docs-nm-settings-docs-gir.py'),
+       '--lib-path', meson.current_build_dir(),
+       '--gir', '@INPUT@',
+diff --git a/src/core/devices/nm-device.c b/src/core/devices/nm-device.c
+index 040dd0b4d..98aea3aa9 100644
+--- a/src/core/devices/nm-device.c
++++ b/src/core/devices/nm-device.c
+@@ -13957,14 +13957,14 @@ nm_device_start_ip_check(NMDevice *self)
+             gw = nm_ip4_config_best_default_route_get(priv->ip_config_4);
+             if (gw) {
+                 _nm_utils_inet4_ntop(NMP_OBJECT_CAST_IP4_ROUTE(gw)->gateway, buf);
+-                ping_binary = nm_utils_find_helper("ping", "/usr/bin/ping", NULL);
++                ping_binary = "@iputils@/bin/ping";
+                 log_domain  = LOGD_IP4;
+             }
+         } else if (priv->ip_config_6 && priv->ip_state_6 == NM_DEVICE_IP_STATE_DONE) {
+             gw = nm_ip6_config_best_default_route_get(priv->ip_config_6);
+             if (gw) {
+                 _nm_utils_inet6_ntop(&NMP_OBJECT_CAST_IP6_ROUTE(gw)->gateway, buf);
+-                ping_binary = nm_utils_find_helper("ping6", "/usr/bin/ping6", NULL);
++                ping_binary = "@iputils@/bin/ping";
+                 log_domain  = LOGD_IP6;
+             }
+         }
+diff --git a/src/core/nm-core-utils.c b/src/core/nm-core-utils.c
+index 9075c30dd..4b140e92b 100644
+--- a/src/core/nm-core-utils.c
++++ b/src/core/nm-core-utils.c
+@@ -333,7 +333,7 @@ nm_utils_modprobe(GError **error, gboolean suppress_error_logging, const char *a
+ 
+     /* construct the argument list */
+     argv = g_ptr_array_sized_new(4);
+-    g_ptr_array_add(argv, "/sbin/modprobe");
++    g_ptr_array_add(argv, "@kmod@/bin/modprobe");
+     g_ptr_array_add(argv, "--use-blacklist");
+     g_ptr_array_add(argv, (char *) arg1);
+ 
diff --git a/pkgs/tools/networking/network-manager/fortisslvpn/default.nix b/pkgs/tools/networking/networkmanager/fortisslvpn/default.nix
index 3cc4133b41c..f97bac13cf7 100644
--- a/pkgs/tools/networking/network-manager/fortisslvpn/default.nix
+++ b/pkgs/tools/networking/networkmanager/fortisslvpn/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
 , substituteAll
 , openfortivpn
@@ -11,7 +11,7 @@
 , ppp
 , libsecret
 , withGnome ? true
-, gnome3
+, gnome
 , fetchpatch
 , libnma
 }:
@@ -22,7 +22,7 @@ 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";
+    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
     sha256 = "1sw66cxgs4in4cjp1cm95c5ijsk8xbbmq4ykg2jwqwgz6cf2lr3s";
   };
 
@@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
     networkmanager
     ppp
     glib
-  ] ++ stdenv.lib.optionals withGnome [
+  ] ++ lib.optionals withGnome [
     gtk3
     libsecret
     libnma
@@ -69,13 +69,14 @@ stdenv.mkDerivation rec {
   ];
 
   passthru = {
-    updateScript = gnome3.updateScript {
+    updateScript = gnome.updateScript {
       packageName = pname;
       attrPath = "networkmanager-fortisslvpn";
+      versionPolicy = "odd-unstable";
     };
   };
 
-  meta = with stdenv.lib; {
+  meta = with 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/networkmanager/fortisslvpn/fix-paths.patch
index a1241b6738c..a1241b6738c 100644
--- a/pkgs/tools/networking/network-manager/fortisslvpn/fix-paths.patch
+++ b/pkgs/tools/networking/networkmanager/fortisslvpn/fix-paths.patch
diff --git a/pkgs/tools/networking/network-manager/iodine/default.nix b/pkgs/tools/networking/networkmanager/iodine/default.nix
index 95d015f6964..e56d9411b39 100644
--- a/pkgs/tools/networking/network-manager/iodine/default.nix
+++ b/pkgs/tools/networking/networkmanager/iodine/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitLab, substituteAll, autoreconfHook, iodine, intltool, pkgconfig, networkmanager, libsecret, gtk3
-, withGnome ? true, gnome3, fetchpatch, libnma, glib }:
+{ lib, stdenv, fetchFromGitLab, substituteAll, autoreconfHook, iodine, intltool, pkg-config, networkmanager, libsecret, gtk3
+, withGnome ? true, gnome, fetchpatch, libnma, glib }:
 
 let
   pname = "NetworkManager-iodine";
@@ -28,9 +28,9 @@ in stdenv.mkDerivation {
   ];
 
   buildInputs = [ iodine networkmanager glib ]
-    ++ stdenv.lib.optionals withGnome [ gtk3 libsecret libnma ];
+    ++ lib.optionals withGnome [ gtk3 libsecret libnma ];
 
-  nativeBuildInputs = [ intltool autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ intltool autoreconfHook pkg-config ];
 
   # glib-2.62 deprecations
   NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS";
@@ -44,13 +44,13 @@ in stdenv.mkDerivation {
   ];
 
   passthru = {
-    updateScript = gnome3.updateScript {
+    updateScript = gnome.updateScript {
       packageName = pname;
       attrPath = "networkmanager-iodine";
     };
   };
 
-  meta = with stdenv.lib; {
+  meta = with 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/networkmanager/iodine/fix-paths.patch
index d32dbfadbaf..d32dbfadbaf 100644
--- a/pkgs/tools/networking/network-manager/iodine/fix-paths.patch
+++ b/pkgs/tools/networking/networkmanager/iodine/fix-paths.patch
diff --git a/pkgs/tools/networking/network-manager/l2tp/default.nix b/pkgs/tools/networking/networkmanager/l2tp/default.nix
index 430462f9199..bfcc2d8ae86 100644
--- a/pkgs/tools/networking/network-manager/l2tp/default.nix
+++ b/pkgs/tools/networking/networkmanager/l2tp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, substituteAll, fetchFromGitHub, autoreconfHook, libtool, intltool, pkgconfig
+{ lib, stdenv, substituteAll, fetchFromGitHub, autoreconfHook, libtool, intltool, pkg-config
 , file, findutils
 , gtk3, networkmanager, ppp, xl2tpd, strongswan, libsecret
 , withGnome ? true, libnma }:
@@ -23,9 +23,9 @@ stdenv.mkDerivation rec {
   ];
 
   buildInputs = [ networkmanager ppp ]
-    ++ stdenv.lib.optionals withGnome [ gtk3 libsecret libnma ];
+    ++ lib.optionals withGnome [ gtk3 libsecret libnma ];
 
-  nativeBuildInputs = [ autoreconfHook libtool intltool pkgconfig file findutils ];
+  nativeBuildInputs = [ autoreconfHook libtool intltool pkg-config file findutils ];
 
   preConfigure = ''
     intltoolize -f
@@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "L2TP plugin for NetworkManager";
     inherit (networkmanager.meta) platforms;
     homepage = "https://github.com/nm-l2tp/network-manager-l2tp";
diff --git a/pkgs/tools/networking/network-manager/l2tp/fix-paths.patch b/pkgs/tools/networking/networkmanager/l2tp/fix-paths.patch
index 531672c3936..531672c3936 100644
--- a/pkgs/tools/networking/network-manager/l2tp/fix-paths.patch
+++ b/pkgs/tools/networking/networkmanager/l2tp/fix-paths.patch
diff --git a/pkgs/tools/networking/network-manager/libnma/default.nix b/pkgs/tools/networking/networkmanager/libnma/default.nix
index 7d7889f9a5b..50fc66a8d68 100644
--- a/pkgs/tools/networking/network-manager/libnma/default.nix
+++ b/pkgs/tools/networking/networkmanager/libnma/default.nix
@@ -7,7 +7,7 @@
 , pkg-config
 , vala
 , networkmanager
-, gnome3
+, gnome
 , isocodes
 , libxml2
 , docbook_xsl
@@ -19,6 +19,7 @@
 , gcr
 , glib
 , substituteAll
+, lib
 }:
 
 stdenv.mkDerivation rec {
@@ -28,7 +29,7 @@ stdenv.mkDerivation rec {
   outputs = [ "out" "dev" "devdoc" ];
 
   src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
+    url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
     sha256 = "1d5gzn7ss5vi0bhc8s4i5gsrck1ajslajam5jxfqazg094mffcys";
   };
 
@@ -55,13 +56,13 @@ stdenv.mkDerivation rec {
     networkmanager
     isocodes
     mobile-broadband-provider-info
-  ] ++ stdenv.lib.optionals withGnome [
+  ] ++ lib.optionals withGnome [
     # advanced certificate chooser
     gcr
   ];
 
   mesonFlags = [
-    "-Dgcr=${if withGnome then "true" else "false"}"
+    "-Dgcr=${lib.boolToString withGnome}"
   ];
 
   postPatch = ''
@@ -74,12 +75,13 @@ stdenv.mkDerivation rec {
   '';
 
   passthru = {
-    updateScript = gnome3.updateScript {
+    updateScript = gnome.updateScript {
       packageName = pname;
+      versionPolicy = "odd-unstable";
     };
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://gitlab.gnome.org/GNOME/libnma";
     description = "NetworkManager UI utilities (libnm version)";
     license = licenses.gpl2Plus; # Mix of GPL and LPGL 2+
diff --git a/pkgs/tools/networking/network-manager/libnma/hardcode-gsettings.patch b/pkgs/tools/networking/networkmanager/libnma/hardcode-gsettings.patch
index 9b2f5366950..9b2f5366950 100644
--- a/pkgs/tools/networking/network-manager/libnma/hardcode-gsettings.patch
+++ b/pkgs/tools/networking/networkmanager/libnma/hardcode-gsettings.patch
diff --git a/pkgs/tools/networking/network-manager/openconnect/default.nix b/pkgs/tools/networking/networkmanager/openconnect/default.nix
index 3c1a8d11042..c03a698514a 100644
--- a/pkgs/tools/networking/network-manager/openconnect/default.nix
+++ b/pkgs/tools/networking/networkmanager/openconnect/default.nix
@@ -1,11 +1,11 @@
-{ stdenv
+{ lib, stdenv
 , fetchurl
 , substituteAll
 , glib
 , libxml2
 , openconnect
 , intltool
-, pkgconfig
+, pkg-config
 , autoreconfHook
 , networkmanager
 , gcr
@@ -13,7 +13,7 @@
 , file
 , gtk3
 , withGnome ? true
-, gnome3
+, gnome
 , kmod
 , fetchpatch
 }:
@@ -25,7 +25,7 @@ in stdenv.mkDerivation {
   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}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
     sha256 = "0nlp290nkawc4wqm978n4vhzg3xdqi8kpjjx19l855vab41rh44m";
   };
 
@@ -47,7 +47,7 @@ in stdenv.mkDerivation {
     libxml2
     openconnect
     networkmanager
-  ] ++ stdenv.lib.optionals withGnome [
+  ] ++ lib.optionals withGnome [
     gtk3
     gcr
     libsecret
@@ -55,7 +55,7 @@ in stdenv.mkDerivation {
 
   nativeBuildInputs = [
     intltool
-    pkgconfig
+    pkg-config
     file
   ];
 
@@ -66,13 +66,14 @@ in stdenv.mkDerivation {
   ];
 
   passthru = {
-    updateScript = gnome3.updateScript {
+    updateScript = gnome.updateScript {
       packageName = pname;
       attrPath = "networkmanager-openconnect";
+      versionPolicy = "odd-unstable";
     };
   };
 
-  meta = with stdenv.lib; {
+  meta = with 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/networkmanager/openconnect/fix-paths.patch
index 9b342f5bd08..9b342f5bd08 100644
--- a/pkgs/tools/networking/network-manager/openconnect/fix-paths.patch
+++ b/pkgs/tools/networking/networkmanager/openconnect/fix-paths.patch
diff --git a/pkgs/tools/networking/network-manager/openvpn/default.nix b/pkgs/tools/networking/networkmanager/openvpn/default.nix
index 79435a9e5e8..06df79e4705 100644
--- a/pkgs/tools/networking/network-manager/openvpn/default.nix
+++ b/pkgs/tools/networking/networkmanager/openvpn/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, substituteAll, openvpn, intltool, libxml2, pkgconfig, file, networkmanager, libsecret
-, gtk3, withGnome ? true, gnome3, kmod, libnma }:
+{ lib, stdenv, fetchurl, substituteAll, openvpn, intltool, libxml2, pkg-config, file, networkmanager, libsecret
+, gtk3, withGnome ? true, gnome, kmod, libnma }:
 
 let
   pname = "NetworkManager-openvpn";
@@ -8,7 +8,7 @@ in stdenv.mkDerivation {
   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}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
     sha256 = "062kh4zj7jfbwy4zzcwpq2m457bzbpm3l18s0ysnw3mgia3siz8f";
   };
 
@@ -20,9 +20,9 @@ in stdenv.mkDerivation {
   ];
 
   buildInputs = [ openvpn networkmanager ]
-    ++ stdenv.lib.optionals withGnome [ gtk3 libsecret libnma ];
+    ++ lib.optionals withGnome [ gtk3 libsecret libnma ];
 
-  nativeBuildInputs = [ intltool pkgconfig file libxml2 ];
+  nativeBuildInputs = [ intltool pkg-config file libxml2 ];
 
   configureFlags = [
     "--with-gnome=${if withGnome then "yes" else "no"}"
@@ -31,13 +31,14 @@ in stdenv.mkDerivation {
   ];
 
   passthru = {
-    updateScript = gnome3.updateScript {
+    updateScript = gnome.updateScript {
       packageName = pname;
       attrPath = "networkmanager-openvpn";
+      versionPolicy = "odd-unstable";
     };
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "NetworkManager's OpenVPN plugin";
     inherit (networkmanager.meta) maintainers platforms;
     license = licenses.gpl2Plus;
diff --git a/pkgs/tools/networking/network-manager/openvpn/fix-paths.patch b/pkgs/tools/networking/networkmanager/openvpn/fix-paths.patch
index b735da28dca..b735da28dca 100644
--- a/pkgs/tools/networking/network-manager/openvpn/fix-paths.patch
+++ b/pkgs/tools/networking/networkmanager/openvpn/fix-paths.patch
diff --git a/pkgs/tools/networking/networkmanager/sstp/default.nix b/pkgs/tools/networking/networkmanager/sstp/default.nix
new file mode 100644
index 00000000000..f4866234438
--- /dev/null
+++ b/pkgs/tools/networking/networkmanager/sstp/default.nix
@@ -0,0 +1,64 @@
+{ lib, stdenv
+, autoreconfHook
+, fetchFromGitHub
+, fetchpatch
+, file
+, glib
+, gnome
+, gtk3
+, intltool
+, libnma
+, libsecret
+, networkmanager
+, pkg-config
+, ppp
+, sstp
+, substituteAll
+, withGnome ? true }:
+
+let
+  pname = "NetworkManager-sstp";
+  version = "unstable-2020-04-20";
+in stdenv.mkDerivation {
+  name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "enaess";
+    repo = "network-manager-sstp";
+    rev = "735d8ca078f933e085029f60a737e3cf1d8c29a8";
+    sha256 = "0aahfhy2ch951kzj6gnd8p8hv2s5yd5y10wrmj68djhnx2ml8cd3";
+  };
+
+  buildInputs = [ sstp networkmanager glib ppp ]
+    ++ lib.optionals withGnome [ gtk3 libsecret libnma ];
+
+  nativeBuildInputs = [ file intltool autoreconfHook pkg-config ];
+
+  postPatch = ''
+    sed -i 's#/sbin/pppd#${ppp}/bin/pppd#' src/nm-sstp-service.c
+    sed -i 's#/sbin/sstpc#${sstp}/bin/sstpc#' src/nm-sstp-service.c
+  '';
+
+  # glib-2.62 deprecations
+  NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS";
+
+  preConfigure = "intltoolize";
+  configureFlags = [
+    "--without-libnm-glib"
+    "--with-gnome=${if withGnome then "yes" else "no"}"
+    "--enable-absolute-paths"
+  ];
+
+  passthru = {
+    updateScript = gnome.updateScript {
+      packageName = pname;
+      attrPath = "networkmanager-sstp";
+    };
+  };
+
+  meta = with lib; {
+    description = "NetworkManager's sstp plugin";
+    inherit (networkmanager.meta) maintainers platforms;
+    license = licenses.gpl2Plus;
+  };
+}
diff --git a/pkgs/tools/networking/network-manager/strongswan/default.nix b/pkgs/tools/networking/networkmanager/strongswan/default.nix
index 028d852f139..cebcec35a31 100644
--- a/pkgs/tools/networking/network-manager/strongswan/default.nix
+++ b/pkgs/tools/networking/networkmanager/strongswan/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, intltool, pkgconfig, networkmanager, strongswanNM
-, gtk3, gnome3, libsecret, libnma }:
+{ lib, stdenv, fetchurl, intltool, pkg-config, networkmanager, strongswanNM
+, gtk3, gnome, libsecret, libnma }:
 
 stdenv.mkDerivation rec {
   pname = "NetworkManager-strongswan";
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ networkmanager strongswanNM libsecret gtk3 libnma ];
 
-  nativeBuildInputs = [ intltool pkgconfig ];
+  nativeBuildInputs = [ intltool pkg-config ];
 
   # glib-2.62 deprecations
   NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS";
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
 
   PKG_CONFIG_LIBNM_VPNSERVICEDIR = "$(out)/lib/NetworkManager/VPN";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "NetworkManager's strongswan plugin";
     inherit (networkmanager.meta) platforms;
     license = licenses.gpl2Plus;
diff --git a/pkgs/tools/networking/network-manager/tray.nix b/pkgs/tools/networking/networkmanager/tray.nix
index e8ce8ad342f..e8ce8ad342f 100644
--- a/pkgs/tools/networking/network-manager/tray.nix
+++ b/pkgs/tools/networking/networkmanager/tray.nix
diff --git a/pkgs/tools/networking/network-manager/vpnc/default.nix b/pkgs/tools/networking/networkmanager/vpnc/default.nix
index 6cd0d2e75f5..70e7104696e 100644
--- a/pkgs/tools/networking/network-manager/vpnc/default.nix
+++ b/pkgs/tools/networking/networkmanager/vpnc/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, substituteAll, vpnc, intltool, pkgconfig, networkmanager, libsecret
-, gtk3, withGnome ? true, gnome3, glib, kmod, file, fetchpatch, libnma }:
+{ lib, stdenv, fetchurl, substituteAll, vpnc, intltool, pkg-config, networkmanager, libsecret
+, gtk3, withGnome ? true, gnome, glib, kmod, file, fetchpatch, libnma }:
 let
   pname = "NetworkManager-vpnc";
   version = "1.2.6";
@@ -7,7 +7,7 @@ in stdenv.mkDerivation {
   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}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
     sha256 = "1js5lwcsqws4klgypfxl4ikmakv7v7xgddij1fj6b0y0qicx0kyy";
   };
 
@@ -24,9 +24,9 @@ in stdenv.mkDerivation {
   ];
 
   buildInputs = [ vpnc networkmanager glib ]
-    ++ stdenv.lib.optionals withGnome [ gtk3 libsecret libnma ];
+    ++ lib.optionals withGnome [ gtk3 libsecret libnma ];
 
-  nativeBuildInputs = [ intltool pkgconfig file ];
+  nativeBuildInputs = [ intltool pkg-config file ];
 
   configureFlags = [
     "--without-libnm-glib"
@@ -35,13 +35,14 @@ in stdenv.mkDerivation {
   ];
 
   passthru = {
-    updateScript = gnome3.updateScript {
+    updateScript = gnome.updateScript {
       packageName = pname;
       attrPath = "networkmanager-vpnc";
+      versionPolicy = "odd-unstable";
     };
   };
 
-  meta = with stdenv.lib; {
+  meta = with 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/networkmanager/vpnc/fix-paths.patch
index 98238ac01f7..98238ac01f7 100644
--- a/pkgs/tools/networking/network-manager/vpnc/fix-paths.patch
+++ b/pkgs/tools/networking/networkmanager/vpnc/fix-paths.patch
diff --git a/pkgs/tools/networking/nfdump/default.nix b/pkgs/tools/networking/nfdump/default.nix
index 11ba442393d..1319e7997dd 100644
--- a/pkgs/tools/networking/nfdump/default.nix
+++ b/pkgs/tools/networking/nfdump/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, fetchFromGitHub
+{ lib, stdenv, fetchFromGitHub
 , autoconf, automake, libtool, pkg-config
-, bzip2, libpcap, flex, yacc }:
+, bzip2, libpcap, flex, bison }:
 
-let version = "1.6.21"; in
+let version = "1.6.22"; in
 
 stdenv.mkDerivation {
   pname = "nfdump";
@@ -12,10 +12,10 @@ stdenv.mkDerivation {
     owner = "phaag";
     repo = "nfdump";
     rev = "v${version}";
-    sha256 = "1ifxnpyzyn8nd6n44pjcw0rwck392nzj1gwa4zzqvvgzj477m6ha";
+    sha256 = "14x2k85ard1kp99hhd90zsmvyw24g03m84rn13gb4grm9gjggzrj";
   };
 
-  nativeBuildInputs = [ autoconf automake flex libtool pkg-config yacc ];
+  nativeBuildInputs = [ autoconf automake flex libtool pkg-config bison ];
   buildInputs = [ bzip2 libpcap ];
 
   preConfigure = ''
@@ -31,7 +31,7 @@ stdenv.mkDerivation {
     "--enable-nfpcapd"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Tools for working with netflow data";
     longDescription = ''
       nfdump is a set of tools for working with netflow data.
diff --git a/pkgs/tools/networking/nfstrace/default.nix b/pkgs/tools/networking/nfstrace/default.nix
index 88510b9b887..ca75e50fa52 100644
--- a/pkgs/tools/networking/nfstrace/default.nix
+++ b/pkgs/tools/networking/nfstrace/default.nix
@@ -1,4 +1,4 @@
-{ cmake, fetchFromGitHub, fetchpatch, json_c, libpcap, ncurses, stdenv }:
+{ cmake, fetchFromGitHub, fetchpatch, json_c, libpcap, ncurses, lib, stdenv, libtirpc }:
 
 stdenv.mkDerivation rec {
   pname = "nfstrace";
@@ -7,7 +7,7 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner = "epam";
     repo = "nfstrace";
-    rev = "${version}";
+    rev = version;
     sha256 = "1djsyn7i3xp969rnmsdaf5vwjiik9wylxxrc5nm7by00i76c1vsg";
   };
 
@@ -16,6 +16,12 @@ stdenv.mkDerivation rec {
       url = "https://salsa.debian.org/debian/nfstrace/raw/debian/0.4.3.1-3/debian/patches/reproducible_build.patch";
       sha256 = "0fd96r8xi142kjwibqkd46s6jwsg5kfc5v28bqsj9rdlc2aqmay5";
     })
+    # Fixes build failure with gcc-10
+    # Related PR https://github.com/epam/nfstrace/pull/42/commits/4562a895ed3ac0e811bdd489068ad3ebe4d7b501
+    (fetchpatch {
+      url = "https://github.com/epam/nfstrace/commit/4562a895ed3ac0e811bdd489068ad3ebe4d7b501.patch";
+      sha256 = "1fbicbllyykjknik7asa81x0ixxmbwqwkiz74cnznagv10jlkj3p";
+    })
   ];
 
   postPatch = ''
@@ -23,17 +29,18 @@ stdenv.mkDerivation rec {
       --replace "-Wno-braced-scalar-init" ""
   '';
 
-  buildInputs = [ json_c libpcap ncurses ];
+  buildInputs = [ json_c libpcap ncurses libtirpc ];
   nativeBuildInputs = [ cmake ];
 
   # To build with GCC 8+ it needs:
   CXXFLAGS = "-Wno-class-memaccess -Wno-ignored-qualifiers";
   # CMake can't find json_c without:
-  NIX_CFLAGS_COMPILE = [ "-I${json_c.dev}/include/json-c" "-Wno-error=address-of-packed-member" ];
+  NIX_CFLAGS_COMPILE = [ "-I${json_c.dev}/include/json-c" "-Wno-error=address-of-packed-member" "-I${libtirpc.dev}/include/tirpc" ];
+  NIX_LDFLAGS = [ "-ltirpc" ];
 
   doCheck = false; # requires network access
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://epam.github.io/nfstrace/";
     description = "NFS and CIFS tracing/monitoring/capturing/analyzing tool";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/ngrep/default.nix b/pkgs/tools/networking/ngrep/default.nix
index 60125b515d6..1e57ac75843 100644
--- a/pkgs/tools/networking/ngrep/default.nix
+++ b/pkgs/tools/networking/ngrep/default.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
     sed -i "s|BPF=.*|BPF=${libpcap}/include/pcap/bpf.h|" configure
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Network packet analyzer";
     longDescription = ''
       ngrep strives to provide most of GNU grep's common features, applying
diff --git a/pkgs/tools/networking/ngrok-2/default.nix b/pkgs/tools/networking/ngrok-2/default.nix
index d9c1acc374c..2840b9d8400 100644
--- a/pkgs/tools/networking/ngrok-2/default.nix
+++ b/pkgs/tools/networking/ngrok-2/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
-with stdenv.lib;
+with lib;
 
 let versions = builtins.fromJSON (builtins.readFile ./versions.json);
     arch = if stdenv.isi686 then "386"
@@ -35,13 +35,10 @@ stdenv.mkDerivation {
   passthru.updateScript = ./update.sh;
 
   meta = {
-    description = "ngrok";
-    longDescription = ''
-      Allows you to expose a web server running on your local machine to the internet.
-    '';
+    description = "Allows you to expose a web server running on your local machine to the internet";
     homepage = "https://ngrok.com/";
     license = licenses.unfree;
-    platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" "x86_64-darwin" ];
+    platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
     maintainers = [ maintainers.bobvanderlinden ];
   };
 }
diff --git a/pkgs/tools/networking/ngrok-2/update.sh b/pkgs/tools/networking/ngrok-2/update.sh
index 7908a1524e5..4e2aaf4e559 100755
--- a/pkgs/tools/networking/ngrok-2/update.sh
+++ b/pkgs/tools/networking/ngrok-2/update.sh
@@ -29,5 +29,6 @@ get_download_info() {
     get_download_info linux arm
     get_download_info linux arm64
     get_download_info darwin amd64
+    get_download_info darwin arm64
 ) | jq --slurp 'map ({ (.sys): . }) | add' \
     > pkgs/tools/networking/ngrok-2/versions.json
diff --git a/pkgs/tools/networking/ngrok-2/versions.json b/pkgs/tools/networking/ngrok-2/versions.json
index 656e6a640e5..85b0e47168a 100644
--- a/pkgs/tools/networking/ngrok-2/versions.json
+++ b/pkgs/tools/networking/ngrok-2/versions.json
@@ -1,32 +1,38 @@
 {
   "linux-386": {
     "sys": "linux-386",
-    "url": "https://bin.equinox.io/a/bjFaKy3TSAg/ngrok-2.3.35-linux-386",
-    "sha256": "1fdd1c057c3c31044400ef6ade20ad3f10bce415ad33ccfb4bc2fd83bb36f62f",
-    "version": "2.3.35"
+    "url": "https://bin.equinox.io/a/c4ZY6f7svn7/ngrok-2.3.40-linux-386",
+    "sha256": "1b645ff0abbb28ca7c0f6a2109653be2dc281860b582b4de6927fde12c99da26",
+    "version": "2.3.40"
   },
   "linux-amd64": {
     "sys": "linux-amd64",
-    "url": "https://bin.equinox.io/a/52fZaxjGg9n/ngrok-2.3.35-linux-amd64",
-    "sha256": "b456608239cdf4b5119916c62a87640667d1cb1900c53faed89e3dacc1fe4679",
-    "version": "2.3.35"
+    "url": "https://bin.equinox.io/a/b5PAmc6L9z2/ngrok-2.3.40-linux-amd64",
+    "sha256": "218d267cd1195334718bafac14bfdf1c19dc95dcf8a24aaa6a1383c21dc86e76",
+    "version": "2.3.40"
   },
   "linux-arm": {
     "sys": "linux-arm",
-    "url": "https://bin.equinox.io/a/2cUd5mRRjoF/ngrok-2.3.35-linux-arm",
-    "sha256": "94d88311e9b2baea615d9fe7c6921ac0167040ec66aa0d0cbb856c027d617f1f",
-    "version": "2.3.35"
+    "url": "https://bin.equinox.io/a/aRh9rdUAJyf/ngrok-2.3.40-linux-arm",
+    "sha256": "538a7431df141a929a250eaf6ed7afdcce817bcd8cfe60b61f4c6d7a289b1d1c",
+    "version": "2.3.40"
   },
   "linux-arm64": {
     "sys": "linux-arm64",
-    "url": "https://bin.equinox.io/a/k2qx6ipHqpb/ngrok-2.3.35-linux-arm64",
-    "sha256": "fd07f5c449f1c1444606bbc9d06fa6b649325ddf0b3e6dac6f32d785a886f170",
-    "version": "2.3.35"
+    "url": "https://bin.equinox.io/a/2gpRjDRBpJv/ngrok-2.3.40-linux-arm64",
+    "sha256": "dc7b4465ef95f6d04d1b1996111b3a2631e5f464d7dca7f4994f59ea4edbe21f",
+    "version": "2.3.40"
   },
   "darwin-amd64": {
     "sys": "darwin-amd64",
-    "url": "https://bin.equinox.io/a/jKkD2Wcds2L/ngrok-2.3.35-darwin-amd64",
-    "sha256": "dd74a6be1a155c41ff06aadad910196cae13e06ab997bc0b144288b2da568f2a",
-    "version": "2.3.35"
+    "url": "https://bin.equinox.io/a/fcZQXtHSDgM/ngrok-2.3.40-darwin-amd64",
+    "sha256": "80c8fb121d6c93350d84351d9516674f4e20a3e003cdd7dcb4c3e7c48b9c5b07",
+    "version": "2.3.40"
+  },
+  "darwin-arm64": {
+    "sys": "darwin-arm64",
+    "url": "https://bin.equinox.io/a/3TEKdZeyAnt/ngrok-2.3.40-darwin-arm64",
+    "sha256": "c9e6dfec454f9faec92a13dfd3f3857de982007e3b85987bb875aa0d74ca8101",
+    "version": "2.3.40"
   }
 }
diff --git a/pkgs/tools/networking/nikto/NIKTODIR-nix-wrapper-fix.patch b/pkgs/tools/networking/nikto/NIKTODIR-nix-wrapper-fix.patch
new file mode 100644
index 00000000000..d3caea1b26f
--- /dev/null
+++ b/pkgs/tools/networking/nikto/NIKTODIR-nix-wrapper-fix.patch
@@ -0,0 +1,26 @@
+diff --color -ur a/program/nikto.pl b/program/nikto.pl
+--- a/program/nikto.pl	2021-01-30 12:05:54.915072538 +0100
++++ b/program/nikto.pl	2021-01-30 12:36:42.877729231 +0100
+@@ -223,7 +223,8 @@
+     # Guess Nikto current directory
+     my $NIKTODIR = abs_path($0);
+     chomp($NIKTODIR);
+-    $NIKTODIR =~ s#[\\/]nikto.pl$##;
++    $NIKTODIR =~ s#[\\/]bin[\\/]\.nikto-wrapped$##;
++
+ 
+     # Guess user's home directory -- to support Windows
+     foreach my $var (split(/ /, "HOME USERPROFILE")) {
+@@ -231,10 +232,10 @@
+     }
+ 
+     # Read the conf files in order (previous values are over-written with each, if multiple found)
+-    push(@CF,"$NIKTODIR/nikto.conf.default");
++    push(@CF,"$NIKTODIR/etc/nikto.conf.default");
+     push(@CF,"/etc/nikto.conf");
+     push(@CF,"$home/nikto.conf");
+-    push(@CF,"$NIKTODIR/nikto.conf");
++    push(@CF,"$NIKTODIR/etc/nikto.conf");
+     push(@CF,"nikto.conf");
+     push(@CF,"$VARIABLES{'configfile'}");
+ 
diff --git a/pkgs/tools/networking/nikto/default.nix b/pkgs/tools/networking/nikto/default.nix
new file mode 100644
index 00000000000..e1abcb6c140
--- /dev/null
+++ b/pkgs/tools/networking/nikto/default.nix
@@ -0,0 +1,64 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, perlPackages
+, makeWrapper
+, installShellFiles
+}:
+
+stdenv.mkDerivation rec {
+  pname = "nikto";
+  version = "2.2.0";
+
+  src = fetchFromGitHub {
+    owner = "sullo";
+    repo = "nikto";
+    rev = "c83d0461edd75c02677dea53da2896644f35ecab";
+    sha256 = "0vwq2zdxir67cn78ls11qf1smd54nppy266v7ajm5rqdc47q7fy2";
+  };
+
+  # Nikto searches its configuration file based on its current path
+  # This fixes the current path regex for the wrapped executable.
+  patches = [ ./NIKTODIR-nix-wrapper-fix.patch ];
+
+  postPatch = ''
+    # EXECDIR needs to be changed to the path where we copy the programs stuff
+    # Forcing SSLeay is needed for SSL support (the auto mode doesn't seem to work otherwise)
+    substituteInPlace program/nikto.conf.default \
+      --replace "# EXECDIR=/opt/nikto" "EXECDIR=$out/share" \
+      --replace "LW_SSL_ENGINE=auto" "LW_SSL_ENGINE=SSLeay"
+  '';
+
+  nativeBuildInputs = [ makeWrapper installShellFiles ];
+
+  propagatedBuildInputs = [ perlPackages.NetSSLeay ];
+
+  buildInputs = [
+    perlPackages.perl
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    install -d "$out/share"
+    cp -a program/* "$out/share"
+    install -Dm 755 "program/nikto.pl" "$out/bin/nikto"
+    install -Dm 644 program/nikto.conf.default "$out/etc/nikto.conf"
+    installManPage documentation/nikto.1
+    install -Dm 644 program/docs/nikto_manual.html "$out/share/doc/${pname}/manual.html"
+    install -Dm 644 README.md "$out/share/doc/${pname}/README"
+    runHook postInstall
+  '';
+
+  postInstall = ''
+    wrapProgram $out/bin/nikto \
+      --prefix PERL5LIB : $PERL5LIB
+  '';
+
+  meta = with lib; {
+    description = "Web server scanner";
+    license = licenses.gpl2Plus;
+    homepage = "https://cirt.net/Nikto2";
+    maintainers = with maintainers; [ shamilton ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/networking/noip/default.nix b/pkgs/tools/networking/noip/default.nix
index 6503e701377..3425d1e3a82 100644
--- a/pkgs/tools/networking/noip/default.nix
+++ b/pkgs/tools/networking/noip/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl}:
+{lib, stdenv, fetchurl}:
 
 stdenv.mkDerivation {
   name = "noip-2.1.9-1";
@@ -17,11 +17,11 @@ stdenv.mkDerivation {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Dynamic DNS daemon for no-ip accounts";
     homepage = "http://noip.com/download?page=linux";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.iand675 ];
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.iand675 ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/notemap/default.nix b/pkgs/tools/networking/notemap/default.nix
new file mode 100644
index 00000000000..040f26752b5
--- /dev/null
+++ b/pkgs/tools/networking/notemap/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, stdenv
+, fetchzip
+, pkg-config
+, libressl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "notemap";
+  version = "1.3";
+
+  src = fetchzip {
+    url = "https://git.causal.agency/notemap/snapshot/notemap-${version}.tar.gz";
+    sha256 = "0s9c1xx0iggyzclqw3294bjv7qgvd5l5zgbryks4hvfibr73r6ps";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+  ];
+
+  buildInputs = [
+    libressl
+  ];
+
+  meta = {
+    description = "Mirror notes to IMAP";
+    longDescription = ''
+      notemap(1) mirrors text files to an IMAP mailbox in a format compatible with the iOS
+      Notes app. It's intended to make notes managed in git(1) easily accessible
+      from the phone.
+    '';
+    license = lib.licenses.gpl3Plus;
+    maintainers = [ lib.maintainers.sternenseemann ];
+    homepage = "https://git.causal.agency/notemap/about/";
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/pkgs/tools/networking/nss-mdns/default.nix b/pkgs/tools/networking/nss-mdns/default.nix
index 1aaead46f6a..212f7bfc287 100644
--- a/pkgs/tools/networking/nss-mdns/default.nix
+++ b/pkgs/tools/networking/nss-mdns/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, fetchpatch }:
+{ fetchurl, lib, stdenv, fetchpatch }:
 
 stdenv.mkDerivation rec {
   name = "nss-mdns-0.10";
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
       "--localstatedir=/var"
     ];
 
-  patches = stdenv.lib.optional stdenv.hostPlatform.isMusl
+  patches = lib.optional stdenv.hostPlatform.isMusl
     (
       fetchpatch
       {
@@ -41,10 +41,10 @@ stdenv.mkDerivation rec {
     '';
 
     homepage = "http://0pointer.de/lennart/projects/nss-mdns/";
-    license = stdenv.lib.licenses.lgpl2Plus;
+    license = lib.licenses.lgpl2Plus;
 
     # Supports both the GNU and FreeBSD NSS.
-    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux ++ stdenv.lib.platforms.freebsd;
+    platforms = lib.platforms.gnu ++ lib.platforms.linux ++ lib.platforms.freebsd;
 
     maintainers = [ ];
   };
diff --git a/pkgs/tools/networking/nss-pam-ldapd/default.nix b/pkgs/tools/networking/nss-pam-ldapd/default.nix
index 3ce7638923c..e112b8c1df1 100644
--- a/pkgs/tools/networking/nss-pam-ldapd/default.nix
+++ b/pkgs/tools/networking/nss-pam-ldapd/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl
-, pkgconfig, makeWrapper, autoreconfHook
+{ lib, stdenv, fetchurl
+, pkg-config, makeWrapper, autoreconfHook
 , openldap, python, pam
 }:
 
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     sha256 = "1dna3r0q6sjhhlkhcp8x2zkslrd4y7701kk6fl5r940sdph1pmyh";
   };
 
-  nativeBuildInputs = [ pkgconfig makeWrapper autoreconfHook ];
+  nativeBuildInputs = [ pkg-config makeWrapper autoreconfHook ];
   buildInputs = [ openldap pam python ];
 
   preConfigure = ''
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
     wrapProgram $out/sbin/nslcd --prefix LD_LIBRARY_PATH ":" $out/lib
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "LDAP identity and authentication for NSS/PAM";
     homepage = "https://arthurdejong.org/nss-pam-ldapd/";
     license = licenses.lgpl21;
diff --git a/pkgs/tools/networking/ntopng/default.nix b/pkgs/tools/networking/ntopng/default.nix
index 3db5a28f161..2ba373a2c61 100644
--- a/pkgs/tools/networking/ntopng/default.nix
+++ b/pkgs/tools/networking/ntopng/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, fetchurl, libpcap,/* gnutls, libgcrypt,*/ libxml2, glib
+{ lib, stdenv, fetchurl, libpcap,/* gnutls, libgcrypt,*/ libxml2, glib
 , geoip, geolite-legacy, sqlite, which, autoreconfHook, git
-, pkgconfig, groff, curl, json_c, luajit, zeromq, rrdtool
+, pkg-config, groff, curl, json_c, luajit, zeromq, rrdtool
 }:
 
 # ntopng includes LuaJIT, mongoose, rrdtool and zeromq in its third-party/
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
   ];
 
   buildInputs = [ libpcap/* gnutls libgcrypt*/ libxml2 glib geoip geolite-legacy
-    sqlite which autoreconfHook git pkgconfig groff curl json_c luajit zeromq
+    sqlite which autoreconfHook git pkg-config groff curl json_c luajit zeromq
     rrdtool ];
 
 
@@ -50,14 +50,14 @@ stdenv.mkDerivation rec {
 
     rm -rf httpdocs/geoip
     ln -s ${geolite-legacy}/share/GeoIP httpdocs/geoip
-  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+  '' + lib.optionalString stdenv.isDarwin ''
     sed 's|LIBS += -lstdc++.6||' -i Makefile
   '';
 
   NIX_CFLAGS_COMPILE = "-fpermissive"
-    + stdenv.lib.optionalString stdenv.cc.isClang " -Wno-error=reserved-user-defined-literal";
+    + lib.optionalString stdenv.cc.isClang " -Wno-error=reserved-user-defined-literal";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "High-speed web-based traffic analysis and flow collection tool";
     homepage = "http://www.ntop.org/products/ntop/";
     license = licenses.gpl3Plus;
diff --git a/pkgs/tools/networking/ntp/default.nix b/pkgs/tools/networking/ntp/default.nix
index a7deaf7b694..8c62e3b0d64 100644
--- a/pkgs/tools/networking/ntp/default.nix
+++ b/pkgs/tools/networking/ntp/default.nix
@@ -26,8 +26,8 @@ stdenv.mkDerivation rec {
     "--with-openssl-incdir=${openssl.dev}/include"
     "--enable-ignore-dns-errors"
     "--with-yielding-select=yes"
-  ] ++ stdenv.lib.optional stdenv.isLinux "--enable-linuxcaps"
-    ++ stdenv.lib.optional withSeccomp "--enable-libseccomp";
+  ] ++ lib.optional stdenv.isLinux "--enable-linuxcaps"
+    ++ lib.optional withSeccomp "--enable-libseccomp";
 
   buildInputs = [ libcap openssl perl ]
     ++ lib.optional withSeccomp libseccomp
@@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
     rm -rf $out/share/doc
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.ntp.org/";
     description = "An implementation of the Network Time Protocol";
     license = {
@@ -47,6 +47,6 @@ stdenv.mkDerivation rec {
       url = "https://www.eecis.udel.edu/~mills/ntp/html/copyright.html";
     };
     maintainers = with maintainers; [ eelco thoughtpolice ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/nuttcp/default.nix b/pkgs/tools/networking/nuttcp/default.nix
index fe3cde5f91a..1b9e9fe04e4 100644
--- a/pkgs/tools/networking/nuttcp/default.nix
+++ b/pkgs/tools/networking/nuttcp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "nuttcp";
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
     cp nuttcp $out/bin
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Network performance measurement tool";
     longDescription = ''
       nuttcp is a network performance measurement tool intended for use by
diff --git a/pkgs/tools/networking/nxdomain/default.nix b/pkgs/tools/networking/nxdomain/default.nix
new file mode 100644
index 00000000000..4e7a708125a
--- /dev/null
+++ b/pkgs/tools/networking/nxdomain/default.nix
@@ -0,0 +1,29 @@
+{ lib, buildPythonApplication, fetchPypi, dnspython, pytestCheckHook }:
+
+buildPythonApplication rec {
+  pname = "nxdomain";
+  version = "1.0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0va7nkbdjgzrf7fnbxkh1140pbc62wyj86rdrrh5wmg3phiziqkb";
+  };
+
+  propagatedBuildInputs = [ dnspython ];
+
+  checkInputs = [ pytestCheckHook ];
+
+  postCheck = ''
+    echo example.org > simple.list
+    python -m nxdomain --format dnsmasq --out dnsmasq.conf --simple ./simple.list
+    grep -q 'address=/example.org/' dnsmasq.conf
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/zopieux/nxdomain";
+    description = "A domain (ad) block list creator";
+    platforms = platforms.all;
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ zopieux ];
+  };
+}
diff --git a/pkgs/tools/networking/nylon/default.nix b/pkgs/tools/networking/nylon/default.nix
index d6f8cb21e0b..840b714fc9f 100644
--- a/pkgs/tools/networking/nylon/default.nix
+++ b/pkgs/tools/networking/nylon/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libevent, buildEnv }:
+{ lib, stdenv, fetchurl, libevent, buildEnv }:
 let
   # failed to find a better way to make it work
   libevent-comb = buildEnv {
@@ -19,7 +19,7 @@ stdenv.mkDerivation {
 
   buildInputs = [ libevent ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://monkey.org/~marius/nylon";
     description = "Proxy server, supporting SOCKS 4 and 5, as well as a mirror mode";
     license = licenses.bsdOriginal;
diff --git a/pkgs/tools/networking/nzbget/default.nix b/pkgs/tools/networking/nzbget/default.nix
index c25f19c0350..375896258bc 100644
--- a/pkgs/tools/networking/nzbget/default.nix
+++ b/pkgs/tools/networking/nzbget/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, libxml2, ncurses, libsigcxx, libpar2
+{ lib, stdenv, fetchurl, pkg-config, libxml2, ncurses, libsigcxx, libpar2
 , gnutls, libgcrypt, zlib, openssl }:
 
 stdenv.mkDerivation rec {
@@ -10,14 +10,14 @@ stdenv.mkDerivation rec {
     sha256 = "0lwd0pfrs4a5ms193hgz2qiyf7grrc925dw6y0nfc0gkp27db9b5";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [ libxml2 ncurses libsigcxx libpar2 gnutls
                   libgcrypt zlib openssl ];
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://nzbget.net";
     license = licenses.gpl2Plus;
     description = "A command line tool for downloading files from news servers";
diff --git a/pkgs/tools/networking/oapi-codegen/default.nix b/pkgs/tools/networking/oapi-codegen/default.nix
new file mode 100644
index 00000000000..ce490cafef6
--- /dev/null
+++ b/pkgs/tools/networking/oapi-codegen/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "oapi-codegen";
+  version = "1.6.0";
+
+  src = fetchFromGitHub {
+    owner = "deepmap";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-doJ1ceuJ/gL9vlGgV/hKIJeAErAseH0dtHKJX2z7pV0=";
+  };
+
+  vendorSha256 = "sha256-Y4WM+o+5jiwj8/99UyNHLpBNbtJkKteIGW2P1Jd9L6M=";
+
+  # Tests use network
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Go client and server OpenAPI 3 generator";
+    homepage    = "https://github.com/deepmap/oapi-codegen";
+    license     = licenses.asl20;
+    maintainers = [ maintainers.j4m3s ];
+  };
+}
diff --git a/pkgs/tools/networking/ocproxy/default.nix b/pkgs/tools/networking/ocproxy/default.nix
index 877f15865ac..bc21884e6ac 100644
--- a/pkgs/tools/networking/ocproxy/default.nix
+++ b/pkgs/tools/networking/ocproxy/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoconf, automake, libevent }:
+{ lib, stdenv, fetchFromGitHub, autoconf, automake, libevent }:
 
 stdenv.mkDerivation rec {
   version = "1.60";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
     ./autogen.sh
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "OpenConnect proxy";
     longDescription = ''
       ocproxy is a user-level SOCKS and port forwarding proxy for OpenConnect
diff --git a/pkgs/tools/networking/ocserv/default.nix b/pkgs/tools/networking/ocserv/default.nix
index dea0d10a277..2f5dd14757b 100644
--- a/pkgs/tools/networking/ocserv/default.nix
+++ b/pkgs/tools/networking/ocserv/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitLab, autoreconfHook, pkgconfig, nettle, gnutls
+{ lib, stdenv, fetchFromGitLab, autoreconfHook, pkg-config, nettle, gnutls
 , libev, protobufc, guile, geoip, libseccomp, gperf, readline
 , lz4, libgssglue, ronn, pam
 }:
@@ -10,17 +10,17 @@ stdenv.mkDerivation rec {
   src = fetchFromGitLab {
     owner = "openconnect";
     repo = "ocserv";
-    rev = "ocserv_${stdenv.lib.replaceStrings [ "." ] [ "_" ] version}";
+    rev = "ocserv_${lib.replaceStrings [ "." ] [ "_" ] version}";
     sha256 = "0k7sx9sg8akxwfdl51cvdqkdrx9qganqddgri2yhcgznc3f3pz5b";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
   buildInputs = [ nettle gnutls libev protobufc guile geoip libseccomp gperf readline lz4 libgssglue ronn pam ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://gitlab.com/openconnect/ocserv";
     license = licenses.gpl2;
-    description = "This program is openconnect VPN server (ocserv), a server for the openconnect VPN client.";
+    description = "This program is openconnect VPN server (ocserv), a server for the openconnect VPN client";
     maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/tools/networking/offlineimap/default.nix b/pkgs/tools/networking/offlineimap/default.nix
index 73e2e6b60f5..0de96169769 100644
--- a/pkgs/tools/networking/offlineimap/default.nix
+++ b/pkgs/tools/networking/offlineimap/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, python2Packages,
+{ lib, fetchFromGitHub, python2Packages,
   asciidoc, cacert, libxml2, libxslt, docbook_xsl }:
 
 python2Packages.buildPythonApplication rec {
@@ -34,7 +34,7 @@ python2Packages.buildPythonApplication rec {
   meta = {
     description = "Synchronize emails between two repositories, so that you can read the same mailbox from multiple computers";
     homepage = "http://offlineimap.org";
-    license = stdenv.lib.licenses.gpl2Plus;
-    maintainers = with stdenv.lib.maintainers; [ endocrimes ];
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ endocrimes ];
   };
 }
diff --git a/pkgs/tools/networking/ofono/default.nix b/pkgs/tools/networking/ofono/default.nix
index c6b2ffe9e83..93e1415b91c 100644
--- a/pkgs/tools/networking/ofono/default.nix
+++ b/pkgs/tools/networking/ofono/default.nix
@@ -1,7 +1,7 @@
-{ stdenv
+{ lib, stdenv
 , fetchgit
 , autoreconfHook
-, pkgconfig
+, pkg-config
 , glib
 , dbus
 , ell
@@ -12,14 +12,14 @@
 
 stdenv.mkDerivation rec {
   pname = "ofono";
-  version = "1.31";
+  version = "1.32";
 
   outputs = [ "out" "dev" ];
 
   src = fetchgit {
     url = "git://git.kernel.org/pub/scm/network/ofono/ofono.git";
     rev = version;
-    sha256 = "033y3vggjxn1c7mw75j452idp7arrdv51axs727f7l3c5lnxqdjy";
+    sha256 = "sha256-bJ7Qgau5soPiptrhcMZ8rWxfprRCTeR7OjQ5HZQ9hbc=";
   };
 
   patches = [
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [
     autoreconfHook
-    pkgconfig
+    pkg-config
   ];
 
   buildInputs = [
@@ -46,9 +46,17 @@ stdenv.mkDerivation rec {
     "--enable-external-ell"
   ];
 
+  postInstall = ''
+    rm -r $out/etc/ofono
+    ln -s /etc/ofono $out/etc/ofono
+  '';
+
+  enableParallelBuilding = true;
+  enableParallelChecking = false;
+
   doCheck = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Infrastructure for building mobile telephony (GSM/UMTS) applications";
     homepage = "https://01.org/ofono";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/olsrd/default.nix b/pkgs/tools/networking/olsrd/default.nix
index bc5a0358019..4fb8892ec02 100644
--- a/pkgs/tools/networking/olsrd/default.nix
+++ b/pkgs/tools/networking/olsrd/default.nix
@@ -1,14 +1,25 @@
-{ stdenv, fetchurl, bison, flex }:
+{ lib, stdenv, fetchFromGitHub, fetchpatch, bison, flex }:
 
 stdenv.mkDerivation rec {
   pname = "olsrd";
-  version = "0.9.6.1";
+  version = "0.9.8";
 
-  src = fetchurl {
-    url = "http://www.olsr.org/releases/0.9/${pname}-${version}.tar.bz2";
-    sha256 = "9cac290e9bff5fc7422110b9ccd972853f10962c962d2f31a63de9c6d1520612";
+  src = fetchFromGitHub {
+    owner = "OLSR";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1xk355dm5pfjil1j4m724vkdnc178lv6hi6s1g0xgpd59avbx90j";
   };
 
+  patches = [
+    # remove if there's ever an upstream release that incorporates
+    # https://github.com/OLSR/olsrd/pull/87
+    (fetchpatch {
+      url = "https://raw.githubusercontent.com/openwrt-routing/packages/b3897386771890ba1b15f672c2fed58630beedef/olsrd/patches/011-bison.patch";
+      sha256 = "04cl4b8dpr1yjs7wa94jcszmkdzpnrn719a5m9nhm7lvfrn1rzd0";
+    })
+  ];
+
   buildInputs = [ bison flex ];
 
   preConfigure = ''
@@ -17,9 +28,9 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "An adhoc wireless mesh routing daemon";
-    license = stdenv.lib.licenses.bsd3;
+    license = lib.licenses.bsd3;
     homepage = "http://olsr.org/";
-    maintainers = with stdenv.lib.maintainers; [viric];
-    platforms = with stdenv.lib.platforms; linux;
+    maintainers = with lib.maintainers; [viric];
+    platforms = with lib.platforms; linux;
   };
 }
diff --git a/pkgs/tools/networking/oneshot/default.nix b/pkgs/tools/networking/oneshot/default.nix
index f02370ab69d..48c20643580 100644
--- a/pkgs/tools/networking/oneshot/default.nix
+++ b/pkgs/tools/networking/oneshot/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "oneshot";
-  version = "1.2.0";
+  version = "1.4.1";
 
   src = fetchFromGitHub {
     owner = "raphaelreyna";
     repo = "oneshot";
     rev = "v${version}";
-    sha256 = "11xmvqj7md970rjhkg1zj2w6yqpw6cj83aw37a82sfdn90kyhg9d";
+    sha256 = "sha256-UD67xYBb1rvGMSPurte5z2Hcd7+JtXDPbgp3BVBdLuk=";
   };
 
-  vendorSha256 = "1cxr96yrrmz37r542mc5376jll9lqjqm18k8761h9jqfbzmh9rkp";
+  vendorSha256 = "sha256-d+YE618OywSDOWiiULHENFEqzRmFVUFKPuPXnL1JubM=";
 
   doCheck = false;
 
diff --git a/pkgs/tools/networking/ookla-speedtest/default.nix b/pkgs/tools/networking/ookla-speedtest/default.nix
new file mode 100644
index 00000000000..200b488cf71
--- /dev/null
+++ b/pkgs/tools/networking/ookla-speedtest/default.nix
@@ -0,0 +1,43 @@
+{ lib, stdenv, fetchurl }:
+
+let
+  pname = "ookla-speedtest";
+  version = "1.0.0";
+
+  srcs = {
+    x86_64-linux = fetchurl {
+      url = "https://install.speedtest.net/app/cli/${pname}-${version}-x86_64-linux.tgz";
+      sha256 = "sha256-X+ICjw1EJ+T0Ix2fnPcOZpG7iQpwY211Iy/k2XBjMWg=";
+    };
+    aarch64-linux = fetchurl {
+      url = "https://install.speedtest.net/app/cli/${pname}-${version}-aarch64-linux.tgz";
+      sha256 = "sha256-BzaE3DSQUIygGwTFhV4Ez9eX/tM/bqam7cJt+8b2qp4=";
+    };
+  };
+in
+
+stdenv.mkDerivation rec {
+  inherit pname version;
+
+  src = srcs.${stdenv.hostPlatform.system};
+
+  setSourceRoot = ''
+    sourceRoot=$PWD
+  '';
+
+  dontBuild = true;
+  dontConfigure = true;
+
+  installPhase = ''
+    install -D speedtest $out/bin/speedtest
+    install -D speedtest.5 $out/share/man/man5/speedtest.5
+  '';
+
+  meta = with lib; {
+    description = "Command line internet speedtest tool by Ookla";
+    homepage = "https://www.speedtest.net/apps/cli";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ kranzes ];
+    platforms = lib.attrNames srcs;
+  };
+}
diff --git a/pkgs/tools/networking/openapi-generator-cli/default.nix b/pkgs/tools/networking/openapi-generator-cli/default.nix
index 2b09fe901d0..34d2c22fb24 100644
--- a/pkgs/tools/networking/openapi-generator-cli/default.nix
+++ b/pkgs/tools/networking/openapi-generator-cli/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchurl, jre, makeWrapper }:
+{ callPackage, lib, stdenv, fetchurl, jre, makeWrapper }:
 
-stdenv.mkDerivation rec {
-  version = "4.2.2";
+let this = stdenv.mkDerivation rec {
+  version = "5.1.0";
   pname = "openapi-generator-cli";
 
   jarfilename = "${pname}-${version}.jar";
@@ -12,23 +12,31 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://maven/org/openapitools/${pname}/${version}/${jarfilename}";
-    sha256 = "1pafv432ll3pp52580pbnk0gnrm6byl5fkrf1rarhxfkpkr82yif";
+    sha256 = "06dvy4pwgpyf209n0b27qwkjj7zlgadg2czwxapy94fd1wpq9yb2";
   };
 
-  phases = [ "installPhase" ];
+  dontUnpack = true;
 
   installPhase = ''
+    runHook preInstall
+
     install -D "$src" "$out/share/java/${jarfilename}"
 
     makeWrapper ${jre}/bin/java $out/bin/${pname} \
       --add-flags "-jar $out/share/java/${jarfilename}"
+
+    runHook postInstall
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Allows generation of API client libraries (SDK generation), server stubs and documentation automatically given an OpenAPI Spec";
     homepage = "https://github.com/OpenAPITools/openapi-generator";
     license = licenses.asl20;
     maintainers = [ maintainers.shou ];
   };
-}
 
+  passthru.tests.example = callPackage ./example.nix {
+    openapi-generator-cli = this;
+  };
+};
+in this
diff --git a/pkgs/tools/networking/openapi-generator-cli/example.nix b/pkgs/tools/networking/openapi-generator-cli/example.nix
new file mode 100644
index 00000000000..f59173b9744
--- /dev/null
+++ b/pkgs/tools/networking/openapi-generator-cli/example.nix
@@ -0,0 +1,31 @@
+{ openapi-generator-cli, fetchurl, runCommand }:
+
+runCommand "openapi-generator-cli-test" {
+  nativeBuildInputs = [ openapi-generator-cli ];
+  petstore = fetchurl {
+    url = "https://raw.githubusercontent.com/OAI/OpenAPI-Specification/14c0908becbccd78252be49bd92be8c53cd2b9e3/examples/v3.0/petstore.yaml";
+    sha256 = "sha256:1mgdbzv42alv0b1a18dqbabqyvyhrg3brynr5hqsrm3qljfzaq5b";
+  };
+  config = builtins.toJSON {
+    elmVersion = "0.19";
+    elmPrefixCustomTypeVariants = false;
+  };
+  passAsFile = [ "config" ];
+} ''
+  openapi-generator-cli generate \
+    --input-spec $petstore \
+    --enable-post-process-file \
+    --generator-name elm \
+    --config "$config" \
+    --additional-properties elmEnableCustomBasePaths=true \
+    --output "$out" \
+    ;
+  find $out
+  echo >&2 'Looking for some keywords'
+  set -x
+  grep 'module Api.Request.Pets' $out/src/Api/Request/Pets.elm
+  grep 'createPets' $out/src/Api/Request/Pets.elm
+  grep '"limit"' $out/src/Api/Request/Pets.elm
+  set +x
+  echo "Looks OK!"
+''
diff --git a/pkgs/tools/networking/openapi-generator-cli/unstable.nix b/pkgs/tools/networking/openapi-generator-cli/unstable.nix
index f5d71fb8e85..33eb33e10b0 100644
--- a/pkgs/tools/networking/openapi-generator-cli/unstable.nix
+++ b/pkgs/tools/networking/openapi-generator-cli/unstable.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchurl, jre, makeWrapper }:
+{ callPackage, lib, stdenv, fetchurl, jre, makeWrapper }:
 
-stdenv.mkDerivation rec {
-  version = "5.0.0-2020-02-04";
+let this = stdenv.mkDerivation rec {
+  version = "6.0.0-2021-01-18";  # Also update the fetchurl link
   pname = "openapi-generator-cli";
 
   jarfilename = "${pname}-${version}.jar";
@@ -11,24 +11,32 @@ stdenv.mkDerivation rec {
   ];
 
   src = fetchurl {
-    url = "https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/5.0.0-SNAPSHOT/openapi-generator-cli-5.0.0-20200204.091421-37.jar";
-    sha256 = "0swv976fcr2z8g53avr0r706c31xacb2dlnl8b4c8mzmi49byy7k";
+    url = "https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/6.0.0-SNAPSHOT/openapi-generator-cli-6.0.0-20210118.082537-4.jar";
+    sha256 = "1ji3yw9dp4srlgqxvb21vrcp2bzj4himxsmp8l8zid9nxsc1m71x";
   };
 
-  phases = [ "installPhase" ];
+  dontUnpack = true;
 
   installPhase = ''
+    runHook preInstall
+
     install -D "$src" "$out/share/java/${jarfilename}"
 
     makeWrapper ${jre}/bin/java $out/bin/${pname} \
       --add-flags "-jar $out/share/java/${jarfilename}"
+
+    runHook postInstall
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Allows generation of API client libraries (SDK generation), server stubs and documentation automatically given an OpenAPI Spec";
     homepage = "https://github.com/OpenAPITools/openapi-generator";
     license = licenses.asl20;
     maintainers = [ maintainers.shou ];
   };
-}
 
+  passthru.tests.example = callPackage ./example.nix {
+    openapi-generator-cli = this;
+  };
+};
+in this
diff --git a/pkgs/tools/networking/openconnect/default.nix b/pkgs/tools/networking/openconnect/default.nix
index 11f9fdc0fd8..0e1da29320f 100644
--- a/pkgs/tools/networking/openconnect/default.nix
+++ b/pkgs/tools/networking/openconnect/default.nix
@@ -1,41 +1,56 @@
-{ stdenv, fetchurl, pkgconfig, openssl ? null, gnutls ? null, gmp, libxml2, stoken, zlib, fetchgit, darwin } :
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, openssl ? null
+, gnutls ? null
+, gmp
+, libxml2
+, stoken
+, zlib
+, vpnc-scripts
+, PCSC
+, head ? false
+  , fetchFromGitLab
+  , autoreconfHook
+}:
 
 assert (openssl != null) == (gnutls == null);
 
-let vpnc = fetchgit {
-  url = "git://git.infradead.org/users/dwmw2/vpnc-scripts.git";
-  rev = "c0122e891f7e033f35f047dad963702199d5cb9e";
-  sha256 = "11b1ls012mb704jphqxjmqrfbbhkdjb64j2q4k8wb5jmja8jnd14";
-};
+stdenv.mkDerivation rec {
+  pname = "openconnect${lib.optionalString head "-head"}";
+  version = if head then "2021-05-05" else "8.10";
 
-in stdenv.mkDerivation rec {
-  pname = "openconnect";
-  version = "8.10";
-
-  src = fetchurl {
-    urls = [
-      "ftp://ftp.infradead.org/pub/openconnect/${pname}-${version}.tar.gz"
-    ];
-    sha256 = "1cdsx4nsrwawbsisfkldfc9i4qn60g03vxb13nzppr2br9p4rrih";
-  };
+  src =
+    if head then fetchFromGitLab {
+      owner = "openconnect";
+      repo = "openconnect";
+      rev = "684f6db1aef78e61e01f511c728bf658c30b9114";
+      sha256 = "0waclawcymgd8sq9xbkn2q8mnqp4pd0gpyv5wrnb7i0nsv860wz8";
+    }
+    else fetchurl {
+      url = "ftp://ftp.infradead.org/pub/openconnect/${pname}-${version}.tar.gz";
+      sha256 = "1cdsx4nsrwawbsisfkldfc9i4qn60g03vxb13nzppr2br9p4rrih";
+    };
 
   outputs = [ "out" "dev" ];
-  
+
   configureFlags = [
-    "--with-vpnc-script=${vpnc}/vpnc-script"
+    "--with-vpnc-script=${vpnc-scripts}/bin/vpnc-script"
     "--disable-nls"
     "--without-openssl-version-check"
   ];
 
   buildInputs = [ openssl gnutls gmp libxml2 stoken zlib ]
-    ++ stdenv.lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.PCSC;
-  nativeBuildInputs = [ pkgconfig ];
+    ++ lib.optional stdenv.isDarwin PCSC;
+  nativeBuildInputs = [ pkg-config ]
+    ++ lib.optional head autoreconfHook;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "VPN Client for Cisco's AnyConnect SSL VPN";
-    homepage = "http://www.infradead.org/openconnect/";
-    license = licenses.lgpl21;
+    homepage = "https://www.infradead.org/openconnect/";
+    license = licenses.lgpl21Only;
     maintainers = with maintainers; [ pradeepchhetri tricktron ];
-    platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
+    platforms = lib.platforms.linux ++ lib.platforms.darwin;
   };
 }
diff --git a/pkgs/tools/networking/openconnect_pa/default.nix b/pkgs/tools/networking/openconnect_pa/default.nix
deleted file mode 100644
index 4b108dc303e..00000000000
--- a/pkgs/tools/networking/openconnect_pa/default.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ stdenv, fetchFromGitHub, pkgconfig, vpnc, openssl ? null, gnutls ? null, gmp, libxml2, stoken, zlib, autoreconfHook } :
-
-assert (openssl != null) == (gnutls == null);
-
-stdenv.mkDerivation {
-  version = "unstable-2018-10-08";
-  pname = "openconnect_pa";
-  
-  outputs = [ "out" "dev" ];
-
-  src = fetchFromGitHub {
-    owner = "dlenski";
-    repo = "openconnect";
-    rev = "e5fe063a087385c5b157ad7a9a3fa874181f6e3b";
-    sha256 = "0ywacqs3nncr2gpjjcz2yc9c6v4ifjssh0vb07h0qff06whqhdax"; 
-  };
-
-  preConfigure = ''
-      export PKG_CONFIG=${pkgconfig}/bin/${pkgconfig.targetPrefix}pkg-config
-      export LIBXML2_CFLAGS="-I ${libxml2.dev}/include/libxml2"
-      export LIBXML2_LIBS="-L${libxml2.out}/lib -lxml2"
-  '';
-
-  configureFlags = [
-    "--with-vpnc-script=${vpnc}/etc/vpnc/vpnc-script"
-    "--disable-nls"
-    "--without-openssl-version-check"
-  ];
-
-  nativeBuildInputs = [ pkgconfig autoreconfHook ];
-  propagatedBuildInputs = [ vpnc openssl gnutls gmp libxml2 stoken zlib ];
-  
-  meta = with stdenv.lib; {
-    description = "OpenConnect client extended to support Palo Alto Networks' GlobalProtect VPN";
-    homepage = "https://github.com/dlenski/openconnect/";
-    license = licenses.lgpl21;
-    maintainers = with maintainers; [ chessai ];
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/tools/networking/openfortivpn/default.nix b/pkgs/tools/networking/openfortivpn/default.nix
index a5e46c6bc57..e02782cccbf 100644
--- a/pkgs/tools/networking/openfortivpn/default.nix
+++ b/pkgs/tools/networking/openfortivpn/default.nix
@@ -1,34 +1,48 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, openssl, ppp, pkgconfig }:
+{ stdenv, lib, fetchFromGitHub, autoreconfHook, pkg-config
+, openssl, ppp
+, systemd ? null }:
 
-with stdenv.lib;
+let
+  withSystemd = stdenv.isLinux && !(systemd == null);
 
-let repo = "openfortivpn";
-    version = "1.14.1";
-
-in stdenv.mkDerivation {
-  name = "${repo}-${version}";
+in
+stdenv.mkDerivation rec {
+  pname = "openfortivpn";
+  version = "1.16.0";
 
   src = fetchFromGitHub {
     owner = "adrienverge";
-    inherit repo;
+    repo = pname;
     rev = "v${version}";
-    sha256 = "1r9lp19fmqx9dw33j5967ydijbnacmr80mqnhbbxyqiw4k5c10ds";
+    sha256 = "sha256-wijP9VGKXlxCAU3xN6+cv9+NGwBS55ql8WsZZ592b/k=";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
-  buildInputs = [ openssl ppp ];
+  # we cannot write the config file to /etc and as we don't need the file, so drop it
+  postPatch = ''
+    substituteInPlace Makefile.am \
+      --replace '$(DESTDIR)$(confdir)' /tmp
+  '';
+
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
 
-  NIX_CFLAGS_COMPILE = "-Wno-error=unused-function";
+  buildInputs = [
+    openssl ppp
+  ]
+  ++ lib.optional withSystemd systemd;
 
-  configureFlags = [ "--with-pppd=${ppp}/bin/pppd" ];
+  configureFlags = [
+    "--sysconfdir=/etc"
+    "--with-pppd=${ppp}/bin/pppd"
+  ]
+  ++ lib.optional withSystemd "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system";
 
   enableParallelBuilding = true;
 
-  meta = {
+  meta = with lib; {
     description = "Client for PPP+SSL VPN tunnel services";
     homepage = "https://github.com/adrienverge/openfortivpn";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.madjar ];
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ madjar ];
+    platforms = with platforms; linux ++ darwin;
   };
 }
diff --git a/pkgs/tools/networking/openntpd/default.nix b/pkgs/tools/networking/openntpd/default.nix
index 7cbba9bfbf6..e6703c748fc 100644
--- a/pkgs/tools/networking/openntpd/default.nix
+++ b/pkgs/tools/networking/openntpd/default.nix
@@ -1,15 +1,15 @@
-{ stdenv, fetchurl, libressl
+{ lib, stdenv, fetchurl, libressl
 , privsepPath ? "/var/empty"
 , privsepUser ? "ntp"
 }:
 
 stdenv.mkDerivation rec {
   pname = "openntpd";
-  version = "6.2p3";
+  version = "6.8p1";
 
   src = fetchurl {
     url = "mirror://openbsd/OpenNTPD/${pname}-${version}.tar.gz";
-    sha256 = "0fn12i4kzsi0zkr4qp3dp9bycmirnfapajqvdfx02zhr4hanj0kv";
+    sha256 = "0ijsylc7a4jlpxsqa0jq1w1c7333id8pcakzl7a5749ria1xp0l5";
   };
 
   prePatch = ''
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
     "localstatedir=\${TMPDIR}"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.openntpd.org/";
     license = licenses.bsd3;
     description = "OpenBSD NTP daemon (Debian port)";
diff --git a/pkgs/tools/networking/openresolv/default.nix b/pkgs/tools/networking/openresolv/default.nix
index 58985f73f30..f486c903c5d 100644
--- a/pkgs/tools/networking/openresolv/default.nix
+++ b/pkgs/tools/networking/openresolv/default.nix
@@ -1,15 +1,15 @@
-{ stdenv, fetchurl, makeWrapper, coreutils }:
+{ lib, stdenv, fetchurl, makeWrapper, coreutils }:
 
 stdenv.mkDerivation rec {
   pname = "openresolv";
-  version = "3.11.0";
+  version = "3.12.0";
 
   src = fetchurl {
     url = "mirror://roy/openresolv/${pname}-${version}.tar.xz";
-    sha256 = "0g7wb2880hbr0x99n73m7fgjm7lcdbpxfy2i620zxcq73qfrvspa";
+    sha256 = "sha256-QrMFCOhXoihTXGMeqsk2hi2G7KaMFLXAvzh7oXa5G5c=";
   };
 
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
   configurePhase =
     ''
@@ -33,8 +33,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A program to manage /etc/resolv.conf";
     homepage = "https://roy.marples.name/projects/openresolv";
-    license = stdenv.lib.licenses.bsd2;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.bsd2;
+    maintainers = [ lib.maintainers.eelco ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/opensm/default.nix b/pkgs/tools/networking/opensm/default.nix
index 3fe9f87d658..a21fe68e816 100644
--- a/pkgs/tools/networking/opensm/default.nix
+++ b/pkgs/tools/networking/opensm/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoconf, automake, libtool, bison, flex, rdma-core }:
+{ lib, stdenv, fetchFromGitHub, autoconf, automake, libtool, bison, flex, rdma-core }:
 
 stdenv.mkDerivation rec {
   pname = "opensm";
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Infiniband subnet manager";
     homepage = "https://www.openfabrics.org/";
     license = licenses.gpl2; # dual licensed as 2-clause BSD
diff --git a/pkgs/tools/networking/opensnitch/daemon.nix b/pkgs/tools/networking/opensnitch/daemon.nix
new file mode 100644
index 00000000000..d7359ea0e70
--- /dev/null
+++ b/pkgs/tools/networking/opensnitch/daemon.nix
@@ -0,0 +1,50 @@
+{ buildGoModule
+, fetchFromGitHub
+, fetchpatch
+, pkg-config
+, libnetfilter_queue
+, libnfnetlink
+, lib
+}:
+
+buildGoModule rec {
+  pname = "opensnitch";
+  version = "1.3.6";
+
+  src = fetchFromGitHub {
+    owner = "evilsocket";
+    repo = "opensnitch";
+    rev = "v${version}";
+    sha256 = "sha256-Cgo+bVQQeUZuYYhA1WSqlLyQQGAeXbbNno9LS7oNvhI=";
+  };
+
+  patches = [
+    # https://github.com/evilsocket/opensnitch/pull/384 don't require
+    # a configuration file in /etc
+    (fetchpatch {
+      name = "dont-require-config-in-etc.patch";
+      url = "https://github.com/evilsocket/opensnitch/commit/8a3f63f36aa92658217bbbf46d39e6d20b2c0791.patch";
+      sha256 = "sha256-WkwjKTQZppR0nqvRO4xiQoKZ307NvuUwoRx+boIpuTg=";
+    })
+  ];
+
+  modRoot = "daemon";
+
+  postBuild = ''
+    mv $GOPATH/bin/daemon $GOPATH/bin/opensnitchd
+  '';
+
+  vendorSha256 = "sha256-LMwQBFkHg1sWIUITLOX2FZi5QUfOivvrkcl9ELO3Trk=";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [ libnetfilter_queue libnfnetlink ];
+
+  meta = with lib; {
+    description = "An application firewall";
+    homepage = "https://github.com/evilsocket/opensnitch/wiki";
+    license = licenses.gpl3Only;
+    maintainers = [ maintainers.raboof ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/networking/opensnitch/ui.nix b/pkgs/tools/networking/opensnitch/ui.nix
new file mode 100644
index 00000000000..69b26492282
--- /dev/null
+++ b/pkgs/tools/networking/opensnitch/ui.nix
@@ -0,0 +1,46 @@
+{ python3Packages
+, fetchFromGitHub
+, wrapQtAppsHook
+, lib
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "opensnitch-ui";
+  version = "1.3.6";
+
+  src = fetchFromGitHub {
+    owner = "evilsocket";
+    repo = "opensnitch";
+    rev = "v${version}";
+    sha256 = "sha256-Cgo+bVQQeUZuYYhA1WSqlLyQQGAeXbbNno9LS7oNvhI=";
+  };
+
+  nativeBuildInputs = [ wrapQtAppsHook ];
+
+  propagatedBuildInputs = with python3Packages; [
+    grpcio-tools
+    pyqt5
+    unidecode
+    unicode-slugify
+    pyinotify
+  ];
+
+  preConfigure = ''
+    cd ui
+  '';
+
+  preCheck = ''
+    export PYTHONPATH=opensnitch:$PYTHONPATH
+  '';
+
+  dontWrapQtApps = true;
+  makeWrapperArgs = [ "\${qtWrapperArgs[@]}" ];
+
+  meta = with lib; {
+    description = "An application firewall";
+    homepage = "https://github.com/evilsocket/opensnitch/wiki";
+    license = licenses.gpl3Only;
+    maintainers = [ maintainers.raboof ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/networking/openssh/common.nix b/pkgs/tools/networking/openssh/common.nix
new file mode 100644
index 00000000000..40011a14c89
--- /dev/null
+++ b/pkgs/tools/networking/openssh/common.nix
@@ -0,0 +1,127 @@
+{ pname
+, version
+, extraDesc ? ""
+, src
+, extraPatches ? []
+, extraNativeBuildInputs ? []
+, extraMeta ? {}
+}:
+
+{ lib, stdenv
+# This *is* correct, though unusual. as a way of getting krb5-config from the
+# package without splicing See: https://github.com/NixOS/nixpkgs/pull/107606
+, pkgs
+, fetchurl
+, fetchpatch
+, zlib
+, openssl
+, libedit
+, pkg-config
+, pam
+, etcDir ? null
+, withKerberos ? !(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64)
+, libkrb5
+, libfido2
+, nixosTests
+, withFIDO ? stdenv.hostPlatform.isUnix && !stdenv.hostPlatform.isMusl
+, linkOpenssl ? true
+}:
+
+with lib;
+stdenv.mkDerivation rec {
+  inherit pname version src;
+
+  patches = [
+    ./locale_archive.patch
+
+    # See discussion in https://github.com/NixOS/nixpkgs/pull/16966
+    ./dont_create_privsep_path.patch
+  ] ++ extraPatches;
+
+  postPatch =
+    # On Hydra this makes installation fail (sometimes?),
+    # and nix store doesn't allow such fancy permission bits anyway.
+    ''
+      substituteInPlace Makefile.in --replace '$(INSTALL) -m 4711' '$(INSTALL) -m 0711'
+    '';
+
+  nativeBuildInputs = [ pkg-config ]
+    # This is not the same as the libkrb5 from the inputs! pkgs.libkrb5 is
+    # needed here to access krb5-config in order to cross compile. See:
+    # https://github.com/NixOS/nixpkgs/pull/107606
+    ++ optional withKerberos pkgs.libkrb5
+    ++ extraNativeBuildInputs;
+  buildInputs = [ zlib openssl libedit ]
+    ++ optional withFIDO libfido2
+    ++ optional withKerberos libkrb5
+    ++ optional stdenv.isLinux pam;
+
+  preConfigure = ''
+    # Setting LD causes `configure' and `make' to disagree about which linker
+    # to use: `configure' wants `gcc', but `make' wants `ld'.
+    unset LD
+  ''
+  # Upstream build system does not support static build, so we fall back
+  # on fragile patching of configure script.
+  #
+  # libedit is found by pkg-config, but without --static flag, required
+  # to get also transitive dependencies for static linkage, hence sed
+  # expression.
+  #
+  # Kerberos can be found either by krb5-config or by fall-back shell
+  # code in openssh's configure.ac. Neither of them support static
+  # build, but patching code for krb5-config is simpler, so to get it
+  # into PATH, libkrb5.dev is added into buildInputs.
+  + optionalString stdenv.hostPlatform.isStatic ''
+    sed -i "s,PKGCONFIG --libs,PKGCONFIG --libs --static,g" configure
+    sed -i 's#KRB5CONF --libs`#KRB5CONF --libs` -lkrb5support -lkeyutils#g' configure
+    sed -i 's#KRB5CONF --libs gssapi`#KRB5CONF --libs gssapi` -lkrb5support -lkeyutils#g' configure
+  '';
+
+  # I set --disable-strip because later we strip anyway. And it fails to strip
+  # properly when cross building.
+  configureFlags = [
+    "--sbindir=\${out}/bin"
+    "--localstatedir=/var"
+    "--with-pid-dir=/run"
+    "--with-mantype=man"
+    "--with-libedit=yes"
+    "--disable-strip"
+    (if stdenv.isLinux then "--with-pam" else "--without-pam")
+  ] ++ optional (etcDir != null) "--sysconfdir=${etcDir}"
+    ++ optional withFIDO "--with-security-key-builtin=yes"
+    ++ optional withKerberos (assert libkrb5 != null; "--with-kerberos5=${libkrb5}")
+    ++ optional stdenv.isDarwin "--disable-libutil"
+    ++ optional (!linkOpenssl) "--without-openssl";
+
+  buildFlags = [ "SSH_KEYSIGN=ssh-keysign" ];
+
+  enableParallelBuilding = true;
+
+  hardeningEnable = [ "pie" ];
+
+  postInstall = ''
+    # Install ssh-copy-id, it's very useful.
+    cp contrib/ssh-copy-id $out/bin/
+    chmod +x $out/bin/ssh-copy-id
+    cp contrib/ssh-copy-id.1 $out/share/man/man1/
+  '';
+
+  installTargets = [ "install-nokeys" ];
+  installFlags = [
+    "sysconfdir=\${out}/etc/ssh"
+  ];
+
+  passthru.tests = {
+    borgbackup-integration = nixosTests.borgbackup;
+  };
+
+  meta = {
+    description = "An implementation of the SSH protocol${extraDesc}";
+    homepage = "https://www.openssh.com/";
+    changelog = "https://www.openssh.com/releasenotes.html";
+    license = licenses.bsd2;
+    platforms = platforms.unix ++ platforms.windows;
+    maintainers = with maintainers; [ eelco aneeshusa ];
+  } // extraMeta;
+}
diff --git a/pkgs/tools/networking/openssh/copyid.nix b/pkgs/tools/networking/openssh/copyid.nix
new file mode 100644
index 00000000000..71baa6a23f1
--- /dev/null
+++ b/pkgs/tools/networking/openssh/copyid.nix
@@ -0,0 +1,11 @@
+{ runCommandNoCC, openssh }:
+
+runCommandNoCC "ssh-copy-id-${openssh.version}" {
+  meta = openssh.meta // {
+    description = "A tool to copy SSH public keys to a remote machine";
+    priority = (openssh.meta.priority or 0) - 1;
+  };
+} ''
+  install -Dm 755 {${openssh},$out}/bin/ssh-copy-id
+  install -Dm 644 {${openssh},$out}/share/man/man1/ssh-copy-id.1.gz
+''
diff --git a/pkgs/tools/networking/openssh/default.nix b/pkgs/tools/networking/openssh/default.nix
index 1748a2d21d0..4cc943fc75f 100644
--- a/pkgs/tools/networking/openssh/default.nix
+++ b/pkgs/tools/networking/openssh/default.nix
@@ -1,119 +1,71 @@
-{ stdenv
-, fetchurl
-, fetchpatch
-, zlib
-, openssl
-, libedit
-, pkgconfig
-, pam
-, autoreconfHook
-, etcDir ? null
-, hpnSupport ? false
-, withKerberos ? true
-, withGssapiPatches ? false
-, kerberos
-, libfido2
-, withFIDO ? stdenv.hostPlatform.isUnix && !stdenv.hostPlatform.isMusl
-, linkOpenssl ? true
-}:
-
+{ callPackage, fetchurl, fetchpatch, autoreconfHook }:
 let
+  common = opts: callPackage (import ./common.nix opts) {};
+in {
+
+  openssh = common rec {
+    pname = "openssh";
+    version = "8.6p1";
 
-  version = "8.3p1";
+    src = fetchurl {
+      url = "mirror://openbsd/OpenSSH/portable/openssh-${version}.tar.gz";
+      sha256 = "1bnpivgk98h2f9afpp88jv6g9ps83vnpxd031n2jqxi12vdf9rn3";
+    };
 
-  # **please** update this patch when you update to a new openssh release.
-  gssapiPatch = fetchpatch {
-    name = "openssh-gssapi.patch";
-    url = "https://salsa.debian.org/ssh-team/openssh/raw/debian/1%25${version}-1/debian/patches/gssapi.patch";
-    sha256 = "0j22ccg6msyi88mpsb6x0il5cg8v2b7qdah57ninbwx5isyld80l";
+    extraPatches = [ ./ssh-keysign-8.5.patch ];
   };
 
-in
-with stdenv.lib;
-stdenv.mkDerivation rec {
-  pname = "openssh";
-  inherit version;
-
-  src = if hpnSupport then
-      fetchurl {
-        url = "https://github.com/rapier1/openssh-portable/archive/hpn-KitchenSink-${replaceStrings [ "." "p" ] [ "_" "_P" ] version}.tar.gz";
-        sha256 = "0lwr7xzhy8m4y0vzi1a78ddhag3qp6cba0c37mnhivbhb67dkywp";
-      }
-    else
-      fetchurl {
-        url = "mirror://openbsd/OpenSSH/portable/${pname}-${version}.tar.gz";
-        sha256 = "1cl74ghi9y21dc3f4xa0qamb7dhwacbynh1ks9syprrg8zhgpgpj";
-      };
-
-  patches =
-    [
-      ./locale_archive.patch
-
-      # See discussion in https://github.com/NixOS/nixpkgs/pull/16966
-      ./dont_create_privsep_path.patch
-
-      ./ssh-keysign.patch
-    ]
-    ++ optional withGssapiPatches (assert withKerberos; gssapiPatch);
-
-  postPatch =
-    # On Hydra this makes installation fail (sometimes?),
-    # and nix store doesn't allow such fancy permission bits anyway.
-    ''
-      substituteInPlace Makefile.in --replace '$(INSTALL) -m 4711' '$(INSTALL) -m 0711'
-    '';
-
-  nativeBuildInputs = [ pkgconfig ] ++ optional (hpnSupport || withGssapiPatches) autoreconfHook;
-  buildInputs = [ zlib openssl libedit pam ]
-    ++ optional withFIDO libfido2
-    ++ optional withKerberos kerberos;
-
-  preConfigure = ''
-    # Setting LD causes `configure' and `make' to disagree about which linker
-    # to use: `configure' wants `gcc', but `make' wants `ld'.
-    unset LD
-  '';
-
-  # I set --disable-strip because later we strip anyway. And it fails to strip
-  # properly when cross building.
-  configureFlags = [
-    "--sbindir=\${out}/bin"
-    "--localstatedir=/var"
-    "--with-pid-dir=/run"
-    "--with-mantype=man"
-    "--with-libedit=yes"
-    "--disable-strip"
-    (if pam != null then "--with-pam" else "--without-pam")
-  ] ++ optional (etcDir != null) "--sysconfdir=${etcDir}"
-    ++ optional withFIDO "--with-security-key-builtin=yes"
-    ++ optional withKerberos (assert kerberos != null; "--with-kerberos5=${kerberos}")
-    ++ optional stdenv.isDarwin "--disable-libutil"
-    ++ optional (!linkOpenssl) "--without-openssl";
-
-  buildFlags = [ "SSH_KEYSIGN=ssh-keysign" ];
-
-  enableParallelBuilding = true;
-
-  hardeningEnable = [ "pie" ];
-
-  postInstall = ''
-    # Install ssh-copy-id, it's very useful.
-    cp contrib/ssh-copy-id $out/bin/
-    chmod +x $out/bin/ssh-copy-id
-    cp contrib/ssh-copy-id.1 $out/share/man/man1/
-  '';
-
-  installTargets = [ "install-nokeys" ];
-  installFlags = [
-    "sysconfdir=\${out}/etc/ssh"
-  ];
-
-  meta = {
-    description = "An implementation of the SSH protocol";
-    homepage = "https://www.openssh.com/";
-    changelog = "https://www.openssh.com/releasenotes.html";
-    license = stdenv.lib.licenses.bsd2;
-    platforms = platforms.unix ++ platforms.windows;
-    maintainers = with maintainers; [ eelco aneeshusa ];
+  openssh_hpn = common rec {
+    pname = "openssh-with-hpn";
+    version = "8.4p1";
+    extraDesc = " with high performance networking patches";
+
+    src = fetchurl {
+      url = "https://github.com/rapier1/openssh-portable/archive/hpn-KitchenSink-${builtins.replaceStrings [ "." "p" ] [ "_" "_P" ] version}.tar.gz";
+      sha256 = "1x2afjy1isslbg7qlvhhs4zhj2c8q2h1ljz0fc5b4h9pqcm9j540";
+    };
+
+    extraPatches = [
+      ./ssh-keysign-8.4.patch
+
+      # See https://github.com/openssh/openssh-portable/pull/206
+      ./ssh-copy-id-fix-eof.patch
+    ];
+
+    extraNativeBuildInputs = [ autoreconfHook ];
+
+    extraMeta.knownVulnerabilities = [
+      "CVE-2021-28041"
+    ];
+  };
+
+  openssh_gssapi = common rec {
+    pname = "openssh-with-gssapi";
+    version = "8.4p1";
+    extraDesc = " with GSSAPI support";
+
+    src = fetchurl {
+      url = "mirror://openbsd/OpenSSH/portable/openssh-${version}.tar.gz";
+      sha256 = "091b3pxdlj47scxx6kkf4agkx8c8sdacdxx8m1dw1cby80pd40as";
+    };
+
+    extraPatches = [
+      ./ssh-keysign-8.4.patch
+
+      # See https://github.com/openssh/openssh-portable/pull/206
+      ./ssh-copy-id-fix-eof.patch
+
+      (fetchpatch {
+        name = "openssh-gssapi.patch";
+        url = "https://salsa.debian.org/ssh-team/openssh/raw/debian/1%25${version}-2/debian/patches/gssapi.patch";
+        sha256 = "1z1ckzimlkm1dmr9f5fqjnjg28gsqcwx6xka0klak857548d2lp2";
+      })
+    ];
+
+    extraNativeBuildInputs = [ autoreconfHook ];
+
+    extraMeta.knownVulnerabilities = [
+      "CVE-2021-28041"
+    ];
   };
 }
diff --git a/pkgs/tools/networking/openssh/ssh-copy-id-fix-eof.patch b/pkgs/tools/networking/openssh/ssh-copy-id-fix-eof.patch
new file mode 100644
index 00000000000..4ba2b562f55
--- /dev/null
+++ b/pkgs/tools/networking/openssh/ssh-copy-id-fix-eof.patch
@@ -0,0 +1,21 @@
+diff --git a/contrib/ssh-copy-id b/contrib/ssh-copy-id
+index 392f64f..a769077 100644
+--- a/contrib/ssh-copy-id
++++ b/contrib/ssh-copy-id
+@@ -247,7 +247,7 @@ installkeys_sh() {
+   #    the -z `tail ...` checks for a trailing newline. The echo adds one if was missing
+   #    the cat adds the keys we're getting via STDIN
+   #    and if available restorecon is used to restore the SELinux context
+-  INSTALLKEYS_SH=$(tr '\t\n' ' ' <<-EOF)
++  INSTALLKEYS_SH=$(tr '\t\n' ' ' <<-EOF
+ 	cd;
+ 	umask 077;
+ 	mkdir -p $(dirname "${AUTH_KEY_FILE}") &&
+@@ -258,6 +258,7 @@ installkeys_sh() {
+ 	  restorecon -F .ssh ${AUTH_KEY_FILE};
+ 	fi
+ EOF
++  )
+ 
+   # to defend against quirky remote shells: use 'exec sh -c' to get POSIX;
+   printf "exec sh -c '%s'" "${INSTALLKEYS_SH}"
diff --git a/pkgs/tools/networking/openssh/ssh-keysign.patch b/pkgs/tools/networking/openssh/ssh-keysign-8.4.patch
index 7258f4a4db1..7258f4a4db1 100644
--- a/pkgs/tools/networking/openssh/ssh-keysign.patch
+++ b/pkgs/tools/networking/openssh/ssh-keysign-8.4.patch
diff --git a/pkgs/tools/networking/openssh/ssh-keysign-8.5.patch b/pkgs/tools/networking/openssh/ssh-keysign-8.5.patch
new file mode 100644
index 00000000000..67c45b6b7d8
--- /dev/null
+++ b/pkgs/tools/networking/openssh/ssh-keysign-8.5.patch
@@ -0,0 +1,24 @@
+diff --git a/pathnames.h b/pathnames.h
+index cb44caa4..354fdf05 100644
+--- a/pathnames.h
++++ b/pathnames.h
+@@ -124,7 +124,7 @@
+ 
+ /* Location of ssh-keysign for hostbased authentication */
+ #ifndef _PATH_SSH_KEY_SIGN
+-#define _PATH_SSH_KEY_SIGN		"/usr/libexec/ssh-keysign"
++#define _PATH_SSH_KEY_SIGN		"ssh-keysign"
+ #endif
+ 
+ /* Location of ssh-pkcs11-helper to support keys in tokens */
+--- a/sshconnect2.c
++++ b/sshconnect2.c
+@@ -2021,7 +2021,7 @@
+ 
+ 		debug3_f("[child] pid=%ld, exec %s",
+ 		    (long)getpid(), _PATH_SSH_KEY_SIGN);
+-		execl(_PATH_SSH_KEY_SIGN, _PATH_SSH_KEY_SIGN, (char *)NULL);
++		execlp(_PATH_SSH_KEY_SIGN, _PATH_SSH_KEY_SIGN, (char *)NULL);
+ 		fatal_f("exec(%s): %s", _PATH_SSH_KEY_SIGN,
+ 		    strerror(errno));
+ 	}
diff --git a/pkgs/tools/networking/openvpn/default.nix b/pkgs/tools/networking/openvpn/default.nix
index c5a15c2f87a..46375b60fe4 100644
--- a/pkgs/tools/networking/openvpn/default.nix
+++ b/pkgs/tools/networking/openvpn/default.nix
@@ -1,14 +1,20 @@
-{ stdenv, fetchurl, fetchpatch, pkgconfig, makeWrapper
-, iproute, lzo, openssl, pam
-, useSystemd ? stdenv.isLinux, systemd ? null, utillinux ? null
-, pkcs11Support ? false, pkcs11helper ? null,
+{ lib, stdenv
+, fetchurl
+, pkg-config
+, makeWrapper
+, runtimeShell
+, iproute2
+, lzo
+, openssl
+, pam
+, useSystemd ? stdenv.isLinux
+, systemd
+, util-linux
+, pkcs11Support ? false
+, pkcs11helper
 }:
 
-assert useSystemd -> (systemd != null);
-assert pkcs11Support -> (pkcs11helper != null);
-
-with stdenv.lib;
-
+with lib;
 let
   # Check if the script needs to have other binaries wrapped when changing this.
   update-resolved = fetchurl {
@@ -16,49 +22,68 @@ let
     sha256 = "021qzv1k0zxgv1rmyfpqj3zlzqr28xa7zff1n7vrbjk36ijylpsc";
   };
 
-in stdenv.mkDerivation rec {
-  pname = "openvpn";
-  version = "2.4.9";
+  generic = { version, sha256 }:
+    let
+      withIpRoute = stdenv.isLinux && (versionOlder version "2.5");
+    in
+    stdenv.mkDerivation
+      rec {
+        pname = "openvpn";
+        inherit version;
 
-  src = fetchurl {
-    url = "https://swupdate.openvpn.net/community/releases/${pname}-${version}.tar.xz";
-    sha256 = "1qpbllwlha7cffsd5dlddb8rl22g9rar5zflkz1wrcllhvfkl7v4";
-  };
+        src = fetchurl {
+          url = "https://swupdate.openvpn.net/community/releases/${pname}-${version}.tar.xz";
+          inherit sha256;
+        };
 
-  nativeBuildInputs = [ makeWrapper pkgconfig ];
+        nativeBuildInputs = [ makeWrapper pkg-config ];
 
-  buildInputs = [ lzo openssl ]
-                  ++ optionals stdenv.isLinux [ pam iproute ]
-                  ++ optional useSystemd systemd
-                  ++ optional pkcs11Support pkcs11helper;
+        buildInputs = [ lzo openssl ]
+          ++ optional stdenv.isLinux pam
+          ++ optional withIpRoute iproute2
+          ++ optional useSystemd systemd
+          ++ optional pkcs11Support pkcs11helper;
 
-  configureFlags = optionals stdenv.isLinux [
-    "--enable-iproute2"
-    "IPROUTE=${iproute}/sbin/ip" ]
-    ++ optional useSystemd "--enable-systemd"
-    ++ optional pkcs11Support "--enable-pkcs11"
-    ++ optional stdenv.isDarwin "--disable-plugin-auth-pam";
+        configureFlags = optionals withIpRoute [
+          "--enable-iproute2"
+          "IPROUTE=${iproute2}/sbin/ip"
+        ]
+        ++ optional useSystemd "--enable-systemd"
+        ++ optional pkcs11Support "--enable-pkcs11"
+        ++ optional stdenv.isDarwin "--disable-plugin-auth-pam";
 
-  postInstall = ''
-    mkdir -p $out/share/doc/openvpn/examples
-    cp -r sample/sample-config-files/ $out/share/doc/openvpn/examples
-    cp -r sample/sample-keys/ $out/share/doc/openvpn/examples
-    cp -r sample/sample-scripts/ $out/share/doc/openvpn/examples
-  '' + optionalString useSystemd ''
-    install -Dm555 ${update-resolved} $out/libexec/update-systemd-resolved
-    wrapProgram $out/libexec/update-systemd-resolved \
-      --prefix PATH : ${makeBinPath [ stdenv.shell iproute systemd utillinux ]}
-  '';
+        postInstall = ''
+          mkdir -p $out/share/doc/openvpn/examples
+          cp -r sample/sample-config-files/ $out/share/doc/openvpn/examples
+          cp -r sample/sample-keys/ $out/share/doc/openvpn/examples
+          cp -r sample/sample-scripts/ $out/share/doc/openvpn/examples
+        '' + optionalString useSystemd ''
+          install -Dm555 ${update-resolved} $out/libexec/update-systemd-resolved
+          wrapProgram $out/libexec/update-systemd-resolved \
+            --prefix PATH : ${makeBinPath [ runtimeShell iproute2 systemd util-linux ]}
+        '';
 
-  enableParallelBuilding = true;
+        enableParallelBuilding = true;
+
+        meta = with lib; {
+          description = "A robust and highly flexible tunneling application";
+          downloadPage = "https://openvpn.net/community-downloads/";
+          homepage = "https://openvpn.net/";
+          license = licenses.gpl2;
+          maintainers = with maintainers; [ viric peterhoeg ];
+          platforms = platforms.unix;
+        };
+      };
+
+in
+{
+  openvpn_24 = generic {
+    version = "2.4.11";
+    sha256 = "06s4m0xvixjhd3azrzbsf4j86kah4xwr2jp6cmcpc7db33rfyyg5";
+  };
 
-  meta = with stdenv.lib; {
-    description = "A robust and highly flexible tunneling application";
-    downloadPage = "https://openvpn.net/community-downloads/";
-    homepage = "https://openvpn.net/";
-    license = licenses.gpl2;
-    maintainers = with maintainers; [ viric ];
-    platforms = platforms.unix;
-    updateWalker = true;
+  openvpn = generic {
+    version = "2.5.2";
+    sha256 = "sha256-sSdDg2kB82Xvr4KrJJOWfhshwh60POmo2hACoXycHcg=";
   };
 }
diff --git a/pkgs/tools/networking/openvpn/openvpn-auth-ldap.nix b/pkgs/tools/networking/openvpn/openvpn-auth-ldap.nix
index bb06479be30..70dacddafc3 100644
--- a/pkgs/tools/networking/openvpn/openvpn-auth-ldap.nix
+++ b/pkgs/tools/networking/openvpn/openvpn-auth-ldap.nix
@@ -1,65 +1,50 @@
-{ stdenv, lib, fetchFromGitHub, fetchpatch,
-  autoreconfHook, re2c, openldap, openvpn, gnustep, check
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoreconfHook
+, gnustep
+, re2c
+, openldap
+, openssl
+, openvpn
 }:
 
-let
-  srcName = "openvpn-auth-ldap";
-  srcVersion = "2.0.3";
-  debianRev = "6.1";
-
-  fetchPatchFromDebian =
-    {patch, sha256}:
-    fetchpatch {
-      inherit sha256;
-      url = "http://sources.debian.net/data/main/o/${srcName}/${srcVersion}-${debianRev}/debian/patches/${patch}";
-    };
-in
-
 stdenv.mkDerivation rec {
-  name = "${srcName}-${version}";
-  version = "${srcVersion}+deb${debianRev}";
+  pname = "openvpn-auth-ldap";
+  version = "2.0.4";
 
   src = fetchFromGitHub {
     owner = "threerings";
-    repo = srcName;
-    rev = "auth-ldap-${srcVersion}";
-    sha256 = "1v635ylzf5x3l3lirf3n6173q1w8g0ssjjkf27qqw98c3iqp63sq";
+    repo = "openvpn-auth-ldap";
+    rev = "auth-ldap-${version}";
+    sha256 = "1j30sygj8nm8wjqxzpb7pfzr3dxqxggswzxd7z5yk7y04c0yp1hb";
   };
 
-  patches = map fetchPatchFromDebian [
-    {patch = "STARTTLS_before_auth.patch";
-     sha256 = "02kky73mgx9jf16lpabppl271zyjn4a1160k8b6a0fax5ic8gbwk";}
-    {patch = "gobjc_4.7_runtime.patch";
-     sha256 = "0ljmdn70g5xp4kjcv59wg2wnqaifjdfdv1wlj356d10a7fzvxc76";}
-    {patch = "openvpn_ldap_simpler_add_handler_4";
-     sha256 = "0nha9mazp3dywbs1ywj8xi4ahzsjsasyrcic87v8c0x2nwl9kaa0";}
-    {patch = "auth-ldap-gnustep.patch";
-     sha256 = "053jni1s3pacpi2s43dkmk95j79ifh8rybjly13yy2dqffbasr31";}
-  ];
-
   nativeBuildInputs = [
     autoreconfHook
-  ];
-
-  buildInputs = [
-    check
     gnustep.base
     gnustep.libobjc
     gnustep.make
+    re2c
+  ];
+
+  buildInputs = [
     openldap
+    openssl
     openvpn
-    re2c
   ];
 
   configureFlags = [
-    "--with-objc-runtime=modern"
+    "--with-objc-runtime=GNU"
     "--with-openvpn=${openvpn}/include"
     "--libdir=$(out)/lib/openvpn"
   ];
 
+  doCheck = true;
+
   preInstall = ''
     mkdir -p $out/lib/openvpn $out/share/doc/openvpn/examples
-    cp README $out/share/doc/openvpn/
+    cp README.md $out/share/doc/openvpn/
     cp auth-ldap.conf $out/share/doc/openvpn/examples/
   '';
 
diff --git a/pkgs/tools/networking/openvpn/openvpn_learnaddress.nix b/pkgs/tools/networking/openvpn/openvpn_learnaddress.nix
index d73b8e911b9..2120679fef3 100644
--- a/pkgs/tools/networking/openvpn/openvpn_learnaddress.nix
+++ b/pkgs/tools/networking/openvpn/openvpn_learnaddress.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, makeWrapper,  coreutils, gawk, utillinux }:
+{ lib, stdenv, fetchgit, makeWrapper,  coreutils, gawk, util-linux }:
 
 stdenv.mkDerivation {
   name = "openvpn-learnaddress-19b03c3";
@@ -9,19 +9,20 @@ stdenv.mkDerivation {
     sha256 = "16pcyvyhwsx34i0cjkkx906lmrwdd9gvznvqdwlad4ha8l8f8z42";
   };
 
-  buildInputs = [ makeWrapper coreutils gawk utillinux ];
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ coreutils gawk util-linux ];
 
   installPhase = ''
     install -Dm555 ovpn-learnaddress $out/libexec/openvpn/openvpn-learnaddress
 
     wrapProgram $out/libexec/openvpn/openvpn-learnaddress \
-        --prefix PATH : ${stdenv.lib.makeBinPath [ coreutils gawk utillinux ]}
+        --prefix PATH : ${lib.makeBinPath [ coreutils gawk util-linux ]}
   '';
 
   meta = {
     description = "Openvpn learn-address script to manage a hosts-like file";
     homepage = "https://gist.github.com/offlinehacker/4058733/";
-    maintainers = [ stdenv.lib.maintainers.offline ];
-    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ lib.maintainers.offline ];
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/openvpn/update-resolv-conf.nix b/pkgs/tools/networking/openvpn/update-resolv-conf.nix
index 76d04e6b685..d71ab72901b 100644
--- a/pkgs/tools/networking/openvpn/update-resolv-conf.nix
+++ b/pkgs/tools/networking/openvpn/update-resolv-conf.nix
@@ -24,7 +24,7 @@ in stdenv.mkDerivation {
     done
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Script to update your /etc/resolv.conf with DNS settings that come from the received push dhcp-options";
     homepage = "https://github.com/masterkorp/openvpn-update-resolv-conf/";
     maintainers = with maintainers; [ abbradar ];
diff --git a/pkgs/tools/networking/openvpn/update-systemd-resolved.nix b/pkgs/tools/networking/openvpn/update-systemd-resolved.nix
index 4d18372363b..5a34d5a7ffe 100644
--- a/pkgs/tools/networking/openvpn/update-systemd-resolved.nix
+++ b/pkgs/tools/networking/openvpn/update-systemd-resolved.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, fetchFromGitHub
 , makeWrapper
-, iproute, systemd, coreutils, utillinux }:
+, iproute2, systemd, coreutils, util-linux }:
 
 stdenv.mkDerivation rec {
   pname = "update-systemd-resolved";
@@ -21,10 +21,10 @@ stdenv.mkDerivation rec {
 
   installPhase = ''
     wrapProgram $out/libexec/openvpn/update-systemd-resolved \
-      --prefix PATH : ${lib.makeBinPath [ iproute systemd coreutils utillinux ]}
+      --prefix PATH : ${lib.makeBinPath [ iproute2 systemd coreutils util-linux ]}
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Helper script for OpenVPN to directly update the DNS settings of a link through systemd-resolved via DBus";
     homepage = "https://github.com/jonathanio/update-systemd-resolved";
     maintainers = with maintainers; [ eadwu ];
diff --git a/pkgs/tools/networking/p2p/amule/default.nix b/pkgs/tools/networking/p2p/amule/default.nix
index 264c6fd4e16..96bf7656e8a 100644
--- a/pkgs/tools/networking/p2p/amule/default.nix
+++ b/pkgs/tools/networking/p2p/amule/default.nix
@@ -2,69 +2,46 @@
 , enableDaemon ? false # build amule daemon
 , httpServer ? false # build web interface for the daemon
 , client ? false # build amule remote gui
-, fetchFromGitHub, fetchpatch, stdenv, lib, zlib, wxGTK, perl, cryptopp, libupnp, gettext, libpng ? null
-, autoreconfHook, pkgconfig, makeWrapper, libX11 ? null }:
-
-assert httpServer -> libpng != null;
-assert client -> libX11 != null;
+, fetchFromGitHub
+, stdenv
+, lib
+, cmake
+, zlib
+, wxGTK
+, perl
+, cryptopp
+, libupnp
+, gettext
+, libpng
+, autoreconfHook
+, pkg-config
+, makeWrapper
+, libX11
+}:
 
 stdenv.mkDerivation rec {
   pname = "amule";
-  version = "2.3.2";
+  version = "2.3.3";
 
   src = fetchFromGitHub {
     owner = "amule-project";
     repo = "amule";
     rev = version;
-    sha256 = "010wxm6g9f92x6fympj501zbnjka32rzbx0sk3a2y4zpih5d2nsn";
+    sha256 = "1nm4vxgmisn1b6l3drmz0q04x067j2i8lw5rnf0acaapwlp8qwvi";
   };
 
-  patches = [
-    (fetchpatch {
-      url = "https://patch-diff.githubusercontent.com/raw/amule-project/amule/pull/135.patch";
-      sha256 = "1n24r1j28083b8ipbnh1nf6i4j6vx59pdkfl1c0g6bb4psx9wvvi";
-      name = "libupnp_18.patch";
-    })
-    (fetchpatch {
-      name = "amule-cryptopp_6.patch";
-      url = "https://github.com/amule-project/amule/commit/27c13f3e622b8a3eaaa05bb62b0149604bdcc9e8.patch";
-      sha256 = "0kq095gi3xl665wr864zlhp5f3blk75pr725yany8ilzcwrzdrnm";
-    })
-  ];
-
-  postPatch = ''
-    substituteInPlace src/libs/ec/file_generator.pl \
-      --replace /usr/bin/perl ${perl}/bin/perl
-
-    # autotools expects these to be in the root
-    cp docs/{AUTHORS,README} .
-    cp docs/Changelog ./ChangeLog
-    cp docs/Changelog ./NEWS
-  '';
-
-  preAutoreconf = ''
-    pushd src/pixmaps/flags_xpm >/dev/null
-    ./makeflags.sh
-    popd >/dev/null
-  '';
-
-  nativeBuildInputs = [ autoreconfHook gettext makeWrapper pkgconfig ];
+  nativeBuildInputs = [ cmake gettext makeWrapper pkg-config ];
 
   buildInputs = [
-    zlib wxGTK perl cryptopp libupnp
+    zlib wxGTK perl cryptopp.dev libupnp
   ] ++ lib.optional httpServer libpng
     ++ lib.optional client libX11;
 
-  enableParallelBuilding = true;
-
-  configureFlags = [
-    "--with-crypto-prefix=${cryptopp}"
-    "--disable-debug"
-    "--enable-optimize"
-    (lib.enableFeature monolithic   "monolithic")
-    (lib.enableFeature enableDaemon "amule-daemon")
-    (lib.enableFeature client       "amule-gui")
-    (lib.enableFeature httpServer   "webserver")
+  cmakeFlags = [
+    "-DBUILD_MONOLITHIC=${if monolithic then "ON" else "OFF"}"
+    "-DBUILD_DAEMON=${if enableDaemon then "ON" else "OFF"}"
+    "-DBUILD_REMOTEGUI=${if client then "ON" else "OFF"}"
+    "-DBUILD_WEBSERVER=${if httpServer then "ON" else "OFF"}"
   ];
 
   # aMule will try to `dlopen' libupnp and libixml, so help it
@@ -91,5 +68,7 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ phreedom ];
     platforms = platforms.unix;
+    # cmake fails: Cannot specify link libraries for target "wxWidgets::ADV" which is not built by this project.
+    broken = enableDaemon;
   };
 }
diff --git a/pkgs/tools/networking/p2p/azureus/default.nix b/pkgs/tools/networking/p2p/azureus/default.nix
index 03737f9af27..1c72be0c510 100644
--- a/pkgs/tools/networking/p2p/azureus/default.nix
+++ b/pkgs/tools/networking/p2p/azureus/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, jdk, swt}:
+{lib, stdenv, fetchurl, jdk, swt}:
 
 stdenv.mkDerivation {
   name = "azureus-2.3.0.6";
@@ -7,10 +7,10 @@ stdenv.mkDerivation {
     url = "http://tarballs.nixos.org/Azureus2.3.0.6.jar";
     sha256 = "1hwrh3n0b0jbpsdk15zrs7pw175418phhmg6pn4xi1bvilxq1wrd";
   };
-#  buildInputs = [unzip];
+
   inherit jdk swt;
 
   meta = {
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/p2p/gtk-gnutella/default.nix b/pkgs/tools/networking/p2p/gtk-gnutella/default.nix
index 710f7dedb99..8d8069bec29 100644
--- a/pkgs/tools/networking/p2p/gtk-gnutella/default.nix
+++ b/pkgs/tools/networking/p2p/gtk-gnutella/default.nix
@@ -1,8 +1,8 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , fetchpatch
 , bison
-, pkgconfig
+, pkg-config
 , gettext
 , desktop-file-utils
 , glib
@@ -17,22 +17,20 @@
 
 stdenv.mkDerivation rec {
   pname = "gtk-gnutella";
-  # NOTE: Please remove hardeningDisable on the next release, see:
-  # https://sourceforge.net/p/gtk-gnutella/bugs/555/#5c19
-  version = "1.2.0";
+  version = "1.2.1";
 
   src = fetchFromGitHub {
     owner = "gtk-gnutella";
     repo = "gtk-gnutella";
     rev = "v${version}";
-    sha256 = "0j596dpajk68bkry0gmpqawsi61rphfciy4vji1dh890jyhkhdgy";
+    sha256 = "sha256-Hk5KPXSJ2s0J/stW3Qgvu6p6RG5VCvuWx1UlMR+3JO4=";
   };
 
   nativeBuildInputs = [
     bison
     desktop-file-utils
     gettext
-    pkgconfig
+    pkg-config
   ];
   buildInputs = [
     glib
@@ -42,7 +40,7 @@ stdenv.mkDerivation rec {
     zlib
   ]
   ++
-    stdenv.lib.optionals (enableGui) [ gtk2 ]
+    lib.optionals (enableGui) [ gtk2 ]
   ;
 
   configureScript = "./build.sh";
@@ -51,18 +49,16 @@ stdenv.mkDerivation rec {
     # See https://sourceforge.net/p/gtk-gnutella/bugs/555/
     "--disable-malloc"
   ]
-    ++ stdenv.lib.optionals (!enableGui) [ "--topless" ]
+    ++ lib.optionals (!enableGui) [ "--topless" ]
   ;
 
-  hardeningDisable = [ "bindnow" "fortify" "pic" "relro" ];
-
   enableParallelBuilding = true;
 
   postInstall = ''
     install -Dm0444 src/${pname}.man $out/share/man/man1/${pname}.1
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A GTK Gnutella client, optimized for speed and scalability";
     homepage = "http://gtk-gnutella.sourceforge.net/"; # Code: https://github.com/gtk-gnutella/gtk-gnutella
     changelog = "https://raw.githubusercontent.com/gtk-gnutella/gtk-gnutella/v${version}/ChangeLog";
diff --git a/pkgs/tools/networking/p2p/libtorrent-jesec/default.nix b/pkgs/tools/networking/p2p/libtorrent-jesec/default.nix
new file mode 100644
index 00000000000..0fd16f4799d
--- /dev/null
+++ b/pkgs/tools/networking/p2p/libtorrent-jesec/default.nix
@@ -0,0 +1,38 @@
+{ lib, stdenv, fetchFromGitHub, fetchpatch, cmake, gtest, openssl, zlib }:
+
+stdenv.mkDerivation rec {
+  pname = "libtorrent-jesec";
+  version = "0.13.8-r2";
+
+  src = fetchFromGitHub {
+    owner = "jesec";
+    repo = "libtorrent";
+    rev = "v${version}";
+    sha256 = "sha256-eIXVTbVOCRHcxSsLPvIm9F60t2upk5ORpDSOOYqTCJ4=";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "test-fallback";
+      url = "https://github.com/jesec/libtorrent/commit/a38205ce06aadc9908478ec3a9c8aefd9be06344.patch";
+      sha256 = "sha256-2TyQ9zYWZw6bzAfVZzTOQSkfIZnDU8ykgpRAFXscEH0=";
+    })
+  ];
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ openssl zlib ];
+
+  doCheck = true;
+  preCheck = ''
+    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}$PWD
+  '';
+  checkInputs = [ gtest ];
+
+  meta = with lib; {
+    description = "A BitTorrent library written in C++ for *nix, with focus on high performance and good code (jesec's fork)";
+    homepage = "https://github.com/jesec/libtorrent";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ winterqt ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/networking/p2p/libtorrent/default.nix b/pkgs/tools/networking/p2p/libtorrent/default.nix
index f750e3b1bfe..4d3ccf5fc15 100644
--- a/pkgs/tools/networking/p2p/libtorrent/default.nix
+++ b/pkgs/tools/networking/p2p/libtorrent/default.nix
@@ -1,6 +1,6 @@
 # NOTE: this is rakshava's version of libtorrent, used mainly by rtorrent
 # This is NOT libtorrent-rasterbar, used by Deluge, qbitttorent, and others
-{ stdenv, fetchFromGitHub, pkgconfig, autoreconfHook
+{ lib, stdenv, fetchFromGitHub, pkg-config, autoreconfHook
 , cppunit, openssl, libsigcxx, zlib
 }:
 
@@ -15,10 +15,10 @@ stdenv.mkDerivation rec {
     sha256 = "1h5y6ab3gs20yyprdfwcw8fh1c6czs4yrdj0kf54d2vp9qwz685r";
   };
 
-  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+  nativeBuildInputs = [ pkg-config autoreconfHook ];
   buildInputs = [ cppunit openssl libsigcxx zlib ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/rakshasa/libtorrent";
     description = "A BitTorrent library written in C++ for *nix, with focus on high performance and good code";
 
diff --git a/pkgs/tools/networking/p2p/rtorrent-jesec/default.nix b/pkgs/tools/networking/p2p/rtorrent-jesec/default.nix
new file mode 100644
index 00000000000..eeff6e91399
--- /dev/null
+++ b/pkgs/tools/networking/p2p/rtorrent-jesec/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, gtest
+, libtorrent-jesec
+, curl
+, ncurses
+, xmlrpc_c
+, nlohmann_json
+, xmlRpcSupport ? true
+, jsonRpcSupport ? true
+}:
+let
+  inherit (lib) optional;
+in
+stdenv.mkDerivation rec {
+  pname = "rtorrent-jesec";
+  version = "0.9.8-r14";
+
+  src = fetchFromGitHub {
+    owner = "jesec";
+    repo = "rtorrent";
+    rev = "v${version}";
+    sha256 = "sha256-AbjzNIha3MkCZi6MuyUfPx9r3zeXeTUzkbD7uHB85lo=";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libtorrent-jesec curl ncurses ]
+    ++ optional xmlRpcSupport xmlrpc_c
+    ++ optional jsonRpcSupport nlohmann_json;
+
+  cmakeFlags = [ "-DUSE_RUNTIME_CA_DETECTION=NO" ]
+    ++ optional (!xmlRpcSupport) "-DUSE_XMLRPC=NO"
+    ++ optional (!jsonRpcSupport) "-DUSE_JSONRPC=NO";
+
+  doCheck = true;
+  checkInputs = [ gtest ];
+
+  prePatch = ''
+    substituteInPlace src/main.cc \
+      --replace "/etc/rtorrent/rtorrent.rc" "${placeholder "out"}/etc/rtorrent/rtorrent.rc"
+  '';
+
+  postFixup = ''
+    mkdir -p $out/etc/rtorrent
+    cp $src/doc/rtorrent.rc $out/etc/rtorrent/rtorrent.rc
+  '';
+
+  meta = with lib; {
+    description = "An ncurses client for libtorrent, ideal for use with screen, tmux, or dtach (jesec's fork)";
+    homepage = "https://github.com/jesec/rtorrent";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ winterqt ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/networking/p2p/rtorrent/default.nix b/pkgs/tools/networking/p2p/rtorrent/default.nix
index b55c673c058..20f9cec6f5f 100644
--- a/pkgs/tools/networking/p2p/rtorrent/default.nix
+++ b/pkgs/tools/networking/p2p/rtorrent/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fetchFromGitHub, pkgconfig
+{ lib, stdenv, fetchurl, fetchFromGitHub, pkg-config
 , libtool, autoconf, automake, cppunit
 , libtorrent, ncurses, libsigcxx, curl
 , zlib, openssl, xmlrpc_c
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
     sha256 = "0hcaf1brk402caa7hhlb2r1c93mjzxkm8gb19xfl33gkp3jpf372";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [
     libtool autoconf automake cppunit
     libtorrent ncurses libsigcxx curl zlib openssl xmlrpc_c
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
 
   # Optional patch adds support for custom configurable colors
   # https://github.com/Chlorm/chlorm_overlay/blob/master/net-p2p/rtorrent/README.md
-  patches = stdenv.lib.optional colorSupport (fetchurl {
+  patches = lib.optional colorSupport (fetchurl {
     url = "https://gist.githubusercontent.com/codyopel/a816c2993f8013b5f4d6/raw/b952b32da1dcf14c61820dfcf7df00bc8918fec4/rtorrent-color.patch";
     sha256 = "00gcl7yq6261rrfzpz2k8bd7mffwya0ifji1xqcvhfw50syk8965";
   });
@@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
     mv doc/rtorrent.rc $out/share/doc/rtorrent/rtorrent.rc
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://rakshasa.github.io/rtorrent/";
     description = "An ncurses client for libtorrent, ideal for use with screen, tmux, or dtach";
 
diff --git a/pkgs/tools/networking/p2p/seeks/default.nix b/pkgs/tools/networking/p2p/seeks/default.nix
deleted file mode 100644
index eccf38f39fd..00000000000
--- a/pkgs/tools/networking/p2p/seeks/default.nix
+++ /dev/null
@@ -1,69 +0,0 @@
-{ fetchgit, stdenv, zlib, bzip2, docbook2x, pcre, curl, libxml2, libevent, perl
-, pkgconfig, protobuf, tokyocabinet, tokyotyrant, opencv, autoconf, automake
-, libtool, seeks_confDir ? ""
-}:
-
-stdenv.mkDerivation {
-  name = "seeks-0.4.1";
-
-  src = fetchgit {
-    url = "git://github.com/beniz/seeks.git";
-    rev = "1168b3a2f3111c3fca31dd961135194c3e8df5fd";
-    sha256 = "18s2pxal9a2aayv63hc19vnkx5a5y9rhbipdpvkinbni5283iiar";
-  };
-
-  buildInputs =
-    [ zlib bzip2 docbook2x pcre curl libxml2 libevent perl pkgconfig
-      protobuf tokyocabinet tokyotyrant opencv autoconf automake libtool
-    ];
-
-  configureFlags =
-    [ # Enable the built-in web server providing a web search interface.
-      "--enable-httpserv-plugin=yes"
-      "--with-libevent=${libevent.dev}"
-    ];
-
-  preConfigure = ''
-    ./autogen.sh
-  '';
-
-  postInstall = stdenv.lib.optionalString (seeks_confDir != "") ''
-    ln -svf ${seeks_confDir}/config $out/etc/seeks/config
-    ln -svf ${seeks_confDir}/cf-config $out/etc/seeks/cf-config
-    ln -svf ${seeks_confDir}/httpserv-config $out/etc/seeks/httpserv-config
-    ln -svf ${seeks_confDir}/img-websearch-config $out/etc/seeks/img-websearch-config
-    ln -svf ${seeks_confDir}/lsh-config $out/etc/seeks/lsh-config
-    ln -svf ${seeks_confDir}/query-capture-config $out/etc/seeks/query-capture-config
-    ln -svf ${seeks_confDir}/udb-service-config $out/etc/seeks/udb-service-config
-    ln -svf ${seeks_confDir}/uri-capture-config $out/etc/seeks/uri-capture-config
-    ln -svf ${seeks_confDir}/websearch-config $out/etc/seeks/websearch-config
-  '';
-
-  # FIXME: Test suite needs <https://code.google.com/p/googletest/>.
-  doCheck = false;
-
-  meta = {
-    description = "Seeks, a social web search engine";
-
-    longDescription =
-      '' Seeks is a free and open technical design and application for
-         enabling social websearch.  Its specific purpose is to regroup users
-         whose queries are similar so they can share both the query results
-         and their experience on these results.  On this basis, Seeks allows
-         for true real-time, decentralized, websearch to emerge.
-
-         In the long term, there is no need for web crawlers and third-party
-         web indexes as users can push content directly to search groups.
-      '';
-
-    license = stdenv.lib.licenses.agpl3Plus;
-
-    homepage = "http://www.seeks-project.info/";
-
-    maintainers = [
-      stdenv.lib.maintainers.matejc
-    ];
-    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;  # arbitrary choice
-    broken = true; # 2018-04-11
-  };
-}
diff --git a/pkgs/tools/networking/packetdrill/default.nix b/pkgs/tools/networking/packetdrill/default.nix
index e4322242e0b..861e9c0383b 100644
--- a/pkgs/tools/networking/packetdrill/default.nix
+++ b/pkgs/tools/networking/packetdrill/default.nix
@@ -1,29 +1,41 @@
-{ stdenv, fetchFromGitHub, bison, flex }:
-stdenv.mkDerivation {
-  version = "1.0";
+{ lib, stdenv, fetchFromGitHub, bison, flex, cmake, libpcap }:
+stdenv.mkDerivation rec {
   pname = "packetdrill";
+  version = "unstable-2020-08-22";
+
   src = fetchFromGitHub {
     owner = "google";
     repo = "packetdrill";
-    rev = "58a7865c47e3a71e92ca0e4cc478c320e1c35f82";
-    sha256 = "09sqiakmn63idfjhy2ddf1456sfhi8yhsbp8lxvc1yfjikjxwwbc";
+    rev = "68a34fa73cf221e5f52d6fa4f203bcd93062be1b";
+    sha256 = "0djkwb6l2959f44d98vwb092rghf0qmii8391vrpxqb99j6pv4h6";
   };
   setSourceRoot = ''
     export sourceRoot=$(realpath */gtests/net/packetdrill)
   '';
+
   NIX_CFLAGS_COMPILE = [
     "-Wno-error=unused-result"
     "-Wno-error=stringop-truncation"
     "-Wno-error=address-of-packed-member"
   ];
-  nativeBuildInputs = [ bison flex ];
-  patches = [ ./nix.patch ];
-  enableParallelBuilding = true;
+  nativeBuildInputs = [ bison flex cmake libpcap ];
+  buildInputs = [ libpcap ];
+
+  installPhase = ''
+    install -m 0755 -t $out/bin -D \
+      packetdrill \
+      packet_parser_test \
+      packet_to_string_test \
+      checksum_test
+    mkdir -p $out/share
+    cp -r ../tests $out/share/packetdrill-tests
+  '';
+
   meta = {
     description = "Quick, precise tests for entire TCP/UDP/IPv4/IPv6 network stacks";
     homepage = "https://github.com/google/packetdrill";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ dmjio cleverca22 ];
+    license = lib.licenses.gpl2;
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ dmjio cleverca22 ];
   };
 }
diff --git a/pkgs/tools/networking/packetdrill/nix.patch b/pkgs/tools/networking/packetdrill/nix.patch
deleted file mode 100644
index 6bad14421b9..00000000000
--- a/pkgs/tools/networking/packetdrill/nix.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff --git a/gtests/net/packetdrill/Makefile.common b/gtests/net/packetdrill/Makefile.common
-index 0ec741f..bf1cbb1 100644
---- a/Makefile.common
-+++ b/Makefile.common
-@@ -33,7 +33,7 @@ packetdrill-lib := \
- packetdrill-objs := packetdrill.o $(packetdrill-lib)
- 
- packetdrill: $(packetdrill-objs)
--	$(CC) -o packetdrill -g -static $(packetdrill-objs) $(packetdrill-ext-libs)
-+	$(CC) -o packetdrill -g $(packetdrill-objs) $(packetdrill-ext-libs)
- 
- test-bins := checksum_test packet_parser_test packet_to_string_test
- tests: $(test-bins)
-@@ -43,6 +43,10 @@ tests: $(test-bins)
- 
- binaries: packetdrill $(test-bins)
- 
-+install: packetdrill $(test-bins)
-+	mkdir -p ${out}/bin
-+	cp -vi $^ ${out}/bin
-+
- checksum_test-objs := $(packetdrill-lib) checksum_test.o
- checksum_test: $(checksum_test-objs)
- 	$(CC) -o checksum_test $(checksum_test-objs) $(packetdrill-ext-libs)
diff --git a/pkgs/tools/networking/pacparser/default.nix b/pkgs/tools/networking/pacparser/default.nix
index 2d703730785..ce639a4cbc7 100644
--- a/pkgs/tools/networking/pacparser/default.nix
+++ b/pkgs/tools/networking/pacparser/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "pacparser";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
 
   hardeningDisable = [ "format" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A library to parse proxy auto-config (PAC) files";
     homepage = "http://pacparser.manugarg.com/";
     license = licenses.lgpl3;
diff --git a/pkgs/tools/networking/par2cmdline/default.nix b/pkgs/tools/networking/par2cmdline/default.nix
index ecfe5fa0357..73e12e12856 100644
--- a/pkgs/tools/networking/par2cmdline/default.nix
+++ b/pkgs/tools/networking/par2cmdline/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoreconfHook }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook }:
 
 stdenv.mkDerivation rec {
   pname = "par2cmdline";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ autoreconfHook ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/Parchive/par2cmdline";
     description = "PAR 2.0 compatible file verification and repair tool";
     longDescription = ''
diff --git a/pkgs/tools/networking/pcapc/default.nix b/pkgs/tools/networking/pcapc/default.nix
index 94a181eb5ae..48dc96bb3f7 100644
--- a/pkgs/tools/networking/pcapc/default.nix
+++ b/pkgs/tools/networking/pcapc/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, libpcap, cmake }:
+{ lib, stdenv, fetchFromGitHub, libpcap, cmake }:
 
 stdenv.mkDerivation rec {
   pname = "pcapc";
@@ -16,11 +16,9 @@ stdenv.mkDerivation rec {
 
   makeFlags = [ "PREFIX=$(out)" ];
 
-  enableParallelBuilding = true;
-
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/pfactum/pcapc";
     description = "Compile libpcap filter expressions into BPF opcodes";
     license = licenses.gpl3;
diff --git a/pkgs/tools/networking/pcapfix/default.nix b/pkgs/tools/networking/pcapfix/default.nix
index a700bd54e7a..ee5212b9750 100644
--- a/pkgs/tools/networking/pcapfix/default.nix
+++ b/pkgs/tools/networking/pcapfix/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   name = "pcapfix-1.1.4";
@@ -10,11 +10,11 @@ stdenv.mkDerivation rec {
 
   postPatch = ''sed -i "s|/usr|$out|" Makefile'';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://f00l.de/pcapfix/";
     description = "Repair your broken pcap and pcapng files";
     license = licenses.gpl3;
     maintainers = [ maintainers.ehmry ];
-    platforms = platforms.linux;
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/tools/networking/pdnsd/default.nix b/pkgs/tools/networking/pdnsd/default.nix
index d2894271301..a08182394b1 100644
--- a/pkgs/tools/networking/pdnsd/default.nix
+++ b/pkgs/tools/networking/pdnsd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation {
   name = "pdnsd-1.2.9a-par";
@@ -17,7 +17,7 @@ stdenv.mkDerivation {
   # fix ipv6 on darwin
   CPPFLAGS = "-D__APPLE_USE_RFC_3542";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Permanent DNS caching";
     homepage = "http://members.home.nl/p.a.rombouts/pdnsd";
     license = licenses.gpl3Plus;
diff --git a/pkgs/tools/networking/pdsh/default.nix b/pkgs/tools/networking/pdsh/default.nix
index 9dd1a5581c5..87601b0ddf3 100644
--- a/pkgs/tools/networking/pdsh/default.nix
+++ b/pkgs/tools/networking/pdsh/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, perl, readline, rsh, ssh }:
+{ lib, stdenv, fetchurl, perl, readline, rsh, ssh, slurm, slurmSupport ? false }:
 
 stdenv.mkDerivation rec {
   name = "pdsh-2.34";
@@ -8,7 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "1s91hmhrz7rfb6h3l5k97s393rcm1ww3svp8dx5z8vkkc933wyxl";
   };
 
-  buildInputs = [ perl readline ssh ];
+  buildInputs = [ perl readline ssh ]
+    ++ (lib.optional slurmSupport slurm);
 
   preConfigure = ''
     configureFlagsArray=(
@@ -18,6 +19,7 @@ stdenv.mkDerivation rec {
       ${if readline == null then "--without-readline" else "--with-readline"}
       ${if ssh == null then "--without-ssh" else "--with-ssh"}
       ${if rsh == false then "--without-rsh" else "--with-rsh"}
+      ${if slurmSupport then "--with-slurm" else "--without-slurm"}
       "--with-dshgroups"
       "--with-xcpu"
       "--disable-debug"
@@ -28,7 +30,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://github.com/chaos/pdsh";
     description = "High-performance, parallel remote shell utility";
-    license = stdenv.lib.licenses.gpl2;
+    license = lib.licenses.gpl2;
 
     longDescription = ''
       Pdsh is a high-performance, parallel remote shell utility. It has
@@ -39,7 +41,7 @@ stdenv.mkDerivation rec {
       while timeouts occur on some connections.
     '';
 
-    platforms = stdenv.lib.platforms.unix;
-    maintainers = [ stdenv.lib.maintainers.peti ];
+    platforms = lib.platforms.unix;
+    maintainers = [ lib.maintainers.peti ];
   };
 }
diff --git a/pkgs/tools/networking/persepolis/default.nix b/pkgs/tools/networking/persepolis/default.nix
index ecceed21660..5e4f0542d36 100644
--- a/pkgs/tools/networking/persepolis/default.nix
+++ b/pkgs/tools/networking/persepolis/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, buildPythonApplication, fetchFromGitHub, makeWrapper
+{ lib, buildPythonApplication, fetchFromGitHub, makeWrapper
 , aria
 , libnotify
 , pulseaudio
@@ -47,7 +47,7 @@ buildPythonApplication rec {
   # feed args to wrapPythonApp
   makeWrapperArgs = [
     "--prefix PATH : ${lib.makeBinPath [aria libnotify ]}"
-    ''''${qtWrapperArgs[@]}''
+    "\${qtWrapperArgs[@]}"
   ];
 
   propagatedBuildInputs = [
@@ -61,8 +61,8 @@ buildPythonApplication rec {
     youtube-dl
   ];
 
-  meta = with stdenv.lib; {
-    description = "Persepolis Download Manager is a GUI for aria2.";
+  meta = with lib; {
+    description = "Persepolis Download Manager is a GUI for aria2";
     homepage = "https://persepolisdm.github.io/";
     license = licenses.gpl3;
     maintainers = [ maintainers.linarcx ];
diff --git a/pkgs/tools/networking/philter/default.nix b/pkgs/tools/networking/philter/default.nix
index ee079fe9fdf..60bd2f8cc7e 100644
--- a/pkgs/tools/networking/philter/default.nix
+++ b/pkgs/tools/networking/philter/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, python }:
+{ lib, stdenv, fetchurl, python }:
 
 stdenv.mkDerivation rec {
   pname = "philter";
@@ -16,11 +16,11 @@ stdenv.mkDerivation rec {
     chmod +x "$out"/bin/philter
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Mail sorter for Maildirs";
     homepage = "http://philter.sourceforge.net";
     maintainers = with maintainers; [ raskin ];
-    platforms = platforms.linux;
+    platforms = platforms.all;
     license = licenses.gpl2;
   };
 
diff --git a/pkgs/tools/networking/phodav/default.nix b/pkgs/tools/networking/phodav/default.nix
index c6b479dd250..9b1c3d005b9 100644
--- a/pkgs/tools/networking/phodav/default.nix
+++ b/pkgs/tools/networking/phodav/default.nix
@@ -1,15 +1,15 @@
-{ stdenv, fetchurl
-, pkgconfig, libsoup, meson, ninja }:
+{ lib, stdenv, fetchurl
+, pkg-config, libsoup, meson, ninja }:
 
 let
-  version = "2.4";
+  version = "2.5";
 in stdenv.mkDerivation rec {
   pname = "phodav";
   inherit version;
 
   src = fetchurl {
     url = "http://ftp.gnome.org/pub/GNOME/sources/phodav/${version}/${pname}-${version}.tar.xz";
-    sha256 = "1hxq8c5qfah3w7mxcyy3yhzdgswplll31a69p5mqdl04bsvw5pbx";
+    sha256 = "045rdzf8isqmzix12lkz6z073b5qvcqq6ad028advm5gf36skw3i";
   };
 
   mesonFlags = [
@@ -19,15 +19,15 @@ in stdenv.mkDerivation rec {
     "-Dudev=disabled"
   ];
 
-  nativeBuildInputs = [ libsoup pkgconfig meson ninja ];
+  nativeBuildInputs = [ libsoup pkg-config meson ninja ];
 
   outputs = [ "out" "dev" "lib" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "WebDav server implementation and library using libsoup";
     homepage = "https://wiki.gnome.org/phodav";
     license = licenses.lgpl21;
-    maintainers = with maintainers; [ gnidorah ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/photon/default.nix b/pkgs/tools/networking/photon/default.nix
index 22da1320803..d3f153e44ae 100644
--- a/pkgs/tools/networking/photon/default.nix
+++ b/pkgs/tools/networking/photon/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, python3Packages, fetchFromGitHub }:
+{ lib, python3Packages, fetchFromGitHub }:
 
 python3Packages.buildPythonApplication rec {
   pname = "photon";
@@ -19,16 +19,16 @@ python3Packages.buildPythonApplication rec {
   installPhase = ''
     mkdir -p "$out"/{bin,share/photon}
     cp -R photon.py core plugins $out/share/photon
- 
+
     makeWrapper ${python3Packages.python.interpreter} $out/bin/photon \
       --set PYTHONPATH "$PYTHONPATH:$out/share/photon" \
       --add-flags "-O $out/share/photon/photon.py"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "a lightning fast web crawler which extracts URLs, files, intel & endpoints from a target";
     homepage = "https://github.com/s0md3v/Photon";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ genesis ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/tools/networking/pingtcp/default.nix b/pkgs/tools/networking/pingtcp/default.nix
index d3fb37705bd..5b4cbf10321 100644
--- a/pkgs/tools/networking/pingtcp/default.nix
+++ b/pkgs/tools/networking/pingtcp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, cmake }:
+{ lib, stdenv, fetchFromGitHub, cmake }:
 
 stdenv.mkDerivation rec {
   pname = "pingtcp";
@@ -14,15 +14,13 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ cmake ];
 
-  enableParallelBuilding = true;
-
   doCheck = false;
 
   postInstall = ''
     install -Dm644 {..,$out/share/doc/pingtcp}/README.md
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Measure TCP handshake time";
     homepage = "https://github.com/LanetNetwork/pingtcp";
     license = licenses.gpl3;
diff --git a/pkgs/tools/networking/pirate-get/default.nix b/pkgs/tools/networking/pirate-get/default.nix
index b89ab8164cc..dc9133229af 100644
--- a/pkgs/tools/networking/pirate-get/default.nix
+++ b/pkgs/tools/networking/pirate-get/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, python3Packages }:
+{ lib, python3Packages }:
 
 with python3Packages;
 
@@ -13,7 +13,7 @@ buildPythonApplication rec {
 
   propagatedBuildInputs = [ colorama veryprettytable pyperclip ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A command line interface for The Pirate Bay";
     homepage = "https://github.com/vikstrous/pirate-get";
     license = licenses.gpl1;
diff --git a/pkgs/tools/networking/pixiecore/default.nix b/pkgs/tools/networking/pixiecore/default.nix
index d0e76832ea9..c8c5ca118dd 100644
--- a/pkgs/tools/networking/pixiecore/default.nix
+++ b/pkgs/tools/networking/pixiecore/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildGoModule, fetchFromGitHub }:
+{ lib, buildGoModule, fetchFromGitHub }:
 
 buildGoModule rec {
   pname = "pixiecore";
@@ -21,8 +21,8 @@ buildGoModule rec {
   meta = {
     description = "A tool to manage network booting of machines";
     homepage = "https://github.com/danderson/netboot/tree/master/pixiecore";
-    license =  stdenv.lib.licenses.asl20;
-    maintainers = with stdenv.lib.maintainers; [ bbigras danderson ];
-    platforms = stdenv.lib.platforms.linux;
+    license =  lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ bbigras danderson ];
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/pixiewps/default.nix b/pkgs/tools/networking/pixiewps/default.nix
index 98a780a1704..561daacfd53 100644
--- a/pkgs/tools/networking/pixiewps/default.nix
+++ b/pkgs/tools/networking/pixiewps/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub }:
+{ lib, stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation rec {
   pname = "pixiewps";
@@ -15,12 +15,12 @@ stdenv.mkDerivation rec {
     substituteInPlace Makefile --replace "\$(DESTDIR)/usr" "$out"
     substituteInPlace Makefile --replace "/local" ""
   '';
-  
+
   meta = {
     description = "An offline WPS bruteforce utility";
     homepage = "https://github.com/wiire/pixiewps";
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.nico202 ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl3;
+    maintainers = [ lib.maintainers.nico202 ];
+    platforms = lib.platforms.all;
   };
 }
diff --git a/pkgs/tools/networking/pmacct/default.nix b/pkgs/tools/networking/pmacct/default.nix
index ffecbfcaf42..9cb8c0b88f7 100644
--- a/pkgs/tools/networking/pmacct/default.nix
+++ b/pkgs/tools/networking/pmacct/default.nix
@@ -1,6 +1,6 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
-, pkgconfig
+, pkg-config
 , autoreconfHook
 , libtool
 , libpcap
@@ -19,7 +19,7 @@ assert withSQLite -> sqlite != null;
 assert withPgSQL -> postgresql != null;
 assert withMysql -> libmysqlclient != null;
 
-let inherit (stdenv.lib) optional; in
+let inherit (lib) getDev optional optionalString; in
 
 stdenv.mkDerivation rec {
   version = "1.7.5";
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
     sha256 = "17p5isrq5w58hvmzhc6akbd37ins3c95g0rvhhdm0v33khzxmran";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig libtool ];
+  nativeBuildInputs = [ autoreconfHook pkg-config libtool ];
   buildInputs = [ libpcap ]
     ++ optional withJansson jansson
     ++ optional withNflog libnetfilter_log
@@ -40,6 +40,9 @@ stdenv.mkDerivation rec {
     ++ optional withPgSQL postgresql
     ++ optional withMysql [ libmysqlclient zlib ];
 
+  MYSQL_CONFIG =
+    optionalString withMysql "${getDev libmysqlclient}/bin/mysql_config";
+
   configureFlags = [
     "--with-pcap-includes=${libpcap}/include"
   ] ++ optional withJansson "--enable-jansson"
@@ -48,8 +51,8 @@ stdenv.mkDerivation rec {
     ++ optional withPgSQL "--enable-pgsql"
     ++ optional withMysql "--enable-mysql";
 
-  meta = with stdenv.lib; {
-    description = "pmacct is a small set of multi-purpose passive network monitoring tools";
+  meta = with lib; {
+    description = "A small set of multi-purpose passive network monitoring tools";
     longDescription = ''
       pmacct is a small set of multi-purpose passive network monitoring tools
       [NetFlow IPFIX sFlow libpcap BGP BMP RPKI IGP Streaming Telemetry]
diff --git a/pkgs/tools/networking/polygraph/default.nix b/pkgs/tools/networking/polygraph/default.nix
index 05053b37349..74347ff8395 100644
--- a/pkgs/tools/networking/polygraph/default.nix
+++ b/pkgs/tools/networking/polygraph/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, openssl, zlib, ncurses }:
+{ lib, stdenv, fetchurl, openssl, zlib, ncurses }:
 
 stdenv.mkDerivation rec {
   name = "polygraph-4.13.0";
@@ -10,11 +10,11 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ openssl zlib ncurses ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.web-polygraph.org";
     description = "Performance testing tool for caching proxies, origin server accelerators, L4/7 switches, content filters, and other Web intermediaries";
     platforms = platforms.linux;
     license = licenses.asl20;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/tools/networking/polysh/default.nix b/pkgs/tools/networking/polysh/default.nix
index 34bc908060a..69e5d0427e5 100644
--- a/pkgs/tools/networking/polysh/default.nix
+++ b/pkgs/tools/networking/polysh/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, python2Packages }:
+{ lib, fetchurl, python2Packages }:
 
 let
   inherit (python2Packages) buildPythonApplication;
@@ -11,7 +11,7 @@ buildPythonApplication rec {
           sha256 = "0kxhp38c8a8hc8l86y53l2z5zpzxc4b8lx5zyzmq1badcrfc4mh4";
         };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A tool to aggregate several remote shells into one";
     longDescription = ''
       Polysh is a tool to aggregate several remote shells into one. It
diff --git a/pkgs/tools/networking/ppp/default.nix b/pkgs/tools/networking/ppp/default.nix
index f507b582f64..708932ac1c9 100644
--- a/pkgs/tools/networking/ppp/default.nix
+++ b/pkgs/tools/networking/ppp/default.nix
@@ -1,45 +1,37 @@
-{ stdenv, fetchurl, fetchpatch, fetchFromGitHub, substituteAll, libpcap, openssl }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, substituteAll
+, libpcap
+, openssl
+}:
 
 stdenv.mkDerivation rec {
-  version = "2.4.8";
+  version = "2.4.9";
   pname = "ppp";
 
   src = fetchFromGitHub {
-    owner = "paulusmack";
-    repo = "ppp";
-    rev = "ppp-${version}";
-    sha256 = "1i88m79h6g3fzsb4yw3k8bq1grsx3hsyawm7id2vcaab0gfqzjjv";
+    owner = "ppp-project";
+    repo = pname;
+    rev = "${pname}-${version}";
+    sha256 = "sha256-8+nbqRNfKPLDx+wmuKSkv+BSeG72hKJI4dNqypqeEK4=";
   };
 
-  patches =
-    [
-      ( substituteAll {
-        src = ./nix-purity.patch;
-        inherit libpcap;
-        glibc = stdenv.cc.libc.dev or stdenv.cc.libc;
-        openssl = openssl.dev;
-      })
-      # Without nonpriv.patch, pppd --version doesn't work when not run as
-      # root.
-      ./nonpriv.patch
-      (fetchpatch {
-        name = "CVE-2015-3310.patch";
-        url = "https://github.com/paulusmack/ppp/commit/858976b1fc3107f1261aae337831959b511b83c2.patch";
-        sha256 = "0wirmcis67xjwllqhz9lsz1b7dcvl8shvz78lxgybc70j2sv7ih4";
-      })
-      (fetchurl {
-        url = "https://www.nikhef.nl/~janjust/ppp/ppp-2.4.7-eaptls-mppe-1.102.patch";
-        sha256 = "04war8l5szql53l36043hvzgfwqp3v76kj8brbz7wlf7vs2mlkia";
-      })
-      (fetchpatch {
-        name = "CVE-2020-8597.patch";
-        url = "https://github.com/paulusmack/ppp/commit/8d7970b8f3db727fe798b65f3377fe6787575426.patch";
-        sha256 = "129wnhwxmzvr3y9gzxv82jnb5y8m4yg8vkpa0xl2rwkl8anbzgkh";
-      })
-      ./musl-fix-headers.patch
-    ];
+  patches = [
+    (substituteAll {
+      src = ./nix-purity.patch;
+      glibc = stdenv.cc.libc.dev or stdenv.cc.libc;
+      openssl_dev = openssl.dev;
+      openssl_out = openssl.out;
+    })
+    # Without nonpriv.patch, pppd --version doesn't work when not run as root.
+    ./nonpriv.patch
+  ];
 
-  buildInputs = [ libpcap openssl ];
+  buildInputs = [
+    libpcap
+    openssl
+  ];
 
   postPatch = ''
     # strip is not found when cross compiling with seemingly no way to point
@@ -65,10 +57,15 @@ stdenv.mkDerivation rec {
     done
   '';
 
-  meta = with stdenv.lib; {
-    homepage = "https://ppp.samba.org/";
-    description = "Point-to-point implementation for Linux and Solaris";
-    license = with licenses; [ bsdOriginal publicDomain gpl2 lgpl2 ];
+  meta = with lib; {
+    homepage = "https://ppp.samba.org";
+    description = "Point-to-point implementation to provide Internet connections over serial lines";
+    license = with licenses; [
+      bsdOriginal
+      publicDomain
+      gpl2
+      lgpl2
+    ];
     platforms = platforms.linux;
     maintainers = [ ];
   };
diff --git a/pkgs/tools/networking/ppp/musl-fix-headers.patch b/pkgs/tools/networking/ppp/musl-fix-headers.patch
deleted file mode 100644
index d6252a52675..00000000000
--- a/pkgs/tools/networking/ppp/musl-fix-headers.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-diff --git a/include/net/ppp_defs.h b/include/net/ppp_defs.h
-index b06eda5..dafa36c 100644
---- a/include/net/ppp_defs.h
-+++ b/include/net/ppp_defs.h
-@@ -38,6 +38,8 @@
- #ifndef _PPP_DEFS_H_
- #define _PPP_DEFS_H_
- 
-+#include <sys/time.h>
-+
- /*
-  * The basic PPP frame.
-  */
-diff --git a/pppd/Makefile.linux b/pppd/Makefile.linux
-index a74c914..7acd2cf 100644
---- a/pppd/Makefile.linux
-+++ b/pppd/Makefile.linux
-@@ -126,7 +126,7 @@ LIBS	+= -lcrypt
- endif
- 
- ifdef USE_LIBUTIL
--CFLAGS	+= -DHAVE_LOGWTMP=1
-+#CFLAGS	+= -DHAVE_LOGWTMP=1
- LIBS	+= -lutil
- endif
- 
-diff --git a/pppd/magic.h b/pppd/magic.h
-index c81213b..305aece 100644
---- a/pppd/magic.h
-+++ b/pppd/magic.h
-@@ -42,6 +42,8 @@
-  * $Id: magic.h,v 1.5 2003/06/11 23:56:26 paulus Exp $
-  */
- 
-+#include <sys/cdefs.h>
-+
- void magic_init (void);	/* Initialize the magic number generator */
- u_int32_t magic (void);	/* Returns the next magic number */
- 
-diff --git a/pppd/plugins/rp-pppoe/if.c b/pppd/plugins/rp-pppoe/if.c
-index 91e9a57..9c0fac3 100644
---- a/pppd/plugins/rp-pppoe/if.c
-+++ b/pppd/plugins/rp-pppoe/if.c
-@@ -30,10 +30,6 @@ static char const RCSID[] =
- #include <linux/if_packet.h>
- #endif
- 
--#ifdef HAVE_NET_ETHERNET_H
--#include <net/ethernet.h>
--#endif
--
- #ifdef HAVE_ASM_TYPES_H
- #include <asm/types.h>
- #endif
-diff --git a/pppd/plugins/rp-pppoe/plugin.c b/pppd/plugins/rp-pppoe/plugin.c
-index a8c2bb4..ca34d79 100644
---- a/pppd/plugins/rp-pppoe/plugin.c
-+++ b/pppd/plugins/rp-pppoe/plugin.c
-@@ -46,7 +46,6 @@ static char const RCSID[] =
- #include <unistd.h>
- #include <fcntl.h>
- #include <signal.h>
--#include <net/ethernet.h>
- #include <net/if_arp.h>
- #include <linux/ppp_defs.h>
- #include <linux/if_pppox.h>
-diff --git a/pppd/plugins/rp-pppoe/pppoe-discovery.c b/pppd/plugins/rp-pppoe/pppoe-discovery.c
-index 3d3bf4e..b5f82d3 100644
---- a/pppd/plugins/rp-pppoe/pppoe-discovery.c
-+++ b/pppd/plugins/rp-pppoe/pppoe-discovery.c
-@@ -27,10 +27,6 @@
- #include <linux/if_packet.h>
- #endif
- 
--#ifdef HAVE_NET_ETHERNET_H
--#include <net/ethernet.h>
--#endif
--
- #ifdef HAVE_ASM_TYPES_H
- #include <asm/types.h>
- #endif
-@@ -55,6 +51,8 @@ void die(int status)
- 	exit(status);
- }
- 
-+#define error(x...) fprintf(stderr, x)
-+
- /* Initialize frame types to RFC 2516 values.  Some broken peers apparently
-    use different frame types... sigh... */
- 
-diff --git a/pppd/plugins/rp-pppoe/pppoe.h b/pppd/plugins/rp-pppoe/pppoe.h
-index c4aaa6e..70aef85 100644
---- a/pppd/plugins/rp-pppoe/pppoe.h
-+++ b/pppd/plugins/rp-pppoe/pppoe.h
-@@ -88,18 +88,6 @@ typedef unsigned long UINT32_t;
- #include <linux/if_ether.h>
- #endif
- 
--#ifdef HAVE_NETINET_IF_ETHER_H
--#include <sys/types.h>
--
--#ifdef HAVE_SYS_SOCKET_H
--#include <sys/socket.h>
--#endif
--#ifndef HAVE_SYS_DLPI_H
--#include <netinet/if_ether.h>
--#endif
--#endif
--
--
- /* Ethernet frame types according to RFC 2516 */
- #define ETH_PPPOE_DISCOVERY 0x8863
- #define ETH_PPPOE_SESSION   0x8864
-diff --git a/pppd/sys-linux.c b/pppd/sys-linux.c
-index 6d71530..86d224e 100644
---- a/pppd/sys-linux.c
-+++ b/pppd/sys-linux.c
-@@ -102,19 +102,11 @@
- #define MAX_ADDR_LEN 7
- #endif
- 
--#if !defined(__GLIBC__) || __GLIBC__ >= 2
- #include <asm/types.h>		/* glibc 2 conflicts with linux/types.h */
- #include <net/if.h>
- #include <net/if_arp.h>
- #include <net/route.h>
- #include <netinet/if_ether.h>
--#else
--#include <linux/types.h>
--#include <linux/if.h>
--#include <linux/if_arp.h>
--#include <linux/route.h>
--#include <linux/if_ether.h>
--#endif
- #include <netinet/in.h>
- #include <arpa/inet.h>
- 
diff --git a/pkgs/tools/networking/ppp/nix-purity.patch b/pkgs/tools/networking/ppp/nix-purity.patch
index 975ea9db609..c3363e0ccb6 100644
--- a/pkgs/tools/networking/ppp/nix-purity.patch
+++ b/pkgs/tools/networking/ppp/nix-purity.patch
@@ -1,31 +1,33 @@
 diff --git a/pppd/Makefile.linux b/pppd/Makefile.linux
-index 9664f70..d07e01e 100644
+index 22837c5..6f6fff5 100644
 --- a/pppd/Makefile.linux
 +++ b/pppd/Makefile.linux
-@@ -125,7 +125,7 @@ CFLAGS   += -DHAS_SHADOW
+@@ -111,8 +111,8 @@ endif
+ 
+ # EAP SRP-SHA1
+ ifdef USE_SRP
+-CFLAGS	+= -DUSE_SRP -DOPENSSL -I/usr/local/ssl/include
+-LIBS	+= -lsrp -L/usr/local/ssl/lib
++CFLAGS	+= -DUSE_SRP -DOPENSSL -I@openssl_dev@/include/openssl
++LIBS	+= -lsrp -L@openssl_out@/lib
+ NEEDCRYPTOLIB = y
+ TARGETS	+= srp-entry
+ EXTRAINSTALL = $(INSTALL) -c -m 555 srp-entry $(BINDIR)/srp-entry
+@@ -143,7 +143,7 @@ CFLAGS   += -DHAS_SHADOW
  #LIBS     += -lshadow $(LIBS)
  endif
  
--ifneq ($(wildcard $(shell $(CC) --print-sysroot)/usr/include/crypt.h),)
+-ifeq ($(shell echo '\#include <crypt.h>' | $(CC) -E - >/dev/null 2>&1 && echo yes),yes)
 +ifneq ($(wildcard @glibc@/include/crypt.h),)
  CFLAGS  += -DHAVE_CRYPT_H=1
- LIBS   += -lcrypt
+ LIBS	+= -lcrypt
  endif
-@@ -137,7 +137,7 @@ endif
+@@ -155,7 +155,7 @@ endif
  
  ifdef NEEDDES
  ifndef USE_CRYPT
 -CFLAGS   += -I$(shell $(CC) --print-sysroot)/usr/include/openssl
-+CFLAGS   += -I@openssl@/include/openssl
- LIBS     += -lcrypto
++CFLAGS   += -I@openssl_dev@/include/openssl
+ NEEDCRYPTOLIB = y
  else
  CFLAGS   += -DUSE_CRYPT=1
-@@ -188,7 +188,7 @@ LIBS        += -ldl
- endif
- 
- ifdef FILTER
--ifneq ($(wildcard /usr/include/pcap-bpf.h),)
-+ifneq ($(wildcard @libpcap@/include/pcap-bpf.h),)
- LIBS    += -lpcap
- CFLAGS  += -DPPP_FILTER
- endif
diff --git a/pkgs/tools/networking/pptp/default.nix b/pkgs/tools/networking/pptp/default.nix
index dfc61d8197c..7af9e324f2e 100644
--- a/pkgs/tools/networking/pptp/default.nix
+++ b/pkgs/tools/networking/pptp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, perl, ppp, iproute }:
+{ lib, stdenv, fetchurl, perl, ppp, iproute2 }:
 
 stdenv.mkDerivation rec {
   pname = "pptp";
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   '';
 
   preConfigure = ''
-    makeFlagsArray=( IP=${iproute}/bin/ip PPPD=${ppp}/sbin/pppd \
+    makeFlagsArray=( IP=${iproute2}/bin/ip PPPD=${ppp}/sbin/pppd \
                      BINDIR=$out/sbin MANDIR=$out/share/man/man8 \
                      PPPDIR=$out/etc/ppp )
   '';
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
     patchShebangs $out
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "PPTP client for Linux";
     homepage = "http://pptpclient.sourceforge.net/";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/pptpd/default.nix b/pkgs/tools/networking/pptpd/default.nix
index e6f5f9503d8..8a802281192 100644
--- a/pkgs/tools/networking/pptpd/default.nix
+++ b/pkgs/tools/networking/pptpd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ppp }:
+{ lib, stdenv, fetchurl, ppp }:
 
 stdenv.mkDerivation rec {
   pname   = "pptpd";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
     substituteInPlace plugins/Makefile --replace "install -o root" "install"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage    = "http://poptop.sourceforge.net/dox/";
     description = "The PPTP Server for Linux";
     platforms   = platforms.linux;
diff --git a/pkgs/tools/networking/pritunl-ssh/default.nix b/pkgs/tools/networking/pritunl-ssh/default.nix
new file mode 100644
index 00000000000..586fc780699
--- /dev/null
+++ b/pkgs/tools/networking/pritunl-ssh/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenv, fetchFromGitHub, python3 }:
+
+stdenv.mkDerivation rec {
+  pname   = "pritunl-ssh";
+  version = "1.0.1674.4";
+
+  src = fetchFromGitHub {
+    owner = "pritunl";
+    repo = "pritunl-zero-client";
+    rev = version;
+    sha256 = "07z60lipbwm0p7s2bxcij21jid8w4nyh6xk2qq5qdm4acq4k1i88";
+  };
+
+  buildInputs = [ python3 ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install ssh_client.py $out/bin/pritunl-ssh
+    install ssh_host_client.py $out/bin/pritunl-ssh-host
+  '';
+
+  meta = with lib; {
+    description = "Pritunl Zero SSH client";
+    homepage = "https://github.com/pritunl/pritunl-zero-client";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ Thunderbottom ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/networking/privoxy/default.nix b/pkgs/tools/networking/privoxy/default.nix
index 10a25d5bf8b..9fce8d7a5f4 100644
--- a/pkgs/tools/networking/privoxy/default.nix
+++ b/pkgs/tools/networking/privoxy/default.nix
@@ -1,30 +1,45 @@
-{ stdenv, fetchurl, autoreconfHook, zlib, pcre, w3m, man }:
+{ lib, stdenv
+, nixosTests
+, fetchurl, autoreconfHook
+, zlib, pcre, w3m, man
+, mbedtls, brotli
+}:
 
 stdenv.mkDerivation rec {
 
   pname = "privoxy";
-  version = "3.0.28";
+  version = "3.0.32";
 
   src = fetchurl {
     url = "mirror://sourceforge/ijbswa/Sources/${version}%20%28stable%29/${pname}-${version}-stable-src.tar.gz";
-    sha256 = "0jl2yav1qzqnaqnnx8i6i53ayckkimcrs3l6ryvv7bda6v08rmxm";
+    sha256 = "sha256-xh3kAIxiRF7Bjx8nBAfL8jcuq6k76szcnjI4uy3v7tc=";
   };
 
   hardeningEnable = [ "pie" ];
 
   nativeBuildInputs = [ autoreconfHook w3m man ];
-  buildInputs = [ zlib pcre ];
+  buildInputs = [ zlib pcre mbedtls brotli ];
 
-  makeFlags = [ "STRIP="];
+  makeFlags = [ "STRIP=" ];
+  configureFlags = [
+    "--with-mbedtls"
+    "--with-brotli"
+    "--enable-external-filters"
+    "--enable-compression"
+  ];
 
   postInstall = ''
-    rm -rf $out/var
+    rm -r $out/var
   '';
 
-  meta = with stdenv.lib; {
+  passthru.tests.privoxy = nixosTests.privoxy;
+
+  meta = with lib; {
     homepage = "https://www.privoxy.org/";
     description = "Non-caching web proxy with advanced filtering capabilities";
-    license = licenses.gpl2;
+    # When linked with mbedtls, the license becomes GPLv3 (or later), otherwise
+    # GPLv2 (or later). See https://www.privoxy.org/user-manual/copyright.html
+    license = licenses.gpl3Plus;
     platforms = platforms.all;
     maintainers = [ maintainers.phreedom ];
   };
diff --git a/pkgs/tools/networking/proxify/default.nix b/pkgs/tools/networking/proxify/default.nix
new file mode 100644
index 00000000000..6a0bfcc6ee2
--- /dev/null
+++ b/pkgs/tools/networking/proxify/default.nix
@@ -0,0 +1,31 @@
+{ buildGoModule
+, fetchFromGitHub
+, lib
+}:
+
+buildGoModule rec {
+  pname = "proxify";
+  version = "0.0.3";
+
+  src = fetchFromGitHub {
+    owner = "projectdiscovery";
+    repo = "proxify";
+    rev = "v${version}";
+    sha256 = "15j2q9zrs8bdf72jgldkai3xbi4irk69wyjzv48r74rdgf2k49gn";
+  };
+
+  vendorSha256 = "1x78n88ri8kph827k03x1q06zpbbbp7793xsvc376ljda5n6bqig";
+
+  meta = with lib; {
+    description = "Proxy tool for HTTP/HTTPS traffic capture";
+    longDescription = ''
+      This tool supports multiple operations such as request/response dump, filtering
+      and manipulation via DSL language, upstream HTTP/Socks5 proxy. Additionally a
+      replay utility allows to import the dumped traffic (request/responses with correct
+      domain name) into other tools by simply setting the upstream proxy to proxify.
+    '';
+    homepage = "https://github.com/projectdiscovery/proxify";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/networking/proxychains/default.nix b/pkgs/tools/networking/proxychains/default.nix
index 6f00c7fc8b7..56a553c0c80 100644
--- a/pkgs/tools/networking/proxychains/default.nix
+++ b/pkgs/tools/networking/proxychains/default.nix
@@ -1,24 +1,33 @@
-{ stdenv, fetchFromGitHub } :
+{ lib
+, stdenv
+, fetchFromGitHub
+}:
+
 stdenv.mkDerivation rec {
   pname = "proxychains";
-  version = "4.2.0";
+  version = "4.4.0";
 
   src = fetchFromGitHub {
     owner = "haad";
-    repo = "proxychains";
+    repo = pname;
     rev = "${pname}-${version}";
-    sha256 = "015skh3z1jmm8kxbm3nkqv1w56kcvabdmcbmpwzywxr4xnh3x3pc";
+    sha256 = "083xdg6fsn8c2ns93lvy794rixxq8va6jdf99w1z0xi4j7f1nyjw";
   };
 
   postPatch = ''
-    # Temporary work-around; most likely fixed by next upstream release
-    sed -i Makefile -e '/-lpthread/a LDFLAGS+=-ldl'
+    # Suppress compiler warning. Remove it when upstream fix arrives
+    substituteInPlace Makefile --replace "-Werror" "-Werror -Wno-stringop-truncation"
+  '';
+
+  postInstall = ''
+    cp src/proxychains.conf $out/etc
   '';
 
-  meta = {
+  meta = with lib; {
     description = "Proxifier for SOCKS proxies";
     homepage = "http://proxychains.sourceforge.net";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ fab ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/pssh/default.nix b/pkgs/tools/networking/pssh/default.nix
index 43e465e05b6..a17701644c8 100644
--- a/pkgs/tools/networking/pssh/default.nix
+++ b/pkgs/tools/networking/pssh/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pythonPackages, openssh, rsync }:
+{ lib, fetchFromGitHub, pythonPackages, openssh, rsync }:
 
 pythonPackages.buildPythonApplication rec {
   pname = "pssh";
@@ -20,7 +20,7 @@ pythonPackages.buildPythonApplication rec {
     done
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Parallel SSH Tools";
     longDescription = ''
       PSSH provides parallel versions of OpenSSH and related tools,
diff --git a/pkgs/tools/networking/pwnat/default.nix b/pkgs/tools/networking/pwnat/default.nix
index 55965173e0e..780477af2fc 100644
--- a/pkgs/tools/networking/pwnat/default.nix
+++ b/pkgs/tools/networking/pwnat/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub }:
+{ lib, stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation rec {
   name  = "${pname}-${date}";
@@ -18,10 +18,10 @@ stdenv.mkDerivation rec {
     cp README* COPYING* $out/share/pwnat
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage    = "http://samy.pl/pwnat/";
     description = "ICMP NAT to NAT client-server communication";
-    license     = stdenv.lib.licenses.gpl3Plus;
+    license     = lib.licenses.gpl3Plus;
     maintainers = with maintainers; [viric];
     platforms   = with platforms; linux;
   };
diff --git a/pkgs/tools/networking/pykms/default.nix b/pkgs/tools/networking/pykms/default.nix
index 345999c00bc..d648ff3ec1e 100644
--- a/pkgs/tools/networking/pykms/default.nix
+++ b/pkgs/tools/networking/pykms/default.nix
@@ -1,9 +1,13 @@
-{ stdenv, runtimeShell, fetchFromGitHub, python3, writeText, writeScript
-, coreutils, sqlite }:
-
-with python3.pkgs;
-
+{ lib
+, fetchFromGitHub
+, python3
+, writeText
+, writeShellScript
+, sqlite
+}:
 let
+  pypkgs = python3.pkgs;
+
   dbSql = writeText "create_pykms_db.sql" ''
     CREATE TABLE clients(
       clientMachineId TEXT,
@@ -17,35 +21,31 @@ let
     );
   '';
 
-  dbScript = writeScript "create_pykms_db.sh" (with stdenv.lib; ''
-    #!${runtimeShell}
-
+  dbScript = writeShellScript "create_pykms_db.sh" ''
     set -eEuo pipefail
 
-    db=$1
+    db=''${1:-/var/lib/pykms/clients.db}
 
     if [ ! -e $db ] ; then
-      ${getBin sqlite}/bin/sqlite3 $db < ${dbSql}
+      ${lib.getBin sqlite}/bin/sqlite3 $db < ${dbSql}
     fi
-  '');
+  '';
 
-in buildPythonApplication rec {
+in
+pypkgs.buildPythonApplication rec {
   pname = "pykms";
-  version = "20190611";
+  version = "unstable-2021-01-25";
 
   src = fetchFromGitHub {
-    owner  = "SystemRage";
-    repo   = "py-kms";
-    rev    = "dead208b1593655377fe8bc0d74cc4bead617103";
-    sha256 = "065qpkfqrahsam1rb43vnasmzrangan5z1pr3p6s0sqjz5l2jydp";
+    owner = "SystemRage";
+    repo = "py-kms";
+    rev = "a3b0c85b5b90f63b33dfa5ae6085fcd52c6da2ff";
+    sha256 = "sha256-u0R0uJMQxHnJUDenxglhQkZza3/1DcyXCILcZVceygA=";
   };
 
   sourceRoot = "source/py-kms";
 
-  propagatedBuildInputs = [ systemd pytz tzlocal ];
-
-  # Fix https://github.com/SystemRage/py-kms/issues/64 :
-  patches = [ ./log-to-current-directory-by-default.patch ];
+  propagatedBuildInputs = with pypkgs; [ systemd pytz tzlocal ];
 
   postPatch = ''
     siteDir=$out/${python3.sitePackages}
@@ -66,25 +66,24 @@ in buildPythonApplication rec {
 
     mv * $siteDir
     for b in Client Server ; do
-      makeWrapper ${python.interpreter} $out/bin/''${b,,} \
-        --argv0 ''${b,,} \
-        --add-flags $siteDir/pykms_$b.py \
-        --prefix PYTHONPATH : "$(toPythonPath ${systemd})"
+      makeWrapper ${python3.interpreter} $out/bin/''${b,,} \
+        --argv0 pykms-''${b,,} \
+        --add-flags $siteDir/pykms_$b.py
     done
 
     install -Dm755 ${dbScript} $out/libexec/create_pykms_db.sh
 
     install -Dm644 ../README.md -t $out/share/doc/pykms
 
-    ${python.interpreter} -m compileall $siteDir
+    ${python3.interpreter} -m compileall $siteDir
 
     runHook postInstall
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Windows KMS (Key Management Service) server written in Python";
-    homepage    = "https://github.com/SystemRage/py-kms";
-    license     = licenses.mit;
+    homepage = "https://github.com/SystemRage/py-kms";
+    license = licenses.unlicense;
     maintainers = with maintainers; [ peterhoeg ];
   };
 }
diff --git a/pkgs/tools/networking/pykms/log-to-current-directory-by-default.patch b/pkgs/tools/networking/pykms/log-to-current-directory-by-default.patch
deleted file mode 100644
index 7c8c65b63a2..00000000000
--- a/pkgs/tools/networking/pykms/log-to-current-directory-by-default.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-# By default, create log files in current directory, instead of the script directory.
---- ../original/py-kms/pykms_Client.py
-+++ py-kms/pykms_Client.py
-@@ -48,5 +48,5 @@
-                     'choi' : ["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG", "MINI"]},
-         'lfile' : {'help' : 'Use this option to set an output log file. The default is \"pykms_logclient.log\" or type \"STDOUT\" to view log info on stdout.',
--                   'def' : os.path.dirname(os.path.abspath( __file__ )) + "/pykms_logclient.log", 'des' : "logfile"},
-+                   'def' : "pykms_logclient.log", 'des' : "logfile"},
-         'lsize' : {'help' : 'Use this flag to set a maximum size (in MB) to the output log file. Desactivated by default.', 'def' : 0, 'des': "logsize"},
-         }
---- ../original/py-kms/pykms_Server.py
-+++ py-kms/pykms_Server.py
-@@ -85,5 +85,5 @@
-                     'choi' : ["CRITICAL", "ERROR", "WARNING", "INFO", "DEBUG", "MINI"]},
-         'lfile' : {'help' : 'Use this option to set or not an output log file. The default is \"pykms_logserver.log\" or type \"STDOUT\" to view log info on stdout.',
--                   'def' : os.path.dirname(os.path.abspath( __file__ )) + "/pykms_logserver.log", 'des' : "logfile"},
-+                   'def' : "pykms_logserver.log", 'des' : "logfile"},
-         'lsize' : {'help' : 'Use this flag to set a maximum size (in MB) to the output log file. Desactivated by default.', 'def' : 0, 'des': "logsize"},
-         }
-    '');
diff --git a/pkgs/tools/networking/qr-filetransfer/default.nix b/pkgs/tools/networking/qr-filetransfer/default.nix
deleted file mode 100644
index bb62be6d3e2..00000000000
--- a/pkgs/tools/networking/qr-filetransfer/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ stdenv, buildGoPackage, fetchFromGitHub }:
-
-buildGoPackage {
-  pname = "qr-filetransfer-unstable";
-  version = "2018-10-22";
-
-  goPackagePath = "github.com/claudiodangelis/qr-filetransfer";
-
-  src = fetchFromGitHub {
-    rev = "b1e5b91aa2aa469f870c62074e879d46e353edae";
-    owner = "claudiodangelis";
-    repo = "qr-filetransfer";
-    sha256 = "04cl3v6bzpaxp1scpsa42xxa1c1brbplq408bb7nixa98bacj4x1";
-  };
-
-  goDeps = ./deps.nix;
-
-  meta = with stdenv.lib; {
-    homepage = "https://github.com/claudiodangelis/qr-filetransfer";
-    description = "Transfer files over wifi by scanning a QR code from your terminal";
-    longDescription = ''
-      qr-filetransfer binds a web server to the address of your Wi-Fi network
-      interface on a random port and creates a handler for it. The default
-      handler serves the content and exits the program when the transfer is
-      complete.
-    '';
-    license = licenses.mit;
-    maintainers = with maintainers; [ fgaz ];
-  };
-}
diff --git a/pkgs/tools/networking/qr-filetransfer/deps.nix b/pkgs/tools/networking/qr-filetransfer/deps.nix
deleted file mode 100644
index a15dd968943..00000000000
--- a/pkgs/tools/networking/qr-filetransfer/deps.nix
+++ /dev/null
@@ -1,66 +0,0 @@
-# This file was generated by https://github.com/kamilchm/go2nix v1.3.0
-[
-  {
-    goPackagePath = "github.com/mattn/go-colorable";
-    fetch = {
-      type = "git";
-      url = "https://github.com/mattn/go-colorable";
-      rev = "efa589957cd060542a26d2dd7832fd6a6c6c3ade";
-      sha256 = "0kshi4hvm0ayrsxqxy0599iv81kryhd2fn9lwjyczpj593cq069r";
-    };
-  }
-  {
-    goPackagePath = "github.com/mattn/go-isatty";
-    fetch = {
-      type = "git";
-      url = "https://github.com/mattn/go-isatty";
-      rev = "3fb116b820352b7f0c281308a4d6250c22d94e27";
-      sha256 = "084hplr4n4g5nvp70clljk428hc963460xz0ggcj3xdi4w7hhsvv";
-    };
-  }
-  {
-    goPackagePath = "github.com/mattn/go-runewidth";
-    fetch = {
-      type = "git";
-      url = "https://github.com/mattn/go-runewidth";
-      rev = "c88d7e5f2e24de48a200a2655ac8a0910be9a0f7";
-      sha256 = "14prmzjlv9z31n6caaaq1kwi4p0mp3x4pv5r7d0575lcampa41jw";
-    };
-  }
-  {
-    goPackagePath = "github.com/mdp/qrterminal";
-    fetch = {
-      type = "git";
-      url = "https://github.com/mdp/qrterminal";
-      rev = "6967d3624af633162b77160078e12a4c14174470";
-      sha256 = "1f2zrdv9sw2a6ni1712d27cayr3f8whqagx6f0yglc5gdd9f3i2n";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/sys";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/sys";
-      rev = "a5c9d58dba9a56f97aaa86f55e638b718c5a6c42";
-      sha256 = "02qv5i7yps35p7fa81345qz7k8i73gkigj69anwmpw9rhpmzayf9";
-    };
-  }
-  {
-    goPackagePath = "gopkg.in/cheggaaa/pb.v1";
-    fetch = {
-      type = "git";
-      url = "https://gopkg.in/cheggaaa/pb.v1";
-      rev = "007b75a044e968336a69a6c0c617251ab62ac14c";
-      sha256 = "0l8m5cy6fbir7nrsk985ap7dxp9qlfmh8r73g7j9zg7pfq3lkhad";
-    };
-  }
-  {
-    goPackagePath = "rsc.io/qr";
-    fetch = {
-      type = "git";
-      url = "https://github.com/rsc/qr";
-      rev = "ca9a01fc2f9505024045632c50e5e8cd6142fafe";
-      sha256 = "04yx493g0fqp8i59zjxnl4k3s0cl0kr5m8xh0ph8m10r1hkw0xr3";
-    };
-  }
-]
diff --git a/pkgs/tools/networking/qrcp/default.nix b/pkgs/tools/networking/qrcp/default.nix
new file mode 100644
index 00000000000..f417bb496f4
--- /dev/null
+++ b/pkgs/tools/networking/qrcp/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, installShellFiles
+}:
+
+buildGoModule rec {
+  pname = "qrcp";
+  version = "0.8.4";
+
+  src = fetchFromGitHub {
+    owner = "claudiodangelis";
+    repo = "qrcp";
+    rev = version;
+    sha256 = "1m1xbb3x526j2v8m5m46km9zzj3dk9fvm5wckyqb8kxm4md12y50";
+  };
+
+  vendorSha256 = "1hn8c72fvih6ws1y2c4963pww3ld64m0yh3pmx62hwcy83bhb0v4";
+
+  subPackages = [ "." ];
+
+  nativeBuildInputs = [
+    installShellFiles
+  ];
+
+  postInstall = ''
+    installShellCompletion --bash --cmd qrcp <($out/bin/qrcp completion bash)
+    installShellCompletion --fish --cmd qrcp <($out/bin/qrcp completion fish)
+    installShellCompletion --zsh  --cmd qrcp <($out/bin/qrcp completion zsh)
+  '';
+
+  meta = with lib; {
+    homepage = "https://claudiodangelis.com/qrcp/";
+    description = "Transfer files over wifi by scanning a QR code from your terminal";
+    longDescription = ''
+      qrcp binds a web server to the address of your Wi-Fi network
+      interface on a random port and creates a handler for it. The default
+      handler serves the content and exits the program when the transfer is
+      complete.
+    '';
+    license = licenses.mit;
+    maintainers = with maintainers; [ fgaz ];
+  };
+}
diff --git a/pkgs/tools/networking/quickserve/default.nix b/pkgs/tools/networking/quickserve/default.nix
index 8f4876b6ee2..f23bbcd2537 100644
--- a/pkgs/tools/networking/quickserve/default.nix
+++ b/pkgs/tools/networking/quickserve/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, makeWrapper, fetchzip, python3, python3Packages }:
+{ lib, stdenv, makeWrapper, fetchzip, python3, python3Packages }:
 let
   threaded_servers = python3Packages.buildPythonPackage {
     name = "threaded_servers";
@@ -26,8 +26,8 @@ in stdenv.mkDerivation {
     runHook postInstall
   '';
 
-  meta = with stdenv.lib; {
-    description = "A simple HTTP server for quickly sharing files.";
+  meta = with lib; {
+    description = "A simple HTTP server for quickly sharing files";
     homepage = "https://xyne.archlinux.ca/projects/quickserve/";
     license = licenses.gpl2;
     maintainers = with maintainers; [ lassulus ];
diff --git a/pkgs/tools/networking/quicktun/default.nix b/pkgs/tools/networking/quicktun/default.nix
index 0f7a16caa82..8d227e1fbba 100644
--- a/pkgs/tools/networking/quicktun/default.nix
+++ b/pkgs/tools/networking/quicktun/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, libsodium }:
+{ lib, stdenv, fetchFromGitHub, libsodium }:
 
 stdenv.mkDerivation {
   pname = "quicktun";
@@ -22,7 +22,7 @@ stdenv.mkDerivation {
     install -vD out/quicktun* -t $out/bin
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Very simple, yet secure VPN software";
     homepage = "http://wiki.ucis.nl/QuickTun";
     maintainers = [ maintainers.fpletz ];
diff --git a/pkgs/tools/networking/radsecproxy/default.nix b/pkgs/tools/networking/radsecproxy/default.nix
index e2a0c900c52..1c56d520b90 100644
--- a/pkgs/tools/networking/radsecproxy/default.nix
+++ b/pkgs/tools/networking/radsecproxy/default.nix
@@ -1,14 +1,14 @@
-{ stdenv, fetchFromGitHub, openssl, autoreconfHook, nettle }:
+{ lib, stdenv, fetchFromGitHub, openssl, autoreconfHook, nettle }:
 
 stdenv.mkDerivation rec {
   pname = "radsecproxy";
-  version = "1.8.2";
+  version = "1.9.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "1g7q128cip1dac9jad58rd96afx4xz7x7vsiv0af8iyq2ivqvs2m";
+    sha256 = "0ppgnvmzk5j42zvz74mwaz6767lzf9vpl8y57w612fvqpg65g4bv";
   };
 
   nativeBuildInputs = [ autoreconfHook ];
@@ -20,9 +20,9 @@ stdenv.mkDerivation rec {
      "--localstatedir=/var"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://software.nordu.net/radsecproxy/";
-    description = "A generic RADIUS proxy that supports both UDP and TLS (RadSec) RADIUS transports.";
+    description = "A generic RADIUS proxy that supports both UDP and TLS (RadSec) RADIUS transports";
     license = licenses.bsd3;
     maintainers = with maintainers; [ sargon ];
     platforms = with platforms; linux;
diff --git a/pkgs/tools/networking/radvd/default.nix b/pkgs/tools/networking/radvd/default.nix
index aef67022f78..de8b9a0a4f1 100644
--- a/pkgs/tools/networking/radvd/default.nix
+++ b/pkgs/tools/networking/radvd/default.nix
@@ -1,18 +1,23 @@
-{ stdenv, fetchurl, pkgconfig, libdaemon, bison, flex, check }:
+{ lib, stdenv, fetchurl, pkg-config, libdaemon, bison, flex, check }:
 
 stdenv.mkDerivation rec {
   pname = "radvd";
-  version = "2.18";
+  version = "2.19";
 
   src = fetchurl {
     url = "http://www.litech.org/radvd/dist/${pname}-${version}.tar.xz";
-    sha256 = "1p2wlv3djvla0r84hdncc3wfa530xigs7z9ssc2v5r1pcpzgxgz1";
+    sha256 = "0h722f17h7cra1sjgrxhrrvx54mm47fs039909yhbabigxch8kjn";
   };
 
-  nativeBuildInputs = [ pkgconfig bison flex check ];
+  nativeBuildInputs = [ pkg-config bison flex check ];
   buildInputs = [ libdaemon ];
 
-  meta = with stdenv.lib; {
+  # Needed for cross-compilation
+  makeFlags = [
+    "AR=${stdenv.cc.targetPrefix}ar"
+  ];
+
+  meta = with lib; {
     homepage = "http://www.litech.org/radvd/";
     description = "IPv6 Router Advertisement Daemon";
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/ratools/default.nix b/pkgs/tools/networking/ratools/default.nix
index 23d0dae086e..0eea11bb3f5 100644
--- a/pkgs/tools/networking/ratools/default.nix
+++ b/pkgs/tools/networking/ratools/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub }:
+{ lib, stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation rec {
   pname = "ratools";
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
     install -vD man/* -t $out/share/man/man8
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A fast, dynamic, multi-threading framework for IPv6 Router Advertisements";
     homepage = "https://github.com/danrl/ratools";
     license = licenses.asl20;
diff --git a/pkgs/tools/networking/rcon/default.nix b/pkgs/tools/networking/rcon/default.nix
new file mode 100644
index 00000000000..03c2a1ae1a3
--- /dev/null
+++ b/pkgs/tools/networking/rcon/default.nix
@@ -0,0 +1,30 @@
+{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, glib, libbsd, check, pcre }:
+
+stdenv.mkDerivation rec {
+  pname = "rcon";
+  version = "0.6";
+
+  src = fetchFromGitHub {
+    owner = "n0la";
+    repo = "rcon";
+    rev = version;
+    sha256 = "sha256-bHm6JeWmpg42VZQXikHl+BMx9zimRLBQWemTqOxyLhw=";
+  };
+
+  nativeBuildInputs = [ cmake pkg-config ];
+
+  buildInputs = [
+    glib
+    libbsd
+    check
+    pcre
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/n0la/rcon";
+    description = "Source RCON client for command line";
+    maintainers = with maintainers; [ f4814n ];
+    platforms = with platforms; linux ++ darwin;
+    license = licenses.bsd2;
+  };
+}
diff --git a/pkgs/tools/networking/rdrview/default.nix b/pkgs/tools/networking/rdrview/default.nix
new file mode 100644
index 00000000000..8f510395705
--- /dev/null
+++ b/pkgs/tools/networking/rdrview/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, fetchFromGitHub, libxml2, curl, libseccomp }:
+
+stdenv.mkDerivation {
+  name = "rdrview";
+  version = "unstable-2020-12-22";
+
+  src = fetchFromGitHub {
+    owner = "eafer";
+    repo = "rdrview";
+    rev = "7be01fb36a6ab3311a9ad1c8c2c75bf5c1345d93";
+    sha256 = "00hnvrrrkyp5429rzcvabq2z00lp1l8wsqxw4h7qsdms707mjnxs";
+  };
+
+  buildInputs = [ libxml2 curl libseccomp ];
+
+  installPhase = ''
+    install -Dm755 rdrview -t $out/bin
+  '';
+
+  meta = with lib; {
+    description = "Command line tool to extract main content from a webpage";
+    homepage = "https://github.com/eafer/rdrview";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ djanatyn ];
+  };
+}
diff --git a/pkgs/tools/networking/reaver-wps-t6x/default.nix b/pkgs/tools/networking/reaver-wps-t6x/default.nix
index d347273f50e..147eb2c3bf2 100644
--- a/pkgs/tools/networking/reaver-wps-t6x/default.nix
+++ b/pkgs/tools/networking/reaver-wps-t6x/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, libpcap, pixiewps, makeWrapper }:
+{ lib, stdenv, fetchFromGitHub, libpcap, pixiewps, makeWrapper }:
 
 stdenv.mkDerivation rec {
   pname = "reaver-wps-t6x";
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
 
   sourceRoot = "source/src";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Online and offline brute force attack against WPS";
     homepage = "https://github.com/t6x/reaver-wps-fork-t6x";
     license = licenses.gpl2Plus;
diff --git a/pkgs/tools/networking/reaver-wps/default.nix b/pkgs/tools/networking/reaver-wps/default.nix
index 9f4f2d5bea4..ec226f50668 100644
--- a/pkgs/tools/networking/reaver-wps/default.nix
+++ b/pkgs/tools/networking/reaver-wps/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libpcap, sqlite, makeWrapper }:
+{ lib, stdenv, fetchurl, libpcap, sqlite, makeWrapper }:
 
 stdenv.mkDerivation rec {
   version = "1.4";
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
     wrapProgram $out/bin/wash   --run "[ -s ${confdir}/reaver/reaver.db ] || install -D $out/etc/reaver.db ${confdir}/reaver/reaver.db"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Brute force attack against Wifi Protected Setup";
     homepage = "https://code.google.com/archive/p/reaver-wps/";
     license = licenses.gpl2Plus;
diff --git a/pkgs/tools/networking/redfang/default.nix b/pkgs/tools/networking/redfang/default.nix
new file mode 100644
index 00000000000..9e18d687dc0
--- /dev/null
+++ b/pkgs/tools/networking/redfang/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenv, fetchFromGitLab, fetchpatch, bluez }:
+
+stdenv.mkDerivation rec {
+  pname = "redfang";
+  version = "2.5";
+
+  src = fetchFromGitLab {
+    group = "kalilinux";
+    owner = "packages";
+    repo = pname;
+    rev = "upstream/${version}";
+    sha256 = "sha256-dF9QmBckyHAZ+JbLr0jTmp0eMu947unJqjrTMsJAfIE=";
+  };
+
+  patches = [
+    # make install rule
+    (fetchpatch {
+      url = "https://gitlab.com/kalilinux/packages/redfang/-/merge_requests/1.diff";
+      sha256 = "sha256-oxIrUAucxsBL4+u9zNNe2XXoAd088AEAHcRB/AN7B1M=";
+    })
+  ];
+
+  installFlags = [ "DESTDIR=$(out)" ];
+
+  NIX_CFLAGS_COMPILE = "-Wno-format-security";
+
+  buildInputs = [ bluez ];
+
+  meta = with lib; {
+    description = "A small proof-of-concept application to find non discoverable bluetooth devices";
+    homepage = "https://gitlab.com/kalilinux/packages/redfang";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ fortuneteller2k ];
+  };
+}
diff --git a/pkgs/tools/networking/redir/default.nix b/pkgs/tools/networking/redir/default.nix
index 7f69dacedf3..83d52fdf10d 100644
--- a/pkgs/tools/networking/redir/default.nix
+++ b/pkgs/tools/networking/redir/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoreconfHook }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook }:
 
 stdenv.mkDerivation rec {
   pname = "redir";
@@ -16,8 +16,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A TCP port redirector for UNIX";
     homepage = "https://github.com/troglobit/redir";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = with stdenv.lib.maintainers; [ ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    maintainers = with lib.maintainers; [ ];
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/redsocks/default.nix b/pkgs/tools/networking/redsocks/default.nix
index d389221eabb..b609cce90bc 100644
--- a/pkgs/tools/networking/redsocks/default.nix
+++ b/pkgs/tools/networking/redsocks/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, libevent }:
+{ lib, stdenv, fetchFromGitHub, libevent }:
 
 let
   pkg = "redsocks";
@@ -26,8 +26,8 @@ stdenv.mkDerivation {
   meta = {
     description = "Transparent redirector of any TCP connection to proxy";
     homepage = "http://darkk.net.ru/redsocks/";
-    license = stdenv.lib.licenses.asl20;
-    maintainers = [ stdenv.lib.maintainers.ekleog ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.asl20;
+    maintainers = [ lib.maintainers.ekleog ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/ripmime/default.nix b/pkgs/tools/networking/ripmime/default.nix
index 0c3c32270b1..0dfeb900c9a 100644
--- a/pkgs/tools/networking/ripmime/default.nix
+++ b/pkgs/tools/networking/ripmime/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl, libiconv }:
 
 stdenv.mkDerivation rec {
   pname = "ripmime";
@@ -8,6 +8,7 @@ stdenv.mkDerivation rec {
     sha256 = "0sj06ibmlzy34n8v0mnlq2gwidy7n2aqcwgjh0xssz3vi941aqc9";
   };
 
+  buildInputs = [ libiconv ];
   preInstall = ''
     sed -i Makefile -e "s@LOCATION=.*@LOCATION=$out@" -e "s@man/man1@share/&@"
     mkdir -p "$out/bin" "$out/share/man/man1"
@@ -15,11 +16,11 @@ stdenv.mkDerivation rec {
 
   NIX_CFLAGS_COMPILE=" -Wno-error ";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Attachment extractor for MIME messages";
     maintainers = with maintainers; [ raskin ];
     homepage = "http://www.pldaniels.com/ripmime/";
-    platforms = platforms.linux;
+    platforms = platforms.all;
   };
 
   passthru = {
diff --git a/pkgs/tools/networking/rp-pppoe/default.nix b/pkgs/tools/networking/rp-pppoe/default.nix
index d8476d1d159..fd3a563c209 100644
--- a/pkgs/tools/networking/rp-pppoe/default.nix
+++ b/pkgs/tools/networking/rp-pppoe/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ppp } :
+{ lib, stdenv, fetchurl, ppp } :
 let
   version = "3.12";
 in
@@ -21,7 +21,7 @@ stdenv.mkDerivation {
     sed -i Makefile -e 's@PPPOESERVER_PPPD_OPTIONS=@&$(out)@'
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Roaring Penguin Point-to-Point over Ethernet tool";
     platforms = platforms.linux;
     homepage = "https://www.roaringpenguin.com/products/pppoe";
diff --git a/pkgs/tools/networking/rshijack/default.nix b/pkgs/tools/networking/rshijack/default.nix
index 59558028c01..39f4004eaee 100644
--- a/pkgs/tools/networking/rshijack/default.nix
+++ b/pkgs/tools/networking/rshijack/default.nix
@@ -2,22 +2,22 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rshijack";
-  version = "0.3.0";
+  version = "0.4.0";
 
   src = fetchFromGitHub {
     owner = "kpcyrd";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0y01hi3jpfawqlqs8ka0vwfhjw5j5gkhk2nz5m13ns2h27bw20v7";
+    sha256 = "sha256-jpiwbjsYsb5scFbjtv2eTv6oo0HWWTYLpnpTZ8DEqb0=";
   };
 
-  cargoSha256 = "0l1kavacnjvi22l6pawgkqqxnjaizi3pddqkhwjshw4pzzixzvli";
+  cargoSha256 = "sha256-biHDnLu7OiYpnwtmayk2m6QYvX51YUVJH2FGP4qo14Q=";
 
   meta = with lib; {
     description = "TCP connection hijacker";
     homepage = "https://github.com/kpcyrd/rshijack";
     license = licenses.gpl3;
     maintainers = with maintainers; [ xrelkd ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/s3cmd/default.nix b/pkgs/tools/networking/s3cmd/default.nix
index 53f24ddb752..888d6a05c67 100644
--- a/pkgs/tools/networking/s3cmd/default.nix
+++ b/pkgs/tools/networking/s3cmd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildPythonApplication, fetchFromGitHub, python_magic, dateutil }:
+{ lib, buildPythonApplication, fetchFromGitHub, python_magic, python-dateutil }:
 
 buildPythonApplication rec {
   pname = "s3cmd";
@@ -11,11 +11,11 @@ buildPythonApplication rec {
     sha256 = "0p6mbgai7f0c12pkw4s7d649gj1f8hywj60pscxvj9jsna3iifhs";
   };
 
-  propagatedBuildInputs = [ python_magic dateutil ];
+  propagatedBuildInputs = [ python_magic python-dateutil ];
 
   dontUseSetuptoolsCheck = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://s3tools.org/s3cmd";
     description = "Command line tool for managing Amazon S3 and CloudFront services";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/s3gof3r/default.nix b/pkgs/tools/networking/s3gof3r/default.nix
index 0930be914cf..4623b68ad4c 100644
--- a/pkgs/tools/networking/s3gof3r/default.nix
+++ b/pkgs/tools/networking/s3gof3r/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, buildGoPackage, fetchgit }:
+{ lib, buildGoPackage, fetchgit }:
 
 buildGoPackage rec {
   pname = "s3gof3r";
-  version = "20151109-${stdenv.lib.strings.substring 0 7 rev}";
+  version = "20151109-${lib.strings.substring 0 7 rev}";
   rev = "31603a0dc94aefb822bfe2ceea75a6be6013b445";
 
   goPackagePath = "github.com/rlmcpherson/s3gof3r";
diff --git a/pkgs/tools/networking/s3rs/default.nix b/pkgs/tools/networking/s3rs/default.nix
new file mode 100644
index 00000000000..2e707ed9916
--- /dev/null
+++ b/pkgs/tools/networking/s3rs/default.nix
@@ -0,0 +1,26 @@
+{ lib, stdenv, rustPlatform, python3, perl, openssl, Security, fetchFromGitHub, pkg-config }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "s3rs";
+  version = "0.4.8";
+
+  src = fetchFromGitHub {
+    owner = "yanganto";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-lYIE5yR7UNUjpqfwT6R0C0ninNvVZdatYd/n+yyGsms=";
+  };
+
+  cargoSha256 = "sha256-vCTJ7TClvuIP9IoqXwNFH7/u9jXt/Ue/Dhefx5rCgmA=";
+
+  nativeBuildInputs = [ python3 perl pkg-config ];
+  buildInputs = [ openssl ]
+    ++ lib.optionals stdenv.isDarwin [ Security ];
+
+  meta = with lib; {
+    description = "A s3 cli client with multi configs with diffent provider";
+    homepage = "https://github.com/yanganto/s3rs";
+    license = licenses.mit;
+    maintainers = with maintainers; [ yanganto ];
+  };
+}
diff --git a/pkgs/tools/networking/s4cmd/default.nix b/pkgs/tools/networking/s4cmd/default.nix
index dedbc751179..95dc02cb5cd 100644
--- a/pkgs/tools/networking/s4cmd/default.nix
+++ b/pkgs/tools/networking/s4cmd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, python3Packages }:
+{ lib, python3Packages }:
 
 python3Packages.buildPythonApplication rec {
   pname = "s4cmd";
@@ -26,7 +26,7 @@ python3Packages.buildPythonApplication rec {
   # Test suite requires an S3 bucket
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/bloomreach/s4cmd";
     description = "Super S3 command line tool";
     license = licenses.asl20;
diff --git a/pkgs/tools/networking/s5cmd/default.nix b/pkgs/tools/networking/s5cmd/default.nix
new file mode 100644
index 00000000000..f4a6c2915be
--- /dev/null
+++ b/pkgs/tools/networking/s5cmd/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "s5cmd";
+  version = "1.2.1";
+
+  src = fetchFromGitHub {
+    owner = "peak";
+    repo = "s5cmd";
+    rev = "v${version}";
+    sha256 = "sha256-09vBYwnTfLIuu2SPP7DYB+U6sUkQffglIOHNn4+47qQ=";
+  };
+
+  vendorSha256 = null;
+
+  meta = with lib; {
+    homepage = "https://github.com/peak/s5cmd";
+    description = "Parallel S3 and local filesystem execution tool";
+    license = licenses.mit;
+    maintainers = with maintainers; [ tomberek ];
+  };
+}
diff --git a/pkgs/tools/networking/s6-dns/default.nix b/pkgs/tools/networking/s6-dns/default.nix
index 739fdc2e2fc..a4ebf5beef9 100644
--- a/pkgs/tools/networking/s6-dns/default.nix
+++ b/pkgs/tools/networking/s6-dns/default.nix
@@ -4,8 +4,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "s6-dns";
-  version = "2.3.2.0";
-  sha256 = "09hyb1xv9glqq0yy7wy8hiwvlr78kwv552pags8ancgamag15di7";
+  version = "2.3.5.1";
+  sha256 = "0qsgqwdr5ms337fc9f2b4aa5cr7myvbzndvgkgswnrdwszjm078c";
 
   description = "A suite of DNS client programs and libraries for Unix systems";
 
diff --git a/pkgs/tools/networking/s6-networking/default.nix b/pkgs/tools/networking/s6-networking/default.nix
index f8c479d5ce2..e0c8eda9c74 100644
--- a/pkgs/tools/networking/s6-networking/default.nix
+++ b/pkgs/tools/networking/s6-networking/default.nix
@@ -1,17 +1,16 @@
-{ stdenv, skawarePackages
+{ lib, skawarePackages
 
 # Whether to build the TLS/SSL tools and what library to use
-# acceptable values: "libressl", false
-# TODO: add bearssl
-, sslSupport ? "libressl" , libressl
+# acceptable values: "bearssl", "libressl", false
+, sslSupport ? "bearssl" , libressl, bearssl
 }:
 
 with skawarePackages;
 let
-  inherit (stdenv) lib;
   sslSupportEnabled = sslSupport != false;
   sslLibs = {
     libressl = libressl;
+    bearssl = bearssl;
   };
 
 in
@@ -20,8 +19,8 @@ assert sslSupportEnabled -> sslLibs ? ${sslSupport};
 
 buildPackage {
   pname = "s6-networking";
-  version = "2.3.1.2";
-  sha256 = "1029bgwfmv903y5ji93j75m7p2jgchdxya1khxzb42q2z7yxnlyr";
+  version = "2.4.1.1";
+  sha256 = "0m55ibx7k2wgrqbpci1n667ij0h925ajzggxalq2pj65kmwcmyx3";
 
   description = "A suite of small networking utilities for Unix systems";
 
@@ -59,7 +58,7 @@ buildPackage {
     # remove all s6 executables from build directory
     rm $(find -name "s6-*" -type f -mindepth 1 -maxdepth 1 -executable)
     rm minidentd
-    rm libs6net.* libstls.*
+    rm libs6net.* libstls.* libs6tls.* libsbearssl.*
 
     mv doc $doc/share/doc/s6-networking/html
   '';
diff --git a/pkgs/tools/networking/saldl/default.nix b/pkgs/tools/networking/saldl/default.nix
index d51e5515bd6..d02acb3100a 100644
--- a/pkgs/tools/networking/saldl/default.nix
+++ b/pkgs/tools/networking/saldl/default.nix
@@ -1,7 +1,8 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
-, pkgconfig
+, pkg-config
 , wafHook
+, python3
 , asciidoc
 , docbook_xml_dtd_45
 , docbook_xsl
@@ -13,18 +14,19 @@
 
 stdenv.mkDerivation rec {
   pname = "saldl";
-  version = "40";
+  version = "41";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "19ajci5h5gdnrvwf0l7xy5s58z2di68rrvcmqpsmpp4lfr37rk2l";
+    sha256 = "sha256-PAX2MUyBWWU8kGkaeoCJteidgszh7ipwDJbrLXzVsn0=";
   };
 
   nativeBuildInputs = [
-    pkgconfig
+    pkg-config
     wafHook
+    python3
     asciidoc
     docbook_xml_dtd_45
     docbook_xsl
@@ -38,7 +40,7 @@ stdenv.mkDerivation rec {
 
   outputs = [ "out" "man" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "CLI downloader optimized for speed and early preview";
     homepage = "https://saldl.github.io";
     license = licenses.agpl3;
diff --git a/pkgs/tools/networking/samplicator/default.nix b/pkgs/tools/networking/samplicator/default.nix
index 0cc446edd9c..44546465d9e 100644
--- a/pkgs/tools/networking/samplicator/default.nix
+++ b/pkgs/tools/networking/samplicator/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, autoreconfHook }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook }:
 
 stdenv.mkDerivation rec {
   pname = "samplicator";
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Send copies of (UDP) datagrams to multiple receivers";
     homepage = "https://github.com/sleinen/samplicator/";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.unix;
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/shadowfox/default.nix b/pkgs/tools/networking/shadowfox/default.nix
index 5f7247248e7..e6b1c823eb8 100644
--- a/pkgs/tools/networking/shadowfox/default.nix
+++ b/pkgs/tools/networking/shadowfox/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, buildGoModule }:
+{ lib, fetchFromGitHub, buildGoModule }:
 
 buildGoModule rec {
   pname = "shadowfox";
@@ -15,9 +15,11 @@ buildGoModule rec {
 
   doCheck = false;
 
-  buildFlags = [ "--tags" "release" ];
+  buildFlagsArray = [
+    "-ldflags=-X main.tag=v${version}"
+  ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = ''
       This project aims at creating a universal dark theme for Firefox while
       adhering to the modern design principles set by Mozilla.
diff --git a/pkgs/tools/networking/shadowsocks-libev/default.nix b/pkgs/tools/networking/shadowsocks-libev/default.nix
index 7ad0f1e862d..b0a24b539c2 100644
--- a/pkgs/tools/networking/shadowsocks-libev/default.nix
+++ b/pkgs/tools/networking/shadowsocks-libev/default.nix
@@ -1,18 +1,18 @@
-{ stdenv, fetchFromGitHub, cmake
+{ lib, stdenv, fetchFromGitHub, cmake
 , libsodium, mbedtls, libev, c-ares, pcre
 , asciidoc, xmlto, docbook_xml_dtd_45, docbook_xsl, libxslt
 }:
 
 stdenv.mkDerivation rec {
   pname = "shadowsocks-libev";
-  version = "3.3.4";
+  version = "3.3.5";
 
   # Git tag includes CMake build files which are much more convenient.
   src = fetchFromGitHub {
     owner = "shadowsocks";
     repo = pname;
     rev = "refs/tags/v${version}";
-    sha256 = "05f1vvd0r0wanbb61rf4p6y991jp7625l0i223v23r2ji43y3i5a";
+    sha256 = "1iqpmhxk354db1x08axg6wrdy9p9a4mz0h9351i3mf3pqd1v6fdw";
     fetchSubmodules = true;
   };
 
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
     cp lib/* $out/lib
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A lightweight secured SOCKS5 proxy";
     longDescription = ''
       Shadowsocks-libev is a lightweight secured SOCKS5 proxy for embedded devices and low-end boxes.
diff --git a/pkgs/tools/networking/shadowsocks-rust/default.nix b/pkgs/tools/networking/shadowsocks-rust/default.nix
index 3fb34697da1..97157071733 100644
--- a/pkgs/tools/networking/shadowsocks-rust/default.nix
+++ b/pkgs/tools/networking/shadowsocks-rust/default.nix
@@ -1,28 +1,29 @@
-{ stdenv, fetchFromGitHub, rustPlatform, pkgconfig, openssl, libsodium, Security }:
+{ lib, stdenv, fetchFromGitHub, rustPlatform, CoreServices, libiconv }:
 
 rustPlatform.buildRustPackage rec {
   pname = "shadowsocks-rust";
-  version = "1.8.16";
+  version = "1.10.7";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "shadowsocks";
     repo = pname;
-    sha256 = "09wncvy1cn8038xf8srz8y955xw9h59zh7avrh060wm50azrhlg5";
+    sha256 = "08k5j469750bhlq49qc5nwc2jjgmy9qsm58nf2jfwhxlpflv12sc";
   };
 
-  cargoSha256 = "0n03dg1rrhlryap0dqqmmzhp49lxvhh3478z123x23fm04ygln44";
+  cargoSha256 = "1r8w5cdygd26m95q9qpqa85aixx25jr510hpjlllbpfvm7zjpbqk";
 
-  SODIUM_USE_PKG_CONFIG = 1;
+  RUSTC_BOOTSTRAP = 1;
 
-  buildInputs = [ openssl libsodium ]
-    ++ stdenv.lib.optionals stdenv.isDarwin [ Security ];
-  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = lib.optionals stdenv.isDarwin [ CoreServices libiconv ];
 
-  meta = with stdenv.lib; {
+  checkFlags = [ "--skip=http_proxy" "--skip=udp_tunnel" ];
+
+  meta = with lib; {
     homepage = "https://github.com/shadowsocks/shadowsocks-rust";
     description = "A Rust port of shadowsocks";
     license = licenses.mit;
     maintainers = [ maintainers.marsam ];
+    broken = stdenv.isAarch64;  # crypto2 crate doesn't build on aarch64
   };
 }
diff --git a/pkgs/tools/networking/shncpd/default.nix b/pkgs/tools/networking/shncpd/default.nix
index 46c9b22248a..8cfd1f94252 100644
--- a/pkgs/tools/networking/shncpd/default.nix
+++ b/pkgs/tools/networking/shncpd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub }:
+{ lib, stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation {
   pname = "shncpd";
@@ -17,7 +17,7 @@ stdenv.mkDerivation {
     makeFlags=( "PREFIX=$out" )
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Simple, stupid and slow HNCP daemon";
     homepage = "https://www.irif.univ-paris-diderot.fr/~jch/software/homenet/shncpd.html";
     license = licenses.mit;
diff --git a/pkgs/tools/networking/shorewall/default.nix b/pkgs/tools/networking/shorewall/default.nix
index 67f81b82105..f95fc9d92b1 100644
--- a/pkgs/tools/networking/shorewall/default.nix
+++ b/pkgs/tools/networking/shorewall/default.nix
@@ -3,23 +3,23 @@
 , fetchurl
 , gnugrep
 , gnused
-, iproute
+, iproute2
 , ipset
 , iptables
 , perl
 , perlPackages
-, stdenv
+, lib, stdenv
 , tree
-, utillinux
+, util-linux
 }:
 let
-  PATH = stdenv.lib.concatStringsSep ":"
+  PATH = lib.concatStringsSep ":"
            [ "${coreutils}/bin"
-             "${iproute}/bin"
+             "${iproute2}/bin"
              "${iptables}/bin"
              "${ipset}/bin"
              "${ebtables}/bin"
-             "${utillinux}/bin"
+             "${util-linux}/bin"
              "${gnugrep}/bin"
              "${gnused}/bin"
            ];
@@ -46,11 +46,11 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     coreutils
-    iproute
+    iproute2
     ipset
     iptables
     ebtables
-    utillinux
+    util-linux
     gnugrep
     gnused
     perl
@@ -124,7 +124,7 @@ stdenv.mkDerivation rec {
       not use Netfilter's ipchains compatibility mode and can thus take
       advantage of Netfilter's connection state tracking capabilities.
     '';
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/siege/default.nix b/pkgs/tools/networking/siege/default.nix
index 21b6bd346fd..175595edafb 100644
--- a/pkgs/tools/networking/siege/default.nix
+++ b/pkgs/tools/networking/siege/default.nix
@@ -1,16 +1,25 @@
-{ stdenv, fetchurl, openssl, zlib }:
+{ lib
+, stdenv
+, fetchurl
+, openssl
+, zlib
+}:
 
 stdenv.mkDerivation rec {
-  name = "siege-4.0.6";
+  pname = "siege";
+  version = "4.1.1";
 
   src = fetchurl {
-    url = "http://download.joedog.org/siege/${name}.tar.gz";
-    sha256 = "03w0iska74nb6r8wnljn7inasbq7qflf55vjmxnb9jrc4pi7mpnw";
+    url = "http://download.joedog.org/siege/${pname}-${version}.tar.gz";
+    sha256 = "1a74py0ib1gr3znv9ah5acw67ngl08b14dbc90ww9clvgdr2ag0l";
   };
 
-  NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lgcc_s";
+  NIX_LDFLAGS = lib.optionalString stdenv.isLinux "-lgcc_s";
 
-  buildInputs = [ openssl zlib ];
+  buildInputs = [
+    openssl
+    zlib
+  ];
 
   prePatch = ''
     sed -i -e 's/u_int32_t/uint32_t/g' -e '1i#include <stdint.h>' src/hash.c
@@ -21,10 +30,11 @@ stdenv.mkDerivation rec {
     "--with-zlib=${zlib.dev}"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "HTTP load tester";
-    maintainers = with maintainers; [ ocharles raskin ];
-    platforms = platforms.unix;
+    homepage = "https://www.joedog.org/siege-home/";
     license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ raskin ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/simpleproxy/default.nix b/pkgs/tools/networking/simpleproxy/default.nix
index 7a5bc713fae..6c110be05da 100644
--- a/pkgs/tools/networking/simpleproxy/default.nix
+++ b/pkgs/tools/networking/simpleproxy/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub }:
+{ lib, stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation rec {
   pname = "simpleproxy";
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     sha256 = "1my9g4vp19dikx3fsbii4ichid1bs9b9in46bkg05gbljhj340f6";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/vzaliva/simpleproxy";
     description = "A simple TCP proxy";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/sipcalc/default.nix b/pkgs/tools/networking/sipcalc/default.nix
index 081f2005330..c9470cd5b8b 100644
--- a/pkgs/tools/networking/sipcalc/default.nix
+++ b/pkgs/tools/networking/sipcalc/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "sipcalc";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "cfd476c667f7a119e49eb5fe8adcfb9d2339bc2e0d4d01a1d64b7c229be56357";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Advanced console ip subnet calculator";
     homepage = "http://www.routemeister.net/projects/sipcalc/";
     license = licenses.bsd3;
diff --git a/pkgs/tools/networking/sipsak/default.nix b/pkgs/tools/networking/sipsak/default.nix
index 09de1c2e594..55620497286 100644
--- a/pkgs/tools/networking/sipsak/default.nix
+++ b/pkgs/tools/networking/sipsak/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, autoreconfHook, c-ares, openssl ? null }:
+{ lib, stdenv, fetchurl, autoreconfHook, c-ares, openssl ? null }:
 
 stdenv.mkDerivation rec {
   pname = "sipsak";
@@ -17,10 +17,10 @@ stdenv.mkDerivation rec {
     sha256 = "769fe59966b1962b67aa35aad7beb9a2110ebdface36558072a05c6405fb5374";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/sipwise/sipsak";
     description = "SIP Swiss army knife";
-    license = stdenv.lib.licenses.gpl2;
+    license = lib.licenses.gpl2;
     maintainers = with maintainers; [ sheenobu ];
     platforms = with platforms; unix;
   };
diff --git a/pkgs/tools/networking/sish/default.nix b/pkgs/tools/networking/sish/default.nix
new file mode 100644
index 00000000000..181582f5452
--- /dev/null
+++ b/pkgs/tools/networking/sish/default.nix
@@ -0,0 +1,25 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "sish";
+  version = "1.1.5";
+
+  src = fetchFromGitHub {
+    owner = "antoniomika";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "06ckgxhnijs7yrj0hhwh1vk2fvapwn6wb44w3g6qs6n6fmqh92mb";
+  };
+
+  vendorSha256 = "0vfazbaiaqka5nd7imh5ls7k3asf1c17y081nzkban98svg3l3sj";
+
+  meta = with lib; {
+    description = "HTTP(S)/WS(S)/TCP Tunnels to localhost";
+    homepage = "https://github.com/antoniomika/sish";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/networking/slirp4netns/default.nix b/pkgs/tools/networking/slirp4netns/default.nix
index 60cb3413253..c08f234ab5b 100644
--- a/pkgs/tools/networking/slirp4netns/default.nix
+++ b/pkgs/tools/networking/slirp4netns/default.nix
@@ -1,4 +1,5 @@
-{ stdenv
+{ lib
+, stdenv
 , fetchFromGitHub
 , autoreconfHook
 , pkg-config
@@ -11,13 +12,13 @@
 
 stdenv.mkDerivation rec {
   pname = "slirp4netns";
-  version = "1.1.4";
+  version = "1.1.11";
 
   src = fetchFromGitHub {
     owner = "rootless-containers";
     repo = "slirp4netns";
     rev = "v${version}";
-    sha256 = "13hlljkqss9abjpwaa5gcn6qnax0ws03zzh45c4rv1if7rwk6nbl";
+    sha256 = "sha256-Gxcu9XlLPLcFUoCDrMeWJ6SGUSHU9ZKPHq1oBvmNoJ8=";
   };
 
   nativeBuildInputs = [ autoreconfHook pkg-config ];
@@ -28,7 +29,7 @@ stdenv.mkDerivation rec {
 
   passthru.tests = { inherit (nixosTests) podman; };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/rootless-containers/slirp4netns";
     description = "User-mode networking for unprivileged network namespaces";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/smartdns/default.nix b/pkgs/tools/networking/smartdns/default.nix
index 62a9aaf216c..91fcc0e982e 100644
--- a/pkgs/tools/networking/smartdns/default.nix
+++ b/pkgs/tools/networking/smartdns/default.nix
@@ -1,15 +1,14 @@
-{ stdenv, fetchFromGitHub, openssl }:
+{ lib, stdenv, fetchFromGitHub, openssl }:
 
 stdenv.mkDerivation rec {
   pname = "smartdns";
-  version =
-    "30"; # This would be used later in the next release as the FHS commit integrated into realse 31.
+  version = "33";
 
   src = fetchFromGitHub {
     owner = "pymumu";
     repo = pname;
-    rev = "3ad7cd7f454eec2fbdf338c0eb0541da301f1e73";
-    sha256 = "1y9p8gxpj2k4a10maggkxg8l55jvr7x1wyxi69waxf56ggh2dvv0";
+    rev = "Release${version}";
+    sha256 = "0cmzpm4y1yi96mg2cz2byqw6vl62dgnikldy08q43vi7jl3y0749";
   };
 
   buildInputs = [ openssl ];
@@ -22,7 +21,7 @@ stdenv.mkDerivation rec {
 
   installFlags = [ "SYSCONFDIR=${placeholder "out"}/etc" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description =
       "A local DNS server to obtain the fastest website IP for the best Internet experience";
     longDescription = ''
diff --git a/pkgs/tools/networking/smokeping/default.nix b/pkgs/tools/networking/smokeping/default.nix
index 80f8b49a0cc..6d0d5227111 100644
--- a/pkgs/tools/networking/smokeping/default.nix
+++ b/pkgs/tools/networking/smokeping/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fping, rrdtool, perlPackages }:
+{ lib, stdenv, fetchurl, fping, rrdtool, perlPackages }:
 
 stdenv.mkDerivation rec {
   pname = "smokeping";
@@ -17,8 +17,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Network latency collector";
     homepage = "http://oss.oetiker.ch/smokeping";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.all;
-    maintainers = [ stdenv.lib.maintainers.erictapen ];
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.all;
+    maintainers = [ lib.maintainers.erictapen ];
   };
 }
diff --git a/pkgs/tools/networking/snabb/default.nix b/pkgs/tools/networking/snabb/default.nix
index 52ad14c1d11..affe6577eb8 100644
--- a/pkgs/tools/networking/snabb/default.nix
+++ b/pkgs/tools/networking/snabb/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, fetchFromGitHub, bash, makeWrapper, git, mysql, diffutils, which, coreutils, procps, nettools
+{ lib, stdenv, fetchFromGitHub, bash, makeWrapper, git, mariadb, diffutils, which, coreutils, procps, nettools
 ,supportOpenstack ? true
 }:
 
-with stdenv.lib;
+with lib;
 
 stdenv.mkDerivation rec {
   pname = "snabb";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
     sha256 = "1sas9d9kk92mc2wrwgmm0xxz7ycmh388dwvyxf1hy183yvin1nac";
   };
 
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
   NIX_CFLAGS_COMPILE = [ "-Wno-error=stringop-truncation" ];
 
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
     done
   '' + optionalString supportOpenstack ''
     # We need a way to pass $PATH to the scripts
-    sed -i '2iexport PATH=${git}/bin:${mysql}/bin:${which}/bin:${procps}/bin:${coreutils}/bin' src/program/snabbnfv/neutron_sync_master/neutron_sync_master.sh.inc
+    sed -i '2iexport PATH=${git}/bin:${mariadb}/bin:${which}/bin:${procps}/bin:${coreutils}/bin' src/program/snabbnfv/neutron_sync_master/neutron_sync_master.sh.inc
     sed -i '2iexport PATH=${git}/bin:${coreutils}/bin:${diffutils}/bin:${nettools}/bin' src/program/snabbnfv/neutron_sync_agent/neutron_sync_agent.sh.inc
   '';
 
@@ -58,6 +58,6 @@ stdenv.mkDerivation rec {
     '';
     platforms = [ "x86_64-linux" ];
     license = licenses.asl20;
-    maintainers = [ maintainers.lukego maintainers.domenkozar ];
+    maintainers = [ maintainers.lukego ];
   };
 }
diff --git a/pkgs/tools/networking/sniffglue/default.nix b/pkgs/tools/networking/sniffglue/default.nix
index ec57e851f4b..13efa6e999c 100644
--- a/pkgs/tools/networking/sniffglue/default.nix
+++ b/pkgs/tools/networking/sniffglue/default.nix
@@ -1,26 +1,26 @@
-{ lib, fetchFromGitHub, rustPlatform, libpcap, libseccomp, pkgconfig }:
+{ lib, fetchFromGitHub, rustPlatform, libpcap, libseccomp, pkg-config }:
 
 rustPlatform.buildRustPackage rec {
   pname = "sniffglue";
-  version = "0.11.1";
+  version = "0.12.1";
 
   src = fetchFromGitHub {
     owner = "kpcyrd";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0lkz25z0qy1giss4rnhkx9fvsdd8ckf4z1gqw46zl664x96bb705";
+    sha256 = "sha256-2LyCiW1MrAahpbzyxot0INPMzo0Vl/JToMZTinCQdgs=";
   };
 
-  cargoSha256 = "01ya9535whi2kviw57f25n8h05ckpb4bq1h7qav6srai97rm937s";
+  cargoSha256 = "sha256-AGwiyC7Zf8KHQIHfHByL06sdbS4vEXUyj1wGw7Q1N9I=";
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [ libpcap libseccomp ];
 
   meta = with lib; {
     description = "Secure multithreaded packet sniffer";
     homepage = "https://github.com/kpcyrd/sniffglue";
-    license = licenses.gpl3;
+    license = licenses.gpl3Plus;
     maintainers = with maintainers; [ xrelkd ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/tools/networking/socat/2.x.nix b/pkgs/tools/networking/socat/2.x.nix
index 97775a00604..0105fa322c1 100644
--- a/pkgs/tools/networking/socat/2.x.nix
+++ b/pkgs/tools/networking/socat/2.x.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, openssl }:
+{ lib, stdenv, fetchurl, openssl }:
 
 stdenv.mkDerivation rec {
   name = "socat-2.0.0-b9";
@@ -10,9 +10,9 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ openssl ];
 
-  patches = stdenv.lib.singleton ./libressl-fixes.patch ;
+  patches = lib.singleton ./libressl-fixes.patch ;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A utility for bidirectional data transfer between two independent data channels";
     homepage = "http://www.dest-unreach.org/socat/";
     repositories.git = "git://repo.or.cz/socat.git";
diff --git a/pkgs/tools/networking/socat/default.nix b/pkgs/tools/networking/socat/default.nix
index c50b2236c9e..7a24ccf33b7 100644
--- a/pkgs/tools/networking/socat/default.nix
+++ b/pkgs/tools/networking/socat/default.nix
@@ -1,11 +1,19 @@
-{ stdenv, fetchurl, openssl, readline, which, nettools }:
+{ lib
+, fetchurl
+, nettools
+, openssl
+, readline
+, stdenv
+, which
+}:
 
 stdenv.mkDerivation rec {
-  name = "socat-1.7.3.4";
+  pname = "socat";
+  version = "1.7.4.1";
 
   src = fetchurl {
-    url = "http://www.dest-unreach.org/socat/download/${name}.tar.bz2";
-    sha256 = "1z7xgnwiqpcv1j6aghhj9nqbx7cg3gpc4n9j7vi9hm7nhv5788wp";
+    url = "http://www.dest-unreach.org/socat/download/${pname}-${version}.tar.bz2";
+    sha256 = "1sbmqqvni3ss9wyay6ik5v81kxffkra80mh4ypgj74g82iba5b1z";
   };
 
   postPatch = ''
@@ -22,12 +30,12 @@ stdenv.mkDerivation rec {
   checkInputs = [ which nettools ];
   doCheck = false; # fails a bunch, hangs
 
-  meta = {
-    description = "A utility for bidirectional data transfer between two independent data channels";
+  meta = with lib; {
+    description = "Utility for bidirectional data transfer between two independent data channels";
     homepage = "http://www.dest-unreach.org/socat/";
     repositories.git = "git://repo.or.cz/socat.git";
-    platforms = stdenv.lib.platforms.unix;
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
+    platforms = platforms.unix;
+    license = with licenses; [ gpl2Only ];
+    maintainers = with maintainers; [ eelco ];
   };
 }
diff --git a/pkgs/tools/networking/spiped/default.nix b/pkgs/tools/networking/spiped/default.nix
index 9cc3370c0a1..8b9d4c9e7b8 100644
--- a/pkgs/tools/networking/spiped/default.nix
+++ b/pkgs/tools/networking/spiped/default.nix
@@ -1,41 +1,38 @@
-{ stdenv, fetchurl, openssl, coreutils }:
+{ lib, stdenv, fetchurl, openssl, coreutils }:
 
 stdenv.mkDerivation rec {
   pname = "spiped";
-  version = "1.5.0";
+  version = "1.6.1";
 
   src = fetchurl {
     url    = "https://www.tarsnap.com/spiped/${pname}-${version}.tgz";
-    sha256 = "1mxcbxifr3bnj6ga8lz88y4bhff016i6kjdzwbb3gzb2zcs4pxxj";
+    sha256 = "8d7089979db79a531a0ecc507b113ac6f2cf5f19305571eff1d3413e0ab33713";
   };
 
   buildInputs = [ openssl ];
 
-  patchPhase = ''
+  postPatch = ''
     substituteInPlace libcperciva/cpusupport/Build/cpusupport.sh \
+      --replace "dirname" "${coreutils}/bin/dirname" \
       --replace "2>/dev/null" "2>stderr.log"
 
-    substituteInPlace POSIX/posix-l.sh       \
+    substituteInPlace libcperciva/POSIX/posix-l.sh       \
       --replace "rm" "${coreutils}/bin/rm"   \
-      --replace ">/dev/stderr" ">stderr.log" \
       --replace "2>/dev/null" "2>stderr.log"
-
-    substituteInPlace POSIX/posix-cflags.sh  \
-      --replace "rm" "${coreutils}/bin/rm"   \
-      --replace ">/dev/stderr" ">stderr.log" \
-      --replace "2>/dev/null" "2>stderr.log"
-  '';
+   '';
 
   installPhase = ''
+    runHook preInstall
     mkdir -p $out/bin $out/share/man/man1
     make install BINDIR=$out/bin MAN1DIR=$out/share/man/man1
+    runHook postInstall
   '';
 
   meta = {
     description = "Utility for secure encrypted channels between sockets";
     homepage    = "https://www.tarsnap.com/spiped.html";
-    license     = stdenv.lib.licenses.bsd2;
-    platforms   = stdenv.lib.platforms.unix;
-    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+    license     = lib.licenses.bsd2;
+    platforms   = lib.platforms.unix;
+    maintainers = [ lib.maintainers.thoughtpolice ];
   };
 }
diff --git a/pkgs/tools/networking/spoofer/default.nix b/pkgs/tools/networking/spoofer/default.nix
index cadaf021cda..f5c8317d89b 100644
--- a/pkgs/tools/networking/spoofer/default.nix
+++ b/pkgs/tools/networking/spoofer/default.nix
@@ -1,23 +1,25 @@
-{ stdenv, fetchurl, pkgconfig, protobuf, openssl, libpcap, traceroute
+{ lib, stdenv, fetchurl, pkg-config, protobuf, openssl, libpcap, traceroute
 , withGUI ? false, qt5 }:
 
-let inherit (stdenv.lib) optional;
+let inherit (lib) optional;
 in
 
 stdenv.mkDerivation rec {
   pname = "spoofer";
-  version = "1.4.5";
+  version = "1.4.6";
 
   src = fetchurl {
     url = "https://www.caida.org/projects/spoofer/downloads/${pname}-${version}.tar.gz";
-    sha256 = "0pnim3xyfsmv6alsvhwjs4v9lp39wwiyj63rxsqyz4wx4vkmn12z";
+    sha256 = "sha256-+4FNC+rMxIoVXlW7HnBXUg0P4FhNvMTAqJ9c7lXQ6vE=";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ openssl protobuf libpcap traceroute ]
                 ++ optional withGUI qt5.qtbase ;
 
-  meta = with stdenv.lib; {
+  dontWrapQtApps = true;
+
+  meta = with lib; {
     homepage = "https://www.caida.org/projects/spoofer";
     description = "Assess and report on deployment of source address validation";
     longDescription = ''
@@ -34,6 +36,6 @@ stdenv.mkDerivation rec {
     '';
     platforms = platforms.all;
     license = licenses.gpl3Plus;
-    maintainers = with stdenv.lib.maintainers; [ leenaars];
+    maintainers = with lib.maintainers; [ leenaars];
   };
 }
diff --git a/pkgs/tools/networking/srelay/default.nix b/pkgs/tools/networking/srelay/default.nix
index 1e7486dd305..9ff25d6a17c 100644
--- a/pkgs/tools/networking/srelay/default.nix
+++ b/pkgs/tools/networking/srelay/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation {
   name = "srelay-0.4.8";
@@ -15,7 +15,7 @@ stdenv.mkDerivation {
   meta = {
     description = "A SOCKS proxy and relay";
     homepage = "http://socks-relay.sourceforge.net/";
-    platforms = stdenv.lib.platforms.unix;
-    license = stdenv.lib.licenses.bsd3;
+    platforms = lib.platforms.unix;
+    license = lib.licenses.bsd3;
   };
 }
diff --git a/pkgs/tools/networking/ssh-askpass-fullscreen/default.nix b/pkgs/tools/networking/ssh-askpass-fullscreen/default.nix
new file mode 100644
index 00000000000..05e51837126
--- /dev/null
+++ b/pkgs/tools/networking/ssh-askpass-fullscreen/default.nix
@@ -0,0 +1,31 @@
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, gtk2, openssh }:
+
+stdenv.mkDerivation rec {
+  pname = "ssh-askpass-fullscreen";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "atj";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1zldhylln412974cnxyqcrrc6b4ry3m9s5ijq3dnwz2g7nz1bx9d";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkg-config
+  ];
+
+  buildInputs = [
+    gtk2
+    openssh
+  ];
+
+  meta = with lib; {
+    description = "A small SSH askpass GUI using GTK+2";
+    homepage = "https://github.com/atj/ssh-askpass-fullscreen";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ caadar ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/networking/ssh-ident/default.nix b/pkgs/tools/networking/ssh-ident/default.nix
index 33211fb0723..1822eda2627 100644
--- a/pkgs/tools/networking/ssh-ident/default.nix
+++ b/pkgs/tools/networking/ssh-ident/default.nix
@@ -1,6 +1,6 @@
-{ stdenv, lib, fetchFromGitHub, python3, makeWrapper, openssh }:
+{ stdenvNoCC, lib, fetchFromGitHub, python3, openssh}:
 
-stdenv.mkDerivation {
+stdenvNoCC.mkDerivation {
   pname = "ssh-ident";
   version = "2016-04-21";
   src = fetchFromGitHub  {
@@ -10,19 +10,22 @@ stdenv.mkDerivation {
     sha256 = "1jf19lz1gwn7cyp57j8d4zs5bq13iw3kw31m8nvr8h6sib2pf815";
   };
 
-  buildInputs = [ python3 makeWrapper ];
+  postPatch = ''
+    substituteInPlace ssh-ident \
+      --replace 'ssh-agent >' '${openssh}/bin/ssh-agent >'
+  '';
+  buildInputs = [ python3 ];
+
   installPhase = ''
     mkdir -p $out/bin
     install -m 755 ssh-ident $out/bin/ssh-ident
-    wrapProgram $out/bin/ssh-ident \
-      --prefix PATH : ${lib.makeBinPath [ openssh  ]}
   '';
 
-  meta = {
+  meta = with lib; {
     homepage = "https://github.com/ccontavalli/ssh-ident";
     description = "Start and use ssh-agent and load identities as necessary";
-    license = stdenv.lib.licenses.bsd2;
-    maintainers = with stdenv.lib.maintainers; [ telotortium ];
-    platforms = with stdenv.lib.platforms; unix;
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ telotortium ];
+    platforms = with platforms; unix;
   };
 }
diff --git a/pkgs/tools/networking/sshoogr/default.nix b/pkgs/tools/networking/sshoogr/default.nix
index 764b34fc5a5..f3c9c1a31fb 100644
--- a/pkgs/tools/networking/sshoogr/default.nix
+++ b/pkgs/tools/networking/sshoogr/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, jdk, makeWrapper }:
+{ lib, stdenv, fetchzip, jdk, makeWrapper }:
 
 stdenv.mkDerivation rec {
   pname = "sshoogr";
@@ -18,14 +18,14 @@ stdenv.mkDerivation rec {
       --prefix JAVA_HOME : ${jdk}
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = ''
       A Groovy-based DSL for working with remote SSH servers
     '';
     longDescription = ''
       The sshoogr (pronounced [ʃʊgə]) is a Groovy-based DSL library for working
-      with remote servers through SSH. The DSL allows: connecting, executing 
-      remote commands, copying files and directories, creating tunnels in a 
+      with remote servers through SSH. The DSL allows: connecting, executing
+      remote commands, copying files and directories, creating tunnels in a
       simple and concise way.
     '';
     homepage = "https://github.com/aestasit/sshoogr";
@@ -33,4 +33,4 @@ stdenv.mkDerivation rec {
     platforms = platforms.all;
     maintainers = with maintainers; [ moaxcp ];
   };
-} 
+}
diff --git a/pkgs/tools/networking/sshpass/default.nix b/pkgs/tools/networking/sshpass/default.nix
index 7f5644edb52..60c9ab97a8b 100644
--- a/pkgs/tools/networking/sshpass/default.nix
+++ b/pkgs/tools/networking/sshpass/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl}:
+{lib, stdenv, fetchurl}:
 
 stdenv.mkDerivation rec {
   pname = "sshpass";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "0q7fblaczb7kwbsz0gdy9267z0sllzgmf0c7z5c9mf88wv74ycn6";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://sourceforge.net/projects/sshpass/";
     description = "Non-interactive ssh password auth";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/sshping/default.nix b/pkgs/tools/networking/sshping/default.nix
index 20f0eaa7e47..13abba539ac 100644
--- a/pkgs/tools/networking/sshping/default.nix
+++ b/pkgs/tools/networking/sshping/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchFromGitHub, libssh}:
+{lib, stdenv, fetchFromGitHub, libssh}:
 
 stdenv.mkDerivation rec {
   pname = "sshping";
@@ -14,14 +14,14 @@ stdenv.mkDerivation rec {
   buildInputs = [ libssh ];
 
   buildPhase = ''
-      g++ -Wall -I ext/ -o bin/sshping src/sshping.cxx -lssh
+      $CXX -Wall -I ext/ -o bin/sshping src/sshping.cxx -lssh
     '';
 
   installPhase = ''
       install -Dm755 bin/sshping $out/bin/sshping
     '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/spook/sshping";
     description = "Measure character-echo latency and bandwidth for an interactive ssh session";
     license = licenses.mit;
diff --git a/pkgs/tools/networking/ssldump/default.nix b/pkgs/tools/networking/ssldump/default.nix
index b492b5a226b..fc92f43981b 100644
--- a/pkgs/tools/networking/ssldump/default.nix
+++ b/pkgs/tools/networking/ssldump/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, openssl, libpcap }:
+{ lib, stdenv, fetchFromGitHub, openssl, libpcap }:
 
 stdenv.mkDerivation {
   pname = "ssldump";
@@ -21,10 +21,10 @@ stdenv.mkDerivation {
                      "--with-openssl-lib=${openssl}/lib"
                      "--with-openssl-inc=${openssl}/include" ];
   meta = {
-    description = "ssldump is an SSLv3/TLS network protocol analyzer";
+    description = "An SSLv3/TLS network protocol analyzer";
     homepage = "http://ssldump.sourceforge.net";
     license = "BSD-style";
-    maintainers = with stdenv.lib.maintainers; [ aycanirican ];
-    platforms = stdenv.lib.platforms.linux;
+    maintainers = with lib.maintainers; [ aycanirican ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/sslsplit/default.nix b/pkgs/tools/networking/sslsplit/default.nix
index bf23d06551d..c3a343d7fa1 100644
--- a/pkgs/tools/networking/sslsplit/default.nix
+++ b/pkgs/tools/networking/sslsplit/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, openssl, libevent, libpcap, libnet, zlib }:
+{ lib, stdenv, fetchFromGitHub, openssl, libevent, libpcap, libnet, zlib }:
 
 stdenv.mkDerivation rec {
   pname = "sslsplit";
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
     "LIBNET_BASE=${libnet}"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Transparent SSL/TLS interception";
     homepage = "https://www.roe.ch/SSLsplit";
     platforms = platforms.all;
diff --git a/pkgs/tools/networking/ssmtp/default.nix b/pkgs/tools/networking/ssmtp/default.nix
index 90547eb1364..6957d43e791 100644
--- a/pkgs/tools/networking/ssmtp/default.nix
+++ b/pkgs/tools/networking/ssmtp/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, tlsSupport ? true, openssl ? null}:
+{lib, stdenv, fetchurl, tlsSupport ? true, openssl ? null}:
 
 assert tlsSupport -> openssl != null;
 
@@ -16,7 +16,7 @@ stdenv.mkDerivation {
 
   configureFlags = [
     "--sysconfdir=/etc"
-    (stdenv.lib.enableFeature tlsSupport "ssl")
+    (lib.enableFeature tlsSupport "ssl")
   ];
 
   postConfigure =
@@ -34,11 +34,11 @@ stdenv.mkDerivation {
 
   installTargets = [ "install" "install-sendmail" ];
 
-  buildInputs = stdenv.lib.optional tlsSupport openssl;
+  buildInputs = lib.optional tlsSupport openssl;
 
-  NIX_LDFLAGS = stdenv.lib.optionalString tlsSupport "-lcrypto";
+  NIX_LDFLAGS = lib.optionalString tlsSupport "-lcrypto";
 
-  meta = with stdenv.lib; {
+  meta = with 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 4d05b478ab4..97e35949b15 100644
--- a/pkgs/tools/networking/sstp/default.nix
+++ b/pkgs/tools/networking/sstp/default.nix
@@ -1,12 +1,12 @@
-{ stdenv, fetchurl, pkgconfig, ppp, libevent, openssl }:
+{ lib, stdenv, fetchurl, pkg-config, ppp, libevent, openssl }:
 
 stdenv.mkDerivation rec {
   pname = "sstp-client";
-  version = "1.0.12";
+  version = "1.0.13";
 
   src = fetchurl {
-    url = "mirror://sourceforge/sstp-client/sstp-client/${version}/sstp-client-${version}.tar.gz";
-    sha256 = "1zv7rx6wh9rhbyg9pg6759by8hc6n4162zrrw0y812cnaw3b8zj8";
+    url = "mirror://sourceforge/sstp-client/sstp-client/sstp-client-${version}.tar.gz";
+    sha256 = "06rjyncmgdy212xf9l9z6mfh4gdmgk7l4y841gb8lpbrl3y5h4ln";
   };
 
   patchPhase =
@@ -21,14 +21,14 @@ stdenv.mkDerivation rec {
     "--with-pppd-plugin-dir=$(out)/lib/pppd"
   ];
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ libevent openssl ppp ];
 
   meta = {
     description = "SSTP client for Linux";
     homepage = "http://sstp-client.sourceforge.net/";
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.ktosiek ];
-    license = stdenv.lib.licenses.gpl2;
+    platforms = lib.platforms.linux;
+    maintainers = [ lib.maintainers.ktosiek ];
+    license = lib.licenses.gpl2;
   };
 }
diff --git a/pkgs/tools/networking/stevenblack-blocklist/default.nix b/pkgs/tools/networking/stevenblack-blocklist/default.nix
new file mode 100644
index 00000000000..ddccc9ac635
--- /dev/null
+++ b/pkgs/tools/networking/stevenblack-blocklist/default.nix
@@ -0,0 +1,20 @@
+{ lib, fetchFromGitHub }:
+
+let
+  version = "3.8.2";
+in
+fetchFromGitHub {
+  name = "stevenblack-blocklist-${version}";
+
+  owner = "StevenBlack";
+  repo = "hosts";
+  rev = version;
+  sha256 = "sha256-rkyAF1/kPI34nZ57Hqg8QivK0YERZ54jZ1HQ5oXYgxc=";
+
+  meta = with lib; {
+    description = "Unified hosts file with base extensions";
+    homepage = "https://github.com/StevenBlack/hosts";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fortuneteller2k ];
+  };
+}
diff --git a/pkgs/tools/networking/strongswan/default.nix b/pkgs/tools/networking/strongswan/default.nix
index 6ff141e099c..67df00b8e69 100644
--- a/pkgs/tools/networking/strongswan/default.nix
+++ b/pkgs/tools/networking/strongswan/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, fetchpatch
-, pkgconfig, autoreconfHook
+{ lib, stdenv, fetchurl, fetchpatch
+, pkg-config, autoreconfHook
 , gmp, python3, iptables, ldns, unbound, openssl, pcsclite, glib
 , openresolv
 , systemd, pam
@@ -13,7 +13,7 @@
 # strongswan curl plugin may break.
 # See https://wiki.strongswan.org/projects/strongswan/wiki/Curl for more info.
 
-with stdenv.lib;
+with lib;
 
 stdenv.mkDerivation rec {
   pname = "strongswan";
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
 
   dontPatchELF = true;
 
-  nativeBuildInputs = [ pkgconfig autoreconfHook ];
+  nativeBuildInputs = [ pkg-config autoreconfHook ];
   buildInputs =
     [ curl gmp python3 ldns unbound openssl pcsclite ]
     ++ optionals enableTNC [ trousers sqlite libxml2 ]
diff --git a/pkgs/tools/networking/stubby/default.nix b/pkgs/tools/networking/stubby/default.nix
index 2a10eb13e32..abe11b7bcb9 100644
--- a/pkgs/tools/networking/stubby/default.nix
+++ b/pkgs/tools/networking/stubby/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, getdns, doxygen, libyaml, darwin, cmake, systemd }:
+{ lib, stdenv, fetchFromGitHub, getdns, doxygen, libyaml, darwin, cmake, systemd }:
 
 stdenv.mkDerivation rec {
   pname = "stubby";
@@ -14,9 +14,9 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ cmake libyaml ];
 
   buildInputs = [ doxygen getdns systemd ]
-    ++ stdenv.lib.optionals stdenv.isDarwin [ darwin.Security ];
+    ++ lib.optionals stdenv.isDarwin [ darwin.Security ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A local DNS Privacy stub resolver (using DNS-over-TLS)";
     longDescription = ''
       Stubby is an application that acts as a local DNS Privacy stub
diff --git a/pkgs/tools/networking/stun/default.nix b/pkgs/tools/networking/stun/default.nix
index 306b1899f76..c74c73ec6a0 100644
--- a/pkgs/tools/networking/stun/default.nix
+++ b/pkgs/tools/networking/stun/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname   = "stun";
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
     cp -v debian/manpages/stund.8.gz $server/man/man8
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Stun server and test client";
     homepage    = "https://sourceforge.net/projects/stun/";
     license     = licenses.vsl10;
diff --git a/pkgs/tools/networking/stunnel/default.nix b/pkgs/tools/networking/stunnel/default.nix
index eaa05bfdbad..befc1c3c3ee 100644
--- a/pkgs/tools/networking/stunnel/default.nix
+++ b/pkgs/tools/networking/stunnel/default.nix
@@ -1,12 +1,12 @@
-{ stdenv, fetchurl, openssl }:
+{ lib, stdenv, fetchurl, openssl }:
 
 stdenv.mkDerivation rec {
   pname = "stunnel";
-  version = "5.56";
+  version = "5.59";
 
   src = fetchurl {
     url    = "https://www.stunnel.org/downloads/${pname}-${version}.tar.gz";
-    sha256 = "08kb4gi9fzqngrczykvba6xhaxhq9m4wmdbhxvgrva5rasrvz13k";
+    sha256 = "sha256-E3d232vo8XAfHNWQt3eZMuEjR5+5HlGSFxwWeYgVzp8=";
     # please use the contents of "https://www.stunnel.org/downloads/${name}.tar.gz.sha256",
     # not the output of `nix-prefetch-url`
   };
@@ -31,8 +31,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Universal tls/ssl wrapper";
     homepage    = "https://www.stunnel.org/";
-    license     = stdenv.lib.licenses.gpl2Plus;
-    platforms   = stdenv.lib.platforms.unix;
-    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+    license     = lib.licenses.gpl2Plus;
+    platforms   = lib.platforms.unix;
+    maintainers = [ lib.maintainers.thoughtpolice ];
   };
 }
diff --git a/pkgs/tools/networking/subfinder/default.nix b/pkgs/tools/networking/subfinder/default.nix
index 70820ea0320..ae87d02fe23 100644
--- a/pkgs/tools/networking/subfinder/default.nix
+++ b/pkgs/tools/networking/subfinder/default.nix
@@ -1,21 +1,28 @@
-{ stdenv, buildGoPackage, fetchFromGitHub }:
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
 
-buildGoPackage rec {
+buildGoModule rec {
   pname = "subfinder";
-  version = "2.3.0";
-
-  goPackagePath = "github.com/projectdiscovery/subfinder";
+  version = "2.4.8";
 
   src = fetchFromGitHub {
     owner = "projectdiscovery";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1vjxi2h4njakyqkfzwwaacy37kqx66j2y3k5l752z9va73gv7xv1";
+    sha256 = "1g1j3il1a595g7z8blhvyd5l03h6kccl7mzrx51c33jz74cms5kn";
   };
 
-  goDeps = ./deps.nix;
+  vendorSha256 = "1jmik0zmfy1n3g4yjkskiqzd28dpywf0hw6adgz2jshlhka58iw0";
+
+  modRoot = "./v2";
+
+  subPackages = [
+    "cmd/subfinder/"
+  ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Subdomain discovery tool";
     longDescription = ''
       SubFinder is a subdomain discovery tool that discovers valid
@@ -24,6 +31,6 @@ buildGoPackage rec {
     '';
     homepage = "https://github.com/projectdiscovery/subfinder";
     license = licenses.mit;
-    maintainers = with maintainers; [ fpletz filalex77 ];
+    maintainers = with maintainers; [ fpletz Br1ght0ne ];
   };
 }
diff --git a/pkgs/tools/networking/subfinder/deps.nix b/pkgs/tools/networking/subfinder/deps.nix
deleted file mode 100644
index 16427eddcf6..00000000000
--- a/pkgs/tools/networking/subfinder/deps.nix
+++ /dev/null
@@ -1,165 +0,0 @@
-# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
-[
-  {
-    goPackagePath  = "github.com/davecgh/go-spew";
-    fetch = {
-      type = "git";
-      url = "https://github.com/davecgh/go-spew";
-      rev =  "8991bc29aa16c548c550c7ff78260e27b9ab7c73";
-      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
-    };
-  }
-  {
-    goPackagePath  = "github.com/json-iterator/go";
-    fetch = {
-      type = "git";
-      url = "https://github.com/json-iterator/go";
-      rev =  "03217c3e97663914aec3faafde50d081f197a0a2";
-      sha256 = "1kbp9fj6fxfql0ir59zb6v68l4bpwlmk76xm8vaikw1hp6y9bcss";
-    };
-  }
-  {
-    goPackagePath  = "github.com/konsorten/go-windows-terminal-sequences";
-    fetch = {
-      type = "git";
-      url = "https://github.com/konsorten/go-windows-terminal-sequences";
-      rev =  "f55edac94c9bbba5d6182a4be46d86a2c9b5b50e";
-      sha256 = "09mn209ika7ciy87xf2x31dq5fnqw39jidgaljvmqxwk7ff1hnx7";
-    };
-  }
-  {
-    goPackagePath  = "github.com/logrusorgru/aurora";
-    fetch = {
-      type = "git";
-      url = "https://github.com/logrusorgru/aurora";
-      rev =  "21d75270181e0436fee7bd58b991c212cf309068";
-      sha256 = "0vc9qdl6jzq7vazfqgz628gcgsvir56bdi2bkhl54pi92cz9cw0p";
-    };
-  }
-  {
-    goPackagePath  = "github.com/m-mizutani/urlscan-go";
-    fetch = {
-      type = "git";
-      url = "https://github.com/m-mizutani/urlscan-go";
-      rev =  "21d37c8d3d34d514f2ef49db9b59cc94f335e9c3";
-      sha256 = "1hpymd4ncp78hgpksnw8k27rp0lh832x1pyk3bhj5dm6xmh79g4c";
-    };
-  }
-  {
-    goPackagePath  = "github.com/miekg/dns";
-    fetch = {
-      type = "git";
-      url = "https://github.com/miekg/dns";
-      rev =  "1e224ff5dead8366ed6fcdcb832794be42e73f0e";
-      sha256 = "1iv9jznakz8f5swiir0z4zilr9ypavnsc0g4zi1r0vad6npy7zfl";
-    };
-  }
-  {
-    goPackagePath  = "github.com/modern-go/concurrent";
-    fetch = {
-      type = "git";
-      url = "https://github.com/modern-go/concurrent";
-      rev =  "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94";
-      sha256 = "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs";
-    };
-  }
-  {
-    goPackagePath  = "github.com/modern-go/reflect2";
-    fetch = {
-      type = "git";
-      url = "https://github.com/modern-go/reflect2";
-      rev =  "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd";
-      sha256 = "1721y3yr3dpx5dx5ashf063qczk2awy5zjir1jvp1h5hn7qz4i49";
-    };
-  }
-  {
-    goPackagePath  = "github.com/pkg/errors";
-    fetch = {
-      type = "git";
-      url = "https://github.com/pkg/errors";
-      rev =  "ba968bfe8b2f7e042a574c888954fccecfa385b4";
-      sha256 = "0g5qcb4d4fd96midz0zdk8b9kz8xkzwfa8kr1cliqbg8sxsy5vd1";
-    };
-  }
-  {
-    goPackagePath  = "github.com/pmezard/go-difflib";
-    fetch = {
-      type = "git";
-      url = "https://github.com/pmezard/go-difflib";
-      rev =  "792786c7400a136282c1664665ae0a8db921c6c2";
-      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
-    };
-  }
-  {
-    goPackagePath  = "github.com/rs/xid";
-    fetch = {
-      type = "git";
-      url = "https://github.com/rs/xid";
-      rev =  "15d26544def341f036c5f8dca987a4cbe575032c";
-      sha256 = "1vgw1dikqw273awcci6pzifs7shkl5ah4l88j1zjbnpgbiwzlx9j";
-    };
-  }
-  {
-    goPackagePath  = "github.com/sirupsen/logrus";
-    fetch = {
-      type = "git";
-      url = "https://github.com/sirupsen/logrus";
-      rev =  "839c75faf7f98a33d445d181f3018b5c3409a45e";
-      sha256 = "087k2lxrr9p9dh68yw71d05h5g9p5v26zbwd6j7lghinjfaw334x";
-    };
-  }
-  {
-    goPackagePath  = "github.com/stretchr/testify";
-    fetch = {
-      type = "git";
-      url = "https://github.com/stretchr/testify";
-      rev =  "221dbe5ed46703ee255b1da0dec05086f5035f62";
-      sha256 = "187i5g88sxfy4vxpm7dw1gwv29pa2qaq475lxrdh5livh69wqfjb";
-    };
-  }
-  {
-    goPackagePath  = "golang.org/x/crypto";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/crypto";
-      rev =  "86a70503ff7e82ffc18c7b0de83db35da4791e6a";
-      sha256 = "0w7ih86lmll9gs2j0z3nmmy148i2yism9z53yp58zwa6d5pjahfn";
-    };
-  }
-  {
-    goPackagePath  = "golang.org/x/net";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/net";
-      rev =  "5ee1b9f4859acd2e99987ef94ec7a58427c53bef";
-      sha256 = "0jvzqv6phv64rw4pj86x3j9kp5yx9p34fd38r46rb9464h69ba29";
-    };
-  }
-  {
-    goPackagePath  = "golang.org/x/sys";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/sys";
-      rev =  "ce4227a45e2eb77e5c847278dcc6a626742e2945";
-      sha256 = "1s43wvqfml6ml5ks7iv2bis9d664g77mq86v7mfmjhn56x856g35";
-    };
-  }
-  {
-    goPackagePath  = "gopkg.in/yaml.v2";
-    fetch = {
-      type = "git";
-      url = "https://github.com/go-yaml/yaml";
-      rev =  "1f64d6156d11335c3f22d9330b0ad14fc1e789ce";
-      sha256 = "0k5xcwkd3wmcx54isk7ck9cwp8fapfhyqdz3f13kxp77cxqizazj";
-    };
-  }
-  {
-    goPackagePath  = "gopkg.in/yaml.v3";
-    fetch = {
-      type = "git";
-      url = "https://github.com/go-yaml/yaml";
-      rev =  "4206685974f28e3178b35fa198a59899aa4dee3a";
-      sha256 = "1ff5fd8x45cay9100ds63hxd32s7czsrric0ql6a1jrxczsgqk1g";
-    };
-  }
-]
diff --git a/pkgs/tools/networking/surfraw/default.nix b/pkgs/tools/networking/surfraw/default.nix
index d26bdbbb771..70bb5453518 100644
--- a/pkgs/tools/networking/surfraw/default.nix
+++ b/pkgs/tools/networking/surfraw/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, perl}:
+{lib, stdenv, fetchurl, perl}:
 
 stdenv.mkDerivation {
   name = "surfraw-2.3.0";
@@ -18,7 +18,7 @@ stdenv.mkDerivation {
     description = "Provides a fast unix command line interface to a variety of popular WWW search engines and other artifacts of power";
     homepage = "https://gitlab.com/surfraw/Surfraw";
     maintainers = [];
-    platforms = stdenv.lib.platforms.linux;
-    license = stdenv.lib.licenses.publicDomain;
+    platforms = lib.platforms.all;
+    license = lib.licenses.publicDomain;
   };
 }
diff --git a/pkgs/tools/networking/swagger-codegen/default.nix b/pkgs/tools/networking/swagger-codegen/default.nix
index ac4c1e24e3b..f2847703bdb 100644
--- a/pkgs/tools/networking/swagger-codegen/default.nix
+++ b/pkgs/tools/networking/swagger-codegen/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchurl, jre, makeWrapper }:
+{ lib, stdenv, fetchurl, jre, makeWrapper }:
 
 stdenv.mkDerivation rec {
-  version = "2.3.1";
+  version = "2.4.19";
   pname = "swagger-codegen";
 
   jarfilename = "${pname}-cli-${version}.jar";
@@ -11,20 +11,20 @@ stdenv.mkDerivation rec {
   ];
 
   src = fetchurl {
-    url = "https://oss.sonatype.org/content/repositories/releases/io/swagger/${pname}-cli/${version}/${jarfilename}";
-    sha256 = "171qr0zx7i6cykv54vqjf3mplrf7w4a1fpq47wsj861lbf8xm322";
+    url = "https://repo1.maven.org/maven2/io/swagger/${pname}-cli/${version}/${jarfilename}";
+    sha256 = "04wl5k8k1ziqz7k5w0g7i6zdfn41pbh3k0m8vq434k1886inf8yn";
   };
 
-  phases = [ "installPhase" ];
+  dontUnpack = true;
 
   installPhase = ''
-    install -D "$src" "$out/share/java/${jarfilename}"
+    install -D $src $out/share/java/${jarfilename}
 
-    makeWrapper ${jre}/bin/java $out/bin/swagger-codegen \
+    makeWrapper ${jre}/bin/java $out/bin/${pname} \
       --add-flags "-jar $out/share/java/${jarfilename}"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Allows generation of API client libraries (SDK generation), server stubs and documentation automatically given an OpenAPI Spec";
     homepage = "https://github.com/swagger-api/swagger-codegen";
     license = licenses.asl20;
diff --git a/pkgs/tools/networking/swagger-codegen3/default.nix b/pkgs/tools/networking/swagger-codegen3/default.nix
new file mode 100644
index 00000000000..8fc908a1f2c
--- /dev/null
+++ b/pkgs/tools/networking/swagger-codegen3/default.nix
@@ -0,0 +1,33 @@
+{ lib, stdenv, fetchurl, jre, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  version = "3.0.25";
+  pname = "swagger-codegen";
+
+  jarfilename = "${pname}-cli-${version}.jar";
+
+  nativeBuildInputs = [
+    makeWrapper
+  ];
+
+  src = fetchurl {
+    url = "https://repo1.maven.org/maven2/io/swagger/codegen/v3/${pname}-cli/${version}/${jarfilename}";
+    sha256 = "1rdz45kmmg60fs7ddnla1xq30nah6s6rd18fqbjbjxng8r92brnd";
+  };
+
+  dontUnpack = true;
+
+  installPhase = ''
+    install -D $src $out/share/java/${jarfilename}
+
+    makeWrapper ${jre}/bin/java $out/bin/${pname}3 \
+      --add-flags "-jar $out/share/java/${jarfilename}"
+  '';
+
+  meta = with lib; {
+    description = "Allows generation of API client libraries (SDK generation), server stubs and documentation automatically given an OpenAPI Spec";
+    homepage = "https://github.com/swagger-api/swagger-codegen/tree/3.0.0";
+    license = licenses.asl20;
+    maintainers = [ maintainers._1000101 ];
+  };
+}
diff --git a/pkgs/tools/networking/swaks/default.nix b/pkgs/tools/networking/swaks/default.nix
index 81d0935f0b0..49ef0afc060 100644
--- a/pkgs/tools/networking/swaks/default.nix
+++ b/pkgs/tools/networking/swaks/default.nix
@@ -1,15 +1,16 @@
-{ stdenv, fetchurl, perl, perlPackages, makeWrapper }:
+{ lib, stdenv, fetchurl, perl, perlPackages, makeWrapper }:
 
 stdenv.mkDerivation rec {
   pname = "swaks";
-  version = "20190914.0";
+  version = "20201014.0";
 
   src = fetchurl {
     url = "https://www.jetmore.org/john/code/swaks/files/${pname}-${version}.tar.gz";
-    sha256 = "12awq5z4sdd54cxprj834zajxhkpy4jwhzf1fhigcx1zbhdaacsp";
+    sha256 = "0c2sx4nrh4whsqzj6m5ay8d7yqan3aqgg436p8jb25bs91ykn2pv";
   };
 
-  buildInputs = [ perl makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ perl ];
 
   installPhase = ''
     mkdir -p $out/bin
@@ -21,10 +22,10 @@ stdenv.mkDerivation rec {
       ]}"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.jetmore.org/john/code/swaks/";
     description = "A featureful, flexible, scriptable, transaction-oriented SMTP test tool";
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     maintainers = with maintainers; [];
     platforms = platforms.all;
   };
diff --git a/pkgs/tools/networking/swec/default.nix b/pkgs/tools/networking/swec/default.nix
index e65bc5e208f..c98a3417d1c 100644
--- a/pkgs/tools/networking/swec/default.nix
+++ b/pkgs/tools/networking/swec/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, makeWrapper, perlPackages }:
+{ fetchurl, lib, stdenv, makeWrapper, perlPackages }:
 
 stdenv.mkDerivation rec {
   name = "swec-0.4";
@@ -8,7 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "1m3971z4z1wr0paggprfz0n8ng8vsnkc9m6s3bdplgyz7qjk6jwx";
   };
 
-  buildInputs = [ makeWrapper perlPackages.perl perlPackages.LWP perlPackages.URI perlPackages.HTMLParser ];
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ perlPackages.perl perlPackages.LWP perlPackages.URI perlPackages.HTMLParser ];
   checkInputs = [ perlPackages.HTTPServerSimple perlPackages.Parent ];
 
   configurePhase = ''
@@ -64,9 +65,9 @@ stdenv.mkDerivation rec {
          (well, not exactly true, SWEC will ignore robots.txt).
       '';
 
-    license = stdenv.lib.licenses.gpl3Plus;
+    license = lib.licenses.gpl3Plus;
 
     maintainers = [ ];
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/tayga/default.nix b/pkgs/tools/networking/tayga/default.nix
index 1cecf2d634d..8d0de6a6c18 100644
--- a/pkgs/tools/networking/tayga/default.nix
+++ b/pkgs/tools/networking/tayga/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   version = "0.9.2";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "1700y121lhvpna49bjpssb7jq1abj9qw5wxgjn8gzp6jm4kpj7rb";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Userland stateless NAT64 daemon";
     longDescription = ''
       TAYGA is an out-of-kernel stateless NAT64 implementation
diff --git a/pkgs/tools/networking/cutter/default.nix b/pkgs/tools/networking/tcp-cutter/default.nix
index 2430e75430b..ade825dbe10 100644
--- a/pkgs/tools/networking/cutter/default.nix
+++ b/pkgs/tools/networking/tcp-cutter/default.nix
@@ -1,10 +1,11 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "cutter-1.04";
+  pname = "tcp-cutter";
+  version = "1.04";
 
   src = fetchurl {
-    url = "http://www.digitage.co.uk/digitage/files/cutter/${name}.tgz";
+    url = "http://www.digitage.co.uk/digitage/files/cutter/${pname}-${version}.tgz";
     sha256 = "100iy31a3njif6vh9gfsqrm14hac05rrflla275gd4rkxdlnqcqv";
   };
 
@@ -12,7 +13,7 @@ stdenv.mkDerivation rec {
     install -D -m 0755 cutter $out/bin/tcp-cutter
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "TCP/IP Connection cutting on Linux Firewalls and Routers";
     homepage = "http://www.digitage.co.uk/digitage/software/linux-security/cutter";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/tcpdump/default.nix b/pkgs/tools/networking/tcpdump/default.nix
index fd7b203fbbf..6726e5b751a 100644
--- a/pkgs/tools/networking/tcpdump/default.nix
+++ b/pkgs/tools/networking/tcpdump/default.nix
@@ -1,12 +1,12 @@
-{ stdenv, fetchurl, libpcap, perl }:
+{ lib, stdenv, fetchurl, libpcap, perl }:
 
 stdenv.mkDerivation rec {
   pname = "tcpdump";
-  version = "4.9.3";
+  version = "4.99.1";
 
   src = fetchurl {
     url = "http://www.tcpdump.org/release/${pname}-${version}.tar.gz";
-    sha256 = "0434vdcnbqaia672rggjzdn4bb8p8dchz559yiszzdk0sjrprm1c";
+    sha256 = "sha256-ebNphfsnAxRmGNh8Ss3j4Gi5HFU/uT8CGjN/F1/RDr4=";
   };
 
   postPatch = ''
@@ -17,15 +17,15 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ libpcap ];
 
-  configureFlags = stdenv.lib.optional
+  configureFlags = lib.optional
     (stdenv.hostPlatform != stdenv.buildPlatform)
     "ac_cv_linux_vers=2";
 
-  meta = {
+  meta = with lib; {
     description = "Network sniffer";
-    homepage = "http://www.tcpdump.org/";
-    license = "BSD-style";
-    maintainers = with stdenv.lib.maintainers; [ globin ];
-    platforms = stdenv.lib.platforms.unix;
+    homepage = "https://www.tcpdump.org/";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ globin ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/tcpflow/default.nix b/pkgs/tools/networking/tcpflow/default.nix
index 8f502c5ef3f..cc923c0daf6 100644
--- a/pkgs/tools/networking/tcpflow/default.nix
+++ b/pkgs/tools/networking/tcpflow/default.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation rec {
   pname   = "tcpflow";
-  version = "1.5.2";
+  version = "1.6.1";
 
   src = fetchFromGitHub {
     owner  = "simsong";
     repo   = pname;
     rev    = "${pname}-${version}";
-    sha256 = "063n3pfqa0lgzcwk4c0h01g2y5c3sli615j6a17dxpg95aw1zryy";
+    sha256 = "0vbm097jhi5n8pg08ia1yhzc225zv9948blb76f4br739l9l22vq";
     fetchSubmodules = true;
   };
 
@@ -23,13 +23,15 @@ stdenv.mkDerivation rec {
     substituteInPlace bootstrap.sh \
       --replace ".git" "" \
       --replace "/bin/rm" "rm"
-    substituteInPlace configure.ac \
-      --replace "1.5.1" "1.5.2"
+    # Temporary fix for a build error:
+    # https://src.fedoraproject.org/rpms/tcpflow/blob/979e250032b90de2d6b9e5b94b5203d98cccedad/f/tcpflow-1.6.1-format.patch
+    substituteInPlace src/datalink.cpp \
+      --replace 'DEBUG(6)(s.c_str());' 'DEBUG(6) ("%s", s.c_str());'
   '';
 
   preConfigure = "bash ./bootstrap.sh";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "TCP stream extractor";
     longDescription = ''
       tcpflow is a program that captures data transmitted as part of TCP
@@ -38,7 +40,7 @@ stdenv.mkDerivation rec {
     '';
     inherit (src.meta) homepage;
     license     = licenses.gpl3;
-    maintainers = with maintainers; [ primeos raskin obadz ];
+    maintainers = with maintainers; [ raskin obadz ];
     platforms   = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/tcpreplay/default.nix b/pkgs/tools/networking/tcpreplay/default.nix
index b40df721c83..ed83e4d4554 100644
--- a/pkgs/tools/networking/tcpreplay/default.nix
+++ b/pkgs/tools/networking/tcpreplay/default.nix
@@ -1,15 +1,19 @@
-{ stdenv, fetchurl, libpcap, tcpdump }:
+{ lib, stdenv, fetchurl, libpcap, tcpdump, Carbon, CoreServices }:
 
 stdenv.mkDerivation rec {
   pname = "tcpreplay";
-  version = "4.3.3";
+  version = "4.3.4";
 
   src = fetchurl {
     url = "https://github.com/appneta/tcpreplay/releases/download/v${version}/tcpreplay-${version}.tar.gz";
-    sha256 = "1plgjm3dr9rr5q71s7paqk2wgrvkihbk2yrf9g3zaks3m750497d";
+    sha256 = "sha256-7gZTEIBsIuL9NvAU4euzMbmKfsTblY6Rw9nL2gZA2Sw=";
   };
 
-  buildInputs = [ libpcap ];
+  buildInputs = [ libpcap ]
+    ++ lib.optionals stdenv.hostPlatform.isDarwin [
+      Carbon CoreServices
+    ];
+
 
   configureFlags = [
     "--disable-local-libopts"
@@ -21,11 +25,11 @@ stdenv.mkDerivation rec {
     "--with-tcpdump=${tcpdump}/bin"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A suite of utilities for editing and replaying network traffic";
-    homepage = "http://tcpreplay.appneta.com/";
-    license = with licenses; [ bsd3 gpl3 ];
+    homepage = "https://tcpreplay.appneta.com/";
+    license = with licenses; [ bsdOriginalUC gpl3Only ];
     maintainers = with maintainers; [ eleanor ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/tcptraceroute/default.nix b/pkgs/tools/networking/tcptraceroute/default.nix
index 6901166e38f..1eacd685463 100644
--- a/pkgs/tools/networking/tcptraceroute/default.nix
+++ b/pkgs/tools/networking/tcptraceroute/default.nix
@@ -1,4 +1,4 @@
-{ stdenv  , fetchurl, libpcap, libnet
+{ lib, stdenv  , fetchurl, libpcap, libnet
 }:
 
 stdenv.mkDerivation rec {
@@ -20,9 +20,9 @@ stdenv.mkDerivation rec {
    buildInputs = [ libpcap libnet ];
 
    meta = {
-     description = "A traceroute implementation using TCP packets.";
+     description = "A traceroute implementation using TCP packets";
      homepage = "https://github.com/mct/tcptraceroute";
-     license = stdenv.lib.licenses.gpl2;
+     license = lib.licenses.gpl2;
      maintainers = [ ];
    };
 }
diff --git a/pkgs/tools/networking/tdns-cli/default.nix b/pkgs/tools/networking/tdns-cli/default.nix
index 681109712ab..9f1ac89ce8e 100644
--- a/pkgs/tools/networking/tdns-cli/default.nix
+++ b/pkgs/tools/networking/tdns-cli/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, rustPlatform }:
+{ lib, fetchFromGitHub, rustPlatform }:
 
 rustPlatform.buildRustPackage rec {
   name = "tdns-cli";
@@ -11,9 +11,9 @@ rustPlatform.buildRustPackage rec {
     sha256 = "0nn036in5j1h0vxkwif0lf7fn900zy4f4kxlzy6qdx3jakgmxvwh";
   };
 
-  cargoSha256 = "0v1hx6kjsmydx6ckjqj31y2gcpvax4mshwrniicplkka3q6hx9ra";
+  cargoSha256 = "14mmfj5my8gbsdhlhz17w8wjcc085c6dkj78kwr2hhsbcxp1vjgg";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "DNS tool that aims to replace dig and nsupdate";
     homepage = "https://github.com/rotty/tdns-cli";
     license = licenses.gpl3;
diff --git a/pkgs/tools/networking/telepresence/default.nix b/pkgs/tools/networking/telepresence/default.nix
index 285a3764e03..5d1966114b7 100644
--- a/pkgs/tools/networking/telepresence/default.nix
+++ b/pkgs/tools/networking/telepresence/default.nix
@@ -3,7 +3,7 @@
 , iptables, bash }:
 
 let
-  sshuttle-telepresence = 
+  sshuttle-telepresence =
     let
       sshuttleTelepresenceRev = "32226ff14d98d58ccad2a699e10cdfa5d86d6269";
     in
@@ -22,16 +22,16 @@ let
       });
 in pythonPackages.buildPythonPackage rec {
   pname = "telepresence";
-  version = "0.105";
+  version = "0.108";
 
   src = fetchFromGitHub {
     owner = "telepresenceio";
     repo = "telepresence";
     rev = version;
-    sha256 = "0fccbd54ryd9rcbhfh5lx8qcc3kx3k9jads918rwnzwllqzjf7sg";
+    sha256 = "6V0sM0Z+2xNDgL0wIzJOdaUp2Ol4ejNTk9K/pllVa7g=";
   };
 
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
   postInstall = ''
     wrapProgram $out/bin/telepresence \
diff --git a/pkgs/tools/networking/telepresence2/default.nix b/pkgs/tools/networking/telepresence2/default.nix
new file mode 100644
index 00000000000..54de621763c
--- /dev/null
+++ b/pkgs/tools/networking/telepresence2/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "telepresence2";
+  version = "2.3.6";
+
+  src = fetchFromGitHub {
+    owner = "telepresenceio";
+    repo = "telepresence";
+    rev = "v${version}";
+    sha256 = "1bs4h450109vhy18kpyy6y4p5l9kvz4w09m56fxh5z547m5ax6k3";
+  };
+
+  vendorSha256 = "0xmw9mc0iy64kb12lsii4nn63ynh6gab9ls8z6mrizjjqz845sa5";
+
+  buildFlagsArray = ''
+    -ldflags=-s -w -X=github.com/telepresenceio/telepresence/v2/pkg/version.Version=${src.rev}
+  '';
+
+  subPackages = [ "cmd/telepresence" ];
+
+  meta = with lib; {
+    description = "Local development against a remote Kubernetes or OpenShift cluster";
+    homepage = "https://www.getambassador.io/docs/telepresence/2.1/quick-start/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ mausch ];
+  };
+}
diff --git a/pkgs/tools/networking/tendermint/default.nix b/pkgs/tools/networking/tendermint/default.nix
index 081819458f0..b97c49dd9c9 100644
--- a/pkgs/tools/networking/tendermint/default.nix
+++ b/pkgs/tools/networking/tendermint/default.nix
@@ -1,26 +1,28 @@
-{ stdenv, fetchFromGitHub, buildGoModule }:
+{ lib, fetchFromGitHub, buildGoModule }:
 
 buildGoModule rec {
   pname = "tendermint";
-  version = "0.33.8";
+  version = "0.34.8";
 
   src = fetchFromGitHub {
     owner = "tendermint";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1dcr60gmbkb6833n49mjmlr082ahlv7alaqycl8g3d4f93kdm5c3";
+    sha256 = "sha256:03k44w23167az2kk6ccp3139kykzkhack4w2vy0wvs2lb67xiqd9";
   };
 
-  vendorSha256 = "0i0n89lal99fqnzva51kp9f7wzqsfmncpshwxhq26kvykp7ji7sw";
-
-  doCheck = false;
+  vendorSha256 = "sha256-0Y9QDBVNYE2x3nY3loRKTCtYWXRnK7v+drRVvTMY4Dg=";
 
   subPackages = [ "cmd/tendermint" ];
 
-  buildFlagsArray = [ "-ldflags=-s -w -X github.com/tendermint/tendermint/version.GitCommit=${src.rev}" ];
+  preBuild = ''
+    makeFlagsArray+=(
+      "-ldflags=-s -w -X github.com/tendermint/tendermint/version.GitCommit=${src.rev}"
+    )
+  '';
 
-  meta = with stdenv.lib; {
-    description = "Byzantine-Fault Tolerant State Machines. Or Blockchain, for short.";
+  meta = with lib; {
+    description = "Byzantine-Fault Tolerant State Machines. Or Blockchain, for short";
     homepage = "https://tendermint.com/";
     license = licenses.asl20;
     maintainers = with maintainers; [ alexfmpe ];
diff --git a/pkgs/tools/networking/termshark/default.nix b/pkgs/tools/networking/termshark/default.nix
index 51168f01f44..7b9a3c42d60 100644
--- a/pkgs/tools/networking/termshark/default.nix
+++ b/pkgs/tools/networking/termshark/default.nix
@@ -1,25 +1,25 @@
-{ stdenv, fetchFromGitHub, makeWrapper, buildGoModule, wireshark-cli }:
+{ lib, fetchFromGitHub, makeWrapper, buildGoModule, wireshark-cli }:
 
 buildGoModule rec {
   pname = "termshark";
-  version = "2.1.1";
+  version = "2.2.0";
 
   src = fetchFromGitHub {
     owner = "gcla";
     repo = "termshark";
     rev = "v${version}";
-    sha256 = "14h548apg3zvjvq6yy22hpw2ziy5vmwyr04vv59ls1mjg4qf2v8b";
+    sha256 = "sha256-vS6j8Mcri3SI/6HqtFX/EzVl8S0lx8fWU+0ddjzJz8g=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
   buildInputs = [ wireshark-cli ];
 
-  vendorSha256 = "14apff3vcbndr30765lzi4qswakavb4396bjixxvpxv6i5c04dq7";
+  vendorSha256 = "sha256-md9HHiYOsBimCBjD1FyjTqnskCZksQiEggWd5UW0RPM=";
 
   doCheck = false;
 
   postFixup = ''
-    wrapProgram $out/bin/termshark --prefix PATH : ${stdenv.lib.makeBinPath [ wireshark-cli ]}
+    wrapProgram $out/bin/termshark --prefix PATH : ${lib.makeBinPath [ wireshark-cli ]}
   '';
 
   buildFlagsArray = ''
@@ -27,7 +27,7 @@ buildGoModule rec {
     -X github.com/gcla/termshark.Version=${version}
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://termshark.io/";
     description = "A terminal UI for wireshark-cli, inspired by Wireshark";
     license = licenses.mit;
diff --git a/pkgs/tools/networking/tftp-hpa/default.nix b/pkgs/tools/networking/tftp-hpa/default.nix
index 2d88c9bf07e..f8e028dc616 100644
--- a/pkgs/tools/networking/tftp-hpa/default.nix
+++ b/pkgs/tools/networking/tftp-hpa/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "tftp-hpa";
@@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
     sha256 = "12vidchglhyc20znq5wdsbhi9mqg90jnl7qr9qs8hbvaz4fkdvmg";
   };
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "TFTP tools - a lot of fixes on top of BSD TFTP";
     maintainers = with maintainers; [ raskin ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/tgt/default.nix b/pkgs/tools/networking/tgt/default.nix
index 478c1ed35f2..ba1f89af433 100644
--- a/pkgs/tools/networking/tgt/default.nix
+++ b/pkgs/tools/networking/tgt/default.nix
@@ -1,16 +1,16 @@
-{ stdenv, lib, fetchFromGitHub, libxslt, libaio, systemd, perl, perlPackages
-, docbook_xsl, coreutils, lsof, rdma-core, makeWrapper, sg3_utils, utillinux
+{ stdenv, lib, fetchFromGitHub, libxslt, libaio, systemd, perl
+, docbook_xsl, coreutils, lsof, rdma-core, makeWrapper, sg3_utils, util-linux
 }:
 
 stdenv.mkDerivation rec {
   pname = "tgt";
-  version = "1.0.79";
+  version = "1.0.80";
 
   src = fetchFromGitHub {
     owner = "fujita";
     repo = pname;
     rev = "v${version}";
-    sha256 = "18bp7fcpv7879q3ppdxlqj7ayqmlh5zwrkz8gch6rq9lkmmrklrf";
+    sha256 = "sha256-5qBqCHbkL6yw/iT2AtSumw8V0bV74TEyYMRgcPHW2lg=";
   };
 
   nativeBuildInputs = [ libxslt docbook_xsl makeWrapper ];
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
 
   postInstall = ''
     substituteInPlace $out/sbin/tgt-admin \
-      --replace "#!/usr/bin/perl" "#! ${perl}/bin/perl -I${perlPackages.ConfigGeneral}/${perl.libPrefix}"
+      --replace "#!/usr/bin/perl" "#! ${perl.withPackages (p: [ p.ConfigGeneral ])}/bin/perl"
     wrapProgram $out/sbin/tgt-admin --prefix PATH : \
       ${lib.makeBinPath [ lsof sg3_utils (placeholder "out") ]}
 
@@ -49,7 +49,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "iSCSI Target daemon with RDMA support";
     homepage = "http://stgt.sourceforge.net/";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/tinc/default.nix b/pkgs/tools/networking/tinc/default.nix
index e331916626e..2387c903a9b 100644
--- a/pkgs/tools/networking/tinc/default.nix
+++ b/pkgs/tools/networking/tinc/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, lzo, openssl, zlib}:
+{lib, stdenv, fetchurl, lzo, openssl, zlib}:
 
 stdenv.mkDerivation rec {
   version = "1.0.36";
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
       authentication, compression and ethernet bridging.
     '';
     homepage="http://www.tinc-vpn.org/";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.unix;
+    license = lib.licenses.gpl2Plus;
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/tinc/pre.nix b/pkgs/tools/networking/tinc/pre.nix
index 85cdd19702f..5bd1858c195 100644
--- a/pkgs/tools/networking/tinc/pre.nix
+++ b/pkgs/tools/networking/tinc/pre.nix
@@ -1,25 +1,17 @@
-{ stdenv, fetchgit, fetchpatch, autoreconfHook, texinfo, ncurses, readline, zlib, lzo, openssl }:
+{ lib, stdenv, fetchgit, fetchpatch, autoreconfHook, texinfo, ncurses, readline, zlib, lzo, openssl }:
 
 stdenv.mkDerivation rec {
   pname = "tinc";
-  version = "1.1pre17";
+  version = "1.1pre18";
 
   src = fetchgit {
-    rev = "refs/tags/release-${version}";
+    rev = "release-${version}";
     url = "git://tinc-vpn.org/tinc";
-    sha256 = "12abmx9qglchgn94a1qwgzldf2kaz77p8705ylpggzyncxv6bw2q";
+    sha256 = "0a7d1xg34p54sv66lckn8rz2bpg7bl01najm2rxiwbsm956y7afm";
   };
 
   outputs = [ "out" "man" "info" ];
 
-  patches = [
-    (fetchpatch {
-      name = "tinc-openssl-1.0.2r.patch";
-      url = "http://git.tinc-vpn.org/git/browse?p=tinc;a=patch;h=2b0aeec02d64bb4724da9ff1dbc19b7d35d7c904";
-      sha256 = "0kidzlmgl0cin4g54ygcxa0jbq9vwlk3dyq5f65nkjd8yvayfzi8";
-    })
-  ];
-
   nativeBuildInputs = [ autoreconfHook texinfo ];
   buildInputs = [ ncurses readline zlib lzo openssl ];
 
@@ -36,7 +28,7 @@ stdenv.mkDerivation rec {
     "--localstatedir=/var"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "VPN daemon with full mesh routing";
     longDescription = ''
       tinc is a Virtual Private Network (VPN) daemon that uses tunnelling and
@@ -47,6 +39,6 @@ stdenv.mkDerivation rec {
     homepage="http://www.tinc-vpn.org/";
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ fpletz lassulus ];
+    maintainers = with maintainers; [ fpletz lassulus mic92 ];
   };
 }
diff --git a/pkgs/tools/networking/tinyfecvpn/default.nix b/pkgs/tools/networking/tinyfecvpn/default.nix
index aab937c994e..190950e37ec 100644
--- a/pkgs/tools/networking/tinyfecvpn/default.nix
+++ b/pkgs/tools/networking/tinyfecvpn/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, pkg-config }:
 
 stdenv.mkDerivation rec {
   pname = "tinyfecvpn";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
   };
 
   enableParallelBuilding = true;
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   patchPhase = ''
     runHook prePatch
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
     runHook postInstall
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/wangyu-/tinyfecVPN";
     description = "A VPN Designed for Lossy Links, with Build-in Forward Error Correction(FEC) Support";
     license = licenses.mit;
diff --git a/pkgs/tools/networking/tinyproxy/default.nix b/pkgs/tools/networking/tinyproxy/default.nix
index 7d3c49db7b7..6aa05738498 100644
--- a/pkgs/tools/networking/tinyproxy/default.nix
+++ b/pkgs/tools/networking/tinyproxy/default.nix
@@ -1,55 +1,25 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, asciidoc, libxml2,
-  libxslt, docbook_xsl }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, perl, withDebug ? false }:
 
 stdenv.mkDerivation rec {
   pname = "tinyproxy";
-  version = "1.10.0";
+  version = "1.11.0";
 
   src = fetchFromGitHub {
-    sha256 = "0gzapnllzyc005l3rs6iarjk1p5fc8mf9ysbck1mbzbd8xg6w35s";
+    sha256 = "13fhkmmrwzl657dq04x2wagkpjwdrzhkl141qvzr7y7sli8j0w1n";
     rev = version;
     repo = "tinyproxy";
     owner = "tinyproxy";
   };
 
-  nativeBuildInputs = [ autoreconfHook asciidoc libxml2 libxslt docbook_xsl ];
+  # perl is needed for man page generation.
+  nativeBuildInputs = [ autoreconfHook perl ];
 
-  # -z flag is not supported in darwin
-  preAutoreconf = stdenv.lib.optionalString stdenv.isDarwin ''
-    substituteInPlace configure.ac --replace \
-          'LDFLAGS="-Wl,-z,defs $LDFLAGS"' \
-          'LDFLAGS="-Wl, $LDFLAGS"'
-  '';
+  configureFlags = lib.optionals withDebug [ "--enable-debug" ]; # Enable debugging support code and methods.
 
-  # See: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=154624
-  postConfigure = ''
-    substituteInPlace docs/man5/Makefile --replace \
-          "-f manpage" \
-          "--xsltproc-opts=--nonet \\
-           -f manpage \\
-           -L"
-    substituteInPlace docs/man8/Makefile --replace \
-          "-f manpage" \
-          "--xsltproc-opts=--nonet \\
-           -f manpage \\
-           -L"
-  '';
-
-  configureFlags = [
-    "--disable-debug"      # Turn off debugging
-    "--enable-xtinyproxy"  # Compile in support for the XTinyproxy header, which is sent to any web server in your domain.
-    "--enable-filter"      # Allows Tinyproxy to filter out certain domains and URLs.
-    "--enable-upstream"    # Enable support for proxying connections through another proxy server.
-    "--enable-transparent" # Allow Tinyproxy to be used as a transparent proxy daemon.
-    "--enable-reverse"     # Enable reverse proxying.
-  ] ++
-  # See: https://github.com/tinyproxy/tinyproxy/issues/1
-  stdenv.lib.optional stdenv.isDarwin "--disable-regexcheck";
-
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://tinyproxy.github.io/";
     description = "A light-weight HTTP/HTTPS proxy daemon for POSIX operating systems";
-    license = licenses.gpl2;
+    license = licenses.gpl2Only;
     platforms = platforms.all;
     maintainers = [ maintainers.carlosdagos ];
   };
diff --git a/pkgs/tools/networking/tlspool/default.nix b/pkgs/tools/networking/tlspool/default.nix
index c91c703f28f..01eced9a566 100644
--- a/pkgs/tools/networking/tlspool/default.nix
+++ b/pkgs/tools/networking/tlspool/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub
-, cmake, pkgconfig, arpa2cm
+{ lib, stdenv, fetchFromGitHub
+, cmake, pkg-config, arpa2cm
 , openldap, p11-kit, unbound, libtasn1, db, openssl, quickder, libkrb5, ldns, gnutls-kdh
 , softhsm
 }:
@@ -19,7 +19,7 @@ stdenv.mkDerivation {
   };
 
   nativeBuildInputs = [
-    cmake pkgconfig arpa2cm
+    cmake pkg-config arpa2cm
   ];
 
   buildInputs = [
@@ -43,7 +43,7 @@ stdenv.mkDerivation {
     cp $src/src/*.h $out/include/${pname}
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A supercharged TLS daemon that allows for easy, strong and consistent deployment";
     license = licenses.gpl3;
     homepage = "http://www.tlspool.org";
diff --git a/pkgs/tools/networking/tnat64/default.nix b/pkgs/tools/networking/tnat64/default.nix
new file mode 100644
index 00000000000..9b1c2c3aec1
--- /dev/null
+++ b/pkgs/tools/networking/tnat64/default.nix
@@ -0,0 +1,37 @@
+{ lib, stdenv, fetchFromGitHub, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  pname = "tnat64";
+  version = "0.05";
+
+  src = fetchFromGitHub {
+    owner = "andrewshadura";
+    repo = pname;
+    rev = "${pname}-${version}";
+    sha256 = "07lmzidbrd3aahk2jvv93cic9gf36pwmgfd63gmy6hjkxf9a6fw9";
+  };
+
+  postPatch = ''
+    # Fix usage of deprecated sys_errlist
+    substituteInPlace tnat64.c --replace 'sys_errlist[errno]' 'strerror(errno)'
+  '';
+
+  configureFlags = [ "--libdir=$(out)/lib" ];
+  nativeBuildInputs = [ autoreconfHook ];
+
+  meta = with lib; {
+    description = "IPv4 to IPv6 interceptor";
+    homepage = "https://github.com/andrewshadura/tnat64";
+    license = licenses.gpl2Plus;
+    longDescription = ''
+      TNAT64 is an interceptor which redirects outgoing TCPv4 connections
+      through NAT64, thus enabling an application running on an IPv6-only host
+      to communicate with the IPv4 world, even if that application does not
+      support IPv6 at all.
+    '';
+    platforms = platforms.unix;
+    badPlatforms = platforms.darwin;
+    maintainers = [ maintainers.rnhmjoj ];
+  };
+
+}
diff --git a/pkgs/tools/networking/toss/default.nix b/pkgs/tools/networking/toss/default.nix
new file mode 100644
index 00000000000..3c8f7296181
--- /dev/null
+++ b/pkgs/tools/networking/toss/default.nix
@@ -0,0 +1,20 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "toss";
+  version = "1.1";
+  src = fetchFromGitHub {
+    owner = "zerotier";
+    repo = pname;
+    rev = version;
+    sha256 = "05ql0d8wbdhnmh3dw8ch5bi6clfb9h8v21lq2a74iy02slya2y0r";
+  };
+  preInstall = "export DESTDIR=$out/bin";
+  meta = with lib;
+    src.meta // {
+      description = "Dead simple LAN file transfers from the command line";
+      license = with licenses; [ mit ];
+      maintainers = with maintainers; [ ehmry ];
+      platforms = platforms.unix;
+    };
+}
diff --git a/pkgs/tools/networking/tox-node/default.nix b/pkgs/tools/networking/tox-node/default.nix
index feeceef81f4..5ed6aa632d3 100644
--- a/pkgs/tools/networking/tox-node/default.nix
+++ b/pkgs/tools/networking/tox-node/default.nix
@@ -1,42 +1,34 @@
-{ stdenv, rustPlatform, fetchFromGitHub
+{ lib, rustPlatform, fetchFromGitHub
 , libsodium, openssl
-, pkgconfig
+, pkg-config
 }:
 
 with rustPlatform;
 
 buildRustPackage rec {
   pname = "tox-node";
-  version = "0.0.8";
+  version = "0.1.1";
 
   src = fetchFromGitHub {
     owner = "tox-rs";
     repo = "tox-node";
     rev = "v${version}";
-    sha256 = "0vnjbhz74d4s6701xsd46ygx0kq8wd8xwpajvkhdivc042mw9078";
+    sha256 = "sha256-tB6v2NEBdTNHf89USdQOr/pV0mbxxb8ftOYPPJMvz5Y=";
   };
 
   buildInputs = [ libsodium openssl ];
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
 
   SODIUM_USE_PKG_CONFIG = "yes";
 
-  installPhase = ''
-    runHook preInstall
-
-    install -D $releaseDir/tox-node $out/bin/tox-node
-
-    runHook postInstall
-  '';
-
   doCheck = false;
 
-  cargoSha256 = "1ka22krw8s05vpamg9naqqf7vv5h8dkpfdik0wy8nispkrxzgb92";
+  cargoSha256 = "sha256-J/0KO33vZmOvm6V7qCXInuAJTbRqyy5/qj6p6dEmoas=";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A server application to run tox node written in pure Rust";
     homepage = "https://github.com/tox-rs/tox-node";
-    license = [ licenses.mit ];
+    license = [ licenses.gpl3Plus ];
     platforms = platforms.linux;
     maintainers = with maintainers; [ suhr ];
   };
diff --git a/pkgs/tools/networking/toxvpn/default.nix b/pkgs/tools/networking/toxvpn/default.nix
index 10e4dc2f1b1..c433d7d0a66 100644
--- a/pkgs/tools/networking/toxvpn/default.nix
+++ b/pkgs/tools/networking/toxvpn/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, fetchFromGitHub, cmake, nlohmann_json,
+{ lib, stdenv, fetchFromGitHub, cmake, nlohmann_json,
   libtoxcore, libsodium, libcap, zeromq,
   systemd ? null }:
 
-with stdenv.lib;
+with lib;
 
 stdenv.mkDerivation {
   name = "toxvpn-2019-09-09";
@@ -23,7 +23,7 @@ stdenv.mkDerivation {
 
   postInstall = "$out/bin/toxvpn -h";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "A powerful tool that allows one to make tunneled point to point connections over Tox";
     homepage    = "https://github.com/cleverca22/toxvpn";
     license     = licenses.gpl3;
diff --git a/pkgs/tools/networking/tracebox/default.nix b/pkgs/tools/networking/tracebox/default.nix
index 1fe2d25e35d..3d50b11f8e1 100644
--- a/pkgs/tools/networking/tracebox/default.nix
+++ b/pkgs/tools/networking/tracebox/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, autoreconfHook, libcrafter, libpcap, lua }:
+{ lib, stdenv, fetchzip, autoreconfHook, libcrafter, libpcap, lua }:
 
 stdenv.mkDerivation rec {
   pname = "tracebox";
@@ -22,11 +22,11 @@ stdenv.mkDerivation rec {
     sed '/libcrafter/d' -i src/tracebox/Makefile.am
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.tracebox.org/";
     description = "A middlebox detection tool";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ maintainers.lethalman ];
+    license = lib.licenses.gpl2;
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/traceroute/default.nix b/pkgs/tools/networking/traceroute/default.nix
index 2948a571a38..c941aad258c 100644
--- a/pkgs/tools/networking/traceroute/default.nix
+++ b/pkgs/tools/networking/traceroute/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "traceroute";
@@ -15,10 +15,10 @@ stdenv.mkDerivation rec {
     sed -i 's@LIBS := \(.*\) -lm \(.*\)@LIBS := \1 \2@' Make.rules
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://traceroute.sourceforge.net/";
     description = "Tracks the route taken by packets over an IP network";
-    license = stdenv.lib.licenses.gpl2;
+    license = lib.licenses.gpl2;
     maintainers = [ maintainers.koral ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/tools/networking/trickle/default.nix b/pkgs/tools/networking/trickle/default.nix
index f97d3c85762..8a5143d1e3b 100644
--- a/pkgs/tools/networking/trickle/default.nix
+++ b/pkgs/tools/networking/trickle/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libevent }:
+{ lib, stdenv, fetchurl, libevent, libtirpc }:
 
 stdenv.mkDerivation rec {
   name = "trickle-1.07";
@@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
     sha256 = "0s1qq3k5mpcs9i7ng0l9fvr1f75abpbzfi1jaf3zpzbs1dz50dlx";
   };
 
-  buildInputs = [ libevent ];
+  buildInputs = [ libevent libtirpc ];
 
   preConfigure = ''
     sed -i 's|libevent.a|libevent.so|' configure
@@ -18,7 +18,8 @@ stdenv.mkDerivation rec {
     sed -i '/#define in_addr_t/ s:^://:' config.h
   '';
 
-  LDFLAGS = "-levent";
+  NIX_LDFLAGS = [ "-levent" "-ltirpc" ];
+  NIX_CFLAGS_COMPILE = [ "-I${libtirpc.dev}/include/tirpc" ];
 
   configureFlags = [ "--with-libevent" ];
 
@@ -26,8 +27,8 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Lightweight userspace bandwidth shaper";
-    license = stdenv.lib.licenses.bsd3;
+    license = lib.licenses.bsd3;
     homepage = "https://monkey.org/~marius/pages/?page=trickle";
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/tridactyl-native/default.nix b/pkgs/tools/networking/tridactyl-native/default.nix
index 5dd5f3c153f..ce7325975fb 100644
--- a/pkgs/tools/networking/tridactyl-native/default.nix
+++ b/pkgs/tools/networking/tridactyl-native/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib, stdenv
 , fetchFromGitHub
 , python3
 }:
@@ -7,13 +7,13 @@ stdenv.mkDerivation rec {
   pname = "tridactyl-native";
   # this is actually the version of tridactyl itself; the native messenger will
   # probably not change with every tridactyl version
-  version = "1.20.0";
+  version = "1.20.4";
 
   src = fetchFromGitHub {
     owner = "tridactyl";
     repo = "tridactyl";
     rev = version;
-    sha256 = "14p6jadw4yij45rrwjbyf1lq3zpsni4sph88c6mlwlf8w830s3q8";
+    sha256 = "sha256-BjjRB9VadQ/MSwNK2QLbcTDoRs6Ua+5MONHtmfq4xz0=";
   };
   sourceRoot = "source/native";
 
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
     wrapPythonProgramsIn "$out/share/tridactyl"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Tridactyl native messaging host application";
     homepage = "https://github.com/tridactyl/tridactyl";
     license = licenses.asl20;
diff --git a/pkgs/tools/networking/tunnelto/default.nix b/pkgs/tools/networking/tunnelto/default.nix
index c0dce98c444..e750327e4ba 100644
--- a/pkgs/tools/networking/tunnelto/default.nix
+++ b/pkgs/tools/networking/tunnelto/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ lib, stdenv
 , rustPlatform
 , fetchFromGitHub
 , openssl
@@ -17,17 +17,17 @@ rustPlatform.buildRustPackage rec {
     sha256 = "1vvb619cq3n88y2s8lncwcyrhb5s4gpjfiyia91pilcpnfdb04y2";
   };
 
-  cargoSha256 = "0k0ig3dynj46kh8g7d6bljcaalmp40pvdbhbjmlxrmwnjq6bhzcq";
+  cargoSha256 = "1pjd62yz7pavcinc96g2x0f5giadl9aqvz1i5vhfanh6mj6mrbl1";
 
-  nativeBuildInputs = stdenv.lib.optionals stdenv.isLinux [ pkg-config ];
+  nativeBuildInputs = lib.optionals stdenv.isLinux [ pkg-config ];
   buildInputs = [ ]
-    ++ stdenv.lib.optionals stdenv.isLinux [ openssl ]
-    ++ stdenv.lib.optionals stdenv.isDarwin [ Security ];
+    ++ lib.optionals stdenv.isLinux [ openssl ]
+    ++ lib.optionals stdenv.isDarwin [ Security ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Expose your local web server to the internet with a public URL";
     homepage = "https://tunnelto.dev";
     license = licenses.mit;
-    maintainers = with maintainers; [ filalex77 ];
+    maintainers = with maintainers; [ Br1ght0ne ];
   };
 }
diff --git a/pkgs/tools/networking/twa/default.nix b/pkgs/tools/networking/twa/default.nix
index 21cbd2dfefb..b6038aa5435 100644
--- a/pkgs/tools/networking/twa/default.nix
+++ b/pkgs/tools/networking/twa/default.nix
@@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
     install -Dm 0644 README.md "$out/share/doc/twa/README.md"
 
     wrapProgram "$out/bin/twa" \
-      --prefix PATH : ${stdenv.lib.makeBinPath [ curl
+      --prefix PATH : ${lib.makeBinPath [ curl
                                                  host.dnsutils
                                                  jq
                                                  ncurses
diff --git a/pkgs/tools/networking/ua/default.nix b/pkgs/tools/networking/ua/default.nix
index 9ce7f5df247..feb17b283de 100644
--- a/pkgs/tools/networking/ua/default.nix
+++ b/pkgs/tools/networking/ua/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, buildGoPackage, fetchgit
-, pkgconfig
+{ lib, buildGoPackage, fetchgit
+, pkg-config
 , glib, libxml2
 }:
 
@@ -18,14 +18,14 @@ buildGoPackage rec {
 
   goDeps = ./deps.nix;
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ glib libxml2 ];
 
   meta = {
     homepage = "https://github.com/sloonz/ua";
-    license = stdenv.lib.licenses.isc;
+    license = lib.licenses.isc;
     description = "Universal Aggregator";
-    platforms = stdenv.lib.platforms.unix;
-    maintainers = with stdenv.lib.maintainers; [ ttuegel ];
+    platforms = lib.platforms.unix;
+    maintainers = with lib.maintainers; [ ttuegel ];
   };
 }
diff --git a/pkgs/tools/networking/ubridge/default.nix b/pkgs/tools/networking/ubridge/default.nix
index c628a2c8a8c..ac475e6e8a5 100644
--- a/pkgs/tools/networking/ubridge/default.nix
+++ b/pkgs/tools/networking/ubridge/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub
+{ lib, stdenv, fetchFromGitHub
 , libpcap
 }:
 
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
     mkdir -p $out/bin
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Bridge for UDP tunnels, Ethernet, TAP, and VMnet interfaces";
     longDescription = ''
       uBridge is a simple application to create user-land bridges between
diff --git a/pkgs/tools/networking/ucspi-tcp/default.nix b/pkgs/tools/networking/ucspi-tcp/default.nix
index 72325df8be7..0d6e0a2f8d9 100644
--- a/pkgs/tools/networking/ucspi-tcp/default.nix
+++ b/pkgs/tools/networking/ucspi-tcp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   name = "ucspi-tcp-0.88";
@@ -49,7 +49,7 @@ stdenv.mkDerivation rec {
     cp debian/ucspi-tcp-man/*.1 "$out/share/man/man1"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Command-line tools for building TCP client-server applications";
     longDescription = ''
       tcpserver waits for incoming connections and, for each connection, runs a
diff --git a/pkgs/tools/networking/udptunnel/default.nix b/pkgs/tools/networking/udptunnel/default.nix
index 08fb7cd62e0..6063cb38b56 100644
--- a/pkgs/tools/networking/udptunnel/default.nix
+++ b/pkgs/tools/networking/udptunnel/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation {
   name = "udptunnel-19";
@@ -17,8 +17,8 @@ stdenv.mkDerivation {
   meta = {
     homepage = "https://code.google.com/archive/p/udptunnel/";
     description = "Tunnels TCP over UDP packets";
-    license = stdenv.lib.licenses.gpl3Plus;
-    maintainers = with stdenv.lib.maintainers; [viric];
-    platforms = with stdenv.lib.platforms; linux;
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [viric];
+    platforms = with lib.platforms; linux;
   };
 }
diff --git a/pkgs/tools/networking/uget-integrator/default.nix b/pkgs/tools/networking/uget-integrator/default.nix
index a600d6c5341..2d069ea07f0 100644
--- a/pkgs/tools/networking/uget-integrator/default.nix
+++ b/pkgs/tools/networking/uget-integrator/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, uget, python3Packages }:
+{ lib, stdenv, fetchFromGitHub, uget, python3Packages }:
 
 stdenv.mkDerivation rec {
   pname = "uget-integrator";
@@ -20,16 +20,16 @@ stdenv.mkDerivation rec {
       substituteInPlace $f --replace "/usr" "$out"
     done
 
-	  install -D -t $out/bin                                   bin/uget-integrator
-	  install -D -t $out/etc/opt/chrome/native-messaging-hosts conf/com.ugetdm.chrome.json
-	  install -D -t $out/etc/chromium/native-messaging-hosts   conf/com.ugetdm.chrome.json
-	  install -D -t $out/etc/opera/native-messaging-hosts      conf/com.ugetdm.chrome.json
-	  install -D -t $out/lib/mozilla/native-messaging-hosts    conf/com.ugetdm.firefox.json
+    install -D -t $out/bin                                   bin/uget-integrator
+    install -D -t $out/etc/opt/chrome/native-messaging-hosts conf/com.ugetdm.chrome.json
+    install -D -t $out/etc/chromium/native-messaging-hosts   conf/com.ugetdm.chrome.json
+    install -D -t $out/etc/opera/native-messaging-hosts      conf/com.ugetdm.chrome.json
+    install -D -t $out/lib/mozilla/native-messaging-hosts    conf/com.ugetdm.firefox.json
 
     wrapPythonPrograms
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Native messaging host to integrate uGet Download Manager with web browsers";
     homepage = "https://github.com/ugetdm/uget-integrator";
     license = licenses.gpl3;
diff --git a/pkgs/tools/networking/uget/default.nix b/pkgs/tools/networking/uget/default.nix
index f8c585c3b25..2bece5e30dd 100644
--- a/pkgs/tools/networking/uget/default.nix
+++ b/pkgs/tools/networking/uget/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, intltool, openssl, curl, libnotify,
+{ lib, stdenv, fetchurl, pkg-config, intltool, openssl, curl, libnotify,
   libappindicator-gtk3, gst_all_1, gtk3, dconf, wrapGAppsHook, aria2 ? null
 }:
 
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [
-    pkgconfig
+    pkg-config
     intltool
     wrapGAppsHook
   ];
@@ -23,17 +23,17 @@ stdenv.mkDerivation rec {
     libnotify
     libappindicator-gtk3
     gtk3
-    (stdenv.lib.getLib dconf)
+    (lib.getLib dconf)
   ]
   ++ (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-good ])
-  ++ (stdenv.lib.optional (aria2 != null) aria2);
+  ++ (lib.optional (aria2 != null) aria2);
 
   enableParallelBuilding = true;
 
-  preFixup = stdenv.lib.optionalString (aria2 != null)
+  preFixup = lib.optionalString (aria2 != null)
                ''gappsWrapperArgs+=(--suffix PATH : "${aria2}/bin")'';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Download manager using GTK and libcurl";
     longDescription = ''
       uGet is a VERY Powerful download manager application with a large
diff --git a/pkgs/tools/networking/unbound/default.nix b/pkgs/tools/networking/unbound/default.nix
index 39a7b11f09f..a0c774fb734 100644
--- a/pkgs/tools/networking/unbound/default.nix
+++ b/pkgs/tools/networking/unbound/default.nix
@@ -1,24 +1,45 @@
-{ stdenv, fetchurl, openssl, nettle, expat, libevent, dns-root-data }:
+{ stdenv
+, lib
+, fetchurl
+, openssl
+, nettle
+, expat
+, libevent
+, dns-root-data
+, pkg-config
+, makeWrapper
+  #
+  # By default unbound will not be built with systemd support. Unbound is a very
+  # commmon dependency. The transitive dependency closure of systemd also
+  # contains unbound.
+  # Since most (all?) (lib)unbound users outside of the unbound daemon usage do
+  # not need the systemd integration it is likely best to just default to no
+  # systemd integration.
+  # For the daemon use-case, that needs to notify systemd, use `unbound-with-systemd`.
+  #
+, withSystemd ? false
+, systemd ? null
+  # optionally support DNS-over-HTTPS as a server
+, withDoH ? false
+, libnghttp2
+}:
 
 stdenv.mkDerivation rec {
   pname = "unbound";
-  version = "1.11.0";
+  version = "1.13.1";
 
   src = fetchurl {
     url = "https://unbound.net/downloads/${pname}-${version}.tar.gz";
-    sha256 = "1xqywn2qdmjjq0csrqxh9p2rnizdrr1f99zdx87z7f3fyyc0fbwz";
+    sha256 = "sha256-hQTZe4/FvYlzRcldEW4O4N34yP+ZWQqytL0TJ4yfULg=";
   };
 
-  # https://github.com/NLnetLabs/unbound/pull/90
-  postPatch = ''
-    substituteInPlace validator/val_secalgo.c \
-      --replace '&nettle_secp_256r1' 'nettle_get_secp_256r1()' \
-      --replace '&nettle_secp_384r1' 'nettle_get_secp_384r1()'
-  '';
-
   outputs = [ "out" "lib" "man" ]; # "dev" would only split ~20 kB
 
-  buildInputs = [ openssl nettle expat libevent ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = [ openssl nettle expat libevent ]
+    ++ lib.optionals withSystemd [ pkg-config systemd ]
+    ++ lib.optionals withDoH [ libnghttp2 ];
 
   configureFlags = [
     "--with-ssl=${openssl.dev}"
@@ -30,15 +51,23 @@ stdenv.mkDerivation rec {
     "--with-rootkey-file=${dns-root-data}/root.key"
     "--enable-pie"
     "--enable-relro-now"
+  ] ++ lib.optional stdenv.hostPlatform.isStatic [
+    "--disable-flto"
+  ] ++ lib.optionals withSystemd [
+    "--enable-systemd"
+  ] ++ lib.optionals withDoH [
+    "--with-libnghttp2=${libnghttp2.dev}"
   ];
 
   installFlags = [ "configfile=\${out}/etc/unbound/unbound.conf" ];
 
   postInstall = ''
     make unbound-event-install
+    wrapProgram $out/bin/unbound-control-setup \
+      --prefix PATH : ${lib.makeBinPath [ openssl ]}
   '';
 
-  preFixup = stdenv.lib.optionalString (stdenv.isLinux && !stdenv.hostPlatform.isMusl) # XXX: revisit
+  preFixup = lib.optionalString (stdenv.isLinux && !stdenv.hostPlatform.isMusl) # XXX: revisit
     # Build libunbound again, but only against nettle instead of openssl.
     # This avoids gnutls.out -> unbound.lib -> openssl.out.
     # There was some problem with this on Darwin; let's not complicate non-Linux.
@@ -48,17 +77,17 @@ stdenv.mkDerivation rec {
       buildPhase
       installPhase
     ''
-    # get rid of runtime dependencies on $dev outputs
+  # get rid of runtime dependencies on $dev outputs
   + ''substituteInPlace "$lib/lib/libunbound.la" ''
-    + stdenv.lib.concatMapStrings
-      (pkg: " --replace '-L${pkg.dev}/lib' '-L${pkg.out}/lib' --replace '-R${pkg.dev}/lib' '-R${pkg.out}/lib'")
-      buildInputs;
+  + lib.concatMapStrings
+    (pkg: lib.optionalString (pkg ? dev) " --replace '-L${pkg.dev}/lib' '-L${pkg.out}/lib' --replace '-R${pkg.dev}/lib' '-R${pkg.out}/lib'")
+    (builtins.filter (p: p != null) buildInputs);
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Validating, recursive, and caching DNS resolver";
     license = licenses.bsd3;
     homepage = "https://www.unbound.net";
     maintainers = with maintainers; [ ehmry fpletz globin ];
-    platforms = stdenv.lib.platforms.unix;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/unbound/python.nix b/pkgs/tools/networking/unbound/python.nix
index 939c2299e32..fcfd93be4d6 100644
--- a/pkgs/tools/networking/unbound/python.nix
+++ b/pkgs/tools/networking/unbound/python.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, openssl, expat, libevent, swig, pythonPackages }:
+{ lib, stdenv, fetchurl, openssl, expat, libevent, swig, pythonPackages }:
 
 let
   inherit (pythonPackages) python;
@@ -54,12 +54,12 @@ in stdenv.mkDerivation rec {
     patchelf --replace-needed libunbound.so.2 $out/${python.sitePackages}/libunbound.so.2 $out/${python.sitePackages}/_unbound.so
     '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Python library for Unbound, the validating, recursive, and caching DNS resolver";
     license = licenses.bsd3;
     homepage = "http://www.unbound.net";
     maintainers = with maintainers; [ leenaars ];
-    platforms = stdenv.lib.platforms.unix;
+    platforms = lib.platforms.unix;
     broken = true;
   };
 }
diff --git a/pkgs/tools/networking/updog/default.nix b/pkgs/tools/networking/updog/default.nix
new file mode 100644
index 00000000000..22942891d6a
--- /dev/null
+++ b/pkgs/tools/networking/updog/default.nix
@@ -0,0 +1,26 @@
+{ lib, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "updog";
+  version = "1.4";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "7n/ddjF6eJklo+T79+/zBxSHryebc2W9gxwxsb2BbF4=";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    colorama flask flask-httpauth werkzeug pyopenssl
+  ];
+
+  checkPhase = ''
+    $out/bin/updog --help > /dev/null
+  '';
+
+  meta = with lib; {
+    description = "Updog is a replacement for Python's SimpleHTTPServer";
+    homepage = "https://github.com/sc0tfree/updog";
+    license = licenses.mit;
+    maintainers = with maintainers; [ ethancedwards8 ];
+  };
+}
diff --git a/pkgs/tools/networking/urlwatch/default.nix b/pkgs/tools/networking/urlwatch/default.nix
index f23aed3707b..b1a374f0349 100644
--- a/pkgs/tools/networking/urlwatch/default.nix
+++ b/pkgs/tools/networking/urlwatch/default.nix
@@ -1,14 +1,17 @@
-{ stdenv, fetchFromGitHub, python3Packages }:
+{ lib
+, fetchFromGitHub
+, python3Packages
+}:
 
 python3Packages.buildPythonApplication rec {
-  name = "urlwatch-${version}";
-  version = "2.19";
+  pname = "urlwatch";
+  version = "2.23";
 
   src = fetchFromGitHub {
-    owner  = "thp";
-    repo   = "urlwatch";
-    rev    = version;
-    sha256 = "05vxs0x8gnsv2r9cy0brqny1y5jnj2mw11lqc8lqahx84xcs2m00";
+    owner = "thp";
+    repo = "urlwatch";
+    rev = version;
+    sha256 = "1ryygy7lalmwnv9kc8q4920gkdx878izy33a5dgxb780sy2qq8pg";
   };
 
   propagatedBuildInputs = with python3Packages; [
@@ -16,16 +19,23 @@ python3Packages.buildPythonApplication rec {
     cssselect
     keyring
     lxml
+    markdown2
+    matrix-client
     minidb
+    pushbullet
     pycodestyle
+    pyppeteer
     pyyaml
     requests
   ];
 
-  meta = with stdenv.lib; {
+  # no tests
+  doCheck = false;
+
+  meta = with lib; {
     description = "A tool for monitoring webpages for updates";
     homepage = "https://thp.io/2008/urlwatch/";
     license = licenses.bsd3;
-    maintainers = with maintainers; [ tv ];
+    maintainers = with maintainers; [ kmein tv ];
   };
 }
diff --git a/pkgs/tools/networking/userhosts/default.nix b/pkgs/tools/networking/userhosts/default.nix
new file mode 100644
index 00000000000..6cec402638a
--- /dev/null
+++ b/pkgs/tools/networking/userhosts/default.nix
@@ -0,0 +1,23 @@
+{lib, stdenv, fetchFromGitHub, pkg-config, ncurses, libnl }:
+
+stdenv.mkDerivation rec {
+  pname = "userhosts";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "figiel";
+    repo = "hosts";
+    rev = "v${version}";
+    hash = "sha256-9uF0fYl4Zz/Ia2UKx7CBi8ZU8jfWoBfy2QSgTSwXo5A";
+  };
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with lib; {
+    description = "A libc wrapper providing per-user hosts file";
+    homepage = "https://github.com/figiel/hosts";
+    maintainers = [ maintainers.bobvanderlinden ];
+    license = licenses.cc0;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/networking/uwimap/default.nix b/pkgs/tools/networking/uwimap/default.nix
index bd38a1cfa2f..e675268163a 100644
--- a/pkgs/tools/networking/uwimap/default.nix
+++ b/pkgs/tools/networking/uwimap/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fetchpatch, pam, openssl }:
+{ lib, stdenv, fetchurl, fetchpatch, pam, openssl }:
 
 stdenv.mkDerivation ({
   name = "uw-imap-2007f";
@@ -12,13 +12,13 @@ stdenv.mkDerivation ({
     then "osx"
     else "lnp") ]  # Linux with PAM modules;
     # -fPIC is required to compile php with imap on x86_64 systems
-    ++ stdenv.lib.optional stdenv.isx86_64 "EXTRACFLAGS=-fPIC"
-    ++ stdenv.lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ "CC=${stdenv.hostPlatform.config}-gcc" "RANLIB=${stdenv.hostPlatform.config}-ranlib" ];
+    ++ lib.optional stdenv.isx86_64 "EXTRACFLAGS=-fPIC"
+    ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ "CC=${stdenv.hostPlatform.config}-gcc" "RANLIB=${stdenv.hostPlatform.config}-ranlib" ];
 
   hardeningDisable = [ "format" ];
 
   buildInputs = [ openssl ]
-    ++ stdenv.lib.optional (!stdenv.isDarwin) pam;
+    ++ lib.optional (!stdenv.isDarwin) pam;
 
   patches = [ (fetchpatch {
     url = "https://salsa.debian.org/holmgren/uw-imap/raw/dcb42981201ea14c2d71c01ebb4a61691b6f68b3/debian/patches/1006_openssl1.1_autoverify.patch";
@@ -31,7 +31,7 @@ stdenv.mkDerivation ({
     sed -i src/osdep/unix/Makefile -e 's,^SSLLIB=.*,SSLLIB=${openssl.out}/lib,'
   '';
 
-  NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin
+  NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin
     "-I${openssl.dev}/include/openssl";
 
   installPhase = ''
@@ -45,14 +45,14 @@ stdenv.mkDerivation ({
   meta = {
     homepage = "https://www.washington.edu/imap/";
     description = "UW IMAP toolkit - IMAP-supporting software developed by the UW";
-    license = stdenv.lib.licenses.asl20;
-    platforms = with stdenv.lib.platforms; linux;
+    license = lib.licenses.asl20;
+    platforms = with lib.platforms; linux;
   };
 
   passthru = {
     withSSL = true;
   };
-} // stdenv.lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) {
+} // lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) {
   # This is set here to prevent rebuilds on native compilation.
   # Configure phase is a no-op there, because this package doesn't use ./configure scripts.
   configurePhase = ''
diff --git a/pkgs/tools/networking/v2ray/default.nix b/pkgs/tools/networking/v2ray/default.nix
index ab3f5eb3ef4..8c82c379c38 100644
--- a/pkgs/tools/networking/v2ray/default.nix
+++ b/pkgs/tools/networking/v2ray/default.nix
@@ -1,38 +1,89 @@
-{ callPackage, fetchFromGitHub, fetchurl
+{ lib, fetchFromGitHub, fetchurl, linkFarm, buildGoModule, runCommand, makeWrapper, nixosTests
 , assetOverrides ? {}
-, ... } @ args:
+}:
 
-callPackage ./generic.nix (rec {
-  version = "4.26.0";
+let
+  version = "4.41.0";
 
   src = fetchFromGitHub {
-    owner = "v2ray";
+    owner = "v2fly";
     repo = "v2ray-core";
     rev = "v${version}";
-    sha256 = "069wm0n44i4l9pnrhwf60ssld65p6gfj4wfc68hrhj4zi4jvlyds";
+    sha256 = "1300gl6y94i1488ja6kic0m5fa2qxakbdc06qd0lgkg6inzbm6gz";
   };
 
-  vendorSha256 = "1520h69z0inbsrw5505cxbinqakvwcrdx3pisrwnp9lv4jsrzzsr";
+  vendorSha256 = "sha256-oHKXDzufvTzOzBqFjBzu3vCwTF/FJMomopY3cUktwiM=";
 
   assets = {
     # MIT licensed
     "geoip.dat" = let
-      geoipRev = "202007080004";
-      geoipSha256 = "1j4qg831dhxdy7brgxn4ca69cvwr3zsgizidlzasbkdn2rwai17y";
+      geoipRev = "202106240309";
+      geoipSha256 = "0ypydpgvizf9pfdxna3f6fqn1svsrkac0p3j9s63y55gbqpglacq";
     in fetchurl {
-      url = "https://github.com/v2ray/geoip/releases/download/${geoipRev}/geoip.dat";
+      url = "https://github.com/v2fly/geoip/releases/download/${geoipRev}/geoip.dat";
       sha256 = geoipSha256;
     };
 
     # MIT licensed
     "geosite.dat" = let
-      geositeRev = "20200708125309";
-      geositeSha256 = "1pr4137ri3v3r880yx5sqf2p7qfn8g7s555q51x3smkjzkyrskcy";
+      geositeRev = "20210626145509";
+      geositeSha256 = "0skhwwlzlyh8rvzyblg1l2xw1bawqs12i6zw5sv3d55pnw7wmf2z";
     in fetchurl {
-      url = "https://github.com/v2ray/domain-list-community/releases/download/${geositeRev}/dlc.dat";
+      url = "https://github.com/v2fly/domain-list-community/releases/download/${geositeRev}/dlc.dat";
       sha256 = geositeSha256;
     };
 
   } // assetOverrides;
 
-} // args)
+  assetsDrv = linkFarm "v2ray-assets" (lib.mapAttrsToList (name: path: {
+    inherit name path;
+  }) assets);
+
+  core = buildGoModule rec {
+    pname = "v2ray-core";
+    inherit version src;
+
+    inherit vendorSha256;
+
+    doCheck = false;
+
+    buildPhase = ''
+      buildFlagsArray=(-v -p $NIX_BUILD_CORES -ldflags="-s -w")
+      runHook preBuild
+      go build "''${buildFlagsArray[@]}" -o v2ray ./main
+      go build "''${buildFlagsArray[@]}" -o v2ctl -tags confonly ./infra/control/main
+      runHook postBuild
+    '';
+
+    installPhase = ''
+      install -Dm755 v2ray v2ctl -t $out/bin
+    '';
+
+    meta = {
+      homepage = "https://www.v2fly.org/en_US/";
+      description = "A platform for building proxies to bypass network restrictions";
+      license = with lib.licenses; [ mit ];
+      maintainers = with lib.maintainers; [ servalcatty ];
+    };
+  };
+
+in runCommand "v2ray-${version}" {
+  inherit src version;
+  inherit (core) meta;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  passthru = {
+    inherit core;
+    updateScript = ./update.sh;
+    tests = {
+      simple-vmess-proxy-test = nixosTests.v2ray;
+    };
+  };
+
+} ''
+  for file in ${core}/bin/*; do
+    makeWrapper "$file" "$out/bin/$(basename "$file")" \
+      --set-default V2RAY_LOCATION_ASSET ${assetsDrv}
+  done
+''
diff --git a/pkgs/tools/networking/v2ray/generic.nix b/pkgs/tools/networking/v2ray/generic.nix
deleted file mode 100644
index 4499e91425f..00000000000
--- a/pkgs/tools/networking/v2ray/generic.nix
+++ /dev/null
@@ -1,52 +0,0 @@
-{ lib, linkFarm, buildGoModule, runCommand, makeWrapper
-
-# Version specific args
-, version, src, assets, vendorSha256
-, ... }:
-
-let
-  assetsDrv = linkFarm "v2ray-assets" (lib.mapAttrsToList (name: path: {
-    inherit name path;
-  }) assets);
-
-  core = buildGoModule rec {
-    pname = "v2ray-core";
-    inherit version src;
-
-    inherit vendorSha256;
-
-    doCheck = false;
-
-    buildPhase = ''
-      runHook preBuild
-
-      go build -o v2ray v2ray.com/core/main
-      go build -o v2ctl v2ray.com/core/infra/control/main
-
-      runHook postBuild
-    '';
-
-    installPhase = ''
-      install -Dm755 v2ray v2ctl -t $out/bin
-    '';
-  };
-
-in runCommand "v2ray-${version}" {
-  inherit version;
-
-  buildInputs = [ assetsDrv core ];
-  nativeBuildInputs = [ makeWrapper ];
-
-  meta = {
-    homepage = "https://www.v2ray.com/en/index.html";
-    description = "A platform for building proxies to bypass network restrictions";
-    license = with lib.licenses; [ mit ];
-    maintainers = with lib.maintainers; [ servalcatty ];
-  };
-
-} ''
-  for file in ${core}/bin/*; do
-    makeWrapper "$file" "$out/bin/$(basename "$file")" \
-      --set-default V2RAY_LOCATION_ASSET ${assetsDrv}
-  done
-''
diff --git a/pkgs/tools/networking/v2ray/update.sh b/pkgs/tools/networking/v2ray/update.sh
index 56a148444c7..f645b8ea093 100755
--- a/pkgs/tools/networking/v2ray/update.sh
+++ b/pkgs/tools/networking/v2ray/update.sh
@@ -14,7 +14,7 @@ echo "Current version:" >&2
 echo "core: $old_core_rev, geoip: $old_geoip_rev, geosite: $old_geosite_rev" >&2
 
 function fetch_latest_rev {
-    curl "https://api.github.com/repos/v2ray/$1/releases" |
+    curl "https://api.github.com/repos/v2fly/$1/releases" |
         jq '.[0].tag_name' --raw-output
 }
 
@@ -28,7 +28,7 @@ echo "core: $core_rev, geoip: $geoip_rev, geosite: $geosite_rev" >&2
 if [[ $core_rev != $old_core_rev ]]; then
     echo "Prefetching core..." >&2
     { read hash; read store_path; } < <(
-        nix-prefetch-url --unpack --print-path "https://github.com/v2ray/v2ray-core/archive/v$core_rev.zip"
+        nix-prefetch-url --unpack --print-path "https://github.com/v2fly/v2ray-core/archive/v$core_rev.zip"
     )
 
     sed --in-place \
@@ -40,7 +40,7 @@ fi
 
 if [[ $geoip_rev != $old_geoip_rev ]]; then
     echo "Prefetching geoip..." >&2
-    hash=$(nix-prefetch-url "https://github.com/v2ray/geoip/releases/download/$geoip_rev/geoip.dat")
+    hash=$(nix-prefetch-url "https://github.com/v2fly/geoip/releases/download/$geoip_rev/geoip.dat")
     sed --in-place \
         -e "s/\bgeoipRev = \".*\"/geoipRev = \"$geoip_rev\"/" \
         -e "s/\bgeoipSha256 = \".*\"/geoipSha256 = \"$hash\"/" \
@@ -49,7 +49,7 @@ fi
 
 if [[ $geosite_rev != $old_geosite_rev ]]; then
     echo "Prefetching geosite..." >&2
-    hash=$(nix-prefetch-url "https://github.com/v2ray/domain-list-community/releases/download/$geosite_rev/dlc.dat")
+    hash=$(nix-prefetch-url "https://github.com/v2fly/domain-list-community/releases/download/$geosite_rev/dlc.dat")
     sed --in-place \
         -e "s/\bgeositeRev = \".*\"/geositeRev = \"$geosite_rev\"/" \
         -e "s/\bgeositeSha256 = \".*\"/geositeSha256 = \"$hash\"/" \
@@ -61,11 +61,11 @@ set +o pipefail
 vendorSha256=$(
     nix-build "$nixpkgs" -A v2ray --no-out-link 2>&1 |
     tee /dev/stderr |
-    sed -nE 's/.*got:\s*sha256:(\w+)$/\1/p'
+    sed -nE 's/.*got:\s*(sha256\S+)$/\1/p'
 )
 [[ "$vendorSha256" ]]
 sed --in-place \
-    -e "s/vendorSha256 = \".*\"/vendorSha256 = \"$vendorSha256\"/" \
+    -e "s#vendorSha256 = \".*\"#vendorSha256 = \"$vendorSha256\"#" \
     "$version_nix"
 
 echo "vendorSha256 updated" >&2
diff --git a/pkgs/tools/networking/vde2/default.nix b/pkgs/tools/networking/vde2/default.nix
index b10ec5c1695..58fae3f9f15 100644
--- a/pkgs/tools/networking/vde2/default.nix
+++ b/pkgs/tools/networking/vde2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fetchpatch, openssl, libpcap, python2, withPython ? false }:
+{ lib, stdenv, fetchurl, fetchpatch, openssl, libpcap, python2, withPython ? false }:
 
 stdenv.mkDerivation rec {
   name = "vde2-2.3.2";
@@ -12,24 +12,28 @@ stdenv.mkDerivation rec {
     # Fix build with openssl 1.1.0
     (fetchpatch {
       name = "vde_cryptcab-compile-against-openssl-1.1.0.patch";
-      url = "https://git.archlinux.org/svntogit/packages.git/plain/trunk/vde_cryptcab-compile-against-openssl-1.1.0.patch?h=packages/vde2&id=15b11be49997fa94b603e366064690b7cc6bce61";
+      url = "https://raw.githubusercontent.com/archlinux/svntogit-packages/15b11be49997fa94b603e366064690b7cc6bce61/trunk/vde_cryptcab-compile-against-openssl-1.1.0.patch";
       sha256 = "07z1yabwigq35mkwzqa934n7vjnjlqz5xfzq8cfj87lgyjjp00qi";
     })
-  ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl [
+  ] ++ lib.optional stdenv.hostPlatform.isMusl [
     (fetchpatch {
       url = "https://git.alpinelinux.org/aports/plain/main/vde2/musl-build-fix.patch?id=ddee2f86a48e087867d4a2c12849b2e3baccc238";
       sha256 = "0b5382v541bkxhqylilcy34bh83ag96g71f39m070jzvi84kx8af";
     })
   ];
 
-  configureFlags = stdenv.lib.optional (!withPython) "--disable-python";
+  preConfigure = lib.optionalString (lib.versionAtLeast stdenv.hostPlatform.darwinMinVersion "11") ''
+    MACOSX_DEPLOYMENT_TARGET=10.16
+  '';
+
+  configureFlags = lib.optional (!withPython) "--disable-python";
 
   buildInputs = [ openssl libpcap ]
-    ++ stdenv.lib.optional withPython python2;
+    ++ lib.optional withPython python2;
 
   hardeningDisable = [ "format" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/virtualsquare/vde-2";
     description = "Virtual Distributed Ethernet, an Ethernet compliant virtual network";
     platforms = platforms.unix;
diff --git a/pkgs/tools/networking/vegeta/default.nix b/pkgs/tools/networking/vegeta/default.nix
index cb7cbd67743..16abe8c6033 100644
--- a/pkgs/tools/networking/vegeta/default.nix
+++ b/pkgs/tools/networking/vegeta/default.nix
@@ -2,13 +2,13 @@
 
 buildGoPackage rec {
   pname = "vegeta";
-  version = "12.7.0";
+  version = "12.8.4";
 
   src = fetchFromGitHub {
-    owner = "tsenart";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "1wzx9588hjzxq65fxi1zz9xpsw33qq41hpl0j2f077g4m8yxahv5";
+    owner  = "tsenart";
+    repo   = pname;
+    rev    = "v${version}";
+    sha256 = "0sw10k4g370c544dgw2c1sqdnxryld8lf6c1wnyknrm3zsfzn1hl";
   };
 
   goPackagePath = "github.com/tsenart/${pname}";
diff --git a/pkgs/tools/networking/vegeta/deps.nix b/pkgs/tools/networking/vegeta/deps.nix
index d0637dbeaef..1a06ad178ec 100644
--- a/pkgs/tools/networking/vegeta/deps.nix
+++ b/pkgs/tools/networking/vegeta/deps.nix
@@ -243,4 +243,13 @@
       sha256 = "00wzr5w8aadipgc3rkk8f11i41znskfj9ix5nhhaxyg7isrslgcj";
     };
   }
+  {
+    goPackagePath = "pgregory.net/rapid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/flyingmutant/rapid";
+      rev = "v0.3.3";
+      sha256 = "04w4dmx753b2xp5z5br5wxalgkkgag8qpbxics2gdcksqgi85vg3";
+    };
+  }
 ]
diff --git a/pkgs/tools/networking/vlan/default.nix b/pkgs/tools/networking/vlan/default.nix
index 331a993f3ac..2d329cb29b0 100644
--- a/pkgs/tools/networking/vlan/default.nix
+++ b/pkgs/tools/networking/vlan/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation {
   name = "vlan-1.9";
@@ -25,7 +25,7 @@ stdenv.mkDerivation {
       cp vconfig.8 $out/share/man/man8/
     '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "User mode programs to enable VLANs on Ethernet devices";
     platforms = platforms.linux;
     license = licenses.gpl2Plus;
diff --git a/pkgs/tools/networking/vpnc-scripts/default.nix b/pkgs/tools/networking/vpnc-scripts/default.nix
new file mode 100644
index 00000000000..776e8450d13
--- /dev/null
+++ b/pkgs/tools/networking/vpnc-scripts/default.nix
@@ -0,0 +1,41 @@
+{ lib, stdenv, fetchgit
+, makeWrapper
+, nettools, gawk, systemd, openresolv, coreutils, gnugrep, iproute2
+}:
+
+stdenv.mkDerivation {
+  pname = "vpnc-scripts";
+  version = "unstable-2021-03-21";
+  src = fetchgit {
+    url = "git://git.infradead.org/users/dwmw2/vpnc-scripts.git";
+    rev = "8fff06090ed193c4a7285e9a10b42e6679e8ecf3";
+    sha256 = "14bzzpwz7kdmlbx825h6s4jjdml9q6ziyrq8311lp8caql68qdq1";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp vpnc-script $out/bin
+  '';
+
+  preFixup = ''
+    substituteInPlace $out/bin/vpnc-script \
+      --replace "which" "type -P"
+  '' + lib.optionalString stdenv.isLinux ''
+    substituteInPlace $out/bin/vpnc-script \
+      --replace "/sbin/resolvconf" "${openresolv}/bin/resolvconf" \
+      --replace "/usr/bin/resolvectl" "${systemd}/bin/resolvectl"
+  '' + ''
+    wrapProgram $out/bin/vpnc-script \
+      --prefix PATH : "${lib.makeBinPath ([ nettools gawk coreutils gnugrep ] ++ lib.optionals stdenv.isLinux [ openresolv iproute2 ])}"
+  '';
+
+  meta = with lib; {
+    description = "script for vpnc to configure the network routing and name service";
+    homepage = "https://www.infradead.org/openconnect/";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ jerith666 ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/tools/networking/vpnc/default.nix b/pkgs/tools/networking/vpnc/default.nix
index 7a52112e65f..edb50559fc0 100644
--- a/pkgs/tools/networking/vpnc/default.nix
+++ b/pkgs/tools/networking/vpnc/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchsvn, nettools, libgcrypt, openssl, openresolv, perl, gawk, makeWrapper }:
+{ lib, stdenv, fetchsvn, nettools, libgcrypt, openssl, openresolv, perl, gawk, makeWrapper }:
 
 stdenv.mkDerivation {
   name = "vpnc-0.5.3-post-r550";
@@ -19,7 +19,8 @@ stdenv.mkDerivation {
   # `ifconfig' as found in net-tools (not GNU Inetutils).
   propagatedBuildInputs = [ nettools ];
 
-  buildInputs = [libgcrypt perl makeWrapper openssl ];
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [libgcrypt perl openssl ];
 
   preConfigure = ''
     sed -i 's|^#OPENSSL|OPENSSL|g' Makefile
@@ -50,8 +51,8 @@ stdenv.mkDerivation {
   meta = {
     homepage = "https://www.unix-ag.uni-kl.de/~massar/vpnc/";
     description = "Virtual private network (VPN) client for Cisco's VPN concentrators";
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = lib.licenses.gpl2Plus;
 
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/vtun/default.nix b/pkgs/tools/networking/vtun/default.nix
index 71d9097a150..4d79fdc9bc5 100644
--- a/pkgs/tools/networking/vtun/default.nix
+++ b/pkgs/tools/networking/vtun/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fetchpatch, openssl, lzo, zlib, yacc, flex }:
+{ lib, stdenv, fetchurl, fetchpatch, openssl, lzo, zlib, bison, flex }:
 
 stdenv.mkDerivation rec {
   name = "vtun-3.0.4";
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
     sed -i -e 's/-m 755//' -e 's/-o root -g 0//' Makefile.in
     sed -i '/strip/d' Makefile.in
   '';
-  buildInputs = [ lzo openssl zlib yacc flex ];
+  buildInputs = [ lzo openssl zlib bison flex ];
 
   configureFlags = [
     "--with-lzo-headers=${lzo}/include/lzo"
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
     "--with-blowfish-headers=${openssl.dev}/include/openssl"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
       description = "Virtual Tunnels over TCP/IP with traffic shaping, compression and encryption";
       homepage = "http://vtun.sourceforge.net/";
       license = licenses.gpl2;
diff --git a/pkgs/tools/networking/waitron/default.nix b/pkgs/tools/networking/waitron/default.nix
new file mode 100644
index 00000000000..8364cd5763d
--- /dev/null
+++ b/pkgs/tools/networking/waitron/default.nix
@@ -0,0 +1,30 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.3.0
+{ lib, buildGoPackage, fetchgit, fetchhg, fetchbzr, fetchsvn }:
+
+buildGoPackage rec {
+  name = "waitron-unstable-${version}";
+  version = "2020-01-24";
+  rev = "c96833619cbb0cf2bc71b1d7b534101e139cc6e6";
+
+  goPackagePath = "github.com/ns1/waitron";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/ns1/waitron";
+    sha256 = "0lgw37iq1cvg3mqc94nzf0027mvv721ay8x6dw3fc814ww8a2hb6";
+  };
+
+  patches = [
+    ./staticfiles-directory.patch
+  ];
+
+  goDeps = ./deps.nix;
+
+  meta = {
+    description = "A tool to manage network booting of machines";
+    homepage = "https://github.com/ns1/waitron";
+    license =  lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ guibert ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/tools/networking/waitron/deps.nix b/pkgs/tools/networking/waitron/deps.nix
new file mode 100644
index 00000000000..46369c78318
--- /dev/null
+++ b/pkgs/tools/networking/waitron/deps.nix
@@ -0,0 +1,57 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.3.0
+[
+  {
+    goPackagePath = "github.com/flosch/pongo2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/flosch/pongo2";
+      rev = "bbf5a6c351f4d4e883daa40046a404d7553e0a00";
+      sha256 = "0yqh58phznnxakm64w82gawrpndb0r85vsd1s7h244qqrq7w4avq";
+    };
+  }
+  {
+    goPackagePath = "github.com/gorilla/handlers";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/handlers";
+      rev = "f08afc1876ad882db8074bcb8a4cc96107d3a5f4";
+      sha256 = "1ysm6sw3jqa3h8pb5qpqgh44g91c23n3as277sh0vyp7282290jq";
+    };
+  }
+  {
+    goPackagePath = "github.com/juju/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/juju/errors";
+      rev = "d42613fe1ab9e303fc850e7a19fda2e8eeb6516e";
+      sha256 = "0qggzzvh9lzlfk8ixlyw8bw645rh0lrjrd367505hhl6cg18v8yf";
+    };
+  }
+  {
+    goPackagePath = "github.com/julienschmidt/httprouter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/julienschmidt/httprouter";
+      rev = "8c9f31f047a304abedb5614d4a18a843cd5f4a40";
+      sha256 = "00f5ja1yslrjclx3sf29mzpcsrpfd15kkw5ygv7n4jsyb4v3xgj6";
+    };
+  }
+  {
+    goPackagePath = "github.com/satori/go.uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/satori/go.uuid";
+      rev = "b2ce2384e17bbe0c6d34077efa39dbab3e09123b";
+      sha256 = "1yz4cx02377ijlf8mnn84j1dcmlwh8ncx7y3kw1zg2qw0z4x119c";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "53403b58ad1b561927d19068c655246f2db79d48";
+      sha256 = "1inf7svydzscwv9fcjd2rm61a4xjk6jkswknybmns2n58shimapw";
+    };
+  }
+]
diff --git a/pkgs/tools/networking/waitron/staticfiles-directory.patch b/pkgs/tools/networking/waitron/staticfiles-directory.patch
new file mode 100644
index 00000000000..b1096487fac
--- /dev/null
+++ b/pkgs/tools/networking/waitron/staticfiles-directory.patch
@@ -0,0 +1,13 @@
+diff --git a/main.go b/main.go
+index 4046911..a126bae 100644
+--- a/main.go
++++ b/main.go
+@@ -411,7 +411,7 @@ func main() {
+ 
+ 	if configuration.StaticFilesPath != "" {
+ 		fs := http.FileServer(http.Dir(configuration.StaticFilesPath))
+-		r.Handler("GET", "/files/:filename", http.StripPrefix("/files/", fs))
++		r.Handler("GET", "/files/*filepath", http.StripPrefix("/files/", fs))
+ 		log.Println("Serving static files from " + configuration.StaticFilesPath)
+ 	}
+ 
diff --git a/pkgs/tools/networking/wakelan/default.nix b/pkgs/tools/networking/wakelan/default.nix
index ff96509e15c..96e01141c18 100644
--- a/pkgs/tools/networking/wakelan/default.nix
+++ b/pkgs/tools/networking/wakelan/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   name = "wakelan-1.1";
@@ -21,9 +21,9 @@ stdenv.mkDerivation rec {
          power on.
       '';
 
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = lib.licenses.gpl2Plus;
 
-    maintainers = [ stdenv.lib.maintainers.viric ];
-    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ lib.maintainers.viric ];
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/wakeonlan/default.nix b/pkgs/tools/networking/wakeonlan/default.nix
new file mode 100644
index 00000000000..48b99cadf2b
--- /dev/null
+++ b/pkgs/tools/networking/wakeonlan/default.nix
@@ -0,0 +1,29 @@
+{ lib, perlPackages, fetchFromGitHub, installShellFiles }:
+
+perlPackages.buildPerlPackage rec {
+  pname = "wakeonlan";
+  version = "0.41";
+
+  src = fetchFromGitHub {
+    owner = "jpoliv";
+    repo = pname;
+    rev = "wakeonlan-${version}";
+    sha256 = "0m48b39lz0yc5ckx2jx8y2p4c8npjngxl9wy86k43xgsd8mq1g3c";
+  };
+
+  outputs = [ "out" ];
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  installPhase = ''
+    install -Dt $out/bin wakeonlan
+    installManPage blib/man1/wakeonlan.1
+  '';
+
+  meta = with lib; {
+    description = "Perl script for waking up computers via Wake-On-LAN magic packets";
+    homepage = "https://github.com/jpoliv/wakeonlan";
+    license = licenses.artistic1;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/tools/networking/wavemon/default.nix b/pkgs/tools/networking/wavemon/default.nix
index dab52720a02..c54c4f8691a 100644
--- a/pkgs/tools/networking/wavemon/default.nix
+++ b/pkgs/tools/networking/wavemon/default.nix
@@ -1,26 +1,24 @@
-{ stdenv, fetchFromGitHub, ncurses, libnl, pkgconfig }:
+{ lib, stdenv, fetchFromGitHub, ncurses, libnl, pkg-config }:
 
 stdenv.mkDerivation rec {
-  version = "0.9.1";
-  baseName = "wavemon";
-  name = "${baseName}-${version}";
+  pname = "wavemon";
+  version = "0.9.3";
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ ncurses libnl ];
 
   src = fetchFromGitHub {
     owner = "uoaerg";
     repo = "wavemon";
     rev = "v${version}";
-    sha256 = "109ycwnjjqc2vpnd8b86njfifczlxglnyv4rh2qmbn2i5nw2wryg";
+    sha256 = "0m9n5asjxs1ir5rqprigqcrm976mgjvh4yql1jhfnbszwbf95193";
   };
 
-  meta = with stdenv.lib; {
-    inherit version;
+  meta = with lib; {
     description = "Ncurses-based monitoring application for wireless network devices";
     homepage = "https://github.com/uoaerg/wavemon";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ raskin fpletz ];
-    platforms = stdenv.lib.platforms.linux;
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/wbox/default.nix b/pkgs/tools/networking/wbox/default.nix
index 8b10bb599c4..3a5fce6808f 100644
--- a/pkgs/tools/networking/wbox/default.nix
+++ b/pkgs/tools/networking/wbox/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ lib, stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   pname = "wbox";
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A simple HTTP benchmarking tool";
     homepage = "http://www.hping.org/wbox/";
-    license = stdenv.lib.licenses.bsd3;
-    platforms = stdenv.lib.platforms.unix;
+    license = lib.licenses.bsd3;
+    platforms = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/webalizer/default.nix b/pkgs/tools/networking/webalizer/default.nix
index 133aac67bdb..332d1cf2867 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 }:
+{ lib, stdenv, fetchurl, zlib, libpng, gd, geoip, db }:
 
 stdenv.mkDerivation {
   name = "webalizer-2.23-05";
@@ -22,7 +22,7 @@ stdenv.mkDerivation {
     "--enable-shared"
   ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Web server log file analysis program";
     homepage = "http://www.webalizer.org";
     platforms = platforms.unix;
diff --git a/pkgs/tools/networking/webwormhole/default.nix b/pkgs/tools/networking/webwormhole/default.nix
new file mode 100644
index 00000000000..8fbaf3159a2
--- /dev/null
+++ b/pkgs/tools/networking/webwormhole/default.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "webwormhole";
+  version = "unstable-2021-01-16";
+
+  src = fetchFromGitHub {
+    owner = "saljam";
+    repo = pname;
+    rev = "c85e196c8a8a885815136aa8aee1958ad80a3bb5";
+    sha256 = "D10xmBwmEbeR3nU4CmppFBzdeE4Pm2+o/Vb5Yd+pPtM=";
+  };
+
+  vendorSha256 = "sha256-yK04gjDO6JSDcJULcbJBBuPBhx792JNn+B227lDUrWk=";
+
+  meta = with lib; {
+    description = "Send files using peer authenticated WebRTC";
+    homepage = "https://github.com/saljam/webwormhole";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ bbigras ];
+  };
+}
diff --git a/pkgs/tools/networking/weighttp/default.nix b/pkgs/tools/networking/weighttp/default.nix
index efcb8d8cf42..7c3d23c0d17 100644
--- a/pkgs/tools/networking/weighttp/default.nix
+++ b/pkgs/tools/networking/weighttp/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, fetchgit, python, libev, wafHook }:
+{ lib, stdenv, fetchgit, python, libev, wafHook }:
+
 stdenv.mkDerivation rec {
   pname = "weighttp";
   version = "0.4";
@@ -10,11 +11,13 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ wafHook ];
+
   buildInputs = [ python libev ];
 
-  meta = {
-    platforms = stdenv.lib.platforms.unix;
+  meta = with lib; {
+    description = "Lightweight and simple webserver benchmarking tool";
     homepage = "https://redmine.lighttpd.net/projects/weighttp/wiki";
-    description = "A lightweight and simple webserver benchmarking tool";
+    platforms = platforms.unix;
+    license = licenses.mit;
   };
 }
diff --git a/pkgs/tools/networking/wget/default.nix b/pkgs/tools/networking/wget/default.nix
index 77913c4f32a..efdd16e630b 100644
--- a/pkgs/tools/networking/wget/default.nix
+++ b/pkgs/tools/networking/wget/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, gettext, pkgconfig, perlPackages
+{ lib, stdenv, fetchurl, gettext, pkg-config, perlPackages
 , libidn2, zlib, pcre, libuuid, libiconv, libintl
 , python3, lzip
 , libpsl ? null
@@ -6,11 +6,11 @@
 
 stdenv.mkDerivation rec {
   pname = "wget";
-  version = "1.20.3";
+  version = "1.21.1";
 
   src = fetchurl {
     url = "mirror://gnu/wget/${pname}-${version}.tar.lz";
-    sha256 = "1frajd86ds8vz2hprq30wq8ya89z9dcxnwm8nwk12bbc47l7qq39";
+    sha256 = "sha256-25u+U0fm+qBvx4gF7rgIsmiXlFXq2QA6YIVpydT8kK0=";
   };
 
   patches = [
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   preConfigure = ''
     patchShebangs doc
 
-  '' + stdenv.lib.optionalString doCheck ''
+  '' + lib.optionalString doCheck ''
     # Work around lack of DNS resolution in chroots.
     for i in "tests/"*.pm "tests/"*.px
     do
@@ -28,20 +28,23 @@ stdenv.mkDerivation rec {
     done
   '';
 
-  nativeBuildInputs = [ gettext pkgconfig perlPackages.perl lzip libiconv libintl ];
+  nativeBuildInputs = [ gettext pkg-config perlPackages.perl lzip libiconv libintl ];
   buildInputs = [ libidn2 zlib pcre libuuid ]
-    ++ stdenv.lib.optionals doCheck [ perlPackages.IOSocketSSL perlPackages.LWP python3 ]
-    ++ stdenv.lib.optional (openssl != null) openssl
-    ++ stdenv.lib.optional (libpsl != null) libpsl
-    ++ stdenv.lib.optional stdenv.isDarwin perlPackages.perl;
+    ++ lib.optionals doCheck [ perlPackages.IOSocketSSL perlPackages.LWP python3 ]
+    ++ lib.optional (openssl != null) openssl
+    ++ lib.optional (libpsl != null) libpsl
+    ++ lib.optional stdenv.isDarwin perlPackages.perl;
 
   configureFlags = [
-    (stdenv.lib.withFeatureAs (openssl != null) "ssl" "openssl")
+    (lib.withFeatureAs (openssl != null) "ssl" "openssl")
+  ] ++ lib.optionals stdenv.isDarwin [
+    # https://lists.gnu.org/archive/html/bug-wget/2021-01/msg00076.html
+    "--without-included-regex"
   ];
 
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Tool for retrieving files using HTTP, HTTPS, and FTP";
 
     longDescription =
diff --git a/pkgs/tools/networking/wget2/default.nix b/pkgs/tools/networking/wget2/default.nix
new file mode 100644
index 00000000000..3fd40f8a7ba
--- /dev/null
+++ b/pkgs/tools/networking/wget2/default.nix
@@ -0,0 +1,100 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, fetchpatch
+  # build support
+, autoreconfHook
+, flex
+, gnulib
+, lzip
+, pkg-config
+, python3
+, texinfo
+  # libraries
+, brotli
+, bzip2
+, gpgme
+, libhsts
+, libidn2
+, libpsl
+, xz
+, nghttp2
+, sslSupport ? true
+, openssl
+, pcre2
+, zlib
+, zstd
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wget2";
+  version = "1.99.2";
+
+  src = fetchFromGitLab {
+    owner = "gnuwget";
+    repo = pname;
+    rev = version;
+    sha256 = "1gws8y3z8xzi46c48n7jb162mr3ar4c34s7yy8kjcs14yzq951qz";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "fix-autotools-2.70.patch";
+      url = "https://gitlab.com/gnuwget/wget2/-/commit/580af869093cfda6bc8a9d5901850354a16b3666.patch";
+      sha256 = "1x6wq4wxvvy6174d52qrhxkcgmv366f8smxyki49zb6rs4gqhskd";
+    })
+    (fetchpatch {
+      name = "update-potfiles-for-gnulib-2020-11-28.patch";
+      url = "https://gitlab.com/gnuwget/wget2/-/commit/368deb9fcca0c281f9c76333607cc878c3945ad0.patch";
+      sha256 = "1qsz8hbzbgg14wikxsbjjlq0cp3jw4pajbaz9wdn6ny617hdvi8y";
+    })
+  ];
+
+  # wget2_noinstall contains forbidden reference to /build/
+  postPatch = ''
+    substituteInPlace src/Makefile.am \
+      --replace 'bin_PROGRAMS = wget2 wget2_noinstall' 'bin_PROGRAMS = wget2'
+  '';
+
+  nativeBuildInputs = [ autoreconfHook flex lzip pkg-config python3 texinfo ];
+
+  buildInputs = [ brotli bzip2 gpgme libhsts libidn2 libpsl xz nghttp2 pcre2 zlib zstd ]
+    ++ lib.optional sslSupport openssl;
+
+  # TODO: include translation files
+  autoreconfPhase = ''
+    # copy gnulib into build dir and make writable.
+    # Otherwise ./bootstrap copies the non-writable files from nix store and fails to modify them
+    rmdir gnulib
+    cp -r ${gnulib} gnulib
+    chmod -R u+w gnulib/{build-aux,lib}
+
+    # fix bashisms can be removed when https://gitlab.com/gnuwget/wget2/-/commit/c9499dcf2f58983d03e659e2a1a7f21225141edf is in the release
+    sed 's|==|=|g' -i configure.ac
+
+    ./bootstrap --no-git --gnulib-srcdir=gnulib --skip-po
+  '';
+
+  configureFlags = [
+    "--disable-static"
+    # TODO: https://gitlab.com/gnuwget/wget2/-/issues/537
+    (lib.withFeatureAs sslSupport "ssl" "openssl")
+  ];
+
+  outputs = [ "out" "lib" "dev" ];
+
+  meta = with lib; {
+    description = "successor of GNU Wget, a file and recursive website downloader.";
+    longDescription = ''
+      Designed and written from scratch it wraps around libwget, that provides the basic
+      functions needed by a web client.
+      Wget2 works multi-threaded and uses many features to allow fast operation.
+      In many cases Wget2 downloads much faster than Wget1.x due to HTTP2, HTTP compression,
+      parallel connections and use of If-Modified-Since HTTP header.
+    '';
+    homepage = "https://gitlab.com/gnuwget/wget2";
+    # wget2 GPLv3+; libwget LGPLv3+
+    license = with licenses; [ gpl3Plus lgpl3Plus ];
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/tools/networking/whois/default.nix b/pkgs/tools/networking/whois/default.nix
index 35124ef6719..55a356e3298 100644
--- a/pkgs/tools/networking/whois/default.nix
+++ b/pkgs/tools/networking/whois/default.nix
@@ -1,17 +1,17 @@
-{ stdenv, fetchFromGitHub, perl, gettext, pkgconfig, libidn2, libiconv }:
+{ lib, stdenv, fetchFromGitHub, perl, gettext, pkg-config, libidn2, libiconv }:
 
 stdenv.mkDerivation rec {
-  version = "5.5.6";
+  version = "5.5.8";
   pname = "whois";
 
   src = fetchFromGitHub {
     owner = "rfc1036";
     repo = "whois";
     rev = "v${version}";
-    sha256 = "0iqbn2ky9j7qdpv5hycy56knnfhl8nz4l4905rnr0p703lvxxx8d";
+    sha256 = "sha256-WSAqJMVeHkcqzcgwvFKKBXJiIfKXBQr2mjioG7CgkIo=";
   };
 
-  nativeBuildInputs = [ perl gettext pkgconfig ];
+  nativeBuildInputs = [ perl gettext pkg-config ];
   buildInputs = [ libidn2 libiconv ];
 
   preConfigure = ''
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
 
   installTargets = [ "install-whois" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Intelligent WHOIS client from Debian";
     longDescription = ''
       This package provides a commandline client for the WHOIS (RFC 3912)
diff --git a/pkgs/tools/networking/wicd/default.nix b/pkgs/tools/networking/wicd/default.nix
index 8cd0b7c55f7..e4eb0a2cdc8 100644
--- a/pkgs/tools/networking/wicd/default.nix
+++ b/pkgs/tools/networking/wicd/default.nix
@@ -1,13 +1,13 @@
-{ stdenv, fetchurl, python2Packages
+{ lib, stdenv, fetchurl, python2Packages
 , wpa_supplicant, dhcp, dhcpcd, wirelesstools
-, nettools, openresolv, iproute, iputils }:
+, nettools, openresolv, iproute2, iputils }:
 
 let
   inherit (python2Packages) python pygobject2 dbus-python pyGtkGlade pycairo;
 in stdenv.mkDerivation rec {
   pname = "wicd";
   version = "1.7.2.4";
-  
+
   src = fetchurl {
     url = "https://launchpad.net/wicd/1.7/${version}/+download/${pname}-${version}.tar.gz";
     sha256 = "15ywgh60xzmp5z8l1kzics7yi95isrjg1paz42dvp7dlpdfzpzfw";
@@ -21,7 +21,7 @@ in stdenv.mkDerivation rec {
     ./no-var-install.patch
     ./pygtk.patch
     ./no-optimization.patch
-    ./dhclient.patch 
+    ./dhclient.patch
     ./fix-app-icon.patch
     ./fix-gtk-issues.patch
     ./urwid-api-update.patch
@@ -33,10 +33,10 @@ in stdenv.mkDerivation rec {
   postPatch = ''
     # We don't have "python2".
     substituteInPlace wicd/wicd-daemon.py --replace 'misc.find_path("python2")' "'${python.interpreter}'"
-    
+
     substituteInPlace in/scripts=wicd.in --subst-var-by TEMPLATE-DEFAULT $out/share/other/dhclient.conf.template.default
 
-    sed -i "2iexport PATH=${stdenv.lib.makeBinPath [ python wpa_supplicant dhcpcd dhcp wirelesstools nettools nettools iputils openresolv iproute ]}\$\{PATH:+:\}\$PATH" in/scripts=wicd.in
+    sed -i "2iexport PATH=${lib.makeBinPath [ python wpa_supplicant dhcpcd dhcp wirelesstools nettools nettools iputils openresolv iproute2 ]}\$\{PATH:+:\}\$PATH" in/scripts=wicd.in
     sed -i "3iexport PYTHONPATH=$(toPythonPath $out):$(toPythonPath ${pygobject2}):$(toPythonPath ${dbus-python})\$\{PYTHONPATH:+:\}\$PYTHONPATH" in/scripts=wicd.in
     sed -i "2iexport PATH=${python}/bin\$\{PATH:+:\}\$PATH" in/scripts=wicd-client.in
     sed -i "3iexport PYTHONPATH=$(toPythonPath $out):$(toPythonPath ${pyGtkGlade})/gtk-2.0:$(toPythonPath ${pygobject2}):$(toPythonPath ${pygobject2})/gtk-2.0:$(toPythonPath ${pycairo}):$(toPythonPath ${dbus-python})\$\{PYTHONPATH:+:\}\$PYTHONPATH" in/scripts=wicd-client.in
@@ -102,7 +102,7 @@ in stdenv.mkDerivation rec {
     echo "wpa2-ttls" >> "$out/etc/encryption/templates/active"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://wicd.net/";
     description = "A wiredless and wired network manager";
     longDescription=''
diff --git a/pkgs/tools/networking/wifish/default.nix b/pkgs/tools/networking/wifish/default.nix
new file mode 100644
index 00000000000..a9e30710c1a
--- /dev/null
+++ b/pkgs/tools/networking/wifish/default.nix
@@ -0,0 +1,47 @@
+{ lib, stdenv, fetchFromGitHub
+, dialog
+, gawk
+, wpa_supplicant
+, makeWrapper
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wifish";
+  version = "1.1.4";
+
+  src = fetchFromGitHub{
+    owner = "bougyman";
+    repo = "wifish";
+    rev = version;
+    sha256 = "sha256-eTErN6CfKDey/wV+9o9cBVaG5FzCRBiA9UicrMz3KBc=";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postPatch = ''
+    sed -ie 's|/var/lib/wifish|${placeholder "out"}/var/lib/wifish|' wifish
+  '';
+
+  dontConfigure = true;
+
+  installPhase = ''
+    install -D -m0644 awk/wscanparse.awk ${placeholder "out"}/var/lib/wifish/wscanparse.awk
+    install -D -m0644 awk/wlistparse.awk ${placeholder "out"}/var/lib/wifish/wlistparse.awk
+    install -D -m0644 awk/wscan2menu.awk ${placeholder "out"}/var/lib/wifish/wscan2menu.awk
+    install -D -m0644 awk/iwparse.awk ${placeholder "out"}/var/lib/wifish/iwparse.awk
+    install -D -m0755 wifish ${placeholder "out"}/bin/wifish
+  '';
+
+  postFixup = ''
+    wrapProgram ${placeholder "out"}/bin/wifish \
+      --prefix PATH ":" ${lib.makeBinPath [ dialog gawk wpa_supplicant ]}
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/bougyman/wifish";
+    description = "Simple wifi shell script for linux";
+    license = licenses.wtfpl;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/pkgs/tools/networking/wifite2/default.nix b/pkgs/tools/networking/wifite2/default.nix
index 101c4643a77..054b77f8c9b 100644
--- a/pkgs/tools/networking/wifite2/default.nix
+++ b/pkgs/tools/networking/wifite2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, fetchpatch, python3, wirelesstools
+{ lib, fetchFromGitHub, fetchpatch, python3, wirelesstools
 , aircrack-ng, wireshark-cli, reaverwps-t6x, cowpatty, hashcat, hcxtools
 , hcxdumptool, pyrit, which }:
 
@@ -46,7 +46,7 @@ python3.pkgs.buildPythonApplication rec {
   checkInputs = propagatedBuildInputs;
   checkPhase = "python -m unittest discover tests -v";
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/derv82/wifite2";
     description = "Rewrite of the popular wireless network auditor, wifite";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/wireguard-go/default.nix b/pkgs/tools/networking/wireguard-go/default.nix
index 2913a31e16a..35c5371113c 100644
--- a/pkgs/tools/networking/wireguard-go/default.nix
+++ b/pkgs/tools/networking/wireguard-go/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildGoPackage, fetchzip }:
+{ lib, buildGoPackage, fetchzip }:
 
 buildGoPackage rec {
   pname = "wireguard-go";
@@ -21,7 +21,7 @@ buildGoPackage rec {
     mv $out/bin/wireguard $out/bin/wireguard-go
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Userspace Go implementation of WireGuard";
     homepage = "https://git.zx2c4.com/wireguard-go/about/";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/wireguard-tools/default.nix b/pkgs/tools/networking/wireguard-tools/default.nix
index c3e4c637109..5972d781bd1 100644
--- a/pkgs/tools/networking/wireguard-tools/default.nix
+++ b/pkgs/tools/networking/wireguard-tools/default.nix
@@ -1,23 +1,22 @@
-{ stdenv
+{ lib
+, stdenv
 , fetchzip
 , nixosTests
-, iptables ? null
-, iproute ? null
-, makeWrapper ? null
-, openresolv ? null
-, procps ? null
-, wireguard-go ? null
+, iptables
+, iproute2
+, makeWrapper
+, openresolv
+, procps
+, wireguard-go
 }:
 
-with stdenv.lib;
-
 stdenv.mkDerivation rec {
   pname = "wireguard-tools";
-  version = "1.0.20200820";
+  version = "1.0.20210424";
 
   src = fetchzip {
     url = "https://git.zx2c4.com/wireguard-tools/snapshot/wireguard-tools-${version}.tar.xz";
-    sha256 = "138pf23x39xm68pa4ks3g76axphl8pz5jw4fyi54wi7rvxclybc7";
+    sha256 = "sha256-0aGaE4EBb4wb5g32Wugakt7w41sb97Hqqkac7qE641M=";
   };
 
   outputs = [ "out" "man" ];
@@ -37,11 +36,11 @@ stdenv.mkDerivation rec {
   postFixup = ''
     substituteInPlace $out/lib/systemd/system/wg-quick@.service \
       --replace /usr/bin $out/bin
-  '' + optionalString stdenv.isLinux ''
+  '' + lib.optionalString stdenv.isLinux ''
     for f in $out/bin/*; do
-      wrapProgram $f --prefix PATH : ${makeBinPath [procps iproute iptables openresolv]}
+      wrapProgram $f --prefix PATH : ${lib.makeBinPath [ procps iproute2 iptables openresolv ]}
     done
-  '' + optionalString stdenv.isDarwin ''
+  '' + lib.optionalString stdenv.isDarwin ''
     for f in $out/bin/*; do
       wrapProgram $f --prefix PATH : ${wireguard-go}/bin
     done
@@ -52,7 +51,7 @@ stdenv.mkDerivation rec {
     tests = nixosTests.wireguard;
   };
 
-  meta = {
+  meta = with lib; {
     description = "Tools for the WireGuard secure network tunnel";
     downloadPage = "https://git.zx2c4.com/wireguard-tools/refs/";
     homepage = "https://www.wireguard.com/";
diff --git a/pkgs/tools/networking/wol/default.nix b/pkgs/tools/networking/wol/default.nix
index 3ca10e2ecbc..114a8457d5b 100644
--- a/pkgs/tools/networking/wol/default.nix
+++ b/pkgs/tools/networking/wol/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, perl }:
+{ lib, stdenv, fetchurl, perl }:
 
 stdenv.mkDerivation rec {
   pname = "wol";
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Implements Wake On LAN functionality in a small program";
     homepage = "https://sourceforge.net/projects/wake-on-lan/";
     license = licenses.gpl2;
diff --git a/pkgs/tools/networking/wolfebin/default.nix b/pkgs/tools/networking/wolfebin/default.nix
index 52874e89bbe..2a07ada114d 100644
--- a/pkgs/tools/networking/wolfebin/default.nix
+++ b/pkgs/tools/networking/wolfebin/default.nix
@@ -1,9 +1,9 @@
-{ stdenv, fetchFromGitHub, python }:
+{ lib, stdenv, fetchFromGitHub, python }:
 
 stdenv.mkDerivation rec {
   version = "5.4";
   pname = "wolfebin";
-  
+
   src = fetchFromGitHub {
     owner = "thejoshwolfe";
     repo = "wolfebin";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
     install -m 755 wolfebin_server.py $out/bin/wolfebin_server
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/thejoshwolfe/wolfebin";
     description = "Quick and easy file sharing";
     license = licenses.mit;
diff --git a/pkgs/tools/networking/wormhole-william/default.nix b/pkgs/tools/networking/wormhole-william/default.nix
index 261db4590c1..4379aa89ceb 100644
--- a/pkgs/tools/networking/wormhole-william/default.nix
+++ b/pkgs/tools/networking/wormhole-william/default.nix
@@ -1,21 +1,21 @@
-{ stdenv, buildGoModule, fetchFromGitHub }:
+{ lib, buildGoModule, fetchFromGitHub }:
 
 buildGoModule rec {
   pname = "wormhole-william";
-  version = "1.0.4";
+  version = "1.0.5";
 
   src = fetchFromGitHub {
     owner = "psanford";
     repo = "wormhole-william";
     rev = "v${version}";
-    sha256 = "1v6kw10gqhyd1adj0wwrr5bmpjqbshdnywsrjpqgg9bl61m5j3wr";
+    sha256 = "sha256-75pSFMzaZW+rtikO0khuxXIgb3Wj8ieSE4sB6quKgo4=";
   };
 
-  vendorSha256 = "1niky252gcxai6vz0cx7pvflg530bc1lmcd2wm2hqg6446r1yxsq";
+  vendorSha256 = "sha256-8GZ4h+DFQaCizOCxsMzAllXyaQgzQQBsbCnVi5MWbFg=";
 
   doCheck = false;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/psanford/wormhole-william";
     description = "End-to-end encrypted file transfers";
     changelog = "https://github.com/psanford/wormhole-william/releases/tag/v${version}";
diff --git a/pkgs/tools/networking/wrk/default.nix b/pkgs/tools/networking/wrk/default.nix
index 40daeb86194..4298bd70d60 100644
--- a/pkgs/tools/networking/wrk/default.nix
+++ b/pkgs/tools/networking/wrk/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, luajit, openssl, perl }:
+{ lib, stdenv, fetchFromGitHub, luajit, openssl, perl }:
 
 stdenv.mkDerivation rec {
   pname = "wrk";
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
     cp wrk $out/bin
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "HTTP benchmarking tool";
     homepage = "https://github.com/wg/wrk";
     longDescription = ''
diff --git a/pkgs/tools/networking/wrk2/default.nix b/pkgs/tools/networking/wrk2/default.nix
index 2a5e8e3a5dc..0cf40b87f5a 100644
--- a/pkgs/tools/networking/wrk2/default.nix
+++ b/pkgs/tools/networking/wrk2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, luajit, openssl, zlib }:
+{ lib, stdenv, fetchFromGitHub, luajit, openssl, zlib }:
 
 stdenv.mkDerivation rec {
   pname = "wrk2";
@@ -35,8 +35,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Constant throughput, correct latency recording variant of wrk";
     homepage    = "https://github.com/giltene/wrk2";
-    license     = stdenv.lib.licenses.bsd3;
-    platforms   = stdenv.lib.platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ thoughtpolice ];
+    license     = lib.licenses.bsd3;
+    platforms   = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ thoughtpolice ];
   };
 }
diff --git a/pkgs/tools/networking/wstunnel/default.nix b/pkgs/tools/networking/wstunnel/default.nix
deleted file mode 100644
index 161b08a7d39..00000000000
--- a/pkgs/tools/networking/wstunnel/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ mkDerivation, async, base, base64-bytestring, binary, bytestring
-, classy-prelude, cmdargs, connection, hslogger, mtl, network
-, network-conduit-tls, stdenv, streaming-commons, text
-, unordered-containers, websockets
-, hspec, iproute
-, lib, fetchFromGitHub, fetchpatch
-}:
-
-mkDerivation rec {
-  pname = "wstunnel";
-  version = "unstable-2020-07-12";
-
-  src = fetchFromGitHub {
-    owner = "erebe";
-    repo = pname;
-    rev = "093a01fa3a34eee5efd8f827900e64eab9d16c05";
-    sha256 = "17p9kq0ssz05qzl6fyi5a5fjbpn4bxkkwibb9si3fhzrxc508b59";
-  };
-
-  isLibrary = false;
-  isExecutable = true;
-
-  libraryHaskellDepends = [
-    async base base64-bytestring binary bytestring classy-prelude
-    connection hslogger mtl network network-conduit-tls
-    streaming-commons text unordered-containers websockets
-    iproute
-  ];
-
-  executableHaskellDepends = [
-    base bytestring classy-prelude cmdargs hslogger text
-  ];
-
-  testHaskellDepends = [ base text hspec ];
-
-  homepage = "https://github.com/erebe/wstunnel";
-  description = "UDP and TCP tunnelling over WebSocket";
-  maintainers = with lib.maintainers; [ gebner ];
-  license = lib.licenses.bsd3;
-
-}
diff --git a/pkgs/tools/networking/wuzz/default.nix b/pkgs/tools/networking/wuzz/default.nix
index 8db9c07ffc5..156841be334 100644
--- a/pkgs/tools/networking/wuzz/default.nix
+++ b/pkgs/tools/networking/wuzz/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildGoPackage, fetchFromGitHub }:
+{ lib, buildGoPackage, fetchFromGitHub }:
 
 buildGoPackage rec {
   pname = "wuzz";
@@ -16,7 +16,7 @@ buildGoPackage rec {
 
   goDeps = ./deps.nix;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/asciimoo/wuzz";
     description = "Interactive cli tool for HTTP inspection";
     license = licenses.agpl3;
diff --git a/pkgs/tools/networking/x11-ssh-askpass/default.nix b/pkgs/tools/networking/x11-ssh-askpass/default.nix
index 7e1597451b1..d33dd3df12e 100644
--- a/pkgs/tools/networking/x11-ssh-askpass/default.nix
+++ b/pkgs/tools/networking/x11-ssh-askpass/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, xlibsWrapper, imake, gccmakedep }:
+{ lib, stdenv, fetchurl, xlibsWrapper, imake, gccmakedep }:
 
 stdenv.mkDerivation {
   name = "x11-ssh-askpass-1.2.4.1";
@@ -24,7 +24,7 @@ stdenv.mkDerivation {
 
   installTargets = [ "install" "install.man" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://github.com/sigmavirus24/x11-ssh-askpass";
     description = "Lightweight passphrase dialog for OpenSSH or other open variants of SSH";
     license = licenses.mit;
diff --git a/pkgs/tools/networking/xh/default.nix b/pkgs/tools/networking/xh/default.nix
new file mode 100644
index 00000000000..0a62fee4bd7
--- /dev/null
+++ b/pkgs/tools/networking/xh/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, lib, openssl, pkg-config, rustPlatform, fetchFromGitHub, Security
+, libiconv, installShellFiles }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "xh";
+  version = "0.10.0";
+
+  src = fetchFromGitHub {
+    owner = "ducaale";
+    repo = "xh";
+    rev = "v${version}";
+    sha256 = "0b9cgjgzf1vxd9j6cz44g68xbaii8gb3973pvjf0p6barnqzvqvq";
+  };
+
+  cargoSha256 = "0lwxmqp0ww9wf9p3nd42q89j0g7ichpkcm0mb1p5hhagwqgb0z15";
+
+  nativeBuildInputs = [ installShellFiles pkg-config ];
+
+  buildInputs = if stdenv.isDarwin then [ Security libiconv ] else [ openssl ];
+
+  # Get openssl-sys to use pkg-config
+  OPENSSL_NO_VENDOR = 1;
+
+  postInstall = ''
+    installShellCompletion --cmd xh \
+      --bash completions/xh.bash \
+      --fish completions/xh.fish \
+      --zsh completions/_xh
+
+    # https://github.com/ducaale/xh#xh-and-xhs
+    ln -s $out/bin/xh $out/bin/xhs
+  '';
+
+  # Nix build happens in sandbox without internet connectivity
+  # disable tests as some of them require internet due to nature of application
+  doCheck = false;
+  doInstallCheck = true;
+  postInstallCheck = ''
+    $out/bin/xh --help > /dev/null
+    $out/bin/xhs --help > /dev/null
+  '';
+
+  meta = with lib; {
+    description = "Friendly and fast tool for sending HTTP requests";
+    homepage = "https://github.com/ducaale/xh";
+    changelog = "https://github.com/ducaale/xh/blob/v${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ payas SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/tools/networking/xl2tpd/default.nix b/pkgs/tools/networking/xl2tpd/default.nix
index 38a45fd3e6f..26731817c80 100644
--- a/pkgs/tools/networking/xl2tpd/default.nix
+++ b/pkgs/tools/networking/xl2tpd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, libpcap, ppp }:
+{ lib, stdenv, fetchFromGitHub, libpcap, ppp }:
 
 stdenv.mkDerivation rec {
   pname = "xl2tpd";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
 
   makeFlags = [ "PREFIX=$(out)" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "http://www.xelerance.com/software/xl2tpd/";
     description = "Layer 2 Tunnelling Protocol Daemon (RFC 2661)";
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/xnbd/default.nix b/pkgs/tools/networking/xnbd/default.nix
index 79a968f806e..0488fb9fa18 100644
--- a/pkgs/tools/networking/xnbd/default.nix
+++ b/pkgs/tools/networking/xnbd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, autoreconfHook, glib, jansson }:
+{ lib, stdenv, fetchurl, pkg-config, autoreconfHook, glib, jansson }:
 
 stdenv.mkDerivation rec {
   name = "xnbd-0.4.0";
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
 
   patches = [ ./0001-Fix-build-for-glibc-2.28.patch ];
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
 
   buildInputs = [ glib jansson ];
 
@@ -26,8 +26,8 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://bitbucket.org/hirofuchi/xnbd";
     description = "Yet another NBD (Network Block Device) server program";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = [ stdenv.lib.maintainers.volth ];
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    maintainers = [ lib.maintainers.volth ];
+    platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/yggdrasil/default.nix b/pkgs/tools/networking/yggdrasil/default.nix
index 90cd64b83ad..506869238e5 100644
--- a/pkgs/tools/networking/yggdrasil/default.nix
+++ b/pkgs/tools/networking/yggdrasil/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "yggdrasil";
-  version = "0.3.14";
+  version = "0.4.0";
 
   src = fetchFromGitHub {
     owner = "yggdrasil-network";
     repo = "yggdrasil-go";
     rev = "v${version}";
-    sha256 = "147kl2kvv1rn3yk0mlvd998a2yayjl07csxxkjvs6264j6csb860";
+    sha256 = "sha256-sMcbOTLdmAXp3U2XeNM0hrwOTjzr+9B6IvAaVbjhuFY=";
   };
 
-  vendorSha256 = "09xv2p9rydnsb185x61fxhyjqx41wz285c1gdd47ad3s08ay1qc7";
+  vendorSha256 = "sha256-QQN8ePOQ7DT9KeuY4ohFuPtocuinh3Y3us6QMnCQ4gc=";
 
   doCheck = false;
 
diff --git a/pkgs/tools/networking/yrd/default.nix b/pkgs/tools/networking/yrd/default.nix
index 9b76d033829..75a89b859fe 100644
--- a/pkgs/tools/networking/yrd/default.nix
+++ b/pkgs/tools/networking/yrd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pythonPackages }:
+{ lib, fetchFromGitHub, pythonPackages }:
 
 let
   pname = "yrd";
@@ -17,7 +17,7 @@ in pythonPackages.buildPythonApplication {
 
   propagatedBuildInputs = with pythonPackages; [ argh ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Cjdns swiss army knife";
     maintainers = with maintainers; [ akru ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/networking/ytcc/default.nix b/pkgs/tools/networking/ytcc/default.nix
index dc38648c369..6bd12963b7e 100644
--- a/pkgs/tools/networking/ytcc/default.nix
+++ b/pkgs/tools/networking/ytcc/default.nix
@@ -2,34 +2,46 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "ytcc";
-  version = "1.8.4";
+  version = "2.2.0";
 
   src = fetchFromGitHub {
     owner = "woefe";
     repo = "ytcc";
     rev = "v${version}";
-    sha256 = "11gwpqmq611j07pjscch28jsrfgyzy69ph2w1miz3arqmxz7dqjp";
+    sha256 = "1rhnrmanad10zy2as9q5wjfjlk18f51vf801syyfgxvk0pdcsk6w";
   };
 
   nativeBuildInputs = [ gettext ];
 
-  propagatedBuildInputs = with python3Packages; [ feedparser lxml sqlalchemy youtube-dl ];
+  propagatedBuildInputs = with python3Packages; [
+    click
+    feedparser
+    lxml
+    sqlalchemy
+    youtube-dl
+    wcwidth
+  ];
 
-  checkInputs = with python3Packages; [ nose pytest ];
+  checkInputs = with python3Packages; [ nose pytestCheckHook ];
 
   # Disable tests that touch network or shell out to commands
-  checkPhase = ''
-    pytest . -k 'not get_channels \
-                 and not play_video \
-                 and not download_videos \
-                 and not update_all \
-                 and not add_channel_duplicate'
-  '';
+  disabledTests = [
+    "get_channels"
+    "play_video"
+    "download_videos"
+    "update_all"
+    "add_channel_duplicate"
+    "test_subscribe"
+    "test_import"
+    "test_import_duplicate"
+    "test_update"
+    "test_download"
+  ];
 
   meta = {
     description = "Command Line tool to keep track of your favourite YouTube channels without signing up for a Google account";
     homepage = "https://github.com/woefe/ytcc";
-    license = lib.licenses.gpl3;
+    license = lib.licenses.gpl3Plus;
     maintainers = with lib.maintainers; [ marius851000 ];
   };
 }
diff --git a/pkgs/tools/networking/zap/default.nix b/pkgs/tools/networking/zap/default.nix
index 2d8902f6909..bccc840a27a 100644
--- a/pkgs/tools/networking/zap/default.nix
+++ b/pkgs/tools/networking/zap/default.nix
@@ -1,33 +1,41 @@
-{ stdenv, fetchFromGitHub, jdk, ant, runtimeShell }:
+{ lib, stdenv, fetchurl, jre, runtimeShell }:
 
 stdenv.mkDerivation rec {
   pname = "zap";
-  version = "2.7.0";
-  src = fetchFromGitHub {
-    owner = "zaproxy";
-    repo = "zaproxy";
-    rev =version;
-    sha256 = "1bz4pgq66v6kxmgj99llacm1d85vj8z78jlgc2z9hv0ha5i57y32";
+  version = "2.10.0";
+  src = fetchurl {
+    url = "https://github.com/zaproxy/zaproxy/releases/download/v${version}/ZAP_${version}_Linux.tar.gz";
+    sha256 = "1mz9s56pbs62g4pnd1ml8y6jpf9ilisdwwvjv5kn6yxrcdi2zzqh";
   };
 
-  buildInputs = [ jdk ant ];
+  buildInputs = [ jre ];
 
-  buildPhase = ''
-    cd build
-    echo -n "${version}" > version.txt
-    ant -f build.xml setup init  compile dist copy-source-to-build package-linux
-  '';
+  # From https://github.com/zaproxy/zaproxy/blob/master/zap/src/main/java/org/parosproxy/paros/Constant.java
+  version_tag = "2010000";
 
+  # Copying config and adding version tag before first use to avoid permission
+  # issues if zap tries to copy config on it's own.
   installPhase = ''
-    mkdir -p "$out/share"
-    tar xvf  "ZAP_${version}_Linux.tar.gz" -C "$out/share/"
-    mkdir -p "$out/bin"
-    echo "#!${runtimeShell}" > "$out/bin/zap"
-    echo \"$out/share/ZAP_${version}/zap.sh\" >> "$out/bin/zap"
-    chmod +x "$out/bin/zap"
+    mkdir -p "$out/bin" "$out/share"
+    cp -pR . "$out/share/${pname}/"
+
+    cat >> "$out/bin/${pname}" << EOF
+    #!${runtimeShell}
+    export PATH="${lib.makeBinPath [ jre ]}:\$PATH"
+    export JAVA_HOME='${jre}'
+    if ! [ -f "~/.ZAP/config.xml" ];then
+      mkdir -p "\$HOME/.ZAP"
+      head -n 2 $out/share/${pname}/xml/config.xml > "\$HOME/.ZAP/config.xml"
+      echo "<version>${version_tag}</version>" >> "\$HOME/.ZAP/config.xml"
+      tail -n +3 $out/share/${pname}/xml/config.xml >> "\$HOME/.ZAP/config.xml"
+    fi
+    exec "$out/share/${pname}/zap.sh"  "\$@"
+    EOF
+
+    chmod u+x  "$out/bin/${pname}"
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = "https://www.owasp.org/index.php/ZAP";
     description = "Java application for web penetration testing";
     maintainers = with maintainers; [ mog ];
diff --git a/pkgs/tools/networking/zerotierone/default.nix b/pkgs/tools/networking/zerotierone/default.nix
index 666b30d2c8e..4a44843e947 100644
--- a/pkgs/tools/networking/zerotierone/default.nix
+++ b/pkgs/tools/networking/zerotierone/default.nix
@@ -1,34 +1,28 @@
-{ stdenv, buildPackages, fetchFromGitHub, openssl, lzo, zlib, iproute, ronn }:
+{ lib, stdenv, buildPackages, fetchFromGitHub, openssl, lzo, zlib, iproute2, ronn }:
 
 stdenv.mkDerivation rec {
   pname = "zerotierone";
-  version = "1.4.6";
+  version = "1.6.5";
 
   src = fetchFromGitHub {
     owner = "zerotier";
     repo = "ZeroTierOne";
     rev = version;
-    sha256 = "1f8hh05wx59dc0fbzdzwq05x0gmrdfl4v103wbcyjmzsbazaw6p3";
+    sha256 = "0dlnrb59vnxa3pjkgfqd5jil9kl6axh23v0bffi4kx8jwzpdwas8";
   };
 
   preConfigure = ''
-      substituteInPlace ./osdep/ManagedRoute.cpp \
-        --replace '/usr/sbin/ip' '${iproute}/bin/ip'
+    patchShebangs ./doc/build.sh
+    substituteInPlace ./doc/build.sh \
+      --replace '/usr/bin/ronn' '${buildPackages.ronn}/bin/ronn' \
 
-      substituteInPlace ./osdep/ManagedRoute.cpp \
-        --replace '/sbin/ip' '${iproute}/bin/ip'
-
-      patchShebangs ./doc/build.sh
-      substituteInPlace ./doc/build.sh \
-        --replace '/usr/bin/ronn' '${buildPackages.ronn}/bin/ronn' \
-
-      substituteInPlace ./make-linux.mk \
-        --replace 'armv5' 'armv6'
+    substituteInPlace ./make-linux.mk \
+      --replace 'armv5' 'armv6'
   '';
 
 
   nativeBuildInputs = [ ronn ];
-  buildInputs = [ openssl lzo zlib iproute ];
+  buildInputs = [ openssl lzo zlib iproute2 ];
 
   enableParallelBuilding = true;
 
@@ -52,7 +46,7 @@ stdenv.mkDerivation rec {
 
   outputs = [ "out" "man" ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Create flat virtual Ethernet networks of almost unlimited size";
     homepage = "https://www.zerotier.com";
     license = licenses.bsl11;
diff --git a/pkgs/tools/networking/zs-apc-spdu-ctl/default.nix b/pkgs/tools/networking/zs-apc-spdu-ctl/default.nix
new file mode 100644
index 00000000000..1a3d3ed7a35
--- /dev/null
+++ b/pkgs/tools/networking/zs-apc-spdu-ctl/default.nix
@@ -0,0 +1,36 @@
+{ cmake
+, fetchFromGitHub
+, fping
+, lib
+, libowlevelzs
+, net-snmp
+, stdenv
+}:
+
+# TODO: add a services entry for the /etc/zs-apc-spdu.conf file
+stdenv.mkDerivation rec {
+  pname = "zs-apc-spdu-ctl";
+  version = "0.0.2";
+
+  src = fetchFromGitHub {
+    owner = "zseri";
+    repo = "zs-apc-spdu-ctl";
+    rev = "v${version}";
+    sha256 = "TMV9ETWBVeXq6tZ2e0CrvHBXoyKfOLCQurjBdf/iw/M=";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ libowlevelzs net-snmp ];
+
+  postPatch = ''
+    substituteInPlace src/confent.cxx \
+      --replace /usr/sbin/fping "${fping}/bin/fping"
+  '';
+
+  meta = with lib; {
+    description = "APC SPDU control utility";
+    license = licenses.mit;
+    maintainers = with maintainers; [ zseri ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/networking/zs-wait4host/default.nix b/pkgs/tools/networking/zs-wait4host/default.nix
new file mode 100644
index 00000000000..b6b4c985dfe
--- /dev/null
+++ b/pkgs/tools/networking/zs-wait4host/default.nix
@@ -0,0 +1,34 @@
+{ coreutils, fetchurl, fping, lib, stdenvNoCC }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "zs-wait4host";
+  version = "0.3.2";
+
+  src = fetchurl {
+    url = "https://ytrizja.de/distfiles/${pname}-${version}.tar.gz";
+    sha256 = "9F1264BDoGlRR7bWlRXhfyvxWio4ydShKmabUQEIz9I=";
+  };
+
+  postPatch = ''
+    for i in zs-wait4host zs-wait4host-inf; do
+      substituteInPlace "$i" \
+        --replace '$(zs-guess-fping)' '${fping}/bin/fping' \
+        --replace ' sleep ' ' ${coreutils}/bin/sleep ' \
+        --replace '[ "$FPING" ] || exit 1' ""
+    done
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    install -D -t $out/bin zs-wait4host zs-wait4host-inf
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Wait for a host to come up/go down";
+    homepage = "https://ytrizja.de/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ zseri ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/tools/networking/zssh/default.nix b/pkgs/tools/networking/zssh/default.nix
index 720c43ccc2d..d512b03dbea 100644
--- a/pkgs/tools/networking/zssh/default.nix
+++ b/pkgs/tools/networking/zssh/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, readline, deepin }:
+{ lib, stdenv, fetchurl, readline }:
 
 let
   version = "1.5c";
@@ -17,7 +17,7 @@ in stdenv.mkDerivation rec {
     # Cargo-culted from Arch, returns “out of pty's” without it
     (fetchurl {
       name = "fix_use_ptmx_on_arch.patch";
-      url = "https://git.archlinux.org/svntogit/community.git/plain/trunk/fix_use_ptmx_on_arch.patch?h=packages/zssh&id=0a7c92543f9309856d02e31196f06d7c3eaa8b67";
+      url = "https://raw.githubusercontent.com/archlinux/svntogit-community/0a7c92543f9309856d02e31196f06d7c3eaa8b67/trunk/fix_use_ptmx_on_arch.patch";
       sha256 = "12daw9wpy58ql882zww945wk9cg2adwp8qsr5rvazx0xq0qawgbr";
     })
   ];
@@ -32,8 +32,8 @@ in stdenv.mkDerivation rec {
   meta = {
     description = "SSH and Telnet client with ZMODEM file transfer capability";
     homepage = "http://zssh.sourceforge.net/";
-    license = stdenv.lib.licenses.gpl2;
-    maintainers = deepin.deepin-terminal.meta.maintainers; # required by deepin-terminal
-    platforms = stdenv.lib.platforms.linux;
+    license = lib.licenses.gpl2;
+    maintainers = [ ]; # required by deepin-terminal
+    platforms = lib.platforms.linux;
   };
 }