about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVladimír Čunát <v@cunat.cz>2019-09-02 23:25:24 +0200
committerVladimír Čunát <v@cunat.cz>2019-09-02 23:25:24 +0200
commitf21211ebfe21797c6f0444d42ec7cb835c737388 (patch)
tree816465981f650242d4b22e0f01b912917e7008f8
parentb291f2a9953d48d6edc5c73776db9ba289ccf213 (diff)
parent12ae04518b004adf949a43125954b99c05189e6f (diff)
Merge branch 'master' into staging
-rw-r--r--lib/customisation.nix2
-rw-r--r--lib/systems/examples.nix5
-rw-r--r--lib/systems/inspect.nix4
-rw-r--r--lib/systems/parse.nix7
-rw-r--r--lib/types.nix3
-rw-r--r--maintainers/maintainer-list.nix6
-rw-r--r--nixos/doc/manual/configuration/profiles/clone-config.xml2
-rw-r--r--nixos/doc/manual/release-notes/rl-1909.xml113
-rw-r--r--nixos/modules/config/fonts/fontconfig.nix19
-rw-r--r--nixos/modules/config/fonts/fonts.nix1
-rw-r--r--nixos/modules/config/users-groups.nix12
-rw-r--r--nixos/modules/hardware/video/nvidia.nix4
-rw-r--r--nixos/modules/installer/cd-dvd/sd-image-aarch64.nix4
-rw-r--r--nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix4
-rw-r--r--nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix4
-rw-r--r--nixos/modules/installer/cd-dvd/sd-image.nix8
-rw-r--r--nixos/modules/module-list.nix4
-rw-r--r--nixos/modules/programs/seahorse.nix44
-rw-r--r--nixos/modules/programs/thefuck.nix2
-rw-r--r--nixos/modules/programs/xss-lock.nix2
-rw-r--r--nixos/modules/programs/yabar.nix8
-rw-r--r--nixos/modules/programs/zsh/zsh-syntax-highlighting.nix4
-rw-r--r--nixos/modules/rename.nix9
-rw-r--r--nixos/modules/security/auditd.nix4
-rw-r--r--nixos/modules/security/pam.nix2
-rw-r--r--nixos/modules/security/sudo.nix12
-rw-r--r--nixos/modules/services/amqp/activemq/default.nix6
-rw-r--r--nixos/modules/services/audio/alsa.nix2
-rw-r--r--nixos/modules/services/audio/ympd.nix2
-rw-r--r--nixos/modules/services/backup/crashplan-small-business.nix73
-rw-r--r--nixos/modules/services/backup/crashplan.nix67
-rw-r--r--nixos/modules/services/backup/postgresql-backup.nix2
-rw-r--r--nixos/modules/services/backup/rsnapshot.nix4
-rw-r--r--nixos/modules/services/computing/boinc/client.nix2
-rw-r--r--nixos/modules/services/databases/cassandra.nix10
-rw-r--r--nixos/modules/services/databases/couchdb.nix8
-rw-r--r--nixos/modules/services/databases/foundationdb.nix8
-rw-r--r--nixos/modules/services/databases/hbase.nix4
-rw-r--r--nixos/modules/services/databases/influxdb.nix4
-rw-r--r--nixos/modules/services/databases/mongodb.nix4
-rw-r--r--nixos/modules/services/databases/openldap.nix8
-rw-r--r--nixos/modules/services/databases/opentsdb.nix4
-rw-r--r--nixos/modules/services/databases/redis.nix70
-rw-r--r--nixos/modules/services/databases/riak.nix4
-rw-r--r--nixos/modules/services/desktops/gnome3/seahorse.nix38
-rw-r--r--nixos/modules/services/desktops/profile-sync-daemon.nix2
-rw-r--r--nixos/modules/services/games/factorio.nix16
-rw-r--r--nixos/modules/services/hardware/freefall.nix2
-rw-r--r--nixos/modules/services/hardware/fwupd.nix4
-rw-r--r--nixos/modules/services/hardware/sane.nix2
-rw-r--r--nixos/modules/services/hardware/tcsd.nix10
-rw-r--r--nixos/modules/services/hardware/triggerhappy.nix1
-rw-r--r--nixos/modules/services/logging/SystemdJournal2Gelf.nix6
-rw-r--r--nixos/modules/services/logging/awstats.nix4
-rw-r--r--nixos/modules/services/logging/logcheck.nix2
-rw-r--r--nixos/modules/services/logging/rsyslogd.nix4
-rw-r--r--nixos/modules/services/mail/exim.nix8
-rw-r--r--nixos/modules/services/mail/nullmailer.nix4
-rw-r--r--nixos/modules/services/mail/postfix.nix4
-rw-r--r--nixos/modules/services/mail/postgrey.nix12
-rw-r--r--nixos/modules/services/mail/rspamd.nix4
-rw-r--r--nixos/modules/services/misc/airsonic.nix4
-rw-r--r--nixos/modules/services/misc/apache-kafka.nix12
-rw-r--r--nixos/modules/services/misc/cpuminer-cryptonight.nix8
-rw-r--r--nixos/modules/services/misc/exhibitor.nix2
-rw-r--r--nixos/modules/services/misc/fstrim.nix2
-rw-r--r--nixos/modules/services/misc/logkeys.nix2
-rw-r--r--nixos/modules/services/misc/mediatomb.nix4
-rw-r--r--nixos/modules/services/misc/mwlib.nix5
-rw-r--r--nixos/modules/services/misc/paperless.nix2
-rw-r--r--nixos/modules/services/misc/serviio.nix16
-rw-r--r--nixos/modules/services/misc/subsonic.nix4
-rw-r--r--nixos/modules/services/misc/uhub.nix10
-rw-r--r--nixos/modules/services/monitoring/apcupsd.nix4
-rw-r--r--nixos/modules/services/monitoring/bosun.nix10
-rw-r--r--nixos/modules/services/monitoring/datadog-agent.nix2
-rw-r--r--nixos/modules/services/monitoring/dd-agent/dd-agent.nix15
-rw-r--r--nixos/modules/services/monitoring/graphite.nix16
-rw-r--r--nixos/modules/services/monitoring/heapster.nix6
-rw-r--r--nixos/modules/services/monitoring/kapacitor.nix8
-rw-r--r--nixos/modules/services/monitoring/munin.nix2
-rw-r--r--nixos/modules/services/monitoring/prometheus/exporters.nix12
-rw-r--r--nixos/modules/services/monitoring/prometheus/exporters/node.nix2
-rw-r--r--nixos/modules/services/monitoring/riemann-tools.nix2
-rw-r--r--nixos/modules/services/monitoring/scollector.nix6
-rw-r--r--nixos/modules/services/monitoring/ups.nix4
-rw-r--r--nixos/modules/services/monitoring/uptime.nix2
-rw-r--r--nixos/modules/services/network-filesystems/ceph.nix22
-rw-r--r--nixos/modules/services/network-filesystems/davfs2.nix4
-rw-r--r--nixos/modules/services/network-filesystems/drbd.nix2
-rw-r--r--nixos/modules/services/network-filesystems/glusterfs.nix2
-rw-r--r--nixos/modules/services/network-filesystems/ipfs.nix7
-rw-r--r--nixos/modules/services/network-filesystems/rsyncd.nix2
-rw-r--r--nixos/modules/services/network-filesystems/yandex-disk.nix6
-rw-r--r--nixos/modules/services/networking/aria2.nix10
-rw-r--r--nixos/modules/services/networking/autossh.nix6
-rw-r--r--nixos/modules/services/networking/charybdis.nix10
-rw-r--r--nixos/modules/services/networking/connman.nix4
-rw-r--r--nixos/modules/services/networking/gogoclient.nix2
-rw-r--r--nixos/modules/services/networking/hostapd.nix8
-rw-r--r--nixos/modules/services/networking/jormungandr.nix2
-rw-r--r--nixos/modules/services/networking/kippo.nix12
-rw-r--r--nixos/modules/services/networking/logmein-hamachi.nix2
-rw-r--r--nixos/modules/services/networking/minidlna.nix2
-rw-r--r--nixos/modules/services/networking/morty.nix4
-rw-r--r--nixos/modules/services/networking/mosquitto.nix6
-rw-r--r--nixos/modules/services/networking/networkmanager.nix2
-rw-r--r--nixos/modules/services/networking/nix-serve.nix4
-rw-r--r--nixos/modules/services/networking/nylon.nix8
-rw-r--r--nixos/modules/services/networking/openntpd.nix2
-rw-r--r--nixos/modules/services/networking/openvpn.nix4
-rw-r--r--nixos/modules/services/networking/ostinato.nix4
-rw-r--r--nixos/modules/services/networking/polipo.nix10
-rw-r--r--nixos/modules/services/networking/pptpd.nix4
-rw-r--r--nixos/modules/services/networking/prosody.nix2
-rw-r--r--nixos/modules/services/networking/radicale.nix4
-rw-r--r--nixos/modules/services/networking/resilio.nix2
-rw-r--r--nixos/modules/services/networking/shout.nix2
-rw-r--r--nixos/modules/services/networking/smokeping.nix36
-rw-r--r--nixos/modules/services/networking/softether.nix2
-rw-r--r--nixos/modules/services/networking/stunnel.nix10
-rw-r--r--nixos/modules/services/networking/toxvpn.nix4
-rw-r--r--nixos/modules/services/networking/vsftpd.nix2
-rw-r--r--nixos/modules/services/networking/xinetd.nix14
-rw-r--r--nixos/modules/services/networking/xl2tpd.nix4
-rw-r--r--nixos/modules/services/scheduling/fcron.nix1
-rw-r--r--nixos/modules/services/security/haka.nix4
-rw-r--r--nixos/modules/services/security/munge.nix2
-rw-r--r--nixos/modules/services/security/oauth2_proxy.nix4
-rw-r--r--nixos/modules/services/security/oauth2_proxy_nginx.nix4
-rw-r--r--nixos/modules/services/security/tor.nix1
-rw-r--r--nixos/modules/services/security/usbguard.nix2
-rw-r--r--nixos/modules/services/system/cgmanager.nix1
-rw-r--r--nixos/modules/services/system/cloud-init.nix6
-rw-r--r--nixos/modules/services/torrent/deluge.nix8
-rw-r--r--nixos/modules/services/torrent/flexget.nix4
-rw-r--r--nixos/modules/services/torrent/transmission.nix2
-rw-r--r--nixos/modules/services/web-apps/youtrack.nix18
-rw-r--r--nixos/modules/services/web-servers/apache-httpd/per-server-options.nix2
-rw-r--r--nixos/modules/services/web-servers/caddy.nix4
-rw-r--r--nixos/modules/services/web-servers/nginx/default.nix2
-rw-r--r--nixos/modules/services/web-servers/traefik.nix2
-rw-r--r--nixos/modules/services/web-servers/uwsgi.nix2
-rw-r--r--nixos/modules/services/web-servers/zope2.nix10
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome3.nix43
-rw-r--r--nixos/modules/services/x11/desktop-managers/pantheon.nix4
-rw-r--r--nixos/modules/services/x11/desktop-managers/surf-display.nix10
-rw-r--r--nixos/modules/services/x11/desktop-managers/xterm.nix3
-rw-r--r--nixos/modules/services/x11/display-managers/lightdm.nix2
-rw-r--r--nixos/modules/services/x11/hardware/libinput.nix6
-rw-r--r--nixos/modules/services/x11/hardware/synaptics.nix6
-rw-r--r--nixos/modules/services/x11/window-managers/xmonad.nix2
-rw-r--r--nixos/modules/services/x11/xserver.nix2
-rw-r--r--nixos/modules/system/boot/binfmt.nix2
-rw-r--r--nixos/modules/system/boot/loader/grub/grub.nix12
-rw-r--r--nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix4
-rw-r--r--nixos/modules/tasks/network-interfaces.nix4
-rw-r--r--nixos/modules/virtualisation/anbox.nix2
-rw-r--r--nixos/modules/virtualisation/azure-agent.nix1
-rw-r--r--nixos/modules/virtualisation/azure-image.nix1
-rw-r--r--nixos/modules/virtualisation/containers.nix8
-rw-r--r--nixos/modules/virtualisation/google-compute-config.nix159
-rw-r--r--nixos/modules/virtualisation/kvmgt.nix4
-rw-r--r--nixos/modules/virtualisation/xen-dom0.nix2
-rw-r--r--nixos/release-combined.nix1
-rw-r--r--nixos/tests/all-tests.nix2
-rw-r--r--nixos/tests/fontconfig-default-fonts.nix28
-rw-r--r--nixos/tests/hocker-fetchdocker/machine.nix4
-rw-r--r--nixos/tests/redis.nix26
-rw-r--r--pkgs/applications/backup/crashplan/CrashPlanDesktop.patch12
-rw-r--r--pkgs/applications/backup/crashplan/CrashPlanEngine.patch37
-rw-r--r--pkgs/applications/backup/crashplan/crashplan-small-business.nix103
-rw-r--r--pkgs/applications/backup/crashplan/default.nix81
-rw-r--r--pkgs/applications/blockchains/clightning.nix13
-rw-r--r--pkgs/applications/blockchains/parity/beta.nix6
-rw-r--r--pkgs/applications/blockchains/parity/default.nix4
-rw-r--r--pkgs/applications/blockchains/parity/parity.nix12
-rw-r--r--pkgs/applications/editors/emacs-modes/coffee/default.nix30
-rw-r--r--pkgs/applications/editors/emacs-modes/cua/builder.sh4
-rw-r--r--pkgs/applications/editors/emacs-modes/cua/default.nix8
-rw-r--r--pkgs/applications/editors/emacs-modes/elpa-packages.nix6
-rw-r--r--pkgs/applications/editors/emacs-modes/emacs-clang-complete-async/default.nix35
-rw-r--r--pkgs/applications/editors/emacs-modes/emacs-clang-complete-async/fix-build.patch10
-rw-r--r--pkgs/applications/editors/emacs-modes/gn/default.nix20
-rw-r--r--pkgs/applications/editors/emacs-modes/helm-words/default.nix6
-rw-r--r--pkgs/applications/editors/emacs-modes/manual-packages.nix5
-rw-r--r--pkgs/applications/editors/emacs-modes/melpa-packages.nix128
-rw-r--r--pkgs/applications/editors/emacs-modes/tramp/default.nix4
-rw-r--r--pkgs/applications/graphics/freecad/default.nix23
-rw-r--r--pkgs/applications/graphics/nomacs/default.nix12
-rw-r--r--pkgs/applications/misc/calibre/default.nix4
-rw-r--r--pkgs/applications/misc/electrum/default.nix9
-rw-r--r--pkgs/applications/misc/onboard/default.nix107
-rw-r--r--pkgs/applications/misc/veracrypt/default.nix9
-rw-r--r--pkgs/applications/networking/browsers/chromium/upstream-info.nix18
-rw-r--r--pkgs/applications/networking/cluster/nomad/default.nix24
-rw-r--r--pkgs/applications/networking/gns3/default.nix6
-rw-r--r--pkgs/applications/networking/mailreaders/notmuch/default.nix22
-rw-r--r--pkgs/applications/networking/remote/waypipe/default.nix48
-rw-r--r--pkgs/applications/office/timetable/default.nix4
-rw-r--r--pkgs/applications/science/biology/kallisto/default.nix19
-rw-r--r--pkgs/applications/science/logic/symbiyosys/default.nix2
-rw-r--r--pkgs/applications/version-management/git-and-tools/ghq/default.nix4
-rw-r--r--pkgs/applications/version-management/git-and-tools/ghq/deps.nix90
-rw-r--r--pkgs/build-support/writers/default.nix8
-rw-r--r--pkgs/data/themes/qogir/default.nix6
-rw-r--r--pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix9
-rw-r--r--pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/fix-paths.patch13
-rw-r--r--pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix7
-rw-r--r--pkgs/development/compilers/nextpnr/default.nix16
-rw-r--r--pkgs/development/compilers/sdcc/default.nix2
-rw-r--r--pkgs/development/compilers/yosys/default.nix6
-rw-r--r--pkgs/development/interpreters/supercollider/default.nix12
-rw-r--r--pkgs/development/libraries/babl/default.nix2
-rw-r--r--pkgs/development/libraries/openxr-loader/default.nix4
-rw-r--r--pkgs/development/libraries/vulkan-headers/default.nix2
-rw-r--r--pkgs/development/ocaml-modules/lablgtk/default.nix6
-rw-r--r--pkgs/development/python-modules/bokeh/default.nix71
-rw-r--r--pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch15
-rw-r--r--pkgs/development/python-modules/flask/default.nix4
-rw-r--r--pkgs/development/python-modules/fx2/default.nix45
-rw-r--r--pkgs/development/python-modules/glasgow/default.nix66
-rw-r--r--pkgs/development/python-modules/intake/default.nix24
-rw-r--r--pkgs/development/python-modules/nmigen-boards/default.nix32
-rw-r--r--pkgs/development/python-modules/nmigen/default.nix65
-rw-r--r--pkgs/development/python-modules/panel/default.nix9
-rw-r--r--pkgs/development/python-modules/param/default.nix4
-rw-r--r--pkgs/development/python-modules/phonenumbers/default.nix4
-rw-r--r--pkgs/development/python-modules/pikepdf/default.nix12
-rw-r--r--pkgs/development/python-modules/pybind11/default.nix4
-rw-r--r--pkgs/development/python-modules/pytest-random-order/default.nix27
-rw-r--r--pkgs/development/python-modules/tensorflow/default.nix56
-rw-r--r--pkgs/development/python-modules/trezor/default.nix5
-rw-r--r--pkgs/development/python-modules/uvloop/default.nix16
-rw-r--r--pkgs/development/r-modules/default.nix4
-rw-r--r--pkgs/development/tools/diesel-cli/allow-warnings.patch88
-rw-r--r--pkgs/development/tools/diesel-cli/cargo-lock.patch1589
-rw-r--r--pkgs/development/tools/diesel-cli/default.nix77
-rwxr-xr-xpkgs/development/tools/diesel-cli/update-cargo-lock.sh19
-rw-r--r--pkgs/development/tools/icestorm/default.nix10
-rw-r--r--pkgs/development/tools/out-of-tree/default.nix4
-rw-r--r--pkgs/development/tools/rust/cargo-watch/default.nix29
-rw-r--r--pkgs/development/tools/trellis/default.nix11
-rw-r--r--pkgs/development/tools/udis86/default.nix32
-rw-r--r--pkgs/misc/screensavers/light-locker/default.nix2
-rw-r--r--pkgs/os-specific/linux/kernel/common-config.nix1
-rw-r--r--pkgs/os-specific/linux/kernel/linux-libre.nix4
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/default.nix12
-rw-r--r--pkgs/servers/cayley/default.nix4
-rw-r--r--pkgs/servers/cayley/deps.nix393
-rw-r--r--pkgs/servers/consul/default.nix6
-rw-r--r--pkgs/servers/dgraph/default.nix22
-rw-r--r--pkgs/servers/dgraph/deps.nix976
-rw-r--r--pkgs/servers/monitoring/grafana/default.nix6
-rw-r--r--pkgs/servers/tacacs+/default.nix22
-rw-r--r--pkgs/servers/web-apps/cryptpad/bower-packages.nix8
-rw-r--r--pkgs/servers/web-apps/cryptpad/default.nix1
-rw-r--r--pkgs/servers/web-apps/cryptpad/node-packages-generated.nix18
-rw-r--r--pkgs/servers/web-apps/cryptpad/node-packages.json2
-rw-r--r--pkgs/servers/web-apps/cryptpad/node-packages.nix2
-rw-r--r--pkgs/stdenv/cross/default.nix2
-rw-r--r--pkgs/tools/graphics/vulkan-tools/default.nix2
-rw-r--r--pkgs/tools/misc/bat/default.nix12
-rw-r--r--pkgs/tools/misc/grub/2.0x.nix4
-rw-r--r--pkgs/tools/misc/lolcat/Gemfile.lock6
-rw-r--r--pkgs/tools/misc/lolcat/gemset.nix10
-rw-r--r--pkgs/tools/misc/q-text-as-data/default.nix35
-rw-r--r--pkgs/tools/misc/youtube-dl/default.nix4
-rw-r--r--pkgs/tools/networking/minio-client/default.nix7
-rw-r--r--pkgs/tools/nix/nixos-generators/default.nix26
-rw-r--r--pkgs/tools/text/ispell/default.nix19
-rw-r--r--pkgs/tools/text/ispell/patches/0005-Do-not-reorder-words.patch52
-rw-r--r--pkgs/tools/video/rtmpdump/default.nix22
-rw-r--r--pkgs/tools/virtualization/google-compute-engine/default.nix15
-rw-r--r--pkgs/tools/virtualization/govc/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix64
-rw-r--r--pkgs/top-level/python-packages.nix20
277 files changed, 4750 insertions, 1879 deletions
diff --git a/lib/customisation.nix b/lib/customisation.nix
index 1f5eb0d11e8bf..3be36fcd719b0 100644
--- a/lib/customisation.nix
+++ b/lib/customisation.nix
@@ -47,7 +47,7 @@ rec {
 
 
   /* `makeOverridable` takes a function from attribute set to attribute set and
-     injects `override` attibute which can be used to override arguments of
+     injects `override` attribute which can be used to override arguments of
      the function.
 
        nix-repl> x = {a, b}: { result = a + b; }
diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix
index 8fb1a342177e1..511ae1979485d 100644
--- a/lib/systems/examples.nix
+++ b/lib/systems/examples.nix
@@ -236,4 +236,9 @@ rec {
     useLLVM = true;
   };
 
+  # Ghcjs
+  ghcjs = {
+    config = "js-unknown-ghcjs";
+    platform = {};
+  };
 }
diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix
index 9a12e3c3926dd..8a983b3d36372 100644
--- a/lib/systems/inspect.nix
+++ b/lib/systems/inspect.nix
@@ -12,7 +12,7 @@ rec {
     isx86_32       = { cpu = { family = "x86"; bits = 32; }; };
     isx86_64       = { cpu = { family = "x86"; bits = 64; }; };
     isPowerPC      = { cpu = cpuTypes.powerpc; };
-    isPower = { cpu = { family = "power"; }; };
+    isPower        = { cpu = { family = "power"; }; };
     isx86          = { cpu = { family = "x86"; }; };
     isAarch32      = { cpu = { family = "arm"; bits = 32; }; };
     isAarch64      = { cpu = { family = "arm"; bits = 64; }; };
@@ -23,6 +23,7 @@ rec {
     isMsp430       = { cpu = { family = "msp430"; }; };
     isAvr          = { cpu = { family = "avr"; }; };
     isAlpha        = { cpu = { family = "alpha"; }; };
+    isJavaScript   = { cpu = cpuTypes.js; };
 
     is32bit        = { cpu = { bits = 32; }; };
     is64bit        = { cpu = { bits = 64; }; };
@@ -44,6 +45,7 @@ rec {
     isCygwin       = { kernel = kernels.windows; abi = abis.cygnus; };
     isMinGW        = { kernel = kernels.windows; abi = abis.gnu; };
     isWasi         = { kernel = kernels.wasi; };
+    isGhcjs        = { kernel = kernels.ghcjs; };
     isNone         = { kernel = kernels.none; };
 
     isAndroid      = [ { abi = abis.android; } { abi = abis.androideabi; } ];
diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix
index 1339f50f05728..5e12df32ffdd2 100644
--- a/lib/systems/parse.nix
+++ b/lib/systems/parse.nix
@@ -106,11 +106,13 @@ rec {
 
     wasm32   = { bits = 32; significantByte = littleEndian; family = "wasm"; };
     wasm64   = { bits = 64; significantByte = littleEndian; family = "wasm"; };
-    
+
     alpha    = { bits = 64; significantByte = littleEndian; family = "alpha"; };
 
     msp430   = { bits = 16; significantByte = littleEndian; family = "msp430"; };
     avr      = { bits = 8; family = "avr"; };
+
+    js       = { bits = 32; significantByte = littleEndian; family = "js"; };
   };
 
   # Determine where two CPUs are compatible with each other. That is,
@@ -271,6 +273,7 @@ rec {
     solaris = { execFormat = elf;     families = { }; };
     wasi    = { execFormat = wasm;    families = { }; };
     windows = { execFormat = pe;      families = { }; };
+    ghcjs   = { execFormat = unknown; families = { }; };
   } // { # aliases
     # 'darwin' is the kernel for all of them. We choose macOS by default.
     darwin = kernels.macos;
@@ -384,6 +387,8 @@ rec {
         then { cpu = elemAt l 0; vendor = elemAt l 1;    kernel = elemAt l 2;                }
       else if (elem (elemAt l 2) ["eabi" "eabihf" "elf"])
         then { cpu = elemAt l 0; vendor = "unknown"; kernel = elemAt l 1; abi = elemAt l 2; }
+      else if (elemAt l 2 == "ghcjs")
+        then { cpu = elemAt l 0; vendor = "unknown"; kernel = elemAt l 2; }
       else throw "Target specification with 3 components is ambiguous";
     "4" =    { cpu = elemAt l 0; vendor = elemAt l 1; kernel = elemAt l 2; abi = elemAt l 3; };
   }.${toString (length l)}
diff --git a/lib/types.nix b/lib/types.nix
index d3526375b1ca8..5e9a28ac4f0a8 100644
--- a/lib/types.nix
+++ b/lib/types.nix
@@ -217,7 +217,8 @@ rec {
 
     # Deprecated; should not be used because it quietly concatenates
     # strings, which is usually not what you want.
-    string = separatedString "";
+    string = warn "types.string is deprecated because it quietly concatenates strings"
+      (separatedString "");
 
     attrs = mkOptionType {
       name = "attrs";
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 8d047db0e00cb..397bec6057dc1 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -5095,6 +5095,12 @@
     githubId = 9568176;
     name = "Piotr Halama";
   };
+  puckipedia = {
+    email = "puck@puckipedia.com";
+    github = "puckipedia";
+    githubId = 488734;
+    name = "Puck Meerburg";
+  };
   puffnfresh = {
     email = "brian@brianmckenna.org";
     github = "puffnfresh";
diff --git a/nixos/doc/manual/configuration/profiles/clone-config.xml b/nixos/doc/manual/configuration/profiles/clone-config.xml
index 21c4ea75d6dd6..04fa1643d0fd0 100644
--- a/nixos/doc/manual/configuration/profiles/clone-config.xml
+++ b/nixos/doc/manual/configuration/profiles/clone-config.xml
@@ -16,6 +16,6 @@
   On images where the installation media also becomes an installation target,
   copying over <literal>configuration.nix</literal> should be disabled by
   setting <literal>installer.cloneConfig</literal> to <literal>false</literal>.
-  This is already done in <literal>sd-image.nix</literal>.
+  For example, this is done in <literal>sd-image-aarch64.nix</literal>.
  </para>
 </section>
diff --git a/nixos/doc/manual/release-notes/rl-1909.xml b/nixos/doc/manual/release-notes/rl-1909.xml
index 560b319851761..11c13b8d942b1 100644
--- a/nixos/doc/manual/release-notes/rl-1909.xml
+++ b/nixos/doc/manual/release-notes/rl-1909.xml
@@ -57,6 +57,64 @@
       and <option>services.xserver.desktopManager.xfce4-14</option> simultaneously or to downgrade from Xfce 4.14 after upgrading.
     </para>
    </listitem>
+   <listitem>
+    <para>
+      The GNOME 3 desktop manager module sports an interface to enable/disable core services, applications, and optional GNOME packages
+      like games.
+      <itemizedlist>
+      <para>This can be achieved with the following options which the desktop manager default enables, excluding <literal>games</literal>.</para>
+      <listitem><para><link linkend="opt-services.gnome3.core-os-services.enable"><literal>services.gnome3.core-os-services.enable</literal></link></para></listitem>
+      <listitem><para><link linkend="opt-services.gnome3.core-shell.enable"><literal>services.gnome3.core-shell.enable</literal></link></para></listitem>
+      <listitem><para><link linkend="opt-services.gnome3.core-utilities.enable"><literal>services.gnome3.core-utilities.enable</literal></link></para></listitem>
+      <listitem><para><link linkend="opt-services.gnome3.games.enable"><literal>services.gnome3.games.enable</literal></link></para></listitem>
+      </itemizedlist>
+      With these options we hope to give users finer grained control over their systems. Prior to this change you'd either have to manually
+      disable options or use <option>environment.gnome3.excludePackages</option> which only excluded the optional applications.
+      <option>environment.gnome3.excludePackages</option> is now unguarded, it can exclude any package installed with <option>environment.systemPackages</option>
+      in the GNOME 3 module.
+    </para>
+   </listitem>
+   <listitem>
+    <para>
+     Orthogonal to the previous changes to the GNOME 3 desktop manager module, we've updated all default services and applications
+     to match as close as possible to a default reference GNOME 3 experience.
+    </para>
+
+    <bridgehead>The following changes were enacted in <option>services.gnome3.core-utilities.enable</option></bridgehead>
+
+    <itemizedlist>
+     <title>Applications removed from defaults:</title>
+     <listitem><para><literal>accerciser</literal></para></listitem>
+     <listitem><para><literal>dconf-editor</literal></para></listitem>
+     <listitem><para><literal>evolution</literal></para></listitem>
+     <listitem><para><literal>gnome-documents</literal></para></listitem>
+     <listitem><para><literal>gnome-nettool</literal></para></listitem>
+     <listitem><para><literal>gnome-power-manager</literal></para></listitem>
+     <listitem><para><literal>gnome-todo</literal></para></listitem>
+     <listitem><para><literal>gnome-tweaks</literal></para></listitem>
+     <listitem><para><literal>gnome-usage</literal></para></listitem>
+     <listitem><para><literal>gucharmap</literal></para></listitem>
+     <listitem><para><literal>nautilus-sendto</literal></para></listitem>
+     <listitem><para><literal>vinagre</literal></para></listitem>
+    </itemizedlist>
+    <itemizedlist>
+     <title>Applications added to defaults:</title>
+     <listitem><para><literal>cheese</literal></para></listitem>
+     <listitem><para><literal>geary</literal></para></listitem>
+    </itemizedlist>
+
+    <bridgehead>The following changes were enacted in <option>services.gnome3.core-shell.enable</option></bridgehead>
+
+    <itemizedlist>
+     <title>Applications added to defaults:</title>
+     <listitem><para><literal>gnome-color-manager</literal></para></listitem>
+     <listitem><para><literal>orca</literal></para></listitem>
+    </itemizedlist>
+    <itemizedlist>
+     <title>Services enabled:</title>
+     <listitem><para><option>services.avahi.enable</option></para></listitem>
+    </itemizedlist>
+   </listitem>
   </itemizedlist>
  </section>
 
@@ -348,6 +406,12 @@
        What used to be called <literal>emacsPackagesNg</literal> is now simply called <literal>emacsPackages</literal>.
      </para>
    </listitem>
+   <listitem>
+     <para>
+       <option>services.xserver.desktopManager.xterm</option> is now disabled by default.
+       It was not useful except for debugging purposes and was confusingly set as default in some circumstances.
+     </para>
+   </listitem>
 
   </itemizedlist>
  </section>
@@ -547,8 +611,8 @@
       </para>
      </listitem>
     </itemizedlist>
-
-     This also configures the kernel to pass coredumps to <literal>systemd-coredump</literal>.
+     This also configures the kernel to pass coredumps to <literal>systemd-coredump</literal>,
+     and restricts the SysRq key combinations to the sync command only.
      These sysctl snippets can be found in <literal>/etc/sysctl.d/50-*.conf</literal>,
      and overridden via <link linkend="opt-boot.kernel.sysctl">boot.kernel.sysctl</link>
      (which will place the parameters in <literal>/etc/sysctl.d/60-nixos.conf</literal>).
@@ -591,6 +655,51 @@
      The defaults from fontconfig are sufficient.
     </para>
    </listitem>
+   <listitem>
+    <para>
+      The <literal>crashplan</literal> package and the
+      <literal>crashplan</literal> service have been removed from nixpkgs due to
+      crashplan shutting down the service, while the <literal>crashplansb</literal>
+      package and <literal>crashplan-small-business</literal> service have been
+      removed from nixpkgs due to lack of maintainer.
+    </para>
+    <para>
+      The <link linkend="opt-services.redis.enable">redis module</link> was hardcoded to use the <literal>redis</literal> user,
+      <filename class="directory">/run/redis</filename> as runtime directory and
+      <filename class="directory">/var/lib/redis</filename> as state directory.
+      Note that the NixOS module for Redis now disables kernel support for Transparent Huge Pages (THP),
+      because this features causes major performance problems for Redis,
+      e.g. (https://redis.io/topics/latency).
+    </para>
+   </listitem>
+   <listitem>
+    <para>
+     Using <option>fonts.enableDefaultFonts</option> adds a default emoji font <literal>noto-fonts-emoji</literal>.
+     <itemizedlist>
+      <para>Users of the following options will have this enabled by default:</para>
+      <listitem>
+       <para><option>services.xserver.enable</option></para>
+      </listitem>
+      <listitem>
+       <para><option>programs.sway.enable</option></para>
+      </listitem>
+      <listitem>
+       <para><option>programs.way-cooler.enable</option></para>
+      </listitem>
+      <listitem>
+       <para><option>services.xrdp.enable</option></para>
+      </listitem>
+     </itemizedlist>
+    </para>
+   </listitem>
+   <listitem>
+     <para>
+       The <literal>altcoins</literal> categorization of packages has
+       been removed. You now access these packages at the top level,
+       ie. <literal>nix-shell -p dogecoin</literal> instead of
+       <literal>nix-shell -p altcoins.dogecoin</literal>, etc.
+     </para>
+   </listitem>
   </itemizedlist>
  </section>
 </section>
diff --git a/nixos/modules/config/fonts/fontconfig.nix b/nixos/modules/config/fonts/fontconfig.nix
index fe0b88cf4c266..bcb86f11ead76 100644
--- a/nixos/modules/config/fonts/fontconfig.nix
+++ b/nixos/modules/config/fonts/fontconfig.nix
@@ -116,7 +116,7 @@ let
   defaultFontsConf =
     let genDefault = fonts: name:
       optionalString (fonts != []) ''
-        <alias>
+        <alias binding="same">
           <family>${name}</family>
           <prefer>
           ${concatStringsSep ""
@@ -139,6 +139,8 @@ let
 
       ${genDefault cfg.defaultFonts.monospace "monospace"}
 
+      ${genDefault cfg.defaultFonts.emoji "emoji"}
+
     </fontconfig>
   '';
 
@@ -344,6 +346,21 @@ in
               in case multiple languages must be supported.
             '';
           };
+
+          emoji = mkOption {
+            type = types.listOf types.str;
+            default = ["Noto Color Emoji"];
+            description = ''
+              System-wide default emoji font(s). Multiple fonts may be listed
+              in case a font does not support all emoji.
+
+              Note that fontconfig matches color emoji fonts preferentially,
+              so if you want to use a black and white font while having
+              a color font installed (eg. Noto Color Emoji installed alongside
+              Noto Emoji), fontconfig will still choose the color font even
+              when it is later in the list.
+            '';
+          };
         };
 
         hinting = {
diff --git a/nixos/modules/config/fonts/fonts.nix b/nixos/modules/config/fonts/fonts.nix
index 0dd01df9da747..abb806b601a76 100644
--- a/nixos/modules/config/fonts/fonts.nix
+++ b/nixos/modules/config/fonts/fonts.nix
@@ -43,6 +43,7 @@ with lib;
         pkgs.xorg.fontmiscmisc
         pkgs.xorg.fontcursormisc
         pkgs.unifont
+        pkgs.noto-fonts-emoji
       ];
 
   };
diff --git a/nixos/modules/config/users-groups.nix b/nixos/modules/config/users-groups.nix
index a11c038c2d35d..ba79bd3d6ecc5 100644
--- a/nixos/modules/config/users-groups.nix
+++ b/nixos/modules/config/users-groups.nix
@@ -181,7 +181,7 @@ let
       };
 
       hashedPassword = mkOption {
-        type = with types; uniq (nullOr str);
+        type = with types; nullOr str;
         default = null;
         description = ''
           Specifies the hashed password for the user.
@@ -191,7 +191,7 @@ let
       };
 
       password = mkOption {
-        type = with types; uniq (nullOr str);
+        type = with types; nullOr str;
         default = null;
         description = ''
           Specifies the (clear text) password for the user.
@@ -203,7 +203,7 @@ let
       };
 
       passwordFile = mkOption {
-        type = with types; uniq (nullOr string);
+        type = with types; nullOr str;
         default = null;
         description = ''
           The full path to a file that contains the user's password. The password
@@ -215,7 +215,7 @@ let
       };
 
       initialHashedPassword = mkOption {
-        type = with types; uniq (nullOr str);
+        type = with types; nullOr str;
         default = null;
         description = ''
           Specifies the initial hashed password for the user, i.e. the
@@ -230,7 +230,7 @@ let
       };
 
       initialPassword = mkOption {
-        type = with types; uniq (nullOr str);
+        type = with types; nullOr str;
         default = null;
         description = ''
           Specifies the initial password for the user, i.e. the
@@ -304,7 +304,7 @@ let
       };
 
       members = mkOption {
-        type = with types; listOf string;
+        type = with types; listOf str;
         default = [];
         description = ''
           The user names of the group members, added to the
diff --git a/nixos/modules/hardware/video/nvidia.nix b/nixos/modules/hardware/video/nvidia.nix
index da3c8ee5a9fa4..3ab2afc974070 100644
--- a/nixos/modules/hardware/video/nvidia.nix
+++ b/nixos/modules/hardware/video/nvidia.nix
@@ -88,7 +88,7 @@ in
     };
 
     hardware.nvidia.optimus_prime.nvidiaBusId = lib.mkOption {
-      type = lib.types.string;
+      type = lib.types.str;
       default = "";
       example = "PCI:1:0:0";
       description = ''
@@ -98,7 +98,7 @@ in
     };
 
     hardware.nvidia.optimus_prime.intelBusId = lib.mkOption {
-      type = lib.types.string;
+      type = lib.types.str;
       default = "";
       example = "PCI:0:2:0";
       description = ''
diff --git a/nixos/modules/installer/cd-dvd/sd-image-aarch64.nix b/nixos/modules/installer/cd-dvd/sd-image-aarch64.nix
index a9241870fa71f..2d34406a0320e 100644
--- a/nixos/modules/installer/cd-dvd/sd-image-aarch64.nix
+++ b/nixos/modules/installer/cd-dvd/sd-image-aarch64.nix
@@ -59,4 +59,8 @@ in
       ${extlinux-conf-builder} -t 3 -c ${config.system.build.toplevel} -d ./files/boot
     '';
   };
+
+  # the installation media is also the installation target,
+  # so we don't want to provide the installation configuration.nix.
+  installer.cloneConfig = false;
 }
diff --git a/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix b/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix
index dab0924153160..651d1a36dc11b 100644
--- a/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix
+++ b/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix
@@ -56,4 +56,8 @@ in
       ${extlinux-conf-builder} -t 3 -c ${config.system.build.toplevel} -d ./files/boot
     '';
   };
+
+  # the installation media is also the installation target,
+  # so we don't want to provide the installation configuration.nix.
+  installer.cloneConfig = false;
 }
diff --git a/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix b/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix
index 8c9090471dcdb..2a131d9ce980f 100644
--- a/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix
+++ b/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix
@@ -45,4 +45,8 @@ in
       ${extlinux-conf-builder} -t 3 -c ${config.system.build.toplevel} -d ./files/boot
     '';
   };
+
+  # the installation media is also the installation target,
+  # so we don't want to provide the installation configuration.nix.
+  installer.cloneConfig = false;
 }
diff --git a/nixos/modules/installer/cd-dvd/sd-image.nix b/nixos/modules/installer/cd-dvd/sd-image.nix
index 07f6f627e6c0b..0a01504415549 100644
--- a/nixos/modules/installer/cd-dvd/sd-image.nix
+++ b/nixos/modules/installer/cd-dvd/sd-image.nix
@@ -54,7 +54,7 @@ in
     };
 
     firmwarePartitionID = mkOption {
-      type = types.string;
+      type = types.str;
       default = "0x2178694e";
       description = ''
         Volume ID for the /boot/firmware partition on the SD card. This value
@@ -63,7 +63,7 @@ in
     };
 
     rootPartitionUUID = mkOption {
-      type = types.nullOr types.string;
+      type = types.nullOr types.str;
       default = null;
       example = "14e19a7b-0ae0-484d-9d54-43bd6fdc20c7";
       description = ''
@@ -194,9 +194,5 @@ in
         rm -f /nix-path-registration
       fi
     '';
-
-    # the installation media is also the installation target,
-    # so we don't want to provide the installation configuration.nix.
-    installer.cloneConfig = false;
   };
 }
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index b6c946b99e001..4bc37ed3f1716 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -138,6 +138,7 @@
   ./programs/qt5ct.nix
   ./programs/screen.nix
   ./programs/sedutil.nix
+  ./programs/seahorse.nix
   ./programs/slock.nix
   ./programs/shadow.nix
   ./programs/shell.nix
@@ -216,8 +217,6 @@
   ./services/backup/bacula.nix
   ./services/backup/borgbackup.nix
   ./services/backup/duplicati.nix
-  ./services/backup/crashplan.nix
-  ./services/backup/crashplan-small-business.nix
   ./services/backup/duplicity.nix
   ./services/backup/mysql-backup.nix
   ./services/backup/postgresql-backup.nix
@@ -303,7 +302,6 @@
   ./services/desktops/gnome3/gnome-settings-daemon.nix
   ./services/desktops/gnome3/gnome-user-share.nix
   ./services/desktops/gnome3/rygel.nix
-  ./services/desktops/gnome3/seahorse.nix
   ./services/desktops/gnome3/sushi.nix
   ./services/desktops/gnome3/tracker.nix
   ./services/desktops/gnome3/tracker-miners.nix
diff --git a/nixos/modules/programs/seahorse.nix b/nixos/modules/programs/seahorse.nix
new file mode 100644
index 0000000000000..c08b0a85374cd
--- /dev/null
+++ b/nixos/modules/programs/seahorse.nix
@@ -0,0 +1,44 @@
+# Seahorse.
+
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+{
+
+ # Added 2019-08-27
+  imports = [
+    (mkRenamedOptionModule
+      [ "services" "gnome3" "seahorse" "enable" ]
+      [ "programs" "seahorse" "enable" ])
+  ];
+
+
+  ###### interface
+
+  options = {
+
+    programs.seahorse = {
+
+      enable = mkEnableOption "Seahorse, a GNOME application for managing encryption keys and passwords in the GNOME Keyring";
+
+    };
+
+  };
+
+
+  ###### implementation
+
+  config = mkIf config.programs.seahorse.enable {
+
+    environment.systemPackages = [
+      pkgs.gnome3.seahorse
+    ];
+
+    services.dbus.packages = [
+      pkgs.gnome3.seahorse
+    ];
+
+  };
+
+}
diff --git a/nixos/modules/programs/thefuck.nix b/nixos/modules/programs/thefuck.nix
index 21ed6603c1bdd..b909916158d38 100644
--- a/nixos/modules/programs/thefuck.nix
+++ b/nixos/modules/programs/thefuck.nix
@@ -17,7 +17,7 @@ in
 
         alias = mkOption {
           default = "fuck";
-          type = types.string;
+          type = types.str;
 
           description = ''
             `thefuck` needs an alias to be configured.
diff --git a/nixos/modules/programs/xss-lock.nix b/nixos/modules/programs/xss-lock.nix
index 070463311db58..a7ad9b89db4db 100644
--- a/nixos/modules/programs/xss-lock.nix
+++ b/nixos/modules/programs/xss-lock.nix
@@ -12,7 +12,7 @@ in
     lockerCommand = mkOption {
       default = "${pkgs.i3lock}/bin/i3lock";
       example = literalExample ''''${pkgs.i3lock-fancy}/bin/i3lock-fancy'';
-      type = types.string;
+      type = types.separatedString " ";
       description = "Locker to be used with xsslock";
     };
 
diff --git a/nixos/modules/programs/yabar.nix b/nixos/modules/programs/yabar.nix
index db085211366ee..5de9331ac5204 100644
--- a/nixos/modules/programs/yabar.nix
+++ b/nixos/modules/programs/yabar.nix
@@ -76,7 +76,7 @@ in
             font = mkOption {
               default = "sans bold 9";
               example = "Droid Sans, FontAwesome Bold 9";
-              type = types.string;
+              type = types.str;
 
               description = ''
                 The font that will be used to draw the status bar.
@@ -95,7 +95,7 @@ in
 
             extra = mkOption {
               default = {};
-              type = types.attrsOf types.string;
+              type = types.attrsOf types.str;
 
               description = ''
                 An attribute set which contains further attributes of a bar.
@@ -107,7 +107,7 @@ in
               type = types.attrsOf(types.submodule {
                 options.exec = mkOption {
                   example = "YABAR_DATE";
-                  type = types.string;
+                  type = types.str;
                   description = ''
                      The type of the indicator to be executed.
                   '';
@@ -125,7 +125,7 @@ in
 
                 options.extra = mkOption {
                   default = {};
-                  type = types.attrsOf (types.either types.string types.int);
+                  type = types.attrsOf (types.either types.str types.int);
 
                   description = ''
                     An attribute set which contains further attributes of a indicator.
diff --git a/nixos/modules/programs/zsh/zsh-syntax-highlighting.nix b/nixos/modules/programs/zsh/zsh-syntax-highlighting.nix
index 89087a229eb73..7184e5d9b9a82 100644
--- a/nixos/modules/programs/zsh/zsh-syntax-highlighting.nix
+++ b/nixos/modules/programs/zsh/zsh-syntax-highlighting.nix
@@ -33,7 +33,7 @@ in
 
       patterns = mkOption {
         default = {};
-        type = types.attrsOf types.string;
+        type = types.attrsOf types.str;
 
         example = literalExample ''
           {
@@ -50,7 +50,7 @@ in
       };
       styles = mkOption {
         default = {};
-        type = types.attrsOf types.string;
+        type = types.attrsOf types.str;
 
         example = literalExample ''
           {
diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix
index 1048c2af2ea85..9e0ab60ca6798 100644
--- a/nixos/modules/rename.nix
+++ b/nixos/modules/rename.nix
@@ -256,7 +256,7 @@ with lib;
 
     # binfmt
     (mkRenamedOptionModule [ "boot" "binfmtMiscRegistrations" ] [ "boot" "binfmt" "registrations" ])
-    
+
     # ACME
     (mkRemovedOptionModule [ "security" "acme" "directory"] "ACME Directory is now hardcoded to /var/lib/acme and its permisisons are managed by systemd. See https://github.com/NixOS/nixpkgs/issues/53852 for more info.")
     (mkRemovedOptionModule [ "security" "acme" "preDelay"] "This option has been removed. If you want to make sure that something executes before certificates are provisioned, add a RequiredBy=acme-\${cert}.service to the service you want to execute before the cert renewal")
@@ -285,6 +285,13 @@ with lib;
           throw "services.redshift.longitude is set to null, you can remove this"
           else builtins.fromJSON value))
 
+    # Redis
+    (mkRemovedOptionModule [ "services" "redis" "user" ] "The redis module now is hardcoded to the redis user.")
+    (mkRemovedOptionModule [ "services" "redis" "dbpath" ] "The redis module now uses /var/lib/redis as data directory.")
+    (mkRemovedOptionModule [ "services" "redis" "dbFilename" ] "The redis module now uses /var/lib/redis/dump.rdb as database dump location.")
+    (mkRemovedOptionModule [ "services" "redis" "appendOnlyFilename" ] "This option was never used.")
+    (mkRemovedOptionModule [ "services" "redis" "pidFile" ] "This option was removed.")
+
   ] ++ (forEach [ "blackboxExporter" "collectdExporter" "fritzboxExporter"
                    "jsonExporter" "minioExporter" "nginxExporter" "nodeExporter"
                    "snmpExporter" "unifiExporter" "varnishExporter" ]
diff --git a/nixos/modules/security/auditd.nix b/nixos/modules/security/auditd.nix
index 6abac244dac24..9d26cfbcfb10e 100644
--- a/nixos/modules/security/auditd.nix
+++ b/nixos/modules/security/auditd.nix
@@ -6,6 +6,10 @@ with lib;
   options.security.auditd.enable = mkEnableOption "the Linux Audit daemon";
 
   config = mkIf config.security.auditd.enable {
+    boot.kernelParams = [ "audit=1" ];
+
+    environment.systemPackages = [ pkgs.audit ];
+
     systemd.services.auditd = {
       description = "Linux Audit daemon";
       wantedBy = [ "basic.target" ];
diff --git a/nixos/modules/security/pam.nix b/nixos/modules/security/pam.nix
index 89e71c5136e43..9c7ddc2f4eea2 100644
--- a/nixos/modules/security/pam.nix
+++ b/nixos/modules/security/pam.nix
@@ -685,7 +685,7 @@ in
       };
       id = mkOption {
         example = "42";
-        type = types.string;
+        type = types.str;
         description = "client id";
       };
 
diff --git a/nixos/modules/security/sudo.nix b/nixos/modules/security/sudo.nix
index 573588aaeecc0..10ee036be84eb 100644
--- a/nixos/modules/security/sudo.nix
+++ b/nixos/modules/security/sudo.nix
@@ -91,7 +91,7 @@ in
       type = with types; listOf (submodule {
         options = {
           users = mkOption {
-            type = with types; listOf (either string int);
+            type = with types; listOf (either str int);
             description = ''
               The usernames / UIDs this rule should apply for.
             '';
@@ -99,7 +99,7 @@ in
           };
 
           groups = mkOption {
-            type = with types; listOf (either string int);
+            type = with types; listOf (either str int);
             description = ''
               The groups / GIDs this rule should apply for.
             '';
@@ -107,7 +107,7 @@ in
           };
 
           host = mkOption {
-            type = types.string;
+            type = types.str;
             default = "ALL";
             description = ''
               For what host this rule should apply.
@@ -115,7 +115,7 @@ in
           };
 
           runAs = mkOption {
-            type = with types; string;
+            type = with types; str;
             default = "ALL:ALL";
             description = ''
               Under which user/group the specified command is allowed to run.
@@ -130,11 +130,11 @@ in
             description = ''
               The commands for which the rule should apply.
             '';
-            type = with types; listOf (either string (submodule {
+            type = with types; listOf (either str (submodule {
 
               options = {
                 command = mkOption {
-                  type = with types; string;
+                  type = with types; str;
                   description = ''
                     A command being either just a path to a binary to allow any arguments,
                     the full command with arguments pre-set or with <code>""</code> used as the argument,
diff --git a/nixos/modules/services/amqp/activemq/default.nix b/nixos/modules/services/amqp/activemq/default.nix
index 27bfd91cd2d58..7729da27304bb 100644
--- a/nixos/modules/services/amqp/activemq/default.nix
+++ b/nixos/modules/services/amqp/activemq/default.nix
@@ -40,7 +40,7 @@ in {
         '';
       };
       configurationURI = mkOption {
-        type = types.string;
+        type = types.str;
         default = "xbean:activemq.xml";
         description = ''
           The URI that is passed along to the BrokerFactory to
@@ -51,7 +51,7 @@ in {
         '';
       };
       baseDir = mkOption {
-        type = types.string;
+        type = types.str;
         default = "/var/activemq";
         description = ''
           The base directory where ActiveMQ stores its persistent data and logs.
@@ -81,7 +81,7 @@ in {
         '';
       };
       extraJavaOptions = mkOption {
-        type = types.string;
+        type = types.separatedString " ";
         default = "";
         example = "-Xmx2G -Xms2G -XX:MaxPermSize=512M";
         description = ''
diff --git a/nixos/modules/services/audio/alsa.nix b/nixos/modules/services/audio/alsa.nix
index 57bd4a8f5a62f..f632644af09ef 100644
--- a/nixos/modules/services/audio/alsa.nix
+++ b/nixos/modules/services/audio/alsa.nix
@@ -64,7 +64,7 @@ in
         };
 
         volumeStep = mkOption {
-          type = types.string;
+          type = types.str;
           default = "1";
           example = "1%";
           description = ''
diff --git a/nixos/modules/services/audio/ympd.nix b/nixos/modules/services/audio/ympd.nix
index 919b766225107..551bd941fe687 100644
--- a/nixos/modules/services/audio/ympd.nix
+++ b/nixos/modules/services/audio/ympd.nix
@@ -23,7 +23,7 @@ in {
 
       mpd = {
         host = mkOption {
-          type = types.string;
+          type = types.str;
           default = "localhost";
           description = "The host where MPD is listening.";
           example = "localhost";
diff --git a/nixos/modules/services/backup/crashplan-small-business.nix b/nixos/modules/services/backup/crashplan-small-business.nix
deleted file mode 100644
index 790dafefe66fd..0000000000000
--- a/nixos/modules/services/backup/crashplan-small-business.nix
+++ /dev/null
@@ -1,73 +0,0 @@
-{ config, pkgs, lib, ... }:
-
-let
-  cfg = config.services.crashplansb;
-  crashplansb = pkgs.crashplansb.override { maxRam = cfg.maxRam; };
-in
-
-with lib;
-
-{
-  options = {
-    services.crashplansb = {
-      enable = mkOption {
-        default = false;
-        type = types.bool;
-        description = ''
-          Starts crashplan for small business background service.
-        '';
-      };
-      maxRam = mkOption {
-        default = "1024m";
-        example = "2G";
-        type = types.str;
-        description = ''
-          Maximum amount of ram that the crashplan engine should use.
-        '';
-      };
-      openPorts = mkOption {
-        description = "Open ports in the firewall for crashplan.";
-        default = true;
-        type = types.bool;
-      };
-      ports =  mkOption {
-        # https://support.code42.com/Administrator/6/Planning_and_installing/TCP_and_UDP_ports_used_by_the_Code42_platform
-        # used ports can also be checked in the desktop app console using the command connection.info
-        description = "which ports to open.";
-        default = [ 4242 4243 4244 4247 ];
-        type = types.listOf types.int;
-      };
-    };
-  };
-
-  config = mkIf cfg.enable {
-    environment.systemPackages = [ crashplansb ];
-    networking.firewall.allowedTCPPorts = mkIf cfg.openPorts cfg.ports;
-
-    systemd.services.crashplansb = {
-      description = "CrashPlan Backup Engine";
-
-      wantedBy = [ "multi-user.target" ];
-      after    = [ "network.target" "local-fs.target" ];
-
-      preStart = ''
-        install -d -m 755 ${crashplansb.vardir}
-        install -d -m 700 ${crashplansb.vardir}/conf
-        install -d -m 700 ${crashplansb.manifestdir}
-        install -d -m 700 ${crashplansb.vardir}/cache
-        install -d -m 700 ${crashplansb.vardir}/backupArchives
-        install -d -m 777 ${crashplansb.vardir}/log
-        cp -avn ${crashplansb}/conf.template/* ${crashplansb.vardir}/conf
-      '';
-
-      serviceConfig = {
-        Type = "forking";
-        EnvironmentFile = "${crashplansb}/bin/run.conf";
-        ExecStart = "${crashplansb}/bin/CrashPlanEngine start";
-        ExecStop = "${crashplansb}/bin/CrashPlanEngine stop";
-        PIDFile = "${crashplansb.vardir}/CrashPlanEngine.pid";
-        WorkingDirectory = crashplansb;
-      };
-    };
-  };
-}
diff --git a/nixos/modules/services/backup/crashplan.nix b/nixos/modules/services/backup/crashplan.nix
deleted file mode 100644
index c540cc6e2aee6..0000000000000
--- a/nixos/modules/services/backup/crashplan.nix
+++ /dev/null
@@ -1,67 +0,0 @@
-{ config, pkgs, lib, ... }:
-
-let
-  cfg = config.services.crashplan;
-  crashplan = pkgs.crashplan;
-in
-
-with lib;
-
-{
-  options = {
-    services.crashplan = {
-      enable = mkOption {
-        default = false;
-        type = types.bool;
-        description = ''
-          Starts crashplan background service.
-        '';
-      };
-    };
-  };
-
-  config = mkIf cfg.enable {
-    environment.systemPackages = [ crashplan ];
-
-    systemd.services.crashplan = {
-      description = "CrashPlan Backup Engine";
-
-      wantedBy = [ "multi-user.target" ];
-      after    = [ "network.target" "local-fs.target" ];
-
-      preStart = ''
-        ensureDir() {
-          dir=$1
-          mode=$2
-
-          if ! test -e $dir; then
-            ${pkgs.coreutils}/bin/mkdir -m $mode -p $dir
-          elif [ "$(${pkgs.coreutils}/bin/stat -c %a $dir)" != "$mode" ]; then
-            ${pkgs.coreutils}/bin/chmod $mode $dir
-          fi
-        }
-
-        ensureDir ${crashplan.vardir} 755
-        ensureDir ${crashplan.vardir}/conf 700
-        ensureDir ${crashplan.manifestdir} 700
-        ensureDir ${crashplan.vardir}/cache 700
-        ensureDir ${crashplan.vardir}/backupArchives 700
-        ensureDir ${crashplan.vardir}/log 777
-        cp -avn ${crashplan}/conf.template/* ${crashplan.vardir}/conf
-        for x in app.asar bin install.vars lang lib libc42archive64.so libc52archive.so libjniwrap64.so libjniwrap.so libjtux64.so libjtux.so libleveldb64.so libleveldb.so libmd564.so libmd5.so share skin upgrade; do
-          rm -f ${crashplan.vardir}/$x;
-          ln -sf ${crashplan}/$x ${crashplan.vardir}/$x;
-        done
-      '';
-
-      serviceConfig = {
-        Type = "forking";
-        EnvironmentFile = "${crashplan}/bin/run.conf";
-        ExecStart = "${crashplan}/bin/CrashPlanEngine start";
-        ExecStop = "${crashplan}/bin/CrashPlanEngine stop";
-        PIDFile = "${crashplan.vardir}/CrashPlanEngine.pid";
-        WorkingDirectory = crashplan;
-      };
-    };
-  };
-}
diff --git a/nixos/modules/services/backup/postgresql-backup.nix b/nixos/modules/services/backup/postgresql-backup.nix
index 17b410a97f3ea..13a36ae32ac0e 100644
--- a/nixos/modules/services/backup/postgresql-backup.nix
+++ b/nixos/modules/services/backup/postgresql-backup.nix
@@ -81,7 +81,7 @@ in {
       };
 
       pgdumpOptions = mkOption {
-        type = types.string;
+        type = types.separatedString " ";
         default = "-Cbo";
         description = ''
           Command line options for pg_dump. This options is not used
diff --git a/nixos/modules/services/backup/rsnapshot.nix b/nixos/modules/services/backup/rsnapshot.nix
index bb5dcab1dcf2d..6635a51ec2c65 100644
--- a/nixos/modules/services/backup/rsnapshot.nix
+++ b/nixos/modules/services/backup/rsnapshot.nix
@@ -2,7 +2,7 @@
 
 with lib;
 
-let 
+let
   cfg = config.services.rsnapshot;
   cfgfile = pkgs.writeText "rsnapshot.conf" ''
     config_version	1.2
@@ -52,7 +52,7 @@ in
       cronIntervals = mkOption {
         default = {};
         example = { hourly = "0 * * * *"; daily = "50 21 * * *"; };
-        type = types.attrsOf types.string;
+        type = types.attrsOf types.str;
         description = ''
           Periodicity at which intervals should be run by cron.
           Note that the intervals also have to exist in configuration
diff --git a/nixos/modules/services/computing/boinc/client.nix b/nixos/modules/services/computing/boinc/client.nix
index 7022751b3f012..a7edac0253841 100644
--- a/nixos/modules/services/computing/boinc/client.nix
+++ b/nixos/modules/services/computing/boinc/client.nix
@@ -111,7 +111,7 @@ in
 
       systemd.services.boinc = {
         description = "BOINC Client";
-        after = ["network.target" "local-fs.target"];
+        after = ["network.target"];
         wantedBy = ["multi-user.target"];
         script = ''
           ${fhsEnvExecutable} --dir ${cfg.dataDir} --redirectio ${allowRemoteGuiRpcFlag}
diff --git a/nixos/modules/services/databases/cassandra.nix b/nixos/modules/services/databases/cassandra.nix
index 74265f8488b5c..90c094f68b61b 100644
--- a/nixos/modules/services/databases/cassandra.nix
+++ b/nixos/modules/services/databases/cassandra.nix
@@ -259,7 +259,7 @@ in {
         '';
     };
     incrementalRepairOptions = mkOption {
-      type = types.listOf types.string;
+      type = types.listOf types.str;
       default = [];
       example = [ "--partitioner-range" ];
       description = ''
@@ -267,7 +267,7 @@ in {
         '';
     };
     maxHeapSize = mkOption {
-      type = types.nullOr types.string;
+      type = types.nullOr types.str;
       default = null;
       example = "4G";
       description = ''
@@ -287,7 +287,7 @@ in {
       '';
     };
     heapNewSize = mkOption {
-      type = types.nullOr types.string;
+      type = types.nullOr types.str;
       default = null;
       example = "800M";
       description = ''
@@ -352,11 +352,11 @@ in {
       type = types.listOf (types.submodule {
         options = {
           username = mkOption {
-            type = types.string;
+            type = types.str;
             description = "Username for JMX";
           };
           password = mkOption {
-            type = types.string;
+            type = types.str;
             description = "Password for JMX";
           };
         };
diff --git a/nixos/modules/services/databases/couchdb.nix b/nixos/modules/services/databases/couchdb.nix
index 77e404116c8a6..53224db1d8961 100644
--- a/nixos/modules/services/databases/couchdb.nix
+++ b/nixos/modules/services/databases/couchdb.nix
@@ -56,7 +56,7 @@ in {
 
 
       user = mkOption {
-        type = types.string;
+        type = types.str;
         default = "couchdb";
         description = ''
           User account under which couchdb runs.
@@ -64,7 +64,7 @@ in {
       };
 
       group = mkOption {
-        type = types.string;
+        type = types.str;
         default = "couchdb";
         description = ''
           Group account under which couchdb runs.
@@ -106,7 +106,7 @@ in {
       };
 
       bindAddress = mkOption {
-        type = types.string;
+        type = types.str;
         default = "127.0.0.1";
         description = ''
           Defines the IP address by which CouchDB will be accessible.
@@ -138,7 +138,7 @@ in {
       };
 
       configFile = mkOption {
-        type = types.string;
+        type = types.path;
         description = ''
           Configuration file for persisting runtime changes. File
           needs to be readable and writable from couchdb user/group.
diff --git a/nixos/modules/services/databases/foundationdb.nix b/nixos/modules/services/databases/foundationdb.nix
index 3746b875c7f22..8f8d0da7c8d3d 100644
--- a/nixos/modules/services/databases/foundationdb.nix
+++ b/nixos/modules/services/databases/foundationdb.nix
@@ -140,7 +140,7 @@ in
     };
 
     logSize = mkOption {
-      type        = types.string;
+      type        = types.str;
       default     = "10MiB";
       description = ''
         Roll over to a new log file after the current log file
@@ -149,7 +149,7 @@ in
     };
 
     maxLogSize = mkOption {
-      type        = types.string;
+      type        = types.str;
       default     = "100MiB";
       description = ''
         Delete the oldest log file when the total size of all log
@@ -171,7 +171,7 @@ in
     };
 
     memory = mkOption {
-      type        = types.string;
+      type        = types.str;
       default     = "8GiB";
       description = ''
         Maximum memory used by the process. The default value is
@@ -193,7 +193,7 @@ in
     };
 
     storageMemory = mkOption {
-      type        = types.string;
+      type        = types.str;
       default     = "1GiB";
       description = ''
         Maximum memory used for data storage. The default value is
diff --git a/nixos/modules/services/databases/hbase.nix b/nixos/modules/services/databases/hbase.nix
index 589c8cf5ec807..2d1a47bbaa311 100644
--- a/nixos/modules/services/databases/hbase.nix
+++ b/nixos/modules/services/databases/hbase.nix
@@ -53,7 +53,7 @@ in {
 
 
       user = mkOption {
-        type = types.string;
+        type = types.str;
         default = "hbase";
         description = ''
           User account under which HBase runs.
@@ -61,7 +61,7 @@ in {
       };
 
       group = mkOption {
-        type = types.string;
+        type = types.str;
         default = "hbase";
         description = ''
           Group account under which HBase runs.
diff --git a/nixos/modules/services/databases/influxdb.nix b/nixos/modules/services/databases/influxdb.nix
index 6868050c8446b..2f176a0387299 100644
--- a/nixos/modules/services/databases/influxdb.nix
+++ b/nixos/modules/services/databases/influxdb.nix
@@ -129,13 +129,13 @@ in
       user = mkOption {
         default = "influxdb";
         description = "User account under which influxdb runs";
-        type = types.string;
+        type = types.str;
       };
 
       group = mkOption {
         default = "influxdb";
         description = "Group under which influxdb runs";
-        type = types.string;
+        type = types.str;
       };
 
       dataDir = mkOption {
diff --git a/nixos/modules/services/databases/mongodb.nix b/nixos/modules/services/databases/mongodb.nix
index c458a1d648a02..12879afed477b 100644
--- a/nixos/modules/services/databases/mongodb.nix
+++ b/nixos/modules/services/databases/mongodb.nix
@@ -65,9 +65,9 @@ in
         default = false;
         description = "Enable client authentication. Creates a default superuser with username root!";
       };
-      
+
       initialRootPassword = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = null;
         description = "Password for the root user if auth is enabled.";
       };
diff --git a/nixos/modules/services/databases/openldap.nix b/nixos/modules/services/databases/openldap.nix
index d8e2c715afb9d..5bf57a1bf9cba 100644
--- a/nixos/modules/services/databases/openldap.nix
+++ b/nixos/modules/services/databases/openldap.nix
@@ -47,26 +47,26 @@ in
       };
 
       user = mkOption {
-        type = types.string;
+        type = types.str;
         default = "openldap";
         description = "User account under which slapd runs.";
       };
 
       group = mkOption {
-        type = types.string;
+        type = types.str;
         default = "openldap";
         description = "Group account under which slapd runs.";
       };
 
       urlList = mkOption {
-        type = types.listOf types.string;
+        type = types.listOf types.str;
         default = [ "ldap:///" ];
         description = "URL list slapd should listen on.";
         example = [ "ldaps:///" ];
       };
 
       dataDir = mkOption {
-        type = types.string;
+        type = types.path;
         default = "/var/db/openldap";
         description = "The database directory.";
       };
diff --git a/nixos/modules/services/databases/opentsdb.nix b/nixos/modules/services/databases/opentsdb.nix
index b26fa9093ef46..c4bd71f3d60e5 100644
--- a/nixos/modules/services/databases/opentsdb.nix
+++ b/nixos/modules/services/databases/opentsdb.nix
@@ -34,7 +34,7 @@ in {
       };
 
       user = mkOption {
-        type = types.string;
+        type = types.str;
         default = "opentsdb";
         description = ''
           User account under which OpenTSDB runs.
@@ -42,7 +42,7 @@ in {
       };
 
       group = mkOption {
-        type = types.string;
+        type = types.str;
         default = "opentsdb";
         description = ''
           Group account under which OpenTSDB runs.
diff --git a/nixos/modules/services/databases/redis.nix b/nixos/modules/services/databases/redis.nix
index 3f2857100f52c..9c389d80a6dfe 100644
--- a/nixos/modules/services/databases/redis.nix
+++ b/nixos/modules/services/databases/redis.nix
@@ -8,17 +8,19 @@ let
   condOption = name: value: if value != null then "${name} ${toString value}" else "";
 
   redisConfig = pkgs.writeText "redis.conf" ''
-    pidfile ${cfg.pidFile}
     port ${toString cfg.port}
     ${condOption "bind" cfg.bind}
     ${condOption "unixsocket" cfg.unixSocket}
+    daemonize yes
+    supervised systemd
     loglevel ${cfg.logLevel}
     logfile ${cfg.logfile}
     syslog-enabled ${redisBool cfg.syslog}
+    pidfile /run/redis/redis.pid
     databases ${toString cfg.databases}
     ${concatMapStrings (d: "save ${toString (builtins.elemAt d 0)} ${toString (builtins.elemAt d 1)}\n") cfg.save}
-    dbfilename ${cfg.dbFilename}
-    dir ${toString cfg.dbpath}
+    dbfilename dump.rdb
+    dir /var/lib/redis
     ${if cfg.slaveOf != null then "slaveof ${cfg.slaveOf.ip} ${toString cfg.slaveOf.port}" else ""}
     ${condOption "masterauth" cfg.masterAuth}
     ${condOption "requirepass" cfg.requirePass}
@@ -40,7 +42,12 @@ in
       enable = mkOption {
         type = types.bool;
         default = false;
-        description = "Whether to enable the Redis server.";
+        description = ''
+          Whether to enable the Redis server. Note that the NixOS module for
+          Redis disables kernel support for Transparent Huge Pages (THP),
+          because this features causes major performance problems for Redis,
+          e.g. (https://redis.io/topics/latency).
+        '';
       };
 
       package = mkOption {
@@ -50,18 +57,6 @@ in
         description = "Which Redis derivation to use.";
       };
 
-      user = mkOption {
-        type = types.str;
-        default = "redis";
-        description = "User account under which Redis runs.";
-      };
-
-      pidFile = mkOption {
-        type = types.path;
-        default = "/var/lib/redis/redis.pid";
-        description = "";
-      };
-
       port = mkOption {
         type = types.int;
         default = 6379;
@@ -95,7 +90,7 @@ in
         type = with types; nullOr path;
         default = null;
         description = "The path to the socket to bind to.";
-        example = "/run/redis.sock";
+        example = "/run/redis/redis.sock";
       };
 
       logLevel = mkOption {
@@ -131,18 +126,6 @@ in
         example = [ [900 1] [300 10] [60 10000] ];
       };
 
-      dbFilename = mkOption {
-        type = types.str;
-        default = "dump.rdb";
-        description = "The filename where to dump the DB.";
-      };
-
-      dbpath = mkOption {
-        type = types.path;
-        default = "/var/lib/redis";
-        description = "The DB will be written inside this directory, with the filename specified using the 'dbFilename' configuration.";
-      };
-
       slaveOf = mkOption {
         default = null; # { ip, port }
         description = "An attribute set with two attributes: ip and port to which this redis instance acts as a slave.";
@@ -170,12 +153,6 @@ in
         description = "By default data is only periodically persisted to disk, enable this option to use an append-only file for improved persistence.";
       };
 
-      appendOnlyFilename = mkOption {
-        type = types.str;
-        default = "appendonly.aof";
-        description = "Filename for the append-only file (stored inside of dbpath)";
-      };
-
       appendFsync = mkOption {
         type = types.str;
         default = "everysec"; # no, always, everysec
@@ -217,27 +194,30 @@ in
       allowedTCPPorts = [ cfg.port ];
     };
 
-    users.users.redis =
-      { name = cfg.user;
-        description = "Redis database user";
-      };
+    users.users.redis.description = "Redis database user";
 
     environment.systemPackages = [ cfg.package ];
 
+    systemd.services.disable-transparent-huge-pages = {
+      description = "Disable Transparent Huge Pages (required by Redis)";
+      before = [ "redis.service" ];
+      wantedBy = [ "redis.service" ];
+      script = "echo never > /sys/kernel/mm/transparent_hugepage/enabled";
+      serviceConfig.Type = "oneshot";
+    };
+
     systemd.services.redis =
       { description = "Redis Server";
 
         wantedBy = [ "multi-user.target" ];
         after = [ "network.target" ];
 
-        preStart = ''
-          install -d -m0700 -o ${cfg.user} ${cfg.dbpath}
-          chown -R ${cfg.user} ${cfg.dbpath}
-        '';
-
         serviceConfig = {
           ExecStart = "${cfg.package}/bin/redis-server ${redisConfig}";
-          User = cfg.user;
+          RuntimeDirectory = "redis";
+          StateDirectory = "redis";
+          Type = "notify";
+          User = "redis";
         };
       };
 
diff --git a/nixos/modules/services/databases/riak.nix b/nixos/modules/services/databases/riak.nix
index ac086cf559964..885215209bdf4 100644
--- a/nixos/modules/services/databases/riak.nix
+++ b/nixos/modules/services/databases/riak.nix
@@ -29,7 +29,7 @@ in
       };
 
       nodeName = mkOption {
-        type = types.string;
+        type = types.str;
         default = "riak@127.0.0.1";
         description = ''
           Name of the Erlang node.
@@ -37,7 +37,7 @@ in
       };
 
       distributedCookie = mkOption {
-        type = types.string;
+        type = types.str;
         default = "riak";
         description = ''
           Cookie for distributed node communication.  All nodes in the
diff --git a/nixos/modules/services/desktops/gnome3/seahorse.nix b/nixos/modules/services/desktops/gnome3/seahorse.nix
deleted file mode 100644
index 9631157934f97..0000000000000
--- a/nixos/modules/services/desktops/gnome3/seahorse.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-# Seahorse daemon.
-
-{ config, pkgs, lib, ... }:
-
-with lib;
-
-{
-
-  ###### interface
-
-  options = {
-
-    services.gnome3.seahorse = {
-
-      enable = mkOption {
-        type = types.bool;
-        default = false;
-        description = ''
-          Whether to enable Seahorse search provider for the GNOME Shell activity search.
-        '';
-      };
-
-    };
-
-  };
-
-
-  ###### implementation
-
-  config = mkIf config.services.gnome3.seahorse.enable {
-
-    environment.systemPackages = [ pkgs.gnome3.seahorse pkgs.gnome3.dconf ];
-
-    services.dbus.packages = [ pkgs.gnome3.seahorse ];
-
-  };
-
-}
diff --git a/nixos/modules/services/desktops/profile-sync-daemon.nix b/nixos/modules/services/desktops/profile-sync-daemon.nix
index e4e47cfbd4383..a8ac22ac12765 100644
--- a/nixos/modules/services/desktops/profile-sync-daemon.nix
+++ b/nixos/modules/services/desktops/profile-sync-daemon.nix
@@ -34,7 +34,7 @@ in {
           psd = {
             enable = true;
             description = "Profile Sync daemon";
-            wants = [ "psd-resync.service" "local-fs.target" ];
+            wants = [ "psd-resync.service" ];
             wantedBy = [ "default.target" ];
             path = with pkgs; [ rsync kmod gawk nettools utillinux profile-sync-daemon ];
             unitConfig = {
diff --git a/nixos/modules/services/games/factorio.nix b/nixos/modules/services/games/factorio.nix
index d04673a6c8b8a..f3831156f453e 100644
--- a/nixos/modules/services/games/factorio.nix
+++ b/nixos/modules/services/games/factorio.nix
@@ -55,7 +55,7 @@ in
         '';
       };
       saveName = mkOption {
-        type = types.string;
+        type = types.str;
         default = "default";
         description = ''
           The name of the savegame that will be used by the server.
@@ -81,7 +81,7 @@ in
         '';
       };
       stateDirName = mkOption {
-        type = types.string;
+        type = types.str;
         default = "factorio";
         description = ''
           Name of the directory under /var/lib holding the server's data.
@@ -102,14 +102,14 @@ in
         '';
       };
       game-name = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = "Factorio Game";
         description = ''
           Name of the game as it will appear in the game listing.
         '';
       };
       description = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = "";
         description = ''
           Description of the game that will appear in the listing.
@@ -130,28 +130,28 @@ in
         '';
       };
       username = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = null;
         description = ''
           Your factorio.com login credentials. Required for games with visibility public.
         '';
       };
       password = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = null;
         description = ''
           Your factorio.com login credentials. Required for games with visibility public.
         '';
       };
       token = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = null;
         description = ''
           Authentication token. May be used instead of 'password' above.
         '';
       };
       game-password = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = null;
         description = ''
           Game password.
diff --git a/nixos/modules/services/hardware/freefall.nix b/nixos/modules/services/hardware/freefall.nix
index 066ccaa4d7cf4..83f1e8c84f283 100644
--- a/nixos/modules/services/hardware/freefall.nix
+++ b/nixos/modules/services/hardware/freefall.nix
@@ -28,7 +28,7 @@ in {
     };
 
     devices = mkOption {
-      type = types.listOf types.string;
+      type = types.listOf types.str;
       default = [ "/dev/sda" ];
       description = ''
         Device paths to all internal spinning hard drives.
diff --git a/nixos/modules/services/hardware/fwupd.nix b/nixos/modules/services/hardware/fwupd.nix
index 223adfee96e8d..6c341bcbf2406 100644
--- a/nixos/modules/services/hardware/fwupd.nix
+++ b/nixos/modules/services/hardware/fwupd.nix
@@ -43,7 +43,7 @@ in {
       };
 
       blacklistDevices = mkOption {
-        type = types.listOf types.string;
+        type = types.listOf types.str;
         default = [];
         example = [ "2082b5e0-7a64-478a-b1b2-e3404fab6dad" ];
         description = ''
@@ -52,7 +52,7 @@ in {
       };
 
       blacklistPlugins = mkOption {
-        type = types.listOf types.string;
+        type = types.listOf types.str;
         default = [ "test" ];
         example = [ "udev" ];
         description = ''
diff --git a/nixos/modules/services/hardware/sane.nix b/nixos/modules/services/hardware/sane.nix
index 5a35bb3f981b6..b344dfc20610f 100644
--- a/nixos/modules/services/hardware/sane.nix
+++ b/nixos/modules/services/hardware/sane.nix
@@ -76,7 +76,7 @@ in
     };
 
     hardware.sane.configDir = mkOption {
-      type = types.string;
+      type = types.str;
       internal = true;
       description = "The value of SANE_CONFIG_DIR.";
     };
diff --git a/nixos/modules/services/hardware/tcsd.nix b/nixos/modules/services/hardware/tcsd.nix
index d4b0a9495d757..3876280ee6bcd 100644
--- a/nixos/modules/services/hardware/tcsd.nix
+++ b/nixos/modules/services/hardware/tcsd.nix
@@ -49,13 +49,13 @@ in
 
       user = mkOption {
         default = "tss";
-        type = types.string;
+        type = types.str;
         description = "User account under which tcsd runs.";
       };
 
       group = mkOption {
         default = "tss";
-        type = types.string;
+        type = types.str;
         description = "Group account under which tcsd runs.";
       };
 
@@ -65,19 +65,19 @@ in
         description = ''
           The location of the system persistent storage file.
           The system persistent storage file holds keys and data across
-          restarts of the TCSD and system reboots. 
+          restarts of the TCSD and system reboots.
         '';
       };
 
       firmwarePCRs = mkOption {
         default = "0,1,2,3,4,5,6,7";
-        type = types.string;
+        type = types.str;
         description = "PCR indices used in the TPM for firmware measurements.";
       };
 
       kernelPCRs = mkOption {
         default = "8,9,10,11,12";
-        type = types.string;
+        type = types.str;
         description = "PCR indices used in the TPM for kernel measurements.";
       };
 
diff --git a/nixos/modules/services/hardware/triggerhappy.nix b/nixos/modules/services/hardware/triggerhappy.nix
index a500cb4fc367c..f9f5234bdc3f2 100644
--- a/nixos/modules/services/hardware/triggerhappy.nix
+++ b/nixos/modules/services/hardware/triggerhappy.nix
@@ -102,7 +102,6 @@ in
 
     systemd.services.triggerhappy = {
       wantedBy = [ "multi-user.target" ];
-      after = [ "local-fs.target" ];
       description = "Global hotkey daemon";
       serviceConfig = {
         ExecStart = "${pkgs.triggerhappy}/bin/thd ${optionalString (cfg.user != "root") "--user ${cfg.user}"} --socket ${socket} --triggers ${configFile} --deviceglob /dev/input/event*";
diff --git a/nixos/modules/services/logging/SystemdJournal2Gelf.nix b/nixos/modules/services/logging/SystemdJournal2Gelf.nix
index e90d9e7a12b62..f26aef7262ba1 100644
--- a/nixos/modules/services/logging/SystemdJournal2Gelf.nix
+++ b/nixos/modules/services/logging/SystemdJournal2Gelf.nix
@@ -16,7 +16,7 @@ in
       };
 
       graylogServer = mkOption {
-        type = types.string;
+        type = types.str;
         example = "graylog2.example.com:11201";
         description = ''
           Host and port of your graylog2 input. This should be a GELF
@@ -25,7 +25,7 @@ in
       };
 
       extraOptions = mkOption {
-        type = types.string;
+        type = types.separatedString " ";
         default = "";
         description = ''
           Any extra flags to pass to SystemdJournal2Gelf. Note that
@@ -56,4 +56,4 @@ in
       };
     };
   };
-}
\ No newline at end of file
+}
diff --git a/nixos/modules/services/logging/awstats.nix b/nixos/modules/services/logging/awstats.nix
index 54799d699a746..a92ff3bee490b 100644
--- a/nixos/modules/services/logging/awstats.nix
+++ b/nixos/modules/services/logging/awstats.nix
@@ -32,7 +32,7 @@ in
     };
 
     updateAt = mkOption {
-      type = types.nullOr types.string;
+      type = types.nullOr types.str;
       default = null;
       example = "hourly";
       description = ''
@@ -50,7 +50,7 @@ in
         description = ''Enable the awstats web service. This switches on httpd.'';
       };
       urlPrefix = mkOption {
-        type = types.string;
+        type = types.str;
         default = "/awstats";
         description = "The URL prefix under which the awstats service appears.";
       };
diff --git a/nixos/modules/services/logging/logcheck.nix b/nixos/modules/services/logging/logcheck.nix
index 5be23757d636a..6d8be5b926d5f 100644
--- a/nixos/modules/services/logging/logcheck.nix
+++ b/nixos/modules/services/logging/logcheck.nix
@@ -155,7 +155,7 @@ in
 
       config = mkOption {
         default = "FQDN=1";
-        type = types.string;
+        type = types.lines;
         description = ''
           Config options that you would like in logcheck.conf.
         '';
diff --git a/nixos/modules/services/logging/rsyslogd.nix b/nixos/modules/services/logging/rsyslogd.nix
index 1ea96b8f13252..b924d94e0b0de 100644
--- a/nixos/modules/services/logging/rsyslogd.nix
+++ b/nixos/modules/services/logging/rsyslogd.nix
@@ -46,7 +46,7 @@ in
       };
 
       defaultConfig = mkOption {
-        type = types.string;
+        type = types.lines;
         default = defaultConf;
         description = ''
           The default <filename>syslog.conf</filename> file configures a
@@ -56,7 +56,7 @@ in
       };
 
       extraConfig = mkOption {
-        type = types.string;
+        type = types.lines;
         default = "";
         example = "news.* -/var/log/news";
         description = ''
diff --git a/nixos/modules/services/mail/exim.nix b/nixos/modules/services/mail/exim.nix
index c05811291359e..47812dd1e40ee 100644
--- a/nixos/modules/services/mail/exim.nix
+++ b/nixos/modules/services/mail/exim.nix
@@ -21,7 +21,7 @@ in
       };
 
       config = mkOption {
-        type = types.string;
+        type = types.lines;
         default = "";
         description = ''
           Verbatim Exim configuration.  This should not contain exim_user,
@@ -30,7 +30,7 @@ in
       };
 
       user = mkOption {
-        type = types.string;
+        type = types.str;
         default = "exim";
         description = ''
           User to use when no root privileges are required.
@@ -42,7 +42,7 @@ in
       };
 
       group = mkOption {
-        type = types.string;
+        type = types.str;
         default = "exim";
         description = ''
           Group to use when no root privileges are required.
@@ -50,7 +50,7 @@ in
       };
 
       spoolDir = mkOption {
-        type = types.string;
+        type = types.path;
         default = "/var/spool/exim";
         description = ''
           Location of the spool directory of exim.
diff --git a/nixos/modules/services/mail/nullmailer.nix b/nixos/modules/services/mail/nullmailer.nix
index 9997d287013ed..2c2910e0aa9b7 100644
--- a/nixos/modules/services/mail/nullmailer.nix
+++ b/nixos/modules/services/mail/nullmailer.nix
@@ -14,7 +14,7 @@ with lib;
       };
 
       user = mkOption {
-        type = types.string;
+        type = types.str;
         default = "nullmailer";
         description = ''
           User to use to run nullmailer-send.
@@ -22,7 +22,7 @@ with lib;
       };
 
       group = mkOption {
-        type = types.string;
+        type = types.str;
         default = "nullmailer";
         description = ''
           Group to use to run nullmailer-send.
diff --git a/nixos/modules/services/mail/postfix.nix b/nixos/modules/services/mail/postfix.nix
index f772aae1bb8dd..d5fd76da970ba 100644
--- a/nixos/modules/services/mail/postfix.nix
+++ b/nixos/modules/services/mail/postfix.nix
@@ -509,7 +509,7 @@ in
       };
 
       localRecipients = mkOption {
-        type = with types; nullOr (listOf string);
+        type = with types; nullOr (listOf str);
         default = null;
         description = ''
           List of accepted local users. Specify a bare username, an
@@ -530,7 +530,7 @@ in
 
       dnsBlacklists = mkOption {
         default = [];
-        type = with types; listOf string;
+        type = with types; listOf str;
         description = "dns blacklist servers to use with smtpd_client_restrictions";
       };
 
diff --git a/nixos/modules/services/mail/postgrey.nix b/nixos/modules/services/mail/postgrey.nix
index 252c92e3595ab..88fb7f0b4ad17 100644
--- a/nixos/modules/services/mail/postgrey.nix
+++ b/nixos/modules/services/mail/postgrey.nix
@@ -12,7 +12,7 @@ with lib; let
   inetSocket = with types; {
     options = {
       addr = mkOption {
-        type = nullOr string;
+        type = nullOr str;
         default = null;
         example = "127.0.0.1";
         description = "The address to bind to. Localhost if null";
@@ -34,7 +34,7 @@ with lib; let
       };
 
       mode = mkOption {
-        type = string;
+        type = str;
         default = "0777";
         description = "Mode of the unix socket";
       };
@@ -63,17 +63,17 @@ in {
         description = "Socket to bind to";
       };
       greylistText = mkOption {
-        type = string;
+        type = str;
         default = "Greylisted for %%s seconds";
         description = "Response status text for greylisted messages; use %%s for seconds left until greylisting is over and %%r for mail domain of recipient";
       };
       greylistAction = mkOption {
-        type = string;
+        type = str;
         default = "DEFER_IF_PERMIT";
         description = "Response status for greylisted messages (see access(5))";
       };
       greylistHeader = mkOption {
-        type = string;
+        type = str;
         default = "X-Greylist: delayed %%t seconds by postgrey-%%v at %%h; %%d";
         description = "Prepend header to greylisted mails; use %%t for seconds delayed due to greylisting, %%v for the version of postgrey, %%d for the date, and %%h for the host";
       };
@@ -88,7 +88,7 @@ in {
         description = "Delete entries from whitelist if they haven't been seen for N days";
       };
       retryWindow = mkOption {
-        type = either string natural;
+        type = either str natural;
         default = 2;
         example = "12h";
         description = "Allow N days for the first retry. Use string with appended 'h' to specify time in hours";
diff --git a/nixos/modules/services/mail/rspamd.nix b/nixos/modules/services/mail/rspamd.nix
index 341303aee3c04..89aa9d17ff7f6 100644
--- a/nixos/modules/services/mail/rspamd.nix
+++ b/nixos/modules/services/mail/rspamd.nix
@@ -308,7 +308,7 @@ in
       };
 
       user = mkOption {
-        type = types.string;
+        type = types.str;
         default = "rspamd";
         description = ''
           User to use when no root privileges are required.
@@ -316,7 +316,7 @@ in
       };
 
       group = mkOption {
-        type = types.string;
+        type = types.str;
         default = "rspamd";
         description = ''
           Group to use when no root privileges are required.
diff --git a/nixos/modules/services/misc/airsonic.nix b/nixos/modules/services/misc/airsonic.nix
index c537354157fd7..919d3b2f6e640 100644
--- a/nixos/modules/services/misc/airsonic.nix
+++ b/nixos/modules/services/misc/airsonic.nix
@@ -34,7 +34,7 @@ in {
       };
 
       listenAddress = mkOption {
-        type = types.string;
+        type = types.str;
         default = "127.0.0.1";
         description = ''
           The host name or IP address on which to bind Airsonic.
@@ -105,7 +105,7 @@ in {
   config = mkIf cfg.enable {
     systemd.services.airsonic = {
       description = "Airsonic Media Server";
-      after = [ "local-fs.target" "network.target" ];
+      after = [ "network.target" ];
       wantedBy = [ "multi-user.target" ];
 
       preStart = ''
diff --git a/nixos/modules/services/misc/apache-kafka.nix b/nixos/modules/services/misc/apache-kafka.nix
index 9eeae9556992d..798e902ccae42 100644
--- a/nixos/modules/services/misc/apache-kafka.nix
+++ b/nixos/modules/services/misc/apache-kafka.nix
@@ -46,7 +46,7 @@ in {
     hostname = mkOption {
       description = "Hostname the broker should bind to.";
       default = "localhost";
-      type = types.string;
+      type = types.str;
     };
 
     logDirs = mkOption {
@@ -54,13 +54,13 @@ in {
       default = [ "/tmp/kafka-logs" ];
       type = types.listOf types.path;
     };
-    
+
     zookeeper = mkOption {
       description = "Zookeeper connection string";
       default = "localhost:2181";
-      type = types.string;
+      type = types.str;
     };
- 
+
     extraProperties = mkOption {
       description = "Extra properties for server.properties.";
       type = types.nullOr types.lines;
@@ -79,8 +79,8 @@ in {
     log4jProperties = mkOption {
       description = "Kafka log4j property configuration.";
       default = ''
-        log4j.rootLogger=INFO, stdout 
-        
+        log4j.rootLogger=INFO, stdout
+
         log4j.appender.stdout=org.apache.log4j.ConsoleAppender
         log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
         log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n
diff --git a/nixos/modules/services/misc/cpuminer-cryptonight.nix b/nixos/modules/services/misc/cpuminer-cryptonight.nix
index f31526f8d1078..907b9d90da295 100644
--- a/nixos/modules/services/misc/cpuminer-cryptonight.nix
+++ b/nixos/modules/services/misc/cpuminer-cryptonight.nix
@@ -28,15 +28,15 @@ in
         '';
       };
       url = mkOption {
-        type = types.string;
+        type = types.str;
         description = "URL of mining server";
       };
       user = mkOption {
-        type = types.string;
+        type = types.str;
         description = "Username for mining server";
       };
       pass = mkOption {
-        type = types.string;
+        type = types.str;
         default = "x";
         description = "Password for mining server";
       };
@@ -63,4 +63,4 @@ in
 
   };
 
-}
\ No newline at end of file
+}
diff --git a/nixos/modules/services/misc/exhibitor.nix b/nixos/modules/services/misc/exhibitor.nix
index dfe9532dc4de6..74f4f671f4605 100644
--- a/nixos/modules/services/misc/exhibitor.nix
+++ b/nixos/modules/services/misc/exhibitor.nix
@@ -252,7 +252,7 @@ in
         example = ["host1:2181" "host2:2181"];
       };
       zkConfigExhibitorPath = mkOption {
-        type = types.string;
+        type = types.str;
         description = ''
           If the ZooKeeper shared config is also running Exhibitor, the URI path for the REST call
         '';
diff --git a/nixos/modules/services/misc/fstrim.nix b/nixos/modules/services/misc/fstrim.nix
index 15f283f093c0d..b8841a7fe74ce 100644
--- a/nixos/modules/services/misc/fstrim.nix
+++ b/nixos/modules/services/misc/fstrim.nix
@@ -14,7 +14,7 @@ in {
       enable = mkEnableOption "periodic SSD TRIM of mounted partitions in background";
 
       interval = mkOption {
-        type = types.string;
+        type = types.str;
         default = "weekly";
         description = ''
           How often we run fstrim. For most desktop and server systems
diff --git a/nixos/modules/services/misc/logkeys.nix b/nixos/modules/services/misc/logkeys.nix
index ad13d9eaa674b..0082db63a06ae 100644
--- a/nixos/modules/services/misc/logkeys.nix
+++ b/nixos/modules/services/misc/logkeys.nix
@@ -11,7 +11,7 @@ in {
     device = mkOption {
       description = "Use the given device as keyboard input event device instead of /dev/input/eventX default.";
       default = null;
-      type = types.nullOr types.string;
+      type = types.nullOr types.str;
       example = "/dev/input/event15";
     };
   };
diff --git a/nixos/modules/services/misc/mediatomb.nix b/nixos/modules/services/misc/mediatomb.nix
index e8e9c0946d7f2..107fb57fe1c45 100644
--- a/nixos/modules/services/misc/mediatomb.nix
+++ b/nixos/modules/services/misc/mediatomb.nix
@@ -163,7 +163,7 @@ in {
       };
 
       serverName = mkOption {
-        type = types.string;
+        type = types.str;
         default = "mediatomb";
         description = ''
           How to identify the server on the network.
@@ -259,7 +259,7 @@ in {
   config = mkIf cfg.enable {
     systemd.services.mediatomb = {
       description = "MediaTomb media Server";
-      after = [ "local-fs.target" "network.target" ];
+      after = [ "network.target" ];
       wantedBy = [ "multi-user.target" ];
       path = [ pkgs.mediatomb ];
       serviceConfig.ExecStart = "${pkgs.mediatomb}/bin/mediatomb -p ${toString cfg.port} ${if cfg.interface!="" then "-e ${cfg.interface}" else ""} ${if cfg.customCfg then "" else "-c ${mtConf}"} -m ${cfg.dataDir}";
diff --git a/nixos/modules/services/misc/mwlib.nix b/nixos/modules/services/misc/mwlib.nix
index a8edecff2a1e6..6b41b552a86dd 100644
--- a/nixos/modules/services/misc/mwlib.nix
+++ b/nixos/modules/services/misc/mwlib.nix
@@ -165,7 +165,7 @@ in
 
   }; # options.services
 
-  config = { 
+  config = {
 
     systemd.services.mwlib-nserve = mkIf cfg.nserve.enable
     {
@@ -191,7 +191,6 @@ in
       description = "mwlib job queue server";
 
       wantedBy = [ "multi-user.target" ];
-      after = [ "network.target" "local-fs.target" ];
 
       preStart = ''
         mkdir -pv '${cfg.qserve.datadir}'
@@ -218,7 +217,7 @@ in
       description = "mwlib worker";
 
       wantedBy = [ "multi-user.target" ];
-      after = [ "network.target" "local-fs.target" ];
+      after = [ "network.target" ];
 
       preStart = ''
         mkdir -pv '${cfg.nslave.cachedir}'
diff --git a/nixos/modules/services/misc/paperless.nix b/nixos/modules/services/misc/paperless.nix
index 4e6cd80e2425e..3985dc0b303c2 100644
--- a/nixos/modules/services/misc/paperless.nix
+++ b/nixos/modules/services/misc/paperless.nix
@@ -50,7 +50,7 @@ in
     };
 
     ocrLanguages = mkOption {
-      type = with types; nullOr (listOf string);
+      type = with types; nullOr (listOf str);
       default = null;
       description = ''
         Languages available for OCR via Tesseract, specified as
diff --git a/nixos/modules/services/misc/serviio.nix b/nixos/modules/services/misc/serviio.nix
index 8808f2d219311..9868192724b50 100644
--- a/nixos/modules/services/misc/serviio.nix
+++ b/nixos/modules/services/misc/serviio.nix
@@ -10,7 +10,7 @@ let
     #!${pkgs.bash}/bin/sh
 
     SERVIIO_HOME=${pkgs.serviio}
-    
+
     # Setup the classpath
     SERVIIO_CLASS_PATH="$SERVIIO_HOME/lib/*:$SERVIIO_HOME/config"
 
@@ -21,13 +21,13 @@ let
     # Execute the JVM in the foreground
     exec ${pkgs.jre}/bin/java -Xmx512M -Xms20M -XX:+UseG1GC -XX:GCTimeRatio=1 -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 $JAVA_OPTS -classpath "$SERVIIO_CLASS_PATH" org.serviio.MediaServer "$@"
   '';
-  
+
 in {
 
   ###### interface
   options = {
     services.serviio = {
-      
+
       enable = mkOption {
         type = types.bool;
         default = false;
@@ -52,7 +52,7 @@ in {
   config = mkIf cfg.enable {
     systemd.services.serviio = {
       description = "Serviio Media Server";
-      after = [ "local-fs.target" "network.target" ];
+      after = [ "network.target" ];
       wantedBy = [ "multi-user.target" ];
       path = [ pkgs.serviio ];
       serviceConfig = {
@@ -64,7 +64,7 @@ in {
     };
 
     users.users = [
-      { 
+      {
         name = "serviio";
         group = "serviio";
         home = cfg.dataDir;
@@ -75,16 +75,16 @@ in {
     ];
 
     users.groups = [
-      { name = "serviio";} 
+      { name = "serviio";}
     ];
 
     networking.firewall = {
-      allowedTCPPorts = [ 
+      allowedTCPPorts = [
         8895  # serve UPnP responses
         23423 # console
         23424 # mediabrowser
       ];
-      allowedUDPPorts = [ 
+      allowedUDPPorts = [
         1900 # UPnP service discovey
       ];
     };
diff --git a/nixos/modules/services/misc/subsonic.nix b/nixos/modules/services/misc/subsonic.nix
index 1612b197f35f4..152917d345ccc 100644
--- a/nixos/modules/services/misc/subsonic.nix
+++ b/nixos/modules/services/misc/subsonic.nix
@@ -17,7 +17,7 @@ let cfg = config.services.subsonic; in {
       };
 
       listenAddress = mkOption {
-        type = types.string;
+        type = types.str;
         default = "0.0.0.0";
         description = ''
           The host name or IP address on which to bind Subsonic.
@@ -105,7 +105,7 @@ let cfg = config.services.subsonic; in {
   config = mkIf cfg.enable {
     systemd.services.subsonic = {
       description = "Personal media streamer";
-      after = [ "local-fs.target" "network.target" ];
+      after = [ "network.target" ];
       wantedBy = [ "multi-user.target" ];
       script = ''
         ${pkgs.jre}/bin/java -Xmx${toString cfg.maxMemory}m \
diff --git a/nixos/modules/services/misc/uhub.nix b/nixos/modules/services/misc/uhub.nix
index 005951b9231ec..753580c3e404f 100644
--- a/nixos/modules/services/misc/uhub.nix
+++ b/nixos/modules/services/misc/uhub.nix
@@ -51,7 +51,7 @@ in
       };
 
       address = mkOption {
-        type = types.string;
+        type = types.str;
         default = "any";
 	description = "Address to bind the hub to.";
       };
@@ -83,7 +83,7 @@ in
             description = "Whether to enable the Sqlite authentication database plugin";
 	  };
           file = mkOption {
-            type = types.string;
+            type = types.path;
             example = "/var/db/uhub-users";
             description = "Path to user database. Use the uhub-passwd utility to create the database and add/remove users.";
           };
@@ -96,7 +96,7 @@ in
             description = "Whether to enable the logging plugin.";
           };
           file = mkOption {
-            type = types.string;
+            type = types.str;
             default = "";
             description = "Path of log file.";
           };
@@ -117,7 +117,7 @@ in
             default = "";
             type = types.lines;
             description = ''
-              Welcome message displayed to clients after connecting 
+              Welcome message displayed to clients after connecting
               and with the <literal>!motd</literal> command.
             '';
           };
@@ -183,4 +183,4 @@ in
     };
   };
 
-}
\ No newline at end of file
+}
diff --git a/nixos/modules/services/monitoring/apcupsd.nix b/nixos/modules/services/monitoring/apcupsd.nix
index 49957e6529006..75218aa1d46b0 100644
--- a/nixos/modules/services/monitoring/apcupsd.nix
+++ b/nixos/modules/services/monitoring/apcupsd.nix
@@ -91,7 +91,7 @@ in
           BATTERYLEVEL 50
           MINUTES 5
         '';
-        type = types.string;
+        type = types.lines;
         description = ''
           Contents of the runtime configuration file, apcupsd.conf. The default
           settings makes apcupsd autodetect USB UPSes, limit network access to
@@ -106,7 +106,7 @@ in
         example = {
           doshutdown = ''# shell commands to notify that the computer is shutting down'';
         };
-        type = types.attrsOf types.string;
+        type = types.attrsOf types.lines;
         description = ''
           Each attribute in this option names an apcupsd event and the string
           value it contains will be executed in a shell, in response to that
diff --git a/nixos/modules/services/monitoring/bosun.nix b/nixos/modules/services/monitoring/bosun.nix
index 8bf741adb6e33..b1c12cce1f809 100644
--- a/nixos/modules/services/monitoring/bosun.nix
+++ b/nixos/modules/services/monitoring/bosun.nix
@@ -41,7 +41,7 @@ in {
       };
 
       user = mkOption {
-        type = types.string;
+        type = types.str;
         default = "bosun";
         description = ''
           User account under which bosun runs.
@@ -49,7 +49,7 @@ in {
       };
 
       group = mkOption {
-        type = types.string;
+        type = types.str;
         default = "bosun";
         description = ''
           Group account under which bosun runs.
@@ -57,7 +57,7 @@ in {
       };
 
       opentsdbHost = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = "localhost:4242";
         description = ''
           Host and port of the OpenTSDB database that stores bosun data.
@@ -66,7 +66,7 @@ in {
       };
 
       influxHost = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = null;
         example = "localhost:8086";
         description = ''
@@ -75,7 +75,7 @@ in {
       };
 
       listenAddress = mkOption {
-        type = types.string;
+        type = types.str;
         default = ":8070";
         description = ''
           The host address and port that bosun's web interface will listen on.
diff --git a/nixos/modules/services/monitoring/datadog-agent.nix b/nixos/modules/services/monitoring/datadog-agent.nix
index 7f78db74677ca..02a9f316fc327 100644
--- a/nixos/modules/services/monitoring/datadog-agent.nix
+++ b/nixos/modules/services/monitoring/datadog-agent.nix
@@ -87,7 +87,7 @@ in {
       description = "The hostname to show in the Datadog dashboard (optional)";
       default = null;
       example = "mymachine.mydomain";
-      type = types.uniq (types.nullOr types.string);
+      type = types.nullOr types.str;
     };
 
     logLevel = mkOption {
diff --git a/nixos/modules/services/monitoring/dd-agent/dd-agent.nix b/nixos/modules/services/monitoring/dd-agent/dd-agent.nix
index 5e6d0d401eb1b..5ee6b092a6a47 100644
--- a/nixos/modules/services/monitoring/dd-agent/dd-agent.nix
+++ b/nixos/modules/services/monitoring/dd-agent/dd-agent.nix
@@ -145,41 +145,40 @@ in {
       description = "The hostname to show in the Datadog dashboard (optional)";
       default = null;
       example = "mymachine.mydomain";
-      type = types.uniq (types.nullOr types.string);
+      type = types.nullOr types.str;
     };
 
     postgresqlConfig = mkOption {
       description = "Datadog PostgreSQL integration configuration";
       default = null;
-      type = types.uniq (types.nullOr types.string);
+      type = types.nullOr types.lines;
     };
 
     nginxConfig = mkOption {
       description = "Datadog nginx integration configuration";
       default = null;
-      type = types.uniq (types.nullOr types.string);
+      type = types.nullOr types.lines;
     };
 
     mongoConfig = mkOption {
       description = "MongoDB integration configuration";
       default = null;
-      type = types.uniq (types.nullOr types.string);
+      type = types.nullOr types.lines;
     };
 
     jmxConfig = mkOption {
       description = "JMX integration configuration";
       default = null;
-      type = types.uniq (types.nullOr types.string);
+      type = types.nullOr types.lines;
     };
 
     processConfig = mkOption {
       description = ''
         Process integration configuration
-
-        See http://docs.datadoghq.com/integrations/process/
+        See <link xlink:href="https://docs.datadoghq.com/integrations/process/"/>
       '';
       default = null;
-      type = types.uniq (types.nullOr types.string);
+      type = types.nullOr types.lines;
     };
 
   };
diff --git a/nixos/modules/services/monitoring/graphite.nix b/nixos/modules/services/monitoring/graphite.nix
index d6473220c1409..64cb6c3da1e57 100644
--- a/nixos/modules/services/monitoring/graphite.nix
+++ b/nixos/modules/services/monitoring/graphite.nix
@@ -11,7 +11,7 @@ let
 
   graphiteLocalSettingsDir = pkgs.runCommand "graphite_local_settings" {
       inherit graphiteLocalSettings;
-      preferLocalBuild = true; 
+      preferLocalBuild = true;
     } ''
     mkdir -p $out
     ln -s $graphiteLocalSettings $out/graphite_local_settings.py
@@ -215,7 +215,7 @@ in {
       storageAggregation = mkOption {
         description = "Defines how to aggregate data to lower-precision retentions.";
         default = null;
-        type = types.uniq (types.nullOr types.string);
+        type = types.nullOr types.str;
         example = ''
           [all_min]
           pattern = \.min$
@@ -227,7 +227,7 @@ in {
       storageSchemas = mkOption {
         description = "Defines retention rates for storing metrics.";
         default = "";
-        type = types.uniq (types.nullOr types.string);
+        type = types.nullOr types.str;
         example = ''
           [apache_busyWorkers]
           pattern = ^servers\.www.*\.workers\.busyWorkers$
@@ -238,14 +238,14 @@ in {
       blacklist = mkOption {
         description = "Any metrics received which match one of the experssions will be dropped.";
         default = null;
-        type = types.uniq (types.nullOr types.string);
+        type = types.nullOr types.str;
         example = "^some\.noisy\.metric\.prefix\..*";
       };
 
       whitelist = mkOption {
         description = "Only metrics received which match one of the experssions will be persisted.";
         default = null;
-        type = types.uniq (types.nullOr types.string);
+        type = types.nullOr types.str;
         example = ".*";
       };
 
@@ -255,7 +255,7 @@ in {
           in a search and replace fashion.
         '';
         default = null;
-        type = types.uniq (types.nullOr types.string);
+        type = types.nullOr types.str;
         example = ''
           [post]
           _sum$ =
@@ -272,7 +272,7 @@ in {
       relayRules = mkOption {
         description = "Relay rules are used to send certain metrics to a certain backend.";
         default = null;
-        type = types.uniq (types.nullOr types.string);
+        type = types.nullOr types.str;
         example = ''
           [example]
           pattern = ^mydata\.foo\..+
@@ -289,7 +289,7 @@ in {
       aggregationRules = mkOption {
         description = "Defines if and how received metrics will be aggregated.";
         default = null;
-        type = types.uniq (types.nullOr types.string);
+        type = types.nullOr types.str;
         example = ''
           <env>.applications.<app>.all.requests (60) = sum <env>.applications.<app>.*.requests
           <env>.applications.<app>.all.latency (60) = avg <env>.applications.<app>.*.latency
diff --git a/nixos/modules/services/monitoring/heapster.nix b/nixos/modules/services/monitoring/heapster.nix
index fbdff2eb5dbe4..6da0831b4c5f6 100644
--- a/nixos/modules/services/monitoring/heapster.nix
+++ b/nixos/modules/services/monitoring/heapster.nix
@@ -15,19 +15,19 @@ in {
     source = mkOption {
       description = "Heapster metric source";
       example = "kubernetes:https://kubernetes.default";
-      type = types.string;
+      type = types.str;
     };
 
     sink = mkOption {
       description = "Heapster metic sink";
       example = "influxdb:http://localhost:8086";
-      type = types.string;
+      type = types.str;
     };
 
     extraOpts = mkOption {
       description = "Heapster extra options";
       default = "";
-      type = types.string;
+      type = types.separatedString " ";
     };
 
     package = mkOption {
diff --git a/nixos/modules/services/monitoring/kapacitor.nix b/nixos/modules/services/monitoring/kapacitor.nix
index 0f236d25c9ed6..9b4ff3c56124d 100644
--- a/nixos/modules/services/monitoring/kapacitor.nix
+++ b/nixos/modules/services/monitoring/kapacitor.nix
@@ -116,17 +116,17 @@ in
       url = mkOption {
         description = "The URL to an InfluxDB server that serves as the default database";
         example = "http://localhost:8086";
-        type = types.string;
+        type = types.str;
       };
 
       username = mkOption {
         description = "The username to connect to the remote InfluxDB server";
-        type = types.string;
+        type = types.str;
       };
 
       password = mkOption {
         description = "The password to connect to the remote InfluxDB server";
-        type = types.string;
+        type = types.str;
       };
     };
 
@@ -137,7 +137,7 @@ in
         description = "The URL to the Alerta REST API";
         default = "http://localhost:5000";
         example = "http://localhost:5000";
-        type = types.string;
+        type = types.str;
       };
 
       token = mkOption {
diff --git a/nixos/modules/services/monitoring/munin.nix b/nixos/modules/services/monitoring/munin.nix
index ffe223fedbe13..8af0650c7380d 100644
--- a/nixos/modules/services/monitoring/munin.nix
+++ b/nixos/modules/services/monitoring/munin.nix
@@ -233,7 +233,7 @@ in
         # In the meantime this at least suppresses a useless graph full of
         # NaNs in the output.
         default = [ "munin_stats" ];
-        type = with types; listOf string;
+        type = with types; listOf str;
         description = ''
           Munin plugins to disable, even if
           <literal>munin-node-configure --suggest</literal> tries to enable
diff --git a/nixos/modules/services/monitoring/prometheus/exporters.nix b/nixos/modules/services/monitoring/prometheus/exporters.nix
index 2ab8910ff9dbb..b69310c34ff51 100644
--- a/nixos/modules/services/monitoring/prometheus/exporters.nix
+++ b/nixos/modules/services/monitoring/prometheus/exporters.nix
@@ -132,14 +132,10 @@ let
     in
     mkIf conf.enable {
       warnings = conf.warnings or [];
-      users.users = (mkIf (conf.user == "${name}-exporter" && !enableDynamicUser) {
-        "${name}-exporter" = {
-          description = ''
-            Prometheus ${name} exporter service user
-          '';
-          isSystemUser = true;
-          inherit (conf) group;
-        };
+      users.users."${name}-exporter" = (mkIf (conf.user == "${name}-exporter" && !enableDynamicUser) {
+        description = "Prometheus ${name} exporter service user";
+        isSystemUser = true;
+        inherit (conf) group;
       });
       users.groups = (mkIf (conf.group == "${name}-exporter" && !enableDynamicUser) {
         "${name}-exporter" = {};
diff --git a/nixos/modules/services/monitoring/prometheus/exporters/node.nix b/nixos/modules/services/monitoring/prometheus/exporters/node.nix
index 7e394e8463e03..adc2abe0b91c8 100644
--- a/nixos/modules/services/monitoring/prometheus/exporters/node.nix
+++ b/nixos/modules/services/monitoring/prometheus/exporters/node.nix
@@ -9,7 +9,7 @@ in
   port = 9100;
   extraOpts = {
     enabledCollectors = mkOption {
-      type = types.listOf types.string;
+      type = types.listOf types.str;
       default = [];
       example = ''[ "systemd" ]'';
       description = ''
diff --git a/nixos/modules/services/monitoring/riemann-tools.nix b/nixos/modules/services/monitoring/riemann-tools.nix
index 2b647b6b1ade8..86a11694e7b49 100644
--- a/nixos/modules/services/monitoring/riemann-tools.nix
+++ b/nixos/modules/services/monitoring/riemann-tools.nix
@@ -35,7 +35,7 @@ in {
         '';
       };
       extraArgs = mkOption {
-        type = types.listOf types.string;
+        type = types.listOf types.str;
         default = [];
         description = ''
           A list of commandline-switches forwarded to a riemann-tool.
diff --git a/nixos/modules/services/monitoring/scollector.nix b/nixos/modules/services/monitoring/scollector.nix
index dc0899c7e6845..38cd2213de763 100644
--- a/nixos/modules/services/monitoring/scollector.nix
+++ b/nixos/modules/services/monitoring/scollector.nix
@@ -51,7 +51,7 @@ in {
       };
 
       user = mkOption {
-        type = types.string;
+        type = types.str;
         default = "scollector";
         description = ''
           User account under which scollector runs.
@@ -59,7 +59,7 @@ in {
       };
 
       group = mkOption {
-        type = types.string;
+        type = types.str;
         default = "scollector";
         description = ''
           Group account under which scollector runs.
@@ -67,7 +67,7 @@ in {
       };
 
       bosunHost = mkOption {
-        type = types.string;
+        type = types.str;
         default = "localhost:8070";
         description = ''
           Host and port of the bosun server that will store the collected
diff --git a/nixos/modules/services/monitoring/ups.nix b/nixos/modules/services/monitoring/ups.nix
index 429b40227d47f..1bdc4e4410f13 100644
--- a/nixos/modules/services/monitoring/ups.nix
+++ b/nixos/modules/services/monitoring/ups.nix
@@ -55,7 +55,7 @@ let
 
       description = mkOption {
         default = "";
-        type = types.string;
+        type = types.str;
         description = ''
           Description of the UPS.
         '';
@@ -71,7 +71,7 @@ let
 
       summary = mkOption {
         default = "";
-        type = types.string;
+        type = types.lines;
         description = ''
           Lines which would be added inside ups.conf for handling this UPS.
         '';
diff --git a/nixos/modules/services/monitoring/uptime.nix b/nixos/modules/services/monitoring/uptime.nix
index c0993f3bc2e7c..245badc3e44f9 100644
--- a/nixos/modules/services/monitoring/uptime.nix
+++ b/nixos/modules/services/monitoring/uptime.nix
@@ -57,7 +57,7 @@ in {
     nodeEnv = mkOption {
       description = "The node environment to run in (development, production, etc.)";
 
-      type = types.string;
+      type = types.str;
 
       default = "production";
     };
diff --git a/nixos/modules/services/network-filesystems/ceph.nix b/nixos/modules/services/network-filesystems/ceph.nix
index 02f945afa4a53..0191b0640f002 100644
--- a/nixos/modules/services/network-filesystems/ceph.nix
+++ b/nixos/modules/services/network-filesystems/ceph.nix
@@ -9,7 +9,7 @@ let
   translateOption = replaceStrings upperChars (map (s: " ${s}") lowerChars);
   generateDaemonList = (daemonType: daemons: extraServiceConfig:
     mkMerge (
-      map (daemon: 
+      map (daemon:
         { "ceph-${daemonType}-${daemon}" = generateServiceFile daemonType daemon cfg.global.clusterName ceph extraServiceConfig; }
       ) daemons
     )
@@ -17,8 +17,8 @@ let
   generateServiceFile = (daemonType: daemonId: clusterName: ceph: extraServiceConfig: {
     enable = true;
     description = "Ceph ${builtins.replaceStrings lowerChars upperChars daemonType} daemon ${daemonId}";
-    after = [ "network-online.target" "local-fs.target" "time-sync.target" ] ++ optional (daemonType == "osd") "ceph-mon.target";
-    wants = [ "network-online.target" "local-fs.target" "time-sync.target" ];
+    after = [ "network-online.target" "time-sync.target" ] ++ optional (daemonType == "osd") "ceph-mon.target";
+    wants = [ "network-online.target" "time-sync.target" ];
     partOf = [ "ceph-${daemonType}.target" ];
     wantedBy = [ "ceph-${daemonType}.target" ];
 
@@ -41,7 +41,7 @@ let
         daemonPath="/var/lib/ceph/${if daemonType == "rgw" then "radosgw" else daemonType}/${clusterName}-${daemonId}"
         if [ ! -d ''$daemonPath ]; then
           mkdir -m 755 -p ''$daemonPath
-          chown -R ceph:ceph ''$daemonPath 
+          chown -R ceph:ceph ''$daemonPath
         fi
       '';
     } // optionalAttrs (daemonType == "osd") { path = [ pkgs.getopt ]; }
@@ -55,7 +55,7 @@ let
       };
     }
   );
-in 
+in
 {
   options.services.ceph = {
     # Ceph has a monolithic configuration file but different sections for
@@ -86,7 +86,7 @@ in
         type = with types; nullOr commas;
         default = null;
         example = ''
-          node0, node1, node2 
+          node0, node1, node2
         '';
         description = ''
           List of hosts that will be used as monitors at startup.
@@ -313,9 +313,9 @@ in
       }
     ];
 
-    warnings = optional (cfg.global.monInitialMembers == null) 
+    warnings = optional (cfg.global.monInitialMembers == null)
       ''Not setting up a list of members in monInitialMembers requires that you set the host variable for each mon daemon or else the cluster won't function'';
-    
+
     environment.etc."ceph/ceph.conf".text = let
       # Translate camelCaseOptions to the expected camel case option for ceph.conf
       translatedGlobalConfig = mapAttrs' (name: value: nameValuePair (translateOption name) value) cfg.global;
@@ -344,13 +344,13 @@ in
     };
 
     systemd.services = let
-      services = [] 
-        ++ optional cfg.mon.enable (generateDaemonList "mon" cfg.mon.daemons { RestartSec = "10"; }) 
+      services = []
+        ++ optional cfg.mon.enable (generateDaemonList "mon" cfg.mon.daemons { RestartSec = "10"; })
         ++ optional cfg.mds.enable (generateDaemonList "mds" cfg.mds.daemons { StartLimitBurst = "3"; })
         ++ optional cfg.osd.enable (generateDaemonList "osd" cfg.osd.daemons { StartLimitBurst = "30"; RestartSec = "20s"; })
         ++ optional cfg.rgw.enable (generateDaemonList "rgw" cfg.rgw.daemons { })
         ++ optional cfg.mgr.enable (generateDaemonList "mgr" cfg.mgr.daemons { StartLimitBurst = "3"; });
-      in 
+      in
         mkMerge services;
 
     systemd.targets = let
diff --git a/nixos/modules/services/network-filesystems/davfs2.nix b/nixos/modules/services/network-filesystems/davfs2.nix
index c16e12378d758..100d458d536c0 100644
--- a/nixos/modules/services/network-filesystems/davfs2.nix
+++ b/nixos/modules/services/network-filesystems/davfs2.nix
@@ -21,7 +21,7 @@ in
     };
 
     davUser = mkOption {
-      type = types.string;
+      type = types.str;
       default = "davfs2";
       description = ''
         When invoked by root the mount.davfs daemon will run as this user.
@@ -30,7 +30,7 @@ in
     };
 
     davGroup = mkOption {
-      type = types.string;
+      type = types.str;
       default = "davfs2";
       description = ''
         The group of the running mount.davfs daemon. Ordinary users must be
diff --git a/nixos/modules/services/network-filesystems/drbd.nix b/nixos/modules/services/network-filesystems/drbd.nix
index 57b1fbb597c7a..4ab74ed8e1c0e 100644
--- a/nixos/modules/services/network-filesystems/drbd.nix
+++ b/nixos/modules/services/network-filesystems/drbd.nix
@@ -23,7 +23,7 @@ let cfg = config.services.drbd; in
 
     services.drbd.config = mkOption {
       default = "";
-      type = types.string;
+      type = types.lines;
       description = ''
         Contents of the <filename>drbd.conf</filename> configuration file.
       '';
diff --git a/nixos/modules/services/network-filesystems/glusterfs.nix b/nixos/modules/services/network-filesystems/glusterfs.nix
index 00875c6c4a183..d70092999f674 100644
--- a/nixos/modules/services/network-filesystems/glusterfs.nix
+++ b/nixos/modules/services/network-filesystems/glusterfs.nix
@@ -156,7 +156,7 @@ in
       wantedBy = [ "multi-user.target" ];
 
       requires = lib.optional cfg.useRpcbind "rpcbind.service";
-      after = [ "network.target" "local-fs.target" ] ++ lib.optional cfg.useRpcbind "rpcbind.service";
+      after = [ "network.target" ] ++ lib.optional cfg.useRpcbind "rpcbind.service";
 
       preStart = ''
         install -m 0755 -d /var/log/glusterfs
diff --git a/nixos/modules/services/network-filesystems/ipfs.nix b/nixos/modules/services/network-filesystems/ipfs.nix
index bbbfcf6a47385..b6d881afd7bd9 100644
--- a/nixos/modules/services/network-filesystems/ipfs.nix
+++ b/nixos/modules/services/network-filesystems/ipfs.nix
@@ -236,7 +236,6 @@ in {
     systemd.services.ipfs-init = recursiveUpdate commonEnv {
       description = "IPFS Initializer";
 
-      after = [ "local-fs.target" ];
       before = [ "ipfs.service" "ipfs-offline.service" "ipfs-norouting.service" ];
 
       script = ''
@@ -263,21 +262,21 @@ in {
     systemd.services.ipfs = recursiveUpdate baseService {
       description = "IPFS Daemon";
       wantedBy = mkIf (cfg.defaultMode == "online") [ "multi-user.target" ];
-      after = [ "network.target" "local-fs.target" "ipfs-init.service" ];
+      after = [ "network.target" "ipfs-init.service" ];
       conflicts = [ "ipfs-offline.service" "ipfs-norouting.service"];
     };
 
     systemd.services.ipfs-offline = recursiveUpdate baseService {
       description = "IPFS Daemon (offline mode)";
       wantedBy = mkIf (cfg.defaultMode == "offline") [ "multi-user.target" ];
-      after = [ "local-fs.target" "ipfs-init.service" ];
+      after = [ "ipfs-init.service" ];
       conflicts = [ "ipfs.service" "ipfs-norouting.service"];
     };
 
     systemd.services.ipfs-norouting = recursiveUpdate baseService {
       description = "IPFS Daemon (no routing mode)";
       wantedBy = mkIf (cfg.defaultMode == "norouting") [ "multi-user.target" ];
-      after = [ "local-fs.target" "ipfs-init.service" ];
+      after = [ "ipfs-init.service" ];
       conflicts = [ "ipfs.service" "ipfs-offline.service"];
     };
 
diff --git a/nixos/modules/services/network-filesystems/rsyncd.nix b/nixos/modules/services/network-filesystems/rsyncd.nix
index 054057d52ab1e..b17ec3aa93008 100644
--- a/nixos/modules/services/network-filesystems/rsyncd.nix
+++ b/nixos/modules/services/network-filesystems/rsyncd.nix
@@ -35,7 +35,7 @@ in
       };
 
       motd = mkOption {
-        type = types.string;
+        type = types.str;
         default = "";
         description = ''
           Message of the day to display to clients on each connect.
diff --git a/nixos/modules/services/network-filesystems/yandex-disk.nix b/nixos/modules/services/network-filesystems/yandex-disk.nix
index e93f45b49867b..0aa01ef9e6d92 100644
--- a/nixos/modules/services/network-filesystems/yandex-disk.nix
+++ b/nixos/modules/services/network-filesystems/yandex-disk.nix
@@ -29,7 +29,7 @@ in
 
       username = mkOption {
         default = "";
-        type = types.string;
+        type = types.str;
         description = ''
           Your yandex.com login name.
         '';
@@ -37,7 +37,7 @@ in
 
       password = mkOption {
         default = "";
-        type = types.string;
+        type = types.str;
         description = ''
           Your yandex.com password. Warning: it will be world-readable in /nix/store.
         '';
@@ -57,7 +57,7 @@ in
 
       excludes = mkOption {
         default = "";
-        type = types.string;
+        type = types.commas;
         example = "data,backup";
         description = ''
           Comma-separated list of directories which are excluded from synchronization.
diff --git a/nixos/modules/services/networking/aria2.nix b/nixos/modules/services/networking/aria2.nix
index 53829bf188637..156fef144791e 100644
--- a/nixos/modules/services/networking/aria2.nix
+++ b/nixos/modules/services/networking/aria2.nix
@@ -47,8 +47,8 @@ in
         '';
       };
       downloadDir = mkOption {
-        type = types.string;
-        default = "${downloadDir}";
+        type = types.path;
+        default = downloadDir;
         description = ''
           Directory to store downloaded files.
         '';
@@ -66,7 +66,7 @@ in
         description = "Specify a port number for JSON-RPC/XML-RPC server to listen to. Possible Values: 1024-65535";
       };
       rpcSecret = mkOption {
-        type = types.string;
+        type = types.str;
         default = "aria2rpc";
         description = ''
           Set RPC secret authorization token.
@@ -74,7 +74,7 @@ in
         '';
       };
       extraArguments = mkOption {
-        type = types.string;
+        type = types.separatedString " ";
         example = "--rpc-listen-all --remote-time=true";
         default = "";
         description = ''
@@ -109,7 +109,7 @@ in
 
     systemd.services.aria2 = {
       description = "aria2 Service";
-      after = [ "local-fs.target" "network.target" ];
+      after = [ "network.target" ];
       wantedBy = [ "multi-user.target" ];
       preStart = ''
         if [[ ! -e "${sessionFile}" ]]
diff --git a/nixos/modules/services/networking/autossh.nix b/nixos/modules/services/networking/autossh.nix
index a098a155e9910..a8d9a027e9fa1 100644
--- a/nixos/modules/services/networking/autossh.nix
+++ b/nixos/modules/services/networking/autossh.nix
@@ -20,12 +20,12 @@ in
         type = types.listOf (types.submodule {
           options = {
             name = mkOption {
-              type = types.string;
+              type = types.str;
               example = "socks-peer";
               description = "Name of the local AutoSSH session";
             };
             user = mkOption {
-              type = types.string;
+              type = types.str;
               example = "bill";
               description = "Name of the user the AutoSSH session should run as";
             };
@@ -40,7 +40,7 @@ in
               '';
             };
             extraArguments = mkOption {
-              type = types.string;
+              type = types.separatedString " ";
               example = "-N -D4343 bill@socks.example.net";
               description = ''
                 Arguments to be passed to AutoSSH and retransmitted to SSH
diff --git a/nixos/modules/services/networking/charybdis.nix b/nixos/modules/services/networking/charybdis.nix
index e3aba063f87b9..da26246e703e0 100644
--- a/nixos/modules/services/networking/charybdis.nix
+++ b/nixos/modules/services/networking/charybdis.nix
@@ -21,14 +21,14 @@ in
       enable = mkEnableOption "Charybdis IRC daemon";
 
       config = mkOption {
-        type = types.string;
+        type = types.str;
         description = ''
           Charybdis IRC daemon configuration file.
         '';
       };
 
       statedir = mkOption {
-        type = types.string;
+        type = types.path;
         default = "/var/lib/charybdis";
         description = ''
           Location of the state directory of charybdis.
@@ -36,7 +36,7 @@ in
       };
 
       user = mkOption {
-        type = types.string;
+        type = types.str;
         default = "ircd";
         description = ''
           Charybdis IRC daemon user.
@@ -44,7 +44,7 @@ in
       };
 
       group = mkOption {
-        type = types.string;
+        type = types.str;
         default = "ircd";
         description = ''
           Charybdis IRC daemon group.
@@ -101,7 +101,7 @@ in
       };
 
     }
-    
+
     (mkIf (cfg.motd != null) {
       environment.etc."charybdis/ircd.motd".text = cfg.motd;
     })
diff --git a/nixos/modules/services/networking/connman.nix b/nixos/modules/services/networking/connman.nix
index 700a7e6d02275..31127f7904996 100644
--- a/nixos/modules/services/networking/connman.nix
+++ b/nixos/modules/services/networking/connman.nix
@@ -45,7 +45,7 @@ in {
       };
 
       networkInterfaceBlacklist = mkOption {
-        type = with types; listOf string;
+        type = with types; listOf str;
         default = [ "vmnet" "vboxnet" "virbr" "ifb" "ve" ];
         description = ''
           Default blacklisted interfaces, this includes NixOS containers interfaces (ve).
@@ -53,7 +53,7 @@ in {
       };
 
       extraFlags = mkOption {
-        type = with types; listOf string;
+        type = with types; listOf str;
         default = [ ];
         example = [ "--nodnsproxy" ];
         description = ''
diff --git a/nixos/modules/services/networking/gogoclient.nix b/nixos/modules/services/networking/gogoclient.nix
index 9d16f0efb4354..c9b03bca71122 100644
--- a/nixos/modules/services/networking/gogoclient.nix
+++ b/nixos/modules/services/networking/gogoclient.nix
@@ -34,7 +34,7 @@ in
 
       password = mkOption {
         default = "";
-        type = types.string;
+        type = types.str;
         description = ''
           Path to a file (as a string), containing your gogoNET password, if any.
         '';
diff --git a/nixos/modules/services/networking/hostapd.nix b/nixos/modules/services/networking/hostapd.nix
index 54a5bed2563fa..2915b54f05b44 100644
--- a/nixos/modules/services/networking/hostapd.nix
+++ b/nixos/modules/services/networking/hostapd.nix
@@ -81,7 +81,7 @@ in
       driver = mkOption {
         default = "nl80211";
         example = "hostapd";
-        type = types.string;
+        type = types.str;
         description = ''
           Which driver <command>hostapd</command> will use.
           Most applications will probably use the default.
@@ -91,7 +91,7 @@ in
       ssid = mkOption {
         default = "nixos";
         example = "mySpecialSSID";
-        type = types.string;
+        type = types.str;
         description = "SSID to be used in IEEE 802.11 management frames.";
       };
 
@@ -119,7 +119,7 @@ in
       group = mkOption {
         default = "wheel";
         example = "network";
-        type = types.string;
+        type = types.str;
         description = ''
           Members of this group can control <command>hostapd</command>.
         '';
@@ -135,7 +135,7 @@ in
       wpaPassphrase = mkOption {
         default = "my_sekret";
         example = "any_64_char_string";
-        type = types.string;
+        type = types.str;
         description = ''
           WPA-PSK (pre-shared-key) passphrase. Clients will need this
           passphrase to associate with this access point.
diff --git a/nixos/modules/services/networking/jormungandr.nix b/nixos/modules/services/networking/jormungandr.nix
index 0c66b85fe8a5f..68f1e9af9fff1 100644
--- a/nixos/modules/services/networking/jormungandr.nix
+++ b/nixos/modules/services/networking/jormungandr.nix
@@ -54,7 +54,7 @@ in {
      };
 
       genesisBlockHash = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = null;
         example = "d70495af81ae8600aca3e642b2427327cb6001ec4d7a0037e96a00dabed163f9";
         description = ''
diff --git a/nixos/modules/services/networking/kippo.nix b/nixos/modules/services/networking/kippo.nix
index a04f77c9a525a..bdea6a1d1caab 100644
--- a/nixos/modules/services/networking/kippo.nix
+++ b/nixos/modules/services/networking/kippo.nix
@@ -26,22 +26,22 @@ in
       };
       hostname = mkOption {
         default = "nas3";
-        type = types.string;
+        type = types.str;
         description = ''Hostname for kippo to present to SSH login'';
       };
       varPath = mkOption {
         default = "/var/lib/kippo";
-        type = types.string;
+        type = types.path;
         description = ''Path of read/write files needed for operation and configuration.'';
       };
       logPath = mkOption {
         default = "/var/log/kippo";
-        type = types.string;
+        type = types.path;
         description = ''Path of log files needed for operation and configuration.'';
       };
       pidPath = mkOption {
         default = "/run/kippo";
-        type = types.string;
+        type = types.path;
         description = ''Path of pid files needed for operation.'';
       };
       extraConfig = mkOption {
@@ -109,8 +109,8 @@ in
 
       serviceConfig.ExecStart = "${pkgs.kippo.twisted}/bin/twistd -y ${pkgs.kippo}/src/kippo.tac --syslog --rundir=${cfg.varPath}/ --pidfile=${cfg.pidPath}/kippo.pid --prefix=kippo -n";
       serviceConfig.PermissionsStartOnly = true;
-      serviceConfig.User = "kippo"; 
-      serviceConfig.Group = "kippo"; 
+      serviceConfig.User = "kippo";
+      serviceConfig.Group = "kippo";
     };
 };
 }
diff --git a/nixos/modules/services/networking/logmein-hamachi.nix b/nixos/modules/services/networking/logmein-hamachi.nix
index 406626a8a343a..11cbdda2f845b 100644
--- a/nixos/modules/services/networking/logmein-hamachi.nix
+++ b/nixos/modules/services/networking/logmein-hamachi.nix
@@ -35,7 +35,7 @@ in
       description = "LogMeIn Hamachi Daemon";
 
       wantedBy = [ "multi-user.target" ];
-      after = [ "network.target" "local-fs.target" ];
+      after = [ "network.target" ];
 
       serviceConfig = {
         Type = "forking";
diff --git a/nixos/modules/services/networking/minidlna.nix b/nixos/modules/services/networking/minidlna.nix
index ed0c1044a5709..0947471adbc94 100644
--- a/nixos/modules/services/networking/minidlna.nix
+++ b/nixos/modules/services/networking/minidlna.nix
@@ -96,7 +96,7 @@ in
       { description = "MiniDLNA Server";
 
         wantedBy = [ "multi-user.target" ];
-        after = [ "network.target" "local-fs.target" ];
+        after = [ "network.target" ];
 
         serviceConfig =
           { User = "minidlna";
diff --git a/nixos/modules/services/networking/morty.nix b/nixos/modules/services/networking/morty.nix
index cc81e27e93996..1b3084fe9abbc 100644
--- a/nixos/modules/services/networking/morty.nix
+++ b/nixos/modules/services/networking/morty.nix
@@ -27,7 +27,7 @@ in
       };
 
       key = mkOption {
-        type = types.string;
+        type = types.str;
         default = "";
         description = "HMAC url validation key (hexadecimal encoded).
 	Leave blank to disable. Without validation key, anyone can
@@ -56,7 +56,7 @@ in
       };
 
       listenAddress = mkOption {
-        type = types.string;
+        type = types.str;
         default = "127.0.0.1";
         description = "The address on which the service listens";
         defaultText = "127.0.0.1 (localhost)";
diff --git a/nixos/modules/services/networking/mosquitto.nix b/nixos/modules/services/networking/mosquitto.nix
index 1d49c137723ca..d2feb93e2b723 100644
--- a/nixos/modules/services/networking/mosquitto.nix
+++ b/nixos/modules/services/networking/mosquitto.nix
@@ -49,7 +49,7 @@ in
       host = mkOption {
         default = "127.0.0.1";
         example = "0.0.0.0";
-        type = types.string;
+        type = types.str;
         description = ''
           Host to listen on without SSL.
         '';
@@ -88,7 +88,7 @@ in
         host = mkOption {
           default = "0.0.0.0";
           example = "localhost";
-          type = types.string;
+          type = types.str;
           description = ''
             Host to listen on with SSL.
           '';
@@ -135,7 +135,7 @@ in
             };
 
             acl = mkOption {
-              type = types.listOf types.string;
+              type = types.listOf types.str;
               example = [ "topic read A/B" "topic A/#" ];
               description = ''
                 Control client access to topics on the broker.
diff --git a/nixos/modules/services/networking/networkmanager.nix b/nixos/modules/services/networking/networkmanager.nix
index 649c926ae9701..2061c02fffbdb 100644
--- a/nixos/modules/services/networking/networkmanager.nix
+++ b/nixos/modules/services/networking/networkmanager.nix
@@ -156,7 +156,7 @@ in {
       };
 
       unmanaged = mkOption {
-        type = types.listOf types.string;
+        type = types.listOf types.str;
         default = [];
         description = ''
           List of interfaces that will not be managed by NetworkManager.
diff --git a/nixos/modules/services/networking/nix-serve.nix b/nixos/modules/services/networking/nix-serve.nix
index ca458d089dcc3..347d87b3f385f 100644
--- a/nixos/modules/services/networking/nix-serve.nix
+++ b/nixos/modules/services/networking/nix-serve.nix
@@ -19,7 +19,7 @@ in
       };
 
       bindAddress = mkOption {
-        type = types.string;
+        type = types.str;
         default = "0.0.0.0";
         description = ''
           IP address where nix-serve will bind its listening socket.
@@ -44,7 +44,7 @@ in
       };
 
       extraParams = mkOption {
-        type = types.string;
+        type = types.separatedString " ";
         default = "";
         description = ''
           Extra command line parameters for nix-serve.
diff --git a/nixos/modules/services/networking/nylon.nix b/nixos/modules/services/networking/nylon.nix
index b061ce34ed2cf..7c171281a9262 100644
--- a/nixos/modules/services/networking/nylon.nix
+++ b/nixos/modules/services/networking/nylon.nix
@@ -65,7 +65,7 @@ let
       };
 
       acceptInterface = mkOption {
-        type = types.string;
+        type = types.str;
         default = "lo";
         description = ''
           Tell nylon which interface to listen for client requests on, default is "lo".
@@ -73,7 +73,7 @@ let
       };
 
       bindInterface = mkOption {
-        type = types.string;
+        type = types.str;
         default = "enp3s0f0";
         description = ''
           Tell nylon which interface to use as an uplink, default is "enp3s0f0".
@@ -89,7 +89,7 @@ let
       };
 
       allowedIPRanges = mkOption {
-        type = with types; listOf string;
+        type = with types; listOf str;
         default = [ "192.168.0.0/16" "127.0.0.1/8" "172.16.0.1/12" "10.0.0.0/8" ];
         description = ''
            Allowed client IP ranges are evaluated first, defaults to ARIN IPv4 private ranges:
@@ -98,7 +98,7 @@ let
       };
 
       deniedIPRanges = mkOption {
-        type = with types; listOf string;
+        type = with types; listOf str;
         default = [ "0.0.0.0/0" ];
         description = ''
           Denied client IP ranges, these gets evaluated after the allowed IP ranges, defaults to all IPv4 addresses:
diff --git a/nixos/modules/services/networking/openntpd.nix b/nixos/modules/services/networking/openntpd.nix
index 57638ebc9c018..f3920aa806460 100644
--- a/nixos/modules/services/networking/openntpd.nix
+++ b/nixos/modules/services/networking/openntpd.nix
@@ -40,7 +40,7 @@ in
     };
 
     extraOptions = mkOption {
-      type = with types; string;
+      type = with types; separatedString " ";
       default = "";
       example = "-s";
       description = ''
diff --git a/nixos/modules/services/networking/openvpn.nix b/nixos/modules/services/networking/openvpn.nix
index f47122ee70bf5..05be97e66a3d4 100644
--- a/nixos/modules/services/networking/openvpn.nix
+++ b/nixos/modules/services/networking/openvpn.nix
@@ -182,12 +182,12 @@ in
               options = {
                 username = mkOption {
                   description = "The username to store inside the credentials file.";
-                  type = types.string;
+                  type = types.str;
                 };
 
                 password = mkOption {
                   description = "The password to store inside the credentials file.";
-                  type = types.string;
+                  type = types.str;
                 };
               };
             });
diff --git a/nixos/modules/services/networking/ostinato.nix b/nixos/modules/services/networking/ostinato.nix
index 13f784dc53c18..5e8cce5b89aaf 100644
--- a/nixos/modules/services/networking/ostinato.nix
+++ b/nixos/modules/services/networking/ostinato.nix
@@ -50,7 +50,7 @@ in
 
       rpcServer = {
         address = mkOption {
-          type = types.string;
+          type = types.str;
           default = "0.0.0.0";
           description = ''
             By default, the Drone RPC server will listen on all interfaces and
@@ -63,7 +63,7 @@ in
 
       portList = {
         include = mkOption {
-          type = types.listOf types.string;
+          type = types.listOf types.str;
           default = [];
           example = ''[ "eth*" "lo*" ]'';
           description = ''
diff --git a/nixos/modules/services/networking/polipo.nix b/nixos/modules/services/networking/polipo.nix
index 529115a1c6e14..dbe3b7380970b 100644
--- a/nixos/modules/services/networking/polipo.nix
+++ b/nixos/modules/services/networking/polipo.nix
@@ -30,7 +30,7 @@ in
       };
 
       proxyAddress = mkOption {
-        type = types.string;
+        type = types.str;
         default = "127.0.0.1";
         description = "IP address on which Polipo will listen.";
       };
@@ -51,7 +51,7 @@ in
       };
 
       parentProxy = mkOption {
-        type = types.string;
+        type = types.str;
         default = "";
         example = "localhost:8124";
         description = ''
@@ -61,7 +61,7 @@ in
       };
 
       socksParentProxy = mkOption {
-        type = types.string;
+        type = types.str;
         default = "";
         example = "localhost:9050";
         description = ''
@@ -74,7 +74,7 @@ in
         type = types.lines;
         default = "";
         description = ''
-          Polio configuration. Contents will be added 
+          Polio configuration. Contents will be added
           verbatim to the configuration file.
         '';
       };
@@ -111,4 +111,4 @@ in
 
   };
 
-}
\ No newline at end of file
+}
diff --git a/nixos/modules/services/networking/pptpd.nix b/nixos/modules/services/networking/pptpd.nix
index d8b9e8f8341a5..3e7753b9dd352 100644
--- a/nixos/modules/services/networking/pptpd.nix
+++ b/nixos/modules/services/networking/pptpd.nix
@@ -8,13 +8,13 @@ with lib;
       enable = mkEnableOption "pptpd, the Point-to-Point Tunneling Protocol daemon";
 
       serverIp = mkOption {
-        type        = types.string;
+        type        = types.str;
         description = "The server-side IP address.";
         default     = "10.124.124.1";
       };
 
       clientIpRange = mkOption {
-        type        = types.string;
+        type        = types.str;
         description = "The range from which client IPs are drawn.";
         default     = "10.124.124.2-11";
       };
diff --git a/nixos/modules/services/networking/prosody.nix b/nixos/modules/services/networking/prosody.nix
index 40bd9015b1eb0..1ae063aa6bb52 100644
--- a/nixos/modules/services/networking/prosody.nix
+++ b/nixos/modules/services/networking/prosody.nix
@@ -297,7 +297,7 @@ in
       };
 
       dataDir = mkOption {
-        type = types.string;
+        type = types.path;
         description = "Directory where Prosody stores its data";
         default = "/var/lib/prosody";
       };
diff --git a/nixos/modules/services/networking/radicale.nix b/nixos/modules/services/networking/radicale.nix
index d6fabbcd47001..1daced4a6c70e 100644
--- a/nixos/modules/services/networking/radicale.nix
+++ b/nixos/modules/services/networking/radicale.nix
@@ -41,7 +41,7 @@ in
     };
 
     services.radicale.config = mkOption {
-      type = types.string;
+      type = types.str;
       default = "";
       description = ''
         Radicale configuration, this will set the service
@@ -50,7 +50,7 @@ in
     };
 
     services.radicale.extraArgs = mkOption {
-      type = types.listOf types.string;
+      type = types.listOf types.str;
       default = [];
       description = "Extra arguments passed to the Radicale daemon.";
     };
diff --git a/nixos/modules/services/networking/resilio.nix b/nixos/modules/services/networking/resilio.nix
index ee7f82ac7bee1..9b25aa5758374 100644
--- a/nixos/modules/services/networking/resilio.nix
+++ b/nixos/modules/services/networking/resilio.nix
@@ -249,7 +249,7 @@ in
     systemd.services.resilio = with pkgs; {
       description = "Resilio Sync Service";
       wantedBy    = [ "multi-user.target" ];
-      after       = [ "network.target" "local-fs.target" ];
+      after       = [ "network.target" ];
       serviceConfig = {
         Restart   = "on-abort";
         UMask     = "0002";
diff --git a/nixos/modules/services/networking/shout.nix b/nixos/modules/services/networking/shout.nix
index f511a9af25621..e548ec66962a6 100644
--- a/nixos/modules/services/networking/shout.nix
+++ b/nixos/modules/services/networking/shout.nix
@@ -35,7 +35,7 @@ in {
     };
 
     listenAddress = mkOption {
-      type = types.string;
+      type = types.str;
       default = "0.0.0.0";
       description = "IP interface to listen on for http connections.";
     };
diff --git a/nixos/modules/services/networking/smokeping.nix b/nixos/modules/services/networking/smokeping.nix
index c3720375a191f..d4d0594a9cdd3 100644
--- a/nixos/modules/services/networking/smokeping.nix
+++ b/nixos/modules/services/networking/smokeping.nix
@@ -55,7 +55,7 @@ in
         description = "Enable the smokeping service";
       };
       alertConfig = mkOption {
-        type = types.string;
+        type = types.lines;
         default = ''
           to = root@localhost
           from = smokeping@localhost
@@ -73,19 +73,20 @@ in
         description = "Configuration for alerts.";
       };
       cgiUrl = mkOption {
-        type = types.string;
-        default = "http://${cfg.hostName}:${builtins.toString cfg.port}/smokeping.cgi";
+        type = types.str;
+        default = "http://${cfg.hostName}:${toString cfg.port}/smokeping.cgi";
+        defaultText = "http://\${hostName}:\${toString port}/smokeping.cgi";
         example = "https://somewhere.example.com/smokeping.cgi";
         description = "URL to the smokeping cgi.";
       };
       config = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.lines;
         default = null;
         description = "Full smokeping config supplied by the user. Overrides " +
           "and replaces any other configuration supplied.";
       };
       databaseConfig = mkOption {
-        type = types.string;
+        type = types.lines;
         default = ''
           step     = 300
           pings    = 20
@@ -122,14 +123,15 @@ in
         description = "Any additional customization not already included.";
       };
       hostName = mkOption {
-        type = types.string;
+        type = types.str;
         default = config.networking.hostName;
         example = "somewhere.example.com";
         description = "DNS name for the urls generated in the cgi.";
       };
       imgUrl = mkOption {
-        type = types.string;
-        default = "http://${cfg.hostName}:${builtins.toString cfg.port}/cache";
+        type = types.str;
+        default = "http://${cfg.hostName}:${toString cfg.port}/cache";
+        defaultText = "http://\${hostName}:\${toString port}/cache";
         example = "https://somewhere.example.com/cache";
         description = "Base url for images generated in the cgi.";
       };
@@ -140,19 +142,19 @@ in
         description = "DNS name for the urls generated in the cgi.";
       };
       mailHost = mkOption {
-        type = types.string;
+        type = types.str;
         default = "";
         example = "localhost";
         description = "Use this SMTP server to send alerts";
       };
       owner = mkOption {
-        type = types.string;
+        type = types.str;
         default = "nobody";
         example = "Joe Admin";
         description = "Real name of the owner of the instance";
       };
       ownerEmail = mkOption {
-        type = types.string;
+        type = types.str;
         default = "no-reply@${cfg.hostName}";
         example = "no-reply@yourdomain.com";
         description = "Email contact for owner";
@@ -170,7 +172,7 @@ in
         description = "TCP port to use for the web server.";
       };
       presentationConfig = mkOption {
-        type = types.string;
+        type = types.lines;
         default = ''
           + charts
           menu = Charts
@@ -211,12 +213,12 @@ in
         description = "presentation graph style";
       };
       presentationTemplate = mkOption {
-        type = types.string;
+        type = types.str;
         default = "${pkgs.smokeping}/etc/basepage.html.dist";
         description = "Default page layout for the web UI.";
       };
       probeConfig = mkOption {
-        type = types.string;
+        type = types.lines;
         default = ''
           + FPing
           binary = ${config.security.wrapperDir}/fping
@@ -230,12 +232,12 @@ in
         description = "Use this sendmail compatible script to deliver alerts";
       };
       smokeMailTemplate = mkOption {
-        type = types.string;
+        type = types.str;
         default = "${cfg.package}/etc/smokemail.dist";
         description = "Specify the smokemail template for alerts.";
       };
       targetConfig = mkOption {
-        type = types.string;
+        type = types.lines;
         default = ''
 					probe = FPing
 					menu = Top
@@ -253,7 +255,7 @@ in
         description = "Target configuration";
       };
       user = mkOption {
-        type = types.string;
+        type = types.str;
         default = "smokeping";
         description = "User that runs smokeping and (optionally) thttpd";
       };
diff --git a/nixos/modules/services/networking/softether.nix b/nixos/modules/services/networking/softether.nix
index 2aa3ad4be0349..2dc73d81b258c 100644
--- a/nixos/modules/services/networking/softether.nix
+++ b/nixos/modules/services/networking/softether.nix
@@ -50,7 +50,7 @@ in
       };
 
       dataDir = mkOption {
-        type = types.string;
+        type = types.path;
         default = "/var/lib/softether";
         description = ''
           Data directory for SoftEther VPN.
diff --git a/nixos/modules/services/networking/stunnel.nix b/nixos/modules/services/networking/stunnel.nix
index 89a14966eca76..cbc899f2b4d73 100644
--- a/nixos/modules/services/networking/stunnel.nix
+++ b/nixos/modules/services/networking/stunnel.nix
@@ -35,12 +35,12 @@ let
   clientConfig = {
     options = {
       accept = mkOption {
-        type = types.string;
+        type = types.str;
         description = "IP:Port on which connections should be accepted.";
       };
 
       connect = mkOption {
-        type = types.string;
+        type = types.str;
         description = "IP:Port destination to connect to.";
       };
 
@@ -63,7 +63,7 @@ let
       };
 
       verifyHostname = mkOption {
-        type = with types; nullOr string;
+        type = with types; nullOr str;
         default = null;
         description = "If set, stunnel checks if the provided certificate is valid for the given hostname.";
       };
@@ -88,13 +88,13 @@ in
       };
 
       user = mkOption {
-        type = with types; nullOr string;
+        type = with types; nullOr str;
         default = "nobody";
         description = "The user under which stunnel runs.";
       };
 
       group = mkOption {
-        type = with types; nullOr string;
+        type = with types; nullOr str;
         default = "nogroup";
         description = "The group under which stunnel runs.";
       };
diff --git a/nixos/modules/services/networking/toxvpn.nix b/nixos/modules/services/networking/toxvpn.nix
index 7830dfb1834c5..7daacba185fe7 100644
--- a/nixos/modules/services/networking/toxvpn.nix
+++ b/nixos/modules/services/networking/toxvpn.nix
@@ -8,7 +8,7 @@ with lib;
       enable = mkEnableOption "toxvpn running on startup";
 
       localip = mkOption {
-        type        = types.string;
+        type        = types.str;
         default     = "10.123.123.1";
         description = "your ip on the vpn";
       };
@@ -20,7 +20,7 @@ with lib;
       };
 
       auto_add_peers = mkOption {
-        type        = types.listOf types.string;
+        type        = types.listOf types.str;
         default     = [];
         example     = ''[ "toxid1" "toxid2" ]'';
         description = "peers to automacally connect to on startup";
diff --git a/nixos/modules/services/networking/vsftpd.nix b/nixos/modules/services/networking/vsftpd.nix
index 31e1e65fa9cac..67be60da56739 100644
--- a/nixos/modules/services/networking/vsftpd.nix
+++ b/nixos/modules/services/networking/vsftpd.nix
@@ -164,7 +164,7 @@ in
       };
 
       anonymousUmask = mkOption {
-        type = types.string;
+        type = types.str;
         default = "077";
         example = "002";
         description = "Anonymous write umask.";
diff --git a/nixos/modules/services/networking/xinetd.nix b/nixos/modules/services/networking/xinetd.nix
index 2d7cd5cebb486..8dc6f845ed853 100644
--- a/nixos/modules/services/networking/xinetd.nix
+++ b/nixos/modules/services/networking/xinetd.nix
@@ -53,7 +53,7 @@ in
 
     services.xinetd.extraDefaults = mkOption {
       default = "";
-      type = types.string;
+      type = types.lines;
       description = ''
         Additional configuration lines added to the default section of xinetd's configuration.
       '';
@@ -70,13 +70,13 @@ in
         options = {
 
           name = mkOption {
-            type = types.string;
+            type = types.str;
             example = "login";
             description = "Name of the service.";
           };
 
           protocol = mkOption {
-            type = types.string;
+            type = types.str;
             default = "tcp";
             description =
               "Protocol of the service.  Usually <literal>tcp</literal> or <literal>udp</literal>.";
@@ -90,25 +90,25 @@ in
           };
 
           user = mkOption {
-            type = types.string;
+            type = types.str;
             default = "nobody";
             description = "User account for the service";
           };
 
           server = mkOption {
-            type = types.string;
+            type = types.str;
             example = "/foo/bin/ftpd";
             description = "Path of the program that implements the service.";
           };
 
           serverArgs = mkOption {
-            type = types.string;
+            type = types.separatedString " ";
             default = "";
             description = "Command-line arguments for the server program.";
           };
 
           flags = mkOption {
-            type = types.string;
+            type = types.str;
             default = "";
             description = "";
           };
diff --git a/nixos/modules/services/networking/xl2tpd.nix b/nixos/modules/services/networking/xl2tpd.nix
index d0a3ed7bb5e0a..7dbe51422d964 100644
--- a/nixos/modules/services/networking/xl2tpd.nix
+++ b/nixos/modules/services/networking/xl2tpd.nix
@@ -8,13 +8,13 @@ with lib;
       enable = mkEnableOption "xl2tpd, the Layer 2 Tunnelling Protocol Daemon";
 
       serverIp = mkOption {
-        type        = types.string;
+        type        = types.str;
         description = "The server-side IP address.";
         default     = "10.125.125.1";
       };
 
       clientIpRange = mkOption {
-        type        = types.string;
+        type        = types.str;
         description = "The range from which client IPs are drawn.";
         default     = "10.125.125.2-11";
       };
diff --git a/nixos/modules/services/scheduling/fcron.nix b/nixos/modules/services/scheduling/fcron.nix
index f77b3bcd5921e..e43ca014e148a 100644
--- a/nixos/modules/services/scheduling/fcron.nix
+++ b/nixos/modules/services/scheduling/fcron.nix
@@ -143,7 +143,6 @@ in
     };
     systemd.services.fcron = {
       description = "fcron daemon";
-      after = [ "local-fs.target" ];
       wantedBy = [ "multi-user.target" ];
 
       path = [ pkgs.fcron ];
diff --git a/nixos/modules/services/security/haka.nix b/nixos/modules/services/security/haka.nix
index b64a1b4d03e0f..618e689924fd6 100644
--- a/nixos/modules/services/security/haka.nix
+++ b/nixos/modules/services/security/haka.nix
@@ -69,7 +69,7 @@ in
       configFile = mkOption {
         default = "empty.lua";
         example = "/srv/haka/myfilter.lua";
-        type = types.string;
+        type = types.str;
         description = ''
           Specify which configuration file Haka uses.
           It can be absolute path or a path relative to the sample directory of
@@ -80,7 +80,7 @@ in
       interfaces = mkOption {
         default = [ "eth0" ];
         example = [ "any" ];
-        type = with types; listOf string;
+        type = with types; listOf str;
         description = ''
           Specify which interface(s) Haka listens to.
           Use 'any' to listen to all interfaces.
diff --git a/nixos/modules/services/security/munge.nix b/nixos/modules/services/security/munge.nix
index 1c4f8e20552fb..8917888647109 100644
--- a/nixos/modules/services/security/munge.nix
+++ b/nixos/modules/services/security/munge.nix
@@ -19,7 +19,7 @@ in
 
       password = mkOption {
         default = "/etc/munge/munge.key";
-        type = types.string;
+        type = types.path;
         description = ''
           The path to a daemon's secret key.
         '';
diff --git a/nixos/modules/services/security/oauth2_proxy.nix b/nixos/modules/services/security/oauth2_proxy.nix
index 61f203ef9e7d8..bb03f7fc9e43c 100644
--- a/nixos/modules/services/security/oauth2_proxy.nix
+++ b/nixos/modules/services/security/oauth2_proxy.nix
@@ -284,7 +284,7 @@ in
     ####################################################
     # UPSTREAM Configuration
     upstream = mkOption {
-      type = with types; coercedTo string (x: [x]) (listOf string);
+      type = with types; coercedTo str (x: [x]) (listOf str);
       default = [];
       description = ''
         The http url(s) of the upstream endpoint or <literal>file://</literal>
@@ -523,7 +523,7 @@ in
     };
 
     keyFile = mkOption {
-      type = types.nullOr types.string;
+      type = types.nullOr types.path;
       default = null;
       description = ''
         oauth2_proxy allows passing sensitive configuration via environment variables.
diff --git a/nixos/modules/services/security/oauth2_proxy_nginx.nix b/nixos/modules/services/security/oauth2_proxy_nginx.nix
index a9ad5497a657a..be6734f439f3d 100644
--- a/nixos/modules/services/security/oauth2_proxy_nginx.nix
+++ b/nixos/modules/services/security/oauth2_proxy_nginx.nix
@@ -6,14 +6,14 @@ in
 {
   options.services.oauth2_proxy.nginx = {
     proxy = mkOption {
-      type = types.string;
+      type = types.str;
       default = config.services.oauth2_proxy.httpAddress;
       description = ''
         The address of the reverse proxy endpoint for oauth2_proxy
       '';
     };
     virtualHosts = mkOption {
-      type = types.listOf types.string;
+      type = types.listOf types.str;
       default = [];
       description = ''
         A list of nginx virtual hosts to put behind the oauth2 proxy
diff --git a/nixos/modules/services/security/tor.nix b/nixos/modules/services/security/tor.nix
index abdc0cd78b4db..ed862387cce1d 100644
--- a/nixos/modules/services/security/tor.nix
+++ b/nixos/modules/services/security/tor.nix
@@ -722,7 +722,6 @@ in
     systemd.services.tor-init =
       { description = "Tor Daemon Init";
         wantedBy = [ "tor.service" ];
-        after = [ "local-fs.target" ];
         script = ''
           install -m 0700 -o tor -g tor -d ${torDirectory} ${torDirectory}/onion
           install -m 0750 -o tor -g tor -d ${torRunDirectory}
diff --git a/nixos/modules/services/security/usbguard.nix b/nixos/modules/services/security/usbguard.nix
index 20d5e3b28eb9e..4ced5acd9bd9d 100644
--- a/nixos/modules/services/security/usbguard.nix
+++ b/nixos/modules/services/security/usbguard.nix
@@ -195,7 +195,7 @@ in {
       description = "USBGuard daemon";
 
       wantedBy = [ "basic.target" ];
-      wants = [ "systemd-udevd.service" "local-fs.target" ];
+      wants = [ "systemd-udevd.service" ];
 
       # make sure an empty rule file and required directories exist
       preStart = ''
diff --git a/nixos/modules/services/system/cgmanager.nix b/nixos/modules/services/system/cgmanager.nix
index 59d3deced8678..d3d57aa769281 100644
--- a/nixos/modules/services/system/cgmanager.nix
+++ b/nixos/modules/services/system/cgmanager.nix
@@ -14,7 +14,6 @@ in {
   config = mkIf cfg.enable {
     systemd.services.cgmanager = {
       wantedBy = [ "multi-user.target" ];
-      after = [ "local-fs.target" ];
       description = "Cgroup management daemon";
       restartIfChanged = false;
       serviceConfig = {
diff --git a/nixos/modules/services/system/cloud-init.nix b/nixos/modules/services/system/cloud-init.nix
index 3ad555f78ef82..15fe822aec679 100644
--- a/nixos/modules/services/system/cloud-init.nix
+++ b/nixos/modules/services/system/cloud-init.nix
@@ -112,8 +112,6 @@ in
     systemd.services.cloud-init-local =
       { description = "Initial cloud-init job (pre-networking)";
         wantedBy = [ "multi-user.target" ];
-        wants = [ "local-fs.target" ];
-        after = [ "local-fs.target" ];
         path = path;
         serviceConfig =
           { Type = "oneshot";
@@ -127,9 +125,9 @@ in
     systemd.services.cloud-init =
       { description = "Initial cloud-init job (metadata service crawler)";
         wantedBy = [ "multi-user.target" ];
-        wants = [ "local-fs.target" "network-online.target" "cloud-init-local.service"
+        wants = [ "network-online.target" "cloud-init-local.service"
                   "sshd.service" "sshd-keygen.service" ];
-        after = [ "local-fs.target" "network-online.target" "cloud-init-local.service" ];
+        after = [ "network-online.target" "cloud-init-local.service" ];
         before = [ "sshd.service" "sshd-keygen.service" ];
         requires = [ "network.target "];
         path = path;
diff --git a/nixos/modules/services/torrent/deluge.nix b/nixos/modules/services/torrent/deluge.nix
index 18fdacaf97b2a..e1c5e052a12f7 100644
--- a/nixos/modules/services/torrent/deluge.nix
+++ b/nixos/modules/services/torrent/deluge.nix
@@ -173,8 +173,11 @@ in {
     # Provide a default set of `extraPackages`.
     services.deluge.extraPackages = with pkgs; [ unzip gnutar xz p7zip bzip2 ];
 
-    systemd.tmpfiles.rules = [ "d '${configDir}' 0770 ${cfg.user} ${cfg.group}" ]
-    ++ optional (cfg.config ? download_location)
+    systemd.tmpfiles.rules = [
+      "d '${cfg.dataDir}' 0770 ${cfg.user} ${cfg.group}"
+      "d '${cfg.dataDir}/.config' 0770 ${cfg.user} ${cfg.group}"
+      "d '${cfg.dataDir}/.config/deluge' 0770 ${cfg.user} ${cfg.group}"
+    ]
       "d '${cfg.config.download_location}' 0770 ${cfg.user} ${cfg.group}"
     ++ optional (cfg.config ? torrentfiles_location)
       "d '${cfg.config.torrentfiles_location}' 0770 ${cfg.user} ${cfg.group}"
@@ -237,7 +240,6 @@ in {
         group = cfg.group;
         uid = config.ids.uids.deluge;
         home = cfg.dataDir;
-        createHome = true;
         description = "Deluge Daemon user";
       };
     };
diff --git a/nixos/modules/services/torrent/flexget.nix b/nixos/modules/services/torrent/flexget.nix
index ca63f529a5dfb..6ac85f8fa1782 100644
--- a/nixos/modules/services/torrent/flexget.nix
+++ b/nixos/modules/services/torrent/flexget.nix
@@ -19,7 +19,7 @@ in {
       user = mkOption {
         default = "deluge";
         example = "some_user";
-        type = types.string;
+        type = types.str;
         description = "The user under which to run flexget.";
       };
 
@@ -33,7 +33,7 @@ in {
       interval = mkOption {
         default = "10m";
         example = "1h";
-        type = types.string;
+        type = types.str;
         description = "When to perform a <command>flexget</command> run. See <command>man 7 systemd.time</command> for the format.";
       };
 
diff --git a/nixos/modules/services/torrent/transmission.nix b/nixos/modules/services/torrent/transmission.nix
index a94a471361ef8..7409eb8cdcbef 100644
--- a/nixos/modules/services/torrent/transmission.nix
+++ b/nixos/modules/services/torrent/transmission.nix
@@ -102,7 +102,7 @@ in
   config = mkIf cfg.enable {
     systemd.services.transmission = {
       description = "Transmission BitTorrent Service";
-      after = [ "local-fs.target" "network.target" ] ++ optional apparmor "apparmor.service";
+      after = [ "network.target" ] ++ optional apparmor "apparmor.service";
       requires = mkIf apparmor [ "apparmor.service" ];
       wantedBy = [ "multi-user.target" ];
 
diff --git a/nixos/modules/services/web-apps/youtrack.nix b/nixos/modules/services/web-apps/youtrack.nix
index 691cbdc8d1d5a..830edac20bac3 100644
--- a/nixos/modules/services/web-apps/youtrack.nix
+++ b/nixos/modules/services/web-apps/youtrack.nix
@@ -28,28 +28,28 @@ in
         The interface youtrack will listen on.
       '';
       default = "127.0.0.1";
-      type = types.string;
+      type = types.str;
     };
 
     baseUrl = mkOption {
       description = ''
         Base URL for youtrack. Will be auto-detected and stored in database.
       '';
-      type = types.nullOr types.string;
+      type = types.nullOr types.str;
       default = null;
     };
 
     extraParams = mkOption {
       default = {};
       description = ''
-        Extra parameters to pass to youtrack. See 
+        Extra parameters to pass to youtrack. See
         https://www.jetbrains.com/help/youtrack/standalone/YouTrack-Java-Start-Parameters.html
         for more information.
       '';
       example = {
         "jetbrains.youtrack.overrideRootPassword" = "tortuga";
       };
-      type = types.attrsOf types.string;
+      type = types.attrsOf types.str;
     };
 
     package = mkOption {
@@ -73,7 +73,7 @@ in
       description = ''
         Where to keep the youtrack database.
       '';
-      type = types.string;
+      type = types.path;
       default = "/var/lib/youtrack";
     };
 
@@ -83,7 +83,7 @@ in
         If null, do not setup anything.
       '';
       default = null;
-      type = types.nullOr types.string;
+      type = types.nullOr types.str;
     };
 
     jvmOpts = mkOption {
@@ -92,7 +92,7 @@ in
         See https://www.jetbrains.com/help/youtrack/standalone/Configure-JVM-Options.html
         for more information.
       '';
-      type = types.string;
+      type = types.separatedString " ";
       example = "-XX:MetaspaceSize=250m";
       default = "";
     };
@@ -101,7 +101,7 @@ in
       description = ''
         Maximum Java heap size
       '';
-      type = types.string;
+      type = types.str;
       default = "1g";
     };
 
@@ -109,7 +109,7 @@ in
       description = ''
         Maximum java Metaspace memory.
       '';
-      type = types.string;
+      type = types.str;
       default = "350m";
     };
   };
diff --git a/nixos/modules/services/web-servers/apache-httpd/per-server-options.nix b/nixos/modules/services/web-servers/apache-httpd/per-server-options.nix
index 536e707137c62..9d747549c2744 100644
--- a/nixos/modules/services/web-servers/apache-httpd/per-server-options.nix
+++ b/nixos/modules/services/web-servers/apache-httpd/per-server-options.nix
@@ -33,7 +33,7 @@ with lib;
                 description = "port to listen on";
               };
               ip = mkOption {
-                type = types.string;
+                type = types.str;
                 default = "*";
                 description = "Ip to listen on. 0.0.0.0 for ipv4 only, * for all.";
               };
diff --git a/nixos/modules/services/web-servers/caddy.nix b/nixos/modules/services/web-servers/caddy.nix
index 6a1db6087840a..132c50735d96e 100644
--- a/nixos/modules/services/web-servers/caddy.nix
+++ b/nixos/modules/services/web-servers/caddy.nix
@@ -27,13 +27,13 @@ in {
     ca = mkOption {
       default = "https://acme-v02.api.letsencrypt.org/directory";
       example = "https://acme-staging-v02.api.letsencrypt.org/directory";
-      type = types.string;
+      type = types.str;
       description = "Certificate authority ACME server. The default (Let's Encrypt production server) should be fine for most people.";
     };
 
     email = mkOption {
       default = "";
-      type = types.string;
+      type = types.str;
       description = "Email address (for Let's Encrypt certificate)";
     };
 
diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix
index 5c65a2388d6f6..b94b338fd4a60 100644
--- a/nixos/modules/services/web-servers/nginx/default.nix
+++ b/nixos/modules/services/web-servers/nginx/default.nix
@@ -473,7 +473,7 @@ in
       };
 
       clientMaxBodySize = mkOption {
-        type = types.string;
+        type = types.str;
         default = "10m";
         description = "Set nginx global client_max_body_size.";
       };
diff --git a/nixos/modules/services/web-servers/traefik.nix b/nixos/modules/services/web-servers/traefik.nix
index 5bac895d43ac8..8de7df0d446c9 100644
--- a/nixos/modules/services/web-servers/traefik.nix
+++ b/nixos/modules/services/web-servers/traefik.nix
@@ -67,7 +67,7 @@ in {
 
     group = mkOption {
       default = "traefik";
-      type = types.string;
+      type = types.str;
       example = "docker";
       description = ''
         Set the group that traefik runs under.
diff --git a/nixos/modules/services/web-servers/uwsgi.nix b/nixos/modules/services/web-servers/uwsgi.nix
index 3f858d90fa465..af70f32f32d0f 100644
--- a/nixos/modules/services/web-servers/uwsgi.nix
+++ b/nixos/modules/services/web-servers/uwsgi.nix
@@ -72,7 +72,7 @@ in {
       };
 
       runDir = mkOption {
-        type = types.string;
+        type = types.path;
         default = "/run/uwsgi";
         description = "Where uWSGI communication sockets can live";
       };
diff --git a/nixos/modules/services/web-servers/zope2.nix b/nixos/modules/services/web-servers/zope2.nix
index 4cad2a2ff7775..3abd506827c09 100644
--- a/nixos/modules/services/web-servers/zope2.nix
+++ b/nixos/modules/services/web-servers/zope2.nix
@@ -11,7 +11,7 @@ let
 
       name = mkOption {
         default = "${name}";
-        type = types.string;
+        type = types.str;
         description = "The name of the zope2 instance. If undefined, the name of the attribute set will be used.";
       };
 
@@ -23,19 +23,19 @@ let
 
       http_address = mkOption {
         default = "localhost:8080";
-        type = types.string;
+        type = types.str;
         description = "Give a port and address for the HTTP server.";
       };
 
       user = mkOption {
         default = "zope2";
-        type = types.string;
+        type = types.str;
         description = "The name of the effective user for the Zope process.";
       };
 
       clientHome = mkOption {
         default = "/var/lib/zope2/${name}";
-        type = types.string;
+        type = types.path;
         description = "Home directory of zope2 instance.";
       };
       extra = mkOption {
@@ -52,7 +52,7 @@ let
             </blobstorage>
           </zodb_db>
           '';
-        type = types.string;
+        type = types.lines;
         description = "Extra zope.conf";
       };
 
diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix
index 0caa93ad217fd..6f344f4121ba7 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -37,7 +37,7 @@ let
        picture-uri='file://${pkgs.nixos-artwork.wallpapers.simple-dark-gray-bottom}/share/artwork/gnome/nix-wallpaper-simple-dark-gray_bottom.png'
 
        [org.gnome.shell]
-       favorite-apps=[ 'org.gnome.Epiphany.desktop', 'evolution.desktop', 'org.gnome.Music.desktop', 'org.gnome.Photos.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ]
+       favorite-apps=[ 'org.gnome.Epiphany.desktop', 'org.gnome.Geary.desktop', 'org.gnome.Music.desktop', 'org.gnome.Photos.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ]
 
        ${cfg.extraGSettingsOverrides}
      EOF
@@ -238,6 +238,8 @@ in
       services.dbus.packages =
         optional config.services.printing.enable pkgs.system-config-printer;
 
+      services.avahi.enable = mkDefault true;
+
       services.geoclue2.enable = mkDefault true;
       services.geoclue2.enableDemoAgent = false; # GNOME has its own geoclue agent
 
@@ -261,16 +263,19 @@ in
         source-sans-pro
       ];
 
+      # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/gnome-3-32/elements/core/meta-gnome-core-shell.bst
       environment.systemPackages = with pkgs.gnome3; [
         adwaita-icon-theme
         gnome-backgrounds
         gnome-bluetooth
+        gnome-color-manager
         gnome-control-center
         gnome-getting-started-docs
         gnome-shell
         gnome-shell-extensions
         gnome-themes-extra
         gnome-user-docs
+        pkgs.orca
         pkgs.glib # for gsettings
         pkgs.gnome-menus
         pkgs.gtk3.out # for gtk-launch
@@ -281,23 +286,43 @@ in
       ];
     })
 
+    # Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/blob/gnome-3-32/elements/core/meta-gnome-core-utilities.bst
     (mkIf serviceCfg.core-utilities.enable {
       environment.systemPackages = (with pkgs.gnome3; removePackagesByName [
-        baobab eog epiphany evince gucharmap nautilus totem yelp gnome-calculator
-        gnome-contacts gnome-font-viewer gnome-screenshot gnome-system-monitor simple-scan
-        gnome-terminal evolution file-roller gedit gnome-clocks gnome-music gnome-tweaks
-        pkgs.gnome-photos nautilus-sendto dconf-editor vinagre gnome-weather gnome-logs
-        gnome-maps gnome-characters gnome-calendar accerciser gnome-nettool gnome-packagekit
-        gnome-software gnome-power-manager gnome-todo pkgs.gnome-usage
+        baobab
+        cheese
+        eog
+        epiphany
+        geary
+        gedit
+        gnome-calculator
+        gnome-calendar
+        gnome-characters
+        gnome-clocks
+        gnome-contacts
+        gnome-font-viewer
+        gnome-logs
+        gnome-maps
+        gnome-music
+        gnome-photos
+        gnome-screenshot
+        gnome-software
+        gnome-system-monitor
+        gnome-weather
+        nautilus
+        simple-scan
+        totem
+        yelp
+        # Unsure if sensible for NixOS
+        /* gnome-boxes */
       ] config.environment.gnome3.excludePackages);
 
       # Enable default programs
       programs.evince.enable = mkDefault true;
       programs.file-roller.enable = mkDefault true;
       programs.gnome-disks.enable = mkDefault true;
-      programs.gnome-documents.enable = mkDefault true;
       programs.gnome-terminal.enable = mkDefault true;
-      services.gnome3.seahorse.enable = mkDefault true;
+      programs.seahorse.enable = mkDefault true;
       services.gnome3.sushi.enable = mkDefault true;
 
       # Let nautilus find extensions
diff --git a/nixos/modules/services/x11/desktop-managers/pantheon.nix b/nixos/modules/services/x11/desktop-managers/pantheon.nix
index ae23015d2005d..5b82cb1f02620 100644
--- a/nixos/modules/services/x11/desktop-managers/pantheon.nix
+++ b/nixos/modules/services/x11/desktop-managers/pantheon.nix
@@ -145,6 +145,9 @@ in
     programs.dconf.enable = true;
     programs.evince.enable = mkDefault true;
     programs.file-roller.enable = mkDefault true;
+    # Otherwise you can't store NetworkManager Secrets with
+    # "Store the password only for this user"
+    programs.nm-applet.enable = true;
 
     # Shell integration for VTE terminals
     programs.bash.vteIntegration = mkDefault true;
@@ -191,6 +194,7 @@ in
         gtk3.out
         hicolor-icon-theme
         lightlocker
+        onboard
         plank
         qgnomeplatform
         shared-mime-info
diff --git a/nixos/modules/services/x11/desktop-managers/surf-display.nix b/nixos/modules/services/x11/desktop-managers/surf-display.nix
index 232bbf5c55d43..140dde828daa3 100644
--- a/nixos/modules/services/x11/desktop-managers/surf-display.nix
+++ b/nixos/modules/services/x11/desktop-managers/surf-display.nix
@@ -48,7 +48,7 @@ in {
       enable = mkEnableOption "surf-display as a kiosk browser session";
 
       defaultWwwUri = mkOption {
-        type = types.string;
+        type = types.str;
         default = "${pkgs.surf-display}/share/surf-display/empty-page.html";
         example = "https://www.example.com/";
         description = "Default URI to display.";
@@ -69,7 +69,7 @@ in {
       };
 
       screensaverSettings = mkOption {
-        type = types.string;
+        type = types.separatedString " ";
         default = "";
         description = ''
           Screensaver settings, see <literal>man 1 xset</literal> for possible options.
@@ -77,7 +77,7 @@ in {
       };
 
       pointerButtonMap = mkOption {
-        type = types.string;
+        type = types.str;
         default = "1 0 0 4 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0";
         description = ''
           Disable right and middle pointer device click in browser sessions
@@ -87,14 +87,14 @@ in {
       };
 
       hideIdlePointer = mkOption {
-        type = types.string;
+        type = types.str;
         default = "yes";
         example = "no";
         description = "Hide idle mouse pointer.";
       };
 
       extraConfig = mkOption {
-        type = types.string;
+        type = types.lines;
         default = "";
         example = ''
           # Enforce fixed resolution for all displays (default: not set):
diff --git a/nixos/modules/services/x11/desktop-managers/xterm.nix b/nixos/modules/services/x11/desktop-managers/xterm.nix
index ea441fbbe715c..93987bd1dfc51 100644
--- a/nixos/modules/services/x11/desktop-managers/xterm.nix
+++ b/nixos/modules/services/x11/desktop-managers/xterm.nix
@@ -5,7 +5,6 @@ with lib;
 let
 
   cfg = config.services.xserver.desktopManager.xterm;
-  xserverEnabled = config.services.xserver.enable;
 
 in
 
@@ -14,7 +13,7 @@ in
 
     services.xserver.desktopManager.xterm.enable = mkOption {
       type = types.bool;
-      default = xserverEnabled;
+      default = false;
       defaultText = "config.services.xserver.enable";
       description = "Enable a xterm terminal as a desktop manager.";
     };
diff --git a/nixos/modules/services/x11/display-managers/lightdm.nix b/nixos/modules/services/x11/display-managers/lightdm.nix
index 5d3d1b485cfc0..956c95e48220d 100644
--- a/nixos/modules/services/x11/display-managers/lightdm.nix
+++ b/nixos/modules/services/x11/display-managers/lightdm.nix
@@ -114,7 +114,7 @@ in
 
         };
         name = mkOption {
-          type = types.string;
+          type = types.str;
           description = ''
             The name of a .desktop file in the directory specified
             in the 'package' option.
diff --git a/nixos/modules/services/x11/hardware/libinput.nix b/nixos/modules/services/x11/hardware/libinput.nix
index a0a5e26568520..bd289976532bd 100644
--- a/nixos/modules/services/x11/hardware/libinput.nix
+++ b/nixos/modules/services/x11/hardware/libinput.nix
@@ -41,13 +41,13 @@ in {
       };
 
       accelSpeed = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = null;
         description = "Cursor acceleration (how fast speed increases from minSpeed to maxSpeed).";
       };
 
       buttonMapping = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = null;
         description =
           ''
@@ -61,7 +61,7 @@ in {
       };
 
       calibrationMatrix = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = null;
         description =
           ''
diff --git a/nixos/modules/services/x11/hardware/synaptics.nix b/nixos/modules/services/x11/hardware/synaptics.nix
index c4aad72f7e2f5..22af869f1f8aa 100644
--- a/nixos/modules/services/x11/hardware/synaptics.nix
+++ b/nixos/modules/services/x11/hardware/synaptics.nix
@@ -44,19 +44,19 @@ in {
       };
 
       accelFactor = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = "0.001";
         description = "Cursor acceleration (how fast speed increases from minSpeed to maxSpeed).";
       };
 
       minSpeed = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = "0.6";
         description = "Cursor speed factor for precision finger motion.";
       };
 
       maxSpeed = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         default = "1.0";
         description = "Cursor speed factor for highest-speed finger motion.";
       };
diff --git a/nixos/modules/services/x11/window-managers/xmonad.nix b/nixos/modules/services/x11/window-managers/xmonad.nix
index a6055f26789ef..0e13141227671 100644
--- a/nixos/modules/services/x11/window-managers/xmonad.nix
+++ b/nixos/modules/services/x11/window-managers/xmonad.nix
@@ -59,7 +59,7 @@ in
 
       config = mkOption {
         default = null;
-        type = with lib.types; nullOr (either path string);
+        type = with lib.types; nullOr (either path str);
         description = ''
           Configuration from which XMonad gets compiled. If no value
           is specified, the xmonad config from $HOME/.xmonad is taken.
diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix
index c94a064383156..a8406544a72f5 100644
--- a/nixos/modules/services/x11/xserver.nix
+++ b/nixos/modules/services/x11/xserver.nix
@@ -659,7 +659,7 @@ in
     systemd.services.display-manager =
       { description = "X11 Server";
 
-        after = [ "systemd-udev-settle.service" "local-fs.target" "acpid.service" "systemd-logind.service" ];
+        after = [ "systemd-udev-settle.service" "acpid.service" "systemd-logind.service" ];
         wants = [ "systemd-udev-settle.service" ];
 
         restartIfChanged = false;
diff --git a/nixos/modules/system/boot/binfmt.nix b/nixos/modules/system/boot/binfmt.nix
index a550ffd6320fd..a32c9dc1f2b49 100644
--- a/nixos/modules/system/boot/binfmt.nix
+++ b/nixos/modules/system/boot/binfmt.nix
@@ -239,7 +239,7 @@ in {
           List of systems to emulate. Will also configure Nix to
           support your new systems.
         '';
-        type = types.listOf types.string;
+        type = types.listOf types.str;
       };
     };
   };
diff --git a/nixos/modules/system/boot/loader/grub/grub.nix b/nixos/modules/system/boot/loader/grub/grub.nix
index 4a68ae901dada..e13f0421d38f6 100644
--- a/nixos/modules/system/boot/loader/grub/grub.nix
+++ b/nixos/modules/system/boot/loader/grub/grub.nix
@@ -8,7 +8,7 @@ let
 
   efi = config.boot.loader.efi;
 
-  grubPkgs = 
+  grubPkgs =
     # Package set of targeted architecture
     if cfg.forcei686 then pkgs.pkgsi686Linux else pkgs;
 
@@ -333,7 +333,7 @@ in
       };
 
       backgroundColor = mkOption {
-        type = types.nullOr types.string;
+        type = types.nullOr types.str;
         example = "#7EBAE4";
         default = null;
         description = ''
@@ -399,7 +399,7 @@ in
         example = "text";
         type = types.str;
         description = ''
-          The gfxpayload to pass to GRUB when loading a graphical boot interface under EFI. 
+          The gfxpayload to pass to GRUB when loading a graphical boot interface under EFI.
         '';
       };
 
@@ -408,7 +408,7 @@ in
         example = "keep";
         type = types.str;
         description = ''
-          The gfxpayload to pass to GRUB when loading a graphical boot interface under BIOS. 
+          The gfxpayload to pass to GRUB when loading a graphical boot interface under BIOS.
         '';
       };
 
@@ -535,7 +535,7 @@ in
         default = false;
         type = types.bool;
         description = ''
-          Whether to force the use of a ia32 boot loader on x64 systems. Required 
+          Whether to force the use of a ia32 boot loader on x64 systems. Required
           to install and run NixOS on 64bit x86 systems with 32bit (U)EFI.
         '';
       };
@@ -554,7 +554,7 @@ in
         systemHasTPM = mkOption {
           default = "";
           example = "YES_TPM_is_activated";
-          type = types.string;
+          type = types.str;
           description = ''
             Assertion that the target system has an activated TPM. It is a safety
             check before allowing the activation of 'trustedBoot.enable'. TrustedBoot
diff --git a/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix b/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix
index 7db60daa60b8f..1c8354e52696d 100644
--- a/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix
+++ b/nixos/modules/system/boot/loader/raspberrypi/raspberrypi.nix
@@ -10,7 +10,7 @@ let
   builderUboot = import ./uboot-builder.nix { inherit pkgs configTxt; inherit (cfg) version; };
   builderGeneric = import ./raspberrypi-builder.nix { inherit pkgs configTxt; };
 
-  builder = 
+  builder =
     if cfg.uboot.enable then
       "${builderUboot} -g ${toString cfg.uboot.configurationLimit} -t ${timeoutStr} -c"
     else
@@ -86,7 +86,7 @@ in
 
       firmwareConfig = mkOption {
         default = null;
-        type = types.nullOr types.string;
+        type = types.nullOr types.lines;
         description = ''
           Extra options that will be appended to <literal>/boot/config.txt</literal> file.
           For possible values, see: https://www.raspberrypi.org/documentation/configuration/config-txt/
diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix
index 046c61c8b5652..5bf7b0d227f02 100644
--- a/nixos/modules/tasks/network-interfaces.nix
+++ b/nixos/modules/tasks/network-interfaces.nix
@@ -836,7 +836,7 @@ in
         options = {
 
           device = mkOption {
-            type = types.string;
+            type = types.str;
             example = "wlp6s0";
             description = "The name of the underlying hardware WLAN device as assigned by <literal>udev</literal>.";
           };
@@ -852,7 +852,7 @@ in
           };
 
           meshID = mkOption {
-            type = types.nullOr types.string;
+            type = types.nullOr types.str;
             default = null;
             description = "MeshID of interface with type <literal>mesh</literal>.";
           };
diff --git a/nixos/modules/virtualisation/anbox.nix b/nixos/modules/virtualisation/anbox.nix
index c63b971ead02b..da5df35807346 100644
--- a/nixos/modules/virtualisation/anbox.nix
+++ b/nixos/modules/virtualisation/anbox.nix
@@ -56,7 +56,7 @@ in
 
       dns = mkOption {
         default = "1.1.1.1";
-        type = types.string;
+        type = types.str;
         description = ''
           Container DNS server.
         '';
diff --git a/nixos/modules/virtualisation/azure-agent.nix b/nixos/modules/virtualisation/azure-agent.nix
index 770cefbcd5112..036b1036f92aa 100644
--- a/nixos/modules/virtualisation/azure-agent.nix
+++ b/nixos/modules/virtualisation/azure-agent.nix
@@ -166,7 +166,6 @@ in
 
       wantedBy = [ "sshd.service" "waagent.service" ];
       before = [ "sshd.service" "waagent.service" ];
-      after = [ "local-fs.target" ];
 
       path  = [ pkgs.coreutils ];
       script =
diff --git a/nixos/modules/virtualisation/azure-image.nix b/nixos/modules/virtualisation/azure-image.nix
index dd2108ccc379f..e91dd72ff5d43 100644
--- a/nixos/modules/virtualisation/azure-image.nix
+++ b/nixos/modules/virtualisation/azure-image.nix
@@ -26,7 +26,6 @@ in
 
       wantedBy = [ "sshd.service" "waagent.service" ];
       before = [ "sshd.service" "waagent.service" ];
-      after = [ "local-fs.target" ];
 
       path  = [ pkgs.coreutils ];
       script =
diff --git a/nixos/modules/virtualisation/containers.nix b/nixos/modules/virtualisation/containers.nix
index 510b91904c59d..9c9f8fc0c2154 100644
--- a/nixos/modules/virtualisation/containers.nix
+++ b/nixos/modules/virtualisation/containers.nix
@@ -337,7 +337,7 @@ let
 
   networkOptions = {
     hostBridge = mkOption {
-      type = types.nullOr types.string;
+      type = types.nullOr types.str;
       default = null;
       example = "br0";
       description = ''
@@ -387,7 +387,7 @@ let
     };
 
     hostAddress6 = mkOption {
-      type = types.nullOr types.string;
+      type = types.nullOr types.str;
       default = null;
       example = "fc00::1";
       description = ''
@@ -409,7 +409,7 @@ let
     };
 
     localAddress6 = mkOption {
-      type = types.nullOr types.string;
+      type = types.nullOr types.str;
       default = null;
       example = "fc00::2";
       description = ''
@@ -565,7 +565,7 @@ in
             };
 
             interfaces = mkOption {
-              type = types.listOf types.string;
+              type = types.listOf types.str;
               default = [];
               example = [ "eth1" "eth2" ];
               description = ''
diff --git a/nixos/modules/virtualisation/google-compute-config.nix b/nixos/modules/virtualisation/google-compute-config.nix
index 79766970c757a..327324f2921da 100644
--- a/nixos/modules/virtualisation/google-compute-config.nix
+++ b/nixos/modules/virtualisation/google-compute-config.nix
@@ -21,7 +21,7 @@ in
   boot.initrd.kernelModules = [ "virtio_scsi" ];
   boot.kernelModules = [ "virtio_pci" "virtio_net" ];
 
-  # Generate a GRUB menu.  Amazon's pv-grub uses this to boot our kernel/initrd.
+  # Generate a GRUB menu.
   boot.loader.grub.device = "/dev/sda";
   boot.loader.timeout = 0;
 
@@ -29,12 +29,16 @@ in
   # way to select them anyway.
   boot.loader.grub.configurationLimit = 0;
 
-  # Allow root logins only using the SSH key that the user specified
-  # at instance creation time.
+  # Allow root logins only using SSH keys
+  # and disable password authentication in general
   services.openssh.enable = true;
   services.openssh.permitRootLogin = "prohibit-password";
   services.openssh.passwordAuthentication = mkDefault false;
 
+  # enable OS Login. This also requires setting enable-oslogin=TRUE metadata on
+  # instance or project level
+  security.googleOsLogin.enable = true;
+
   # Use GCE udev rules for dynamic disk volumes
   services.udev.packages = [ gce ];
 
@@ -65,165 +69,80 @@ in
   # GC has 1460 MTU
   networking.interfaces.eth0.mtu = 1460;
 
-  security.googleOsLogin.enable = true;
-
-  systemd.services.google-clock-skew-daemon = {
-    description = "Google Compute Engine Clock Skew Daemon";
-    after = [
-      "network.target"
-      "google-instance-setup.service"
-      "google-network-setup.service"
-    ];
-    requires = ["network.target"];
-    wantedBy = ["multi-user.target"];
-    serviceConfig = {
-      Type = "simple";
-      ExecStart = "${gce}/bin/google_clock_skew_daemon --debug";
-    };
-  };
-
   systemd.services.google-instance-setup = {
     description = "Google Compute Engine Instance Setup";
-    after = ["local-fs.target" "network-online.target" "network.target" "rsyslog.service"];
-    before = ["sshd.service"];
-    wants = ["local-fs.target" "network-online.target" "network.target"];
-    wantedBy = [ "sshd.service" "multi-user.target" ];
-    path = with pkgs; [ ethtool openssh ];
+    after = [ "network-online.target" "network.target" "rsyslog.service" ];
+    before = [ "sshd.service" ];
+    path = with pkgs; [ coreutils ethtool openssh ];
     serviceConfig = {
-      ExecStart = "${gce}/bin/google_instance_setup --debug";
+      ExecStart = "${gce}/bin/google_instance_setup";
+      StandardOutput="journal+console";
       Type = "oneshot";
     };
+    wantedBy = [ "sshd.service" "multi-user.target" ];
   };
 
   systemd.services.google-network-daemon = {
     description = "Google Compute Engine Network Daemon";
-    after = ["local-fs.target" "network-online.target" "network.target" "rsyslog.service" "google-instance-setup.service"];
-    wants = ["local-fs.target" "network-online.target" "network.target"];
-    requires = ["network.target"];
-    partOf = ["network.target"];
-    wantedBy = [ "multi-user.target" ];
+    after = [ "network-online.target" "network.target" "google-instance-setup.service" ];
     path = with pkgs; [ iproute ];
     serviceConfig = {
-      ExecStart = "${gce}/bin/google_network_daemon --debug";
+      ExecStart = "${gce}/bin/google_network_daemon";
+      StandardOutput="journal+console";
+      Type="simple";
     };
+    wantedBy = [ "multi-user.target" ];
   };
 
+  systemd.services.google-clock-skew-daemon = {
+    description = "Google Compute Engine Clock Skew Daemon";
+    after = [ "network.target" "google-instance-setup.service" "google-network-daemon.service" ];
+    serviceConfig = {
+      ExecStart = "${gce}/bin/google_clock_skew_daemon";
+      StandardOutput="journal+console";
+      Type = "simple";
+    };
+    wantedBy = ["multi-user.target"];
+  };
+
+
   systemd.services.google-shutdown-scripts = {
     description = "Google Compute Engine Shutdown Scripts";
     after = [
-      "local-fs.target"
       "network-online.target"
       "network.target"
       "rsyslog.service"
-      "systemd-resolved.service"
       "google-instance-setup.service"
       "google-network-daemon.service"
     ];
-    wants = [ "local-fs.target" "network-online.target" "network.target"];
-    wantedBy = [ "multi-user.target" ];
     serviceConfig = {
       ExecStart = "${pkgs.coreutils}/bin/true";
-      ExecStop = "${gce}/bin/google_metadata_script_runner --debug --script-type shutdown";
-      Type = "oneshot";
+      ExecStop = "${gce}/bin/google_metadata_script_runner --script-type shutdown";
       RemainAfterExit = true;
-      TimeoutStopSec = "infinity";
+      StandardOutput="journal+console";
+      TimeoutStopSec = "0";
+      Type = "oneshot";
     };
+    wantedBy = [ "multi-user.target" ];
   };
 
   systemd.services.google-startup-scripts = {
     description = "Google Compute Engine Startup Scripts";
     after = [
-      "local-fs.target"
       "network-online.target"
       "network.target"
       "rsyslog.service"
       "google-instance-setup.service"
       "google-network-daemon.service"
     ];
-    wants = ["local-fs.target" "network-online.target" "network.target"];
-    wantedBy = [ "multi-user.target" ];
     serviceConfig = {
-      ExecStart = "${gce}/bin/google_metadata_script_runner --debug --script-type startup";
+      ExecStart = "${gce}/bin/google_metadata_script_runner --script-type startup";
       KillMode = "process";
+      StandardOutput = "journal+console";
       Type = "oneshot";
     };
+    wantedBy = [ "multi-user.target" ];
   };
 
-
-  # Settings taken from https://github.com/GoogleCloudPlatform/compute-image-packages/blob/master/google_config/sysctl/11-gce-network-security.conf
-  boot.kernel.sysctl = {
-    # Turn on SYN-flood protections.  Starting with 2.6.26, there is no loss
-    # of TCP functionality/features under normal conditions.  When flood
-    # protections kick in under high unanswered-SYN load, the system
-    # should remain more stable, with a trade off of some loss of TCP
-    # functionality/features (e.g. TCP Window scaling).
-    "net.ipv4.tcp_syncookies" = mkDefault "1";
-
-    # ignores ICMP redirects
-    "net.ipv4.conf.all.accept_redirects" = mkDefault "0";
-
-    # ignores ICMP redirects
-    "net.ipv4.conf.default.accept_redirects" = mkDefault "0";
-
-    # ignores ICMP redirects from non-GW hosts
-    "net.ipv4.conf.all.secure_redirects" = mkDefault "1";
-
-    # ignores ICMP redirects from non-GW hosts
-    "net.ipv4.conf.default.secure_redirects" = mkDefault "1";
-
-    # don't allow traffic between networks or act as a router
-    "net.ipv4.ip_forward" = mkDefault "0";
-
-    # don't allow traffic between networks or act as a router
-    "net.ipv4.conf.all.send_redirects" = mkDefault "0";
-
-    # don't allow traffic between networks or act as a router
-    "net.ipv4.conf.default.send_redirects" = mkDefault "0";
-
-    # strict reverse path filtering - IP spoofing protection
-    "net.ipv4.conf.all.rp_filter" = mkDefault "1";
-
-    # strict path filtering - IP spoofing protection
-    "net.ipv4.conf.default.rp_filter" = mkDefault "1";
-
-    # ignores ICMP broadcasts to avoid participating in Smurf attacks
-    "net.ipv4.icmp_echo_ignore_broadcasts" = mkDefault "1";
-
-    # ignores bad ICMP errors
-    "net.ipv4.icmp_ignore_bogus_error_responses" = mkDefault "1";
-
-    # logs spoofed, source-routed, and redirect packets
-    "net.ipv4.conf.all.log_martians" = mkDefault "1";
-
-    # log spoofed, source-routed, and redirect packets
-    "net.ipv4.conf.default.log_martians" = mkDefault "1";
-
-    # implements RFC 1337 fix
-    "net.ipv4.tcp_rfc1337" = mkDefault "1";
-
-    # randomizes addresses of mmap base, heap, stack and VDSO page
-    "kernel.randomize_va_space" = mkDefault "2";
-
-    # Reboot the machine soon after a kernel panic.
-    "kernel.panic" = mkDefault "10";
-
-    ## Not part of the original config
-
-    # provides protection from ToCToU races
-    "fs.protected_hardlinks" = mkDefault "1";
-
-    # provides protection from ToCToU races
-    "fs.protected_symlinks" = mkDefault "1";
-
-    # makes locating kernel addresses more difficult
-    "kernel.kptr_restrict" = mkDefault "1";
-
-    # set ptrace protections
-    "kernel.yama.ptrace_scope" = mkOverride 500 "1";
-
-    # set perf only available to root
-    "kernel.perf_event_paranoid" = mkDefault "2";
-
-  };
-
+  environment.etc."sysctl.d/11-gce-network-security.conf".source = "${gce}/sysctl.d/11-gce-network-security.conf";
 }
diff --git a/nixos/modules/virtualisation/kvmgt.nix b/nixos/modules/virtualisation/kvmgt.nix
index df4c5678fd192..36ef6d17df69d 100644
--- a/nixos/modules/virtualisation/kvmgt.nix
+++ b/nixos/modules/virtualisation/kvmgt.nix
@@ -9,7 +9,7 @@ let
 
   vgpuOptions = {
     uuid = mkOption {
-      type = types.string;
+      type = types.str;
       description = "UUID of VGPU device. You can generate one with <package>libossp_uuid</package>.";
     };
   };
@@ -23,7 +23,7 @@ in {
       '';
       # multi GPU support is under the question
       device = mkOption {
-        type = types.string;
+        type = types.str;
         default = "0000:00:02.0";
         description = "PCI ID of graphics card. You can figure it with <command>ls /sys/class/mdev_bus</command>.";
       };
diff --git a/nixos/modules/virtualisation/xen-dom0.nix b/nixos/modules/virtualisation/xen-dom0.nix
index 70e575b6c0d2d..06d5c63476f93 100644
--- a/nixos/modules/virtualisation/xen-dom0.nix
+++ b/nixos/modules/virtualisation/xen-dom0.nix
@@ -119,7 +119,7 @@ in
 
     virtualisation.xen.domains = {
         extraConfig = mkOption {
-          type = types.string;
+          type = types.lines;
           default = "";
           description =
             ''
diff --git a/nixos/release-combined.nix b/nixos/release-combined.nix
index ffa087bb6f282..9e2109d88b5fc 100644
--- a/nixos/release-combined.nix
+++ b/nixos/release-combined.nix
@@ -68,6 +68,7 @@ in rec {
         nixos.tests.chromium.x86_64-linux or []
         (all nixos.tests.firefox)
         (all nixos.tests.firewall)
+        (all nixos.tests.fontconfig-default-fonts)
         (all nixos.tests.gnome3-xorg)
         (all nixos.tests.gnome3)
         (all nixos.tests.pantheon)
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 557ee78df7c69..8ee4dfbf13bc5 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -87,6 +87,7 @@ in
   flatpak = handleTest ./flatpak.nix {};
   flatpak-builder = handleTest ./flatpak-builder.nix {};
   fluentd = handleTest ./fluentd.nix {};
+  fontconfig-default-fonts = handleTest ./fontconfig-default-fonts.nix {};
   fsck = handleTest ./fsck.nix {};
   fwupd = handleTestOn ["x86_64-linux"] ./fwupd.nix {}; # libsmbios is unsupported on aarch64
   gdk-pixbuf = handleTest ./gdk-pixbuf.nix {};
@@ -233,6 +234,7 @@ in
   rabbitmq = handleTest ./rabbitmq.nix {};
   radarr = handleTest ./radarr.nix {};
   radicale = handleTest ./radicale.nix {};
+  redis = handleTest ./redis.nix {};
   redmine = handleTest ./redmine.nix {};
   roundcube = handleTest ./roundcube.nix {};
   rspamd = handleTest ./rspamd.nix {};
diff --git a/nixos/tests/fontconfig-default-fonts.nix b/nixos/tests/fontconfig-default-fonts.nix
new file mode 100644
index 0000000000000..1991cec92189f
--- /dev/null
+++ b/nixos/tests/fontconfig-default-fonts.nix
@@ -0,0 +1,28 @@
+import ./make-test.nix ({ lib, ... }:
+{
+  name = "fontconfig-default-fonts";
+
+  machine = { config, pkgs, ... }: {
+    fonts.enableDefaultFonts = true; # Background fonts
+    fonts.fonts = with pkgs; [
+      noto-fonts-emoji
+      cantarell-fonts
+      twitter-color-emoji
+      source-code-pro
+      gentium
+    ];
+    fonts.fontconfig.defaultFonts = {
+      serif = [ "Gentium Plus" ];
+      sansSerif = [ "Cantarell" ];
+      monospace = [ "Source Code Pro" ];
+      emoji = [ "Twitter Color Emoji" ];
+    };
+  };
+
+  testScript = ''
+    $machine->succeed("fc-match serif | grep '\"Gentium Plus\"'");
+    $machine->succeed("fc-match sans-serif | grep '\"Cantarell\"'");
+    $machine->succeed("fc-match monospace | grep '\"Source Code Pro\"'");
+    $machine->succeed("fc-match emoji | grep '\"Twitter Color Emoji\"'");
+  '';
+})
diff --git a/nixos/tests/hocker-fetchdocker/machine.nix b/nixos/tests/hocker-fetchdocker/machine.nix
index 78343f0e02f0f..885adebe14985 100644
--- a/nixos/tests/hocker-fetchdocker/machine.nix
+++ b/nixos/tests/hocker-fetchdocker/machine.nix
@@ -11,8 +11,8 @@
   systemd.services.docker-load-fetchdocker-image = {
     description = "Docker load hello-world-container";
     wantedBy    = [ "multi-user.target" ];
-    wants       = [ "docker.service" "local-fs.target" ];
-    after       = [ "docker.service" "local-fs.target" ];
+    wants       = [ "docker.service" ];
+    after       = [ "docker.service" ];
 
     script = ''
       ${pkgs.hello-world-container}/compositeImage.sh | ${pkgs.docker}/bin/docker load
diff --git a/nixos/tests/redis.nix b/nixos/tests/redis.nix
new file mode 100644
index 0000000000000..325d93424dd7d
--- /dev/null
+++ b/nixos/tests/redis.nix
@@ -0,0 +1,26 @@
+import ./make-test.nix ({ pkgs, ...} : {
+  name = "redis";
+  meta = with pkgs.stdenv.lib.maintainers; {
+    maintainers = [ flokli ];
+  };
+
+  nodes = {
+    machine =
+      { pkgs, ... }:
+
+      {
+        services.redis.enable = true;
+        services.redis.unixSocket = "/run/redis/redis.sock";
+      };
+  };
+
+  testScript = ''
+    startAll;
+
+    $machine->waitForUnit("redis");
+    $machine->waitForOpenPort("6379");
+
+    $machine->succeed("redis-cli ping | grep PONG");
+    $machine->succeed("redis-cli -s /run/redis/redis.sock ping | grep PONG");
+  '';
+})
diff --git a/pkgs/applications/backup/crashplan/CrashPlanDesktop.patch b/pkgs/applications/backup/crashplan/CrashPlanDesktop.patch
deleted file mode 100644
index 7fa68ba4a3883..0000000000000
--- a/pkgs/applications/backup/crashplan/CrashPlanDesktop.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- ./scripts/CrashPlanDesktop	2016-03-02 21:01:58.000000000 -0500
-+++ ./scripts/CrashPlanDesktop-1	2016-03-18 20:52:10.117686266 -0400
-@@ -11,7 +11,7 @@
- cd ${TARGETDIR}
- 
- if [ "_${VERSION_5_UI}" == "_true" ]; then
--	${TARGETDIR}/electron/crashplan > ${TARGETDIR}/log/ui_output.log 2> ${TARGETDIR}/log/ui_error.log &
-+	${TARGETDIR}/electron/crashplan &
- else
--	${JAVACOMMON} ${GUI_JAVA_OPTS} -classpath "./lib/com.backup42.desktop.jar:./lang:./skin" com.backup42.desktop.CPDesktop > ${TARGETDIR}/log/ui_output.log 2> ${TARGETDIR}/log/ui_error.log &
-+	${JAVACOMMON} ${GUI_JAVA_OPTS} -classpath "./lib/com.backup42.desktop.jar:./lang:./skin" com.backup42.desktop.CPDesktop &
- fi
diff --git a/pkgs/applications/backup/crashplan/CrashPlanEngine.patch b/pkgs/applications/backup/crashplan/CrashPlanEngine.patch
deleted file mode 100644
index de2afe2da6847..0000000000000
--- a/pkgs/applications/backup/crashplan/CrashPlanEngine.patch
+++ /dev/null
@@ -1,37 +0,0 @@
---- ./scripts/CrashPlanEngine	2014-02-19 23:17:19.000000000 +0000
-+++ ./scripts/CrashPlanEngine.1	2014-07-24 17:36:37.330333581 +0100
-@@ -11,7 +11,7 @@
- 	
- 	cd $TARGETDIR
- 		
--	nice -n 19 $JAVACOMMON $SRV_JAVA_OPTS -classpath $FULL_CP com.backup42.service.CPService > $TARGETDIR/log/engine_output.log 2> $TARGETDIR/log/engine_error.log & 
-+	nice -n 19 $JAVACOMMON $SRV_JAVA_OPTS -classpath $FULL_CP com.backup42.service.CPService > $VARDIR/log/engine_output.log 2> $VARDIR/log/engine_error.log & 
- 	
- 	if [[ $! -gt 0 ]]; then
- 		echo $! > $PIDFILE
-@@ -26,7 +26,7 @@
- 
- 	echo "Using Ubuntu 9.04 startup"
- 	
--	start-stop-daemon -v --pidfile $PIDFILE --make-pidfile --background --chdir $TARGETDIR --start --nicelevel 19 --exec $JAVACOMMON -- $SRV_JAVA_OPTS -classpath $FULL_CP com.backup42.service.CPService > $TARGETDIR/log/engine_output.log 2> $TARGETDIR/log/engine_error.log
-+	start-stop-daemon -v --pidfile $PIDFILE --make-pidfile --background --chdir $TARGETDIR --start --nicelevel 19 --exec $JAVACOMMON -- $SRV_JAVA_OPTS -classpath $FULL_CP com.backup42.service.CPService > $VARDIR/log/engine_output.log 2> $VARDIR/log/engine_error.log
- 	
- 	# This test isn't as useful as one might like; start-stop-daemon can't accurately report the state of child processes when --background is used.
- 	# We use this mainly to report the specific error value returned by start-stop-daemon if something goes wrong, but be aware that a return value
-@@ -91,7 +91,6 @@
- DESC="CrashPlan Engine"
- NAME=CrashPlanEngine
- DAEMON=$TARGETDIR/lib/com.backup42.desktop.jar
--PIDFILE="$TARGETDIR/${NAME}.pid"
- 
- if [[ -f $TARGETDIR/install.vars ]]; then
- 	. $TARGETDIR/install.vars
-@@ -100,6 +99,8 @@
- 	exit 1
- fi
- 
-+PIDFILE="$VARDIR/${NAME}.pid"
-+
- if [[ ! -f $DAEMON ]]; then
- 	echo "Could not find JAR file $DAEMON"
- 	exit 0
diff --git a/pkgs/applications/backup/crashplan/crashplan-small-business.nix b/pkgs/applications/backup/crashplan/crashplan-small-business.nix
deleted file mode 100644
index 5db4badeb6c0a..0000000000000
--- a/pkgs/applications/backup/crashplan/crashplan-small-business.nix
+++ /dev/null
@@ -1,103 +0,0 @@
-{ stdenv, fetchurl, makeWrapper, getopt, jre, cpio, gawk, gnugrep, gnused,
-  procps, which, gtk2, atk, glib, pango, gdk-pixbuf, cairo, freetype,
-  fontconfig, dbus, gconf, nss, nspr, alsaLib, cups, expat, udev,
-  libX11, libxcb, libXi, libXcursor, libXdamage, libXrandr, libXcomposite,
-  libXext, libXfixes, libXrender, libXtst, libXScrnSaver, nodePackages,
-  maxRam ? "1024m" }:
-
-stdenv.mkDerivation rec {
-  version = "6.7.0";
-  rev = "1512021600670_4503";
-  pname = "CrashPlanSmb";
-  name = "${pname}_${version}_${rev}";
-
-  src = fetchurl {
-    url = "https://web-eam-msp.crashplanpro.com/client/installers/${name}_Linux.tgz";
-    sha256 = "0f7ykfxaqjlvv4hv12yc5z8y1vjsysdblv53byml7i1fy1r0q26q";
-  };
-
-  nativeBuildInputs = [ makeWrapper cpio nodePackages.asar ];
-  buildInputs = [ getopt which ];
-
-  vardir = "/var/lib/crashplan";
-  manifestdir = "${vardir}/manifest";
-
-  postPatch = ''
-    # patch scripts/CrashPlanEngine
-    substituteInPlace scripts/CrashPlanEngine \
-      --replace /bin/ps ${procps}/bin/ps \
-      --replace awk ${gawk}/bin/awk \
-      --replace '`sed' '`${gnused}/bin/sed' \
-      --replace grep ${gnugrep}/bin/grep \
-      --replace TARGETDIR/log VARDIR/log \
-      --replace TARGETDIR/\''${NAME} VARDIR/\''${NAME} \
-      --replace \$TARGETDIR/bin/run.conf $out/bin/run.conf \
-      --replace \$VARDIR ${vardir}
-
-    # patch scripts/CrashPlanDesktop
-    substituteInPlace scripts/CrashPlanDesktop \
-      --replace awk ${gawk}/bin/awk \
-      --replace "\"\$SCRIPTDIR/..\"" "$out" \
-      --replace "\$(dirname \$SCRIPT)" "$out" \
-      --replace "\''${TARGETDIR}/log" ${vardir}/log \
-      --replace "\''${TARGETDIR}" "$out"
-  '';
-
-  installPhase = ''
-    mkdir $out
-    zcat -v ${pname}_${version}.cpi | (cd $out; cpio -i -d -v --no-preserve-owner)
-
-    install -D -m 755 scripts/CrashPlanDesktop $out/bin/CrashPlanDesktop
-    install -D -m 755 scripts/CrashPlanEngine $out/bin/CrashPlanEngine
-    install -D -m 644 scripts/run.conf $out/bin/run.conf
-    install -D -m 644 scripts/CrashPlan.desktop $out/share/applications/CrashPlan.desktop
-
-    # unpack, patch and repack app.asar to stop electron from creating /usr/local/crashplan/log to store the ui logs.
-    asar e $out/app.asar $out/app.asar-unpacked
-    rm -v $out/app.asar
-    substituteInPlace $out/app.asar-unpacked/shared_modules/shell/platform_paths.js \
-      --replace "getLogFileParentPath();" "\"$vardir/log\";"
-    asar p $out/app.asar-unpacked $out/app.asar
-
-    mv -v $out/*.asar $out/electron/resources
-    chmod 755 "$out/electron/crashplan"
-
-    rm -r $out/log
-    mv -v $out/conf $out/conf.template
-    ln -s $vardir/log $out/log
-    ln -s $vardir/cache $out/cache
-    ln -s $vardir/conf $out/conf
-
-    substituteInPlace $out/bin/run.conf \
-      --replace "-Xmx1024m" "-Xmx${maxRam}"
-
-    echo "JAVACOMMON=${jre}/bin/java" > $out/install.vars
-    echo "APP_BASENAME=CrashPlan" >> $out/install.vars
-    echo "TARGETDIR=$out" >> $out/install.vars
-    echo "BINSDIR=$out/bin" >> $out/install.vars
-    echo "MANIFESTDIR=${manifestdir}" >> $out/install.vars
-    echo "VARDIR=${vardir}" >> $out/install.vars
-    echo "INITDIR=" >> $out/install.vars
-    echo "RUNLVLDIR=" >> $out/install.vars
-    echo "INSTALLDATE=" >> $out/install.vars
-
-  '';
-
-  postFixup = ''
-    patchelf --set-interpreter ${stdenv.glibc}/lib/ld-linux-x86-64.so.2 $out/electron/crashplan
-    wrapProgram $out/bin/CrashPlanDesktop --prefix LD_LIBRARY_PATH ":" "${stdenv.lib.makeLibraryPath [
-      stdenv.cc.cc.lib gtk2 atk glib pango gdk-pixbuf cairo freetype
-      fontconfig dbus gconf nss nspr alsaLib cups expat udev
-      libX11 libxcb libXi libXcursor libXdamage libXrandr libXcomposite
-      libXext libXfixes libXrender libXtst libXScrnSaver]}"
-  '';
-
-  meta = with stdenv.lib; {
-    description = "An online backup solution";
-    homepage = http://www.crashplan.com/business/;
-    license = licenses.unfree;
-    platforms = [ "x86_64-linux" ];
-    maintainers = with maintainers; [ xvapx ];
-    broken = true; # 2018-12-06
-  };
-}
diff --git a/pkgs/applications/backup/crashplan/default.nix b/pkgs/applications/backup/crashplan/default.nix
deleted file mode 100644
index 2c76891b3f9ed..0000000000000
--- a/pkgs/applications/backup/crashplan/default.nix
+++ /dev/null
@@ -1,81 +0,0 @@
-{ stdenv, fetchurl, makeWrapper, jre, cpio, gawk, gnugrep, gnused, procps, gtk2, glib, libXtst }:
-
-stdenv.mkDerivation rec {
-  version = "4.8.3";
-  rev = "1"; #tracks unversioned changes that occur on download.code42.com from time to time
-  name = "crashplan-${version}-r${rev}";
-
-  src = fetchurl {
-    url = "https://download.code42.com/installs/linux/install/CrashPlan/CrashPlan_${version}_Linux.tgz";
-    sha256 = "c25d87ec1d442a396b668547e39b70d66dcfe02250cc57a25916ebb42a407113";
-  };
-
-  meta = with stdenv.lib; {
-    description = "An online/offline backup solution";
-    homepage = http://www.crashplan.org;
-    license = licenses.unfree;
-    maintainers = with maintainers; [ sztupi domenkozar jerith666 ];
-  };
-
-  buildInputs = [ makeWrapper cpio ];
-
-  vardir = "/var/lib/crashplan";
-
-  manifestdir = "${vardir}/manifest";
-
-  patches = [ ./CrashPlanEngine.patch ./CrashPlanDesktop.patch ];
-
-  installPhase = ''
-    mkdir $out
-    zcat -v CrashPlan_${version}.cpi | (cd $out; cpio -i -d -v --no-preserve-owner)
-
-    # sed -i "s|<manifestPath>manifest</manifestPath>|<manifestPath>${manifestdir}</manifestPath>|g" $out/conf/default.service.xml
-
-    # Fix for encoding troubles (CrashPlan ticket 178827)
-    # Make sure the daemon is running using the same localization as
-    # the (installing) user
-    echo "" >> run.conf
-    echo "LC_ALL=en_US.UTF-8" >> run.conf
-
-    install -d -m 755 unpacked $out
-
-    install -D -m 644 run.conf $out/bin/run.conf
-    install -D -m 755 scripts/CrashPlanDesktop $out/bin/CrashPlanDesktop
-    install -D -m 755 scripts/CrashPlanEngine $out/bin/CrashPlanEngine
-    install -D -m 644 scripts/CrashPlan.desktop $out/share/applications/CrashPlan.desktop
-
-    rm -r $out/log
-    mv -v $out/conf $out/conf.template
-    ln -s $vardir/log $out/log
-    ln -s $vardir/cache $out/cache
-    ln -s $vardir/backupArchives $out/backupArchives
-    ln -s $vardir/conf $out/conf
-
-    echo "JAVACOMMON=${jre}/bin/java" > $out/install.vars
-    echo "APP_BASENAME=CrashPlan" >> $out/install.vars
-    echo "TARGETDIR=${vardir}" >> $out/install.vars
-    echo "BINSDIR=$out/bin" >> $out/install.vars
-    echo "MANIFESTDIR=${manifestdir}" >> $out/install.vars
-    echo "VARDIR=${vardir}" >> $out/install.vars
-    echo "INITDIR=" >> $out/install.vars
-    echo "RUNLVLDIR=" >> $out/install.vars
-    echo "INSTALLDATE=" >> $out/install.vars
-  '';
-
-  postFixup = ''
-    for f in $out/bin/CrashPlanDesktop $out/bin/CrashPlanEngine; do
-      echo "substitutions in $f"
-      substituteInPlace $f --replace /bin/ps  ${procps}/bin/ps
-      substituteInPlace $f --replace awk      ${gawk}/bin/awk
-      substituteInPlace $f --replace sed      ${gnused}/bin/sed
-      substituteInPlace $f --replace grep     ${gnugrep}/bin/grep
-    done
-    
-    substituteInPlace $out/share/applications/CrashPlan.desktop \
-      --replace /usr/local  $out \
-      --replace crashplan/skin skin \
-      --replace bin/CrashPlanDesktop CrashPlanDesktop
-
-    wrapProgram $out/bin/CrashPlanDesktop --prefix LD_LIBRARY_PATH ":" "${stdenv.lib.makeLibraryPath [ gtk2 glib libXtst ]}"
-  '';
-}
diff --git a/pkgs/applications/blockchains/clightning.nix b/pkgs/applications/blockchains/clightning.nix
index a8846431f1efd..b20a6b3e8aa86 100644
--- a/pkgs/applications/blockchains/clightning.nix
+++ b/pkgs/applications/blockchains/clightning.nix
@@ -4,17 +4,19 @@
 with stdenv.lib;
 stdenv.mkDerivation rec {
   pname = "clightning";
-  version = "0.7.1";
+  version = "0.7.2.1";
 
   src = fetchurl {
     url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip";
-    sha256 = "557be34410f27a8d55d9f31a40717a8f5e99829f2bd114c24e7ca1dd5f6b7d85";
+    sha256 = "3be716948efc1208b5e6a41e3034e4e4eecc5abbdac769fd1d999a104ac3a2ec";
   };
 
   enableParallelBuilding = true;
 
   nativeBuildInputs = [ autoconf autogen automake libtool pkgconfig which unzip ];
-  buildInputs = [ sqlite gmp zlib python3 ];
+  buildInputs =
+    let py3 = python3.withPackages (p: [ p.Mako ]);
+    in [ sqlite gmp zlib py3 ];
 
   makeFlags = [ "prefix=$(out) VERSION=v${version}" ];
 
@@ -23,7 +25,10 @@ stdenv.mkDerivation rec {
   '';
 
   postPatch = ''
-    patchShebangs tools/generate-wire.py
+    patchShebangs \
+      tools/generate-wire.py \
+      tools/update-mocks.sh \
+      tools/mockup.sh
   '';
 
   doCheck = false;
diff --git a/pkgs/applications/blockchains/parity/beta.nix b/pkgs/applications/blockchains/parity/beta.nix
index 4b6a88fd410a5..a936691bd7993 100644
--- a/pkgs/applications/blockchains/parity/beta.nix
+++ b/pkgs/applications/blockchains/parity/beta.nix
@@ -1,6 +1,6 @@
 let
-  version     = "2.6.1";
-  sha256      = "0yvscs2ivy08zla3jhirxhwwaqsn9j5ml4sqbgx6h5rh19c941vh";
-  cargoSha256 = "1s3c44cggajrmc504klf4cyb1s4l5ny48yihs9c3fc0n8d064017";
+  version     = "2.6.2";
+  sha256      = "1j4249m5k3bi7di0wq6fm64zv3nlpgmg4hr5hnn94fyc09nz9n1r";
+  cargoSha256 = "18zd91n04wck3gd8szj4vxn3jq0bzq0h3rg0wcs6nzacbzhcx2sw";
 in
   import ./parity.nix { inherit version sha256 cargoSha256; }
diff --git a/pkgs/applications/blockchains/parity/default.nix b/pkgs/applications/blockchains/parity/default.nix
index 873f83190fde7..9b5a72077d5c4 100644
--- a/pkgs/applications/blockchains/parity/default.nix
+++ b/pkgs/applications/blockchains/parity/default.nix
@@ -1,6 +1,6 @@
 let
-  version     = "2.5.6";
-  sha256      = "1qkrqkkgjvm27babd6bidhf1n6vdp8rac1zy5kf61nfzplxzr2dy";
+  version     = "2.5.7";
+  sha256      = "0aprs71cbf98dsvjz0kydngkvdg5x7dijji8j6xadgvsarl1ljnj";
   cargoSha256 = "0aa0nkv3jr7cdzswbxghxxv0y65a59jgs1682ch8vrasi0x17m1x";
 in
   import ./parity.nix { inherit version sha256 cargoSha256; }
diff --git a/pkgs/applications/blockchains/parity/parity.nix b/pkgs/applications/blockchains/parity/parity.nix
index 23fb27c0525f0..7f28d97bf81a2 100644
--- a/pkgs/applications/blockchains/parity/parity.nix
+++ b/pkgs/applications/blockchains/parity/parity.nix
@@ -7,11 +7,10 @@
 , fetchFromGitHub
 , rustPlatform
 
-, pkgconfig
+, cmake
 , openssl
+, pkgconfig
 , systemd
-, cmake
-, perl
 }:
 
 rustPlatform.buildRustPackage {
@@ -26,10 +25,9 @@ rustPlatform.buildRustPackage {
     inherit sha256;
   };
 
-  buildInputs = [
-    pkgconfig cmake perl
-    systemd.lib systemd.dev openssl openssl.dev
-  ];
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [ openssl systemd ];
 
   cargoBuildFlags = [ "--features final" ];
 
diff --git a/pkgs/applications/editors/emacs-modes/coffee/default.nix b/pkgs/applications/editors/emacs-modes/coffee/default.nix
deleted file mode 100644
index 97d9ad5cc3c57..0000000000000
--- a/pkgs/applications/editors/emacs-modes/coffee/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ stdenv, fetchgit, emacs }:
-
-stdenv.mkDerivation {
-  name = "coffee-mode-0.4.1";
-
-  src = fetchgit {
-    url = "https://github.com/defunkt/coffee-mode.git";
-    rev = "c45c5f7a529363bc7aa57db0f3df26389fd233d8";
-    sha256 = "36a7792b5ffbcc5a580e8d5b2425494c60a8015cfde0e3f8a946a685da231ce2";
-  };
-
-  buildInputs = [ emacs ];
-
-  buildPhase = ''
-    emacs --batch -f batch-byte-compile coffee-mode.el
-  '';
-
-  installPhase = ''
-    install -d $out/share/emacs/site-lisp
-    install coffee-mode.el coffee-mode.elc $out/share/emacs/site-lisp
-  '';
-
-  meta = {
-    description = "Emacs major mode for CoffeeScript, unfancy JavaScript";
-    homepage = https://github.com/defunkt/coffee-mode;
-    license = stdenv.lib.licenses.gpl2Plus;
-
-    platforms = stdenv.lib.platforms.all;
-  };
-}
diff --git a/pkgs/applications/editors/emacs-modes/cua/builder.sh b/pkgs/applications/editors/emacs-modes/cua/builder.sh
deleted file mode 100644
index 6f7bb428c1a6d..0000000000000
--- a/pkgs/applications/editors/emacs-modes/cua/builder.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-source $stdenv/setup
-
-mkdir -p $out/emacs/site-lisp
-cp $src $out/emacs/site-lisp/cua.el
diff --git a/pkgs/applications/editors/emacs-modes/cua/default.nix b/pkgs/applications/editors/emacs-modes/cua/default.nix
deleted file mode 100644
index 0305be28ad62e..0000000000000
--- a/pkgs/applications/editors/emacs-modes/cua/default.nix
+++ /dev/null
@@ -1,8 +0,0 @@
-{stdenv, fetchurl}: stdenv.mkDerivation {
-  name = "cua-mode-2.10";
-  builder = ./builder.sh;
-  src = fetchurl {
-    url = http://tarballs.nixos.org/cua-mode-2.10.el;
-    sha256 = "01877xjbq0v9wrpcbnhvppdn9wxliwkkjg3dr6k795mjgslwhr1b";
-  };
-}
diff --git a/pkgs/applications/editors/emacs-modes/elpa-packages.nix b/pkgs/applications/editors/emacs-modes/elpa-packages.nix
index 5f0c863b58617..a6bea779eae01 100644
--- a/pkgs/applications/editors/emacs-modes/elpa-packages.nix
+++ b/pkgs/applications/editors/emacs-modes/elpa-packages.nix
@@ -36,13 +36,7 @@ self: let
     super = removeAttrs imported [ "dash" ];
 
     overrides = {
-      # upstream issue: missing footer
-      ebdb-i18n-chn = markBroken super.ebdb-i18n-chn;
-      el-search = markBroken super.el-search; # requires emacs-25
-      iterators = markBroken super.iterators; # requires emacs-25
-      midi-kbd = markBroken super.midi-kbd; # requires emacs-25
       rcirc-menu = markBroken super.rcirc-menu; # Missing file header
-      stream = markBroken super.stream; # requires emacs-25
       cl-lib = null; # builtin
       tle = null; # builtin
       advice = null; # builtin
diff --git a/pkgs/applications/editors/emacs-modes/emacs-clang-complete-async/default.nix b/pkgs/applications/editors/emacs-modes/emacs-clang-complete-async/default.nix
deleted file mode 100644
index 23a9b3b19206a..0000000000000
--- a/pkgs/applications/editors/emacs-modes/emacs-clang-complete-async/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ clangStdenv, fetchgit, llvmPackages }:
-
-clangStdenv.mkDerivation {
-  name = "emacs-clang-complete-async-20130218";
-  src = fetchgit {
-    url = "git://github.com/Golevka/emacs-clang-complete-async.git";
-    rev = "f01488971ec8b5752780d130fb84de0c16a46f31";
-    sha256 = "01smjinrvx0w5z847a43fh2hyr6rrq1kaglfakbr6dcr313w89x9";
-  };
-
-  buildInputs = [ llvmPackages.llvm ];
-
-  patches = [ ./fix-build.patch ];
-
-  CFLAGS = "-I${llvmPackages.clang}/include";
-  LDFLAGS = "-L${llvmPackages.clang}/lib";
-
-  installPhase = ''
-    mkdir -p $out/bin
-    mkdir -p $out/share/emacs/site-lisp
-    install -m 755 clang-complete $out/bin
-    install -m 644 auto-complete-clang-async.el $out/share/emacs/site-lisp
-  '';
-
-  meta = {
-    homepage = https://github.com/Golevka/emacs-clang-complete-async;
-    description = "An emacs plugin to complete C and C++ code using libclang";
-    license = clangStdenv.lib.licenses.gpl3Plus;
-
-    # Fails with:
-    # ./src/completion.h:5:10: fatal error: 'clang-c/Index.h' file not found
-    # include <clang-c/Index.h>
-    broken = true;
-  };
-}
diff --git a/pkgs/applications/editors/emacs-modes/emacs-clang-complete-async/fix-build.patch b/pkgs/applications/editors/emacs-modes/emacs-clang-complete-async/fix-build.patch
deleted file mode 100644
index 89de339a436b6..0000000000000
--- a/pkgs/applications/editors/emacs-modes/emacs-clang-complete-async/fix-build.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- old/src/completion.h	2014-11-16 16:58:16.625150124 +0100
-+++ new/src/completion.h	2014-11-16 16:58:28.020207508 +0100
-@@ -3,6 +3,7 @@
- 
- 
- #include <clang-c/Index.h>
-+#include <stdio.h>
- 
- 
- typedef struct __completion_Session_struct
diff --git a/pkgs/applications/editors/emacs-modes/gn/default.nix b/pkgs/applications/editors/emacs-modes/gn/default.nix
deleted file mode 100644
index 39e7d1abf386c..0000000000000
--- a/pkgs/applications/editors/emacs-modes/gn/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ stdenv, fetchgit, emacs }:
-
-stdenv.mkDerivation {
-  name = "gn-mode-2017-09-21";
-  src = fetchgit {
-    url = "https://chromium.googlesource.com/chromium/src/tools/gn";
-    rev = "34f2780efb3fe14fe361ec161ad58440de5a6b36";
-    sha256 = "10cisqz3l6ny3471yi7y1z8v622lpl65zh0liqr6absvmy63g866";
-  };
-  buildInputs = [ emacs ];
-
-  buildPhase = ''
-    emacs --batch -f batch-byte-compile misc/emacs/gn-mode.el
-  '';
-
-  installPhase = ''
-    mkdir -p $out/share/emacs/site-lisp/
-    cp misc/emacs/gn-mode.el* $out/share/emacs/site-lisp/
-  '';
-}
diff --git a/pkgs/applications/editors/emacs-modes/helm-words/default.nix b/pkgs/applications/editors/emacs-modes/helm-words/default.nix
index b28d0ae24a342..c6e1c5a50f4a4 100644
--- a/pkgs/applications/editors/emacs-modes/helm-words/default.nix
+++ b/pkgs/applications/editors/emacs-modes/helm-words/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchgit }:
 
 stdenv.mkDerivation {
-  name = "helm-words-20150413";
+  name = "helm-words-20190917";
 
   src = fetchgit {
     url = "https://github.com/pronobis/helm-words.git";
-    rev = "637aa3a7e9cfd34e0127472c5b1f993a4da26185";
-    sha256 = "19l8vysjygscr1nsddjz2yv0fjhbsswfq40rdny8zsmaa6qhpj35";
+    rev = "e6387ece1940a06695b9d910de3d90252efb8d29";
+    sha256 = "1ly0mbzlgc26fqvf7rxpmy698g0cf9qldrwrx022ar6r68l1h7xf";
   };
 
   installPhase = ''
diff --git a/pkgs/applications/editors/emacs-modes/manual-packages.nix b/pkgs/applications/editors/emacs-modes/manual-packages.nix
index c726302578c63..545ad5a5e0c38 100644
--- a/pkgs/applications/editors/emacs-modes/manual-packages.nix
+++ b/pkgs/applications/editors/emacs-modes/manual-packages.nix
@@ -130,8 +130,6 @@
 
   railgun = callPackage ./railgun { };
 
-  gn = callPackage ./gn { };
-
   structured-haskell-mode = self.shm;
 
   thingatpt-plus = callPackage ./thingatpt-plus { };
@@ -145,12 +143,9 @@
   # From old emacsPackages (pre emacsPackagesNg)
   cedet = callPackage ./cedet { };
   cedille = callPackage ./cedille { cedille = pkgs.cedille; };
-  coffee = callPackage ./coffee { };
   colorThemeSolarized = callPackage ./color-theme-solarized {
     colorTheme = self.color-theme;
   };
-  cua = callPackage ./cua { };
-  emacsClangCompleteAsync = callPackage ./emacs-clang-complete-async { };
   emacsSessionManagement = callPackage ./session-management-for-emacs { };
   hsc3-mode = callPackage ./hsc3 { };
   hol_light_mode = callPackage ./hol_light { };
diff --git a/pkgs/applications/editors/emacs-modes/melpa-packages.nix b/pkgs/applications/editors/emacs-modes/melpa-packages.nix
index 3c38c9d86b03c..fe440c146ae8e 100644
--- a/pkgs/applications/editors/emacs-modes/melpa-packages.nix
+++ b/pkgs/applications/editors/emacs-modes/melpa-packages.nix
@@ -34,7 +34,7 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
     super = lib.listToAttrs (map (melpaDerivation variant) (lib.importJSON archiveJson));
 
     overrides = rec {
-      shared = {
+      shared = rec {
         # Expects bash to be at /bin/bash
         ac-rtags = markBroken super.ac-rtags;
 
@@ -42,8 +42,12 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
           inherit (self.melpaPackages) powerline;
         };
 
-        # upstream issue: missing file header
-        bufshow = markBroken super.bufshow;
+        auto-complete-clang-async = super.auto-complete-clang-async.overrideAttrs(old: {
+          buildInputs = old.buildInputs ++ [ external.llvmPackages.llvm ];
+          CFLAGS = "-I${external.llvmPackages.clang}/include";
+          LDFLAGS = "-L${external.llvmPackages.clang}/lib";
+        });
+        emacsClangCompleteAsync = auto-complete-clang-async;
 
         # part of a larger package
         caml = dontConfigure super.caml;
@@ -64,9 +68,6 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
           inherit (self.melpaPackages) easy-kill;
         };
 
-        # upstream issue: missing file header
-        elmine = markBroken super.elmine;
-
         elpy = super.elpy.overrideAttrs(old: {
           propagatedUserEnvPkgs = old.propagatedUserEnvPkgs ++ [ external.elpy ];
         });
@@ -101,9 +102,6 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
         # Expects bash to be at /bin/bash
         flycheck-rtags = markBroken super.flycheck-rtags;
 
-        # build timeout
-        graphene = markBroken super.graphene;
-
         pdf-tools = super.pdf-tools.overrideAttrs(old: {
           nativeBuildInputs = [ external.pkgconfig ];
           buildInputs = with external; old.buildInputs ++ [ autoconf automake libpng zlib poppler ];
@@ -123,12 +121,6 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
           propagatedUserEnvPkgs = [ external.hindent ];
         });
 
-        # upstream issue: missing file header
-        ido-complete-space-or-hyphen = markBroken super.ido-complete-space-or-hyphen;
-
-        # upstream issue: missing file header
-        initsplit = markBroken super.initsplit;
-
         irony = super.irony.overrideAttrs (old: {
           cmakeFlags = old.cmakeFlags or [] ++ [ "-DCMAKE_INSTALL_BINDIR=bin" ];
           NIX_CFLAGS_COMPILE = "-UCLANG_RESOURCE_DIR";
@@ -162,12 +154,6 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
         # Expects bash to be at /bin/bash
         ivy-rtags = markBroken super.ivy-rtags;
 
-        # upstream issue: missing file header
-        jsfmt = markBroken super.jsfmt;
-
-        # upstream issue: missing file header
-        maxframe = markBroken super.maxframe;
-
         magit = super.magit.overrideAttrs (attrs: {
           # searches for Git at build time
           nativeBuildInputs =
@@ -210,13 +196,13 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
             (attrs.nativeBuildInputs or []) ++ [ external.git ];
         });
 
-      kubernetes = super.kubernetes.overrideAttrs (attrs: {
-        # searches for Git at build time
-        nativeBuildInputs =
-          (attrs.nativeBuildInputs or []) ++ [ external.git ];
-      });
+        kubernetes = super.kubernetes.overrideAttrs (attrs: {
+          # searches for Git at build time
+          nativeBuildInputs =
+            (attrs.nativeBuildInputs or []) ++ [ external.git ];
+        });
 
-      # upstream issue: missing file header
+        # upstream issue: missing file header
         mhc = super.mhc.override {
           inherit (self.melpaPackages) calfw;
         };
@@ -227,25 +213,12 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
         # part of a larger package
         notmuch = dontConfigure super.notmuch;
 
-        # missing OCaml
-        ocp-indent = markBroken super.ocp-indent;
-
-        # upstream issue: missing file header
-        qiita = markBroken super.qiita;
-
-        # upstream issue: missing file header
-        speech-tagger = markBroken super.speech-tagger;
-
         shm = super.shm.overrideAttrs (attrs: {
           propagatedUserEnvPkgs = [ external.structured-haskell-mode ];
         });
 
-        # upstream issue: missing file header
-        tawny-mode = markBroken super.tawny-mode;
-
         # Telega has a server portion for it's network protocol
         telega = super.telega.overrideAttrs(old: {
-
           buildInputs = old.buildInputs ++ [ pkgs.tdlib ];
 
           postBuild = ''
@@ -258,26 +231,13 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
             mkdir -p $out/bin
             install -m755 -Dt $out/bin ./source/server/telega-server
           '';
-
         });
 
-        # upstream issue: missing file header
-        textmate = markBroken super.textmate;
-
-        # missing OCaml
-        utop = markBroken super.utop;
-
         vdiff-magit = super.vdiff-magit.overrideAttrs (attrs: {
           nativeBuildInputs =
             (attrs.nativeBuildInputs or []) ++ [ external.git ];
         });
 
-        # upstream issue: missing file header
-        voca-builder = markBroken super.voca-builder;
-
-        # upstream issue: missing file header
-        window-numbering = markBroken super.window-numbering;
-
         zmq = super.zmq.overrideAttrs(old: {
           stripDebugList = [ "share" ];
           preBuild = ''
@@ -317,9 +277,13 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
       };
 
       stable = shared // {
+
+        # upstream issue: missing file header
+        bufshow = markBroken super.bufshow;
+
         # part of a larger package
         # upstream issue: missing package version
-        cmake-mode = markBroken (dontConfigure super.cmake-mode);
+        cmake-mode = dontConfigure super.cmake-mode;
 
         # upstream issue: missing file header
         connection = markBroken super.connection;
@@ -330,47 +294,48 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
         # missing git
         egg = markBroken super.egg;
 
-        # upstream issue: missing dependency redshank
-        emr = markBroken super.emr;
-
-        # upstream issue: doesn't build
-        eterm-256color = markBroken super.eterm-256color;
+        # upstream issue: missing file header
+        elmine = markBroken super.elmine;
 
-        # upstream issue: missing dependency highlight
-        evil-search-highlight-persist = markBroken super.evil-search-highlight-persist;
+        # upstream issue: missing file header
+        ido-complete-space-or-hyphen = markBroken super.ido-complete-space-or-hyphen;
 
-        # upstream issue: missing dependency highlight
-        floobits  = markBroken super.floobits;
+        # upstream issue: missing file header
+        initsplit = markBroken super.initsplit;
 
-        # missing OCaml
-        flycheck-ocaml = markBroken super.flycheck-ocaml;
+        # upstream issue: missing file header
+        jsfmt = markBroken super.jsfmt;
 
-        # upstream issue: missing dependency
-        fold-dwim-org = markBroken super.fold-dwim-org;
+        # upstream issue: missing file header
+        maxframe = markBroken super.maxframe;
 
-        # build timeout
-        graphene = markBroken super.graphene;
+        # upstream issue: doesn't build
+        eterm-256color = markBroken super.eterm-256color;
 
         # Expects bash to be at /bin/bash
         helm-rtags = markBroken super.helm-rtags;
 
         # upstream issue: missing file header
+        qiita = markBroken super.qiita;
+
+        # upstream issue: missing file header
+        speech-tagger = markBroken super.speech-tagger;
+
+        # upstream issue: missing file header
+        textmate = markBroken super.textmate;
+
+        # upstream issue: missing file header
         link = markBroken super.link;
 
-        # missing OCaml
-        merlin = markBroken super.merlin;
+        # upstream issue: missing file header
+        voca-builder = markBroken super.voca-builder;
 
         # upstream issue: missing file header
-        po-mode = markBroken super.po-mode;
+        window-numbering = markBroken super.window-numbering;
 
-        # upstream issue: truncated file
-        powershell = markBroken super.powershell;
       };
 
       unstable = shared // {
-        # upstream issue: mismatched filename
-        ack-menu = markBroken super.ack-menu;
-
         editorconfig = super.editorconfig.overrideAttrs (attrs: {
           propagatedUserEnvPkgs = [ external.editorconfig-core-c ];
         });
@@ -392,9 +357,6 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
             (attrs.nativeBuildInputs or []) ++ [ external.git ];
         });
 
-        # upstream issue: mismatched filename
-        helm-lobsters = markBroken super.helm-lobsters;
-
         # Expects bash to be at /bin/bash
         helm-rtags = markBroken super.helm-rtags;
 
@@ -410,9 +372,6 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
           HOME = "/tmp";
         });
 
-        # upstream issue: mismatched filename
-        processing-snippets = markBroken super.processing-snippets;
-
         racer = super.racer.overrideAttrs (attrs: {
           postPatch = attrs.postPatch or "" + ''
             substituteInPlace racer.el \
@@ -420,9 +379,6 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac
           '';
         });
 
-        # upstream issue: missing file footer
-        seoul256-theme = markBroken super.seoul256-theme;
-
         spaceline = super.spaceline.override {
           inherit (self.melpaPackages) powerline;
         };
diff --git a/pkgs/applications/editors/emacs-modes/tramp/default.nix b/pkgs/applications/editors/emacs-modes/tramp/default.nix
index b0cfe99790816..3b746c293d88c 100644
--- a/pkgs/applications/editors/emacs-modes/tramp/default.nix
+++ b/pkgs/applications/editors/emacs-modes/tramp/default.nix
@@ -1,10 +1,10 @@
 { stdenv, fetchurl, emacs, texinfo }:
 
 stdenv.mkDerivation rec {
-  name = "tramp-2.3.0";
+  name = "tramp-2.4.2";
   src = fetchurl {
     url = "mirror://gnu/tramp/${name}.tar.gz";
-    sha256 = "1srwm24lwyf00w1661wbx03xg6j943dk05jhwnwdjf99m82cqbgi";
+    sha256 = "082nwvi99y0bvpl1yhn4yjc8a613jh1pdck253lxn062lkcxxw61";
   };
   buildInputs = [ emacs texinfo ];
   meta = {
diff --git a/pkgs/applications/graphics/freecad/default.nix b/pkgs/applications/graphics/freecad/default.nix
index 5f866d00b3e1f..ee7586709dcba 100644
--- a/pkgs/applications/graphics/freecad/default.nix
+++ b/pkgs/applications/graphics/freecad/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, mkDerivation, fetchurl, cmake, ninja, coin3d, xercesc, ode, eigen, qt5, opencascade-occt, gts
-, hdf5, vtk, medfile, zlib, python3Packages, swig, gfortran, libXmu
-, soqt, libf2c, libGLU, makeWrapper, pkgconfig
-, mpi ? null }:
+{ stdenv, mkDerivation, fetchurl, fetchpatch, cmake, ninja, coin3d, xercesc, ode
+, eigen, qtbase, qttools, qtwebkit, opencascade-occt, gts, hdf5, vtk, medfile
+, zlib, python3Packages, swig, gfortran, libXmu, soqt, libf2c, libGLU
+, makeWrapper, pkgconfig, mpi ? null }:
 
 assert mpi != null;
 
@@ -19,13 +19,20 @@ in mkDerivation rec {
   nativeBuildInputs = [ cmake ninja pkgconfig pythonPackages.pyside2-tools ];
   buildInputs = [ cmake coin3d xercesc ode eigen opencascade-occt gts
     zlib swig gfortran soqt libf2c makeWrapper mpi vtk hdf5 medfile
-    libGLU libXmu
-  ] ++ (with qt5; [
-    qtbase qttools qtwebkit
-  ]) ++ (with pythonPackages; [
+    libGLU libXmu qtbase qttools qtwebkit
+  ] ++ (with pythonPackages; [
     matplotlib pycollada shiboken2 pyside2 pyside2-tools pivy python boost
   ]);
 
+  # Fix missing app icon on Wayland. Has been upstreamed and should be safe to
+  # remove in versions >= 0.19
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/FreeCAD/FreeCAD/commit/c4d2a358ca125d51d059dfd72dcbfba326196dfc.patch";
+      sha256 = "0yqc9zrxgi2c2xcidm8wh7a9yznkphqvjqm9742qm5fl20p8gl4h";
+    })
+  ];
+
   cmakeFlags = [
     "-DBUILD_QT5=ON"
     "-DSHIBOKEN_INCLUDE_DIR=${pythonPackages.shiboken2}/include"
diff --git a/pkgs/applications/graphics/nomacs/default.nix b/pkgs/applications/graphics/nomacs/default.nix
index e439372648366..62fae518b9291 100644
--- a/pkgs/applications/graphics/nomacs/default.nix
+++ b/pkgs/applications/graphics/nomacs/default.nix
@@ -1,9 +1,8 @@
 { stdenv
+, mkDerivation
 , fetchFromGitHub
 , cmake
 , pkgconfig
-, wrapGAppsHook
-, gsettings-desktop-schemas
 
 , qtbase
 , qttools
@@ -16,7 +15,7 @@
 , quazip
 }:
 
-stdenv.mkDerivation rec {
+mkDerivation rec {
   pname = "nomacs";
   version = "3.12";
 
@@ -38,8 +37,7 @@ stdenv.mkDerivation rec {
   '';
 
   nativeBuildInputs = [cmake
-                       pkgconfig
-                       wrapGAppsHook];
+                       pkgconfig];
 
   buildInputs = [qtbase
                  qttools
@@ -48,13 +46,13 @@ stdenv.mkDerivation rec {
                  opencv
                  libraw
                  libtiff
-                 quazip
-                 gsettings-desktop-schemas];
+                 quazip];
 
   cmakeFlags = ["-DENABLE_OPENCV=ON"
                 "-DENABLE_RAW=ON"
                 "-DENABLE_TIFF=ON"
                 "-DENABLE_QUAZIP=ON"
+                "-DENABLE_TRANSLATIONS=ON"
                 "-DUSE_SYSTEM_QUAZIP=ON"];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/misc/calibre/default.nix b/pkgs/applications/misc/calibre/default.nix
index 39fdc8e5e1cfc..b4c8bbb3f3111 100644
--- a/pkgs/applications/misc/calibre/default.nix
+++ b/pkgs/applications/misc/calibre/default.nix
@@ -6,11 +6,11 @@
 
 mkDerivation rec {
   pname = "calibre";
-  version = "3.46.0";
+  version = "3.47.0";
 
   src = fetchurl {
     url = "https://download.calibre-ebook.com/${version}/${pname}-${version}.tar.xz";
-    sha256 = "1dlss01kaz2qlg9ji8c9dn9rd73mmpm5yjg50zp49cwx9y2vjiz9";
+    sha256 = "0mjj47w9pa7ihycialijrfq2qk107dcxwcwriz3b2mg4lixlawy4";
   };
 
   patches = [
diff --git a/pkgs/applications/misc/electrum/default.nix b/pkgs/applications/misc/electrum/default.nix
index 31697432226f2..c48d458567dc1 100644
--- a/pkgs/applications/misc/electrum/default.nix
+++ b/pkgs/applications/misc/electrum/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fetchFromGitHub, python3, python3Packages, zbar, secp256k1
+{ stdenv, fetchurl, fetchFromGitHub, wrapQtAppsHook, python3, python3Packages, zbar, secp256k1
 , enableQt ? !stdenv.isDarwin
 
 
@@ -54,6 +54,8 @@ python3Packages.buildPythonApplication {
     cp -ar ${tests} $sourceRoot/electrum/tests
   '';
 
+  nativeBuildInputs = stdenv.lib.optionals enableQt [ wrapQtAppsHook ];
+
   propagatedBuildInputs = with python3Packages; [
     aiorpcx
     aiohttp
@@ -102,6 +104,11 @@ python3Packages.buildPythonApplication {
                 "Exec=$out/bin/electrum %u" \
       --replace 'Exec=sh -c "PATH=\"\\$HOME/.local/bin:\\$PATH\"; electrum --testnet %u"' \
                 "Exec=$out/bin/electrum --testnet %u"
+
+  '';
+
+  postFixup = stdenv.lib.optionalString enableQt ''
+    wrapQtApp $out/bin/electrum
   '';
 
   checkInputs = with python3Packages; [ pytest ];
diff --git a/pkgs/applications/misc/onboard/default.nix b/pkgs/applications/misc/onboard/default.nix
index de2f86e9f9a22..79e3317e64daa 100644
--- a/pkgs/applications/misc/onboard/default.nix
+++ b/pkgs/applications/misc/onboard/default.nix
@@ -29,14 +29,22 @@
 }:
 
 let
-  customHunspell = hunspellWithDicts [hunspellDicts.en-us];
+
+  customHunspell = hunspellWithDicts [
+    hunspellDicts.en-us
+  ];
+
   majorVersion = "1.4";
+
+in
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "onboard";
   version = "${majorVersion}.1";
-in python3.pkgs.buildPythonApplication rec {
-  name = "onboard-${version}";
+
   src = fetchurl {
-    url = "https://launchpad.net/onboard/${majorVersion}/${version}/+download/${name}.tar.gz";
-    sha256 = "01cae1ac5b1ef1ab985bd2d2d79ded6fc99ee04b1535cc1bb191e43a231a3865";
+    url = "https://launchpad.net/onboard/${majorVersion}/${version}/+download/${pname}-${version}.tar.gz";
+    sha256 = "0r9q38ikmr4in4dwqd8m9gh9xjbgxnfxglnjbfcapw8ybfnf3jh1";
   };
 
   patches = [
@@ -48,62 +56,62 @@ in python3.pkgs.buildPythonApplication rec {
     ./hunspell-use-xdg-datadirs.patch
   ];
 
-  # For tests
-  LC_ALL = "en_US.UTF-8";
-  doCheck = false;
-  checkInputs = [
-    # for Onboard.SpellChecker.aspell_cmd doctests
-    (aspellWithDicts (dicts: with dicts; [ en ]))
-
-    # for Onboard.SpellChecker.hunspell_cmd doctests
-    customHunspell
-
-    # for Onboard.SpellChecker.hunspell doctests
-    hunspellDicts.en-us
-    hunspellDicts.es-es
-    hunspellDicts.it-it
-
-    python3.pkgs.nose
-  ];
-
-  propagatedBuildInputs = [
-    glib
-    python3
-    python3.pkgs.dbus-python
-    python3.pkgs.distutils_extra
-    python3.pkgs.pyatspi
-    python3.pkgs.pycairo
-    python3.pkgs.pygobject3
-    python3.pkgs.systemd
+  nativeBuildInputs = [
+    gobject-introspection
+    intltool
+    pkgconfig
+    wrapGAppsHook
   ];
 
   buildInputs = [
     bash
+    glib
     gnome3.dconf
     gsettings-desktop-schemas
     gtk3
     hunspell
     isocodes
     libcanberra-gtk3
+    libxkbcommon
     mousetweaks
     udev
-    libxkbcommon
-    wrapGAppsHook
     xorg.libXtst
     xorg.libxkbfile
   ] ++ stdenv.lib.optional atspiSupport at-spi2-core;
 
-  nativeBuildInputs = [
-    glibcLocales
-    gobject-introspection # populate GI_TYPELIB_PATH
-    intltool
-    pkgconfig
+  propagatedBuildInputs = with python3.pkgs; [
+    dbus-python
+    distutils_extra
+    pyatspi
+    pycairo
+    pygobject3
+    systemd
   ];
 
   propagatedUserEnvPkgs = [
     gnome3.dconf
   ];
 
+  checkInputs = [
+    # for Onboard.SpellChecker.aspell_cmd doctests
+    (aspellWithDicts (dicts: with dicts; [ en ]))
+
+    # for Onboard.SpellChecker.hunspell_cmd doctests
+    customHunspell
+
+    # for Onboard.SpellChecker.hunspell doctests
+    hunspellDicts.en-us
+    hunspellDicts.es-es
+    hunspellDicts.it-it
+
+    python3.pkgs.nose
+  ];
+
+  # Temporary fix, see https://github.com/NixOS/nixpkgs/issues/56943
+  strictDeps = false;
+
+  doCheck = false;
+
   preBuild = ''
     # Unnecessary file, has been removed upstream
     # https://github.com/NixOS/nixpkgs/pull/24986#issuecomment-296114062
@@ -118,6 +126,9 @@ in python3.pkgs.buildPythonApplication rec {
 
     patchShebangs .
 
+    substituteInPlace setup.py \
+      --replace "/etc" "$out/etc"
+
     substituteInPlace  ./Onboard/LanguageSupport.py \
       --replace "/usr/share/xml/iso-codes" "${isocodes}/share/xml/iso-codes" \
       --replace "/usr/bin/yelp" "${yelp}/bin/yelp"
@@ -149,16 +160,22 @@ in python3.pkgs.buildPythonApplication rec {
       --replace '"killall",' '"${procps}/bin/pkill", "-x",'
   '';
 
-  postInstall = ''
-    cp onboard-default-settings.gschema.override.example $out/share/glib-2.0/schemas/10_onboard-default-settings.gschema.override
+  installPhase = ''
+    ${python3.interpreter} setup.py install --prefix="$out"
 
+    cp onboard-default-settings.gschema.override.example $out/share/glib-2.0/schemas/10_onboard-default-settings.gschema.override
     glib-compile-schemas $out/share/glib-2.0/schemas/
   '';
 
-  meta = {
+  # Remove ubuntu icons.
+  postFixup = ''
+    rm -rf  $out/share/icons/ubuntu-mono-*
+  '';
+
+  meta = with stdenv.lib; {
     homepage = https://launchpad.net/onboard;
-    description = "An onscreen keyboard useful for tablet PC users and for mobility impaired users.";
-    maintainers = with stdenv.lib.maintainers; [ johnramsden ];
-    license = stdenv.lib.licenses.gpl3;
+    description = "Onscreen keyboard useful for tablet PC users and for mobility impaired users";
+    maintainers = with maintainers; [ johnramsden ];
+    license = licenses.gpl3;
   };
 }
diff --git a/pkgs/applications/misc/veracrypt/default.nix b/pkgs/applications/misc/veracrypt/default.nix
index f0900a99e5d1b..9639cee2d8c75 100644
--- a/pkgs/applications/misc/veracrypt/default.nix
+++ b/pkgs/applications/misc/veracrypt/default.nix
@@ -1,20 +1,21 @@
-{ stdenv, fetchurl, pkgconfig, makeself, yasm, fuse, wxGTK, lvm2 }:
+{ stdenv, fetchurl, pkgconfig, makeself, yasm, fuse, unzip, wxGTK, lvm2 }:
 
 with stdenv.lib;
 
 stdenv.mkDerivation rec {
   pname = "veracrypt";
   version = "1.23";
+  minorVersion = "-Hotfix-2";
 
   src = fetchurl {
-    url = "https://launchpad.net/${pname}/trunk/${version}/+download/VeraCrypt_${version}_Source.tar.bz2";
-    sha256 = "009lqi43n2w272sxv7y7dz9sqx15qkx6lszkswr8mwmkpgkm0px1";
+    url = "https://launchpad.net/${pname}/trunk/${version}/+download/VeraCrypt_${version}${minorVersion}_Source.zip";
+    sha256 = "229de81b2478cfa5fa73e74e60798a298cd616e9852b9f47b484c80bc2a2c259";
   };
 
   sourceRoot = "src";
 
   nativeBuildInputs = [ makeself pkgconfig yasm ];
-  buildInputs = [ fuse lvm2 wxGTK ];
+  buildInputs = [ fuse lvm2 unzip wxGTK ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.nix b/pkgs/applications/networking/browsers/chromium/upstream-info.nix
index f8e56937021ad..14799e9f96cc3 100644
--- a/pkgs/applications/networking/browsers/chromium/upstream-info.nix
+++ b/pkgs/applications/networking/browsers/chromium/upstream-info.nix
@@ -1,18 +1,18 @@
 # This file is autogenerated from update.sh in the same directory.
 {
   beta = {
-    sha256 = "1521vh38mfgy7aj1lw1vpbdm8m6wyh52d5p7bz4x6kvvxsnacp11";
-    sha256bin64 = "0rbc0ld655szg42mqjdby8749d2jg34nlpp4cpq66qb4zi6vvb04";
-    version = "76.0.3809.87";
+    sha256 = "0m7xdpi1f2a33csd7bsp91g5klz0hmr83ksfwsd2fki3iipvfs4w";
+    sha256bin64 = "1b4cyf4v55sy52mxxl8d70abg5ck5k45jaqdjsjw7dvh3s2x4bwp";
+    version = "77.0.3865.42";
   };
   dev = {
-    sha256 = "15v25nwcdxqgw6n0ym7fz5qaq0a74p0wiwcq155xy6zvr3q8q1nw";
-    sha256bin64 = "1qawl0hsl6qpc10avli8raw4nzwcpmp6dyada5pga7i4k5jpsr95";
-    version = "77.0.3860.5";
+    sha256 = "0x5r6xqwiggwyzbinm252xc1n3f9r7cmmzj6assi4v1nsispdh2k";
+    sha256bin64 = "03yymhbpd1snycmcv7wkg5j6zbydvyc365gy5myp7wgas7cd0mb6";
+    version = "78.0.3887.7";
   };
   stable = {
-    sha256 = "0vfjfxsqf8jrmd7y08ln1lpbilwi150875zn2bawwdq87vd3mncc";
-    sha256bin64 = "1c5rlqgshv5295wg5cji12z2b38l6a81l94spmzr46h5z9nn1gqx";
-    version = "76.0.3809.100";
+    sha256 = "0hajwjf7swlgh1flpf8ljfrb2zhmcpzvrigvvxqd36g3nm04cknm";
+    sha256bin64 = "0hdsla8i3q0zbczia64ghqsf420alcc31xdishx1sv48x3rlrxkk";
+    version = "76.0.3809.132";
   };
 }
diff --git a/pkgs/applications/networking/cluster/nomad/default.nix b/pkgs/applications/networking/cluster/nomad/default.nix
index ce7b9beb4f8af..a4236a9408cca 100644
--- a/pkgs/applications/networking/cluster/nomad/default.nix
+++ b/pkgs/applications/networking/cluster/nomad/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   pname = "nomad";
-  version = "0.9.4";
+  version = "0.9.5";
   rev = "v${version}";
 
   goPackagePath = "github.com/hashicorp/nomad";
@@ -10,14 +10,26 @@ buildGoPackage rec {
 
   src = fetchFromGitHub {
     owner = "hashicorp";
-    repo = "nomad";
+    repo = pname;
     inherit rev;
-    sha256 = "1jgvnmmrz7ffpm6aamdrvklj94n7b43swk9cycqhlfbnzijianpn";
+    sha256 = "01491470idb11z0ab4anb5caw46vy9s94a17l92j0z2f3f4k6xfl";
   };
 
-  # We disable Nvidia GPU scheduling on Linux, as it doesn't work there:
-  # Ref: https://github.com/hashicorp/nomad/issues/5535
-  buildFlags = stdenv.lib.optionalString (stdenv.isLinux) "-tags nonvidia";
+  # ui:
+  #  Nomad release commits include the compiled version of the UI, but the file
+  #  is only included if we build with the ui tag.
+  # nonvidia:
+  #  We disable Nvidia GPU scheduling on Linux, as it doesn't work there:
+  #  Ref: https://github.com/hashicorp/nomad/issues/5535
+  preBuild = let
+    tags = ["ui"]
+      ++ stdenv.lib.optional stdenv.isLinux "nonvidia";
+    tagsString = stdenv.lib.concatStringsSep " " tags;
+  in ''
+    export buildFlagsArray=(
+      -tags="${tagsString}"
+    )
+ '';
 
   meta = with stdenv.lib; {
     homepage = https://www.nomadproject.io/;
diff --git a/pkgs/applications/networking/gns3/default.nix b/pkgs/applications/networking/gns3/default.nix
index 94d5be030da64..c5cf7a7c2ee97 100644
--- a/pkgs/applications/networking/gns3/default.nix
+++ b/pkgs/applications/networking/gns3/default.nix
@@ -2,7 +2,7 @@
 
 let
   stableVersion = "2.1.21";
-  previewVersion = "2.2.0rc3";
+  previewVersion = "2.2.0rc4";
   addVersion = args:
     let version = if args.stable then stableVersion else previewVersion;
         branch = if args.stable then "stable" else "preview";
@@ -18,7 +18,7 @@ in {
   };
   guiPreview = mkGui {
     stable = false;
-    sha256Hash = "0lj2av2kbh1drr8jzd71j85xaiwp53q1g348lk2qqzr35yh16n99";
+    sha256Hash = "14fzjaanaxya97wrya2lybxz6qv72fk4ws8i92zvjz4jkvjdk9n3";
   };
 
   serverStable = mkServer {
@@ -27,6 +27,6 @@ in {
   };
   serverPreview = mkServer {
     stable = false;
-    sha256Hash = "0a4gx0qhy50v7nivqn8c2kz07crgzg2105hzmwag8xw6bpqmgm1d";
+    sha256Hash = "03s2kq5f8whk14rhprg9yp3918641b1cwj6djcbjw8xpz0n3w022";
   };
 }
diff --git a/pkgs/applications/networking/mailreaders/notmuch/default.nix b/pkgs/applications/networking/mailreaders/notmuch/default.nix
index f6e6a8d747eb0..01081ebfb3e24 100644
--- a/pkgs/applications/networking/mailreaders/notmuch/default.nix
+++ b/pkgs/applications/networking/mailreaders/notmuch/default.nix
@@ -12,7 +12,7 @@
 with stdenv.lib;
 
 stdenv.mkDerivation rec {
-  version = "0.28.4"; # not really, git
+  version = "0.29.1";
   pname = "notmuch";
 
   passthru = {
@@ -21,8 +21,8 @@ stdenv.mkDerivation rec {
   };
 
   src = fetchurl {
-    url = "https://notmuchmail.org/releases/${pname}-${version}.tar.gz";
-    sha256 = "1jjnhs4xs4gksvg0a9qn68rxrj41im5bh58snka2pkj20nxwmcds";
+    url = "https://notmuchmail.org/releases/${pname}-${version}.tar.xz";
+    sha256 = "0rg3rwghd3wivf3bmqcqpkkd5c779ld5hi363zjcw5fl6a7gqilq";
   };
 
   nativeBuildInputs = [ pkgconfig ];
@@ -40,16 +40,12 @@ stdenv.mkDerivation rec {
     patchShebangs configure
     patchShebangs test/
 
-    for src in \
-      util/crypto.c \
-      notmuch-config.c
-    do
-      substituteInPlace "$src" \
-        --replace \"gpg\" \"${gnupg}/bin/gpg\"
-    done
-
     substituteInPlace lib/Makefile.local \
       --replace '-install_name $(libdir)' "-install_name $out/lib"
+
+    substituteInPlace emacs/notmuch-emacs-mua \
+      --replace 'EMACS:-emacs' 'EMACS:-${emacs}/bin/emacs' \
+      --replace 'EMACSCLIENT:-emacsclient' 'EMACSCLIENT:-${emacs}/bin/emacsclient'
   '';
 
   configureFlags = [ "--zshcompletiondir=${placeholder "out"}/share/zsh/site-functions" ];
@@ -68,7 +64,7 @@ stdenv.mkDerivation rec {
   in ''
     ln -s ${test-database} test/test-databases/database-v1.tar.xz
   '';
-  doCheck = !stdenv.hostPlatform.isDarwin && (versionAtLeast gmime.version "3.0");
+  doCheck = !stdenv.hostPlatform.isDarwin && (versionAtLeast gmime.version "3.0.3");
   checkTarget = "test";
   checkInputs = [
     which dtach openssl bash
@@ -83,7 +79,7 @@ stdenv.mkDerivation rec {
     description = "Mail indexer";
     homepage    = https://notmuchmail.org/;
     license     = licenses.gpl3;
-    maintainers = with maintainers; [ flokli the-kenny ];
+    maintainers = with maintainers; [ flokli puckipedia the-kenny ];
     platforms   = platforms.unix;
   };
 }
diff --git a/pkgs/applications/networking/remote/waypipe/default.nix b/pkgs/applications/networking/remote/waypipe/default.nix
new file mode 100644
index 0000000000000..d253e766284fe
--- /dev/null
+++ b/pkgs/applications/networking/remote/waypipe/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitLab
+, meson, ninja, pkgconfig, scdoc
+, wayland, wayland-protocols, openssh
+, mesa, lz4, zstd, ffmpeg_4, libva
+}:
+
+stdenv.mkDerivation rec {
+  pname = "waypipe-unstable";
+  version = "0.6.1";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.freedesktop.org";
+    owner = "mstoeckl";
+    repo = "waypipe";
+    rev = "v${version}";
+    sha256 = "13kp5snkksli0sj5ldkgybcs1s865f0qdak2w8796xvy8dg9jda8";
+  };
+
+  postPatch = ''
+    substituteInPlace src/waypipe.c \
+      --replace "/usr/bin/ssh" "${openssh}/bin/ssh"
+  '';
+
+  nativeBuildInputs = [ meson ninja pkgconfig scdoc ];
+
+  buildInputs = [
+    wayland wayland-protocols
+    # Optional dependencies:
+    mesa lz4 zstd ffmpeg_4 libva
+  ];
+
+  enableParallelBuilding = true;
+
+  mesonFlags = [ "-Dwerror=false" ]; # TODO: Report warnings upstream
+
+  meta = with stdenv.lib; {
+    description = "A network proxy for Wayland clients (applications)";
+    longDescription = ''
+      waypipe is a proxy for Wayland clients. It forwards Wayland messages and
+      serializes changes to shared memory buffers over a single socket. This
+      makes application forwarding similar to ssh -X feasible.
+    '';
+    homepage = https://mstoeckl.com/notes/gsoc/blog.html;
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/pkgs/applications/office/timetable/default.nix b/pkgs/applications/office/timetable/default.nix
index bbf252d28923b..fa2d59392180c 100644
--- a/pkgs/applications/office/timetable/default.nix
+++ b/pkgs/applications/office/timetable/default.nix
@@ -16,13 +16,13 @@
 
 stdenv.mkDerivation rec {
   pname = "timetable";
-  version = "1.0.6";
+  version = "1.0.8";
 
   src = fetchFromGitHub {
     owner = "lainsce";
     repo = pname;
     rev = version;
-    sha256 = "080xgp917v6j40qxy0y1iycz01yylbcr8pahx6zd6mpi022ccfv0";
+    sha256 = "0s825al10s0hwfzl90bplwwasx89wx28n41sg2md71l9hfqy296q";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/science/biology/kallisto/default.nix b/pkgs/applications/science/biology/kallisto/default.nix
index 16639db178163..de93ae5d78291 100644
--- a/pkgs/applications/science/biology/kallisto/default.nix
+++ b/pkgs/applications/science/biology/kallisto/default.nix
@@ -1,25 +1,28 @@
-{ stdenv, fetchFromGitHub, cmake, hdf5, zlib }:
+{ stdenv, fetchFromGitHub, autoconf, cmake, hdf5, zlib }:
 
 stdenv.mkDerivation rec {
   pname = "kallisto";
-  version = "0.43.1";
+  version = "0.46.0";
 
   src = fetchFromGitHub {
     repo = "kallisto";
     owner = "pachterlab";
     rev = "v${version}";
-    sha256 = "04697pf7jvy7vw126s1rn09q4iab9223jvb1nb0jn7ilwkq7pgwz";
+    sha256 = "09vgdqwpigl4x3sdw5vjfyknsllkli339mh8xapbf7ldm0jldfn9";
   };
 
-  nativeBuildInputs = [ cmake ];
-  
+  nativeBuildInputs = [ autoconf cmake ];
+
   buildInputs = [ hdf5 zlib ];
 
+  # Parallel build fails in some cases: https://github.com/pachterlab/kallisto/issues/160
+  enableParallelBuilding = false;
+
   meta = with stdenv.lib; {
-    description = "kallisto is a program for quantifying abundances of transcripts from RNA-Seq data";
-    homepage = https://pachterlab.github.io/kallisto;
+    description = "Kallisto is a program for quantifying abundances of transcripts from RNA-Seq data";
+    homepage = "https://pachterlab.github.io/kallisto";
     license = licenses.bsd2;
     platforms = platforms.linux;
-    maintainers = [ maintainers.arcadio ];
+    maintainers = with maintainers; [ arcadio ];
   };
 }
diff --git a/pkgs/applications/science/logic/symbiyosys/default.nix b/pkgs/applications/science/logic/symbiyosys/default.nix
index a5be51a6025a7..ed66c77dcabf0 100644
--- a/pkgs/applications/science/logic/symbiyosys/default.nix
+++ b/pkgs/applications/science/logic/symbiyosys/default.nix
@@ -26,6 +26,8 @@ stdenv.mkDerivation {
     substituteInPlace $out/bin/sby \
       --replace "##yosys-sys-path##" \
                 "sys.path += [p + \"/share/yosys/python3/\" for p in [\"$out\", \"${yosys}\"]]"
+    substituteInPlace $out/share/yosys/python3/sby_core.py \
+      --replace '"/usr/bin/env", "bash"' '"${bash}/bin/bash"'
   '';
   meta = {
     description = "Tooling for Yosys-based verification flows";
diff --git a/pkgs/applications/version-management/git-and-tools/ghq/default.nix b/pkgs/applications/version-management/git-and-tools/ghq/default.nix
index 3c0653529ceab..b73825737dffa 100644
--- a/pkgs/applications/version-management/git-and-tools/ghq/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/ghq/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   pname = "ghq";
-  version = "0.10.2";
+  version = "0.12.6";
 
   goPackagePath = "github.com/motemen/ghq";
 
@@ -10,7 +10,7 @@ buildGoPackage rec {
     owner = "motemen";
     repo = "ghq";
     rev = "v${version}";
-    sha256 = "1i7zmgv7760nrw8sayag90b8vvmbsiifgiqki5s3gs3ldnvlki5w";
+    sha256 = "14rm7fvphr7r9x0ys10vhzjwhfhhscgr574n1i1z4lzw551lrnp4";
   };
 
   goDeps = ./deps.nix;
diff --git a/pkgs/applications/version-management/git-and-tools/ghq/deps.nix b/pkgs/applications/version-management/git-and-tools/ghq/deps.nix
index be99aee64a5e6..dde1b19b4c3b2 100644
--- a/pkgs/applications/version-management/git-and-tools/ghq/deps.nix
+++ b/pkgs/applications/version-management/git-and-tools/ghq/deps.nix
@@ -1,12 +1,12 @@
 # file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
 [
   {
-    goPackagePath = "github.com/blang/semver";
+    goPackagePath = "github.com/Songmu/gitconfig";
     fetch = {
       type = "git";
-      url = "https://github.com/blang/semver";
-      rev = "v3.5.1";
-      sha256 = "13ws259bwcibkclbr82ilhk6zadm63kxklxhk12wayklj8ghhsmy";
+      url = "https://github.com/Songmu/gitconfig";
+      rev = "v0.0.2";
+      sha256 = "0w1xd1mzxzwh755l6lgpn6psjp959kvx89l39zhc8lag9jh7rc44";
     };
   }
   {
@@ -19,24 +19,6 @@
     };
   }
   {
-    goPackagePath = "github.com/fsnotify/fsnotify";
-    fetch = {
-      type = "git";
-      url = "https://github.com/fsnotify/fsnotify";
-      rev = "v1.4.7";
-      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
-    };
-  }
-  {
-    goPackagePath = "github.com/golang/protobuf";
-    fetch = {
-      type = "git";
-      url = "https://github.com/golang/protobuf";
-      rev = "v1.2.0";
-      sha256 = "0kf4b59rcbb1cchfny2dm9jyznp8ri2hsb14n8iak1q8986xa0ab";
-    };
-  }
-  {
     goPackagePath = "github.com/golangplus/bytes";
     fetch = {
       type = "git";
@@ -64,15 +46,6 @@
     };
   }
   {
-    goPackagePath = "github.com/hpcloud/tail";
-    fetch = {
-      type = "git";
-      url = "https://github.com/hpcloud/tail";
-      rev = "v1.0.0";
-      sha256 = "1njpzc0pi1acg5zx9y6vj9xi6ksbsc5d387rd6904hy6rh2m6kn0";
-    };
-  }
-  {
     goPackagePath = "github.com/motemen/go-colorine";
     fetch = {
       type = "git";
@@ -82,24 +55,6 @@
     };
   }
   {
-    goPackagePath = "github.com/onsi/ginkgo";
-    fetch = {
-      type = "git";
-      url = "https://github.com/onsi/ginkgo";
-      rev = "v1.6.0";
-      sha256 = "0x0gc89vgq38xhgmi2h22bhr73cf2gmk42g89nz89k8dgg9hhr25";
-    };
-  }
-  {
-    goPackagePath = "github.com/onsi/gomega";
-    fetch = {
-      type = "git";
-      url = "https://github.com/onsi/gomega";
-      rev = "v1.5.0";
-      sha256 = "1n7i4hksdgv410m43v2sw14bl5vy59dkp6nlw5l76nibbh37syr9";
-    };
-  }
-  {
     goPackagePath = "github.com/urfave/cli";
     fetch = {
       type = "git";
@@ -122,8 +77,8 @@
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/net";
-      rev = "4829fb13d2c6";
-      sha256 = "05nwpw41d7xsdln5rj381n8j9dsbq5ng1wp52bxslqc4x0l5s9fj";
+      rev = "3ec191127204";
+      sha256 = "0zzhbkw3065dp1jscp7q8dxw3mkwj95ixnrr8j7c47skis0m11i3";
     };
   }
   {
@@ -131,8 +86,8 @@
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/sync";
-      rev = "1d60e4601c6f";
-      sha256 = "046jlanz2lkxq1r57x9bl6s4cvfqaic6p2xybsj8mq1120jv4rs6";
+      rev = "112230192c58";
+      sha256 = "05i2k43j2d0llq768hg5pf3hb2yhfzp9la1w5wp0rsnnzblr0lfn";
     };
   }
   {
@@ -154,30 +109,21 @@
     };
   }
   {
-    goPackagePath = "gopkg.in/check.v1";
+    goPackagePath = "golang.org/x/xerrors";
     fetch = {
       type = "git";
-      url = "https://gopkg.in/check.v1";
-      rev = "20d25e280405";
-      sha256 = "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np";
+      url = "https://go.googlesource.com/xerrors";
+      rev = "3ee3066db522";
+      sha256 = "12xyaa116bq9zy25fwk7zzi83v8aab9lm91pqg0c3jrfkjdbr255";
     };
   }
   {
-    goPackagePath = "gopkg.in/fsnotify.v1";
-    fetch = {
-      type = "git";
-      url = "https://gopkg.in/fsnotify.v1";
-      rev = "v1.4.7";
-      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
-    };
-  }
-  {
-    goPackagePath = "gopkg.in/tomb.v1";
+    goPackagePath = "gopkg.in/check.v1";
     fetch = {
       type = "git";
-      url = "https://gopkg.in/tomb.v1";
-      rev = "dd632973f1e7";
-      sha256 = "1lqmq1ag7s4b3gc3ddvr792c5xb5k6sfn0cchr3i2s7f1c231zjv";
+      url = "https://gopkg.in/check.v1";
+      rev = "20d25e280405";
+      sha256 = "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np";
     };
   }
   {
@@ -185,8 +131,8 @@
     fetch = {
       type = "git";
       url = "https://gopkg.in/yaml.v2";
-      rev = "v2.2.1";
-      sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
+      rev = "v2.2.2";
+      sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa";
     };
   }
 ]
diff --git a/pkgs/build-support/writers/default.nix b/pkgs/build-support/writers/default.nix
index ae7b42449fb34..8dbe0dbdbd033 100644
--- a/pkgs/build-support/writers/default.nix
+++ b/pkgs/build-support/writers/default.nix
@@ -10,12 +10,12 @@ rec {
   #   makeScriptWriter { interpreter = "${pkgs.dash}/bin/dash"; } "hello" "echo hello world"
   makeScriptWriter = { interpreter, check ? "" }: nameOrPath: content:
     assert lib.or (types.path.check nameOrPath) (builtins.match "([0-9A-Za-z._])[0-9A-Za-z._-]*" nameOrPath != null);
-    assert lib.or (types.path.check content) (types.string.check content);
+    assert lib.or (types.path.check content) (types.str.check content);
     let
       name = last (builtins.split "/" nameOrPath);
     in
 
-    pkgs.runCommand name (if (types.string.check content) then {
+    pkgs.runCommand name (if (types.str.check content) then {
       inherit content interpreter;
       passAsFile = [ "content" ];
     } else {
@@ -42,11 +42,11 @@ rec {
   #   writeSimpleC = makeBinWriter { compileScript = name: "gcc -o $out $contentPath"; }
   makeBinWriter = { compileScript }: nameOrPath: content:
     assert lib.or (types.path.check nameOrPath) (builtins.match "([0-9A-Za-z._])[0-9A-Za-z._-]*" nameOrPath != null);
-    assert lib.or (types.path.check content) (types.string.check content);
+    assert lib.or (types.path.check content) (types.str.check content);
     let
       name = last (builtins.split "/" nameOrPath);
     in
-    pkgs.runCommand name (if (types.string.check content) then {
+    pkgs.runCommand name (if (types.str.check content) then {
       inherit content;
       passAsFile = [ "content" ];
     } else {
diff --git a/pkgs/data/themes/qogir/default.nix b/pkgs/data/themes/qogir/default.nix
index 4d91b60960b39..6461697b04f21 100644
--- a/pkgs/data/themes/qogir/default.nix
+++ b/pkgs/data/themes/qogir/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "qogir-theme";
-  version = "2019-05-03";
+  version = "2019-08-31";
 
   src = fetchFromGitHub {
     owner = "vinceliuice";
     repo = pname;
     rev = version;
-    sha256 = "031nqr47b3x8ahcym7cfc75y8sy53dcmrrrlywi7m1a10ckfp0pd";
+    sha256 = "1pqfnqc2c6f5cidg6c3y492hqlyn5ma4b7ra2lchw7g2dxfvq8w1";
   };
 
   buildInputs = [ gdk-pixbuf librsvg ];
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   installPhase = ''
     patchShebangs .
     mkdir -p $out/share/themes
-    name= ./Install -d $out/share/themes
+    name= ./install.sh -d $out/share/themes
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix
index a03594b7b18be..3b85b123fd036 100644
--- a/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix
+++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix
@@ -1,4 +1,5 @@
 { stdenv
+, substituteAll
 , fetchFromGitHub
 , pantheon
 , meson
@@ -9,6 +10,7 @@
 , granite
 , gtk3
 , switchboard
+, onboard
 }:
 
 stdenv.mkDerivation rec {
@@ -22,6 +24,13 @@ stdenv.mkDerivation rec {
     sha256 = "1wh46lrsliii5bbvfc4xnzgnii2v7sqxnbn43ylmyqppfv9mk1wd";
   };
 
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit onboard;
+    })
+  ];
+
   passthru = {
     updateScript = pantheon.updateScript {
       repoName = pname;
diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/fix-paths.patch b/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/fix-paths.patch
new file mode 100644
index 0000000000000..4d69390f39d90
--- /dev/null
+++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/fix-paths.patch
@@ -0,0 +1,13 @@
+diff --git a/src/Panes/Typing.vala b/src/Panes/Typing.vala
+index b4ae8b0..5b8fd7e 100644
+--- a/src/Panes/Typing.vala
++++ b/src/Panes/Typing.vala
+@@ -83,7 +83,7 @@ public class Accessibility.Panes.Typing : Categories.Pane {
+ 
+         onboard_settings_label.clicked.connect (() => {
+             try {
+-                var appinfo = AppInfo.create_from_commandline ("onboard-settings", null, AppInfoCreateFlags.NONE);
++                var appinfo = AppInfo.create_from_commandline ("@onboard@/bin/onboard-settings", null, AppInfoCreateFlags.NONE);
+                 appinfo.launch (null, null);
+             } catch (Error e) {
+                 warning ("%s\n", e.message);
diff --git a/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix b/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix
index c262fb37dbc54..df12fba645f21 100644
--- a/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix
+++ b/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix
@@ -7,6 +7,7 @@
 , gnome-session
 , wingpanel
 , orca
+, onboard
 , at-spi2-core
 , elementary-default-settings
 , writeShellScriptBin
@@ -85,9 +86,9 @@ stdenv.mkDerivation rec {
     cp -av ${./pantheon-mimeapps.list} $out/share/applications/pantheon-mimeapps.list
 
     mkdir -p $out/etc/xdg/autostart
-    cp -av ${gnome-keyring}/etc/xdg/autostart/* $out/etc/xdg/autostart
-    cp -av ${orca}/etc/xdg/autostart/* $out/etc/xdg/autostart
-    cp -av ${at-spi2-core}/etc/xdg/autostart/* $out/etc/xdg/autostart
+    for package in ${gnome-keyring} ${orca} ${onboard} ${at-spi2-core}; do
+      cp -av $package/etc/xdg/autostart/* $out/etc/xdg/autostart
+    done
 
     cp "${dockitemAutostart}" $out/etc/xdg/autostart/default-elementary-dockitems.desktop
 
diff --git a/pkgs/development/compilers/nextpnr/default.nix b/pkgs/development/compilers/nextpnr/default.nix
index c1e01ef77828c..357f26cf31416 100644
--- a/pkgs/development/compilers/nextpnr/default.nix
+++ b/pkgs/development/compilers/nextpnr/default.nix
@@ -1,10 +1,12 @@
 { stdenv, fetchFromGitHub, cmake
 , boost, python3, eigen
 , icestorm, trellis
+, llvmPackages
 
 , enableGui ? true
 , wrapQtAppsHook
 , qtbase
+, OpenGL ? null
 }:
 
 let
@@ -12,13 +14,13 @@ let
 in
 with stdenv; mkDerivation rec {
   pname = "nextpnr";
-  version = "2019.08.21";
+  version = "2019.08.31";
 
   src = fetchFromGitHub {
     owner  = "yosyshq";
     repo   = "nextpnr";
-    rev    = "c192ba261d77ad7f0a744fb90b01e4a5b63938c4";
-    sha256 = "0g2ar1z89b31qw5vgqj2rrcv9rzncs94184dgcsrz19p866654mf";
+    rev    = "c0b7379e8672b6263152d5e340e62f22179fdc8b";
+    sha256 = "174n962xiwyzy53cn192h9rq95h951k3xy6bs43p5ya592ai5mjh";
   };
 
   nativeBuildInputs
@@ -26,7 +28,8 @@ with stdenv; mkDerivation rec {
     ++ (lib.optional enableGui wrapQtAppsHook);
   buildInputs
      = [ boostPython python3 eigen ]
-    ++ (lib.optional enableGui qtbase);
+    ++ (lib.optional enableGui qtbase)
+    ++ (lib.optional stdenv.cc.isClang llvmPackages.openmp);
 
   enableParallelBuilding = true;
   cmakeFlags =
@@ -39,7 +42,10 @@ with stdenv; mkDerivation rec {
       "-DSERIALIZE_CHIPDB=OFF"
       # use PyPy for icestorm if enabled
       "-DPYTHON_EXECUTABLE=${icestorm.pythonInterp}"
-    ] ++ (lib.optional (!enableGui) "-DBUILD_GUI=OFF");
+    ]
+    ++ (lib.optional (!enableGui) "-DBUILD_GUI=OFF")
+    ++ (lib.optional (enableGui && stdenv.isDarwin)
+        "-DOPENGL_INCLUDE_DIR=${OpenGL}/Library/Frameworks");
 
   # Fix the version number. This is a bit stupid (and fragile) in practice
   # but works ok. We should probably make this overrideable upstream.
diff --git a/pkgs/development/compilers/sdcc/default.nix b/pkgs/development/compilers/sdcc/default.nix
index 1a450af2b941b..cdac400b1afd8 100644
--- a/pkgs/development/compilers/sdcc/default.nix
+++ b/pkgs/development/compilers/sdcc/default.nix
@@ -34,6 +34,6 @@ stdenv.mkDerivation rec {
     homepage = http://sdcc.sourceforge.net/;
     license = with licenses; if (gputils == null) then gpl2 else unfreeRedistributable;
     maintainers = with maintainers; [ bjornfor yorickvp ];
-    platforms = platforms.linux;
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/development/compilers/yosys/default.nix b/pkgs/development/compilers/yosys/default.nix
index 467d4e3b49ebe..1535c7a7de64c 100644
--- a/pkgs/development/compilers/yosys/default.nix
+++ b/pkgs/development/compilers/yosys/default.nix
@@ -8,14 +8,14 @@ with builtins;
 
 stdenv.mkDerivation rec {
   pname = "yosys";
-  version = "2019.08.21";
+  version = "2019.09.01";
 
   srcs = [
     (fetchFromGitHub {
       owner  = "yosyshq";
       repo   = "yosys";
-      rev    = "fe1b2337fd7950e1d563be5b8ccbaa81688261e4";
-      sha256 = "0z7sngc2z081yyhzh8c2kchg48sp2333hn1wa94q5vsgnyzlqrdw";
+      rev    = "4aa505d1b254b3fbb66af2d95b396a8f077da9d0";
+      sha256 = "16rhwmn1z2ppaq3wycgq713krq48s80a6h57vgzjzj17hgncg7hs";
       name   = "yosys";
     })
 
diff --git a/pkgs/development/interpreters/supercollider/default.nix b/pkgs/development/interpreters/supercollider/default.nix
index 2cacb339d757e..049dd9192d7ea 100644
--- a/pkgs/development/interpreters/supercollider/default.nix
+++ b/pkgs/development/interpreters/supercollider/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, cmake, pkgconfig, alsaLib
+{ stdenv, mkDerivation, fetchurl, cmake, pkgconfig, alsaLib
 , libjack2, libsndfile, fftw, curl, gcc
 , libXt, qtbase, qttools, qtwebengine
 , readline, qtwebsockets, useSCEL ? false, emacs
@@ -7,7 +7,7 @@
 let optional = stdenv.lib.optional;
 in
 
-stdenv.mkDerivation rec {
+mkDerivation rec {
   pname = "supercollider";
   version = "3.10.2";
 
@@ -19,10 +19,10 @@ stdenv.mkDerivation rec {
 
   hardeningDisable = [ "stackprotector" ];
 
-  cmakeFlags = ''
-    -DSC_WII=OFF
-    -DSC_EL=${if useSCEL then "ON" else "OFF"}
-  '';
+  cmakeFlags = [
+    "-DSC_WII=OFF"
+    "-DSC_EL=${if useSCEL then "ON" else "OFF"}"
+  ];
 
   nativeBuildInputs = [ cmake pkgconfig qttools ];
 
diff --git a/pkgs/development/libraries/babl/default.nix b/pkgs/development/libraries/babl/default.nix
index d95797d5a5f6c..c4b1d36ce7011 100644
--- a/pkgs/development/libraries/babl/default.nix
+++ b/pkgs/development/libraries/babl/default.nix
@@ -35,8 +35,6 @@ stdenv.mkDerivation rec {
     lcms2
   ];
 
-  doCheck = !stdenv.isDarwin;
-
   meta = with stdenv.lib; {
     description = "Image pixel format conversion library";
     homepage = http://gegl.org/babl/;
diff --git a/pkgs/development/libraries/openxr-loader/default.nix b/pkgs/development/libraries/openxr-loader/default.nix
index d1a20552ff769..8013d68658552 100644
--- a/pkgs/development/libraries/openxr-loader/default.nix
+++ b/pkgs/development/libraries/openxr-loader/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "openxr-loader";
-  version = "1.0.1";
+  version = "1.0.2";
 
   src = fetchFromGitHub {
     owner = "KhronosGroup";
     repo = "OpenXR-SDK-Source";
     rev = "release-${version}";
-    sha256 = "1sif2w2vm793j6493364i6pp6s6yqi7fwa6iky5abzmzda51cg5q";
+    sha256 = "11lkihykwkq0sbmijqxmn52lg6mcn6gkcpj1c7fhzm0hm1b9p9dn";
   };
 
   nativeBuildInputs = [ cmake python3 ];
diff --git a/pkgs/development/libraries/vulkan-headers/default.nix b/pkgs/development/libraries/vulkan-headers/default.nix
index 032181e458ea7..4ea8d69a498b7 100644
--- a/pkgs/development/libraries/vulkan-headers/default.nix
+++ b/pkgs/development/libraries/vulkan-headers/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, cmake }:
 stdenv.mkDerivation rec {
   pname = "vulkan-headers";
-  version = "1.1.106";
+  version = "1.1.114.0";
 
   nativeBuildInputs = [ cmake ];
 
diff --git a/pkgs/development/ocaml-modules/lablgtk/default.nix b/pkgs/development/ocaml-modules/lablgtk/default.nix
index 09c3ac84e7da4..3c799d3d1c02a 100644
--- a/pkgs/development/ocaml-modules/lablgtk/default.nix
+++ b/pkgs/development/ocaml-modules/lablgtk/default.nix
@@ -3,9 +3,9 @@
 let param =
   let check = stdenv.lib.versionAtLeast ocaml.version; in
   if check "4.06" then {
-    version = "2.18.6";
-    url = https://forge.ocamlcore.org/frs/download.php/1726/lablgtk-2.18.6.tar.gz;
-    sha256 = "1y38fdvswy6hmppm65qvgdk4pb3ghhnvz7n4ialf46340r1s5p2d";
+    version = "2.18.8";
+    url = "https://github.com/garrigue/lablgtk/releases/download/lablgtk2188/lablgtk-2.18.8.tar.gz";
+    sha256 = "1qsd9nv96fxddc8zayqiqxw9hcyf29axckqg100fm2brs2prpxci";
   } else if check "3.12" then {
     version = "2.18.5";
     url = https://forge.ocamlcore.org/frs/download.php/1627/lablgtk-2.18.5.tar.gz;
diff --git a/pkgs/development/python-modules/bokeh/default.nix b/pkgs/development/python-modules/bokeh/default.nix
index 158a3d3188225..d53371221202e 100644
--- a/pkgs/development/python-modules/bokeh/default.nix
+++ b/pkgs/development/python-modules/bokeh/default.nix
@@ -1,74 +1,55 @@
-{ lib
-, buildPythonPackage
+{ buildPythonPackage
 , fetchPypi
+, futures
+, isPy3k
 , isPyPy
-, mock
-, pytest
-, flask
 , jinja2
-, markupsafe
-, werkzeug
-, itsdangerous
-, dateutil
-, requests
-, six
-, pygments
-, pystache
-, markdown
-, pyyaml
-, pyzmq
-, tornado
-, colorama
-, isPy3k
-, futures
-, websocket_client
+, lib
+, mock
 , numpy
-, pandas
-, greenlet
-, python
-, bkcharts
+, nodejs
 , pillow
+, pytest
+, python
+, python-dateutil
+, pyyaml
 , selenium
+, six
+, substituteAll
+, tornado
 }:
 
 buildPythonPackage rec {
   pname = "bokeh";
-  version = "1.0.4";
+  version = "1.3.4";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ceeb6a75afc1b2de00c2b8b6da121dec3fb77031326897b80d4375a70e96aebf";
+    sha256 = "0m27j29jpi977y95k272xc24qkl5bkniy046cil116hrbgnppng2";
   };
 
-  disabled = isPyPy;
+  patches = [
+    (substituteAll {
+      src = ./hardcode-nodejs-npmjs-paths.patch;
+      node_bin = "${nodejs}/bin/node";
+      npm_bin = "${nodejs}/bin/npm";
+    })
+  ];
 
-  # Some test that uses tornado fails
-#   doCheck = false;
+  disabled = isPyPy;
 
   checkInputs = [ mock pytest pillow selenium ];
 
   propagatedBuildInputs = [
     pillow
-    flask
     jinja2
-    markupsafe
-    werkzeug
-    itsdangerous
-    dateutil
-    requests
+    python-dateutil
     six
-    pygments
-    pystache
-    markdown
     pyyaml
-    pyzmq
     tornado
-    colorama
-    bkcharts
+    numpy
   ]
-  ++ lib.optionals ( !isPy3k ) [ futures ]
-  ++ lib.optionals ( !isPy3k && !isPyPy ) [ websocket_client ]
-  ++ lib.optionals ( !isPyPy ) [ numpy pandas greenlet ];
+  ++ lib.optionals ( !isPy3k ) [ futures ];
 
   checkPhase = ''
     ${python.interpreter} -m unittest discover -s bokeh/tests
diff --git a/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch b/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch
new file mode 100644
index 0000000000000..f8f33c0021f27
--- /dev/null
+++ b/pkgs/development/python-modules/bokeh/hardcode-nodejs-npmjs-paths.patch
@@ -0,0 +1,15 @@
+diff --git a/bokeh/util/compiler.py b/bokeh/util/compiler.py
+index a752aad7d..8af05ff63 100644
+--- a/bokeh/util/compiler.py
++++ b/bokeh/util/compiler.py
+@@ -442,8 +442,8 @@ def _detect_nodejs():
+     raise RuntimeError('node.js v%s or higher is needed to allow compilation of custom models ' % version +
+                        '("conda install nodejs" or follow https://nodejs.org/en/download/)')
+ 
+-_nodejs = None
+-_npmjs = None
++_nodejs = "@node_bin@"
++_npmjs = "@npm_bin@"
+ 
+ def _nodejs_path():
+     global _nodejs
diff --git a/pkgs/development/python-modules/flask/default.nix b/pkgs/development/python-modules/flask/default.nix
index df39b2ea7253a..bc7962d410815 100644
--- a/pkgs/development/python-modules/flask/default.nix
+++ b/pkgs/development/python-modules/flask/default.nix
@@ -2,12 +2,12 @@
 , itsdangerous, click, werkzeug, jinja2, pytest }:
 
 buildPythonPackage rec {
-  version = "1.0.3";
+  version = "1.0.4";
   pname = "Flask";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ad7c6d841e64296b962296c2c2dabc6543752985727af86a975072dea984b6f3";
+    sha256 = "ed1330220a321138de53ec7c534c3d90cf2f7af938c7880fc3da13aa46bf870f";
   };
 
   checkInputs = [ pytest ];
diff --git a/pkgs/development/python-modules/fx2/default.nix b/pkgs/development/python-modules/fx2/default.nix
new file mode 100644
index 0000000000000..fa5edc1077c6d
--- /dev/null
+++ b/pkgs/development/python-modules/fx2/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, python
+, fetchFromGitHub
+, sdcc
+, libusb1
+, crcmod
+}:
+
+buildPythonPackage {
+  pname = "fx2";
+  version = "unstable-2019-08-27";
+
+  src = fetchFromGitHub {
+    owner = "whitequark";
+    repo = "libfx2";
+    rev = "dd1e42c7b46ff410dbb18beab46111bb5491400c";
+    sha256 = "0xvlmx6ym0ylrvnlqzf18d475wa0mfci7wkdbv30gl3hgdhsppjz";
+  };
+
+  nativeBuildInputs = [ sdcc ];
+
+  propagatedBuildInputs = [ libusb1 crcmod ];
+
+  preBuild = ''
+    cd software
+    ${python.pythonForBuild.interpreter} setup.py build_ext
+  '';
+
+  preInstall = ''
+    mkdir -p $out/share/libfx2
+    cp -R ../firmware/library/{.stamp,lib,include,fx2{rules,conf}.mk} \
+      $out/share/libfx2
+  '';
+
+  # installCheckPhase tries to run build_ext again and there are no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Chip support package for Cypress EZ-USB FX2 series microcontrollers";
+    homepage = https://github.com/whitequark/libfx2;
+    license = licenses.bsd0;
+    maintainers = with maintainers; [ emily ];
+  };
+}
diff --git a/pkgs/development/python-modules/glasgow/default.nix b/pkgs/development/python-modules/glasgow/default.nix
new file mode 100644
index 0000000000000..264a13aed5e74
--- /dev/null
+++ b/pkgs/development/python-modules/glasgow/default.nix
@@ -0,0 +1,66 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, sdcc
+, nmigen
+, fx2
+, libusb1
+, aiohttp
+, pyvcd
+, bitarray
+, crcmod
+, yosys
+, icestorm
+, nextpnr
+}:
+
+buildPythonPackage rec {
+  pname = "glasgow";
+  version = "unstable-2019-08-31";
+  realVersion = lib.substring 0 7 src.rev;
+
+  src = fetchFromGitHub {
+    owner = "GlasgowEmbedded";
+    repo = "Glasgow";
+    rev = "21641a13c6a0daaf8618aff3c5bfffcb26ef6cca";
+    sha256 = "1dpm1jmm4fg8xf17s6h9g5sc09gq8b6xq955sv2x11nrbqf98l4v";
+  };
+
+  nativeBuildInputs = [ sdcc ];
+
+  propagatedBuildInputs = [
+    nmigen
+    fx2
+    libusb1
+    aiohttp
+    pyvcd
+    bitarray
+    crcmod
+  ];
+
+  postPatch = ''
+    substituteInPlace software/setup.py \
+      --replace 'versioneer.get_version()' '"${realVersion}"'
+  '';
+
+  preBuild = ''
+    make -C firmware LIBFX2=${fx2}/share/libfx2
+    cp firmware/glasgow.ihex software/glasgow
+    cd software
+  '';
+
+  # a couple failing tests and also installCheck tries to build_ext again
+  doInstallCheck = false;
+  doCheck = false;
+
+  checkPhase = ''
+    python -m unittest discover
+  '';
+
+  meta = with lib; {
+    description = "Software for Glasgow, a digital interface multitool";
+    homepage = https://github.com/GlasgowEmbedded/Glasgow;
+    license = licenses.bsd0;
+    maintainers = with maintainers; [ emily ];
+  };
+}
diff --git a/pkgs/development/python-modules/intake/default.nix b/pkgs/development/python-modules/intake/default.nix
index c7f6e5c82194b..f89b7ab1ce62b 100644
--- a/pkgs/development/python-modules/intake/default.nix
+++ b/pkgs/development/python-modules/intake/default.nix
@@ -4,28 +4,31 @@
 , appdirs
 , dask
 , holoviews
+, hvplot
 , jinja2
 , msgpack-numpy
 , msgpack-python
 , numpy
 , pandas
+, panel
 , python-snappy
 , requests
 , ruamel_yaml
 , six
 , tornado
 , pytest
-, isPy27
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "intake";
-  version = "0.4.4";
-  disabled = isPy27;
+  version = "0.5.3";
+
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "3fc1b7c2949c9b4200ecbbfdff17da126981a1d8d95ccb7b7bcca3e3dd849d5e";
+    sha256 = "1mbjr4xl4i523bg8k08s5986v2289fznd8cr3j3czn5adi8519j7";
   };
 
   checkInputs = [ pytest ];
@@ -33,11 +36,13 @@ buildPythonPackage rec {
     appdirs
     dask
     holoviews
+    hvplot
     jinja2
     msgpack-numpy
     msgpack-python
     numpy
     pandas
+    panel
     python-snappy
     requests
     ruamel_yaml
@@ -45,10 +50,15 @@ buildPythonPackage rec {
     tornado
   ];
 
+  postPatch = ''
+    # Is in setup_requires but not used in setup.py...
+    substituteInPlace setup.py --replace "'pytest-runner'" ""
+  '';
+
+  # test_discover requires driver_with_entrypoints-0.1.dist-info, which is not included in tarball
+  # test_filtered_compressed_cache requires calvert_uk_filter.tar.gz, which is not included in tarball
   checkPhase = ''
-    # test_filtered_compressed_cache requires calvert_uk_filter.tar.gz, which is not included in tarball
-    # test_which assumes python for executable name
-    PATH=$out/bin:$PATH HOME=$(mktemp -d) pytest -k "not test_filtered_compressed_cache and not test_which"
+    PATH=$out/bin:$PATH HOME=$(mktemp -d) pytest -k "not test_discover and not test_filtered_compressed_cache"
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/nmigen-boards/default.nix b/pkgs/development/python-modules/nmigen-boards/default.nix
new file mode 100644
index 0000000000000..4151d08b60f42
--- /dev/null
+++ b/pkgs/development/python-modules/nmigen-boards/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, nmigen
+}:
+
+buildPythonPackage rec {
+  pname = "nmigen-boards";
+  version = "unstable-2019-08-30";
+  realVersion = lib.substring 0 7 src.rev;
+
+  src = fetchFromGitHub {
+    owner = "m-labs";
+    repo = "nmigen-boards";
+    rev = "3b80b3a3749ae8f123ff258a25e81bd21412aed4";
+    sha256 = "01qynxip8bq23jfjc5wjd97vxfvhld2zb8sxphwf0zixrmmyaspi";
+  };
+
+  propagatedBuildInputs = [ nmigen ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace 'versioneer.get_version()' '"${realVersion}"'
+  '';
+
+  meta = with lib; {
+    description = "Board and connector definitions for nMigen";
+    homepage = https://github.com/m-labs/nmigen-boards;
+    license = licenses.bsd0;
+    maintainers = with maintainers; [ emily ];
+  };
+}
diff --git a/pkgs/development/python-modules/nmigen/default.nix b/pkgs/development/python-modules/nmigen/default.nix
new file mode 100644
index 0000000000000..7375eda432715
--- /dev/null
+++ b/pkgs/development/python-modules/nmigen/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, pyvcd
+, bitarray
+, jinja2
+
+# nmigen.{test,build} call out to these
+, yosys
+, symbiyosys
+, nextpnr ? null
+, icestorm ? null
+, trellis ? null
+
+# for tests
+, yices
+}:
+
+buildPythonPackage rec {
+  pname = "nmigen";
+  version = "unstable-2019-08-31";
+  realVersion = lib.substring 0 7 src.rev;
+
+  src = fetchFromGitHub {
+    owner = "m-labs";
+    repo = "nmigen";
+    rev = "2e206220462c67aa6ae97f7515a2191440fd61b3";
+    sha256 = "0y3w6vd493jqm9b8ppgwzs02v1al8w1n5gylljlsw70ci7fyk4qa";
+  };
+
+  disabled = pythonOlder "3.6";
+
+  propagatedBuildInputs = [ pyvcd bitarray jinja2 ];
+
+  checkInputs = [ yosys yices ];
+
+  postPatch = let
+    tool = pkg: name:
+      if pkg == null then {} else { "${name}" = "${pkg}/bin/${name}"; };
+
+    # Only FOSS toolchain supported out of the box, sorry!
+    toolchainOverrides =
+      tool yosys "yosys" //
+      tool symbiyosys "sby" //
+      tool nextpnr "nextpnr-ice40" //
+      tool nextpnr "nextpnr-ecp5" //
+      tool icestorm "icepack" //
+      tool trellis "ecppack";
+  in ''
+    substituteInPlace setup.py \
+      --replace 'versioneer.get_version()' '"${realVersion}"'
+
+    substituteInPlace nmigen/_toolchain.py \
+      --replace 'overrides = {}' \
+                'overrides = ${builtins.toJSON toolchainOverrides}'
+  '';
+
+  meta = with lib; {
+    description = "A refreshed Python toolbox for building complex digital hardware";
+    homepage = https://github.com/m-labs/nmigen;
+    license = licenses.bsd0;
+    maintainers = with maintainers; [ emily ];
+  };
+}
diff --git a/pkgs/development/python-modules/panel/default.nix b/pkgs/development/python-modules/panel/default.nix
index fccd46c605db6..4c88f0e1e4b70 100644
--- a/pkgs/development/python-modules/panel/default.nix
+++ b/pkgs/development/python-modules/panel/default.nix
@@ -11,18 +11,13 @@
 
 buildPythonPackage rec {
   pname = "panel";
-  version = "0.4.0";
+  version = "0.6.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "21fc6729909dba4ba8c9a84b7fadd293322cc2594d15ac73b0f66a5ceffd1f98";
+    sha256 = "04w8jjlf7yz3k84xnacahczc9mmddqyp756rj3n8hclks9c1ww40";
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "testpath<0.4" "testpath"
-  '';
-
   propagatedBuildInputs = [
     bokeh
     param
diff --git a/pkgs/development/python-modules/param/default.nix b/pkgs/development/python-modules/param/default.nix
index 69a2e61e26900..cb27fdb64e5f5 100644
--- a/pkgs/development/python-modules/param/default.nix
+++ b/pkgs/development/python-modules/param/default.nix
@@ -7,11 +7,11 @@
 
 buildPythonPackage rec {
   pname = "param";
-  version = "1.8.2";
+  version = "1.9.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "49927979d4f6c994bcd8f6f7f2b34e3a0a7f0d62404dca6bcae5acde0192bb01";
+    sha256 = "1dbnviszdq3d2k3dfwpimb0adf27yzwm4iyv42rk8xvd8c6p9gdi";
   };
 
   checkInputs = [ flake8 nose ];
diff --git a/pkgs/development/python-modules/phonenumbers/default.nix b/pkgs/development/python-modules/phonenumbers/default.nix
index b9c4a62f0de0c..6d2e8169eb763 100644
--- a/pkgs/development/python-modules/phonenumbers/default.nix
+++ b/pkgs/development/python-modules/phonenumbers/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "phonenumbers";
-  version = "8.10.16";
+  version = "8.10.17";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1cfkyz991nbqsak3mdwybaxvzqbdcqivxnl84n8p4dyi5lk45v4b";
+    sha256 = "023rcv3qishd5n33gj22dzgq51kzpk41ckcmim96s1xvdbd2sxg9";
   };
 
   meta = {
diff --git a/pkgs/development/python-modules/pikepdf/default.nix b/pkgs/development/python-modules/pikepdf/default.nix
index c2662915b12d3..025b17d19ae9c 100644
--- a/pkgs/development/python-modules/pikepdf/default.nix
+++ b/pkgs/development/python-modules/pikepdf/default.nix
@@ -22,12 +22,12 @@
 
 buildPythonPackage rec {
   pname = "pikepdf";
-  version = "1.1.0";
+  version = "1.6.2";
   disabled = ! isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "14b36r6h3088z2sxp2pqvm171js53hz53mwm1g52iadignjnp0my";
+    sha256 = "1x1b55znr0j4fib69l2h0xq0qmbf2nbxwbwd4f7y8r4sqi20239z";
   };
 
   buildInputs = [
@@ -55,8 +55,11 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ defusedxml lxml ];
 
   postPatch = ''
-    substituteInPlace requirements/test.txt \
-       --replace "pytest >= 3.6.0, < 4.1.0" "pytest >= 4.2.1, < 5"
+    sed -i \
+      -e 's/^pytest .*/pytest/g' \
+      -e 's/^attrs .*/attrs/g' \
+      -e 's/^hypothesis .*/hypothesis/g' \
+      requirements/test.txt
   '';
 
   preBuild = ''
@@ -70,4 +73,3 @@ buildPythonPackage rec {
     maintainers = [ maintainers.kiwi ];
   };
 }
-
diff --git a/pkgs/development/python-modules/pybind11/default.nix b/pkgs/development/python-modules/pybind11/default.nix
index f49c50185db75..1b89cb5ada7ff 100644
--- a/pkgs/development/python-modules/pybind11/default.nix
+++ b/pkgs/development/python-modules/pybind11/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "pybind11";
-  version = "2.2.4";
+  version = "2.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1kz1z2cg3q901q9spkdhksmcfiskaghzmbb9ivr5mva856yvnak4";
+    sha256 = "0923ngd2cvck3lhl7584y08n36pm6zqihfm1s69sbdc11xg936hr";
   };
 
   patches = [
diff --git a/pkgs/development/python-modules/pytest-random-order/default.nix b/pkgs/development/python-modules/pytest-random-order/default.nix
new file mode 100644
index 0000000000000..088f8702436fb
--- /dev/null
+++ b/pkgs/development/python-modules/pytest-random-order/default.nix
@@ -0,0 +1,27 @@
+{ stdenv
+, buildPythonPackage
+, fetchPypi
+, pythonOlder
+, pytest
+}:
+
+buildPythonPackage rec {
+  version = "1.0.4";
+  pname = "pytest-random-order";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "6b2159342a4c8c10855bc4fc6d65ee890fc614cb2b4ff688979b008a82a0ff52";
+  };
+
+  disabled = pythonOlder "3.5";
+
+  propagatedBuildInputs = [ pytest ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/jbasko/pytest-random-order";
+    description = "Randomise the order of tests with some control over the randomness";
+    license = licenses.mit;
+    maintainers = [ maintainers.prusnak ];
+  };
+}
diff --git a/pkgs/development/python-modules/tensorflow/default.nix b/pkgs/development/python-modules/tensorflow/default.nix
index 2468a3b3f7d73..7f6952e8fe547 100644
--- a/pkgs/development/python-modules/tensorflow/default.nix
+++ b/pkgs/development/python-modules/tensorflow/default.nix
@@ -58,8 +58,23 @@ let
   variant = if cudaSupport then "-gpu" else "";
   pname = "tensorflow${variant}";
 
-  # TODO: remove after there's support for setupPyDistFlags
-  setuppy = ../../../development/interpreters/python/run_setup.py;
+  pythonEnv = python.withPackages (_:
+    [ # python deps needed during wheel build time
+      numpy
+      keras-preprocessing
+      protobuf
+      wrapt
+      gast
+      astor
+      absl-py
+      termcolor
+      keras-applications
+      setuptools
+      wheel
+  ] ++ lib.optionals (!isPy3k)
+  [ future
+    mock
+  ]);
 
   bazel-build = buildBazelPackage {
     name = "${pname}-${version}";
@@ -96,27 +111,15 @@ let
     # https://gitweb.gentoo.org/repo/gentoo.git/tree/sci-libs/tensorflow
 
     nativeBuildInputs = [
-      swig which cython
+      swig which pythonEnv
     ];
 
     buildInputs = [
-      python
       jemalloc
       openmpi
       glibcLocales
       git
 
-      # python deps needed during wheel build time
-      numpy
-      keras-preprocessing
-      protobuf
-      wrapt
-      gast
-      astor
-      absl-py
-      termcolor
-      keras-applications
-
       # libs taken from system through the TF_SYS_LIBS mechanism
       # grpc
       sqlite
@@ -133,20 +136,12 @@ let
       giflib
       re2
       pkgs.lmdb
-
-      # for building the wheel
-      setuptools
-      wheel
-    ] ++ lib.optionals (!isPy3k) [
-      future
-      mock
     ] ++ lib.optionals cudaSupport [
       cudatoolkit
       cudnn
       nvidia_x11
     ];
 
-
     # arbitrarily set to the current latest bazel version, overly careful
     TF_IGNORE_MAX_BAZEL_VERSION = true;
 
@@ -194,8 +189,8 @@ let
 
     INCLUDEDIR = "${includes_joined}/include";
 
-    PYTHON_BIN_PATH = python.interpreter;
- 
+    PYTHON_BIN_PATH = pythonEnv.interpreter;
+
     TF_NEED_GCP = true;
     TF_NEED_HDFS = true;
     TF_ENABLE_XLA = tfFeature xlaSupport;
@@ -237,6 +232,9 @@ let
       export PYTHON_LIB_PATH="$NIX_BUILD_TOP/site-packages"
       export CC_OPT_FLAGS="${lib.concatStringsSep " " opt_flags}"
       mkdir -p "$PYTHON_LIB_PATH"
+
+      # To avoid mixing Python 2 and Python 3
+      unset PYTHONPATH
     '';
 
     configurePhase = ''
@@ -313,13 +311,7 @@ in buildPythonPackage {
     rm $out/bin/tensorboard
   '';
 
-  # TODO: remove after there's support for setupPyDistFlags
-  buildPhase = ''
-    runHook preBuild
-    cp ${setuppy} nix_run_setup
-    ${python.interpreter} nix_run_setup --project_name ${pname} bdist_wheel
-    runHook postBuild
-  '';
+  setupPyGlobalFlags = [ "--project_name ${pname}" ];
 
   # tensorflow/tools/pip_package/setup.py
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/trezor/default.nix b/pkgs/development/python-modules/trezor/default.nix
index 47aa23ca1143a..9b7dc424ddc14 100644
--- a/pkgs/development/python-modules/trezor/default.nix
+++ b/pkgs/development/python-modules/trezor/default.nix
@@ -26,9 +26,6 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ typing-extensions protobuf hidapi ecdsa mnemonic requests pyblake2 click construct libusb1 rlp shamir-mnemonic ];
 
-  # build requires UTF-8 locale
-  LANG = "en_US.UTF-8";
-
   checkInputs = [
     pytest
   ];
@@ -36,7 +33,7 @@ buildPythonPackage rec {
   # disable test_tx_api.py as it requires being online
   checkPhase = ''
     runHook preCheck
-    ${python.interpreter} -m pytest --pyarg trezorlib.tests.unit_tests --ignore trezorlib/tests/unit_tests/test_tx_api.py
+    ${python.interpreter} -m pytest --pyargs trezorlib.tests.unit_tests --ignore trezorlib/tests/unit_tests/test_tx_api.py
     runHook postCheck
   '';
 
diff --git a/pkgs/development/python-modules/uvloop/default.nix b/pkgs/development/python-modules/uvloop/default.nix
index 9c3dae74a79e5..2093f4d7053c7 100644
--- a/pkgs/development/python-modules/uvloop/default.nix
+++ b/pkgs/development/python-modules/uvloop/default.nix
@@ -1,23 +1,33 @@
 { lib
+, stdenv
 , buildPythonPackage
 , fetchPypi
 , pyopenssl
 , libuv
 , psutil
 , isPy27
+, CoreServices
+, ApplicationServices
 }:
 
 buildPythonPackage rec {
   pname = "uvloop";
-  version = "0.12.2";
+  version = "0.13.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "c48692bf4587ce281d641087658eca275a5ad3b63c78297bbded96570ae9ce8f";
+    sha256 = "0blcnrd5vky2k1m1p1skx4516dr1jx76yyb0c6fi82si6mqd0b4l";
   };
 
-  buildInputs = [ libuv ];
+  buildInputs = [
+    libuv
+  ] ++ lib.optionals stdenv.isDarwin [ CoreServices ApplicationServices ];
+
+  postPatch = ''
+    # Removing code linting tests, which we don't care about
+    rm tests/test_sourcecode.py
+  '';
 
   checkInputs = [ pyopenssl psutil ];
 
diff --git a/pkgs/development/r-modules/default.nix b/pkgs/development/r-modules/default.nix
index e813e550f6e22..995f13853a237 100644
--- a/pkgs/development/r-modules/default.nix
+++ b/pkgs/development/r-modules/default.nix
@@ -308,7 +308,7 @@ let
     RcppGSL = [ pkgs.gsl_1 ];
     RcppZiggurat = [ pkgs.gsl_1 ];
     reprex = [ pkgs.which ];
-    rgdal = [ pkgs.proj pkgs.gdal ];
+    rgdal = [ pkgs.proj.dev pkgs.gdal ];
     rgeos = [ pkgs.geos ];
     rggobi = [ pkgs.ggobi pkgs.gtk2.dev pkgs.libxml2.dev ];
     rgl = [ pkgs.libGLU_combined pkgs.xlibsWrapper ];
@@ -420,7 +420,7 @@ let
     odbc = [ pkgs.pkgconfig ];
     openssl = [ pkgs.pkgconfig ];
     pdftools = [ pkgs.pkgconfig ];
-    sf = [ pkgs.pkgconfig ];
+    sf = [ pkgs.pkgconfig pkgs.sqlite.dev pkgs.proj.dev ];
     showtext = [ pkgs.pkgconfig ];
     spate = [ pkgs.pkgconfig ];
     stringi = [ pkgs.pkgconfig ];
diff --git a/pkgs/development/tools/diesel-cli/allow-warnings.patch b/pkgs/development/tools/diesel-cli/allow-warnings.patch
new file mode 100644
index 0000000000000..342ac1baa1026
--- /dev/null
+++ b/pkgs/development/tools/diesel-cli/allow-warnings.patch
@@ -0,0 +1,88 @@
+diff --git a/diesel/src/lib.rs b/diesel/src/lib.rs
+index 4e743eb4..97c53ed8 100644
+--- a/diesel/src/lib.rs
++++ b/diesel/src/lib.rs
+@@ -131,7 +131,6 @@
+ #![cfg_attr(feature = "unstable", feature(specialization, try_from))]
+ // Built-in Lints
+ #![deny(
+-    warnings,
+     missing_debug_implementations,
+     missing_copy_implementations,
+     missing_docs
+diff --git a/diesel_cli/src/main.rs b/diesel_cli/src/main.rs
+index 741ca003..cf93bb8f 100644
+--- a/diesel_cli/src/main.rs
++++ b/diesel_cli/src/main.rs
+@@ -1,5 +1,5 @@
+ // Built-in Lints
+-#![deny(warnings, missing_copy_implementations)]
++#![deny(missing_copy_implementations)]
+ // Clippy lints
+ #![allow(clippy::option_map_unwrap_or_else, clippy::option_map_unwrap_or)]
+ #![warn(
+diff --git a/diesel_cli/tests/tests.rs b/diesel_cli/tests/tests.rs
+index 2edee846..c96917c4 100644
+--- a/diesel_cli/tests/tests.rs
++++ b/diesel_cli/tests/tests.rs
+@@ -1,5 +1,3 @@
+-#![deny(warnings)]
+-
+ extern crate chrono;
+ extern crate diesel;
+ #[macro_use]
+diff --git a/diesel_derives/src/lib.rs b/diesel_derives/src/lib.rs
+index 2c43b2a3..44dcf3f9 100644
+--- a/diesel_derives/src/lib.rs
++++ b/diesel_derives/src/lib.rs
+@@ -1,6 +1,6 @@
+ #![recursion_limit = "1024"]
+ // Built-in Lints
+-#![deny(warnings, missing_copy_implementations)]
++#![deny(missing_copy_implementations)]
+ // Clippy lints
+ #![allow(
+     clippy::needless_pass_by_value,
+diff --git a/diesel_derives/tests/tests.rs b/diesel_derives/tests/tests.rs
+index 636fea66..f86f3dcc 100644
+--- a/diesel_derives/tests/tests.rs
++++ b/diesel_derives/tests/tests.rs
+@@ -1,5 +1,3 @@
+-#![deny(warnings)]
+-
+ #[macro_use]
+ extern crate cfg_if;
+ #[macro_use]
+diff --git a/diesel_migrations/migrations_internals/src/lib.rs b/diesel_migrations/migrations_internals/src/lib.rs
+index 933e21a8..7c4d0222 100644
+--- a/diesel_migrations/migrations_internals/src/lib.rs
++++ b/diesel_migrations/migrations_internals/src/lib.rs
+@@ -1,5 +1,5 @@
+ // Built-in Lints
+-#![deny(warnings, missing_debug_implementations, missing_copy_implementations)]
++#![deny(missing_debug_implementations, missing_copy_implementations)]
+ // Clippy lints
+ #![allow(
+     clippy::option_map_unwrap_or_else,
+diff --git a/diesel_migrations/migrations_macros/src/lib.rs b/diesel_migrations/migrations_macros/src/lib.rs
+index 0a83234e..2f509c04 100644
+--- a/diesel_migrations/migrations_macros/src/lib.rs
++++ b/diesel_migrations/migrations_macros/src/lib.rs
+@@ -1,5 +1,5 @@
+ // Built-in Lints
+-#![deny(warnings, missing_debug_implementations, missing_copy_implementations)]
++#![deny(missing_debug_implementations, missing_copy_implementations)]
+ // Clippy lints
+ #![allow(
+     clippy::option_map_unwrap_or_else,
+diff --git a/diesel_migrations/src/lib.rs b/diesel_migrations/src/lib.rs
+index c85414e5..f025f237 100644
+--- a/diesel_migrations/src/lib.rs
++++ b/diesel_migrations/src/lib.rs
+@@ -1,5 +1,5 @@
+ // Built-in Lints
+-#![deny(warnings, missing_copy_implementations)]
++#![deny(missing_copy_implementations)]
+ // Clippy lints
+ #![allow(
+     clippy::needless_pass_by_value,
diff --git a/pkgs/development/tools/diesel-cli/cargo-lock.patch b/pkgs/development/tools/diesel-cli/cargo-lock.patch
new file mode 100644
index 0000000000000..26d583f9a11d2
--- /dev/null
+++ b/pkgs/development/tools/diesel-cli/cargo-lock.patch
@@ -0,0 +1,1589 @@
+diff --git a/Cargo.lock b/Cargo.lock
+new file mode 100644
+index 0000000..f20a5bf
+--- /dev/null
++++ b/Cargo.lock
+@@ -0,0 +1,1583 @@
++# This file is automatically @generated by Cargo.
++# It is not intended for manual editing.
++[[package]]
++name = "advanced-blog-cli"
++version = "0.1.0"
++dependencies = [
++ "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bcrypt 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "chrono 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "diesel_migrations 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "structopt 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "structopt-derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tempfile 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "aho-corasick"
++version = "0.5.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "aho-corasick"
++version = "0.6.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "all_about_inserts"
++version = "0.1.0"
++dependencies = [
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "all_about_inserts_mysql"
++version = "0.1.0"
++dependencies = [
++ "chrono 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "all_about_inserts_sqlite"
++version = "0.1.0"
++dependencies = [
++ "chrono 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "all_about_updates"
++version = "0.1.0"
++dependencies = [
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "ansi_term"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "assert_matches"
++version = "1.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "atty"
++version = "0.2.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "autocfg"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "backtrace"
++version = "0.3.35"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "backtrace-sys"
++version = "0.1.31"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "barrel"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "base64"
++version = "0.9.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "safemem 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "bcrypt"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "bigdecimal"
++version = "0.0.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "bitflags"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "bumpalo"
++version = "2.6.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "byteorder"
++version = "1.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "c2-chacha"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "cc"
++version = "1.0.41"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "cfg-if"
++version = "0.1.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "chrono"
++version = "0.4.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "js-sys 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "wasm-bindgen 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "clap"
++version = "2.33.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "cloudabi"
++version = "0.0.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "derive-error-chain"
++version = "0.10.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel"
++version = "1.4.0"
++dependencies = [
++ "bigdecimal 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "chrono 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "diesel_derives 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ipnetwork 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libsqlite3-sys 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mysqlclient-sys 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "pq-sys 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quickcheck 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "r2d2 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel"
++version = "1.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "chrono 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "diesel_derives 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libsqlite3-sys 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "mysqlclient-sys 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "pq-sys 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel_cli"
++version = "1.4.0"
++dependencies = [
++ "barrel 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "chrono 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "difference 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libsqlite3-sys 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "migrations_internals 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel_demo_step_1_mysql"
++version = "0.1.0"
++dependencies = [
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel_demo_step_1_pg"
++version = "0.1.0"
++dependencies = [
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel_demo_step_1_sqlite"
++version = "0.1.0"
++dependencies = [
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel_demo_step_2_mysql"
++version = "0.1.0"
++dependencies = [
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel_demo_step_2_pg"
++version = "0.1.0"
++dependencies = [
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel_demo_step_2_sqlite"
++version = "0.1.0"
++dependencies = [
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel_demo_step_3_mysql"
++version = "0.1.0"
++dependencies = [
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel_demo_step_3_pg"
++version = "0.1.0"
++dependencies = [
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel_demo_step_3_sqlite"
++version = "0.1.0"
++dependencies = [
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel_derives"
++version = "1.4.0"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel_derives"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++replace = "diesel_derives 1.4.0"
++
++[[package]]
++name = "diesel_infer_schema"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "infer_schema_macros 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel_migrations"
++version = "1.4.0"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "migrations_internals 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "migrations_macros 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "diesel_migrations"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++replace = "diesel_migrations 1.4.0"
++
++[[package]]
++name = "diesel_tests"
++version = "0.1.0"
++dependencies = [
++ "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "bigdecimal 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)",
++ "chrono 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "diesel 1.4.0",
++ "diesel_infer_schema 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "diesel_migrations 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ipnetwork 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quickcheck 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
++ "uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "difference"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "dotenv"
++version = "0.10.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "derive-error-chain 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "env_logger"
++version = "0.3.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "error-chain"
++version = "0.10.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "backtrace 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "fuchsia-cprng"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "gcc"
++version = "0.3.55"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "getrandom"
++version = "0.1.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "wasi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "idna"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "infer_schema_internals"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "infer_schema_macros"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "infer_schema_internals 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "ipnetwork"
++version = "0.13.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "itoa"
++version = "0.4.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "js-sys"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "wasm-bindgen 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "kernel32-sys"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "lazy_static"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "libc"
++version = "0.2.62"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "libsqlite3-sys"
++version = "0.12.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)",
++ "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "lock_api"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "lock_api"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "log"
++version = "0.3.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "log"
++version = "0.4.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "matches"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "memchr"
++version = "0.1.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "memchr"
++version = "2.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "migrations_internals"
++version = "1.4.0"
++dependencies = [
++ "barrel 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "migrations_internals"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++replace = "migrations_internals 1.4.0"
++
++[[package]]
++name = "migrations_macros"
++version = "1.4.0"
++dependencies = [
++ "migrations_internals 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "migrations_macros"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++replace = "migrations_macros 1.4.0"
++
++[[package]]
++name = "mysqlclient-sys"
++version = "0.2.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num-bigint"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num-integer"
++version = "0.1.41"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "num-traits"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "parking_lot"
++version = "0.8.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "parking_lot"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "parking_lot_core"
++version = "0.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "parking_lot_core"
++version = "0.6.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "percent-encoding"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "pkg-config"
++version = "0.3.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "ppv-lite86"
++version = "0.2.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "pq-sys"
++version = "0.4.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "proc-macro2"
++version = "0.4.30"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "proc-macro2"
++version = "1.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "quickcheck"
++version = "0.4.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "quote"
++version = "0.3.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "quote"
++version = "0.6.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "quote"
++version = "1.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "r2d2"
++version = "0.8.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "scheduled-thread-pool 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand"
++version = "0.3.23"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand"
++version = "0.4.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand"
++version = "0.6.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "getrandom 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_chacha"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_chacha"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "rand_core"
++version = "0.5.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "getrandom 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_hc"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_hc"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_isaac"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_jitter"
++version = "0.1.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_os"
++version = "0.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_pcg"
++version = "0.1.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rand_xorshift"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rdrand"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "redox_syscall"
++version = "0.1.56"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "regex"
++version = "0.1.80"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
++ "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "regex"
++version = "0.2.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
++ "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
++ "regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "utf8-ranges 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "regex-syntax"
++version = "0.3.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "regex-syntax"
++version = "0.5.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "ucd-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "remove_dir_all"
++version = "0.5.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rust-crypto"
++version = "0.2.36"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
++ "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "rustc-demangle"
++version = "0.1.16"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "rustc-serialize"
++version = "0.3.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "rustc_version"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "ryu"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "safemem"
++version = "0.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "scheduled-thread-pool"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "scopeguard"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "semver"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "semver-parser"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "serde"
++version = "1.0.99"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_derive"
++version = "1.0.99"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "serde_json"
++version = "1.0.40"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
++ "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "smallvec"
++version = "0.6.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "strsim"
++version = "0.8.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "structopt"
++version = "0.1.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "structopt-derive"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "syn"
++version = "0.11.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
++ "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "syn"
++version = "0.15.44"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "syn"
++version = "1.0.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "synom"
++version = "0.11.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tempdir"
++version = "0.3.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
++ "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tempfile"
++version = "2.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "tempfile"
++version = "3.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++ "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "textwrap"
++version = "0.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "thread-id"
++version = "2.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "thread_local"
++version = "0.2.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "thread_local"
++version = "0.3.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "time"
++version = "0.1.42"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)",
++ "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "toml"
++version = "0.4.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "ucd-util"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "unicode-bidi"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "unicode-normalization"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "unicode-width"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "unicode-xid"
++version = "0.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "unicode-xid"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "unicode-xid"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "url"
++version = "1.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "utf8-ranges"
++version = "0.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "utf8-ranges"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "uuid"
++version = "0.6.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "uuid"
++version = "0.7.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "vcpkg"
++version = "0.2.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "vec_map"
++version = "0.8.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "wasi"
++version = "0.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "wasm-bindgen"
++version = "0.2.50"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
++ "wasm-bindgen-macro 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "wasm-bindgen-backend"
++version = "0.2.50"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "bumpalo 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
++ "proc-macro2 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "wasm-bindgen-shared 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "wasm-bindgen-macro"
++version = "0.2.50"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "wasm-bindgen-macro-support 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "wasm-bindgen-macro-support"
++version = "0.2.50"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "proc-macro2 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
++ "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
++ "wasm-bindgen-backend 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
++ "wasm-bindgen-shared 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "wasm-bindgen-shared"
++version = "0.2.50"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi"
++version = "0.3.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++dependencies = [
++ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++ "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
++]
++
++[[package]]
++name = "winapi-build"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi-i686-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[[package]]
++name = "winapi-x86_64-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++
++[metadata]
++"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
++"checksum aho-corasick 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "81ce3d38065e618af2d7b77e10c5ad9a069859b4be3c2250f674af3840d9c8a5"
++"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
++"checksum assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7deb0a829ca7bcfaf5da70b073a8d128619259a7be8216a355e23f00763059e5"
++"checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90"
++"checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875"
++"checksum backtrace 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "1371048253fa3bac6704bfd6bbfc922ee9bdcee8881330d40f308b81cc5adc55"
++"checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b"
++"checksum barrel 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f2016bcea86b2a1a807753dc2b6ba682fa24e14e50c7474f4b1a0330949c86fb"
++"checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643"
++"checksum bcrypt 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4a6f09cde06fb2cd52a77123c36bfd1e8e60cf13a8bac6ba8f451dabff4644c8"
++"checksum bigdecimal 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "679e21a6734fdfc63378aea80c2bf31e6ac8ced21ed33e1ee37f8f7bf33c2056"
++"checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd"
++"checksum bumpalo 2.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad807f2fc2bf185eeb98ff3a901bd46dc5ad58163d0fa4577ba0d25674d71708"
++"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
++"checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101"
++"checksum cc 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)" = "8dae9c4b8fedcae85592ba623c4fd08cfdab3e3b72d6df780c6ead964a69bfff"
++"checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33"
++"checksum chrono 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "27429a03ca54100bf6bdc726c09adc46a74187ac93f9ce96dc7aaa9594ebf707"
++"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9"
++"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
++"checksum derive-error-chain 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3c9ca9ade651388daad7c993f005d0d20c4f6fe78c1cdc93e95f161c6f5ede4a"
++"checksum diesel 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8d24935ba50c4a8dc375a0fd1f8a2ba6bdbdc4125713126a74b965d6a01a06d7"
++"checksum diesel_derives 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "62a27666098617d52c487a41f70de23d44a1dc1f3aa5877ceba2790fb1f1cab4"
++"checksum diesel_infer_schema 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7bea70d0798a3d8489e1d5493bb2111a1ab2da434191b9e9605f167c01a20680"
++"checksum diesel_migrations 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bf3cde8413353dc7f5d72fa8ce0b99a560a359d2c5ef1e5817ca731cd9008f4c"
++"checksum difference 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b3304d19798a8e067e48d8e69b2c37f0b5e9b4e462504ad9e27e9f3fce02bba8"
++"checksum dotenv 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d6f0e2bb24d163428d8031d3ebd2d2bd903ad933205a97d0f18c7c1aade380f3"
++"checksum env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "15abd780e45b3ea4f76b4e9a26ff4843258dd8a3eed2775a0e7368c2e7936c2f"
++"checksum error-chain 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9435d864e017c3c6afeac1654189b06cdb491cf2ff73dbf0d73b0f292f42ff8"
++"checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba"
++"checksum gcc 0.3.55 (registry+https://github.com/rust-lang/crates.io-index)" = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2"
++"checksum getrandom 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "fc344b02d3868feb131e8b5fe2b9b0a1cc42942679af493061fc13b853243872"
++"checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e"
++"checksum infer_schema_internals 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "90e390df38a4e5cb4337a76db5b736f239e08f3ab7e8e42a34548617f0113f64"
++"checksum infer_schema_macros 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "07b667b471ef99645989ceea451be288b6e669eeb8951d3f0fbd310677588ac6"
++"checksum ipnetwork 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d1d8b990621b5b0806fac3dbf71d1833a4c0a9e25702d10bd8b2c629c7ae01c"
++"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
++"checksum js-sys 0.3.27 (registry+https://github.com/rust-lang/crates.io-index)" = "1efc4f2a556c58e79c5500912e221dd826bec64ff4aabd8ce71ccef6da02d7d4"
++"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
++"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
++"checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba"
++"checksum libsqlite3-sys 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd6457c70bbff456d9fe49deaba35ec47c3e598bf8d7950ff0575ceb7a8a6ad1"
++"checksum lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff"
++"checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc"
++"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
++"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
++"checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
++"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
++"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e"
++"checksum migrations_internals 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8089920229070f914b9ce9b07ef60e175b2b9bc2d35c3edd8bf4433604e863b9"
++"checksum migrations_macros 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1664412abf7db2b8a6d58be42a38b099780cc542b5b350383b805d88932833fe"
++"checksum mysqlclient-sys 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7e9637d93448044078aaafea7419aed69d301b4a12bcc4aa0ae856eb169bef85"
++"checksum num-bigint 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "57450397855d951f1a41305e54851b1a7b8f5d2e349543a02a2effe25459f718"
++"checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09"
++"checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32"
++"checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7"
++"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252"
++"checksum parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c"
++"checksum parking_lot_core 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b"
++"checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831"
++"checksum pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c1d2cfa5a714db3b5f24f0915e74fcdf91d09d496ba61329705dda7774d2af"
++"checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b"
++"checksum pq-sys 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "6ac25eee5a0582f45a67e837e350d784e7003bd29a5f460796772061ca49ffda"
++"checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
++"checksum proc-macro2 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "175a40b9cf564ce9bf050654633dbf339978706b8ead1a907bb970b63185dd95"
++"checksum quickcheck 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "02c2411d418cea2364325b18a205664f9ef8252e06b2e911db97c0b0d98b1406"
++"checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"
++"checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
++"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
++"checksum r2d2 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)" = "bc42ce75d9f4447fb2a04bbe1ed5d18dd949104572850ec19b164e274919f81b"
++"checksum rand 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "64ac302d8f83c0c1974bf758f6b041c6c8ada916fbb44a609158ca8b064cc76c"
++"checksum rand 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "552840b97013b1a26992c11eac34bdd778e464601a4c2054b5f0bff7c6761293"
++"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
++"checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c"
++"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
++"checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853"
++"checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b"
++"checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc"
++"checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
++"checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4"
++"checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
++"checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08"
++"checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b"
++"checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071"
++"checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44"
++"checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c"
++"checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2"
++"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
++"checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"
++"checksum regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384"
++"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"
++"checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7"
++"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e"
++"checksum rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a"
++"checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783"
++"checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"
++"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
++"checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997"
++"checksum safemem 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d2b08423011dae9a5ca23f07cf57dac3857f5c885d352b76f6d95f4aea9434d0"
++"checksum scheduled-thread-pool 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bd07742e081ff6c077f5f6b283f12f32b9e7cc765b316160d66289b74546fbb3"
++"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d"
++"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
++"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
++"checksum serde 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "fec2851eb56d010dc9a21b89ca53ee75e6528bab60c11e89d38390904982da9f"
++"checksum serde_derive 1.0.99 (registry+https://github.com/rust-lang/crates.io-index)" = "cb4dc18c61206b08dc98216c98faa0232f4337e1e1b8574551d5bad29ea1b425"
++"checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704"
++"checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7"
++"checksum strsim 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
++"checksum structopt 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "783cb22d520b177a3772e520d04a3c7970d51c3b647ba80739f99be01131b54f"
++"checksum structopt-derive 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4da119c9a7a1eccb7c6de0c1eb3f7ed1c11138624d092b3687222aeed8f1375c"
++"checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad"
++"checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
++"checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf"
++"checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"
++"checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8"
++"checksum tempfile 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "11ce2fe9db64b842314052e2421ac61a73ce41b898dc8e3750398b219c5fc1e0"
++"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
++"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
++"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"
++"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"
++"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
++"checksum time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)" = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f"
++"checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f"
++"checksum ucd-util 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa9b3b49edd3468c0e6565d85783f51af95212b6fa3986a5500954f00b460874"
++"checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"
++"checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426"
++"checksum unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7007dbd421b92cc6e28410fe7362e2e0a2503394908f417b68ec8d1c364c4e20"
++"checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"
++"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
++"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
++"checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a"
++"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"
++"checksum utf8-ranges 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b4ae116fef2b7fea257ed6440d3cfcff7f190865f170cdad00bb6465bf18ecba"
++"checksum uuid 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e1436e58182935dcd9ce0add9ea0b558e8a87befe01c1a301e6020aeb0876363"
++"checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a"
++"checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95"
++"checksum vec_map 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05c78687fb1a80548ae3250346c3db86a80a7cdd77bda190189f2d0a0987c81a"
++"checksum wasi 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fd5442abcac6525a045cc8c795aedb60da7a2e5e89c7bf18a0d5357849bb23c7"
++"checksum wasm-bindgen 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "dcddca308b16cd93c2b67b126c688e5467e4ef2e28200dc7dfe4ae284f2faefc"
++"checksum wasm-bindgen-backend 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "f805d9328b5fc7e5c6399960fd1889271b9b58ae17bdb2417472156cc9fafdd0"
++"checksum wasm-bindgen-macro 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "3ff88201a482abfc63921621f6cb18eb1efd74f136b05e5841e7f8ca434539e9"
++"checksum wasm-bindgen-macro-support 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "6a433d89ecdb9f77d46fcf00c8cf9f3467b7de9954d8710c175f61e2e245bb0e"
++"checksum wasm-bindgen-shared 0.2.50 (registry+https://github.com/rust-lang/crates.io-index)" = "d41fc1bc3570cdf8d108c15e014045fd45a95bb5eb36605f96a90461fc34027d"
++"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
++"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6"
++"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
++"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
++"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
diff --git a/pkgs/development/tools/diesel-cli/default.nix b/pkgs/development/tools/diesel-cli/default.nix
new file mode 100644
index 0000000000000..f6a67b051146a
--- /dev/null
+++ b/pkgs/development/tools/diesel-cli/default.nix
@@ -0,0 +1,77 @@
+{ stdenv, lib, rustPlatform, fetchFromGitHub, openssl, pkgconfig, Security
+, sqliteSupport ? true, sqlite
+, postgresqlSupport ? true, postgresql
+, mysqlSupport ? true, mysql, zlib, libiconv
+}:
+
+assert lib.assertMsg (sqliteSupport == true || postgresqlSupport == true || mysqlSupport == true)
+  "support for at least one database must be enabled";
+
+let
+  inherit (stdenv.lib) optional optionals optionalString;
+  features = ''
+    ${optionalString sqliteSupport "sqlite"} \
+    ${optionalString postgresqlSupport "postgres"} \
+    ${optionalString mysqlSupport "mysql"} \
+  '';
+in
+
+rustPlatform.buildRustPackage rec {
+  pname = "diesel-cli";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "diesel-rs";
+    repo = "diesel";
+    rev = "v${version}";
+    sha256 = "0wp4hvpl9cf8hw1jyz3z476k5blrh6srfpv36dw10bj126rz9pvb";
+  };
+
+  patches = [
+    # Allow warnings to fix many instances of `error: trait objects without an explicit `dyn` are deprecated`
+    #
+    # Remove this after https://github.com/diesel-rs/diesel/commit/9004d1c3fa12aaee84986bd3d893002491373f8c
+    # is in a release.
+    ./allow-warnings.patch
+  ];
+
+  cargoBuildFlags = [ "--no-default-features --features \"${features}\"" ];
+  cargoPatches = [ ./cargo-lock.patch ];
+  cargoSha256 = "0xlcskddhy7xsiwj54gmn1xlgkfxb4dwrys7rbamfz1h8aa6ixjx";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ openssl ]
+    ++ optional stdenv.isDarwin Security
+    ++ optional (stdenv.isDarwin && mysqlSupport) libiconv
+    ++ optional sqliteSupport sqlite
+    ++ optional postgresqlSupport postgresql
+    ++ optionals mysqlSupport [ mysql zlib ];
+
+  # We must `cd diesel_cli`, we cannot use `--package diesel_cli` to build
+  # because --features fails to apply to the package:
+  # https://github.com/rust-lang/cargo/issues/5015
+  # https://github.com/rust-lang/cargo/issues/4753
+  preBuild = "cd diesel_cli";
+  postBuild = "cd ..";
+
+  checkPhase = optionalString sqliteSupport ''
+    (cd diesel_cli && cargo check --features sqlite)
+  '';
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    $out/bin/diesel --version
+  '';
+
+  # Fix the build with mariadb, which otherwise shows "error adding symbols:
+  # DSO missing from command line" errors for libz and libssl.
+  NIX_LDFLAGS = lib.optional mysqlSupport "-lz -lssl -lcrypto";
+
+  meta = with lib; {
+    description = "Database tool for working with Rust projects that use Diesel";
+    homepage = https://github.com/diesel-rs/diesel/tree/master/diesel_cli;
+    license = with licenses; [ mit asl20 ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ ivan ];
+  };
+}
diff --git a/pkgs/development/tools/diesel-cli/update-cargo-lock.sh b/pkgs/development/tools/diesel-cli/update-cargo-lock.sh
new file mode 100755
index 0000000000000..bd2e033e6871b
--- /dev/null
+++ b/pkgs/development/tools/diesel-cli/update-cargo-lock.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# This updates cargo-lock.patch for the diesel version listed in default.nix.
+
+set -eu -o verbose
+
+here=$PWD
+version=$(cat default.nix | grep '^  version = "' | cut -d '"' -f 2)
+checkout=$(mktemp -d)
+git clone -b "v$version" --depth=1 https://github.com/diesel-rs/diesel "$checkout"
+cd "$checkout"
+
+rm -f rust-toolchain
+cargo generate-lockfile
+git add -f Cargo.lock
+git diff HEAD -- Cargo.lock > "$here"/cargo-lock.patch
+
+cd "$here"
+rm -rf "$checkout"
diff --git a/pkgs/development/tools/icestorm/default.nix b/pkgs/development/tools/icestorm/default.nix
index 2bac15403038b..b3ce4f8f6a719 100644
--- a/pkgs/development/tools/icestorm/default.nix
+++ b/pkgs/development/tools/icestorm/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub
-, pkgconfig, libftdi
+, pkgconfig, libftdi1
 , python3, pypy3
 
 # PyPy yields large improvements in build time and runtime performance,
@@ -11,7 +11,7 @@
 
 stdenv.mkDerivation rec {
   pname = "icestorm";
-  version = "2019.08.15";
+  version = "2019.08.31";
 
   pythonPkg = if usePyPy then pypy3 else python3;
   pythonInterp = pythonPkg.interpreter;
@@ -19,12 +19,12 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner  = "cliffordwolf";
     repo   = "icestorm";
-    rev    = "95949315364f8d9b0c693386aefadf44b28e2cf6";
-    sha256 = "05q1vxlf9l5z9mam8jbv58jqj7nsd8v7ssy753sharpgzzgdc8a2";
+    rev    = "04f1eb78ed8fd50516aee50102675041a8fd40cd";
+    sha256 = "10jdiw4mw0afcjq7xl3xs8z733mlrx927x620vs2yz91p757jxbd";
   };
 
   nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ pythonPkg libftdi ];
+  buildInputs = [ pythonPkg libftdi1 ];
   makeFlags = [ "PREFIX=$(out)" ];
 
   enableParallelBuilding = true;
diff --git a/pkgs/development/tools/out-of-tree/default.nix b/pkgs/development/tools/out-of-tree/default.nix
index 7064cb8285eeb..0e4810f0ba413 100644
--- a/pkgs/development/tools/out-of-tree/default.nix
+++ b/pkgs/development/tools/out-of-tree/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   pname = "out-of-tree";
-  version = "1.0.1";
+  version = "1.1.1";
 
   buildInputs = [ makeWrapper ];
 
@@ -11,7 +11,7 @@ buildGoPackage rec {
   src = fetchgit {
     rev = "refs/tags/v${version}";
     url = "https://code.dumpstack.io/tools/${pname}.git";
-    sha256 = "0p0ps73w6lmsdyf7irqgbhfxjg5smgbn081d06pnr1zmxvw8dryx";
+    sha256 = "048jda3vng11mg62fd3d8vs9yjsp569zlfylnkqv8sb6wd1qn66d";
   };
 
   goDeps = ./deps.nix;
diff --git a/pkgs/development/tools/rust/cargo-watch/default.nix b/pkgs/development/tools/rust/cargo-watch/default.nix
new file mode 100644
index 0000000000000..5ea935babd195
--- /dev/null
+++ b/pkgs/development/tools/rust/cargo-watch/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, lib, rustPlatform, fetchFromGitHub, CoreServices }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cargo-watch";
+  version = "7.2.1";
+
+  src = fetchFromGitHub {
+    owner = "passcod";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "13zjsypj0ay9xb5j5fhl3yfn57kp2yngl138vmnyfk1h7gjdxpk3";
+  };
+
+  cargoSha256 = "1c3h9il3y0swvcdrrqgh5r7di522i1cc8zk1kfmx97chy8bhsqvg";
+
+  buildInputs = lib.optional stdenv.isDarwin CoreServices;
+
+  # `test with_cargo` tries to call cargo-watch as a cargo subcommand
+  # (calling cargo-watch with command `cargo watch`)
+  checkPhase = "PATH=target/debug:$PATH cargo test";
+
+  meta = with lib; {
+    description = "A Cargo subcommand for watching over Cargo project's source";
+    homepage = https://github.com/passcod/cargo-watch;
+    license = licenses.cc0;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ xrelkd ivan ];
+  };
+}
diff --git a/pkgs/development/tools/trellis/default.nix b/pkgs/development/tools/trellis/default.nix
index 1deb2c7a8fc06..c98529484d51c 100644
--- a/pkgs/development/tools/trellis/default.nix
+++ b/pkgs/development/tools/trellis/default.nix
@@ -8,14 +8,16 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "trellis";
-  version = "2019.08.09";
+  version = "2019.09.01";
+  realVersion = with stdenv.lib; with builtins;
+    "1.0-53-g${substring 0 7 (elemAt srcs 0).rev}";
 
   srcs = [
     (fetchFromGitHub {
        owner  = "symbiflow";
        repo   = "prjtrellis";
-       rev    = "a67379179985bb12a611c75d975548cdf6e7d12e";
-       sha256 = "0vqwfsblf7ylz0jnnf532kap5s1d1zcvbavxmb6a4v32b9xfdv35";
+       rev    = "98871e0e2959bc8cb4de3c7ebe2b9eddc4efe00c";
+       sha256 = "1yq7ih2xvhfvdpijmbqjq6jcngl6710kiv66hkww5ih8j5dzsq5l";
        name   = "trellis";
      })
     (fetchFromGitHub {
@@ -32,6 +34,9 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ cmake python3 ];
 
   preConfigure = with builtins; ''
+    substituteInPlace libtrellis/CMakeLists.txt \
+      --replace "git describe --tags" "echo ${realVersion}"
+
     rmdir database && ln -sfv ${elemAt srcs 1} ./database
 
     source environment.sh
diff --git a/pkgs/development/tools/udis86/default.nix b/pkgs/development/tools/udis86/default.nix
new file mode 100644
index 0000000000000..6996d5bf13fac
--- /dev/null
+++ b/pkgs/development/tools/udis86/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, python }:
+
+stdenv.mkDerivation rec {
+  pname = "udis86";
+  version = "1.7.2";
+
+  src = fetchFromGitHub {
+    owner = "vmt";
+    repo = "udis86";
+    rev = "v${version}";
+    url = "https://github.com/vmt/udis86/archive/v${version}.tar.gz";
+    sha256 = "0c60zwimim6jrm4saw36s38w5sg5v8n9mr58pkqmjrlf7q9g6am1";
+  };
+
+  nativeBuildInputs = [ autoreconfHook python ];
+
+  configureFlags = [
+    "--enable-shared"
+  ];
+
+  outputs = [ "bin" "out" "dev" "lib" ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://udis86.sourceforge.net";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ timor ];
+    description = ''
+      Easy-to-use, minimalistic x86 disassembler library (libudis86)
+    '';
+    platforms = platforms.all ;
+  };
+}
diff --git a/pkgs/misc/screensavers/light-locker/default.nix b/pkgs/misc/screensavers/light-locker/default.nix
index 0b840448f2c08..e3d3b109d1a9d 100644
--- a/pkgs/misc/screensavers/light-locker/default.nix
+++ b/pkgs/misc/screensavers/light-locker/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
     meson
     ninja
     pkgconfig
+    wrapGAppsHook
   ];
 
   buildInputs = [
@@ -45,7 +46,6 @@ stdenv.mkDerivation rec {
     libXext
     libXxf86vm
     systemd
-    wrapGAppsHook
   ];
 
   mesonFlags = [
diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix
index b392dc853d35e..42230fe31ecdf 100644
--- a/pkgs/os-specific/linux/kernel/common-config.nix
+++ b/pkgs/os-specific/linux/kernel/common-config.nix
@@ -123,6 +123,7 @@ let
       IPV6_FOU_TUNNEL             = whenAtLeast "4.7" module;
       NET_CLS_BPF                 = whenAtLeast "4.4" module;
       NET_ACT_BPF                 = whenAtLeast "4.4" module;
+      NET_SCHED                   = yes;
       L2TP_V3                     = yes;
       L2TP_IP                     = module;
       L2TP_ETH                    = module;
diff --git a/pkgs/os-specific/linux/kernel/linux-libre.nix b/pkgs/os-specific/linux/kernel/linux-libre.nix
index 5eb050cbdff9c..e4a4e40f370c5 100644
--- a/pkgs/os-specific/linux/kernel/linux-libre.nix
+++ b/pkgs/os-specific/linux/kernel/linux-libre.nix
@@ -4,8 +4,8 @@
 
     # Update this if linux_latest-libre fails to build.
     # $ curl https://www.fsfla.org/svn/fsfla/software/linux-libre/releases/tags/ | grep -Eo 'Revision [0-9]+'
-    rev = "16330";
-    sha256 = "1d7rsq2m6lp1784cgdg95aspgrnzxm6q9dxqalxja5cac8n6p11y";
+    rev = "16604";
+    sha256 = "0d2dh52zv073zr74ilspy0fy3ivys5pq32j7fljs4fwi2bcljf51";
   }
 , ...
 }:
diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix
index 2290a7e80a1eb..c41ce5994a1ba 100644
--- a/pkgs/os-specific/linux/nvidia-x11/default.nix
+++ b/pkgs/os-specific/linux/nvidia-x11/default.nix
@@ -20,16 +20,16 @@ if ((!lib.versionOlder args.version "391")
 in
 rec {
   # Policy: use the highest stable version as the default (on our master).
-  stable = if stdenv.hostPlatform.system == "x86_64-linux" then stable_430 else legacy_390;
+  stable = if stdenv.hostPlatform.system == "x86_64-linux" then stable_43x else legacy_390;
 
   # No active beta right now
   beta = stable;
 
-  stable_430 = generic {
-    version = "430.40";
-    sha256_64bit = "1myzhy1mf27dcx0admm3pbbkfdd9p66lw0cq2mz1nwds92gqj07p";
-    settingsSha256 = "0rg9dxg02pnpi0a1yi3a41wn6kmlk0dm6dvfbazyqi4gbzr12qrl";
-    persistencedSha256 = "0findlrs5v1m7gl0vxkpd04lh54pib80w5vp4j77qb5snhgvckhq";
+  stable_43x = generic {
+    version = "435.21";
+    sha256_64bit = "0v3pq677ab01qdmwl5dawk8hn39qlwj05p8s9qzh9irmrlnc1izs";
+    settingsSha256 = "1p13cz79kncwx5067a3d7dbz6a1ibp611zynp1qdxpa65hwp2pxa";
+    persistencedSha256 = "0br8znxhz2ryzdj0j4jhqzvdgw9h899q8yz0p9429xz4wxkavgdr";
   };
 
   # Last one supporting x86
diff --git a/pkgs/servers/cayley/default.nix b/pkgs/servers/cayley/default.nix
index f9532d48a11de..c9a39b691e7c6 100644
--- a/pkgs/servers/cayley/default.nix
+++ b/pkgs/servers/cayley/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   pname = "cayley";
-  version = "0.6.1";
+  version = "0.7.5";
 
   goPackagePath = "github.com/cayleygraph/cayley";
 
@@ -10,7 +10,7 @@ buildGoPackage rec {
     owner = "cayleygraph";
     repo = "cayley";
     rev = "v${version}";
-    sha256 = "1r0kw3y32bqm7g37svzrch2qj9n45p93xmsrf7dj1cg4wwkb65ry";
+    sha256 = "1zfxa9z6spi6xw028mvbc7c3g517gn82g77ywr6picl47fr2blnd";
   };
 
   goDeps = ./deps.nix;
diff --git a/pkgs/servers/cayley/deps.nix b/pkgs/servers/cayley/deps.nix
index 1e6fadf9f4d81..eb3dce827bd38 100644
--- a/pkgs/servers/cayley/deps.nix
+++ b/pkgs/servers/cayley/deps.nix
@@ -1,272 +1,471 @@
+# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
 [
   {
-    goPackagePath = "github.com/badgerodon/peg";
+    goPackagePath  = "github.com/badgerodon/peg";
     fetch = {
       type = "git";
       url = "https://github.com/badgerodon/peg";
-      rev = "9e5f7f4d07ca576562618c23e8abadda278b684f";
+      rev =  "9e5f7f4d07ca576562618c23e8abadda278b684f";
       sha256 = "12vd7hzdgknn8byz77lmvcrz9m5lvmffdnz2wwk83304przkra11";
     };
   }
   {
-    goPackagePath = "github.com/boltdb/bolt";
+    goPackagePath  = "github.com/boltdb/bolt";
     fetch = {
       type = "git";
       url = "https://github.com/boltdb/bolt";
-      rev = "a705895fdad108f053eae7ee011ed94a0541ee13";
-      sha256 = "0ql67l2hmjhplkl80j9a49qlra4qx671il5rgn58afkvk20cgq2r";
+      rev =  "e9cf4fae01b5a8ff89d0ec6b32f0d9c9f79aefdd";
+      sha256 = "1sjxzz88bw0y37mk3xvwb9j5v7bz3r80rwg79jml6liqk1arnl99";
     };
   }
   {
-    goPackagePath = "github.com/cznic/mathutil";
+    goPackagePath  = "github.com/cznic/mathutil";
     fetch = {
       type = "git";
       url = "https://github.com/cznic/mathutil";
-      rev = "f9551431b78e71ee24939a1e9d8f49f43898b5cd";
-      sha256 = "1158mlwzryyna1qslr9v88i0k8x6m8vs4rljnnwh04rmd63ksj75";
+      rev =  "1447ad269d64ca91aa8d7079baa40b6fc8b965e7";
+      sha256 = "1r9c20k2h65g38yxf3vd46nbayx1cz5w4q4yr1xfggcs0mmrb87i";
     };
   }
   {
-    goPackagePath = "github.com/davecgh/go-spew";
+    goPackagePath  = "github.com/davecgh/go-spew";
     fetch = {
       type = "git";
       url = "https://github.com/davecgh/go-spew";
-      rev = "2df174808ee097f90d259e432cc04442cf60be21";
-      sha256 = "0jghd5dmwqpcjbxij9yjj8sjzll9s65i2qnxd8rdzwh77xdsfm9g";
+      rev =  "346938d642f2ec3594ed81d874461961cd0faa76";
+      sha256 = "0d4jfmak5p6lb7n2r6yvf5p1zcw0l8j74kn55ghvr7zr7b7axm6c";
     };
   }
   {
-    goPackagePath = "github.com/dlclark/regexp2";
+    goPackagePath  = "github.com/dennwc/graphql";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dennwc/graphql";
+      rev =  "12cfed44bc5de083875506a36d30f9798f9bca47";
+      sha256 = "1rfsxjjsik5618y2741lcyw56a4d4l6r04sbj1igrvcck9bz0k6a";
+    };
+  }
+  {
+    goPackagePath  = "github.com/dlclark/regexp2";
     fetch = {
       type = "git";
       url = "https://github.com/dlclark/regexp2";
-      rev = "4009c9dc49dd8906bfd4d479c255470d6a477ce5";
-      sha256 = "1r6f0q1jvn1lkwqlrmmg5d90p6zss8s64jyp91hp6i97vpahq8xz";
+      rev =  "902a5ce7a7812e2ba9f73b9d96c09d5136df39cd";
+      sha256 = "0ypmdayq50ilbmqa1wjq5nvs9igbxkzlc8phlknw244935wz3v15";
     };
   }
   {
-    goPackagePath = "github.com/dop251/goja";
+    goPackagePath  = "github.com/dop251/goja";
     fetch = {
       type = "git";
       url = "https://github.com/dop251/goja";
-      rev = "64f863c4eb0329df18ecd1dab1e03609556bfaca";
-      sha256 = "0smipfs7fja286nvlr7q4b8f815br0nia0k4xp8y5fvprrzrm64h";
+      rev =  "ef8c030e3c96c5054c2f10ef925e7041e0583c07";
+      sha256 = "15419apwdpbl0lgnl9xj9wyl05vpiz6jqgj8zbcyxhzy0wycj445";
+    };
+  }
+  {
+    goPackagePath  = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev =  "4da3e2cfbabc9f751898f250b49f2439785783a1";
+      sha256 = "1y2l9jaf99j6gidcfdgq3hifxyiwv4f7awpll80p170ixdbqxvl3";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-kivik/couchdb";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-kivik/couchdb";
+      rev =  "74d231fe43245e77840213724894264f0f61ffd3";
+      sha256 = "0ga6d6y44wg8ync73wcyc7q7r3sr5vdj5qkn3yqn9yn4p0k2w89i";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-kivik/kivik";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-kivik/kivik";
+      rev =  "2a1f6b9dd407886bc59c0c28faed28fbce3b0ece";
+      sha256 = "0fpa62mriyiyl5dh5kg8858bqrwiwscpbkg9np69lk302znxalij";
     };
   }
   {
-    goPackagePath = "github.com/gogo/protobuf";
+    goPackagePath  = "github.com/go-kivik/pouchdb";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-kivik/pouchdb";
+      rev =  "bbd1ab79be17c809842e193b1f84e924b6b599ba";
+      sha256 = "15kv6i94j73c8zzy5hnmf051d3i65wxc07hvass9lc4g5ad7f9vf";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-sourcemap/sourcemap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-sourcemap/sourcemap";
+      rev =  "b019cc30c1eaa584753491b0d8f8c1534bf1eb44";
+      sha256 = "03k44fdrnknba05f7cd58lq4rzk7jdpiqksmc0wxrdzwschrbgw8";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-sql-driver/mysql";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-sql-driver/mysql";
+      rev =  "147bd02c2c516cf9a8878cb75898ee8a9eea0228";
+      sha256 = "0s75nilz1jx0vgc69jgmys95lsq9j9nfdjcc8inc8mhzh3qpjb74";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gogo/protobuf";
     fetch = {
       type = "git";
       url = "https://github.com/gogo/protobuf";
-      rev = "50d1bd39ce4e7a96b75e3e040be9caf79dbb4c61";
-      sha256 = "09cad9j98pdqh1sp191j92ng6lvw9la3k3v6m5mv38nwirpwzra1";
+      rev =  "30433562cfbf487fe1df7cd26c7bab168d2f14d0";
+      sha256 = "155iv0jqgh0d8cykghw3ifwk8pjyyq1w4gr9khhf78n01k6180hj";
     };
   }
   {
-    goPackagePath = "github.com/golang/glog";
+    goPackagePath  = "github.com/golang/glog";
     fetch = {
       type = "git";
       url = "https://github.com/golang/glog";
-      rev = "23def4e6c14b4da8ac2ed8007337bc5eb5007998";
+      rev =  "23def4e6c14b4da8ac2ed8007337bc5eb5007998";
       sha256 = "0jb2834rw5sykfr937fxi8hxi2zy80sj2bdn9b3jb4b26ksqng30";
     };
   }
   {
-    goPackagePath = "github.com/golang/protobuf";
+    goPackagePath  = "github.com/golang/protobuf";
     fetch = {
       type = "git";
       url = "https://github.com/golang/protobuf";
-      rev = "888eb0692c857ec880338addf316bd662d5e630e";
-      sha256 = "1vhx2dwr71hma9z3dfb3l1yrkjlry0glwxknxzyp9ds51i6pjiq0";
+      rev =  "18c9bb3261723cd5401db4d0c9fbc5c3b6c70fe8";
+      sha256 = "0fbf8ymrcb23imkhlrlyq6i0x5w8gxzilljjsgd4hnvjgpgp3r4v";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang/snappy";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/snappy";
+      rev =  "553a641470496b2327abcac10b36396bd98e45c9";
+      sha256 = "0kssxnih1l722hx9219c7javganjqkqhvl3i0hp0hif6xm6chvqk";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gopherjs/gopherjs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gopherjs/gopherjs";
+      rev =  "558a9132744c22476178edf3126fd35a9754f565";
+      sha256 = "13mn0li83amgm4fgsm6l3shs2r4kjddr10xn0ydnr9ymg1y887vi";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gopherjs/jsbuiltin";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gopherjs/jsbuiltin";
+      rev =  "67703bfb044e3192fbcab025c3aeaeedafad1f2f";
+      sha256 = "1k0df0z9fiyzbr1g1736zdp238j9z82q3gwkk060h2n84rg4c7lh";
+    };
+  }
+  {
+    goPackagePath  = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev =  "7fa7fff964d035e8a162cce3a164b3ad02ad651b";
+      sha256 = "0p3dyhpc0ajakcww3a45n750z2030xqhlswzf51d5rzid27681wp";
+    };
+  }
+  {
+    goPackagePath  = "github.com/imdario/mergo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/imdario/mergo";
+      rev =  "0d4b488675fdec1dde48751b05ab530cf0b630e1";
+      sha256 = "071rram7aib70f3gk4ansgwns82w9i6m1px8mgc8x4rs9ana4qhf";
+    };
+  }
+  {
+    goPackagePath  = "github.com/inconshreveable/mousetrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/inconshreveable/mousetrap";
+      rev =  "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75";
+      sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
     };
   }
   {
-    goPackagePath = "github.com/hashicorp/go-cleanhttp";
+    goPackagePath  = "github.com/jackc/pgx";
     fetch = {
       type = "git";
-      url = "https://github.com/hashicorp/go-cleanhttp";
-      rev = "ad28ea4487f05916463e2423a55166280e8254b5";
-      sha256 = "0xw0qas3ixg8p2xh09hhc81km0mfn9lbnfgrdb309hzcwhmiyqjm";
+      url = "https://github.com/jackc/pgx";
+      rev =  "606697ffdfe6603013560dbc171656de57b4f542";
+      sha256 = "0818yb2vjjwwmscdab7wnxbyiabvy544icdczdlr5kswbqq5h25m";
     };
   }
   {
-    goPackagePath = "github.com/julienschmidt/httprouter";
+    goPackagePath  = "github.com/julienschmidt/httprouter";
     fetch = {
       type = "git";
       url = "https://github.com/julienschmidt/httprouter";
-      rev = "b59a38004596b696aca7aa2adccfa68760864d86";
-      sha256 = "0j1w2fkcghyw3lcsc13lwf2zqar9xyni2g7fqp4aq8g08ii7paac";
+      rev =  "6f3f3919c8781ce5c0509c83fffc887a7830c938";
+      sha256 = "1hmqdpv2zywwglmnjnxfn27mkac81n3nqs1wandlpybsww4vn4kx";
     };
   }
   {
-    goPackagePath = "github.com/lib/pq";
+    goPackagePath  = "github.com/lib/pq";
     fetch = {
       type = "git";
       url = "https://github.com/lib/pq";
-      rev = "0dad96c0b94f8dee039aa40467f767467392a0af";
-      sha256 = "06c38iy37251mh8jy9s8n97b01pjnqpq8ii77nnmqh1dsph37jz4";
+      rev =  "2704adc878c21e1329f46f6e56a1c387d788ff94";
+      sha256 = "160fmvi7bczxw3i3h5s821hv029ph5ld8x3c36b4cz2sr30wp110";
     };
   }
   {
-    goPackagePath = "github.com/linkeddata/gojsonld";
+    goPackagePath  = "github.com/linkeddata/gojsonld";
     fetch = {
       type = "git";
       url = "https://github.com/linkeddata/gojsonld";
-      rev = "a223ef39bb925d36d4c410d3e35b0e34e370cc31";
-      sha256 = "1i3vl7gbkq2xl2wyv0kszj0x32vp8jw1cf0ngpdqdhdvnbfi1w7i";
+      rev =  "4f5db6791326b8962ede4edbba693edcf20fd1ad";
+      sha256 = "11g1kygkn55whaf49q2bzxk0w8b3nhdhiaixsj2ik65j8bl9g2cq";
+    };
+  }
+  {
+    goPackagePath  = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev =  "51463bfca2576e06c62a8504b5c0f06d61312647";
+      sha256 = "0d7hr78y8gg2mrm5z4jjgm2w3awkznz383b7wvyzk3l33jw6i288";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev =  "cc8532a8e9a55ea36402aa21efdf403a60d34096";
+      sha256 = "0705c0hq7b993sabnjy65yymvpy9w1j84bg9bjczh5607z16nw86";
     };
   }
   {
-    goPackagePath = "github.com/pborman/uuid";
+    goPackagePath  = "github.com/pborman/uuid";
     fetch = {
       type = "git";
       url = "https://github.com/pborman/uuid";
-      rev = "ca53cad383cad2479bbba7f7a1a05797ec1386e4";
-      sha256 = "0rcx669bbjkkwdlw81spnra4ffgzd4rbpywnrj3w41m9vq6mk1gn";
+      rev =  "1b00554d822231195d1babd97ff4a781231955c9";
+      sha256 = "0rjkcf85sagdwzsycj1bbjyx5bgmrc1i8l5qf1f44z24rhbbkaan";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pelletier/go-buffruneio";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-buffruneio";
+      rev =  "c37440a7cf42ac63b919c752ca73a85067e05992";
+      sha256 = "0l83p1gg6g5mmhmxjisrhfimhbm71lwn1r2w7d6siwwqm9q08sd2";
     };
   }
   {
-    goPackagePath = "github.com/peterh/liner";
+    goPackagePath  = "github.com/pelletier/go-toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-toml";
+      rev =  "fe206efb84b2bc8e8cfafe6b4c1826622be969e3";
+      sha256 = "1dlabfpnlzvwf4i86idy8ilqpjsl8yqfgdv0nv5cccm8gkcans5w";
+    };
+  }
+  {
+    goPackagePath  = "github.com/peterh/liner";
     fetch = {
       type = "git";
       url = "https://github.com/peterh/liner";
-      rev = "1bb0d1c1a25ed393d8feb09bab039b2b1b1fbced";
-      sha256 = "05ihxpmp6x3hw71xzvjdgxnyvyx2s4lf23xqnfjj16s4j4qidc48";
+      rev =  "88609521dc4b6c858fd4c98b628147da928ce4ac";
+      sha256 = "0jacb2fqgiccb98v1875j5xvj01l1z2laga1kgr8lhd0nl22r96k";
     };
   }
   {
-    goPackagePath = "github.com/pmezard/go-difflib";
+    goPackagePath  = "github.com/pkg/errors";
     fetch = {
       type = "git";
-      url = "https://github.com/pmezard/go-difflib";
-      rev = "d8ed2627bdf02c080bf22230dbb337003b7aba2d";
-      sha256 = "0w1jp4k4zbnrxh3jvh8fgbjgqpf2hg31pbj8fb32kh26px9ldpbs";
+      url = "https://github.com/pkg/errors";
+      rev =  "e881fd58d78e04cf6d0de1217f8707c8cc2249bc";
+      sha256 = "0vfhj598jp6dzy4pbyjdrqxzb5kppw8ggvfh78g80nz11r34xnzs";
     };
   }
   {
-    goPackagePath = "github.com/robertkrimen/otto";
+    goPackagePath  = "github.com/pmezard/go-difflib";
     fetch = {
       type = "git";
-      url = "https://github.com/robertkrimen/otto";
-      rev = "d1b4d8ef0e0e4b088c8328c95ca63ab9ebd8fc9d";
-      sha256 = "0i31p3paz3n7qi2v1g77lm3cx2hssgwgcfpar4qc2vj7m4766884";
+      url = "https://github.com/pmezard/go-difflib";
+      rev =  "d8ed2627bdf02c080bf22230dbb337003b7aba2d";
+      sha256 = "0w1jp4k4zbnrxh3jvh8fgbjgqpf2hg31pbj8fb32kh26px9ldpbs";
     };
   }
   {
-    goPackagePath = "github.com/russross/blackfriday";
+    goPackagePath  = "github.com/russross/blackfriday";
     fetch = {
       type = "git";
       url = "https://github.com/russross/blackfriday";
-      rev = "17bb7999de6cfb791d4f8986cc00b3309b370cdb";
-      sha256 = "1md0sjw69mj359cb4c8ghzllcbn2lnkvby1203wl0pf5wbyfvm5s";
+      rev =  "b253417e1cb644d645a0a3bb1fa5034c8030127c";
+      sha256 = "1knj8vabymhmkg12cj3hnpqf3b74wwrvqib12yczcvpi52xaqi20";
     };
   }
   {
-    goPackagePath = "github.com/shurcooL/sanitized_anchor_name";
+    goPackagePath  = "github.com/shurcooL/sanitized_anchor_name";
     fetch = {
       type = "git";
       url = "https://github.com/shurcooL/sanitized_anchor_name";
-      rev = "8e87604bec3c645a4eeaee97dfec9f25811ff20d";
-      sha256 = "05b6yj23c3xx446kanhaj1l83av8676z7si8n1f4sqy2pp7s966v";
+      rev =  "79c90efaf01eddc01945af5bc1797859189b830b";
+      sha256 = "1dj8v91gv1ssw2j88gjzr1hw0n63qqxykjzfbvspyi529xn3ji3y";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/afero";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/afero";
+      rev =  "9be650865eab0c12963d8753212f4f9c66cdcf12";
+      sha256 = "12dhh6d07304lsjv7c4p95hkip0hnshqhwivdw39pbypgg0p8y34";
     };
   }
   {
-    goPackagePath = "github.com/sirupsen/logrus";
+    goPackagePath  = "github.com/spf13/cast";
     fetch = {
       type = "git";
-      url = "https://github.com/sirupsen/logrus";
-      rev = "08a8a7c27e3d058a8989316a850daad1c10bf4ab";
-      sha256 = "1fbh1b42alvpbw87v0v2hanliaqp6fm4h9n7byk921mcv6dai8fl";
+      url = "https://github.com/spf13/cast";
+      rev =  "acbeb36b902d72a7a4c18e8f3241075e7ab763e4";
+      sha256 = "0w25s6gjbbwv47b9208hysyqqphd6pib3d2phg24mjy4wigkm050";
     };
   }
   {
-    goPackagePath = "github.com/stretchr/testify";
+    goPackagePath  = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev =  "7b1b6e8dc027253d45fc029bc269d1c019f83a34";
+      sha256 = "1nhnlpmbqq1ggix7jaxmzr8awk1zrrzag4vzq1p5q5l25d6kih35";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev =  "fa7ca7e836cf3a8bb4ebf799f472c12d7e903d66";
+      sha256 = "0404b7bzx7cq1b2bgdb3gs7gjzm4vvg1hl2y9mcm4m6vz56vbcz8";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev =  "f1d95a35e132e8a1868023a08932b14f0b8b8fcb";
+      sha256 = "0fwvkyq36jvy2gid81031ll7qaj8jxr5g36fff7hhkp3hh4kz6zh";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/viper";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/viper";
+      rev =  "0967fc9aceab2ce9da34061253ac10fb99bba5b2";
+      sha256 = "016syis0rvccp2indjqi1vnz3wk7c9dhkvkgam0j79sb019kl80f";
+    };
+  }
+  {
+    goPackagePath  = "github.com/stretchr/testify";
     fetch = {
       type = "git";
       url = "https://github.com/stretchr/testify";
-      rev = "f390dcf405f7b83c997eac1b06768bb9f44dec18";
-      sha256 = "1l3z0ggdcjspfmm6k9glmh52a9x50806k6yldxql73p4bpynsd9g";
+      rev =  "87b1dfb5b2fa649f52695dd9eae19abe404a4308";
+      sha256 = "1iyfxs3nxdn1fyfqv3gggxcxab66a3m6cmjkhqhcapxm3qvgbrlc";
     };
   }
   {
-    goPackagePath = "github.com/syndtr/goleveldb";
+    goPackagePath  = "github.com/syndtr/goleveldb";
     fetch = {
       type = "git";
       url = "https://github.com/syndtr/goleveldb";
-      rev = "4875955338b0a434238a31165cb87255ab6e9e4a";
-      sha256 = "0786j6kizrlskqz196ng4d13363d44whl849jcv1q07yab2nq40i";
+      rev =  "b89cc31ef7977104127d34c1bd31ebd1a9db2199";
+      sha256 = "0pbmssaw7fsgspv0jr3hsd1208qqxcvy4faks9hypqgl5gwday4p";
     };
   }
   {
-    goPackagePath = "github.com/syndtr/gosnappy";
+    goPackagePath  = "github.com/tylertreat/BoomFilters";
     fetch = {
       type = "git";
-      url = "https://github.com/syndtr/gosnappy";
-      rev = "156a073208e131d7d2e212cb749feae7c339e846";
-      sha256 = "08lf8smnp4imj5fkph9sbqzb4a5n191q9m6b2c5kamp19i9h2y6z";
+      url = "https://github.com/tylertreat/BoomFilters";
+      rev =  "37e169ae37ed529d93ecacb509c0dc80078478fc";
+      sha256 = "15wwdsxxvkgxbxv3v0ywnwjwndpmps49n3a49z7bzjl7r2nsm7qv";
     };
   }
   {
-    goPackagePath = "golang.org/x/net";
+    goPackagePath  = "golang.org/x/net";
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/net";
-      rev = "6a513affb38dc9788b449d59ffed099b8de18fa0";
-      sha256 = "1g07c05s3ccq0086f0f200k9cfjjzxd4r9nrdilkmy44lbhhrval";
+      rev =  "da118f7b8e5954f39d0d2130ab35d4bf0e3cb344";
+      sha256 = "09xpndqc6a2r0lw42cyl1pkhfddl01sd9c3qqjjwp3vmxm004whv";
     };
   }
   {
-    goPackagePath = "golang.org/x/sys";
+    goPackagePath  = "golang.org/x/sys";
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/sys";
-      rev = "a646d33e2ee3172a661fc09bca23bb4889a41bc8";
-      sha256 = "1jniqg2nv5zhdzfm9gwfx0s9q8mwxrgcxdbkd6cddk9w0qgji9dc";
+      rev =  "9ccfe848b9db8435a24c424abbc07a921adf1df5";
+      sha256 = "0wn3p7nrf9lx5svnya5mxy5b8cxqs2rp8lxc477szna313m1jhs4";
     };
   }
   {
-    goPackagePath = "golang.org/x/text";
+    goPackagePath  = "golang.org/x/text";
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/text";
-      rev = "5a42fa2464759cbb7ee0af9de00b54d69f09a29c";
-      sha256 = "0far6mb2ikwzr7icn0yqi9ygl8kv2wsaasyprbqb9qapr0dqjw0s";
+      rev =  "470f45bf29f4147d6fbd7dfd0a02a848e49f5bf4";
+      sha256 = "1yzh1qxwd0xkh0k04hwp7yii21i26b4ngxvm1g98qlji1g2wbjbc";
     };
   }
   {
-    goPackagePath = "google.golang.org/appengine";
+    goPackagePath  = "google.golang.org/appengine";
     fetch = {
       type = "git";
       url = "https://github.com/golang/appengine";
-      rev = "4f7eeb5305a4ba1966344836ba4af9996b7b4e05";
-      sha256 = "09pgvlk5ay3f0avi1bawpy8khi3rmkfl36l2yr3ryp8z12i9k2qj";
+      rev =  "170382fa85b10b94728989dfcf6cc818b335c952";
+      sha256 = "0dqx24qc7h53p16xnkwn2jpk3wjjlvv48akqk74vx31pr2nn0g56";
     };
   }
   {
-    goPackagePath = "gopkg.in/mgo.v2";
+    goPackagePath  = "gopkg.in/mgo.v2";
     fetch = {
       type = "git";
-      url = "https://gopkg.in/mgo.v2";
-      rev = "c6a7dce14133ccac2dcac3793f1d6e2ef048503a";
-      sha256 = "0rg232q1bkq3y3kd5816hgk1jpf7i38aha5q5ia7j6p9xashz7vj";
+      url = "https://github.com/go-mgo/mgo";
+      rev =  "3f83fa5005286a7fe593b055f0d7771a7dce4655";
+      sha256 = "19vwb6qlcyh3nh6pkk0bynwmr5cmi6mm4hdz01lwb4ybnkzxryc7";
     };
   }
   {
-    goPackagePath = "github.com/go-sql-driver/mysql";
+    goPackagePath  = "gopkg.in/olivere/elastic.v5";
     fetch = {
       type = "git";
-      url = "https://github.com/go-sql-driver/mysql";
-      rev = "2e00b5cd70399450106cec6431c2e2ce3cae5034";
-      sha256 = "085g48jq9hzmlcxg122n0c4pi41sc1nn2qpx1vrl2jfa8crsppa5";
+      url = "https://github.com/olivere/elastic";
+      rev =  "79ff368708b3a2a9da641dc831d95fd0782bf4ef";
+      sha256 = "1lq8nhjnkf246nl5h40ldh1qz2yx73yaqfmsh9ddvkwn4173c7jj";
     };
   }
   {
-    goPackagePath = "github.com/dennwc/graphql";
+    goPackagePath  = "gopkg.in/yaml.v2";
     fetch = {
       type = "git";
-      url = "https://github.com/dennwc/graphql";
-      rev = "fd5c4aa13f2119414084f229600de0d73f174436";
-      sha256 = "11f9jwfc2j646732gkcjb332ih9fxh04j31zmhvqswx75gvk9wzs";
+      url = "https://github.com/go-yaml/yaml";
+      rev =  "cd8b52f8269e0feb286dfeef29f8fe4d5b397e0b";
+      sha256 = "1hj2ag9knxflpjibck0n90jrhsrqz7qvad4qnif7jddyapi9bqzl";
     };
   }
-]
+]
\ No newline at end of file
diff --git a/pkgs/servers/consul/default.nix b/pkgs/servers/consul/default.nix
index 4c8877e92de44..b7c2e01e97a21 100644
--- a/pkgs/servers/consul/default.nix
+++ b/pkgs/servers/consul/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   pname = "consul";
-  version = "1.5.2";
+  version = "1.6.0";
   rev = "v${version}";
 
   goPackagePath = "github.com/hashicorp/consul";
@@ -17,9 +17,9 @@ buildGoPackage rec {
   # to apply your changes as patches on top of a release commit.
   src = fetchFromGitHub {
     owner = "hashicorp";
-    repo = "consul";
+    repo = pname;
     inherit rev;
-    sha256 = "1fn9xxdszil4zdal08cyq6gbs2larpr4zmjmv2w2ykiacbfhpa6h";
+    sha256 = "16rngyv9dp19gjbjwfvnmlfxbq67fxs55hgvvcyn9mplm1j0bb52";
   };
 
   preBuild = ''
diff --git a/pkgs/servers/dgraph/default.nix b/pkgs/servers/dgraph/default.nix
index 8e89b6f980fa1..489f2e297bb47 100644
--- a/pkgs/servers/dgraph/default.nix
+++ b/pkgs/servers/dgraph/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   pname = "dgraph";
-  version = "0.8.2";
+  version = "1.0.17";
 
   goPackagePath = "github.com/dgraph-io/dgraph";
 
@@ -10,32 +10,26 @@ buildGoPackage rec {
     owner = "dgraph-io";
     repo = "dgraph";
     rev = "v${version}";
-    sha256 = "0zc5bda8m2srjbk0gy1nnm0bya8if0kmk1szqr1qv3xifdzmi4nf";
+    sha256 = "05z1xwbd76q49zyqahh9krvq78dgkzr22qc6srr4djds0l7y6x5i";
   };
 
-  extraOutputsToInstall = [ "dashboard" ];
+  # see licensing
+  buildFlags = [ "-tags oss" ];
 
   goDeps = ./deps.nix;
-  subPackages = [ "cmd/dgraph" "cmd/dgraphloader" "cmd/bulkloader"];
-
-  # let's move the dashboard to a different output, to prevent $bin from
-  # depending on $out
-  # TODO: provide a proper npm application for the dashboard.
-  postPatch = ''
-    mv dashboard/* $dashboard
-  '';
+  subPackages = [ "dgraph"];
 
   preBuild = ''
     export buildFlagsArray="-ldflags=\
-      -X github.com/dgraph-io/dgraph/x.dgraphVersion=${version} \
-      -X github.com/dgraph-io/dgraph/cmd/dgraph/main.uiDir=$dashboard/src/assets/"
+      -X github.com/dgraph-io/dgraph/x.dgraphVersion=${version}"
   '';
 
   meta = {
     homepage = "https://dgraph.io/";
     description = "Fast, Distributed Graph DB";
     maintainers = with stdenv.lib.maintainers; [ sigma ];
-    license = stdenv.lib.licenses.agpl3;
+    # Apache 2.0 because we use only build tag "oss"
+    license = stdenv.lib.licenses.asl20;
     platforms = stdenv.lib.platforms.unix;
   };
 }
diff --git a/pkgs/servers/dgraph/deps.nix b/pkgs/servers/dgraph/deps.nix
index 89e00e0d8cb3b..602233d635e6e 100644
--- a/pkgs/servers/dgraph/deps.nix
+++ b/pkgs/servers/dgraph/deps.nix
@@ -1,11 +1,47 @@
 [
   {
+    goPackagePath = "cloud.google.com/go";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/gocloud";
+      rev = "v0.34.0";
+      sha256 = "1kclgclwar3r37zbvb9gg3qxbgzkb50zk3s9778zlh2773qikmai";
+    };
+  }
+  {
+    goPackagePath = "contrib.go.opencensus.io/exporter/jaeger";
+    fetch = {
+      type = "git";
+      url = "https://github.com/census-ecosystem/opencensus-go-exporter-jaeger";
+      rev = "v0.1.0";
+      sha256 = "0dhf0fhjfk8m6zx7xys5mj51c8gxvlahi4y5fx8l7b7b56bh1rmy";
+    };
+  }
+  {
+    goPackagePath = "contrib.go.opencensus.io/exporter/prometheus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/census-ecosystem/opencensus-go-exporter-prometheus";
+      rev = "6bf73eaafbe9";
+      sha256 = "1509l1xcgp662j7rglmrs35innpbi2s0r14vj9ps6d55j42kifm0";
+    };
+  }
+  {
     goPackagePath = "github.com/AndreasBriese/bbloom";
     fetch = {
       type = "git";
       url = "https://github.com/AndreasBriese/bbloom";
-      rev = "28f7e881ca57bc00e028f9ede9f0d9104cfeef5e";
-      sha256 = "03cqhqvdz8c9by5w5ls4kwnnwlm6b2kkslc6m120fanw1lgamfzp";
+      rev = "e2d15f34fcf9";
+      sha256 = "05kkrsmpragy69bj6s80pxlm3pbwxrkkx7wgk0xigs6y2n6ylpds";
+    };
+  }
+  {
+    goPackagePath = "github.com/BurntSushi/toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/BurntSushi/toml";
+      rev = "v0.3.1";
+      sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6";
     };
   }
   {
@@ -13,44 +49,53 @@
     fetch = {
       type = "git";
       url = "https://github.com/MakeNowJust/heredoc";
-      rev = "1d91351acdc1cb2f2c995864674b754134b86ca7";
+      rev = "1d91351acdc1";
       sha256 = "0ia1r8ibqmx6zv3wmsvgkpqlhwk79z9l38nzp4gd4f1kcb46856x";
     };
   }
   {
-    goPackagePath = "github.com/beorn7/perks";
+    goPackagePath = "github.com/apache/thrift";
     fetch = {
       type = "git";
-      url = "https://github.com/beorn7/perks";
-      rev = "4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9";
-      sha256 = "1hrybsql68xw57brzj805xx2mghydpdiysv3gbhr7f5wlxj2514y";
+      url = "https://github.com/apache/thrift";
+      rev = "v0.12.0";
+      sha256 = "0g2g61rs189nimg3631wxfwdx12dsdz70qvncczlyvn34pcj7yby";
     };
   }
   {
-    goPackagePath = "github.com/bkaradzic/go-lz4";
+    goPackagePath = "github.com/armon/consul-api";
     fetch = {
       type = "git";
-      url = "https://github.com/bkaradzic/go-lz4";
-      rev = "7224d8d8f27ef618c0a95f1ae69dbb0488abc33a";
-      sha256 = "10lmya17vdqg2pvqni0p73iahni48s1v11ya9a0hcz4jh5vw4dkb";
+      url = "https://github.com/armon/consul-api";
+      rev = "eb2c6b5be1b6";
+      sha256 = "1j6fdr1sg36qy4n4xjl7brq739fpm5npq98cmvklzjc9qrx98nk9";
     };
   }
   {
-    goPackagePath = "github.com/blevesearch/bleve";
+    goPackagePath = "github.com/beorn7/perks";
     fetch = {
       type = "git";
-      url = "https://github.com/blevesearch/bleve";
-      rev = "a7ebb8480579777c6cd1c4750d2e6b5ff2b49bdd";
-      sha256 = "121jhd158slf4050kmghz25jrvv7gbsan31wr0nxyw9z32lyf6yx";
+      url = "https://github.com/beorn7/perks";
+      rev = "v1.0.0";
+      sha256 = "1i1nz1f6g55xi2y3aiaz5kqfgvknarbfl4f0sx4nyyb4s7xb1z9x";
     };
   }
   {
-    goPackagePath = "github.com/blevesearch/blevex";
+    goPackagePath = "github.com/bgentry/speakeasy";
     fetch = {
       type = "git";
-      url = "https://github.com/blevesearch/blevex";
-      rev = "507dcd576550f9f3260f11495ba2de4e96773a3e";
-      sha256 = "0i9azysvia99fjpx525qnc5rcgv45hfvl3zcs58gvgqyxpzpc78z";
+      url = "https://github.com/bgentry/speakeasy";
+      rev = "v0.1.0";
+      sha256 = "02dfrj0wyphd3db9zn2mixqxwiz1ivnyc5xc7gkz58l5l27nzp8s";
+    };
+  }
+  {
+    goPackagePath = "github.com/blevesearch/bleve";
+    fetch = {
+      type = "git";
+      url = "https://github.com/blevesearch/bleve";
+      rev = "e1f5e6cdcd76";
+      sha256 = "1b2iip9vz71lqvjmj8v21sisk0z2gdsjd5v9750v3q4a3ik3x8m2";
     };
   }
   {
@@ -58,7 +103,7 @@
     fetch = {
       type = "git";
       url = "https://github.com/blevesearch/go-porterstemmer";
-      rev = "23a2c8e5cf1f380f27722c6d2ae8896431dc7d0e";
+      rev = "v1.0.2";
       sha256 = "0rcfbrad79xd114h3dhy5d3zs3b5bcgqwm3h5ih1lk69zr9wi91d";
     };
   }
@@ -67,17 +112,26 @@
     fetch = {
       type = "git";
       url = "https://github.com/blevesearch/segment";
-      rev = "762005e7a34fd909a84586299f1dd457371d36ee";
+      rev = "762005e7a34f";
       sha256 = "1nrm145sm0xlhqy3d12yipnb16ikjz9ykjcskmkgm7vjm47xkmfl";
     };
   }
   {
-    goPackagePath = "github.com/cockroachdb/cmux";
+    goPackagePath = "github.com/blevesearch/snowballstem";
+    fetch = {
+      type = "git";
+      url = "https://github.com/blevesearch/snowballstem";
+      rev = "26b06a2c243d";
+      sha256 = "096wgbpb7qyx055451gam3zb26acaiazjmd58av7ykslmb7wa5gm";
+    };
+  }
+  {
+    goPackagePath = "github.com/client9/misspell";
     fetch = {
       type = "git";
-      url = "https://github.com/cockroachdb/cmux";
-      rev = "30d10be492927e2dcae0089c374c455d42414fcb";
-      sha256 = "0ixif6hwcm2dpi1si5ah49dmdyy5chillz1048jpvjzwzxyfv1nx";
+      url = "https://github.com/client9/misspell";
+      rev = "v0.3.4";
+      sha256 = "1vwf33wsc4la25zk9nylpbp9px3svlmldkm0bha4hp56jws4q9cs";
     };
   }
   {
@@ -85,7 +139,7 @@
     fetch = {
       type = "git";
       url = "https://github.com/codahale/hdrhistogram";
-      rev = "3a0bb77429bd3a61596f5e8a3172445844342120";
+      rev = "3a0bb77429bd";
       sha256 = "1zampgfjbxy192cbwdi7g86l1idxaam96d834wncnpfdwgh5kl57";
     };
   }
@@ -94,8 +148,53 @@
     fetch = {
       type = "git";
       url = "https://github.com/coreos/etcd";
-      rev = "9d43462d174c664f5edf313dec0de31e1ef4ed47";
-      sha256 = "0qxqjxhhciaacag1jz2rlncmlgw861ig2yx993ylvfm30jvyj2cj";
+      rev = "v3.3.10";
+      sha256 = "1x2ii1hj8jraba8rbxz6dmc03y3sjxdnzipdvg6fywnlq1f3l3wl";
+    };
+  }
+  {
+    goPackagePath = "github.com/coreos/go-etcd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/go-etcd";
+      rev = "v2.0.0";
+      sha256 = "1xb34hzaa1lkbq5vkzy9vcz6gqwj7hp6cdbvyack2bf28dwn33jj";
+    };
+  }
+  {
+    goPackagePath = "github.com/coreos/go-semver";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/go-semver";
+      rev = "v0.2.0";
+      sha256 = "1gghi5bnqj50hfxhqc1cxmynqmh2yk9ii7ab9gsm75y5cp94ymk0";
+    };
+  }
+  {
+    goPackagePath = "github.com/coreos/go-systemd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/go-systemd";
+      rev = "39ca1b05acc7";
+      sha256 = "1kzqrrzqspa5qm7kwslxl3m16lqzns23c24rv474ajzwmj3ixmx1";
+    };
+  }
+  {
+    goPackagePath = "github.com/coreos/pkg";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/pkg";
+      rev = "3ac0863d7acf";
+      sha256 = "0l5ans1ls2gknkrnhymgc0zbgg5nqjbjbqc51r611adcr0m6gg8l";
+    };
+  }
+  {
+    goPackagePath = "github.com/cpuguy83/go-md2man";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cpuguy83/go-md2man";
+      rev = "v1.0.10";
+      sha256 = "1bqkf2bvy1dns9zd24k81mh2p1zxsx2nhq5cj8dz2vgkv1xkh60i";
     };
   }
   {
@@ -103,8 +202,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/davecgh/go-spew";
-      rev = "6d212800a42e8ab5c146b8ace3490ee17e5225f9";
-      sha256 = "01i0n1s4j7khb7n6mz2wymniz37q0vbzkgfv7rbi6p9hpg227q93";
+      rev = "v1.1.1";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
     };
   }
   {
@@ -112,8 +211,26 @@
     fetch = {
       type = "git";
       url = "https://github.com/dgraph-io/badger";
-      rev = "64df7f57d9ee20d7b28de4a3eea90bf8d7310a77";
-      sha256 = "1ikgzn2l62kb238n0wm6s95py5ypv71p09w7zyvzkjf34x675mzz";
+      rev = "v1.6.0";
+      sha256 = "1vzibjqhb10q6s2chbzlwndij2d9ybjnq7h28hx4akr119avd0d5";
+    };
+  }
+  {
+    goPackagePath = "github.com/dgraph-io/dgo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dgraph-io/dgo";
+      rev = "f8969c1ddf8f";
+      sha256 = "08ycdpxry15r9vgaqrqxcdbw8z216asqarhxq76smi5a82mr56qa";
+    };
+  }
+  {
+    goPackagePath = "github.com/dgrijalva/jwt-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dgrijalva/jwt-go";
+      rev = "v3.2.0";
+      sha256 = "08m27vlms74pfy5z79w67f9lk9zkx6a9jd68k3c4msxy75ry36mp";
     };
   }
   {
@@ -121,8 +238,71 @@
     fetch = {
       type = "git";
       url = "https://github.com/dgryski/go-farm";
-      rev = "d1e51a4af19092715f4ce7d8257fe5bc8f8be727";
-      sha256 = "00iijjzdg8g6jbzhdbfw8s2rf0k25gxw4x7h7r6mkxcq18n69182";
+      rev = "6a90982ecee2";
+      sha256 = "1x3l4jgps0v1bjvd446kj4dp0ckswjckxgrng9afm275ixnf83ix";
+    };
+  }
+  {
+    goPackagePath = "github.com/dustin/go-humanize";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dustin/go-humanize";
+      rev = "v1.0.0";
+      sha256 = "1kqf1kavdyvjk7f8kx62pnm7fbypn9z1vbf8v2qdh3y7z7a0cbl3";
+    };
+  }
+  {
+    goPackagePath = "github.com/fatih/color";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/color";
+      rev = "v1.7.0";
+      sha256 = "0v8msvg38r8d1iiq2i5r4xyfx0invhc941kjrsg5gzwvagv55inv";
+    };
+  }
+  {
+    goPackagePath = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev = "v1.4.7";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "github.com/ghodss/yaml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ghodss/yaml";
+      rev = "25d852aebe32";
+      sha256 = "1w9yq0bxzygc4qwkwwiy7k1k1yviaspcqqv18255k2xkjv5ipccz";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-ini/ini";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-ini/ini";
+      rev = "v1.39.0";
+      sha256 = "0j7pyl5v7xfzkhsyz193iq56ilan69pp11g2n5jw1k4h4g8s4k9b";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-kit/kit";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-kit/kit";
+      rev = "v0.8.0";
+      sha256 = "1rcywbc2pvab06qyf8pc2rdfjv7r6kxdv2v4wnpqnjhz225wqvc0";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-logfmt/logfmt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-logfmt/logfmt";
+      rev = "v0.4.0";
+      sha256 = "06smxc112xmixz78nyvk3b2hmc7wasf2sl5vxj1xz62kqcq9lzm9";
     };
   }
   {
@@ -130,8 +310,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/gogo/protobuf";
-      rev = "e57a569e1882958f6b188cb42231d6db87701f2a";
-      sha256 = "0r3jpmp6wp4xyrh1ikr8iqld3rg4r1yhv99zxw5zd7d2zprw9yfc";
+      rev = "v1.2.0";
+      sha256 = "1c3y5m08mvrgvlw0kb9pldh3kkqcj99pa8gqmk1g3hp8ih3b2dv0";
     };
   }
   {
@@ -139,17 +319,53 @@
     fetch = {
       type = "git";
       url = "https://github.com/golang/geo";
-      rev = "31fb0106dc4a947e5aaee1fe186e56447f839510";
+      rev = "31fb0106dc4a";
       sha256 = "00w4kwm98hrgr3ggfdk1h7qa5gp00z4s0j0iwgwd9rgadb59kb2c";
     };
   }
   {
+    goPackagePath = "github.com/golang/glog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/glog";
+      rev = "23def4e6c14b";
+      sha256 = "0jb2834rw5sykfr937fxi8hxi2zy80sj2bdn9b3jb4b26ksqng30";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/groupcache";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/groupcache";
+      rev = "02826c3e7903";
+      sha256 = "0w46bsllddfij66nrg8jbfjsr54birvfww8a2fj9fmgyig5syn2x";
+    };
+  }
+  {
+    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 = "2bba0603135d7d7f5cb73b2125beeda19c09f4ef";
-      sha256 = "1xy0bj66qks2xlzxzlfma16w7m8g6rrwawmlhlv68bcw2k5hvvib";
+      rev = "v1.3.2";
+      sha256 = "1k1wb4zr0qbwgpvz9q5ws9zhlal8hq7dmq62pwxxriksayl6hzym";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/btree";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/btree";
+      rev = "e89373fe6b4a";
+      sha256 = "0jlkjjlf8ilifgsb2bv0jfgl4cxl1bypx7a6pjkwz3xf6k8jd7mj";
     };
   }
   {
@@ -157,26 +373,305 @@
     fetch = {
       type = "git";
       url = "https://github.com/google/codesearch";
-      rev = "a45d81b686e85d01f2838439deaf72126ccd5a96";
+      rev = "v1.0.0";
       sha256 = "12bv3yz0l3bmsxbasfgv7scm9j719ch6pmlspv4bd4ix7wjpyhny";
     };
   }
   {
+    goPackagePath = "github.com/google/go-cmp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-cmp";
+      rev = "v0.3.0";
+      sha256 = "1hyxx3434zshl2m9ja78gwlkg1rx9yl6diqa7dnjb31xz5x4gbjj";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/uuid";
+      rev = "v1.0.0";
+      sha256 = "1922bjrnx66692dm0rrc1ckmznsaqx920ww4jzsds3xzrwf15mqv";
+    };
+  }
+  {
+    goPackagePath = "github.com/gorilla/websocket";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/websocket";
+      rev = "4201258b820c";
+      sha256 = "1kpdg3m46kp15ixl9ahhchhadyiblz0qpcxzylp8jhffc1rnxjb7";
+    };
+  }
+  {
+    goPackagePath = "github.com/grpc-ecosystem/go-grpc-middleware";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc-ecosystem/go-grpc-middleware";
+      rev = "f849b5445de4";
+      sha256 = "0hscypgj0nd1407jp6y4qrnrr0mrhc4wgxz9b3mj1cs3pkvi61vc";
+    };
+  }
+  {
+    goPackagePath = "github.com/grpc-ecosystem/go-grpc-prometheus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc-ecosystem/go-grpc-prometheus";
+      rev = "v1.2.0";
+      sha256 = "1lzk54h7np32b3acidg1ggbn8ppbnns0m71gcg9d1qkkdh8zrijl";
+    };
+  }
+  {
+    goPackagePath = "github.com/grpc-ecosystem/grpc-gateway";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc-ecosystem/grpc-gateway";
+      rev = "v1.4.1";
+      sha256 = "0lqpwwyhgw12iw2pfynb8wb06dqfj26rr55sh1v02nvrxbpzfp0a";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/golang-lru";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/golang-lru";
+      rev = "v0.5.0";
+      sha256 = "12k2cp2k615fjvfa5hyb9k2alian77wivds8s65diwshwv41939f";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev = "v1.0.0";
+      sha256 = "0q6ml0qqs0yil76mpn4mdx4lp94id8vbv575qm60jzl1ijcl5i66";
+    };
+  }
+  {
+    goPackagePath = "github.com/hpcloud/tail";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hpcloud/tail";
+      rev = "v1.0.0";
+      sha256 = "1njpzc0pi1acg5zx9y6vj9xi6ksbsc5d387rd6904hy6rh2m6kn0";
+    };
+  }
+  {
+    goPackagePath = "github.com/inconshreveable/mousetrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/inconshreveable/mousetrap";
+      rev = "v1.0.0";
+      sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
+    };
+  }
+  {
+    goPackagePath = "github.com/jonboulle/clockwork";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jonboulle/clockwork";
+      rev = "v0.1.0";
+      sha256 = "1pqxhsdavbp1n5grgyx2j6ylvql2fzn2cvpsgkc8li69dil7sibl";
+    };
+  }
+  {
+    goPackagePath = "github.com/json-iterator/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/json-iterator/go";
+      rev = "v1.1.6";
+      sha256 = "08caswxvdn7nvaqyj5kyny6ghpygandlbw9vxdj7l5vkp7q0s43r";
+    };
+  }
+  {
+    goPackagePath = "github.com/julienschmidt/httprouter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/julienschmidt/httprouter";
+      rev = "v1.2.0";
+      sha256 = "1k8bylc9s4vpvf5xhqh9h246dl1snxrzzz0614zz88cdh8yzs666";
+    };
+  }
+  {
+    goPackagePath = "github.com/konsorten/go-windows-terminal-sequences";
+    fetch = {
+      type = "git";
+      url = "https://github.com/konsorten/go-windows-terminal-sequences";
+      rev = "v1.0.1";
+      sha256 = "1lchgf27n276vma6iyxa0v1xds68n2g8lih5lavqnx5x6q5pw2ip";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/logfmt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/logfmt";
+      rev = "b84e30acd515";
+      sha256 = "02ldzxgznrfdzvghfraslhgp19la1fczcbzh7wm2zdc6lmpd1qq9";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pty";
+      rev = "v1.0.0";
+      sha256 = "1c8xbp4d4fbmvml70nc7w3jii2fxv4q0141d2zmzi480d5h8xvrv";
+    };
+  }
+  {
+    goPackagePath = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev = "v1.8.0";
+      sha256 = "1a10362wv8a8qwb818wygn2z48lgzch940hvpv81hv8gc747ajxn";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-colorable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-colorable";
+      rev = "v0.0.9";
+      sha256 = "1nwjmsppsjicr7anq8na6md7b1z84l9ppnlr045hhxjvbkqwalvx";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "v0.0.4";
+      sha256 = "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-runewidth";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-runewidth";
+      rev = "v0.0.2";
+      sha256 = "0vkrfrz3fzn5n6ix4k8s0cg0b448459sldq8bp4riavsxm932jzb";
+    };
+  }
+  {
     goPackagePath = "github.com/matttproud/golang_protobuf_extensions";
     fetch = {
       type = "git";
       url = "https://github.com/matttproud/golang_protobuf_extensions";
-      rev = "c12348ce28de40eed0136aa2b644d0ee0650e56c";
+      rev = "v1.0.1";
       sha256 = "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya";
     };
   }
   {
+    goPackagePath = "github.com/minio/minio-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/minio/minio-go";
+      rev = "774475480ffe";
+      sha256 = "1rnzvij1cnqb3brwpyv79bdbaa1sgygyw1x84376fli2pj0n3572";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev = "v1.1.0";
+      sha256 = "0ydzkipf28hwj2bfxqmwlww47khyk6d152xax4bnyh60f4lq3nx1";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev = "v1.1.2";
+      sha256 = "03bpv28jz9zhn4947saqwi328ydj7f6g6pf1m2d4m5zdh5jlfkrr";
+    };
+  }
+  {
+    goPackagePath = "github.com/modern-go/concurrent";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/concurrent";
+      rev = "bacd9c7ef1dd";
+      sha256 = "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs";
+    };
+  }
+  {
+    goPackagePath = "github.com/modern-go/reflect2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/reflect2";
+      rev = "v1.0.1";
+      sha256 = "06a3sablw53n1dqqbr2f53jyksbxdmmk8axaas4yvnhyfi55k4lf";
+    };
+  }
+  {
+    goPackagePath = "github.com/mwitkow/go-conntrack";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mwitkow/go-conntrack";
+      rev = "cc309e4a2223";
+      sha256 = "0nbrnpk7bkmqg9mzwsxlm0y8m7s9qd9phr1q30qlx2qmdmz7c1mf";
+    };
+  }
+  {
+    goPackagePath = "github.com/olekukonko/tablewriter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/olekukonko/tablewriter";
+      rev = "a0225b3f23b5";
+      sha256 = "0bp9r6xzy6d3p7l2hjmvr25y3rp3p8c9xv1agkllkksm45ng6681";
+    };
+  }
+  {
+    goPackagePath = "github.com/onsi/ginkgo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/ginkgo";
+      rev = "v1.7.0";
+      sha256 = "14wgpdrvpc35rdz3859bz53sc1g4vpr1fysy15wy3ff9gmqs14yg";
+    };
+  }
+  {
+    goPackagePath = "github.com/onsi/gomega";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/gomega";
+      rev = "v1.4.3";
+      sha256 = "1c8rqg5i2hz3snmq7s41yar1zjnzilb0fyiyhkg83v97afcfx79v";
+    };
+  }
+  {
+    goPackagePath = "github.com/paulmach/go.geojson";
+    fetch = {
+      type = "git";
+      url = "https://github.com/paulmach/go.geojson";
+      rev = "40612a87147b";
+      sha256 = "037j7apv0jljhvn6vk85nhy0ql862nxr5zbmi6a30qdfclrf2q4k";
+    };
+  }
+  {
+    goPackagePath = "github.com/pelletier/go-toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-toml";
+      rev = "v1.2.0";
+      sha256 = "1fjzpcjng60mc3a4b2ql5a00d5gah84wj740dabv9kq67mpg8fxy";
+    };
+  }
+  {
     goPackagePath = "github.com/pkg/errors";
     fetch = {
       type = "git";
       url = "https://github.com/pkg/errors";
-      rev = "17b591df37844cde689f4d5813e5cea0927d8dd2";
-      sha256 = "1f400f1682h1wdjknlh1ad95rbss09g0ia36a8w102bf2f1qfq8l";
+      rev = "v0.8.1";
+      sha256 = "0g5qcb4d4fd96midz0zdk8b9kz8xkzwfa8kr1cliqbg8sxsy5vd1";
     };
   }
   {
@@ -184,7 +679,7 @@
     fetch = {
       type = "git";
       url = "https://github.com/pkg/profile";
-      rev = "5b67d428864e92711fcbd2f8629456121a56d91f";
+      rev = "v1.2.1";
       sha256 = "0blqmvgqvdbqmh3fp9pfdxc9w1qfshrr0zy9whj0sn372bw64qnr";
     };
   }
@@ -193,7 +688,7 @@
     fetch = {
       type = "git";
       url = "https://github.com/pmezard/go-difflib";
-      rev = "792786c7400a136282c1664665ae0a8db921c6c2";
+      rev = "v1.0.0";
       sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
     };
   }
@@ -202,8 +697,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/prometheus/client_golang";
-      rev = "310ce84375bb84c5cbbf0d05069c92daa5673740";
-      sha256 = "11awb5bjkwqj7va3v7fgniwqkjqhmhjkp01rdvnv4xfp1laxwn7v";
+      rev = "v1.0.0";
+      sha256 = "1f03ndyi3jq7zdxinnvzimz3s4z2374r6dikkc8i42xzb6d1bli6";
     };
   }
   {
@@ -211,8 +706,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/prometheus/client_model";
-      rev = "6f3806018612930941127f2a7c6c453ba2c527d2";
-      sha256 = "1413ibprinxhni51p0755dp57r9wvbw7xgj9nmdaxmhzlqhc86j4";
+      rev = "fd36f4220a90";
+      sha256 = "1bs5d72k361llflgl94c22n0w53j30rsfh84smgk8mbjbcmjsaa5";
     };
   }
   {
@@ -220,8 +715,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/prometheus/common";
-      rev = "0866df4b85a18d652b6965be022d007cdf076822";
-      sha256 = "0zw4rxs6zh9vgxz5wwhjnwa6mgac8jh7mb63viircgh08r889chp";
+      rev = "v0.6.0";
+      sha256 = "1q16br348117ffycxdwsldb0i39p34miclfa8z93k6vjwnrqbh2l";
     };
   }
   {
@@ -229,8 +724,98 @@
     fetch = {
       type = "git";
       url = "https://github.com/prometheus/procfs";
-      rev = "e645f4e5aaa8506fc71d6edbc5c4ff02c04c46f2";
-      sha256 = "18hwygbawbqilz7h8fl25xpbciwalkslb4igqn4cr9d8sqp7d3np";
+      rev = "v0.0.2";
+      sha256 = "0s7pvs7fgnfpmym3cd0k219av321h9sf3yvdlnn3qy0ps280lg7k";
+    };
+  }
+  {
+    goPackagePath = "github.com/russross/blackfriday";
+    fetch = {
+      type = "git";
+      url = "https://github.com/russross/blackfriday";
+      rev = "v1.5.2";
+      sha256 = "0jzbfzcywqcrnym4gxlz6nphmm1grg6wsl4f0r9x384rn83wkj7c";
+    };
+  }
+  {
+    goPackagePath = "github.com/sirupsen/logrus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sirupsen/logrus";
+      rev = "v1.2.0";
+      sha256 = "0r6334x2bls8ddznvzaldx4g88msjjns4mlks95rqrrg7h0ijigg";
+    };
+  }
+  {
+    goPackagePath = "github.com/soheilhy/cmux";
+    fetch = {
+      type = "git";
+      url = "https://github.com/soheilhy/cmux";
+      rev = "v0.1.4";
+      sha256 = "1f736g68d9vwlyfb6g0fxkr0r875369xafk30cz8kaq5niaqwv0h";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/afero";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/afero";
+      rev = "v1.1.2";
+      sha256 = "0miv4faf5ihjfifb1zv6aia6f6ik7h1s4954kcb8n6ixzhx9ck6k";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cast";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cast";
+      rev = "v1.3.0";
+      sha256 = "0xq1ffqj8y8h7dcnm0m9lfrh0ga7pssnn2c1dnr09chqbpn4bdc5";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev = "v0.0.5";
+      sha256 = "0z4x8js65mhwg1gf6sa865pdxfgn45c3av9xlcc1l3xjvcnx32v2";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev = "v1.0.0";
+      sha256 = "093fmmvavv84pv4q84hav7ph3fmrq87bvspjj899q0qsx37yvdr8";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev = "v1.0.3";
+      sha256 = "1cj3cjm7d3zk0mf1xdybh0jywkbbw7a6yr3y22x9sis31scprswd";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/viper";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/viper";
+      rev = "v1.3.2";
+      sha256 = "1829hvf805kda65l59r17wvid7y0vr390s23zfhf4w7vdb4wp3zh";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/objx";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/objx";
+      rev = "v0.1.1";
+      sha256 = "0iph0qmpyqg4kwv8jsx6a56a7hhqq8swrazv40ycxk9rzr0s8yls";
     };
   }
   {
@@ -238,17 +823,17 @@
     fetch = {
       type = "git";
       url = "https://github.com/stretchr/testify";
-      rev = "976c720a22c8eb4eb6a0b4348ad85ad12491a506";
-      sha256 = "0a2gxvqzacrj9k8h022zhr8fchhn9afc6a511m07j71dzw9g4y3m";
+      rev = "v1.3.0";
+      sha256 = "0wjchp2c8xbgcbbq32w3kvblk6q6yn533g78nxl6iskq6y95lxsy";
     };
   }
   {
-    goPackagePath = "github.com/tebeka/snowball";
+    goPackagePath = "github.com/tmc/grpc-websocket-proxy";
     fetch = {
       type = "git";
-      url = "https://github.com/tebeka/snowball";
-      rev = "6b06bd306c4e4442a63e546752278920ae487934";
-      sha256 = "110akijkb55k5h7m6mra8fircvi4sxd5xq7lcjgyiqj96srq8v2k";
+      url = "https://github.com/tmc/grpc-websocket-proxy";
+      rev = "89b8d40f7ca8";
+      sha256 = "1bg6m0cycy5sww175zkbnhi9lvzb08iicc8xka8klrgaa9mc5nsk";
     };
   }
   {
@@ -256,17 +841,134 @@
     fetch = {
       type = "git";
       url = "https://github.com/twpayne/go-geom";
-      rev = "6753ad11e46b04e21b3f286b342e73a8c4be8216";
+      rev = "6753ad11e46b";
       sha256 = "0qyrdnp7j7lmj0qb0p7k45m757zvbwn78s1apiy46zfnb5415df1";
     };
   }
   {
+    goPackagePath = "github.com/ugorji/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ugorji/go";
+      rev = "e444a5086c43";
+      sha256 = "1ri318sf41fdzhj186dg96pixvlhmk1255ymccc9zfayy3z6li3h";
+    };
+  }
+  {
+    goPackagePath = "github.com/urfave/cli";
+    fetch = {
+      type = "git";
+      url = "https://github.com/urfave/cli";
+      rev = "v1.20.0";
+      sha256 = "0y6f4sbzkiiwrxbl15biivj8c7qwxnvm3zl2dd3mw4wzg4x10ygj";
+    };
+  }
+  {
+    goPackagePath = "github.com/willf/bitset";
+    fetch = {
+      type = "git";
+      url = "https://github.com/willf/bitset";
+      rev = "71fa2377963f";
+      sha256 = "092lpf2qm3zyvm35inam4b7y3kjpvpx7ylkgn31x6wbxfbamp37a";
+    };
+  }
+  {
+    goPackagePath = "github.com/xiang90/probing";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xiang90/probing";
+      rev = "43a291ad63a2";
+      sha256 = "1z22ms16j5j42775mf31isanwx2pwr1d8wqw8006dczjv36qnz5i";
+    };
+  }
+  {
+    goPackagePath = "github.com/xordataexchange/crypt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xordataexchange/crypt";
+      rev = "b2862e3d0a77";
+      sha256 = "04q3856anpzl4gdfgmg7pbp9cx231nkz3ymq2xp27rnmmwhfxr8y";
+    };
+  }
+  {
+    goPackagePath = "go.etcd.io/bbolt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/etcd-io/bbolt";
+      rev = "v1.3.2";
+      sha256 = "13d5l6p6c5wvkr6vn9hkhz9c593qifn7fgx0hg4d6jcvg1y0bnm2";
+    };
+  }
+  {
+    goPackagePath = "go.etcd.io/etcd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/etcd-io/etcd";
+      rev = "a943ad0ee4c9";
+      sha256 = "1p0s383qw7rdcg2zs5ysk70dkjhpyyqn2qgqgbxdvrv5cjgna1hm";
+    };
+  }
+  {
+    goPackagePath = "go.opencensus.io";
+    fetch = {
+      type = "git";
+      url = "https://github.com/census-instrumentation/opencensus-go";
+      rev = "v0.21.0";
+      sha256 = "14s0a12xdzjvad0dgksgv8m3hh7nc585abvjkvyk6r67a29lxj6x";
+    };
+  }
+  {
+    goPackagePath = "go.uber.org/atomic";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber-go/atomic";
+      rev = "v1.3.2";
+      sha256 = "11pzvjys5ddjjgrv94pgk9pnip9yyb54z7idf33zk7p7xylpnsv6";
+    };
+  }
+  {
+    goPackagePath = "go.uber.org/multierr";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber-go/multierr";
+      rev = "v1.1.0";
+      sha256 = "1slfc6syvw8cvr6rbrjsy6ja5w8gsx0f8aq8qm16rp2x5c2pj07w";
+    };
+  }
+  {
+    goPackagePath = "go.uber.org/zap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/uber-go/zap";
+      rev = "v1.9.1";
+      sha256 = "19a1i6fipqj8w7h6qjmg1sfbg18yzzqsgfn0vmr55hkgc0y6nmny";
+    };
+  }
+  {
     goPackagePath = "golang.org/x/crypto";
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/crypto";
-      rev = "22ddb68eccda408bbf17759ac18d3120ce0d4f3f";
-      sha256 = "07ks6qal02iz24vv54qyb90wmsg9vwqc14abf68rakprpy26qwsg";
+      rev = "c2843e01d9a2";
+      sha256 = "01xgxbj5r79nmisdvpq48zfy8pzaaj90bn6ngd4nf33j9ar1dp8r";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/exp";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/exp";
+      rev = "509febef88a4";
+      sha256 = "02isrh39z8znrp5znplzy0dip2gnrl3jm1355raliyvhnhg04j6q";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/lint";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/lint";
+      rev = "5614ed5bae6f";
+      sha256 = "0fzn0zjv0x92xvfdq3a0v9w5sgkhr7hxkfy9zaqi8i57807z8bnx";
     };
   }
   {
@@ -274,8 +976,26 @@
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/net";
-      rev = "d1e1b351919c6738fdeb9893d5c998b161464f0c";
-      sha256 = "0qzbfah03z992zyygfp7imjjas5np2gcar5aanx5y3av5g68ggjp";
+      rev = "da137c7871d7";
+      sha256 = "1qsiyr3irmb6ii06hivm9p2c7wqyxczms1a9v1ss5698yjr3fg47";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/oauth2";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/oauth2";
+      rev = "e64efc72b421";
+      sha256 = "0djvwz2avx7knsjbl434vw1wqbrg53xp1kh599gfixn5icrggz4m";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sync";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sync";
+      rev = "e225da77a7e6";
+      sha256 = "0bh3583smcfw6jw3w6lp0za93rz7hpxfdz8vhxng75b7a6vdlw4p";
     };
   }
   {
@@ -283,8 +1003,8 @@
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/sys";
-      rev = "abf9c25f54453410d0c6668e519582a9e1115027";
-      sha256 = "0dmpqjfif2zg6776d366js60k21g81jvsr3jm9dc7fv7w3282al4";
+      rev = "04f50cda93cb";
+      sha256 = "0hmfsz9y1ingwsn482hlzzmzs7kr3cklm0ana0mbdk70isw2bxnw";
     };
   }
   {
@@ -292,8 +1012,44 @@
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/text";
-      rev = "1cbadb444a806fd9430d14ad08967ed91da4fa0a";
-      sha256 = "0ih9ysagh4ylj08393497sscf3yziybc6acg4mrh0wa7mld75j56";
+      rev = "v0.3.0";
+      sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/time";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/time";
+      rev = "fbb02b2291d2";
+      sha256 = "0jjqcv6rzihlgg4i797q80g1f6ch5diz2kxqh6488gwkb6nds4h4";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "e65039ee4138";
+      sha256 = "0c094599cf70wdrms49a3879qkq122pqlp2av444gs2pvc8apdcx";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/api";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/google-api-go-client";
+      rev = "v0.3.2";
+      sha256 = "1x1nbsd3gjgmv833gpgq79m5d15p31k1dfn8gglkvjanjiin747j";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/appengine";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/appengine";
+      rev = "v1.4.0";
+      sha256 = "06zl7w4sxgdq2pl94wy9ncii6h0z3szl4xpqds0sv3b3wbdlhbnn";
     };
   }
   {
@@ -301,8 +1057,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/google/go-genproto";
-      rev = "1e559d0a00eef8a9a43151db4665280bd8dd5886";
-      sha256 = "1dfm8zd9mif1aswks79wgyi7n818s5brbdnnrrlg79whfhaf20hd";
+      rev = "5fe7a883aa19";
+      sha256 = "0qjkwig0r42q0j2qv57s4ahsgmmp41dz3ih3rnaqg0619n5w7lbs";
     };
   }
   {
@@ -310,8 +1066,71 @@
     fetch = {
       type = "git";
       url = "https://github.com/grpc/grpc-go";
-      rev = "f92cdcd7dcdc69e81b2d7b338479a19a8723cfa3";
-      sha256 = "1li8rn2s4f8qc77npamlm2ijin44scb8vvd8c4cr0l7za2m89jfn";
+      rev = "v1.19.0";
+      sha256 = "1znqwpj7ix3dpzx4zch0q70sdl3z5lvbb7v3q4i8sf8kas3yv71v";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/airbrake/gobrake.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/airbrake/gobrake.v2";
+      rev = "v2.0.9";
+      sha256 = "1x06f7n7qlyzqgyz0sdfcidf3w4ldn6zs6qx2mhibggk2z4whcjw";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/alecthomas/kingpin.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/alecthomas/kingpin.v2";
+      rev = "v2.2.6";
+      sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/check.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/check.v1";
+      rev = "20d25e280405";
+      sha256 = "0k1m83ji9l1a7ng8a7v40psbymxasmssbrrhpdv2wl4rhs0nc3np";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/cheggaaa/pb.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/cheggaaa/pb.v1";
+      rev = "v1.0.25";
+      sha256 = "0vxqiw6f3xyv0zy3g4lksf8za0z8i0hvfpw92hqimsy84f79j3dp";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/fsnotify.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/fsnotify.v1";
+      rev = "v1.4.7";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/gemnasium/logrus-airbrake-hook.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/gemnasium/logrus-airbrake-hook.v2";
+      rev = "v2.1.2";
+      sha256 = "0sbg0dn6cysmf8f2bi209jwl4jnpiwp4rdghnxlzirw3c32ms5y5";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/tomb.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/tomb.v1";
+      rev = "dd632973f1e7";
+      sha256 = "1lqmq1ag7s4b3gc3ddvr792c5xb5k6sfn0cchr3i2s7f1c231zjv";
     };
   }
   {
@@ -319,8 +1138,17 @@
     fetch = {
       type = "git";
       url = "https://gopkg.in/yaml.v2";
-      rev = "a5b47d31c556af34a302ce5d659e6fea44d90de0";
-      sha256 = "0v6l48fshdjrqzyq1kwn22gy7vy434xdr1i0lm3prsf6jbln9fam";
+      rev = "v2.2.2";
+      sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa";
+    };
+  }
+  {
+    goPackagePath = "honnef.co/go/tools";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dominikh/go-tools";
+      rev = "c2f93a96b099";
+      sha256 = "07lg29aiap80ca9f201jzng9vjr168cv3qmvjmbd7v5pmww9kmr8";
     };
   }
 ]
diff --git a/pkgs/servers/monitoring/grafana/default.nix b/pkgs/servers/monitoring/grafana/default.nix
index 557a4b4842db0..615edeb81ec13 100644
--- a/pkgs/servers/monitoring/grafana/default.nix
+++ b/pkgs/servers/monitoring/grafana/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   pname = "grafana";
-  version = "6.3.4";
+  version = "6.3.5";
 
   goPackagePath = "github.com/grafana/grafana";
 
@@ -12,12 +12,12 @@ buildGoPackage rec {
     rev = "v${version}";
     owner = "grafana";
     repo = "grafana";
-    sha256 = "06xbz6y1vmj44ppm2gbb71qiv8myd5ysygi3s06d6dia07ngw3v2";
+    sha256 = "0qimqdlxkvh31n730gp1wl1va0bza69bw90nyzrmfb34733pmni2";
   };
 
   srcStatic = fetchurl {
     url = "https://dl.grafana.com/oss/release/grafana-${version}.linux-amd64.tar.gz";
-    sha256 = "0lhfy3crwis6464icxq0h3hgxvk2dgk6w7k6z2mmaxqm0j15scc8";
+    sha256 = "1rw2ws610ba2vl5kv3yay8s69xkqzisrl6q27zxa5kj48khvy101";
   };
 
   postPatch = ''
diff --git a/pkgs/servers/tacacs+/default.nix b/pkgs/servers/tacacs+/default.nix
new file mode 100644
index 0000000000000..01d8affd1e855
--- /dev/null
+++ b/pkgs/servers/tacacs+/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, tcp_wrappers, flex, bison, perl }:
+
+stdenv.mkDerivation rec {
+  pname = "tacacs+";
+  version = "4.0.4.28";
+
+  src = fetchurl {
+    url = "ftp://ftp.shrubbery.net/pub/tac_plus/tacacs-F${version}.tar.gz";
+    sha256 = "17i18z3s58c8yy8jxp01q3hzz5nirs4cjxms18zzkli6ip4jszql";
+  };
+
+  nativeBuildInputs = [ flex bison ];
+  buildInputs = [ tcp_wrappers perl ];
+
+  meta = with stdenv.lib; {
+    description = "A protocol for authentication, authorization and accounting (AAA) services for routers and network devices";
+    homepage = "http://www.shrubbery.net/tac_plus/";
+    license = licenses.free;
+    maintainers = [ maintainers."0x4A6F" ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/pkgs/servers/web-apps/cryptpad/bower-packages.nix b/pkgs/servers/web-apps/cryptpad/bower-packages.nix
index 8d3d3def695f2..9b87924e0b963 100644
--- a/pkgs/servers/web-apps/cryptpad/bower-packages.nix
+++ b/pkgs/servers/web-apps/cryptpad/bower-packages.nix
@@ -13,7 +13,7 @@ buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [
   (fetchbower "secure-fabric.js" "secure-v1.7.9" "secure-v1.7.9" "1l56mk7hbnsm9cdg5zdcmg95p7a9w96dq0bbl8fp11vs0awjil7a")
   (fetchbower "hyperjson" "1.4.0" "~1.4.0" "1n68ls3x4lyhg1yy8i4q3xkgh5xqpyakf45sny4x91mkr68x4bd9")
   (fetchbower "chainpad-crypto" "0.2.2" "^0.2.0" "1zmhc24zgg7jkb6c7r5syhxmlk61vmcsa2l0ip37dk52ygl6yfg5")
-  (fetchbower "chainpad-listmap" "0.5.2" "^0.5.0" "0zmg6y5pzf75i84mlnvif6v1g7f4s1vyyzd6ng9ql4b9sdlf4zpc")
+  (fetchbower "chainpad-listmap" "0.7.0" "^0.7.0" "141hk4x7kwzgiazsghyg4h4df519m72qh3xfb3lzwy245c2nh1ak")
   (fetchbower "chainpad" "5.1.2" "^5.1.0" "1qzdbaf15vaz2573dzm4sxi28m56hi1gi2z00f5ilayxshrbdrlc")
   (fetchbower "file-saver" "1.3.1" "1.3.1" "065nzkvdiicxnw06z1sjz1sbp9nyis8z839hv6ng1fk25dc5kvkg")
   (fetchbower "alertifyjs" "1.0.11" "1.0.11" "0v7323bzq90k35shm3h6azj4wd9la3kbi1va1pw4qyvndkwma69l")
@@ -22,7 +22,7 @@ buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [
   (fetchbower "less" "3.7.1" "3.7.1" "1n7ps4xlbrc9m63b3q62mg3p6i7d5hwchhpjshb0drzj5crvz556")
   (fetchbower "bootstrap" "4.3.1" "^v4.0.0" "081xw746bshhy8m14x7y8y6ryl38jz3l5545v62vjzr6b4609xd9")
   (fetchbower "diff-dom" "2.1.1" "2.1.1" "0nrn6xqlhp0p5ixjxdk8qg3939crkggh1l8swd20d7bsz186l5f1")
-  (fetchbower "nthen" "0.1.10" "^0.1.5" "0ipaydp1g63hgjis9qpp4nzf7p0b06g0xnz8nlxnwarkknci55y8")
+  (fetchbower "nthen" "0.1.7" "0.1.7" "03yap5ildigaw4rwxmxs37pcwhq415iham8w39zd56ka98gpfxa5")
   (fetchbower "open-sans-fontface" "1.4.2" "^1.4.2" "0ksav1fcq640fmdz49ra4prwsrrfj35y2p4shx1jh1j7zxd044nf")
   (fetchbower "bootstrap-tokenfield" "0.12.1" "^0.12.1" "0ib1v5k8h360sp19yiy7q92rfaz2554fvwwg2ixmxn01ydqlprw6")
   (fetchbower "bootstrap" "3.1.1" "~3.1.1" "06bhjwa8p7mzbpr3jkgydd804z1nwrkdql66h7jkfml99psv9811")
@@ -33,7 +33,7 @@ buildEnv { name = "bower-env"; ignoreCollisions = true; paths = [
   (fetchbower "saferphore" "0.0.1" "^0.0.1" "1wfr9wpbm3lswmvy2p0247ydb108h4qh5s286py89k871qh6jwdi")
   (fetchbower "jszip" "Stuk/jszip#3.2.2" "Stuk/jszip#^3.1.5" "1k0va2ps2x29d1virg51n5s5rdjk21zfh7h14nnljcfnvxvk3rpp")
   (fetchbower "requirejs-plugins" "1.0.3" "^1.0.3" "00s3sdz1ykygx5shldwhhhybwgw7c99vkqd94i5i5x0gl97ifxf5")
-  (fetchbower "chainpad-netflux" "0.7.6" "^0.7.0" "02qjk0qv423r2ksxma49i4l45p42j20ifr2rrr23dz0fq44j6llc")
-  (fetchbower "netflux-websocket" "0.1.20" "^0.1.19" "0bpkkg4vfyhiwwf2d2hxld6zsppjx4clknrwsivp4m0vx2ddc54s")
+  (fetchbower "chainpad-netflux" "0.9.0" "^0.9.0" "0qx9ihnpmcrmg2lwkpm330bhj8zsp1gdxxrbsd05bwd8pm2x11av")
+  (fetchbower "netflux-websocket" "0.1.20" "^0.1.20" "1xwqq7nw7fmhglndbplarkdzxfmkq831aqs8nm6qj0hz2ggbibhz")
   (fetchbower "es6-promise" "3.3.1" "^3.2.2" "0ai6z5admfs84fdx6663ips49kqgz4x68ays78cic0xfb7pp6vcz")
 ]; }
diff --git a/pkgs/servers/web-apps/cryptpad/default.nix b/pkgs/servers/web-apps/cryptpad/default.nix
index f406aa83e350b..77e529f26abf4 100644
--- a/pkgs/servers/web-apps/cryptpad/default.nix
+++ b/pkgs/servers/web-apps/cryptpad/default.nix
@@ -15,7 +15,6 @@ let
   bowerPackages = buildBowerComponents {
     name = "${cryptpad.name}-bower-packages";
     # this list had to be tweaked by hand:
-    # * remove the # in the sortablejs dependency
     # * add the second bootstrap ~3.1.1 entry
     generated = ./bower-packages.nix;
     src = cryptpad.src;
diff --git a/pkgs/servers/web-apps/cryptpad/node-packages-generated.nix b/pkgs/servers/web-apps/cryptpad/node-packages-generated.nix
index b2a943dc2dfc8..6189bfdf4cb8c 100644
--- a/pkgs/servers/web-apps/cryptpad/node-packages-generated.nix
+++ b/pkgs/servers/web-apps/cryptpad/node-packages-generated.nix
@@ -364,13 +364,13 @@ let
         sha512 = "hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==";
       };
     };
-    "nthen-0.1.10" = {
+    "nthen-0.1.8" = {
       name = "nthen";
       packageName = "nthen";
-      version = "0.1.10";
+      version = "0.1.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/nthen/-/nthen-0.1.10.tgz";
-        sha512 = "W5LOhoFlQZSVg9SnRUJHgm3lOiT3HV6xq+Qo0dGKju2FWsDrKPwcgbJ9o5CORGz7UKKVhPScY9wOJHUogVG2UA==";
+        url = "https://registry.npmjs.org/nthen/-/nthen-0.1.8.tgz";
+        sha512 = "Oh2CwIbhj+wUT94lQV7LKmmgw3UYAGGd8oLIqp6btQN3Bz3PuWp4BuvtUo35H3rqDknjPfKx5P6mt7v+aJNjcw==";
       };
     };
     "on-finished-2.3.0" = {
@@ -619,14 +619,14 @@ let
   };
 in
 {
-  "cryptpad-git+https://github.com/xwiki-labs/cryptpad.git#2.25.0" = nodeEnv.buildNodePackage {
+  "cryptpad-git+https://github.com/xwiki-labs/cryptpad.git#3.0.0" = nodeEnv.buildNodePackage {
     name = "cryptpad";
     packageName = "cryptpad";
-    version = "2.25.0";
+    version = "3.0.0";
     src = fetchgit {
       url = "https://github.com/xwiki-labs/cryptpad.git";
-      rev = "0b17df3302fc4a7683a8790f305c8a2c7b1b4fe8";
-      sha256 = "261531da1745f9ff930bce3729afba2b7a52ee02f51340426ecf6b19204a21b7";
+      rev = "166ab65cd47a64e020528089244ed5be34f6e3c8";
+      sha256 = "35a3b733b5c128b7c7e1c0e7473f4a6a446d663f4c787745b36b1071205c1fd7";
     };
     dependencies = [
       sources."accepts-1.3.7"
@@ -669,7 +669,7 @@ in
       sources."mime-types-2.1.24"
       sources."ms-2.0.0"
       sources."negotiator-0.6.2"
-      sources."nthen-0.1.10"
+      sources."nthen-0.1.8"
       sources."on-finished-2.3.0"
       sources."parseurl-1.3.3"
       sources."path-to-regexp-0.1.7"
diff --git a/pkgs/servers/web-apps/cryptpad/node-packages.json b/pkgs/servers/web-apps/cryptpad/node-packages.json
index c37d984ae1210..b370e09931b6b 100644
--- a/pkgs/servers/web-apps/cryptpad/node-packages.json
+++ b/pkgs/servers/web-apps/cryptpad/node-packages.json
@@ -1,3 +1,3 @@
 [
-  { "cryptpad": "git+https://github.com/xwiki-labs/cryptpad.git#2.25.0" }
+  { "cryptpad": "git+https://github.com/xwiki-labs/cryptpad.git#3.0.0" }
 ]
diff --git a/pkgs/servers/web-apps/cryptpad/node-packages.nix b/pkgs/servers/web-apps/cryptpad/node-packages.nix
index 36c5996286ff2..cae300a53f405 100644
--- a/pkgs/servers/web-apps/cryptpad/node-packages.nix
+++ b/pkgs/servers/web-apps/cryptpad/node-packages.nix
@@ -14,4 +14,4 @@ in
 import ./node-packages-generated.nix {
   inherit (pkgs) fetchurl fetchgit;
   inherit nodeEnv;
-}
+}
\ No newline at end of file
diff --git a/pkgs/stdenv/cross/default.nix b/pkgs/stdenv/cross/default.nix
index 3bc4cd9a8faaf..4e5c4cc2e8333 100644
--- a/pkgs/stdenv/cross/default.nix
+++ b/pkgs/stdenv/cross/default.nix
@@ -55,6 +55,8 @@ in lib.init bootStages ++ [
              then buildPackages.darwin.iosSdkPkgs.clang
            else if crossSystem.useAndroidPrebuilt or false
              then buildPackages."androidndkPkgs_${crossSystem.ndkVer}".clang
+           else if targetPlatform.isGhcjs
+             then null
            else if crossSystem.useLLVM or false
              then buildPackages.llvmPackages_8.lldClang
            else buildPackages.gcc;
diff --git a/pkgs/tools/graphics/vulkan-tools/default.nix b/pkgs/tools/graphics/vulkan-tools/default.nix
index 9ea1c2d73438e..5851e4a2d46ac 100644
--- a/pkgs/tools/graphics/vulkan-tools/default.nix
+++ b/pkgs/tools/graphics/vulkan-tools/default.nix
@@ -3,7 +3,7 @@
 
 stdenv.mkDerivation rec {
   pname = "vulkan-tools";
-  version = "1.1.106.0";
+  version = "1.1.114.0";
 
   src = fetchFromGitHub {
     owner = "KhronosGroup";
diff --git a/pkgs/tools/misc/bat/default.nix b/pkgs/tools/misc/bat/default.nix
index 205bc196811b1..267b820df0733 100644
--- a/pkgs/tools/misc/bat/default.nix
+++ b/pkgs/tools/misc/bat/default.nix
@@ -1,25 +1,27 @@
-{ stdenv, rustPlatform, fetchFromGitHub, cmake, pkgconfig, zlib
+{ stdenv, rustPlatform, fetchFromGitHub, llvmPackages, pkgconfig, zlib
 , Security, libiconv
 }:
 
 rustPlatform.buildRustPackage rec {
   pname   = "bat";
-  version = "0.11.0";
+  version = "0.12.0";
 
   src = fetchFromGitHub {
     owner  = "sharkdp";
     repo   = pname;
     rev    = "v${version}";
-    sha256 = "0yyvlplskjvxb2cspqsvfsnahd5m0s83psrp777ng0wc0kr1adbw";
+    sha256 = "07qxghplqq8km4kp9zas2acw302a77y72x3ix1272kb1zxhw4as6";
     fetchSubmodules = true;
   };
 
-  cargoSha256 = "078n31c0isvxvna0s1m12xv4bkh15rb2nixfyg4c501mlkalb517";
+  cargoSha256 = "0j9wxv21a91yfvbbvgn5ms5zi1aipj1k2g42mfdvvw2vsdzqagxz";
 
-  nativeBuildInputs = [ cmake pkgconfig zlib ];
+  nativeBuildInputs = [ pkgconfig llvmPackages.libclang zlib ];
 
   buildInputs = stdenv.lib.optionals stdenv.isDarwin [ Security libiconv ];
 
+  LIBCLANG_PATH = "${llvmPackages.libclang}/lib";
+
   postInstall = ''
     install -m 444 -Dt $out/share/man/man1 doc/bat.1
     install -m 444 -Dt $out/share/fish/vendor_completions.d assets/completions/bat.fish
diff --git a/pkgs/tools/misc/grub/2.0x.nix b/pkgs/tools/misc/grub/2.0x.nix
index 8ea7a0fa0a2a4..3f5485718dc5b 100644
--- a/pkgs/tools/misc/grub/2.0x.nix
+++ b/pkgs/tools/misc/grub/2.0x.nix
@@ -31,7 +31,7 @@ let
   canEfi = any (system: stdenv.hostPlatform.system == system) (mapAttrsToList (name: _: name) efiSystemsBuild);
   inPCSystems = any (system: stdenv.hostPlatform.system == system) (mapAttrsToList (name: _: name) pcSystems);
 
-  version = "2.04-rc1";
+  version = "2.04";
 
 in (
 
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
   src = fetchgit {
     url = "git://git.savannah.gnu.org/grub.git";
     rev = "${pname}-${version}";
-    sha256 = "0xkcfxs0hbzvi33kg4abkayl8b7gym9sv8ljbwlh2kpz8i4kmnk0";
+    sha256 = "02gly3xw88pj4zzqjniv1fxa1ilknbq1mdk30bj6qy8n44g90i8w";
   };
 
   patches = [
diff --git a/pkgs/tools/misc/lolcat/Gemfile.lock b/pkgs/tools/misc/lolcat/Gemfile.lock
index f6aa88bbdea13..ed48cc5921b03 100644
--- a/pkgs/tools/misc/lolcat/Gemfile.lock
+++ b/pkgs/tools/misc/lolcat/Gemfile.lock
@@ -1,13 +1,13 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    lolcat (99.9.99)
+    lolcat (100.0.0)
       manpages (~> 0.6.1)
       optimist (~> 3.0.0)
-      paint (~> 2.0.0)
+      paint (~> 2.1.0)
     manpages (0.6.1)
     optimist (3.0.0)
-    paint (2.0.3)
+    paint (2.1.1)
 
 PLATFORMS
   ruby
diff --git a/pkgs/tools/misc/lolcat/gemset.nix b/pkgs/tools/misc/lolcat/gemset.nix
index f21e5637993d9..2c2bc9cead101 100644
--- a/pkgs/tools/misc/lolcat/gemset.nix
+++ b/pkgs/tools/misc/lolcat/gemset.nix
@@ -5,10 +5,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0422869sf6hif1nrfzi8fwklnrdqj6hxxwg3403xvd9d50yndrn4";
+      sha256 = "0k1m2ihcprjq9jdmq2v3xlf27hqbpr2vjnnyfwp3z2zspzbl0nys";
       type = "gem";
     };
-    version = "99.9.99";
+    version = "100.0.0";
   };
   manpages = {
     groups = ["default"];
@@ -35,9 +35,9 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0ldb269l3pzkihmsws19cr9h3l6naw8c2fqpav8ck3nllnyiv7r2";
+      sha256 = "0rrb2p2yk6ffhm0gz8ba431mf63kq7w27gwavxl7n8qd2splj4mh";
       type = "gem";
     };
-    version = "2.0.3";
+    version = "2.1.1";
   };
-}
+}
\ No newline at end of file
diff --git a/pkgs/tools/misc/q-text-as-data/default.nix b/pkgs/tools/misc/q-text-as-data/default.nix
new file mode 100644
index 0000000000000..dbd4a4c465cae
--- /dev/null
+++ b/pkgs/tools/misc/q-text-as-data/default.nix
@@ -0,0 +1,35 @@
+{ stdenvNoCC, fetchFromGitHub, python2 }:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "q-text-as-data";
+  version = "1.7.1";
+
+  src = fetchFromGitHub {
+    owner = "harelba";
+    repo = "q";
+    rev = version;
+    sha256 = "021c2sd6qscz1ipwzzjf43pfd311dcay7yralksl25rs0r7h3li2";
+  };
+
+  buildInputs = [ python2 ];
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp bin/q $out/bin
+    chmod +x $out/bin/q
+  '';
+
+  meta = with stdenvNoCC.lib; {
+    description = "Run SQL directly on CSV or TSV files";
+    longDescription = ''
+      q is a command line tool that allows direct execution of SQL-like queries on CSVs/TSVs (and any other tabular text files).
+
+      q treats ordinary files as database tables, and supports all SQL constructs, such as WHERE, GROUP BY, JOINs etc. It supports automatic column name and column type detection, and provides full support for multiple encodings.
+    '';
+    homepage = "http://harelba.github.io/q/";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.taneb ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/tools/misc/youtube-dl/default.nix b/pkgs/tools/misc/youtube-dl/default.nix
index 1fe58f9450411..d378e541b5035 100644
--- a/pkgs/tools/misc/youtube-dl/default.nix
+++ b/pkgs/tools/misc/youtube-dl/default.nix
@@ -18,11 +18,11 @@ buildPythonPackage rec {
   # The websites youtube-dl deals with are a very moving target. That means that
   # downloads break constantly. Because of that, updates should always be backported
   # to the latest stable release.
-  version = "2019.08.13";
+  version = "2019.09.01";
 
   src = fetchurl {
     url = "https://yt-dl.org/downloads/${version}/${pname}-${version}.tar.gz";
-    sha256 = "0b94hrhbqa7jhn91pxsbphg2ylwkpkknb2y4v4sczp7rjvgmjgdj";
+    sha256 = "0jbby0x5krww1acc8qxhmmwg0dsqmj6yjnynfm7r6k3rxbvlydqr";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/networking/minio-client/default.nix b/pkgs/tools/networking/minio-client/default.nix
index ebd6e7c579937..3c8d15346849b 100644
--- a/pkgs/tools/networking/minio-client/default.nix
+++ b/pkgs/tools/networking/minio-client/default.nix
@@ -2,7 +2,6 @@
 
 buildGoPackage rec {
   pname = "minio-client";
-
   version = "2019-01-30T19-57-22Z";
 
   src = fetchFromGitHub {
@@ -14,9 +13,9 @@ buildGoPackage rec {
 
   goPackagePath = "github.com/minio/mc";
 
-  buildFlagsArray = [''-ldflags=
-    -X github.com/minio/mc/cmd.Version=${version}
-  ''];
+  preBuild = ''
+    buildFlagsArray+=("-ldflags=-X github.com/minio/mc/cmd.Version=${version}")
+  '';
 
   meta = with stdenv.lib; {
     homepage = https://github.com/minio/mc;
diff --git a/pkgs/tools/nix/nixos-generators/default.nix b/pkgs/tools/nix/nixos-generators/default.nix
new file mode 100644
index 0000000000000..4e51b9b46dd3e
--- /dev/null
+++ b/pkgs/tools/nix/nixos-generators/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper, coreutils, jq, findutils, nix  }:
+
+stdenv.mkDerivation rec {
+  pname = "nixos-generators";
+  version = "1.0.0";
+  src = fetchFromGitHub {
+    owner = "nix-community";
+    repo = "nixos-generators";
+    rev = version;
+    sha256 = "10xncifdfhilxclxyf72h7dcfn8yn1h34qbkvdq9l76ghv5qjniq";
+  };
+  nativeBuildInputs = [ makeWrapper ];
+  installFlags = [ "PREFIX=$(out)" ];
+  postFixup = ''
+    wrapProgram $out/bin/nixos-generate \
+      --prefix PATH : ${lib.makeBinPath [ jq coreutils findutils nix ] }
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Collection of image builders";
+    homepage    = "https://github.com/nix-community/nixos-generators";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ lassulus ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/text/ispell/default.nix b/pkgs/tools/text/ispell/default.nix
index dbec8d353d946..2f61536ed2c00 100644
--- a/pkgs/tools/text/ispell/default.nix
+++ b/pkgs/tools/text/ispell/default.nix
@@ -1,14 +1,17 @@
 { stdenv, fetchurl, bison, ncurses }:
 
 stdenv.mkDerivation rec {
-  name = "ispell-3.3.02";
+  pname = "ispell";
+  version = "3.4.00";
+
   src = fetchurl {
-    url = "http://fmg-www.cs.ucla.edu/geoff/tars/${name}.tar.gz";
+    url = "http://fmg-www.cs.ucla.edu/geoff/tars/${pname}-${version}.tar.gz";
     sha256 = "1d7c2fqrdjckp91ajpkn5nnmpci2qrxqn8b6cyl0zn1afb9amxbz";
   };
+
   buildInputs = [ bison ncurses ];
+
   patches = [
-    ./patches/0005-Do-not-reorder-words.patch
     ./patches/0007-Use-termios.patch
     ./patches/0008-Tex-backslash.patch
     ./patches/0009-Fix-FTBFS-on-glibc.patch
@@ -21,6 +24,7 @@ stdenv.mkDerivation rec {
     ./patches/0025-Languages.patch
     ./patches/0030-Display-whole-multibyte-character.patch
   ];
+
   postPatch = ''
     cat >> local.h <<EOF
     ${stdenv.lib.optionalString (!stdenv.isDarwin) "#define USG"}
@@ -37,11 +41,18 @@ stdenv.mkDerivation rec {
     #define MINIMENU
     #define HAS_RENAME
     EOF
-
   '';
+
   preBuild = ''
     for dir in $out/share/emacs/site-lisp $out/share/info $out/share/man/man1 $out/share/man/man4 $out/bin $out/lib; do
     mkdir -p $dir
     done
   '';
+
+  meta = with stdenv.lib; {
+    description = "An interactive spell-checking program for Unix";
+    homepage = "https://www.cs.hmc.edu/~geoff/ispell.html";
+    license = licenses.free;
+    platforms = platforms.unix;
+  };
 }
diff --git a/pkgs/tools/text/ispell/patches/0005-Do-not-reorder-words.patch b/pkgs/tools/text/ispell/patches/0005-Do-not-reorder-words.patch
deleted file mode 100644
index 2d74c078601a7..0000000000000
--- a/pkgs/tools/text/ispell/patches/0005-Do-not-reorder-words.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From: Geoff Kuenning <geoff@cs.hmc.edu>
-Date: Thu, 3 Nov 2005 14:14:15 -0800
-Subject: 0005 Do not reorder words
-
-ispell reorders words in personal dictionary without good reason.
-
-The correct approach is to build the internal data structure with variant
-spellings stored in the same order as they appear in the personal dictionary.
-Fortunately, this is easy, though the patch is to a different file. This one
-has been tested (That's what I get for trying to rush out a fix before a
-meeting!).
----
- makedent.c |   18 +++++++++++-------
- 1 files changed, 11 insertions(+), 7 deletions(-)
-
-diff --git a/makedent.c b/makedent.c
-index 0453d11..d121345 100644
---- a/makedent.c
-+++ b/makedent.c
-@@ -447,9 +447,10 @@ int combinecaps (hdrp, newp)
-     if (retval == 0)
- 	{
- 	/*
--	** Couldn't combine the two entries.  Add a new variant.  For
--	** ease, we'll stick it right behind the header, rather than
--	** at the end of the list.
-+	** Couldn't combine the two entries.  Add a new variant.  We
-+	** stick it at the end of the variant list because it's
-+	** important to maintain order; this causes the personal
-+	** dictionary to have a stable ordering.
- 	*/
- 	forcevheader (hdrp, oldp, newp);
- 	tdent = (struct dent *) mymalloc (sizeof (struct dent));
-@@ -460,10 +461,13 @@ int combinecaps (hdrp, newp)
- 	    return -1;
- 	    }
- 	*tdent = *newp;
--	tdent->next = hdrp->next;
--	hdrp->next = tdent;
--	tdent->flagfield |= (hdrp->flagfield & MOREVARIANTS);
--	hdrp->flagfield |= MOREVARIANTS;
-+	for (oldp = hdrp;
-+	  oldp->next != NULL  &&  oldp->flagfield & MOREVARIANTS;
-+	  oldp = oldp->next)
-+	    ;
-+	tdent->next = oldp->next;
-+	oldp->next = tdent;
-+	oldp->flagfield |= MOREVARIANTS;
- 	combineaffixes (hdrp, newp);
- 	hdrp->flagfield |= (newp->flagfield & KEEP);
- 	if (captype (newp->flagfield) == FOLLOWCASE)
--- 
diff --git a/pkgs/tools/video/rtmpdump/default.nix b/pkgs/tools/video/rtmpdump/default.nix
index 6636c07b01049..06c035552e54c 100644
--- a/pkgs/tools/video/rtmpdump/default.nix
+++ b/pkgs/tools/video/rtmpdump/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, zlib
+{ stdenv, fetchgit, fetchpatch, zlib
 , gnutlsSupport ? false, gnutls ? null, nettle ? null
 , opensslSupport ? true, openssl ? null
 }:
@@ -11,15 +11,23 @@ assert opensslSupport -> openssl != null && !gnutlsSupport;
 with stdenv.lib;
 stdenv.mkDerivation {
   pname = "rtmpdump";
-  version = "2015-12-30";
+  version = "2019-03-30";
 
   src = fetchgit {
-    url = git://git.ffmpeg.org/rtmpdump;
+    url = "git://git.ffmpeg.org/rtmpdump";
     # Currently the latest commit is used (a release has not been made since 2011, i.e. '2.4')
-    rev = "fa8646daeb19dfd12c181f7d19de708d623704c0";
-    sha256 = "17m9rmnnqyyzsnnxcdl8258hjmw16nxbj1n1lr7fj3kmcs189iig";
+    rev = "c5f04a58fc2aeea6296ca7c44ee4734c18401aa3";
+    sha256 = "07ias612jgmxpam9h418kvlag32da914jsnjsfyafklpnh8gdzjb";
   };
 
+  patches = [
+    # Fix build with OpenSSL 1.1
+    (fetchpatch {
+      url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/media-video/rtmpdump/files/rtmpdump-openssl-1.1.patch?id=1e7bef484f96e7647f5f0911d3c8caa48131c33b";
+      sha256 = "1wds98pk8qr7shkfl8k49iirxiwd972h18w84bamiqln29wv6ql1";
+    })
+  ];
+
   makeFlags = [ ''prefix=$(out)'' ]
     ++ optional gnutlsSupport "CRYPTO=GNUTLS"
     ++ optional opensslSupport "CRYPTO=OPENSSL"
@@ -32,9 +40,11 @@ stdenv.mkDerivation {
 
   outputs = [ "out" "dev" ];
 
+  separateDebugInfo = true;
+
   meta = {
     description = "Toolkit for RTMP streams";
-    homepage    = http://rtmpdump.mplayerhq.hu/;
+    homepage    = "http://rtmpdump.mplayerhq.hu/";
     license     = licenses.gpl2;
     platforms   = platforms.unix;
     maintainers = with maintainers; [ codyopel ];
diff --git a/pkgs/tools/virtualization/google-compute-engine/default.nix b/pkgs/tools/virtualization/google-compute-engine/default.nix
index 5abdcc23a74cc..48255ca68a735 100644
--- a/pkgs/tools/virtualization/google-compute-engine/default.nix
+++ b/pkgs/tools/virtualization/google-compute-engine/default.nix
@@ -22,13 +22,16 @@ buildPythonApplication rec {
     sha256 = "08cy0jd463kng6hwbd3nfldsp4dpd2lknlvdm88cq795wy0kh4wp";
   };
 
+  buildInputs = [ bash ];
+  propagatedBuildInputs = [ boto setuptools distro ];
+
+
   postPatch = ''
     for file in $(find google_compute_engine -type f); do
       substituteInPlace "$file" \
-        --replace /bin/systemctl "${systemd}/bin/systemctl" \
+        --replace /bin/systemctl "/run/current-system/sw/bin/systemctl" \
         --replace /bin/bash "${bashInteractive}/bin/bash" \
         --replace /sbin/hwclock "${utillinux}/bin/hwclock"
-
       # SELinux tool ???  /sbin/restorecon
     done
 
@@ -42,9 +45,13 @@ buildPythonApplication rec {
     # allows to install the package in `services.udev.packages` in NixOS
     mkdir -p $out/lib/udev/rules.d
     cp -r google_config/udev/*.rules $out/lib/udev/rules.d
-  '';
 
-  propagatedBuildInputs = [ boto setuptools distro ];
+    # sysctl snippets will be used by google-compute-config.nix
+    mkdir -p $out/sysctl.d
+    cp google_config/sysctl/*.conf $out/sysctl.d
+
+    patchShebangs $out/bin/*
+  '';
 
   doCheck = false;
 
diff --git a/pkgs/tools/virtualization/govc/default.nix b/pkgs/tools/virtualization/govc/default.nix
index 0d239547752a0..b53c211d379f6 100644
--- a/pkgs/tools/virtualization/govc/default.nix
+++ b/pkgs/tools/virtualization/govc/default.nix
@@ -2,7 +2,7 @@
   
 buildGoPackage rec {
   pname = "govc";
-  version = "0.20.0";
+  version = "0.21.0";
 
   goPackagePath = "github.com/vmware/govmomi";
 
@@ -12,7 +12,7 @@ buildGoPackage rec {
     rev = "v${version}";
     owner = "vmware";
     repo = "govmomi";
-    sha256 = "16pgjhlps21vk3cb5h2y0b6skq095rd8kl0618rwrz84chdnzahk";
+    sha256 = "0mig8w0szxqcii3gihrsm8n8hzziq9l6axc5z32nw9kiy9bi4130";
   };
 
   meta = {
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index c86af673e6e97..a0205c331b893 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -293,6 +293,14 @@ in
       perl = buildPackages.perl.override { fetchurl = stdenv.fetchurlBoot; };
       openssl = buildPackages.openssl.override {
         fetchurl = stdenv.fetchurlBoot;
+        coreutils = buildPackages.coreutils.override {
+          fetchurl = stdenv.fetchurlBoot;
+          inherit perl;
+          xz = buildPackages.xz.override { fetchurl = stdenv.fetchurlBoot; };
+          gmp = null;
+          aclSupport = false;
+          attrSupport = false;
+        };
         inherit perl;
         buildPackages = { inherit perl; };
       };
@@ -818,6 +826,8 @@ in
 
   ezstream = callPackage ../tools/audio/ezstream { };
 
+  libfx2 = with python3Packages; toPythonApplication fx2;
+
   fxlinuxprintutil = callPackage ../tools/misc/fxlinuxprintutil { };
 
   genymotion = callPackage ../development/mobile/genymotion { };
@@ -842,6 +852,8 @@ in
 
   gitter = callPackage  ../applications/networking/instant-messengers/gitter { };
 
+  glasgow = with python3Packages; toPythonApplication glasgow;
+
   gucci = callPackage ../tools/text/gucci { };
 
   grc = callPackage ../tools/misc/grc { };
@@ -1483,6 +1495,10 @@ in
 
   dibbler = callPackage ../tools/networking/dibbler { };
 
+  diesel-cli = callPackage ../development/tools/diesel-cli {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
   ding = callPackage ../applications/misc/ding {
     aspellDicts_de = aspellDicts.de;
     aspellDicts_en = aspellDicts.en;
@@ -4768,9 +4784,7 @@ in
 
   minetime = callPackage ../applications/office/minetime { };
 
-  minio-client = callPackage ../tools/networking/minio-client {
-    buildGoPackage = buildGo110Package;
-  };
+  minio-client = callPackage ../tools/networking/minio-client { };
 
   minissdpd = callPackage ../tools/networking/minissdpd { };
 
@@ -5696,6 +5710,8 @@ in
 
   ocz-ssd-guru = callPackage ../tools/misc/ocz-ssd-guru { };
 
+  q-text-as-data = callPackage ../tools/misc/q-text-as-data { };
+
   qalculate-gtk = callPackage ../applications/science/math/qalculate-gtk { };
 
   qastools = libsForQt5.callPackage ../tools/audio/qastools { };
@@ -5787,9 +5803,7 @@ in
 
   rt = callPackage ../servers/rt { };
 
-  rtmpdump = callPackage ../tools/video/rtmpdump {
-    openssl = openssl_1_0_2;
-  };
+  rtmpdump = callPackage ../tools/video/rtmpdump { };
   rtmpdump_gnutls = rtmpdump.override { gnutlsSupport = true; opensslSupport = false; };
 
   reaverwps = callPackage ../tools/networking/reaver-wps {};
@@ -7836,6 +7850,8 @@ in
   psc-package = haskell.lib.justStaticExecutables
     (haskellPackages.callPackage ../development/compilers/purescript/psc-package { });
 
+  "tacacs+" = callPackage ../servers/tacacs+ { };
+
   tamarin-prover =
     (haskellPackages.callPackage ../applications/science/logic/tamarin-prover {
       # NOTE: do not use the haskell packages 'graphviz' and 'maude'
@@ -8254,7 +8270,9 @@ in
 
   neko = callPackage ../development/compilers/neko { };
 
-  nextpnr = libsForQt5.callPackage ../development/compilers/nextpnr { };
+  nextpnr = libsForQt5.callPackage ../development/compilers/nextpnr {
+    inherit (darwin.apple_sdk.frameworks) OpenGL;
+  };
 
   nasm = callPackage ../development/compilers/nasm { };
 
@@ -8364,6 +8382,9 @@ in
     inherit (darwin.apple_sdk.frameworks) Security;
   };
   cargo-sweep = callPackage ../development/tools/rust/cargo-sweep { };
+  cargo-watch = callPackage ../development/tools/rust/cargo-watch {
+    inherit (darwin.apple_sdk.frameworks) CoreServices;
+  };
   cargo-xbuild = callPackage ../development/tools/rust/cargo-xbuild { };
   cargo-generate = callPackage ../development/tools/rust/cargo-generate {
     inherit (darwin.apple_sdk.frameworks) Security;
@@ -10120,6 +10141,8 @@ in
     inherit (darwin.apple_sdk.frameworks) CoreFoundation;
   };
 
+  udis86 = callPackage  ../development/tools/udis86 { };
+
   uefi-firmware-parser = callPackage ../development/tools/analysis/uefi-firmware-parser { };
 
   uhd = callPackage ../applications/radio/uhd { };
@@ -10959,6 +10982,7 @@ in
     else if name == "libSystem" then targetPackages.darwin.xcode
     else if name == "nblibc" then targetPackages.netbsdCross.libc
     else if name == "wasilibc" then targetPackages.wasilibc or wasilibc
+    else if stdenv.targetPlatform.isGhcjs then null
     else throw "Unknown libc ${name}";
 
   libcCross = assert stdenv.targetPlatform != stdenv.buildPlatform; libcCrossChooser stdenv.targetPlatform.libc;
@@ -17912,7 +17936,7 @@ in
 
   electron-cash = libsForQt5.callPackage ../applications/misc/electron-cash { };
 
-  electrum = callPackage ../applications/misc/electrum { };
+  electrum = libsForQt5.callPackage ../applications/misc/electrum { };
 
   electrum-dash = callPackage ../applications/misc/electrum/dash.nix { };
 
@@ -21157,6 +21181,8 @@ in
 
   way-cooler = callPackage ../applications/window-managers/way-cooler {};
 
+  waypipe = callPackage ../applications/networking/remote/waypipe { };
+
   wayv = callPackage ../tools/X11/wayv {};
 
   webtorrent_desktop = callPackage ../applications/video/webtorrent_desktop {};
@@ -23643,9 +23669,6 @@ in
 
   cups-zj-58 =  callPackage ../misc/cups/drivers/zj-58 { };
 
-  crashplan = callPackage ../applications/backup/crashplan { };
-  crashplansb = callPackage ../applications/backup/crashplan/crashplan-small-business.nix { gconf = gnome2.GConf; };
-
   colort = callPackage ../applications/misc/colort { };
 
   terminal-parrot = callPackage ../applications/misc/terminal-parrot { };
@@ -23934,6 +23957,8 @@ in
                 initialRamdisk.
                 The result can be extended in the modules by defining
                 extra attributes in system.build.
+                Alternatively, you may use the result's config and
+                options attributes to query any option.
 
      Example:
 
@@ -23971,10 +23996,13 @@ in
      Note that you will need to have called Nixpkgs with the system
      parameter set to the right value for your deployment target.
   */
-  nixos = configuration:
-    (import (pkgs.path + "/nixos/lib/eval-config.nix") {
-      inherit (pkgs.stdenv.hostPlatform) system;
-      modules = [(
+  nixos =
+    configuration:
+      let
+        c = import (pkgs.path + "/nixos/lib/eval-config.nix") {
+              inherit (pkgs.stdenv.hostPlatform) system;
+              modules =
+                [(
                   { lib, ... }: {
                     config.nixpkgs.pkgs = lib.mkDefault pkgs;
                   }
@@ -23983,7 +24011,9 @@ in
                   then configuration
                   else [configuration]
                 );
-    }).config.system.build;
+            };
+      in
+        c.config.system.build // c;
 
 
   /*
@@ -24107,6 +24137,8 @@ in
 
   nixos-container = callPackage ../tools/virtualization/nixos-container { };
 
+  nixos-generators = callPackage ../tools/nix/nixos-generators { };
+
   norwester-font = callPackage ../data/fonts/norwester  {};
 
   nut = callPackage ../applications/misc/nut { };
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 859a60f4b1aec..5565162328c62 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -1239,7 +1239,9 @@ in {
 
   unifi = callPackage ../development/python-modules/unifi { };
 
-  uvloop = callPackage ../development/python-modules/uvloop { };
+  uvloop = callPackage ../development/python-modules/uvloop {
+    inherit (pkgs.darwin.apple_sdk.frameworks) ApplicationServices CoreServices;
+  };
 
   pyunifi = callPackage ../development/python-modules/pyunifi { };
 
@@ -2059,6 +2061,8 @@ in {
 
   pytest-raisesregexp = callPackage ../development/python-modules/pytest-raisesregexp { };
 
+  pytest-random-order = callPackage ../development/python-modules/pytest-random-order { };
+
   pytest-repeat = callPackage ../development/python-modules/pytest-repeat { };
 
   pytestrunner = callPackage ../development/python-modules/pytestrunner { };
@@ -2338,16 +2342,14 @@ in {
 
   future-fstrings = callPackage ../development/python-modules/future-fstrings { };
 
-  gateone = callPackage ../development/python-modules/gateone { };
+  fx2 = callPackage ../development/python-modules/fx2 { };
 
-  # TODO: Remove after 19.03 is branched off:
-  gcutil = throw ''
-    pythonPackages.gcutil is deprecated and can be replaced with "gcloud
-    compute" from the package google-cloud-sdk.
-  '';
+  gateone = callPackage ../development/python-modules/gateone { };
 
   GeoIP = callPackage ../development/python-modules/GeoIP { };
 
+  glasgow = callPackage ../development/python-modules/glasgow { };
+
   gmpy = callPackage ../development/python-modules/gmpy { };
 
   gmpy2 = callPackage ../development/python-modules/gmpy2 { };
@@ -2578,6 +2580,10 @@ in {
 
   Nikola = callPackage ../development/python-modules/Nikola { };
 
+  nmigen = callPackage ../development/python-modules/nmigen { };
+
+  nmigen-boards = callPackage ../development/python-modules/nmigen-boards { };
+
   nxt-python = callPackage ../development/python-modules/nxt-python { };
 
   odfpy = callPackage ../development/python-modules/odfpy { };