summary refs log tree commit diff
diff options
context:
space:
mode:
authorFranz Pletz <fpletz@fnordicwalking.de>2016-10-11 18:33:08 +0200
committerFranz Pletz <fpletz@fnordicwalking.de>2016-10-11 18:33:17 +0200
commit14df9ad4969f45e7c6d787b9da162da665618f9a (patch)
treef6904210083b6c3a491f3785e3d75c614078a1bf
parentf9e025429047c3e81b117712974e8c78eea871e7 (diff)
parent733c706c91a83698ddd6c050dddf1d814bbd60bc (diff)
downloadnixlib-14df9ad4969f45e7c6d787b9da162da665618f9a.tar
nixlib-14df9ad4969f45e7c6d787b9da162da665618f9a.tar.gz
nixlib-14df9ad4969f45e7c6d787b9da162da665618f9a.tar.bz2
nixlib-14df9ad4969f45e7c6d787b9da162da665618f9a.tar.lz
nixlib-14df9ad4969f45e7c6d787b9da162da665618f9a.tar.xz
nixlib-14df9ad4969f45e7c6d787b9da162da665618f9a.tar.zst
nixlib-14df9ad4969f45e7c6d787b9da162da665618f9a.zip
Merge remote-tracking branch 'origin/master' into staging
-rw-r--r--doc/stdenv.xml2
-rw-r--r--lib/licenses.nix5
-rw-r--r--lib/maintainers.nix6
-rw-r--r--lib/trivial.nix3
-rw-r--r--nixos/doc/manual/development/development.xml2
-rwxr-xr-xnixos/doc/manual/development/releases.xml241
-rw-r--r--nixos/doc/manual/development/writing-documentation.xml147
-rw-r--r--nixos/doc/manual/release-notes/rl-1609.xml7
-rw-r--r--nixos/doc/manual/release-notes/rl-1703.xml9
-rw-r--r--nixos/modules/config/debug-info.nix2
-rw-r--r--nixos/modules/config/timezone.nix5
-rw-r--r--nixos/modules/module-list.nix4
-rw-r--r--nixos/modules/security/ca.nix28
-rw-r--r--nixos/modules/services/databases/mysql.nix3
-rw-r--r--nixos/modules/services/editors/emacs.xml56
-rw-r--r--nixos/modules/services/monitoring/prometheus/default.nix4
-rw-r--r--nixos/modules/services/networking/dhcpd.nix9
-rw-r--r--nixos/modules/services/networking/firewall.nix13
-rw-r--r--nixos/modules/services/networking/kippo.nix6
-rw-r--r--nixos/modules/services/networking/smokeping.nix103
-rw-r--r--nixos/modules/services/networking/wireguard.nix225
-rw-r--r--nixos/modules/services/torrent/deluge.nix57
-rw-r--r--nixos/modules/services/web-apps/nixbot.nix149
-rw-r--r--nixos/modules/services/web-servers/nginx/default.nix3
-rw-r--r--nixos/modules/services/web-servers/phpfpm/default.nix2
-rw-r--r--nixos/modules/services/x11/desktop-managers/default.nix2
-rw-r--r--nixos/modules/services/x11/desktop-managers/lxqt.nix81
-rw-r--r--nixos/modules/services/x11/display-managers/sddm.nix2
-rw-r--r--nixos/modules/services/x11/urxvtd.nix49
-rw-r--r--nixos/modules/services/x11/xserver.nix4
-rw-r--r--nixos/modules/system/activation/activation-script.nix1
-rw-r--r--nixos/modules/system/boot/systemd-nspawn.nix121
-rw-r--r--nixos/modules/tasks/network-interfaces-scripted.nix33
-rw-r--r--nixos/modules/tasks/network-interfaces.nix13
-rw-r--r--nixos/modules/virtualisation/containers.nix2
-rw-r--r--nixos/release.nix1
-rw-r--r--nixos/tests/boot-stage1.nix2
-rw-r--r--nixos/tests/containers-physical_interfaces.nix133
-rw-r--r--nixos/tests/smokeping.nix4
-rw-r--r--pkgs/applications/audio/ardour/ardour4.nix86
-rw-r--r--pkgs/applications/audio/ardour/default.nix27
-rw-r--r--pkgs/applications/audio/openmpt123/default.nix23
-rw-r--r--pkgs/applications/audio/ponymix/default.nix17
-rw-r--r--pkgs/applications/audio/uade123/default.nix20
-rw-r--r--pkgs/applications/editors/emacs-modes/proofgeneral/4.2.nix54
-rw-r--r--pkgs/applications/editors/emacs-modes/proofgeneral/4.4.nix (renamed from pkgs/applications/editors/emacs-modes/proofgeneral/4.3pre.nix)44
-rw-r--r--pkgs/applications/editors/emacs/default.nix21
-rw-r--r--pkgs/applications/editors/emacs/site-start.el24
-rw-r--r--pkgs/applications/editors/idea/default.nix8
-rw-r--r--pkgs/applications/graphics/rawtherapee/ReleaseInfo.cmake6
-rw-r--r--pkgs/applications/graphics/rawtherapee/default.nix4
-rw-r--r--pkgs/applications/graphics/rawtherapee/dev.nix6
-rw-r--r--pkgs/applications/graphics/rawtherapee/fix-glibmm-output.patch23
-rw-r--r--pkgs/applications/misc/electrum-dash/default.nix2
-rw-r--r--pkgs/applications/misc/electrum/default.nix22
-rw-r--r--pkgs/applications/misc/fehlstart/default.nix2
-rw-r--r--pkgs/applications/misc/get_iplayer/default.nix31
-rw-r--r--pkgs/applications/misc/octoprint/default.nix39
-rw-r--r--pkgs/applications/misc/pcmanfm-qt/default.nix60
-rw-r--r--pkgs/applications/misc/qtpass/default.nix12
-rw-r--r--pkgs/applications/misc/styx/default.nix42
-rw-r--r--pkgs/applications/misc/tasksh/default.nix6
-rw-r--r--pkgs/applications/networking/browsers/chromium/upstream-info.nix18
-rw-r--r--pkgs/applications/networking/browsers/firefox/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix4
-rw-r--r--pkgs/applications/networking/cluster/kops/default.nix31
-rw-r--r--pkgs/applications/networking/dropbox/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/slack/default.nix4
-rw-r--r--pkgs/applications/networking/mailreaders/mutt/default.nix4
-rw-r--r--pkgs/applications/networking/syncthing/default.nix4
-rw-r--r--pkgs/applications/office/scribus/default.nix4
-rw-r--r--pkgs/applications/science/logic/coq/default.nix20
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-extras/default.nix4
-rw-r--r--pkgs/applications/version-management/yadm/default.nix2
-rw-r--r--pkgs/applications/video/handbrake/default.nix6
-rw-r--r--pkgs/applications/video/shotcut/default.nix4
-rw-r--r--pkgs/applications/window-managers/lemonbar/default.nix37
-rw-r--r--pkgs/applications/window-managers/lemonbar/xft.nix37
-rw-r--r--pkgs/build-support/build-fhs-userenv/env.nix1
-rw-r--r--pkgs/build-support/cc-wrapper/default.nix15
-rw-r--r--pkgs/build-support/emacs/buffer.nix48
-rw-r--r--pkgs/build-support/emacs/wrapper.nix3
-rw-r--r--pkgs/build-support/fetchdarcs/default.nix3
-rw-r--r--pkgs/build-support/fetchegg/default.nix3
-rw-r--r--pkgs/build-support/fetchfile/default.nix8
-rw-r--r--pkgs/build-support/fetchgit/default.nix3
-rw-r--r--pkgs/build-support/fetchhg/default.nix3
-rw-r--r--pkgs/build-support/fetchsvn/default.nix3
-rw-r--r--pkgs/build-support/fetchsvnssh/default.nix3
-rw-r--r--pkgs/build-support/fetchurl/default.nix3
-rw-r--r--pkgs/build-support/ocaml/default.nix4
-rw-r--r--pkgs/data/documentation/stdman/default.nix2
-rw-r--r--pkgs/data/documentation/zeal/default.nix5
-rw-r--r--pkgs/data/fonts/camingo-code/default.nix27
-rw-r--r--pkgs/data/fonts/input-fonts/default.nix46
-rw-r--r--pkgs/data/icons/maia-icon-theme/default.nix17
-rw-r--r--pkgs/data/misc/cacert/default.nix52
-rw-r--r--pkgs/desktops/gnome-3/3.20/core/epiphany/default.nix3
-rw-r--r--pkgs/desktops/lxqt/base/liblxqt/default.nix44
-rw-r--r--pkgs/desktops/lxqt/base/libqtxdg/default.nix25
-rw-r--r--pkgs/desktops/lxqt/base/libsysstat/default.nix25
-rw-r--r--pkgs/desktops/lxqt/core/libfm-qt/default.nix43
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-about/default.nix37
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-admin/default.nix40
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-common/default.nix42
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-config/default.nix47
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-globalkeys/default.nix38
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-l10n/default.nix37
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-notificationd/default.nix35
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-openssh-askpass/default.nix36
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-panel/default.nix53
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-policykit/default.nix37
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-powermanagement/default.nix38
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-qtplugin/default.nix39
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-runner/default.nix39
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-session/default.nix38
-rw-r--r--pkgs/desktops/lxqt/core/lxqt-sudo/default.nix37
-rw-r--r--pkgs/desktops/lxqt/core/pavucontrol-qt/default.nix39
-rw-r--r--pkgs/desktops/lxqt/core/pcmanfm-qt/default.nix43
-rw-r--r--pkgs/desktops/lxqt/core/qtermwidget/default.nix26
-rw-r--r--pkgs/desktops/lxqt/default.nix66
-rw-r--r--pkgs/desktops/lxqt/optional/compton-conf/default.nix37
-rw-r--r--pkgs/desktops/lxqt/optional/lximage-qt/default.nix43
-rw-r--r--pkgs/desktops/lxqt/optional/obconf-qt/default.nix41
-rw-r--r--pkgs/desktops/lxqt/optional/qps/default.nix45
-rw-r--r--pkgs/desktops/lxqt/optional/qterminal/default.nix37
-rw-r--r--pkgs/development/arduino/arduino-core/default.nix11
-rw-r--r--pkgs/development/arduino/arduino-core/downloads.nix122
-rw-r--r--pkgs/development/compilers/kotlin/default.nix4
-rw-r--r--pkgs/development/compilers/llvm/3.8/clang/default.nix5
-rw-r--r--pkgs/development/compilers/mezzo/default.nix4
-rw-r--r--pkgs/development/compilers/obliv-c/default.nix33
-rw-r--r--pkgs/development/compilers/openjdk/8.nix52
-rw-r--r--pkgs/development/compilers/openjdk/swing-use-gtk.patch26
-rw-r--r--pkgs/development/compilers/pakcs/adjust-buildsystem.patch21
-rw-r--r--pkgs/development/compilers/pakcs/default.nix156
-rw-r--r--pkgs/development/compilers/rust/bootstrap.nix10
-rw-r--r--pkgs/development/compilers/rust/default.nix14
-rw-r--r--pkgs/development/compilers/rust/rustc.nix3
-rw-r--r--pkgs/development/haskell-modules/configuration-common.nix13
-rw-r--r--pkgs/development/haskell-modules/configuration-ghc-7.10.x.nix6
-rw-r--r--pkgs/development/haskell-modules/default.nix13
-rw-r--r--pkgs/development/haskell-modules/generic-builder.nix5
-rw-r--r--pkgs/development/interpreters/eff/default.nix4
-rw-r--r--pkgs/development/interpreters/php/default.nix2
-rw-r--r--pkgs/development/libraries/accountsservice/Add-nixbld-to-user-blacklist.patch27
-rw-r--r--pkgs/development/libraries/accountsservice/default.nix5
-rw-r--r--pkgs/development/libraries/c-ares/default.nix4
-rw-r--r--pkgs/development/libraries/capstone/default.nix7
-rw-r--r--pkgs/development/libraries/cpp-netlib/default.nix5
-rw-r--r--pkgs/development/libraries/gpgme/default.nix3
-rw-r--r--pkgs/development/libraries/jansson/default.nix4
-rw-r--r--pkgs/development/libraries/jasper/default.nix32
-rw-r--r--pkgs/development/libraries/libcaca/default.nix5
-rw-r--r--pkgs/development/libraries/libgee/0.8.nix27
-rw-r--r--pkgs/development/libraries/libmbim/default.nix6
-rw-r--r--pkgs/development/libraries/libnfnetlink/default.nix2
-rw-r--r--pkgs/development/libraries/libqmi/default.nix6
-rw-r--r--pkgs/development/libraries/libunistring/default.nix2
-rw-r--r--pkgs/development/libraries/openjpeg/2.1.nix6
-rw-r--r--pkgs/development/libraries/pcl/default.nix6
-rw-r--r--pkgs/development/libraries/quickder/default.nix38
-rw-r--r--pkgs/development/libraries/uri/default.nix36
-rw-r--r--pkgs/development/libraries/webkitgtk/2.14.nix2
-rw-r--r--pkgs/development/ocaml-modules/ansiterminal/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/base64/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/batteries/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/bolt/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/cil/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/cmdliner/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/containers/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/cryptokit/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/csv/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/dolog/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/enumerate/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/erm_xml/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/erm_xmpp/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/expat/default.nix3
-rw-r--r--pkgs/development/ocaml-modules/fileutils/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/fix/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/gapi-ocaml/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/gen/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/gg/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/iso8601/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx-variants-conv.nix4
-rw-r--r--pkgs/development/ocaml-modules/jsonm/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/lambda-term/1.6.nix4
-rw-r--r--pkgs/development/ocaml-modules/lambda-term/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/llvm/default.nix2
-rw-r--r--pkgs/development/ocaml-modules/lwt/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/macaque/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/magic-mime/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/markup/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/menhir/default.nix2
-rw-r--r--pkgs/development/ocaml-modules/menhir/generic.nix4
-rw-r--r--pkgs/development/ocaml-modules/ocaml-cairo2/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/ocaml-text/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/ocamlnet/default.nix6
-rw-r--r--pkgs/development/ocaml-modules/ocplib-endian/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/odn/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/optcomp/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/otfm/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/ounit/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/pgocaml/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/pprint/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/qcheck/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/qtest/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/re/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/react/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/reactivedata/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/safepass/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/sequence/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/sqlite3/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/sqlite3EZ/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/stringext/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/topkg/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/tsdl/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/tyxml/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/ulex/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/uucd/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/uucp/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/uuidm/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/uunf/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/uuseg/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/uutf/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/xmlm/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/zed/default.nix4
-rw-r--r--pkgs/development/python-modules/matplotlib/default.nix4
-rw-r--r--pkgs/development/tools/asn2quickder/default.nix36
-rw-r--r--pkgs/development/tools/build-managers/bazel/default.nix91
-rw-r--r--pkgs/development/tools/build-managers/bazel/java_stub_template.patch16
-rw-r--r--pkgs/development/tools/build-managers/buildbot/default.nix22
-rw-r--r--pkgs/development/tools/build-managers/buildbot/plugins.nix28
-rw-r--r--pkgs/development/tools/build-managers/buildbot/worker.nix10
-rw-r--r--pkgs/development/tools/build-managers/meson/default.nix5
-rw-r--r--pkgs/development/tools/hexio/default.nix36
-rw-r--r--pkgs/development/tools/mdk/default.nix2
-rw-r--r--pkgs/development/tools/misc/gdb/default.nix4
-rw-r--r--pkgs/development/tools/misc/lsof/default.nix15
-rw-r--r--pkgs/development/tools/misc/lsof/dfile.patch18
-rw-r--r--pkgs/development/tools/nimble/default.nix10
-rw-r--r--pkgs/development/tools/ocaml/camlidl/default.nix4
-rw-r--r--pkgs/development/tools/ocaml/camlp4/4_03.nix42
-rw-r--r--pkgs/development/tools/ocaml/camlp4/default.nix21
-rw-r--r--pkgs/development/tools/ocaml/cppo/default.nix4
-rw-r--r--pkgs/development/tools/ocaml/oasis/0.4.6.nix7
-rw-r--r--pkgs/development/tools/ocaml/oasis/default.nix7
-rw-r--r--pkgs/development/tools/ocaml/ocamlify/default.nix4
-rw-r--r--pkgs/development/tools/ocaml/ocamlmod/default.nix4
-rw-r--r--pkgs/development/tools/ocaml/utop/default.nix6
-rw-r--r--pkgs/development/tools/simavr/default.nix35
-rw-r--r--pkgs/development/tools/vagrant/default.nix21
-rw-r--r--pkgs/development/tools/valadoc/default.nix24
-rw-r--r--pkgs/games/anki/default.nix4
-rw-r--r--pkgs/games/crafty/default.nix660
-rw-r--r--pkgs/games/crafty/malloc.patch11
-rw-r--r--pkgs/games/crafty/strcpy.patch21
-rw-r--r--pkgs/games/openclonk/default.nix41
-rw-r--r--pkgs/games/opentyrian/default.nix21
-rw-r--r--pkgs/misc/emulators/fs-uae/default.nix21
-rw-r--r--pkgs/misc/emulators/mgba/default.nix21
-rw-r--r--pkgs/misc/emulators/zsnes/default.nix39
-rw-r--r--pkgs/misc/themes/flat-plat/default.nix2
-rw-r--r--pkgs/misc/vim-plugins/default.nix11
-rw-r--r--pkgs/misc/vim-plugins/vim-plugin-names1
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/libiconv/default.nix11
-rw-r--r--pkgs/os-specific/linux/firmware/intel2200BGFirmware/default.nix2
-rw-r--r--pkgs/os-specific/linux/kernel/common-config.nix3
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.4.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.7.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.8.nix5
-rw-r--r--pkgs/os-specific/linux/kernel/linux-grsecurity.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/patches.nix6
-rw-r--r--pkgs/os-specific/linux/kernel/perf.nix4
-rw-r--r--pkgs/os-specific/linux/kmod/aggregator.nix4
-rw-r--r--pkgs/os-specific/linux/rtkit/default.nix9
-rw-r--r--pkgs/servers/dns/bind/default.nix11
-rw-r--r--pkgs/servers/kippo/default.nix40
-rw-r--r--pkgs/servers/nosql/cassandra/generic.nix10
-rw-r--r--pkgs/servers/nosql/influxdb/deps-1.0.0-beta3.nix155
-rw-r--r--pkgs/servers/nosql/influxdb/deps-1.0.2.nix164
-rw-r--r--pkgs/servers/nosql/influxdb/v1.nix4
-rw-r--r--pkgs/servers/unifi/default.nix4
-rw-r--r--pkgs/servers/web-apps/pump.io/composition.nix16
-rw-r--r--pkgs/servers/web-apps/pump.io/default.nix31
-rwxr-xr-xpkgs/servers/web-apps/pump.io/generate.sh29
-rw-r--r--pkgs/servers/web-apps/pump.io/node-packages.json43
-rw-r--r--pkgs/servers/web-apps/pump.io/node-packages.nix7122
-rw-r--r--pkgs/shells/oh-my-zsh/default.nix10
-rw-r--r--pkgs/shells/zsh-syntax-highlighting/default.nix2
-rw-r--r--pkgs/tools/backup/bup/default.nix10
-rw-r--r--pkgs/tools/backup/rdup/default.nix2
-rw-r--r--pkgs/tools/compression/lhasa/default.nix21
-rw-r--r--pkgs/tools/filesystems/afpfs-ng/default.nix24
-rw-r--r--pkgs/tools/filesystems/f2fs-tools/default.nix8
-rw-r--r--pkgs/tools/misc/geteltorito/default.nix10
-rw-r--r--pkgs/tools/misc/lf/default.nix31
-rw-r--r--pkgs/tools/misc/lf/deps.nix20
-rw-r--r--pkgs/tools/misc/nixbot/default.nix25
-rw-r--r--pkgs/tools/misc/svtplay-dl/default.nix4
-rw-r--r--pkgs/tools/misc/thin-provisioning-tools/default.nix25
-rw-r--r--pkgs/tools/misc/umlet/default.nix8
-rw-r--r--pkgs/tools/misc/vdirsyncer/default.nix9
-rw-r--r--pkgs/tools/misc/xtitle/default.nix6
-rw-r--r--pkgs/tools/networking/gmvault/default.nix6
-rw-r--r--pkgs/tools/networking/host/default.nix26
-rw-r--r--pkgs/tools/networking/httpstat/default.nix31
-rw-r--r--pkgs/tools/networking/modemmanager/default.nix10
-rw-r--r--pkgs/tools/networking/network-manager-applet/default.nix7
-rw-r--r--pkgs/tools/networking/network-manager/default.nix4
-rw-r--r--pkgs/tools/networking/network-manager/openconnect.nix5
-rw-r--r--pkgs/tools/networking/network-manager/openvpn.nix7
-rw-r--r--pkgs/tools/networking/network-manager/pptp.nix7
-rw-r--r--pkgs/tools/networking/network-manager/vpnc.nix7
-rw-r--r--pkgs/tools/networking/openvpn/default.nix5
-rw-r--r--pkgs/tools/networking/tinc/default.nix4
-rw-r--r--pkgs/tools/security/enpass/data.json12
-rw-r--r--pkgs/tools/security/enpass/default.nix106
-rw-r--r--pkgs/tools/security/enpass/update_script.py95
-rw-r--r--pkgs/tools/security/pgpdump/default.nix26
-rw-r--r--pkgs/tools/security/sslscan/default.nix11
-rw-r--r--pkgs/tools/security/sudolikeaboss/default.nix33
-rw-r--r--pkgs/tools/security/sudolikeaboss/deps.nix22
-rw-r--r--pkgs/tools/text/zimreader/default.nix49
-rw-r--r--pkgs/top-level/all-packages.nix94
-rw-r--r--pkgs/top-level/emacs-packages.nix24
-rw-r--r--pkgs/top-level/ocaml-packages.nix6
-rw-r--r--pkgs/top-level/python-packages.nix218
-rw-r--r--pkgs/top-level/release.nix5
329 files changed, 9821 insertions, 4870 deletions
diff --git a/doc/stdenv.xml b/doc/stdenv.xml
index 3da3dd8df96e..2e88d6b41548 100644
--- a/doc/stdenv.xml
+++ b/doc/stdenv.xml
@@ -27,7 +27,7 @@ stdenv.mkDerivation {
   name = "libfoo-1.2.3";
   src = fetchurl {
     url = http://example.org/libfoo-1.2.3.tar.bz2;
-    md5 = "e1ec107956b6ddcb0b8b0679367e9ac9";
+    sha256 = "0x2g1jqygyr5wiwg4ma1nd7w4ydpy82z9gkcv8vh2v8dn3y58v5m";
   };
 }</programlisting>
 
diff --git a/lib/licenses.nix b/lib/licenses.nix
index 9c93efa5b182..b62f4f0a5bb3 100644
--- a/lib/licenses.nix
+++ b/lib/licenses.nix
@@ -110,6 +110,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
     fullName = "Creative Commons Attribution Non Commercial Share Alike 4.0";
   };
 
+  cc-by-nd-30 = spdx {
+    spdxId = "CC-BY-ND-3.0";
+    fullName = "Creative Commons Attribution-No Derivative Works v3.00";
+  };
+
   cc-by-sa-25 = spdx {
     spdxId = "CC-BY-SA-2.5";
     fullName = "Creative Commons Attribution Share Alike 2.5";
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index d568d9a0dba5..253980f4f74b 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -169,6 +169,7 @@
   globin = "Robin Gloster <mail@glob.in>";
   gnidorah = "Alex Ivanov <yourbestfriend@opmbx.org>";
   goibhniu = "Cillian de Róiste <cillian.deroiste@gmail.com>";
+  goodrone = "Andrew Trachenko <goodrone@gmail.com>";
   Gonzih = "Max Gonzih <gonzih@gmail.com>";
   gpyh = "Yacine Hmito <yacine.hmito@gmail.com>";
   grahamc = "Graham Christensen <graham@grahamc.com>";
@@ -239,7 +240,7 @@
   lucas8 = "Luc Chabassier <luc.linux@mailoo.org>";
   ludo = "Ludovic Courtès <ludo@gnu.org>";
   luispedro = "Luis Pedro Coelho <luis@luispedro.org>";
-  lukasepple = "Lukas Epple <post@lukasepple.de>";
+  sternenseemann = "Lukas Epple <post@lukasepple.de>";
   lukego = "Luke Gorrie <luke@snabb.co>";
   lw = "Sergey Sofeychuk <lw@fmap.me>";
   madjar = "Georges Dubus <georges.dubus@compiletoi.net>";
@@ -272,6 +273,7 @@
   mingchuan = "Ming Chuan <ming@culpring.com>";
   mirdhyn = "Merlin Gaillard <mirdhyn@gmail.com>";
   mirrexagon = "Andrew Abbott <mirrexagon@mirrexagon.com>";
+  mlieberman85 = "Michael Lieberman <mlieberman85@gmail.com>";
   modulistic = "Pablo Costa <modulistic@gmail.com>";
   mog = "Matthew O'Gorman <mog-lists@rldn.net>";
   moosingin3space = "Nathan Moos <moosingin3space@gmail.com>";
@@ -334,6 +336,7 @@
   pmahoney = "Patrick Mahoney <pat@polycrystal.org>";
   pmiddend = "Philipp Middendorf <pmidden@secure.mailbox.org>";
   prikhi = "Pavan Rikhi <pavan.rikhi@gmail.com>";
+  primeos = "Michael Weiss <dev.primeos@gmail.com>";
   profpatsch = "Profpatsch <mail@profpatsch.de>";
   proglodyte = "Proglodyte <proglodyte23@gmail.com>";
   pshendry = "Paul Hendry <paul@pshendry.com>";
@@ -365,6 +368,7 @@
   roblabla = "Robin Lambertz <robinlambertz+dev@gmail.com>";
   roconnor = "Russell O'Connor <roconnor@theorem.ca>";
   romildo = "José Romildo Malaquias <malaquias@gmail.com>";
+  ronny = "Ronny Pfannschmidt <nixos@ronnypfannschmidt.de>";
   rszibele = "Richard Szibele <richard_szibele@hotmail.com>";
   rushmorem = "Rushmore Mushambi <rushmore@webenchanter.com>";
   rvl = "Rodney Lorrimar <dev+nix@rodney.id.au>";
diff --git a/lib/trivial.nix b/lib/trivial.nix
index 25ce35570fdf..3e606f0df48f 100644
--- a/lib/trivial.nix
+++ b/lib/trivial.nix
@@ -113,4 +113,7 @@ rec {
   */
   warn = msg: builtins.trace "WARNING: ${msg}";
   info = msg: builtins.trace "INFO: ${msg}";
+
+  fetchMD5warn = name: context : data : warn
+    "Deprecated use of MD5 hash in ${name} to fetch ${context}" data;
 }
diff --git a/nixos/doc/manual/development/development.xml b/nixos/doc/manual/development/development.xml
index caf72bc776a2..b0364b346577 100644
--- a/nixos/doc/manual/development/development.xml
+++ b/nixos/doc/manual/development/development.xml
@@ -14,9 +14,11 @@ NixOS.</para>
 <xi:include href="sources.xml" />
 <xi:include href="writing-modules.xml" />
 <xi:include href="building-parts.xml" />
+<xi:include href="writing-documentation.xml" />
 <xi:include href="building-nixos.xml" />
 <xi:include href="nixos-tests.xml" />
 <xi:include href="testing-installer.xml" />
 <xi:include href="reviewing-contributions.xml" />
+<xi:include href="releases.xml" />
 
 </part>
diff --git a/nixos/doc/manual/development/releases.xml b/nixos/doc/manual/development/releases.xml
new file mode 100755
index 000000000000..01c3dbc22f16
--- /dev/null
+++ b/nixos/doc/manual/development/releases.xml
@@ -0,0 +1,241 @@
+<chapter xmlns="http://docbook.org/ns/docbook"
+        xmlns:xlink="http://www.w3.org/1999/xlink"
+        xmlns:xi="http://www.w3.org/2001/XInclude"
+        version="5.0"
+        xml:id="ch-releases">
+
+<title>Releases</title>
+
+<section xml:id="release-process">
+  <title>Release process</title>
+
+  <para>
+    Going through an example of releasing NixOS 15.09:
+  </para>
+
+  <section xml:id="one-month-before-the-beta">
+    <title>One month before the beta</title>
+    <itemizedlist spacing="compact">
+      <listitem>
+        <para>
+          Send an email to nix-dev mailinglist as a warning about upcoming beta "feature freeze" in a month.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Discuss with Eelco Dolstra and the community (via IRC, ML) about what will reach the deadline.
+          Any issue or Pull Request targeting the release should have assigned milestone.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </section>
+  <section xml:id="at-beta-release-time">
+    <title>At beta release time</title>
+    <itemizedlist spacing="compact">
+      <listitem>
+        <para>
+          Rename <literal>rl-unstable.xml</literal> -&gt;
+          <literal>rl-1509.xml</literal>.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          <literal>git tag -a -m &quot;Release 15.09-beta&quot; 15.09-beta &amp;&amp; git push --tags</literal>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          From the master branch run <literal>git checkout -B release-15.09</literal>.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          <link xlink:href="https://github.com/NixOS/nixos-org-configurations/pull/18">
+            Make sure channel is created at http://nixos.org/channels/.
+          </link>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          <link xlink:href="https://github.com/NixOS/nixpkgs/settings/branches">
+            Lock the branch on github (so developers can’t force push)
+          </link>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          <link xlink:href="https://github.com/NixOS/nixpkgs/compare/bdf161ed8d21...6b63c4616790">bump
+          <literal>system.defaultChannel</literal> attribute in
+          <literal>nixos/modules/misc/version.nix</literal></link>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          <link xlink:href="https://github.com/NixOS/nixpkgs/commit/d6b08acd1ccac0d9d502c4b635e00b04d3387f06">update
+          <literal>versionSuffix</literal> in
+          <literal>nixos/release.nix</literal></link>, use
+          <literal>git log --format=%an|wc -l</literal> to get commit
+          count
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          <literal>echo -n &quot;16.03&quot; &gt; .version</literal> in
+          master.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          <link xlink:href="https://github.com/NixOS/nixpkgs/commit/b8a4095003e27659092892a4708bb3698231a842">pick
+          a new name for unstable branch.</link>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          <link xlink:href="https://github.com/NixOS/nixpkgs/issues/13559">Create
+            an issue for tracking Zero Hydra Failures progress. ZHF is an effort
+            to get build failures down to zero.</link>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Use https://lwn.net/Vulnerabilities/ and 
+          <link xlink:href="https://github.com/NixOS/nixpkgs/search?utf8=%E2%9C%93&amp;q=vulnerabilities&amp;type=Issues">triage vulnerabilities in an issue</link>.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Create two Hydra jobsets: release-15.09 and release-15.09-small with <literal>stableBranch</literal> set to false
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Edit changelog at
+          <literal>nixos/doc/manual/release-notes/rl-1509.xml</literal>
+          (double check desktop versions are noted)
+        </para>
+        <itemizedlist spacing="compact">
+          <listitem>
+            <para>
+              Get all new NixOS modules
+              <literal>git diff release-14.12..release-15.09 nixos/modules/module-list.nix|grep ^+</literal>
+            </para>
+          </listitem>
+          <listitem>
+            <para>
+              Note systemd, kernel, glibc and Nix upgrades.
+            </para>
+          </listitem>
+        </itemizedlist>
+      </listitem>
+    </itemizedlist>
+  </section>
+  <section xml:id="before-the-final-release">
+    <title>Before the final release</title>
+    <itemizedlist spacing="compact">
+      <listitem>
+        <para>
+          Release Nix (currently only Eelco Dolstra can do that).
+          <link xlink:href="https://github.com/NixOS/nixpkgs/commit/53710c752a85f00658882531bc90a23a3d1287e4">
+            Make sure fallback is updated.
+          </link>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          <link xlink:href="https://github.com/NixOS/nixpkgs/commit/40fd9ae3ac8048758abdcfc7d28a78b5f22fe97e">
+            Update README.md with new stable NixOS version information.
+          </link>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Change <literal>stableBranch</literal> to true and wait for channel to update.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </section>
+  <section xml:id="at-final-release-time">
+    <title>At final release time</title>
+    <itemizedlist spacing="compact">
+      <listitem>
+        <para>
+          <literal>git tag -s -a -m &quot;Release 15.09&quot; 15.09</literal>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Update http://nixos.org/nixos/download.html and http://nixos.org/nixos/manual in https://github.com/NixOS/nixos-org-configurations
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Get number of commits for the release:
+          <literal>git log release-14.04..release-14.12 --format=%an|wc -l</literal>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Commits by contributor:
+          <literal>git log release-14.04..release-14.12 --format=%an|sort|uniq -c|sort -rn</literal>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Send an email to nix-dev to announce the release with above information. Best to check how previous email was formulated
+          to see what needs to be included.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </section>
+</section>
+
+<section xml:id="release-schedule">
+  <title>Release schedule</title>
+
+  <informaltable>
+    <tgroup cols="2">
+      <colspec align="left" />
+      <colspec align="left" />
+      <thead>
+        <row>
+          <entry>
+            Date
+          </entry>
+          <entry>
+            Event
+          </entry>
+        </row>
+      </thead>
+      <tbody>
+        <row>
+          <entry>
+            2016-07-25
+          </entry>
+          <entry>
+            Send email to nix-dev about upcoming branch-off
+          </entry>
+        </row>
+        <row>
+          <entry>
+            2016-09-01
+          </entry>
+          <entry>
+            <literal>release-16.09</literal> branch and corresponding jobsets are created,
+            change freeze
+          </entry>
+        </row>
+        <row>
+          <entry>
+            2016-09-30
+          </entry>
+          <entry>
+            NixOS 16.09 released
+          </entry>
+        </row>
+      </tbody>
+    </tgroup>
+  </informaltable>
+</section>
+
+</chapter>
diff --git a/nixos/doc/manual/development/writing-documentation.xml b/nixos/doc/manual/development/writing-documentation.xml
new file mode 100644
index 000000000000..59a287717acb
--- /dev/null
+++ b/nixos/doc/manual/development/writing-documentation.xml
@@ -0,0 +1,147 @@
+<chapter xmlns="http://docbook.org/ns/docbook"
+        xmlns:xlink="http://www.w3.org/1999/xlink"
+        xmlns:xi="http://www.w3.org/2001/XInclude"
+        version="5.0"
+        xml:id="sec-writing-documentation">
+
+<title>Writing NixOS Documentation</title>
+
+<para>
+  As NixOS grows, so too does the need for a catalogue and explanation
+  of its extensive functionality. Collecting pertinent information
+  from disparate sources and presenting it in an accessible style
+  would be a worthy contribution to the project.
+</para>
+
+<section>
+<title>Building the Manual</title>
+<para>
+  The DocBook sources of the <xref linkend="book-nixos-manual"/> are in the
+  <link xlink:href="https://github.com/NixOS/nixpkgs/tree/master/nixos/doc/manual"><filename>nixos/doc/manual</filename></link>
+  subdirectory of the Nixpkgs repository. If you make modifications to
+  the manual, it's important to build it before committing. You can do
+  that as follows:
+
+  <screen>nix-build nixos/release.nix -A manual.x86_64-linux</screen>
+</para>
+
+<para>
+  When this command successfully finishes, it will tell you where the
+  manual got generated. The HTML will be accessible through the
+  <filename>result</filename> symlink at
+  <filename>./result/share/doc/nixos/index.html</filename>.
+</para>
+</section>
+
+<section>
+<title>Editing DocBook XML</title>
+
+<para>
+  For general information on how to write in DocBook, see
+  <link xlink:href="http://www.docbook.org/tdg5/en/html/docbook.html">
+    DocBook 5: The Definitive Guide</link>.
+</para>
+
+<para>
+  Emacs nXML Mode is very helpful for editing DocBook XML because it
+  validates the document as you write, and precisely locates
+  errors. To use it, see <xref linkend="sec-emacs-docbook-xml"/>.
+</para>
+
+<para>
+  <link xlink:href="http://pandoc.org">Pandoc</link> can generate
+  DocBook XML from a multitude of formats, which makes a good starting
+  point.
+
+  <example xml:id="ex-pandoc-xml-conv">
+    <title>Pandoc invocation to convert GitHub-Flavoured MarkDown to DocBook 5 XML</title>
+    <screen>pandoc -f markdown_github -t docbook5 docs.md -o my-section.md</screen>
+  </example>
+
+  Pandoc can also quickly convert a single
+  <filename>section.xml</filename> to HTML, which is helpful when
+  drafting.
+</para>
+
+<para>
+  Sometimes writing valid DocBook is simply too difficult. In this
+  case, submit your documentation updates in a <link
+  xlink:href="https://github.com/NixOS/nixpkgs/issues/new">GitHub
+  Issue</link> and someone will handle the conversion to XML for you.
+</para>
+</section>
+
+<section>
+<title>Creating a Topic</title>
+
+<para>
+ You can use an existing topic as a basis for the new topic or create a topic from scratch.
+</para>
+
+<para>
+Keep the following guidelines in mind when you create and add a topic:
+
+<itemizedlist>
+  <listitem><para>
+    The NixOS <link xlink:href="http://www.docbook.org/tdg5/en/html/book.html"><tag>book</tag></link>
+    element is in <filename>nixos/doc/manual/manual.xml</filename>.
+    It includes several
+    <link xlink:href="http://www.docbook.org/tdg5/en/html/book.html"><tag>part</tag>s</link>
+    which are in subdirectories.
+  </para></listitem>
+
+  <listitem><para>
+    Store the topic file in the same directory as the <tag>part</tag>
+    to which it belongs. If your topic is about configuring a NixOS
+    module, then the XML file can be stored alongside the module
+    definition <filename>nix</filename> file.
+  </para></listitem>
+
+  <listitem><para>
+    If you include multiple words in the file name, separate the words
+    with a dash. For example: <filename>ipv6-config.xml</filename>.
+  </para></listitem>
+
+  <listitem><para>
+    Make sure that the <tag>xml:id</tag> value is unique. You can use
+    abbreviations if the ID is too long. For example:
+    <varname>nixos-config</varname>.
+  </para></listitem>
+
+  <listitem><para>
+    Determine whether your topic is a chapter or a section. If you are
+    unsure, open an existing topic file and check whether the main
+    element is chapter or section.
+  </para></listitem>
+
+</itemizedlist>
+
+</para>
+</section>
+
+<section>
+<title>Adding a Topic to the Book</title>
+
+<para>
+  Open the parent XML file and add an <varname>xi:include</varname>
+  element to the list of chapters with the file name of the topic that
+  you created. If you created a <tag>section</tag>, you add the file to
+  the <tag>chapter</tag> file. If you created a <tag>chapter</tag>, you
+  add the file to the <tag>part</tag> file.
+</para>
+
+<para>
+  If the topic is about configuring a NixOS module, it can be
+  automatically included in the manual by using the
+  <varname>meta.doc</varname> attribute. See <xref
+  linkend="sec-meta-attributes"/> for an explanation.
+</para>
+
+</section>
+
+
+
+
+
+
+</chapter>
diff --git a/nixos/doc/manual/release-notes/rl-1609.xml b/nixos/doc/manual/release-notes/rl-1609.xml
index 56d08bf1c2d6..18b9a333e233 100644
--- a/nixos/doc/manual/release-notes/rl-1609.xml
+++ b/nixos/doc/manual/release-notes/rl-1609.xml
@@ -165,6 +165,13 @@ following incompatible changes:</para>
     </para>
   </listitem>
 
+  <listitem>
+    <para>PHP now scans for extra configuration .ini files in /etc/php.d
+    instead of /etc. This prevents accidentally loading non-PHP .ini files
+    that may be in /etc.
+    </para>
+  </listitem>
+
 </itemizedlist>
 
 
diff --git a/nixos/doc/manual/release-notes/rl-1703.xml b/nixos/doc/manual/release-notes/rl-1703.xml
index 9bc42edb49bc..c1107977db79 100644
--- a/nixos/doc/manual/release-notes/rl-1703.xml
+++ b/nixos/doc/manual/release-notes/rl-1703.xml
@@ -43,6 +43,15 @@ following incompatible changes:</para>
       <literal>radicale</literal>.
     </para>
   </listitem>
+
+  <listitem>
+    <para>
+      The Yama LSM is now enabled by default in the kernel,
+      which prevents ptracing non-child processes.
+      This means you will not be able to attach gdb to an existing process,
+      but will need to start that process from gdb (so it is a child).
+    </para>
+  </listitem>
 </itemizedlist>
 
 
diff --git a/nixos/modules/config/debug-info.nix b/nixos/modules/config/debug-info.nix
index 17cb862d2916..671a59f52f6d 100644
--- a/nixos/modules/config/debug-info.nix
+++ b/nixos/modules/config/debug-info.nix
@@ -20,7 +20,7 @@ with lib;
         <!-- FIXME: ugly, see #10721 -->
         <programlisting>
         nixpkgs.config.packageOverrides = pkgs: {
-          hello = overrideDerivation pkgs.hello (attrs: {
+          hello = pkgs.lib.overrideDerivation pkgs.hello (attrs: {
             outputs = attrs.outputs or ["out"] ++ ["debug"];
             buildInputs = attrs.buildInputs ++ [&lt;nixpkgs/pkgs/build-support/setup-hooks/separate-debug-info.sh>];
           });
diff --git a/nixos/modules/config/timezone.nix b/nixos/modules/config/timezone.nix
index b9844b4adade..39a45042c6cc 100644
--- a/nixos/modules/config/timezone.nix
+++ b/nixos/modules/config/timezone.nix
@@ -37,14 +37,15 @@ in
 
     environment.sessionVariables.TZDIR = "/etc/zoneinfo";
 
+    # This way services are restarted when tzdata changes.
     systemd.globalEnvironment.TZDIR = tzdir;
 
     environment.etc.localtime =
-      { source = "${tzdir}/${config.time.timeZone}";
+      { source = "/etc/zoneinfo/${config.time.timeZone}";
         mode = "direct-symlink";
       };
 
-    environment.etc.zoneinfo.source = "${pkgs.tzdata}/share/zoneinfo";
+    environment.etc.zoneinfo.source = tzdir;
 
   };
 
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index d1a786d8f629..26e5d625848d 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -437,6 +437,7 @@
   ./services/networking/wakeonlan.nix
   ./services/networking/websockify.nix
   ./services/networking/wicd.nix
+  ./services/networking/wireguard.nix
   ./services/networking/wpa_supplicant.nix
   ./services/networking/xinetd.nix
   ./services/networking/xl2tpd.nix
@@ -480,6 +481,7 @@
   ./services/ttys/gpm.nix
   ./services/ttys/kmscon.nix
   ./services/web-apps/mattermost.nix
+  ./services/web-apps/nixbot.nix
   ./services/web-apps/pump.io.nix
   ./services/web-apps/tt-rss.nix
   ./services/web-apps/selfoss.nix
@@ -515,6 +517,7 @@
   ./services/x11/hardware/synaptics.nix
   ./services/x11/hardware/wacom.nix
   ./services/x11/redshift.nix
+  ./services/x11/urxvtd.nix
   ./services/x11/window-managers/awesome.nix
   #./services/x11/window-managers/compiz.nix
   ./services/x11/window-managers/default.nix
@@ -557,6 +560,7 @@
   ./system/boot/stage-1.nix
   ./system/boot/stage-2.nix
   ./system/boot/systemd.nix
+  ./system/boot/systemd-nspawn.nix
   ./system/boot/timesyncd.nix
   ./system/boot/tmp.nix
   ./system/etc/etc.nix
diff --git a/nixos/modules/security/ca.nix b/nixos/modules/security/ca.nix
index 849530238e7e..67469be18b41 100644
--- a/nixos/modules/security/ca.nix
+++ b/nixos/modules/security/ca.nix
@@ -4,10 +4,16 @@ with lib;
 
 let
 
+  cfg = config.security.pki;
+
+  cacertPackage = pkgs.cacert.override {
+    blacklist = cfg.caCertificateBlacklist;
+  };
+
   caCertificates = pkgs.runCommand "ca-certificates.crt"
     { files =
-        config.security.pki.certificateFiles ++
-        [ (builtins.toFile "extra.crt" (concatStringsSep "\n" config.security.pki.certificates)) ];
+        cfg.certificateFiles ++
+        [ (builtins.toFile "extra.crt" (concatStringsSep "\n" cfg.certificates)) ];
      }
     ''
       cat $files > $out
@@ -52,11 +58,27 @@ in
       '';
     };
 
+    security.pki.caCertificateBlacklist = mkOption {
+      type = types.listOf types.str;
+      default = [];
+      example = [
+        "WoSign" "WoSign China"
+        "CA WoSign ECC Root"
+        "Certification Authority of WoSign G2"
+      ];
+      description = ''
+        A list of blacklisted CA certificate names that won't be imported from
+        the Mozilla Trust Store into
+        <filename>/etc/ssl/certs/ca-certificates.crt</filename>. Use the
+        names from that file.
+      '';
+    };
+
   };
 
   config = {
 
-    security.pki.certificateFiles = [ "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" ];
+    security.pki.certificateFiles = [ "${cacertPackage}/etc/ssl/certs/ca-bundle.crt" ];
 
     # NixOS canonical location + Debian/Ubuntu/Arch/Gentoo compatibility.
     environment.etc."ssl/certs/ca-certificates.crt".source = caCertificates;
diff --git a/nixos/modules/services/databases/mysql.nix b/nixos/modules/services/databases/mysql.nix
index e5e8a57f4b0e..1180531248f9 100644
--- a/nixos/modules/services/databases/mysql.nix
+++ b/nixos/modules/services/databases/mysql.nix
@@ -53,7 +53,8 @@ in
       package = mkOption {
         type = types.package;
         default = pkgs.mysql;
-        example = literalExample "pkgs.mysql";
+        defaultText = "pkgs.mysql";
+        example = literalExample "pkgs.mysql55";
         description = "
           Which MySQL derivation to use.
         ";
diff --git a/nixos/modules/services/editors/emacs.xml b/nixos/modules/services/editors/emacs.xml
index 544e4a1076f4..bcaa8b8df3d8 100644
--- a/nixos/modules/services/editors/emacs.xml
+++ b/nixos/modules/services/editors/emacs.xml
@@ -43,9 +43,10 @@
     <title>Installing <application>Emacs</application></title>
 
     <para>
-      Emacs can installed in the normal way for Nix (see <xref
-      linkend="sec-package-management" />). In addition, a NixOS
-      <emphasis>service</emphasis> can be enabled.
+      Emacs can be installed in the normal way for Nix (see
+      <xref linkend="sec-package-management" />).
+      In addition, a NixOS <emphasis>service</emphasis>
+      can be enabled.
     </para>
 
     <section>
@@ -564,6 +565,55 @@ services.emacs.install = true;
       &lt;RET&gt; nixos-rebuild &lt;RET&gt;.</literal>
     </para>
   </section>
+
+  <section xml:id="sec-emacs-docbook-xml">
+    <title>Editing DocBook 5 XML Documents</title>
+    <para>
+      Emacs includes <link
+      xlink:href="https://www.gnu.org/software/emacs/manual/html_node/nxml-mode/Introduction.html">nXML</link>,
+      a major-mode for validating and editing XML documents.
+      When editing DocBook 5.0 documents, such as
+      <link linkend="book-nixos-manual">this one</link>,
+      nXML needs to be configured with the relevant schema, which is
+      not included.
+    </para>
+
+    <para>
+      To install the DocBook 5.0 schemas, either add
+      <varname>pkgs.docbook5</varname> to
+      <varname>environment.systemPackages</varname> (<link
+      linkend="sec-declarative-package-mgmt">NixOS</link>), or run
+      <literal>nix-env -i pkgs.docbook5</literal>
+      (<link linkend="sec-ad-hoc-packages">Nix</link>).
+    </para>
+
+    <para>
+      Then customize the variable <varname>rng-schema-locating-files</varname> to include <filename>~/.emacs.d/schemas.xml</filename> and put the following text into that file:
+      <example xml:id="ex-emacs-docbook-xml">
+        <title>nXML Schema Configuration (<filename>~/.emacs.d/schemas.xml</filename>)</title>
+        <programlisting language="xml"><![CDATA[
+<?xml version="1.0"?>
+<!--
+  To let emacs find this file, evaluate:
+  (add-to-list 'rng-schema-locating-files "~/.emacs.d/schemas.xml")
+-->
+<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
+  <!--
+    Use this variation if pkgs.docbook5 is added to environment.systemPackages
+  -->
+  <namespace ns="http://docbook.org/ns/docbook"
+             uri="/run/current-system/sw/share/xml/docbook-5.0/rng/docbookxi.rnc"/>
+  <!--
+    Use this variation if installing schema with "nix-env -iA pkgs.docbook5".
+  <namespace ns="http://docbook.org/ns/docbook"
+             uri="../.nix-profile/share/xml/docbook-5.0/rng/docbookxi.rnc"/>
+  -->
+</locatingRules>
+]]></programlisting>
+    </example>
+  </para>
+
+  </section>
 </section>
 
 </chapter>
diff --git a/nixos/modules/services/monitoring/prometheus/default.nix b/nixos/modules/services/monitoring/prometheus/default.nix
index e6817ee227ab..82b97bd92f87 100644
--- a/nixos/modules/services/monitoring/prometheus/default.nix
+++ b/nixos/modules/services/monitoring/prometheus/default.nix
@@ -300,13 +300,14 @@ let
       };
       regex = mkOption {
         type = types.str;
+        default = "(.*)";
         description = ''
           Regular expression against which the extracted value is matched.
         '';
       };
       replacement = mkOption {
         type = types.str;
-        default = "";
+        default = "$1";
         description = ''
           Replacement value against which a regex replace is performed if the
           regular expression matches.
@@ -314,6 +315,7 @@ let
       };
       action = mkOption {
         type = types.enum ["replace" "keep" "drop"];
+        default = "replace";
         description = ''
           Action to perform based on regex matching.
         '';
diff --git a/nixos/modules/services/networking/dhcpd.nix b/nixos/modules/services/networking/dhcpd.nix
index 900df67b53aa..36b4c5d5c1ef 100644
--- a/nixos/modules/services/networking/dhcpd.nix
+++ b/nixos/modules/services/networking/dhcpd.nix
@@ -66,6 +66,14 @@ in
         ";
       };
 
+      extraFlags = mkOption {
+        default = "";
+        example = "-6";
+        description = "
+          Additional command line flags to be passed to the dhcpd daemon.
+        ";
+      };
+
       configFile = mkOption {
         default = null;
         description = "
@@ -138,6 +146,7 @@ in
           { ExecStart = "@${pkgs.dhcp}/sbin/dhcpd dhcpd"
               + " -pf /run/dhcpd/dhcpd.pid -cf ${configFile}"
               + " -lf ${stateDir}/dhcpd.leases -user dhcpd -group nogroup"
+              + " ${cfg.extraFlags}"
               + " ${toString cfg.interfaces}";
             Restart = "always";
             Type = "forking";
diff --git a/nixos/modules/services/networking/firewall.nix b/nixos/modules/services/networking/firewall.nix
index 942fcc03f59b..1c0ea5034df3 100644
--- a/nixos/modules/services/networking/firewall.nix
+++ b/nixos/modules/services/networking/firewall.nix
@@ -100,13 +100,13 @@ let
 
     # Perform a reverse-path test to refuse spoofers
     # For now, we just drop, as the raw table doesn't have a log-refuse yet
-    ${optionalString (kernelHasRPFilter && cfg.checkReversePath) ''
+    ${optionalString (kernelHasRPFilter && (cfg.checkReversePath != false)) ''
       # Clean up rpfilter rules
       ip46tables -t raw -D PREROUTING -j nixos-fw-rpfilter 2> /dev/null || true
       ip46tables -t raw -F nixos-fw-rpfilter 2> /dev/null || true
       ip46tables -t raw -N nixos-fw-rpfilter 2> /dev/null || true
 
-      ip46tables -t raw -A nixos-fw-rpfilter -m rpfilter -j RETURN
+      ip46tables -t raw -A nixos-fw-rpfilter -m rpfilter ${optionalString (cfg.checkReversePath == "loose") "--loose"} -j RETURN
 
       # Allows this host to act as a DHCPv4 server
       iptables -t raw -A nixos-fw-rpfilter -s 0.0.0.0 -d 255.255.255.255 -p udp --sport 68 --dport 67 -j RETURN
@@ -200,7 +200,7 @@ let
     # Clean up after added ruleset
     ip46tables -D INPUT -j nixos-fw 2>/dev/null || true
 
-    ${optionalString (kernelHasRPFilter && cfg.checkReversePath) ''
+    ${optionalString (kernelHasRPFilter && (cfg.checkReversePath != false)) ''
       ip46tables -t raw -D PREROUTING -j nixos-fw-rpfilter 2>/dev/null || true
     ''}
 
@@ -373,7 +373,7 @@ in
 
     networking.firewall.checkReversePath = mkOption {
       default = kernelHasRPFilter;
-      type = types.bool;
+      type = types.either types.bool (types.enum ["strict" "loose"]);
       description =
         ''
           Performs a reverse path filter test on a packet.
@@ -381,7 +381,8 @@ in
           that the packet arrived on, it is refused.
 
           If using asymmetric routing or other complicated routing,
-          disable this setting and setup your own counter-measures.
+          set this option to loose mode or disable it and setup your
+          own counter-measures.
 
           (needs kernel 3.3+)
         '';
@@ -482,7 +483,7 @@ in
       options nf_conntrack nf_conntrack_helper=0
     '';
 
-    assertions = [ { assertion = ! cfg.checkReversePath || kernelHasRPFilter;
+    assertions = [ { assertion = (cfg.checkReversePath != false) || kernelHasRPFilter;
                      message = "This kernel does not support rpfilter"; }
                    { assertion = cfg.autoLoadConntrackHelpers || kernelCanDisableHelpers;
                      message = "This kernel does not support disabling conntrack helpers"; }
diff --git a/nixos/modules/services/networking/kippo.nix b/nixos/modules/services/networking/kippo.nix
index 5f3efcd133a1..1e7f7437b8a1 100644
--- a/nixos/modules/services/networking/kippo.nix
+++ b/nixos/modules/services/networking/kippo.nix
@@ -54,7 +54,7 @@ rec {
   };
   config = mkIf cfg.enable {
     environment.systemPackages = with pkgs.pythonPackages; [
-      python twisted_11 pycrypto pyasn1 ];
+      python pkgs.kippo.twisted pycrypto pyasn1 ];
 
     environment.etc."kippo.cfg".text = ''
         # Automatically generated by NixOS.
@@ -84,7 +84,7 @@ rec {
       description = "Kippo Web Server";
       after = [ "network.target" ];
       wantedBy = [ "multi-user.target" ];
-      environment.PYTHONPATH = "${pkgs.kippo}/src/:${pkgs.pythonPackages.pycrypto}/lib/python2.7/site-packages/:${pkgs.pythonPackages.pyasn1}/lib/python2.7/site-packages/:${pkgs.pythonPackages.python}/lib/python2.7/site-packages/:${pkgs.pythonPackages.twisted_11}/lib/python2.7/site-packages/:.";
+      environment.PYTHONPATH = "${pkgs.kippo}/src/:${pkgs.pythonPackages.pycrypto}/lib/python2.7/site-packages/:${pkgs.pythonPackages.pyasn1}/lib/python2.7/site-packages/:${pkgs.pythonPackages.python}/lib/python2.7/site-packages/:${pkgs.kippo.twisted}/lib/python2.7/site-packages/:.";
       preStart = ''
         if [ ! -d ${cfg.varPath}/ ] ; then
             mkdir -p ${cfg.logPath}/tty
@@ -107,7 +107,7 @@ rec {
         fi
       '';
 
-      serviceConfig.ExecStart = "${pkgs.pythonPackages.twisted_11}/bin/twistd -y ${pkgs.kippo}/src/kippo.tac --syslog --rundir=${cfg.varPath}/ --pidfile=${cfg.pidPath}/kippo.pid --prefix=kippo -n";
+      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"; 
diff --git a/nixos/modules/services/networking/smokeping.nix b/nixos/modules/services/networking/smokeping.nix
index f7a5926dc64b..cc373ae892ac 100644
--- a/nixos/modules/services/networking/smokeping.nix
+++ b/nixos/modules/services/networking/smokeping.nix
@@ -6,31 +6,39 @@ let
   cfg = config.services.smokeping;
   smokepingHome = "/var/lib/smokeping";
   smokepingPidDir = "/run";
-  configFile = ''
-    *** General ***
-    owner = ${cfg.owner}
-    contact = ${cfg.ownerEmail}
-    mailhost = ${cfg.mailHost}
-    #sendmail = /var/setuid-wrappers/sendmail
-    imgcache = ${smokepingHome}/cache
-    imgurl   = http://${cfg.hostName}:${builtins.toString cfg.port}/cache
-    datadir  = ${smokepingHome}/data
-    piddir  = ${smokepingPidDir}
-    cgiurl   = http://${cfg.hostName}:${builtins.toString cfg.port}/smokeping.cgi
-    smokemail = ${cfg.smokeMailTemplate}
-    *** Presentation ***
-    template = ${cfg.presentationTemplate}
-    ${cfg.presentationConfig}
-    #*** Alerts ***
-    #${cfg.alertConfig}
-    *** Database ***
-    ${cfg.databaseConfig}
-    *** Probes ***
-    ${cfg.probeConfig}
-    *** Targets ***
-    ${cfg.targetConfig}
-    ${cfg.extraConfig}
-  '';
+  configFile =
+    if cfg.config == null
+      then
+        ''
+          *** General ***
+          owner = ${cfg.owner}
+          contact = ${cfg.ownerEmail}
+          ${lib.optionalString (cfg.mailHost != "") "mailhost = ${cfg.mailHost}"}
+          ${lib.optionalString (cfg.sendmail != null) "sendmail = ${cfg.sendmail}"}
+          imgcache = ${smokepingHome}/cache
+          imgurl   = http://${cfg.hostName}:${builtins.toString cfg.port}/cache
+          datadir  = ${smokepingHome}/data
+          pagedir = ${smokepingHome}/cache
+          piddir  = ${smokepingPidDir}
+          cgiurl   = http://${cfg.hostName}:${builtins.toString cfg.port}/smokeping.cgi
+          linkstyle = ${cfg.linkStyle}
+          smokemail = ${cfg.smokeMailTemplate}
+          *** Presentation ***
+          template = ${cfg.presentationTemplate}
+          ${cfg.presentationConfig}
+          *** Alerts ***
+          ${cfg.alertConfig}
+          *** Database ***
+          ${cfg.databaseConfig}
+          *** Probes ***
+          ${cfg.probeConfig}
+          *** Targets ***
+          ${cfg.targetConfig}
+          ${cfg.extraConfig}
+        ''
+      else
+        cfg.config;
+
   configPath = pkgs.writeText "smokeping.conf" configFile;
   cgiHome = pkgs.writeScript "smokeping.fcgi" ''
     #!${pkgs.bash}/bin/bash
@@ -59,8 +67,15 @@ in
       };
       mailHost = mkOption {
         type = types.string;
-        default = "127.0.0.1";
-        description = "Use this SMTP server rather than localhost";
+        default = "";
+        example = "localhost";
+        description = "Use this SMTP server to send alerts";
+      };
+      sendmail = mkOption {
+        type = types.nullOr types.path;
+        default = null;
+        example = "/var/setuid-wrappers/sendmail";
+        description = "Use this sendmail compatible script to deliver alerts";
       };
       smokeMailTemplate = mkOption {
         type = types.string;
@@ -71,6 +86,7 @@ in
       package = mkOption {
         type = types.package;
         default = pkgs.smokeping;
+        defaultText = "pkgs.smokeping";
         description = "Specify a custom smokeping package";
       };
       owner = mkOption {
@@ -85,6 +101,12 @@ in
         example = "somewhere.example.com";
         description = "DNS name for the urls generated in the cgi.";
       };
+      linkStyle = mkOption {
+        type = types.enum ["original" "absolute" "relative"];
+        default = "relative";
+        example = "absolute";
+        description = "DNS name for the urls generated in the cgi.";
+      };
       port = mkOption {
         type = types.int;
         default = 8081;
@@ -132,7 +154,10 @@ in
       };
       alertConfig = mkOption {
         type = types.string;
-        default = "";
+        default = ''
+          to = root@localhost
+          from = smokeping@localhost
+        '';
         example = literalExample ''
           to = alertee@address.somewhere
           from = smokealert@company.xy
@@ -223,12 +248,26 @@ in
         default = "";
         description = "Any additional customization not already included.";
       };
+      config = mkOption {
+        type = types.nullOr types.string;
+        default = null;
+        description = "Full smokeping config supplied by the user. Overrides " +
+          "and replaces any other configuration supplied.";
+      };
 
     };
 
   };
 
   config = mkIf cfg.enable {
+    assertions = [
+      {
+        assertion = !(cfg.sendmail != null && cfg.mailHost != "");
+        message = "services.smokeping: sendmail and Mailhost cannot both be enabled.";
+      }
+    ];
+    security.setuidPrograms = [ "fping" ];
+    environment.systemPackages = [ pkgs.fping ];
     users.extraUsers = singleton {
       name = cfg.user;
       isNormalUser = false;
@@ -243,9 +282,12 @@ in
       serviceConfig.PermissionsStartOnly = true;
       preStart = ''
         mkdir -m 0755 -p ${smokepingHome}/cache ${smokepingHome}/data
+        rm -f ${smokepingHome}/cropper
+        ln -s ${cfg.package}/htdocs/cropper ${smokepingHome}/cropper
         chown -R ${cfg.user} ${smokepingHome}
         cp ${cgiHome} ${smokepingHome}/smokeping.fcgi
         ${cfg.package}/bin/smokeping --check --config=${configPath}
+        ${cfg.package}/bin/smokeping --static --config=${configPath}
       '';
       script = ''${cfg.package}/bin/smokeping --config=${configPath} --nodaemon'';
     };
@@ -253,8 +295,9 @@ in
       wantedBy = [ "multi-user.target"];
       requires = [ "smokeping.service"];
       partOf = [ "smokeping.service"];
-      path = with pkgs; [ bash rrdtool smokeping ];
-      script = ''${pkgs.thttpd}/bin/thttpd -u ${cfg.user} -c "**.fcgi" -d ${smokepingHome} -p ${builtins.toString cfg.port} -D'';
+      path = with pkgs; [ bash rrdtool smokeping thttpd ];
+      script = ''thttpd -u ${cfg.user} -c "**.fcgi" -d ${smokepingHome} -p ${builtins.toString cfg.port} -D -nos'';
+      serviceConfig.Restart = "always";
     };
   };
 }
diff --git a/nixos/modules/services/networking/wireguard.nix b/nixos/modules/services/networking/wireguard.nix
new file mode 100644
index 000000000000..35918e42b402
--- /dev/null
+++ b/nixos/modules/services/networking/wireguard.nix
@@ -0,0 +1,225 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+  cfg = config.networking.wireguard;
+
+  kernel = config.boot.kernelPackages;
+
+  # interface options
+
+  interfaceOpts = { name, ... }: {
+
+    options = {
+
+      ips = mkOption {
+        example = [ "192.168.2.1/24" ];
+        default = [];
+        type = with types; listOf str;
+        description = "The IP addresses of the interface.";
+      };
+
+      privateKey = mkOption {
+        example = "yAnz5TF+lXXJte14tji3zlMNq+hd2rYUIgJBgB3fBmk=";
+        type = types.str;
+        description = "Base64 private key generated by wg genkey.";
+      };
+
+      presharedKey = mkOption {
+        default = null;
+        example = "rVXs/Ni9tu3oDBLS4hOyAUAa1qTWVA3loR8eL20os3I=";
+        type = with types; nullOr str;
+        description = ''base64 preshared key generated by wg genpsk. Optional,
+        and may be omitted. This option adds an additional layer of
+        symmetric-key cryptography to be mixed into the already existing
+        public-key  cryptography, for post-quantum resistance.'';
+      };
+
+      listenPort = mkOption {
+        default = null;
+        type = with types; nullOr int;
+        example = 51820;
+        description = ''16-bit port for listening. Optional; if not specified,
+        automatically generated based on interface name.'';
+      };
+
+      preSetup = mkOption {
+        example = literalExample [''
+          ${pkgs.iproute}/bin/ip netns add foo
+        ''];
+        default = [];
+        type = with types; listOf str;
+        description = ''A list of commands called at the start of the interface
+        setup.'';
+      };
+
+      postSetup = mkOption {
+        example = literalExample [''
+          ${pkgs.bash} -c 'printf "nameserver 10.200.100.1" | ${pkgs.openresolv}/bin/resolvconf -a wg0 -m 0'
+        ''];
+        default = [];
+        type = with types; listOf str;
+        description = "A list of commands called at the end of the interface setup.";
+      };
+
+      postShutdown = mkOption {
+        example = literalExample ["${pkgs.openresolv}/bin/resolvconf -d wg0"];
+        default = [];
+        type = with types; listOf str;
+        description = "A list of commands called after shutting down the interface.";
+      };
+
+      peers = mkOption {
+        default = [];
+        description = "Peers linked to the interface.";
+        type = with types; listOf (submodule peerOpts);
+      };
+
+    };
+
+  };
+
+  # peer options
+
+  peerOpts = {
+
+    options = {
+
+      publicKey = mkOption {
+        example = "xTIBA5rboUvnH4htodjb6e697QjLERt1NAB4mZqp8Dg=";
+        type = types.str;
+        description = "The base64 public key the peer.";
+      };
+
+      allowedIPs = mkOption {
+        example = [ "10.192.122.3/32" "10.192.124.1/24" ];
+        type = with types; listOf str;
+        description = ''List of IP (v4 or v6) addresses with CIDR masks from
+        which this peer is allowed to send incoming traffic and to which
+        outgoing traffic for this peer is directed. The catch-all 0.0.0.0/0 may
+        be specified for matching all IPv4 addresses, and ::/0 may be specified
+        for matching all IPv6 addresses.'';
+      };
+
+      endpoint = mkOption {
+        default = null;
+        example = "demo.wireguard.io:12913";
+        type = with types; nullOr str;
+        description = ''Endpoint IP or hostname of the peer, followed by a colon,
+        and then a port number of the peer.'';
+      };
+
+      persistentKeepalive = mkOption {
+        default = null;
+        type = with types; nullOr int;
+        example = 25;
+        description = ''This is optional and is by default off, because most
+        users will not need it. It represents, in seconds, between 1 and 65535
+        inclusive, how often to send an authenticated empty packet to the peer,
+        for the purpose of keeping a stateful firewall or NAT mapping valid
+        persistently. For example, if the interface very rarely sends traffic,
+        but it might at anytime receive traffic from a peer, and it is behind
+        NAT, the interface might benefit from having a persistent keepalive
+        interval of 25 seconds; however, most users will not need this.'';
+      };
+
+    };
+
+  };
+
+  generateConf = name: values: pkgs.writeText "wireguard-${name}.conf" ''
+    [Interface]
+    PrivateKey = ${values.privateKey}
+    ${optionalString (values.presharedKey != null) "PresharedKey = ${values.presharedKey}"}
+    ${optionalString (values.listenPort != null)   "ListenPort = ${toString values.listenPort}"}
+
+    ${concatStringsSep "\n\n" (map (peer: ''
+    [Peer]
+    PublicKey = ${peer.publicKey}
+    ${optionalString (peer.allowedIPs != []) "AllowedIPs = ${concatStringsSep ", " peer.allowedIPs}"}
+    ${optionalString (peer.endpoint != null) "Endpoint = ${peer.endpoint}"}
+    ${optionalString (peer.persistentKeepalive != null) "PersistentKeepalive = ${toString peer.persistentKeepalive}"}
+    '') values.peers)}
+  '';
+
+  ipCommand = "${pkgs.iproute}/bin/ip";
+  wgCommand = "${pkgs.wireguard}/bin/wg";
+
+  generateUnit = name: values:
+    nameValuePair "wireguard-${name}"
+      {
+        description = "WireGuard Tunnel - ${name}";
+        wantedBy = [ "ip-up.target" ];
+        serviceConfig = {
+          Type = "oneshot";
+          RemainAfterExit = true;
+          ExecStart = lib.flatten([
+            values.preSetup
+
+            "-${ipCommand} link del dev ${name}"
+            "${ipCommand} link add dev ${name} type wireguard"
+            "${wgCommand} setconf ${name} ${generateConf name values}"
+
+            (map (ip:
+            ''${ipCommand} address add ${ip} dev ${name}''
+            ) values.ips)
+
+            "${ipCommand} link set up dev ${name}"
+
+            (flatten (map (peer: (map (ip:
+            "${ipCommand} route add ${ip} dev ${name}"
+            ) peer.allowedIPs)) values.peers))
+
+            values.postSetup
+          ]);
+
+          ExecStop = [ ''${ipCommand} link del dev "${name}"'' ] ++ values.postShutdown;
+        };
+      };
+
+in
+
+{
+
+  ###### interface
+
+  options = {
+
+    networking.wireguard = {
+
+      interfaces = mkOption {
+        description = "Wireguard interfaces.";
+        default = {};
+        example = {
+          wg0 = {
+            ips = [ "192.168.20.4/24" ];
+            privateKey = "yAnz5TF+lXXJte14tji3zlMNq+hd2rYUIgJBgB3fBmk=";
+            peers = [
+              { allowedIPs = [ "192.168.20.1/32" ];
+                publicKey  = "xTIBA5rboUvnH4htodjb6e697QjLERt1NAB4mZqp8Dg=";
+                endpoint   = "demo.wireguard.io:12913"; }
+            ];
+          };
+        };
+        type = with types; attrsOf (submodule interfaceOpts);
+      };
+
+    };
+
+  };
+
+
+  ###### implementation
+
+  config = mkIf (cfg.interfaces != {}) {
+
+    boot.extraModulePackages = [ kernel.wireguard ];
+    environment.systemPackages = [ pkgs.wireguard ];
+
+    systemd.services = mapAttrs' generateUnit cfg.interfaces;
+
+  };
+
+}
diff --git a/nixos/modules/services/torrent/deluge.nix b/nixos/modules/services/torrent/deluge.nix
index becd57055d41..a9c08b66eb82 100644
--- a/nixos/modules/services/torrent/deluge.nix
+++ b/nixos/modules/services/torrent/deluge.nix
@@ -5,26 +5,36 @@ with lib;
 let
   cfg = config.services.deluge;
   cfg_web = config.services.deluge.web;
+  openFilesLimit = 4096;
+
 in {
   options = {
-    services.deluge = {
-      enable = mkOption {
-        default = false;
-        example = true;
-        description = ''
-          Start Deluge daemon.
-        ''; 
-      };  
-    };
+    services = {
+      deluge = {
+        enable = mkOption {
+          default = false;
+          example = true;
+          description = "Start the Deluge daemon";
+        };
+
+        openFilesLimit = mkOption {
+          default = openFilesLimit;
+          example = 8192;
+          description = ''
+            Number of files to allow deluged to open.
+          '';
+        };
+      };
 
-    services.deluge.web = {
-      enable = mkOption {
-        default = false;
-        example = true;
-        description = ''
-          Start Deluge Web daemon.
-        ''; 
-      };  
+      deluge.web = {
+        enable = mkOption {
+          default = false;
+          example = true;
+          description = ''
+            Start Deluge Web daemon.
+          '';
+        };
+      };
     };
   };
 
@@ -35,11 +45,14 @@ in {
       description = "Deluge BitTorrent Daemon";
       wantedBy = [ "multi-user.target" ];
       path = [ pkgs.pythonPackages.deluge ];
-      serviceConfig.ExecStart = "${pkgs.pythonPackages.deluge}/bin/deluged -d";
-      # To prevent "Quit & shutdown daemon" from working; we want systemd to manage it!
-      serviceConfig.Restart = "on-success";
-      serviceConfig.User = "deluge";
-      serviceConfig.Group = "deluge";
+      serviceConfig = {
+        ExecStart = "${pkgs.pythonPackages.deluge}/bin/deluged -d";
+        # To prevent "Quit & shutdown daemon" from working; we want systemd to manage it!
+        Restart = "on-success";
+        User = "deluge";
+        Group = "deluge";
+        LimitNOFILE = cfg.openFilesLimit;
+      };
     };
 
     systemd.services.delugeweb = mkIf cfg_web.enable {
diff --git a/nixos/modules/services/web-apps/nixbot.nix b/nixos/modules/services/web-apps/nixbot.nix
new file mode 100644
index 000000000000..0592d01bf369
--- /dev/null
+++ b/nixos/modules/services/web-apps/nixbot.nix
@@ -0,0 +1,149 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.services.nixbot;
+  pyramidIni = ''
+    ###
+    # app configuration
+    # http://docs.pylonsproject.org/projects/pyramid/en/1.7-branch/narr/environment.html
+    ###
+
+    [app:main]
+    use = egg:nixbot
+
+    nixbot.github_token = ${cfg.githubToken}
+    nixbot.bot_name = ${cfg.botName}
+    nixbot.repo = ${cfg.repo}
+    nixbot.pr_repo = ${cfg.prRepo}
+    nixbot.hydra_jobsets_repo = ${cfg.hydraJobsetsRepo}
+    nixbot.github_secret = justnotsorandom
+    nixbot.public_url = ${cfg.publicUrl}
+    nixbot.repo_dir = ${cfg.repoDir}
+
+    pyramid.reload_templates = false
+    pyramid.debug_authorization = false
+    pyramid.debug_notfound = false
+    pyramid.debug_routematch = false
+    pyramid.default_locale_name = en
+
+    # By default, the toolbar only appears for clients from IP addresses
+    # '127.0.0.1' and '::1'.
+    # debugtoolbar.hosts = 127.0.0.1 ::1
+
+    ###
+    # wsgi server configuration
+    ###
+
+    [server:main]
+    use = egg:waitress#main
+    host = 0.0.0.0
+    port = 6543
+
+    ###
+    # logging configuration
+    # http://docs.pylonsproject.org/projects/pyramid/en/1.7-branch/narr/logging.html
+    ###
+
+    [loggers]
+    keys = root, nixbot
+
+    [handlers]
+    keys = console
+
+    [formatters]
+    keys = generic
+
+    [logger_root]
+    level = INFO
+    handlers = console
+
+    [logger_nixbot]
+    level = INFO
+    handlers =
+    qualname = nixbot
+
+    [handler_console]
+    class = StreamHandler
+    args = (sys.stderr,)
+    level = NOTSET
+    formatter = generic
+
+    [formatter_generic]
+    format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s
+  '';
+in {
+  options = {
+    services.nixbot = {
+      enable = mkEnableOption "nixbot";
+
+      botName = mkOption {
+        type = types.str;
+        description = "The bot's github user account name.";
+        default = "nixbot";
+      };
+
+      githubToken = mkOption {
+        type = types.str;
+        description = "The bot's github user account token.";
+        example = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
+      };
+
+      repo = mkOption {
+        type = types.str;
+        description = "The github repository to check for PRs.";
+        example = "nixos/nixpkgs";
+      };
+
+      prRepo = mkOption {
+        type = types.str;
+        description = "The github repository to push the testing branches to.";
+        example = "nixos/nixpkgs-pr";
+      };
+
+      hydraJobsetsRepo = mkOption {
+        type = types.str;
+        description = "The github repository to push the hydra jobset definitions to.";
+        example = "nixos/hydra-jobsets";
+      };
+
+      publicUrl = mkOption {
+        type = types.str;
+        description = "The public URL the bot is reachable at (Github hook endpoint).";
+        example = "https://nixbot.nixos.org";
+      };
+
+      repoDir = mkOption {
+        type = types.path;
+        description = "The directory the repositories are stored in.";
+        default = "/var/lib/nixbot";
+      };
+    };
+  };
+
+  config = mkIf cfg.enable {
+    users.extraUsers.nixbot = {
+      createHome = true;
+      home = cfg.repoDir;
+    };
+
+    systemd.services.nixbot = let
+      env = pkgs.python3.buildEnv.override {
+        extraLibs = [ pkgs.nixbot ];
+      };
+    in {
+      after = [ "network.target" ];
+      wantedBy = [ "multi-user.target" ];
+      script = ''
+        ${env}/bin/pserve ${pkgs.writeText "production.ini" pyramidIni}
+      '';
+
+      serviceConfig = {
+        User = "nixbot";
+        Group = "nogroup";
+        PermissionsStartOnly = true;
+      };
+    };
+  };
+}
diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix
index 443bd8c10000..7b822619a2f0 100644
--- a/nixos/modules/services/web-servers/nginx/default.nix
+++ b/nixos/modules/services/web-servers/nginx/default.nix
@@ -394,6 +394,9 @@ in
         optionalAttrs vhostConfig.enableACME {
           webroot = vhostConfig.acmeRoot;
           extraDomains = genAttrs vhostConfig.serverAliases (alias: null);
+          postRun = ''
+            systemctl reload nginx
+          '';
         }
       ) virtualHosts
     );
diff --git a/nixos/modules/services/web-servers/phpfpm/default.nix b/nixos/modules/services/web-servers/phpfpm/default.nix
index 787eed1c0ca4..ed537e7122a2 100644
--- a/nixos/modules/services/web-servers/phpfpm/default.nix
+++ b/nixos/modules/services/web-servers/phpfpm/default.nix
@@ -128,8 +128,8 @@ in {
       serviceConfig = {
         Type = "notify";
         ExecStart = "${cfg.phpPackage}/bin/php-fpm -y ${cfgFile} -c ${phpIni}";
+        ExecReload = "${pkgs.coreutils}/bin/kill -USR2 $MAINPID";
       };
     };
-
   };
 }
diff --git a/nixos/modules/services/x11/desktop-managers/default.nix b/nixos/modules/services/x11/desktop-managers/default.nix
index 1ea7b5ccf16a..31412ae70142 100644
--- a/nixos/modules/services/x11/desktop-managers/default.nix
+++ b/nixos/modules/services/x11/desktop-managers/default.nix
@@ -19,7 +19,7 @@ in
   # E.g., if KDE is enabled, it supersedes xterm.
   imports = [
     ./none.nix ./xterm.nix ./xfce.nix ./kde4.nix ./kde5.nix
-    ./enlightenment.nix ./gnome3.nix ./kodi.nix
+    ./lxqt.nix ./enlightenment.nix ./gnome3.nix ./kodi.nix
   ];
 
   options = {
diff --git a/nixos/modules/services/x11/desktop-managers/lxqt.nix b/nixos/modules/services/x11/desktop-managers/lxqt.nix
new file mode 100644
index 000000000000..4241ec890dd7
--- /dev/null
+++ b/nixos/modules/services/x11/desktop-managers/lxqt.nix
@@ -0,0 +1,81 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+  xcfg = config.services.xserver;
+  cfg = xcfg.desktopManager.lxqt;
+
+in
+
+{
+  options = {
+
+    services.xserver.desktopManager.lxqt.enable = mkOption {
+      type = types.bool;
+      default = false;
+      description = "Enable the LXQt desktop manager";
+    };
+
+  };
+
+
+  config = mkIf (xcfg.enable && cfg.enable) {
+
+    services.xserver.desktopManager.session = singleton {
+      name = "lxqt";
+      start = ''
+        exec ${pkgs.lxqt.lxqt-common}/bin/startlxqt
+      '';
+    };
+
+    environment.systemPackages = [
+      pkgs.kde5.kwindowsystem # provides some QT5 plugins needed by lxqt-panel
+      pkgs.kde5.libkscreen # provides plugins for screen management software
+      pkgs.kde5.oxygen-icons5 # default icon theme
+      pkgs.libfm
+      pkgs.libfm-extra
+      pkgs.lxmenu-data
+      pkgs.lxqt.compton-conf
+      pkgs.lxqt.libfm-qt
+      pkgs.lxqt.liblxqt
+      pkgs.lxqt.libqtxdg
+      pkgs.lxqt.libsysstat
+      pkgs.lxqt.lximage-qt
+      pkgs.lxqt.lxqt-about
+      pkgs.lxqt.lxqt-admin
+      pkgs.lxqt.lxqt-common
+      pkgs.lxqt.lxqt-config
+      pkgs.lxqt.lxqt-globalkeys
+      pkgs.lxqt.lxqt-l10n
+      pkgs.lxqt.lxqt-notificationd
+      pkgs.lxqt.lxqt-openssh-askpass
+      pkgs.lxqt.lxqt-panel
+      pkgs.lxqt.lxqt-policykit
+      pkgs.lxqt.lxqt-powermanagement
+      pkgs.lxqt.lxqt-qtplugin
+      pkgs.lxqt.lxqt-runner
+      pkgs.lxqt.lxqt-session
+      pkgs.lxqt.lxqt-sudo
+      pkgs.lxqt.obconf-qt
+      pkgs.lxqt.pavucontrol-qt
+      pkgs.lxqt.pcmanfm-qt
+      pkgs.lxqt.qps
+      pkgs.lxqt.qterminal
+      pkgs.lxqt.qtermwidget
+      pkgs.menu-cache
+      pkgs.openbox # default window manager
+      pkgs.qt5.qtsvg # provides QT5 plugins for svg icons
+      pkgs.xscreensaver
+    ];
+
+    # Link some extra directories in /run/current-system/software/share
+    environment.pathsToLink = [
+      "/share/desktop-directories"
+      "/share/icons"
+      "/share/lxqt"
+    ];
+
+  };
+}
diff --git a/nixos/modules/services/x11/display-managers/sddm.nix b/nixos/modules/services/x11/display-managers/sddm.nix
index 4d2ddedca1ea..c79893e77aa6 100644
--- a/nixos/modules/services/x11/display-managers/sddm.nix
+++ b/nixos/modules/services/x11/display-managers/sddm.nix
@@ -14,7 +14,7 @@ let
   xserverWrapper = pkgs.writeScript "xserver-wrapper" ''
     #!/bin/sh
     ${concatMapStrings (n: "export ${n}=\"${getAttr n xEnv}\"\n") (attrNames xEnv)}
-    exec ${dmcfg.xserverBin} ${dmcfg.xserverArgs} "$@"
+    exec systemd-cat ${dmcfg.xserverBin} ${dmcfg.xserverArgs} "$@"
   '';
 
   Xsetup = pkgs.writeScript "Xsetup" ''
diff --git a/nixos/modules/services/x11/urxvtd.nix b/nixos/modules/services/x11/urxvtd.nix
new file mode 100644
index 000000000000..ab47f4547aea
--- /dev/null
+++ b/nixos/modules/services/x11/urxvtd.nix
@@ -0,0 +1,49 @@
+{ config, lib, pkgs, ... }:
+
+# maintainer: siddharthist
+
+with lib;
+
+let
+  cfg = config.services.urxvtd;
+in {
+
+  options.services.urxvtd.enable = mkOption {
+    type = types.bool;
+    default = false;
+    example = true;
+    description = ''
+      Enable urxvtd, the urxvt terminal daemon. To use urxvtd, run
+      "urxvtc".
+    '';
+  };
+
+  config = mkIf cfg.enable {
+    systemd.user = {
+      sockets.urxvtd = {
+        description = "socket for urxvtd, the urxvt terminal daemon";
+        after = [ "graphical.target" ];
+        wants = [ "graphical.target" ];
+        wantedBy = [ "sockets.target" ];
+        socketConfig = {
+          ListenStream = "%t/urxvtd-socket";
+        };
+      };
+
+      services.urxvtd = {
+        description = "urxvt terminal daemon";
+        serviceConfig = {
+          ExecStart = "${pkgs.rxvt_unicode-with-plugins}/bin/urxvtd -o";
+          Environment = "RXVT_SOCKET=%t/urxvtd-socket";
+          Restart = "on-failure";
+          RestartSec = "5s";
+        };
+      };
+
+    };
+
+    environment.systemPackages = [ pkgs.rxvt_unicode-with-plugins ];
+    environment.variables.RXVT_SOCKET = "/run/user/$(id -u)/urxvtd-socket";
+  };
+
+}
diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix
index ec2f3a4f8bb1..e34f0c216639 100644
--- a/nixos/modules/services/x11/xserver.nix
+++ b/nixos/modules/services/x11/xserver.nix
@@ -539,6 +539,10 @@ in
           Restart = "always";
           RestartSec = "200ms";
           SyslogIdentifier = "display-manager";
+          # Stop restarting if the display manager stops (crashes) 2 times
+          # in one minute. Starting X typically takes 3-4s.
+          StartLimitInterval = "30s";
+          StartLimitBurst = "3";
         };
       };
 
diff --git a/nixos/modules/system/activation/activation-script.nix b/nixos/modules/system/activation/activation-script.nix
index 4a16a6762935..dcf105eb7844 100644
--- a/nixos/modules/system/activation/activation-script.nix
+++ b/nixos/modules/system/activation/activation-script.nix
@@ -145,6 +145,7 @@ in
         ${pkgs.e2fsprogs}/bin/chattr -f -i /var/empty || true
         find /var/empty -mindepth 1 -delete
         chmod 0555 /var/empty
+        chown root:root /var/empty
         ${pkgs.e2fsprogs}/bin/chattr -f +i /var/empty || true
       '';
 
diff --git a/nixos/modules/system/boot/systemd-nspawn.nix b/nixos/modules/system/boot/systemd-nspawn.nix
new file mode 100644
index 000000000000..2527ab35719b
--- /dev/null
+++ b/nixos/modules/system/boot/systemd-nspawn.nix
@@ -0,0 +1,121 @@
+{ config, lib , pkgs, ...}:
+
+with lib;
+with import ./systemd-unit-options.nix { inherit config lib; };
+with import ./systemd-lib.nix { inherit config lib pkgs; };
+
+let
+  cfg = config.systemd.nspawn;
+  assertions = [
+    # boot = true -> processtwo != true
+  ];
+
+  checkExec = checkUnitConfig "Exec" [
+    (assertOnlyFields [
+      "Boot" "ProcessTwo" "Parameters" "Environment" "User" "WorkingDirectory"
+      "Capability" "DropCapability" "KillSignal" "Personality" "MachineId"
+      "PrivateUsers"
+    ])
+    (assertValueOneOf "Boot" boolValues)
+    (assertValueOneOf "ProcessTwo" boolValues)
+    (assertValueOneOf "PrivateUsers" (boolValues ++ [ "pick" ]))
+  ];
+
+  checkFiles = checkUnitConfig "Files" [
+    (assertOnlyFields [
+      "ReadOnly" "Volatile" "Bind" "BindReadOnly" "TemporaryFileSystems"
+      "PrivateUsersChown"
+    ])
+    (assertValueOneOf "ReadOnly" boolValues)
+    (assertValueOneOf "Volatile" (boolValues ++ [ "state" ]))
+    (assertValueOneOf "PrivateUsersChown" boolValues)
+  ];
+
+  checkNetwork = checkUnitConfig "Network" [
+    (assertOnlyFields [
+      "Private" "VirtualEthernet" "VirtualEthernetExtra" "Interface" "MACVLAN"
+      "IPVLAN" "Bridge" "Zone" "Port"
+    ])
+    (assertValueOneOf "Private" boolValues)
+    (assertValueOneOf "VirtualEthernet" boolValues)
+  ];
+
+  instanceOptions = {
+
+    execConfig = mkOption {
+      default = {};
+      example = { Parameters = "/bin/sh"; };
+      type = types.addCheck (types.attrsOf unitOption) checkExec;
+      description = ''
+        Each attribute in this set specifies an option in the
+        <literal>[Exec]</literal> section of this unit. See
+        <citerefentry><refentrytitle>systemd.nspawn</refentrytitle>
+        <manvolnum>5</manvolnum></citerefentry> for details.
+      '';
+    };
+
+    filesConfig = mkOption {
+      default = {};
+      example = { Bind = [ "/home/alice" ]; };
+      type = types.addCheck (types.attrsOf unitOption) checkFiles;
+      description = ''
+        Each attribute in this set specifies an option in the
+        <literal>[Files]</literal> section of this unit. See
+        <citerefentry><refentrytitle>systemd.nspawn</refentrytitle>
+        <manvolnum>5</manvolnum></citerefentry> for details.
+      '';
+    };
+
+    networkConfig = mkOption {
+      default = {};
+      example = { Private = false; };
+      type = types.addCheck (types.attrsOf unitOption) checkNetwork;
+      description = ''
+        Each attribute in this set specifies an option in the
+        <literal>[Network]</literal> section of this unit. See
+        <citerefentry><refentrytitle>systemd.nspawn</refentrytitle>
+        <manvolnum>5</manvolnum></citerefentry> for details.
+      '';
+    };
+
+  };
+
+  instanceToUnit = name: def: 
+    { text = ''
+      [Exec]
+      ${attrsToSection def.execConfig}
+
+      [Files]
+      ${attrsToSection def.filesConfig}
+
+      [Network]
+      ${attrsToSection def.networkConfig}
+    '';
+    };
+
+in {
+
+  options = {
+
+    systemd.nspawn = mkOption {
+      default = {};
+      type = types.attrsOf types.optionSet;
+      options = [ instanceOptions ];
+      description = "Definition of systemd-nspawn configurations.";
+    };
+
+  };
+
+  config =
+    let
+      units = mapAttrs' (n: v: nameValuePair "${n}.nspawn" (instanceToUnit n v)) cfg.instances;
+    in mkIf (cfg != {}) {
+
+      environment.etc."systemd/nspawn".source = generateUnits "nspawn" units [] [];
+
+      systemd.services."systemd-nspawn@" = {
+        wantedBy = [ "machine.target" ];
+      };
+  };
+
+}
diff --git a/nixos/modules/tasks/network-interfaces-scripted.nix b/nixos/modules/tasks/network-interfaces-scripted.nix
index 6a8f20bab5b6..89ee13d5cd97 100644
--- a/nixos/modules/tasks/network-interfaces-scripted.nix
+++ b/nixos/modules/tasks/network-interfaces-scripted.nix
@@ -46,6 +46,23 @@ in
     systemd.services =
       let
 
+        deviceDependency = dev:
+          if (config.boot.isContainer == false)
+          then
+            # Trust udev when not in the container
+            [ (subsystemDevice dev) ]
+          else
+            # When in the container, check whether the interface is built from other definitions
+            if (hasAttr dev cfg.bridges) ||
+               (hasAttr dev cfg.bonds) ||
+               (hasAttr dev cfg.macvlans) ||
+               (hasAttr dev cfg.sits) ||
+               (hasAttr dev cfg.vlans) ||
+               (hasAttr dev cfg.vswitches) ||
+               (hasAttr dev cfg.wlanInterfaces)
+            then [ "${dev}-netdev.service" ]
+            else [];
+
         networkLocalCommands = {
           after = [ "network-setup.service" ];
           bindsTo = [ "network-setup.service" ];
@@ -120,8 +137,8 @@ in
             # order before network-setup because the routes that are configured
             # there may need ip addresses configured
             before = [ "network-setup.service" ];
-            bindsTo = [ (subsystemDevice i.name) ];
-            after = [ (subsystemDevice i.name) "network-pre.target" ];
+            bindsTo = deviceDependency i.name;
+            after = [ "network-pre.target" ] ++ (deviceDependency i.name);
             serviceConfig.Type = "oneshot";
             serviceConfig.RemainAfterExit = true;
             path = [ pkgs.iproute ];
@@ -179,7 +196,7 @@ in
 
         createBridgeDevice = n: v: nameValuePair "${n}-netdev"
           (let
-            deps = map subsystemDevice v.interfaces;
+            deps = concatLists (map deviceDependency v.interfaces);
           in
           { description = "Bridge Interface ${n}";
             wantedBy = [ "network-setup.service" (subsystemDevice n) ];
@@ -220,7 +237,7 @@ in
 
         createVswitchDevice = n: v: nameValuePair "${n}-netdev"
           (let
-            deps = map subsystemDevice v.interfaces;
+            deps = concatLists (map deviceDependency v.interfaces);
             ofRules = pkgs.writeText "vswitch-${n}-openFlowRules" v.openFlowRules;
           in
           { description = "Open vSwitch Interface ${n}";
@@ -253,7 +270,7 @@ in
 
         createBondDevice = n: v: nameValuePair "${n}-netdev"
           (let
-            deps = map subsystemDevice v.interfaces;
+            deps = concatLists (map deviceDependency v.interfaces);
           in
           { description = "Bond Interface ${n}";
             wantedBy = [ "network-setup.service" (subsystemDevice n) ];
@@ -291,7 +308,7 @@ in
 
         createMacvlanDevice = n: v: nameValuePair "${n}-netdev"
           (let
-            deps = [ (subsystemDevice v.interface) ];
+            deps = deviceDependency v.interface;
           in
           { description = "Vlan Interface ${n}";
             wantedBy = [ "network-setup.service" (subsystemDevice n) ];
@@ -316,7 +333,7 @@ in
 
         createSitDevice = n: v: nameValuePair "${n}-netdev"
           (let
-            deps = optional (v.dev != null) (subsystemDevice v.dev);
+            deps = optional (v.dev != null) (deviceDependency v.dev);
           in
           { description = "6-to-4 Tunnel Interface ${n}";
             wantedBy = [ "network-setup.service" (subsystemDevice n) ];
@@ -344,7 +361,7 @@ in
 
         createVlanDevice = n: v: nameValuePair "${n}-netdev"
           (let
-            deps = [ (subsystemDevice v.interface) ];
+            deps = deviceDependency v.interface;
           in
           { description = "Vlan Interface ${n}";
             wantedBy = [ "network-setup.service" (subsystemDevice n) ];
diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix
index cac7e6b02eba..aae4dc5fdadf 100644
--- a/nixos/modules/tasks/network-interfaces.nix
+++ b/nixos/modules/tasks/network-interfaces.nix
@@ -310,9 +310,9 @@ in
         generate a random 32-bit ID using the following commands:
 
         <literal>cksum /etc/machine-id | while read c rest; do printf "%x" $c; done</literal>
-        
+
         (this derives it from the machine-id that systemd generates) or
-        
+
         <literal>head -c4 /dev/urandom | od -A none -t x4</literal>
       '';
     };
@@ -972,12 +972,17 @@ in
         '';
       };
     } // (listToAttrs (flip map interfaces (i:
+      let
+        deviceDependency = if config.boot.isContainer
+          then []
+          else [ (subsystemDevice i.name) ];
+      in
       nameValuePair "network-link-${i.name}"
       { description = "Link configuration of ${i.name}";
         wantedBy = [ "network-interfaces.target" ];
         before = [ "network-interfaces.target" ];
-        bindsTo = [ (subsystemDevice i.name) ];
-        after = [ (subsystemDevice i.name) "network-pre.target" ];
+        bindsTo = deviceDependency;
+        after = [ "network-pre.target" ] ++ deviceDependency;
         path = [ pkgs.iproute ];
         serviceConfig = {
           Type = "oneshot";
diff --git a/nixos/modules/virtualisation/containers.nix b/nixos/modules/virtualisation/containers.nix
index 5e1cfcdfc6fb..aa28a25be7ac 100644
--- a/nixos/modules/virtualisation/containers.nix
+++ b/nixos/modules/virtualisation/containers.nix
@@ -473,7 +473,7 @@ in
             };
 
             extraVeths = mkOption {
-              type = with types; attrsOf (submodule networkOptions);
+              type = with types; attrsOf (submodule { options = networkOptions; });
               default = {};
               description = ''
                 Extra veth-pairs to be created for the container
diff --git a/nixos/release.nix b/nixos/release.nix
index bff17da607f3..10c624afebc7 100644
--- a/nixos/release.nix
+++ b/nixos/release.nix
@@ -227,6 +227,7 @@ in rec {
   tests.containers-bridge = callTest tests/containers-bridge.nix {};
   tests.containers-imperative = callTest tests/containers-imperative.nix {};
   tests.containers-extra_veth = callTest tests/containers-extra_veth.nix {};
+  tests.containers-physical_interfaces = callTest tests/containers-physical_interfaces.nix {};
   tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; });
   tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };
   tests.ecryptfs = callTest tests/ecryptfs.nix {};
diff --git a/nixos/tests/boot-stage1.nix b/nixos/tests/boot-stage1.nix
index e9087edb5d57..50186525cf39 100644
--- a/nixos/tests/boot-stage1.nix
+++ b/nixos/tests/boot-stage1.nix
@@ -3,7 +3,7 @@ import ./make-test.nix ({ pkgs, ... }: {
 
   machine = { config, pkgs, lib, ... }: {
     boot.extraModulePackages = let
-      compileKernelModule = name: source: pkgs.runCommand name rec {
+      compileKernelModule = name: source: pkgs.runCommandCC name rec {
         inherit source;
         kdev = config.boot.kernelPackages.kernel.dev;
         kver = config.boot.kernelPackages.kernel.modDirVersion;
diff --git a/nixos/tests/containers-physical_interfaces.nix b/nixos/tests/containers-physical_interfaces.nix
new file mode 100644
index 000000000000..a3b0b29951bf
--- /dev/null
+++ b/nixos/tests/containers-physical_interfaces.nix
@@ -0,0 +1,133 @@
+
+import ./make-test.nix ({ pkgs, ...} : {
+  name = "containers-physical_interfaces";
+  meta = with pkgs.stdenv.lib.maintainers; {
+    maintainers = [ kampfschlaefer ];
+  };
+
+  nodes = {
+    server = { config, pkgs, ... }:
+      {
+        virtualisation.memorySize = 256;
+        virtualisation.vlans = [ 1 ];
+
+        containers.server = {
+          privateNetwork = true;
+          interfaces = [ "eth1" ];
+
+          config = {
+            networking.interfaces.eth1 = {
+              ip4 = [ { address = "10.10.0.1"; prefixLength = 24; } ];
+            };
+            networking.firewall.enable = false;
+          };
+        };
+      };
+    bridged = { config, pkgs, ... }: {
+      virtualisation.memorySize = 128;
+      virtualisation.vlans = [ 1 ];
+
+      containers.bridged = {
+        privateNetwork = true;
+        interfaces = [ "eth1" ];
+
+        config = {
+          networking.bridges.br0.interfaces = [ "eth1" ];
+          networking.interfaces.br0 = {
+            ip4 = [ { address = "10.10.0.2"; prefixLength = 24; } ];
+          };
+          networking.firewall.enable = false;
+        };
+      };
+    };
+
+    bonded = { config, pkgs, ... }: {
+      virtualisation.memorySize = 128;
+      virtualisation.vlans = [ 1 ];
+
+      containers.bonded = {
+        privateNetwork = true;
+        interfaces = [ "eth1" ];
+
+        config = {
+          networking.bonds.bond0 = {
+            interfaces = [ "eth1" ];
+            mode = "active-backup";
+          };
+          networking.interfaces.bond0 = {
+            ip4 = [ { address = "10.10.0.3"; prefixLength = 24; } ];
+          };
+          networking.firewall.enable = false;
+        };
+      };
+    };
+
+    bridgedbond = { config, pkgs, ... }: {
+      virtualisation.memorySize = 128;
+      virtualisation.vlans = [ 1 ];
+
+      containers.bridgedbond = {
+        privateNetwork = true;
+        interfaces = [ "eth1" ];
+
+        config = {
+          networking.bonds.bond0 = {
+            interfaces = [ "eth1" ];
+            mode = "active-backup";
+          };
+          networking.bridges.br0.interfaces = [ "bond0" ];
+          networking.interfaces.br0 = {
+            ip4 = [ { address = "10.10.0.4"; prefixLength = 24; } ];
+          };
+          networking.firewall.enable = false;
+        };
+      };
+    };
+  };
+
+  testScript = ''
+    startAll;
+
+    subtest "prepare server", sub {
+      $server->waitForUnit("default.target");
+      $server->succeed("ip link show dev eth1 >&2");
+    };
+
+    subtest "simple physical interface", sub {
+      $server->succeed("nixos-container start server");
+      $server->waitForUnit("container\@server");
+      $server->succeed("systemctl -M server list-dependencies network-addresses-eth1.service >&2");
+
+      # The other tests will ping this container on its ip. Here we just check
+      # that the device is present in the container.
+      $server->succeed("nixos-container run server -- ip a show dev eth1 >&2");
+    };
+
+    subtest "physical device in bridge in container", sub {
+      $bridged->waitForUnit("default.target");
+      $bridged->succeed("nixos-container start bridged");
+      $bridged->waitForUnit("container\@bridged");
+      $bridged->succeed("systemctl -M bridged list-dependencies network-addresses-br0.service >&2");
+      $bridged->succeed("systemctl -M bridged status -n 30 -l network-addresses-br0.service");
+      $bridged->succeed("nixos-container run bridged -- ping -w 10 -c 1 -n 10.10.0.1");
+    };
+
+    subtest "physical device in bond in container", sub {
+      $bonded->waitForUnit("default.target");
+      $bonded->succeed("nixos-container start bonded");
+      $bonded->waitForUnit("container\@bonded");
+      $bonded->succeed("systemctl -M bonded list-dependencies network-addresses-bond0 >&2");
+      $bonded->succeed("systemctl -M bonded status -n 30 -l network-addresses-bond0 >&2");
+      $bonded->succeed("nixos-container run bonded -- ping -w 10 -c 1 -n 10.10.0.1");
+    };
+
+    subtest "physical device in bond in bridge in container", sub {
+      $bridgedbond->waitForUnit("default.target");
+      $bridgedbond->succeed("nixos-container start bridgedbond");
+      $bridgedbond->waitForUnit("container\@bridgedbond");
+      $bridgedbond->succeed("systemctl -M bridgedbond list-dependencies network-addresses-br0.service >&2");
+      $bridgedbond->succeed("systemctl -M bridgedbond status -n 30 -l network-addresses-br0.service");
+      $bridgedbond->succeed("nixos-container run bridgedbond -- ping -w 10 -c 1 -n 10.10.0.1");
+    };
+  '';
+})
diff --git a/nixos/tests/smokeping.nix b/nixos/tests/smokeping.nix
index 324f83147e00..9de3030417f9 100644
--- a/nixos/tests/smokeping.nix
+++ b/nixos/tests/smokeping.nix
@@ -11,9 +11,10 @@ import ./make-test.nix ({ pkgs, ...} : {
         services.smokeping = {
           enable = true;
           port = 8081;
+          mailHost = "127.0.0.2";
           probeConfig = ''
             + FPing
-            binary = ${pkgs.fping}/bin/fping
+            binary = /var/setuid-wrappers/fping
             offset = 0%
           '';
         };
@@ -27,5 +28,6 @@ import ./make-test.nix ({ pkgs, ...} : {
     $sm->waitForFile("/var/lib/smokeping/data/Local/LocalMachine.rrd");
     $sm->succeed("curl -s -f localhost:8081/smokeping.fcgi?target=Local");
     $sm->succeed("ls /var/lib/smokeping/cache/Local/LocalMachine_mini.png");
+    $sm->succeed("ls /var/lib/smokeping/cache/index.html");
   '';
 })
diff --git a/pkgs/applications/audio/ardour/ardour4.nix b/pkgs/applications/audio/ardour/ardour4.nix
new file mode 100644
index 000000000000..f9d64ff6f637
--- /dev/null
+++ b/pkgs/applications/audio/ardour/ardour4.nix
@@ -0,0 +1,86 @@
+{ stdenv, fetchFromGitHub, alsaLib, aubio, boost, cairomm, curl, doxygen, dbus, fftw
+, fftwSinglePrec, flac, glibc, glibmm, graphviz, gtkmm2, libjack2
+, libgnomecanvas, libgnomecanvasmm, liblo, libmad, libogg, librdf
+, librdf_raptor, librdf_rasqal, libsamplerate, libsigcxx, libsndfile
+, libusb, libuuid, libxml2, libxslt, lilv-svn, lv2, makeWrapper, pango
+, perl, pkgconfig, python, rubberband, serd, sord-svn, sratom, suil, taglib, vampSDK }:
+
+let
+
+  # Ardour git repo uses a mix of annotated and lightweight tags. Annotated
+  # tags are used for MAJOR.MINOR versioning, and lightweight tags are used
+  # in-between; MAJOR.MINOR.REV where REV is the number of commits since the
+  # last annotated tag. A slightly different version string format is needed
+  # for the 'revision' info that is built into the binary; it is the format of
+  # "git describe" when _not_ on an annotated tag(!): MAJOR.MINOR-REV-HASH.
+
+  # Version to build.
+  tag = "4.7";
+
+in
+
+stdenv.mkDerivation rec {
+  name = "ardour-${tag}";
+
+  src = fetchFromGitHub {
+    owner = "Ardour";
+    repo = "ardour";
+    rev = "d84a8222f2b6dab5028b2586f798535a8766670e";
+    sha256 = "149gswphz77m3pkzsn2nqbm6yvcfa3fva560bcvjzlgb73f64q5l";
+  };
+
+  buildInputs =
+    [ alsaLib aubio boost cairomm curl doxygen dbus fftw fftwSinglePrec flac glibc
+      glibmm graphviz gtkmm2 libjack2 libgnomecanvas libgnomecanvasmm liblo
+      libmad libogg librdf librdf_raptor librdf_rasqal libsamplerate
+      libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv-svn lv2
+      makeWrapper pango perl pkgconfig python rubberband serd sord-svn sratom suil taglib vampSDK
+    ];
+
+  # ardour's wscript has a "tarball" target but that required the git revision
+  # be available. Since this is an unzipped tarball fetched from github we
+  # have to do that ourself.
+  patchPhase = ''
+    printf '#include "libs/ardour/ardour/revision.h"\nnamespace ARDOUR { const char* revision = \"${tag}-${builtins.substring 0 8 src.rev}\"; }\n' > libs/ardour/revision.cc
+    sed 's|/usr/include/libintl.h|${glibc.dev}/include/libintl.h|' -i wscript
+    patchShebangs ./tools/
+  '';
+
+  configurePhase = "python waf configure --optimize --docs --with-backends=jack,alsa --prefix=$out";
+
+  buildPhase = "python waf";
+
+  installPhase = ''
+    python waf install
+    # Install desktop file
+    mkdir -p "$out/share/applications"
+    cat > "$out/share/applications/ardour.desktop" << EOF
+    [Desktop Entry]
+    Name=Ardour 4
+    GenericName=Digital Audio Workstation
+    Comment=Multitrack harddisk recorder
+    Exec=$out/bin/ardour4
+    Icon=$out/share/ardour4/icons/ardour_icon_256px.png
+    Terminal=false
+    Type=Application
+    X-MultipleArgs=false
+    Categories=GTK;Audio;AudioVideoEditing;AudioVideo;Video;
+    EOF
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Multi-track hard disk recording software";
+    longDescription = ''
+      Ardour is a digital audio workstation (DAW), You can use it to
+      record, edit and mix multi-track audio and midi. Produce your
+      own CDs. Mix video soundtracks. Experiment with new ideas about
+      music and sound.
+      Please consider supporting the ardour project financially:
+      https://community.ardour.org/node/8288
+    '';
+    homepage = http://ardour.org/;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.goibhniu maintainers.fps ];
+  };
+}
diff --git a/pkgs/applications/audio/ardour/default.nix b/pkgs/applications/audio/ardour/default.nix
index 7951076daa0d..6adb3a0ed47a 100644
--- a/pkgs/applications/audio/ardour/default.nix
+++ b/pkgs/applications/audio/ardour/default.nix
@@ -1,9 +1,10 @@
-{ stdenv, fetchFromGitHub, alsaLib, aubio, boost, cairomm, curl, doxygen, dbus, fftw
+{ stdenv, fetchgit, alsaLib, aubio, boost, cairomm, curl, doxygen
 , fftwSinglePrec, flac, glibc, glibmm, graphviz, gtkmm2, libjack2
 , libgnomecanvas, libgnomecanvasmm, liblo, libmad, libogg, librdf
 , librdf_raptor, librdf_rasqal, libsamplerate, libsigcxx, libsndfile
-, libusb, libuuid, libxml2, libxslt, lilv-svn, lv2, makeWrapper, pango
-, perl, pkgconfig, python, rubberband, serd, sord-svn, sratom, suil, taglib, vampSDK }:
+, libusb, libuuid, libxml2, libxslt, lilv-svn, lv2, makeWrapper
+, perl, pkgconfig, python, rubberband, serd, sord-svn, sratom
+, taglib, vampSDK, dbus, fftw, pango, suil, libarchive }:
 
 let
 
@@ -15,18 +16,17 @@ let
   # "git describe" when _not_ on an annotated tag(!): MAJOR.MINOR-REV-HASH.
 
   # Version to build.
-  tag = "4.7";
+  tag = "5.4";
 
 in
 
 stdenv.mkDerivation rec {
   name = "ardour-${tag}";
 
-  src = fetchFromGitHub {
-    owner = "Ardour";
-    repo = "ardour";
-    rev = "d84a8222f2b6dab5028b2586f798535a8766670e";
-    sha256 = "149gswphz77m3pkzsn2nqbm6yvcfa3fva560bcvjzlgb73f64q5l";
+  src = fetchgit {
+    url = "git://git.ardour.org/ardour/ardour.git";
+    rev = "bb3312c3bb9c6ed9b75ac6739a6ee720ddf86c86";
+    sha256 = "1yrg0d86k9fqw7lmzjglilbadb4cjqxqkf6ii4bjs6rihj6b0qrf";
   };
 
   buildInputs =
@@ -34,7 +34,8 @@ stdenv.mkDerivation rec {
       glibmm graphviz gtkmm2 libjack2 libgnomecanvas libgnomecanvasmm liblo
       libmad libogg librdf librdf_raptor librdf_rasqal libsamplerate
       libsigcxx libsndfile libusb libuuid libxml2 libxslt lilv-svn lv2
-      makeWrapper pango perl pkgconfig python rubberband serd sord-svn sratom suil taglib vampSDK
+      makeWrapper pango perl pkgconfig python rubberband serd sord-svn
+      sratom suil taglib vampSDK libarchive
     ];
 
   # ardour's wscript has a "tarball" target but that required the git revision
@@ -57,11 +58,11 @@ stdenv.mkDerivation rec {
     mkdir -p "$out/share/applications"
     cat > "$out/share/applications/ardour.desktop" << EOF
     [Desktop Entry]
-    Name=Ardour 4
+    Name=Ardour 5
     GenericName=Digital Audio Workstation
     Comment=Multitrack harddisk recorder
-    Exec=$out/bin/ardour4
-    Icon=$out/share/ardour4/icons/ardour_icon_256px.png
+    Exec=$out/bin/ardour5
+    Icon=$out/share/ardour5/icons/ardour_icon_256px.png
     Terminal=false
     Type=Application
     X-MultipleArgs=false
diff --git a/pkgs/applications/audio/openmpt123/default.nix b/pkgs/applications/audio/openmpt123/default.nix
new file mode 100644
index 000000000000..d5e0ed1c4764
--- /dev/null
+++ b/pkgs/applications/audio/openmpt123/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, SDL2, pkgconfig }:
+
+let
+  version = "0.2.7025-beta20.1";
+in stdenv.mkDerivation rec {
+  name = "openmpt123-${version}";
+  src = fetchurl {
+    url = "https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-${version}.tar.gz";
+    sha256 = "0qp2nnz6pnl1d7yv9hcjyim7q6yax5881k1jxm8jfgjqagmz5k6p";
+  };
+  buildInputs = [ SDL2 pkgconfig ];
+  makeFlags = [ "NO_LTDL=1 TEST=0 EXAMPLES=0" ]
+  ++ stdenv.lib.optional (stdenv.isDarwin) "SHARED_SONAME=0";
+  installFlags = "PREFIX=\${out}";
+
+  meta = with stdenv.lib; {
+    description = "A cross-platform command-line based module file player";
+    homepage = https://lib.openmpt.org/libopenmpt/;
+    license = licenses.bsd3;
+    maintainers = [ stdenv.lib.maintainers.gnidorah ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/pkgs/applications/audio/ponymix/default.nix b/pkgs/applications/audio/ponymix/default.nix
index cbc516fb288d..ced5262f5d25 100644
--- a/pkgs/applications/audio/ponymix/default.nix
+++ b/pkgs/applications/audio/ponymix/default.nix
@@ -1,11 +1,14 @@
-{ stdenv, fetchurl, libpulseaudio, libnotify, pkgconfig }:
+{ stdenv, fetchFromGitHub, libpulseaudio, libnotify, pkgconfig }:
 
 stdenv.mkDerivation rec {
   name = "ponymix-${version}";
   version = "5";
-  src = fetchurl {
-    url = "http://code.falconindy.com/archive/ponymix/${name}.tar.xz";
-    sha256 = "0qn2kms9h9b7da2xzkdgzrykhhdywr4psxnz03j8rg7wa9nwfw0x";
+
+  src = fetchFromGitHub {
+    owner  = "falconindy";
+    repo   = "ponymix";
+    rev    = version;
+    sha256 = "08yp7fprmzm6px5yx2rvzri0l60bra5h59l26pn0k071a37ks1rb";
   };
 
   buildInputs = [ libpulseaudio libnotify ];
@@ -13,9 +16,11 @@ stdenv.mkDerivation rec {
 
   postPatch = ''substituteInPlace Makefile --replace "\$(DESTDIR)/usr" "$out"'';
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "CLI PulseAudio Volume Control";
     homepage = "http://github.com/falconindy/ponymix";
-    license = "mit";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ericsagnes ];
   };
 }
diff --git a/pkgs/applications/audio/uade123/default.nix b/pkgs/applications/audio/uade123/default.nix
new file mode 100644
index 000000000000..0a07e97270c4
--- /dev/null
+++ b/pkgs/applications/audio/uade123/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, which, libao, pkgconfig }:
+
+let
+  version = "2.13";
+in stdenv.mkDerivation rec {
+  name = "uade123-${version}";
+  src = fetchurl {
+    url = "http://zakalwe.fi/uade/uade2/uade-${version}.tar.bz2";
+    sha256 = "04nn5li7xy4g5ysyjjngmv5d3ibxppkbb86m10vrvadzxdd4w69v";
+  };
+  buildInputs = [ which libao pkgconfig ];
+
+  meta = with stdenv.lib; {
+    description = "Plays old Amiga tunes through UAE emulation and cloned m68k-assembler Eagleplayer API";
+    homepage = http://zakalwe.fi/uade/;
+    license = licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.gnidorah ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/pkgs/applications/editors/emacs-modes/proofgeneral/4.2.nix b/pkgs/applications/editors/emacs-modes/proofgeneral/4.2.nix
deleted file mode 100644
index c026d058b4e3..000000000000
--- a/pkgs/applications/editors/emacs-modes/proofgeneral/4.2.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ stdenv, fetchurl, emacs, texinfo, texLive, perl, which, automake }:
-
-stdenv.mkDerivation (rec {
-  name = "ProofGeneral-4.2";
-
-  src = fetchurl {
-    url = http://proofgeneral.inf.ed.ac.uk/releases/ProofGeneral-4.2.tgz;
-    sha256 = "09qb0myq66fw17v4ziz401ilsb5xlxz1nl2wsp69d0vrfy0bcrrm";
-  };
-
-  sourceRoot = name;
-
-  buildInputs = [ emacs texinfo texLive perl which ];
-
-  prePatch =
-    '' sed -i "Makefile" \
-           -e "s|^\(\(DEST_\)\?PREFIX\)=.*$|\1=$out|g ; \
-               s|/sbin/install-info|install-info|g"
-
-
-       # Workaround for bug #458
-       # ProofGeneral 4.2 byte-compilation fails with Emacs 24.2.90
-       # http://proofgeneral.inf.ed.ac.uk/trac/ticket/458
-       sed -i "Makefile" \
-       	   -e "s|(setq byte-compile-error-on-warn t)||g"
-
-       sed -i "bin/proofgeneral" -e's/which/type -p/g'
-
-       # @image{ProofGeneral} fails, so remove it.
-       sed -i '94d' doc/PG-adapting.texi
-       sed -i '101d' doc/ProofGeneral.texi
-    '';
-
-  preBuild = ''
-    make clean;
-  '';
-
-  installPhase =
-    # Copy `texinfo.tex' in the right place so that `texi2pdf' works.
-    '' cp -v "${automake}/share/"automake-*/texinfo.tex doc
-       make install install-doc
-    '';
-
-  meta = {
-    description = "Proof General, an Emacs front-end for proof assistants";
-    longDescription = ''
-      Proof General is a generic front-end for proof assistants (also known as
-      interactive theorem provers), based on the customizable text editor Emacs.
-    '';
-    homepage = http://proofgeneral.inf.ed.ac.uk;
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.unix;  # arbitrary choice
-  };
-})
diff --git a/pkgs/applications/editors/emacs-modes/proofgeneral/4.3pre.nix b/pkgs/applications/editors/emacs-modes/proofgeneral/4.4.nix
index 815863ac6da1..0f7ac1d1dc80 100644
--- a/pkgs/applications/editors/emacs-modes/proofgeneral/4.3pre.nix
+++ b/pkgs/applications/editors/emacs-modes/proofgeneral/4.4.nix
@@ -1,44 +1,38 @@
-{ stdenv, fetchurl, emacs, texinfo, texLive, perl, which, automake, enableDoc ? false }:
+{ stdenv, fetchFromGitHub, emacs, texinfo, texLive, which, automake, enableDoc ? false }:
 
-stdenv.mkDerivation (rec {
-  name = "ProofGeneral-4.3pre150313";
+stdenv.mkDerivation rec {
+  name = "ProofGeneral-${version}";
+  version = "4.4";
 
-  src = fetchurl {
-    url = "http://proofgeneral.inf.ed.ac.uk/releases/${name}.tgz";
-    sha256 = "1jq5ykkk14xr5qcn4kyxmi5ls0fibr0y47gfygzm1mzrfvz9aw3f";
+  src = fetchFromGitHub {
+    owner = "ProofGeneral";
+    repo = "PG";
+    rev = "v${version}";
+    sha256 = "0bdfk91wf71z80mdfnl8hpinripndcjgdkz854zil6521r84nqk8";
   };
 
-  sourceRoot = name;
-
-  buildInputs = [ emacs texinfo perl which ] ++ stdenv.lib.optional enableDoc texLive;
+  buildInputs = [ emacs which ] ++ stdenv.lib.optionals enableDoc [ texinfo texLive ];
 
   prePatch =
     '' sed -i "Makefile" \
            -e "s|^\(\(DEST_\)\?PREFIX\)=.*$|\1=$out|g ; \
                s|/sbin/install-info|install-info|g"
 
-
        sed -i "bin/proofgeneral" -e's/which/type -p/g'
 
-       # @image{ProofGeneral} fails, so remove it.
-       sed -i '94d' doc/PG-adapting.texi
+       chmod +x bin/proofgeneral
+
+       # @image{ProofGeneral-image} fails, so remove it.
+       sed -i '91d' doc/PG-adapting.texi
        sed -i '96d' doc/ProofGeneral.texi
+    '' + stdenv.lib.optionalString enableDoc
+    # Copy `texinfo.tex' in the right place so that `texi2pdf' works.
+    '' cp -v "${automake}/share/"automake-*/texinfo.tex doc
     '';
 
   patches = [ ./pg.patch ];
 
-  preBuild = ''
-    make clean;
-  '';
-
-  installPhase =
-    if enableDoc
-    then
-    # Copy `texinfo.tex' in the right place so that `texi2pdf' works.
-    '' cp -v "${automake}/share/"automake-*/texinfo.tex doc
-       make install install-doc
-    ''
-    else "make install";
+  installTargets = [ "install" ] ++ stdenv.lib.optional enableDoc "install-doc";
 
   meta = {
     description = "Proof General, an Emacs front-end for proof assistants";
@@ -50,4 +44,4 @@ stdenv.mkDerivation (rec {
     license = stdenv.lib.licenses.gpl2Plus;
     platforms = stdenv.lib.platforms.unix;  # arbitrary choice
   };
-})
+}
diff --git a/pkgs/applications/editors/emacs/default.nix b/pkgs/applications/editors/emacs/default.nix
index 4a729ba3da3f..08223ef82ef0 100644
--- a/pkgs/applications/editors/emacs/default.nix
+++ b/pkgs/applications/editors/emacs/default.nix
@@ -6,6 +6,7 @@
 , withGTK2 ? true, gtk2 ? null
 , withGTK3 ? false, gtk3 ? null
 , withXwidgets ? false, webkitgtk24x ? null, wrapGAppsHook ? null, glib_networking ? null
+, withCsrc ? true
 , srcRepo ? false, autoconf ? null, automake ? null, texinfo ? null
 }:
 
@@ -24,7 +25,9 @@ let
     else "lucid";
 in
 stdenv.mkDerivation rec {
-  name = "emacs-25.1";
+  name = "emacs-${version}${versionModifier}";
+  version = "25.1";
+  versionModifier = "";
 
   src = fetchurl {
     url = "mirror://gnu//emacs/${name}.tar.xz";
@@ -71,9 +74,23 @@ stdenv.mkDerivation rec {
     done
   '';
 
+  installTargets = "tags install";
+
   postInstall = ''
-    mkdir -p $out/share/emacs/site-lisp/
+    mkdir -p $out/share/emacs/site-lisp
     cp ${./site-start.el} $out/share/emacs/site-lisp/site-start.el
+    $out/bin/emacs --batch -f batch-byte-compile $out/share/emacs/site-lisp/site-start.el
+
+    rm -rf $out/var
+    rm -rf $out/share/emacs/${version}/site-lisp
+  '' + lib.optionalString withCsrc ''
+    for srcdir in src lisp lwlib ; do
+      dstdir=$out/share/emacs/${version}/$srcdir
+      mkdir -p $dstdir
+      find $srcdir -name "*.[chm]" -exec cp {} $dstdir \;
+      cp $srcdir/TAGS $dstdir
+      echo '((nil . ((tags-file-name . "TAGS"))))' > $dstdir/.dir-locals.el
+    done
   '' + lib.optionalString stdenv.isDarwin ''
     mkdir -p $out/Applications
     mv nextstep/Emacs.app $out/Applications
diff --git a/pkgs/applications/editors/emacs/site-start.el b/pkgs/applications/editors/emacs/site-start.el
index 023d6412ed84..b41ca92db086 100644
--- a/pkgs/applications/editors/emacs/site-start.el
+++ b/pkgs/applications/editors/emacs/site-start.el
@@ -1,4 +1,4 @@
-;; NixOS specific load-path
+;;; NixOS specific load-path
 (setq load-path
       (append (reverse (mapcar (lambda (x) (concat x "/share/emacs/site-lisp/"))
                                (split-string (or (getenv "NIX_PROFILES") ""))))
@@ -11,7 +11,25 @@
                                   (split-string (or (getenv "NIX_PROFILES") ""))))
                  woman-manpath)))
 
-;; Make tramp work for remote NixOS machines
-;;; NOTE: You might want to add 
+;;; Make tramp work for remote NixOS machines
 (eval-after-load 'tramp
   '(add-to-list 'tramp-remote-path "/run/current-system/sw/bin"))
+
+;;; C source directory
+;;;
+;;; Computes the location of the C source directory from the path of
+;;; the current file:
+;;; from: /nix/store/<hash>-emacs-<version>/share/emacs/site-lisp/site-start.el
+;;; to:   /nix/store/<hash>-emacs-<version>/share/emacs/<version>/src/
+(let ((emacs
+       (file-name-directory                      ;; .../emacs/
+        (directory-file-name                     ;; .../emacs/site-lisp
+         (file-name-directory load-file-name)))) ;; .../emacs/site-lisp/
+      (version
+       (file-name-as-directory
+        (concat
+         (number-to-string emacs-major-version)
+         "."
+         (number-to-string emacs-minor-version))))
+      (src (file-name-as-directory "src")))
+  (setq find-function-C-source-directory (concat emacs version src)))
diff --git a/pkgs/applications/editors/idea/default.nix b/pkgs/applications/editors/idea/default.nix
index 40972f50fe7c..325345e8718c 100644
--- a/pkgs/applications/editors/idea/default.nix
+++ b/pkgs/applications/editors/idea/default.nix
@@ -240,24 +240,24 @@ in
 
   pycharm-community = buildPycharm rec {
     name = "pycharm-community-${version}";
-    version = "2016.2.2";
+    version = "2016.2.3";
     description = "PyCharm Community Edition";
     license = stdenv.lib.licenses.asl20;
     src = fetchurl {
       url = "https://download.jetbrains.com/python/${name}.tar.gz";
-      sha256 = "1v6vy4xh0n8wdjc25clxg57z7ria11x1zdba4j1hjs2z6l80kxbb";
+      sha256 = "0nph0dp0a2y6vrbc1a2d5iy1fzhm4wbkp6kpdk6mcfpnz5ppz84f";
     };
     wmClass = "jetbrains-pycharm-ce";
   };
 
   pycharm-professional = buildPycharm rec {
     name = "pycharm-professional-${version}";
-    version = "2016.2.2";
+    version = "2016.2.3";
     description = "PyCharm Professional Edition";
     license = stdenv.lib.licenses.unfree;
     src = fetchurl {
       url = "https://download.jetbrains.com/python/${name}.tar.gz";
-      sha256 = "08x2x6lhr9100lmw1dq8rkz4mlyj4avcj2hpbd5qqybx9j4g6g44";
+      sha256 = "0pjgdwpkbf6fgrhml97inmsjavz1n9l4ns1pnhv3mssnribg3vm1";
     };
     wmClass = "jetbrains-pycharm";
   };
diff --git a/pkgs/applications/graphics/rawtherapee/ReleaseInfo.cmake b/pkgs/applications/graphics/rawtherapee/ReleaseInfo.cmake
index 28096618c9e3..7be7cb63f701 100644
--- a/pkgs/applications/graphics/rawtherapee/ReleaseInfo.cmake
+++ b/pkgs/applications/graphics/rawtherapee/ReleaseInfo.cmake
@@ -1,4 +1,4 @@
 set(GIT_BRANCH master)
-set(GIT_VERSION 4.2.1050)
-set(GIT_CHANGESET 2d0e5e4feeac9801994d82c5931531f508deb2e9)
-set(GIT_TAGDISTANCE 1050)
+set(GIT_VERSION 4.2.1115)
+set(GIT_CHANGESET 0821eea7b6a4ac2fce1fcf644e06078e161e41e3)
+set(GIT_TAGDISTANCE 1115)
diff --git a/pkgs/applications/graphics/rawtherapee/default.nix b/pkgs/applications/graphics/rawtherapee/default.nix
index 14cbf478bd46..50eb7749031f 100644
--- a/pkgs/applications/graphics/rawtherapee/default.nix
+++ b/pkgs/applications/graphics/rawtherapee/default.nix
@@ -16,6 +16,10 @@ stdenv.mkDerivation rec {
   buildInputs = [ pkgconfig cmake pixman libpthreadstubs gtkmm2 libXau libXdmcp
     lcms2 libiptcdata libcanberra_gtk2 fftw expat pcre libsigcxx ];
 
+  patches = [
+    ./fix-glibmm-output.patch
+  ];
+
   cmakeFlags = [
     "-DPROC_TARGET_NUMBER=2"
   ];
diff --git a/pkgs/applications/graphics/rawtherapee/dev.nix b/pkgs/applications/graphics/rawtherapee/dev.nix
index 2d664e5cf15d..71e41faaaef5 100644
--- a/pkgs/applications/graphics/rawtherapee/dev.nix
+++ b/pkgs/applications/graphics/rawtherapee/dev.nix
@@ -3,13 +3,13 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "rawtherapee-git-2016-09-21";
+  name = "rawtherapee-git-2016-10-10";
 
   src = fetchFromGitHub {
     owner = "Beep6581";
     repo = "RawTherapee";
-    rev = "2d0e5e4feeac9801994d82c5931531f508deb2e9";
-    sha256 = "1d9bi3b6cslm0rhhqf0rx47nlnsnky284vqsxyq3mss6bd8880xh";
+    rev = "0821eea7b6a4ac2fce1fcf644e06078e161e41e3";
+    sha256 = "1nwb6b1qrpdyigwig7bvr42lf7na1ngm0q2cislcvb2v1nmk6nlz";
   };
 
   buildInputs = [ pkgconfig cmake pixman libpthreadstubs gtkmm2 libXau libXdmcp
diff --git a/pkgs/applications/graphics/rawtherapee/fix-glibmm-output.patch b/pkgs/applications/graphics/rawtherapee/fix-glibmm-output.patch
new file mode 100644
index 000000000000..3c87ce64e26b
--- /dev/null
+++ b/pkgs/applications/graphics/rawtherapee/fix-glibmm-output.patch
@@ -0,0 +1,23 @@
+From ca0afa8d5f3cc7d09b6bab32d155a87c550f0d7b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fl=C3=B6ssie?= <floessie.mail@gmail.com>
+Date: Sat, 1 Oct 2016 12:38:24 +0200
+Subject: [PATCH] Fix incompatibility with glibmm 2.50 (#3440)
+
+Kudos to @Hombre57 for the suggestion.
+---
+ rtgui/dirbrowser.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/rtgui/dirbrowser.cc b/rtgui/dirbrowser.cc
+index d3fc8bf..6f25f0f 100644
+--- a/rtgui/dirbrowser.cc
++++ b/rtgui/dirbrowser.cc
+@@ -59,7 +59,7 @@ std::vector<Glib::ustring> listSubDirs (const Glib::RefPtr<Gio::File>& dir, bool
+     } catch (const Glib::Exception& exception) {
+ 
+         if (options.rtSettings.verbose) {
+-            std::cerr << "Failed to list subdirectories of \"" << dir << "\": " << exception.what () << std::endl;
++            std::cerr << "Failed to list subdirectories of \"" << dir->get_basename() << "\": " << exception.what () << std::endl;
+         }
+ 
+     }
diff --git a/pkgs/applications/misc/electrum-dash/default.nix b/pkgs/applications/misc/electrum-dash/default.nix
index 1a843661f4cd..7abeaf57b64c 100644
--- a/pkgs/applications/misc/electrum-dash/default.nix
+++ b/pkgs/applications/misc/electrum-dash/default.nix
@@ -13,7 +13,7 @@ pythonPackages.buildPythonApplication rec {
     dns
     ecdsa
     pbkdf2
-    protobuf
+    protobuf3_0
     pyasn1
     pyasn1-modules
     pycrypto
diff --git a/pkgs/applications/misc/electrum/default.nix b/pkgs/applications/misc/electrum/default.nix
index d5442a2ded8b..9e4afc0ae90e 100644
--- a/pkgs/applications/misc/electrum/default.nix
+++ b/pkgs/applications/misc/electrum/default.nix
@@ -1,21 +1,5 @@
 { stdenv, fetchurl, pythonPackages }:
 
-let
-  jsonrpclib = pythonPackages.buildPythonPackage rec {
-    version = "0.1.7";
-    name = "jsonrpclib-${version}";
-    src = fetchurl {
-      url = "mirror://pypi/j/jsonrpclib/${name}.tar.gz";
-      sha256 = "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z";
-    };
-    propagatedBuildInputs = [ pythonPackages.cjson ];
-    meta = {
-      homepage = https://pypi.python.org/pypi/jsonrpclib;
-      license = stdenv.lib.licenses.asl20;
-    };
-  };
-in
-
 pythonPackages.buildPythonApplication rec {
   name = "electrum-${version}";
   version = "2.6.4";
@@ -30,7 +14,7 @@ pythonPackages.buildPythonApplication rec {
     ecdsa
     jsonrpclib
     pbkdf2
-    protobuf
+    protobuf3_0
     pyasn1
     pyasn1-modules
     pycrypto
@@ -61,14 +45,14 @@ pythonPackages.buildPythonApplication rec {
   '';
 
   meta = with stdenv.lib; {
-    description = "Bitcoin thin-client";
+    description = "A lightweight Bitcoin wallet";
     longDescription = ''
       An easy-to-use Bitcoin client featuring wallets generated from
       mnemonic seeds (in addition to other, more advanced, wallet options)
       and the ability to perform transactions without downloading a copy
       of the blockchain.
     '';
-    homepage = https://electrum.org;
+    homepage = https://electrum.org/;
     license = licenses.mit;
     maintainers = with maintainers; [ ehmry joachifm np ];
   };
diff --git a/pkgs/applications/misc/fehlstart/default.nix b/pkgs/applications/misc/fehlstart/default.nix
index 35b66299c06d..548679e4b47c 100644
--- a/pkgs/applications/misc/fehlstart/default.nix
+++ b/pkgs/applications/misc/fehlstart/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation {
   meta = with stdenv.lib; {
     description = "Small desktop application launcher with reasonable memory footprint";
     homepage = https://gitlab.com/fehlstart/fehlstart;
-    licence = licenses.gpl3;
+    license = licenses.gpl3;
     maintainers = [ maintainers.mounium ];
     platforms = platforms.all;
   };
diff --git a/pkgs/applications/misc/get_iplayer/default.nix b/pkgs/applications/misc/get_iplayer/default.nix
index 069d07bd82a4..a858fefa8c2b 100644
--- a/pkgs/applications/misc/get_iplayer/default.nix
+++ b/pkgs/applications/misc/get_iplayer/default.nix
@@ -1,30 +1,33 @@
-{stdenv, fetchurl, flvstreamer, ffmpeg, makeWrapper, perl, buildPerlPackage, perlPackages, vlc, rtmpdump}:
-buildPerlPackage {
-  name = "get_iplayer-2.94";
+{stdenv, fetchurl, atomicparsley, flvstreamer, ffmpeg, makeWrapper, perl, buildPerlPackage, perlPackages, rtmpdump}:
+buildPerlPackage rec {
+  name = "get_iplayer-${version}";
+  version = "2.97";
 
   buildInputs = [makeWrapper perl];
-  propagatedBuildInputs = with perlPackages; [HTMLParser HTTPCookies LWP XMLSimple];
+  propagatedBuildInputs = with perlPackages; [HTMLParser HTTPCookies LWP XMLLibXML XMLSimple];
 
   preConfigure = "touch Makefile.PL";
   doCheck = false;
   outputs = [ "out" "man" ];
 
-  patchPhase = ''
-    sed -e 's|^update_script|#update_script|' \
-        -e '/WARNING.*updater/d' \
-        -i get_iplayer
-  '';
-
-  installPhase = '' 
+  installPhase = ''
     mkdir -p $out/bin $out/share/man/man1
     cp get_iplayer $out/bin
-    wrapProgram $out/bin/get_iplayer --suffix PATH : ${stdenv.lib.makeBinPath [ ffmpeg flvstreamer vlc rtmpdump ]} --prefix PERL5LIB : $PERL5LIB
+    wrapProgram $out/bin/get_iplayer --suffix PATH : ${stdenv.lib.makeBinPath [ atomicparsley ffmpeg flvstreamer rtmpdump ]} --prefix PERL5LIB : $PERL5LIB
     cp get_iplayer.1 $out/share/man/man1
   '';
   
   src = fetchurl {
-    url = ftp://ftp.infradead.org/pub/get_iplayer/get_iplayer-2.94.tar.gz;
-    sha256 = "16p0bw879fl8cs6rp37g1hgrcai771z6rcqk2nvm49kk39dx1zi4";
+    url = "https://github.com/get-iplayer/get_iplayer/archive/v${version}.tar.gz";
+    sha256 = "0bb6kmzjmazwfxq5ip7yxm39vssfgz3v5vfx1114wfssp6pw0r44";
+  };
+
+  meta = {
+    description = "Downloads TV and radio from BBC iPlayer";
+    license = stdenv.lib.licenses.gpl3Plus;
+    homepage = https://squarepenguin.co.uk/;
+    downloadPage = https://github.com/get-iplayer/get_iplayer/releases;
+    platforms = stdenv.lib.platforms.all;
   };
   
 }
diff --git a/pkgs/applications/misc/octoprint/default.nix b/pkgs/applications/misc/octoprint/default.nix
index b39b73c830ff..fa0097272ffb 100644
--- a/pkgs/applications/misc/octoprint/default.nix
+++ b/pkgs/applications/misc/octoprint/default.nix
@@ -1,6 +1,41 @@
-{ stdenv, fetchFromGitHub, pythonPackages }:
+{ stdenv, fetchFromGitHub, pythonPackages, fetchurl }:
 
-pythonPackages.buildPythonApplication rec {
+let
+
+  tornado_4_0_1 = pythonPackages.buildPythonPackage rec {
+    name = "tornado-${version}";
+    version = "4.0.1";
+
+    propagatedBuildInputs = with pythonPackages; [ backports_ssl_match_hostname_3_4_0_2 certifi ];
+
+    src = fetchurl {
+      url = "mirror://pypi/t/tornado/${name}.tar.gz";
+      sha256 = "00crp5vnasxg7qyjv89qgssb69vd7qr13jfghdryrcbnn9l8c1df";
+    };
+  };
+
+  sockjs-tornado = pythonPackages.buildPythonPackage rec {
+    name = "sockjs-tornado-${version}";
+    version = "1.0.2";
+
+    src = fetchurl {
+      url = "mirror://pypi/s/sockjs-tornado/${name}.tar.gz";
+      sha256 = "15lcy40h2cm0l8aknbrk48p2sni5wzybsqjx1hxwpk9lfa1xryyv";
+    };
+
+    # This is needed for compatibility with OctoPrint
+    propagatedBuildInputs = [ tornado_4_0_1 ];
+
+    meta = with stdenv.lib; {
+      description = "SockJS python server implementation on top of Tornado framework";
+      homepage = http://github.com/mrjoes/sockjs-tornado/;
+      license = licenses.mit;
+      platforms = platforms.all;
+      maintainers = with maintainers; [ abbradar ];
+    };
+  };
+
+in pythonPackages.buildPythonApplication rec {
   name = "OctoPrint-${version}";
   version = "1.2.15";
 
diff --git a/pkgs/applications/misc/pcmanfm-qt/default.nix b/pkgs/applications/misc/pcmanfm-qt/default.nix
deleted file mode 100644
index 5b270f15fb6d..000000000000
--- a/pkgs/applications/misc/pcmanfm-qt/default.nix
+++ /dev/null
@@ -1,60 +0,0 @@
-{ stdenv
-, fetchFromGitHub
-, cmake
-, pkgconfig
-, qt5
-, menu-cache
-, libfm
-, elementary-icon-theme
-}:
-
-let
-  version = "0.11.0";
-
-  buildInputsCommon = [ cmake pkgconfig qt5.qtbase qt5.qttools qt5.qtx11extras menu-cache libfm ];
-
-  libfm-qt = stdenv.mkDerivation rec {
-    name    = "${pname}-${version}";
-    pname   = "libfm-qt";
-
-    src = fetchFromGitHub {
-      owner  = "lxde";
-      repo   = pname;
-      rev    = version;
-      sha256 = "0a8rd0m66l6n2jl7fin74byyy69pyc6rgnfkpmkbi6561l903592";
-    };
-
-    buildInputs = buildInputsCommon;
-  };
-
-in stdenv.mkDerivation rec {
-  name    = "${pname}-${version}";
-  pname   = "pcmanfm-qt";
-
-  src = fetchFromGitHub {
-    owner  = "lxde";
-    repo   = pname;
-    rev    = version;
-    sha256 = "139l8m32sqcjmydppbv24iqnfsbl5b4rqmqzdayvlh6haf1ihinn";
-  };
-
-
-  buildInputs = buildInputsCommon ++ [ libfm-qt qt5.makeQtWrapper ];
-
-  postPatch = ''
-    substituteInPlace pcmanfm/settings.cpp --replace \"elementary\" \"Elementary\"
-  '';
-
-  postInstall = ''
-    wrapQtProgram $out/bin/pcmanfm-qt \
-      --prefix XDG_DATA_DIRS : "${elementary-icon-theme}/share"
-  '';
-
-  meta = with stdenv.lib; {
-    homepage    = "https://github.com/lxde/pcmanfm-qt";
-    license     = licenses.gpl2Plus;
-    description = "File manager with QT interface";
-    maintainers = with maintainers; [ obadz ];
-    platforms   = platforms.linux;
-  };
-}
diff --git a/pkgs/applications/misc/qtpass/default.nix b/pkgs/applications/misc/qtpass/default.nix
index cca8d05ea5cf..eee2dffb0e1c 100644
--- a/pkgs/applications/misc/qtpass/default.nix
+++ b/pkgs/applications/misc/qtpass/default.nix
@@ -1,12 +1,14 @@
-{ stdenv, fetchzip, git, gnupg, makeQtWrapper, pass, qtbase, qtsvg, qttools, qmakeHook }:
+{ stdenv, fetchFromGitHub, git, gnupg, makeQtWrapper, pass, qtbase, qtsvg, qttools, qmakeHook }:
 
 stdenv.mkDerivation rec {
   name = "qtpass-${version}";
-  version = "1.1.3";
+  version = "1.1.4";
 
-  src = fetchzip {
-    url = "https://github.com/IJHack/qtpass/archive/v${version}.tar.gz";
-    sha256 = "114rqvd2jl98c75zmhdwfmp44kxa4v459naiivb4w020d60ziq7l";
+  src = fetchFromGitHub {
+    owner  = "IJHack";
+    repo   = "QtPass";
+    rev    = "v${version}";
+    sha256 = "0jxb15jn6vv54wb2z52wv9b2mq38xff8akyzwj5xx2332bc9xra2";
   };
 
   buildInputs = [ git gnupg pass qtbase qtsvg qttools ];
diff --git a/pkgs/applications/misc/styx/default.nix b/pkgs/applications/misc/styx/default.nix
new file mode 100644
index 000000000000..29d7067e2355
--- /dev/null
+++ b/pkgs/applications/misc/styx/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub, caddy, asciidoctor }:
+
+stdenv.mkDerivation rec {
+  name    = "styx-${version}";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner  = "styx-static";
+    repo   = "styx";
+    rev    = "v${version}";
+    sha256 = "1bcd0ss628mhchrl85fy6acxcxqvm1d3qywfaxhikahl1r7inpwg";
+  };
+
+  server = caddy.bin;
+
+  nativeBuildInputs = [ asciidoctor ];
+
+  setSourceRoot = "cd styx-*/src; export sourceRoot=`pwd`";
+
+  installPhase = ''
+    mkdir $out
+    install -D -m 777 $sourceRoot/styx.sh $out/bin/styx
+
+    mkdir -p $out/share/styx
+    cp -r $sourceRoot/sample $out/share/styx
+
+    mkdir -p $out/share/doc/styx
+    asciidoctor $sourceRoot/doc/manual.doc -o $out/share/doc/styx/index.html
+
+    substituteAllInPlace $out/bin/styx
+    substituteAllInPlace $out/share/doc/styx/index.html
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Nix based static site generator";
+    maintainers = with maintainers; [ ericsagnes ];
+    homepage = https://styx-static.github.io/styx-site/;
+    downloadPage = https://github.com/styx-static/styx/;
+    platforms = platforms.all;
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/applications/misc/tasksh/default.nix b/pkgs/applications/misc/tasksh/default.nix
index 9283469fcc39..333ed411941b 100644
--- a/pkgs/applications/misc/tasksh/default.nix
+++ b/pkgs/applications/misc/tasksh/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "tasksh-${version}";
-  version = "1.0.0";
+  version = "1.1.0";
 
   enableParallelBuilding = true;
 
   src = fetchurl {
-    url = "http://taskwarrior.org/download/tasksh-latest.tar.gz";
-    sha256 = "0ll6pwhw4wsdffacsmpq46fqh084p9mdaa777giqbag3b8gwik4s";
+    url = "http://taskwarrior.org/download/${name}.tar.gz";
+    sha256 = "0900nzfgvhcc106pl68d0v0qszvdc34yi59mw70b34b2gmkwdxzf";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.nix b/pkgs/applications/networking/browsers/chromium/upstream-info.nix
index 567a6aa7d182..dfac55a18b6f 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 = "1wpcl6cgiv02s3zgxvgsmrws454g81lnvyfjmhhcdckkwyljcv5l";
-    sha256bin64 = "0snr5rd2r5jfjqhqwkxcw26j53fivmf60g3qfnp5xz5b6nlsab9g";
-    version = "54.0.2840.34";
+    sha256 = "0f6cqvhlg06lrf4bzaiwzm9yi3fi1dk5jrzvjcg7alw3mzrmh2wv";
+    sha256bin64 = "02cv9vc1l2nlwa4a0lc7cj9c9czrwp1jd8d024bq16a5fvmhl01l";
+    version = "54.0.2840.50";
   };
   dev = {
-    sha256 = "1lbpj1wm35l2qf4fxfivd9drwwdrylv3knh8db889dyz5hrh3j5y";
-    sha256bin64 = "0rkvrrcr1j9662v00kf7x7qmdps1pd4hq818x7crkilczybd05pr";
-    version = "55.0.2868.3";
+    sha256 = "06kcymwi0wfir7w10g8viayk2h0b5a66dav76mlia4lm30p502kz";
+    sha256bin64 = "0mgamiffnnkaw8c68b5kyna84x7hlhrzmqfc36kzf434fmm8v5d6";
+    version = "55.0.2873.0";
   };
   stable = {
-    sha256 = "0qk0y457l91yzxradpinayzw3947s5s4axd75h968vrl0jan51vs";
-    sha256bin64 = "0sz4dfwxvkffcj4rrqh3vn2xxp2vvjzdjsy0s9wcvam01igmy261";
-    version = "53.0.2785.116";
+    sha256 = "1hyw0z7dsfaxyy8b4mvnfjy5yj0160hzz9m0wj3vn9zvkfvmhan5";
+    sha256bin64 = "0n0px7yi94gdxq7p6pjqfdz04bnh3mcvbaccjaglj6h5p0jc8abq";
+    version = "53.0.2785.143";
   };
 }
diff --git a/pkgs/applications/networking/browsers/firefox/default.nix b/pkgs/applications/networking/browsers/firefox/default.nix
index d12c3722e403..1f3b3977e8f6 100644
--- a/pkgs/applications/networking/browsers/firefox/default.nix
+++ b/pkgs/applications/networking/browsers/firefox/default.nix
@@ -141,8 +141,8 @@ in {
 
   firefox-unwrapped = common {
     pname = "firefox";
-    version = "49.0";
-    sha512 = "9431f86dec5587131699ae57ae428be168e4d6c7d1d48df643c10540e8e18bc5eadfcd08bb204950be611c87d35d8a40aa8ece454b7dfa3992239639c2d688a9";
+    version = "49.0.1";
+    sha512 = "0b1lmsxazd32xxlbbzg01xam7qc9m7abv6fnl1ixv4dz0xpfc88l1zikskghhdk9snzglyl3lidgnbkli9039g3gf9m06yv77gasmkg";
   };
 
   firefox-esr-unwrapped = common {
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
index 39a917394681..81fca6614a59 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
@@ -70,11 +70,11 @@ let
 in
 stdenv.mkDerivation rec {
   name = "flashplayer-${version}";
-  version = "11.2.202.635";
+  version = "11.2.202.637";
 
   src = fetchurl {
     url = "https://fpdownload.macromedia.com/pub/flashplayer/installers/archive/fp_${version}_archive.zip";
-    sha256 = "0xlaf6152ksknigrv6fsasscyfnjkxml4nl22apiwzb34nrbzk3m";
+    sha256 = "0xp1pxhrnam4yi8wfwaifqx7m2im0zx2xv8xgbdm0llrzbkc57mh";
   };
 
   nativeBuildInputs = [ unzip ];
diff --git a/pkgs/applications/networking/cluster/kops/default.nix b/pkgs/applications/networking/cluster/kops/default.nix
new file mode 100644
index 000000000000..80747e44bf53
--- /dev/null
+++ b/pkgs/applications/networking/cluster/kops/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub, go-bindata  }:
+
+buildGoPackage rec {
+  name = "kops-${version}";
+  version = "1.4.0";
+  rev = "v${version}";
+
+  goPackagePath = "k8s.io/kops";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "kubernetes";
+    repo = "kops";
+    sha256 = "1jwgn7l8c639j5annwymqjdw5mcajwn58y21042jy5lhgdh8pdf5";
+  };
+
+  buildInputs = [go-bindata];
+  subPackages = ["cmd/kops"];
+
+  preBuild = ''
+    (cd go/src/k8s.io/kops
+     go-bindata -o upup/models/bindata.go -pkg models -prefix upup/models/ upup/models/...)
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Easiest way to get a production Kubernetes up and running";
+    homepage = https://github.com/kubernetes/kops;
+    license = licenses.asl20;
+    maintainers = with maintainers; [offline];
+  };
+}
diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix
index 51e7e671175d..90c6bce65060 100644
--- a/pkgs/applications/networking/dropbox/default.nix
+++ b/pkgs/applications/networking/dropbox/default.nix
@@ -23,11 +23,11 @@
 let
   # NOTE: When updating, please also update in current stable,
   # as older versions stop working
-  version = "11.4.21";
+  version = "11.4.22";
   sha256 =
     {
-      "x86_64-linux" = "179ajawqy43jhgvysc386hdyz9hdandwvh8m2y2rassvycn9kr8z";
-      "i686-linux"   = "1y4z9rb06f2a3cj51xawgpzgar9x7gvr4jrazncqfpfqkv7zayv1";
+      "x86_64-linux" = "1fpwknf8as2h6d8d11nb8i0q4ap5r6fvii919b3pj5d29jgfd25l";
+      "i686-linux"   = "1dv60ijb93464js34vk3l8hm8a57zdpkzhrfkv2kp3v3172cqj8s";
     }."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
 
   arch =
diff --git a/pkgs/applications/networking/instant-messengers/slack/default.nix b/pkgs/applications/networking/instant-messengers/slack/default.nix
index 8a7d2bbd126f..9f2fee47d8d0 100644
--- a/pkgs/applications/networking/instant-messengers/slack/default.nix
+++ b/pkgs/applications/networking/instant-messengers/slack/default.nix
@@ -4,7 +4,7 @@
 
 let
 
-  version = "2.1.2";
+  version = "2.2.1";
 
   rpath = stdenv.lib.makeLibraryPath [
     alsaLib
@@ -43,7 +43,7 @@ let
     if stdenv.system == "x86_64-linux" then
       fetchurl {
         url = "https://slack-ssb-updates.global.ssl.fastly.net/linux_releases/slack-desktop-${version}-amd64.deb";
-        sha256 = "0bmz9d0p6676lzl4qxy6xmcampr2ilkc0mhh67860kcxjaz6sms6";
+        sha256 = "1x08bmkanllv3lpi2s722xs7qia8igf6zxzkc3g7vs5jms3mdrad";
       }
     else
       throw "Slack is not supported on ${stdenv.system}";
diff --git a/pkgs/applications/networking/mailreaders/mutt/default.nix b/pkgs/applications/networking/mailreaders/mutt/default.nix
index d5bda113ba8c..2bc9b3babbdc 100644
--- a/pkgs/applications/networking/mailreaders/mutt/default.nix
+++ b/pkgs/applications/networking/mailreaders/mutt/default.nix
@@ -20,11 +20,11 @@ with stdenv.lib;
 
 stdenv.mkDerivation rec {
   name = "mutt-${version}";
-  version = "1.7.0";
+  version = "1.7.1";
 
   src = fetchurl {
     url = "http://ftp.mutt.org/pub/mutt/${name}.tar.gz";
-    sha256 = "0idkamdiwj9fgqaz1vzkfg78cnmkzp74skv0ibw2xjfq6ds9hghx";
+    sha256 = "1pyns0xw52s4yma1a93pdcl4dirs55q2m1hd7w1r11nlhf7giip9";
   };
 
   buildInputs =
diff --git a/pkgs/applications/networking/syncthing/default.nix b/pkgs/applications/networking/syncthing/default.nix
index 49b969e8f6bf..3d8733635ee0 100644
--- a/pkgs/applications/networking/syncthing/default.nix
+++ b/pkgs/applications/networking/syncthing/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchFromGitHub, go }:
 
 stdenv.mkDerivation rec {
-  version = "0.14.7";
+  version = "0.14.8";
   name = "syncthing-${version}";
 
   src = fetchFromGitHub {
     owner  = "syncthing";
     repo   = "syncthing";
     rev    = "v${version}";
-    sha256 = "1mcn2vmv3hvp0ni9jxbjj3qp0l6ls07qmq33amhvjhpfafqzn279";
+    sha256 = "0zhxgl6pgf60x99cappdfzk7h23g37hlanh72bwypx7pwbvhc91l";
   };
 
   buildInputs = [ go ];
diff --git a/pkgs/applications/office/scribus/default.nix b/pkgs/applications/office/scribus/default.nix
index d592e149588a..e1c80c50ee51 100644
--- a/pkgs/applications/office/scribus/default.nix
+++ b/pkgs/applications/office/scribus/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, pkgconfig, freetype, lcms, libtiff, libxml2
-, libart_lgpl, qt4, python, cups, fontconfig, libjpeg
+, libart_lgpl, qt4, pythonFull, cups, fontconfig, libjpeg
 , zlib, libpng, xorg, cairo, podofo, aspell, boost, cmake }:
 
 stdenv.mkDerivation rec {
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = with xorg;
     [ pkgconfig cmake freetype lcms libtiff libxml2 libart_lgpl qt4
-      python cups fontconfig
+      pythonFull cups fontconfig
       libjpeg zlib libpng podofo aspell cairo
       boost # for internal 2geom library
       libXaw libXext libX11 libXtst libXi libXinerama
diff --git a/pkgs/applications/science/logic/coq/default.nix b/pkgs/applications/science/logic/coq/default.nix
index 38ba14e83cf8..6c4211178077 100644
--- a/pkgs/applications/science/logic/coq/default.nix
+++ b/pkgs/applications/science/logic/coq/default.nix
@@ -14,8 +14,8 @@ let
     substituteInPlace plugins/micromega/sos.ml --replace "; csdp" "; ${csdp}/bin/csdp"
     substituteInPlace plugins/micromega/coq_micromega.ml --replace "System.is_in_system_path \"csdp\"" "true"
   '' else "";
-in
 
+self =
 stdenv.mkDerivation {
   name = "coq-${version}";
 
@@ -62,6 +62,22 @@ stdenv.mkDerivation {
     envHooks=(''${envHooks[@]} addCoqPath)
   '';
 
+  passthru = {
+    emacsBufferSetup = pkgs: ''
+      ; Propagate coq paths to children
+      (inherit-local-permanent coq-prog-name "${self}/bin/coqtop")
+      (inherit-local-permanent coq-dependency-analyzer "${self}/bin/coqdep")
+      (inherit-local-permanent coq-compiler "${self}/bin/coqc")
+      ; If the coq-library path was already set, re-set it based on our current coq
+      (when (fboundp 'get-coq-library-directory)
+        (inherit-local-permanent coq-library-directory (get-coq-library-directory))
+        (coq-prog-args))
+      ; Pass proof-general's coq flags to flycheck command (pretty ugly, should probably be part of PG)
+      (inherit-local-permanent flycheck-command-wrapper-function (lambda (cmd)
+        (append (funcall (default-value 'flycheck-command-wrapper-function) cmd) (coq-coqtop-prog-args coq-load-path))))
+    '';
+  };
+
   meta = with stdenv.lib; {
     description = "Formal proof management system";
     longDescription = ''
@@ -76,4 +92,4 @@ stdenv.mkDerivation {
     maintainers = with maintainers; [ roconnor thoughtpolice vbgl ];
     platforms = platforms.unix;
   };
-}
+}; in self
diff --git a/pkgs/applications/version-management/git-and-tools/git-extras/default.nix b/pkgs/applications/version-management/git-and-tools/git-extras/default.nix
index ba53994d44ce..f8ac8c385e60 100644
--- a/pkgs/applications/version-management/git-and-tools/git-extras/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-extras/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "git-extras-${version}";
-  version = "4.1.0";
+  version = "4.2.0";
 
   src = fetchurl {
     url = "https://github.com/tj/git-extras/archive/${version}.tar.gz";
-    sha256 = "d4c028e2fe78abde8f3e640b70f431318fb28d82894dde22772efe8ba3563f85";
+    sha256 = "0pr2vf5rajkwjm45zvnwkc13kvk3kyr18axxvmm8drsqdkr8lrjk";
   };
 
   phases = [ "unpackPhase" "installPhase" ];
diff --git a/pkgs/applications/version-management/yadm/default.nix b/pkgs/applications/version-management/yadm/default.nix
index 7990f996ec3a..e1ce841ede25 100644
--- a/pkgs/applications/version-management/yadm/default.nix
+++ b/pkgs/applications/version-management/yadm/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation {
     a specific OS or host. Supplies a method of encrypting confidential data so it
     can safely be stored in your repository.
     '';
-    licence = stdenv.lib.licenses.gpl3;
+    license = stdenv.lib.licenses.gpl3;
     platforms = stdenv.lib.platforms.unix;
   };
 }
diff --git a/pkgs/applications/video/handbrake/default.nix b/pkgs/applications/video/handbrake/default.nix
index 9f257cde21f9..1dbe34553b0a 100644
--- a/pkgs/applications/video/handbrake/default.nix
+++ b/pkgs/applications/video/handbrake/default.nix
@@ -44,7 +44,6 @@ stdenv.mkDerivation rec {
     lame ffmpeg libdvdread libdvdnav libbluray mp4v2 mpeg2dec x264 x265 libvpx
   ] ++ buildInputsX;
 
-
   src = fetchurl {
     url = "http://download.handbrake.fr/releases/${version}/HandBrake-${version}.tar.bz2";
     sha256 = "1w720y3bplkz187wgvy4a4xm0vpppg45mlni55l6yi8v2bfk14pv";
@@ -75,6 +74,11 @@ stdenv.mkDerivation rec {
     cd build
   '';
 
+  LD_LIBRARY_PATH = stdenv.lib.makeLibraryPath [ x265 ];
+  preFixup = ''
+    gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : "${LD_LIBRARY_PATH}")
+  '';
+
   meta = {
     homepage = http://handbrake.fr/;
     description = "A tool for ripping DVDs into video files";
diff --git a/pkgs/applications/video/shotcut/default.nix b/pkgs/applications/video/shotcut/default.nix
index efab9703df3d..34c5650e9f78 100644
--- a/pkgs/applications/video/shotcut/default.nix
+++ b/pkgs/applications/video/shotcut/default.nix
@@ -5,11 +5,11 @@ qmakeHook, makeQtWrapper }:
 
 stdenv.mkDerivation rec {
   name = "shotcut-${version}";
-  version = "16.08";
+  version = "16.10";
 
   src = fetchurl {
     url = "https://github.com/mltframework/shotcut/archive/v${version}.tar.gz";
-    sha256 = "10f32mfj3f8mjp0yi0jb7wc5d3inycn5c1pvqdagjhyyv3rvx9zy";
+    sha256 = "0brskci86bwdj2ahjfvv3v254ligjn97bm0f6c8yg46r0jb8q5xw";
   };
 
   buildInputs = [ SDL frei0r gettext mlt pkgconfig qtbase qtmultimedia qtwebkit
diff --git a/pkgs/applications/window-managers/lemonbar/default.nix b/pkgs/applications/window-managers/lemonbar/default.nix
index 042abf09dad2..27cb564d2c6b 100644
--- a/pkgs/applications/window-managers/lemonbar/default.nix
+++ b/pkgs/applications/window-managers/lemonbar/default.nix
@@ -1,27 +1,22 @@
-{ stdenv, fetchFromGitHub, perl, libxcb }:
+{ stdenv, fetchurl, perl, libxcb }:
 
-let
-  version = "1.2pre";
-in
-  stdenv.mkDerivation rec {
-    name = "lemonbar-${version}";
+stdenv.mkDerivation rec {
+  name = "lemonbar-1.2";
   
-    src = fetchFromGitHub {
-      owner = "LemonBoy";
-      repo = "bar";
-      rev = "61985278f2af1e4e85d63a696ffedc5616b06bc0";
-      sha256 = "0a8djlayimjdg5fj50lpifsv6gkb577bca68wmk9wg9y9n27pgay";
-    };
+  src = fetchurl {
+    url    = "https://github.com/LemonBoy/bar/archive/v1.2.tar.gz";
+    sha256 = "1smz8lh930bnb6a4lrm07l3z2k071kc8p2pljk5wsrch3x2xhimq";
+  };
   
-    buildInputs = [ libxcb perl ];
+  buildInputs = [ libxcb perl ];
   
-    prePatch = ''sed -i "s@/usr@$out@" Makefile'';
+  prePatch = ''sed -i "s@/usr@$out@" Makefile'';
   
-    meta = with stdenv.lib; {
-      description = "A lightweight xcb based bar";
-      homepage = https://github.com/LemonBoy/bar;
-      maintainers = [ maintainers.meisternu ];
-      license = "Custom";   
-      platforms = platforms.linux;
-    };
+  meta = with stdenv.lib; {
+    description = "A lightweight xcb based bar";
+    homepage = https://github.com/LemonBoy/bar;
+    maintainers = [ maintainers.meisternu ];
+    license = "Custom";   
+    platforms = platforms.linux;
+  };
 }
diff --git a/pkgs/applications/window-managers/lemonbar/xft.nix b/pkgs/applications/window-managers/lemonbar/xft.nix
index f5dd944a43d2..132c10ae9733 100644
--- a/pkgs/applications/window-managers/lemonbar/xft.nix
+++ b/pkgs/applications/window-managers/lemonbar/xft.nix
@@ -1,27 +1,24 @@
 { stdenv, fetchFromGitHub, perl, libxcb, libXft }:
 
-let
-  version = "2015-07-23";
-in
-  stdenv.mkDerivation rec {
-    name = "bar-xft-git-${version}";
+stdenv.mkDerivation rec {
+  name = "lemonbar-xft-unstable-2016-02-17";
 
-    src = fetchFromGitHub {
-      owner = "krypt-n";
-      repo = "bar";
-      rev = "3020df19232153f9e98ae0c8111db3de938a2719";
-      sha256 = "0a54yr534jd4l5gjzpypc0y5lh2qb2wsrd662s84jjgq8bpss8av";
-    };
+  src = fetchFromGitHub {
+    owner  = "krypt-n";
+    repo   = "bar";
+    rev    = "a43b801ddc0f015ce8b1211f4c062fad12cd63a9";
+    sha256 = "0iqas07qjvabxyvna2m9aj5bcwnkdii1izl9jxha63vz0zlsc4gd";
+  };
 
-    buildInputs = [ libxcb libXft perl ];
+  buildInputs = [ libxcb libXft perl ];
 
-    prePatch = ''sed -i "s@/usr@$out@" Makefile'';
+  prePatch = ''sed -i "s@/usr@$out@" Makefile'';
 
-    meta = {
-      description = "A lightweight xcb based bar with XFT-support";
-      homepage = https://github.com/krypt-n/bar;
-      maintainers = [ stdenv.lib.maintainers.hiberno ];
-      license = "Custom";
-      platforms = stdenv.lib.platforms.linux;
-    };
+  meta = {
+    description = "A lightweight xcb based bar with XFT-support";
+    homepage = https://github.com/krypt-n/bar;
+    maintainers = [ stdenv.lib.maintainers.hiberno ];
+    license = "Custom";
+    platforms = stdenv.lib.platforms.linux;
+  };
 }
diff --git a/pkgs/build-support/build-fhs-userenv/env.nix b/pkgs/build-support/build-fhs-userenv/env.nix
index 1dc71987f543..8bc34d672c96 100644
--- a/pkgs/build-support/build-fhs-userenv/env.nix
+++ b/pkgs/build-support/build-fhs-userenv/env.nix
@@ -89,6 +89,7 @@ let
 
       # symlink other core stuff
       ln -s /host/etc/localtime localtime
+      ln -s /host/etc/zoneinfo zoneinfo
       ln -s /host/etc/machine-id machine-id
       ln -s /host/etc/os-release os-release
 
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index 8a746ea016ef..8a9bd3ecb4d5 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -46,7 +46,20 @@ stdenv.mkDerivation {
   inherit cc shell libc_bin libc_dev libc_lib binutils_bin coreutils_bin;
   gnugrep_bin = if nativeTools then "" else gnugrep;
 
-  passthru = { inherit libc nativeTools nativeLibc nativePrefix isGNU isClang; };
+  passthru = {
+    inherit libc nativeTools nativeLibc nativePrefix isGNU isClang;
+
+    emacsBufferSetup = pkgs: ''
+      ; We should handle propagation here too
+      (mapc (lambda (arg)
+        (when (file-directory-p (concat arg "/include"))
+          (setenv "NIX_CFLAGS_COMPILE" (concat (getenv "NIX_CFLAGS_COMPILE") " -isystem " arg "/include")))
+        (when (file-directory-p (concat arg "/lib"))
+          (setenv "NIX_LDFLAGS" (concat (getenv "NIX_LDFLAGS") " -L" arg "/lib")))
+        (when (file-directory-p (concat arg "/lib64"))
+          (setenv "NIX_LDFLAGS" (concat (getenv "NIX_LDFLAGS") " -L" arg "/lib64")))) '(${concatStringsSep " " (map (pkg: "\"${pkg}\"") pkgs)}))
+    '';
+  };
 
   buildCommand =
     ''
diff --git a/pkgs/build-support/emacs/buffer.nix b/pkgs/build-support/emacs/buffer.nix
index 5632eae944c0..e366fd1f739f 100644
--- a/pkgs/build-support/emacs/buffer.nix
+++ b/pkgs/build-support/emacs/buffer.nix
@@ -1,23 +1,47 @@
 # Functions to build elisp files to locally configure emcas buffers.
 # See https://github.com/shlevy/nix-buffer
 
-{ lib, writeText }:
+{ lib, writeText, inherit-local }:
 
 {
   withPackages = pkgs: let
-      coqs = builtins.filter (x: (builtins.parseDrvName x.name).name == "coq") pkgs;
-      coq = builtins.head coqs;
-      pg-setup = if builtins.length coqs == 0 then "" else ''
-        (setq-local coq-prog-name "${coq}/bin/coqtop")
-        (setq-local coq-dependency-analyzer "${coq}/bin/coqdep")
-        (setq-local coq-compiler "${coq}/bin/coqc")
-	(setq-local coq-library-directory (get-coq-library-directory))
-	(coq-prog-args)
-      '';
+      extras = map (x: x.emacsBufferSetup pkgs) (builtins.filter (builtins.hasAttr "emacsBufferSetup") pkgs);
     in writeText "dir-locals.el" ''
+      (require 'inherit-local "${inherit-local}/share/emacs/site-lisp/elpa/inherit-local-${inherit-local.version}/inherit-local.elc")
+
+      ; Only set up nixpkgs buffer handling when we have some buffers active
+      (defvar nixpkgs--buffer-count 0)
+      (when (eq nixpkgs--buffer-count 0)
+        ; When generating a new temporary buffer (one whose name starts with a space), do inherit-local inheritance and make it a nixpkgs buffer
+        (defun nixpkgs--around-generate (orig name)
+          (if (eq (aref name 0) ?\s)
+              (let ((buf (funcall orig name)))
+                (when (inherit-local-inherit-child buf)
+                  (with-current-buffer buf
+                    (make-local-variable 'kill-buffer-hook)
+                    (setq nixpkgs--buffer-count (1+ nixpkgs--buffer-count))
+                    (add-hook 'kill-buffer-hook 'nixpkgs--decrement-buffer-count)))
+                buf)
+            (funcall orig name)))
+        (advice-add 'generate-new-buffer :around #'nixpkgs--around-generate)
+        ; When we have no more nixpkgs buffers, tear down the buffer handling
+        (defun nixpkgs--decrement-buffer-count ()
+          (setq nixpkgs--buffer-count (1- nixpkgs--buffer-count))
+          (when (eq nixpkgs--buffer-count 0)
+            (advice-remove 'generate-new-buffer #'nixpkgs--around-generate)
+            (fmakunbound 'nixpkgs--around-generate)
+            (fmakunbound 'nixpkgs--decrement-buffer-count))))
+      (setq nixpkgs--buffer-count (1+ nixpkgs--buffer-count))
+      (make-local-variable 'kill-buffer-hook)
+      (add-hook 'kill-buffer-hook 'nixpkgs--decrement-buffer-count)
+
+      ; Add packages to PATH and exec-path
       (make-local-variable 'process-environment)
+      (put 'process-environment 'permanent-local t)
+      (inherit-local 'process-environment)
       (setenv "PATH" (concat "${lib.makeSearchPath "bin" pkgs}:" (getenv "PATH")))
-      (setq-local exec-path (append '(${builtins.concatStringsSep " " (map (p: "\"${p}/bin\"") pkgs)}) exec-path))
-      ${pg-setup}
+      (inherit-local-permanent exec-path (append '(${builtins.concatStringsSep " " (map (p: "\"${p}/bin\"") pkgs)}) exec-path))
+
+      ${lib.concatStringsSep "\n" extras}
     '';
 }
diff --git a/pkgs/build-support/emacs/wrapper.nix b/pkgs/build-support/emacs/wrapper.nix
index 45931e6914ad..b13def07bb88 100644
--- a/pkgs/build-support/emacs/wrapper.nix
+++ b/pkgs/build-support/emacs/wrapper.nix
@@ -85,13 +85,14 @@ stdenv.mkDerivation {
      done
 
      siteStart="$out/share/emacs/site-lisp/site-start.el"
+     siteStartByteCompiled="$siteStart"c
 
      # A dependency may have brought the original siteStart, delete it and
      # create our own
      # Begin the new site-start.el by loading the original, which sets some
      # NixOS-specific paths. Paths are searched in the reverse of the order
      # they are specified in, so user and system profile paths are searched last.
-     rm -f $siteStart
+     rm -f $siteStart $siteStartByteCompiled
      cat >"$siteStart" <<EOF
 (load-file "$emacs/share/emacs/site-lisp/site-start.el")
 (add-to-list 'load-path "$out/share/emacs/site-lisp")
diff --git a/pkgs/build-support/fetchdarcs/default.nix b/pkgs/build-support/fetchdarcs/default.nix
index 3c2e0524eea5..ecec51590b95 100644
--- a/pkgs/build-support/fetchdarcs/default.nix
+++ b/pkgs/build-support/fetchdarcs/default.nix
@@ -7,7 +7,8 @@ stdenv.mkDerivation {
 
   outputHashAlgo = if sha256 == "" then "md5" else "sha256";
   outputHashMode = "recursive";
-  outputHash = if sha256 == "" then md5 else sha256;
+  outputHash = if sha256 == "" then
+    (stdenv.lib.fetchMD5warn "fetchdarcs" url md5) else sha256;
   
   inherit url rev context;
 }
diff --git a/pkgs/build-support/fetchegg/default.nix b/pkgs/build-support/fetchegg/default.nix
index 3e0d5d566ad7..e82d4d95ac26 100644
--- a/pkgs/build-support/fetchegg/default.nix
+++ b/pkgs/build-support/fetchegg/default.nix
@@ -11,7 +11,8 @@ stdenv.mkDerivation {
 
   outputHashAlgo = if sha256 == "" then "md5" else "sha256";
   outputHashMode = "recursive";
-  outputHash = if sha256 == "" then md5 else sha256;
+  outputHash = if sha256 == "" then
+    (stdenv.lib.fetchMD5warn "fetchegg" name md5) else sha256;
 
   inherit version;
 
diff --git a/pkgs/build-support/fetchfile/default.nix b/pkgs/build-support/fetchfile/default.nix
index bdddfab2b4d6..685c1e69520a 100644
--- a/pkgs/build-support/fetchfile/default.nix
+++ b/pkgs/build-support/fetchfile/default.nix
@@ -1,7 +1,11 @@
-{stdenv}: {pathname, md5}: stdenv.mkDerivation {
+{stdenv}: {pathname, md5 ? "", sha256 ? ""}: stdenv.mkDerivation {
   name = baseNameOf (toString pathname);
   builder = ./builder.sh;
   pathname = pathname;
-  md5 = md5;
+} // if (sha256 == "") then {
+  md5 = (stdenv.lib.fetchMD5warn "fetchfile" pathname md5);
   id = md5;
+} else {
+  sha256 = sha256;
+  id = sha256;
 }
diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix
index 105b3d56bf42..59e06c95ebba 100644
--- a/pkgs/build-support/fetchgit/default.nix
+++ b/pkgs/build-support/fetchgit/default.nix
@@ -50,7 +50,8 @@ stdenv.mkDerivation {
 
   outputHashAlgo = if sha256 == "" then "md5" else "sha256";
   outputHashMode = "recursive";
-  outputHash = if sha256 == "" then md5 else sha256;
+  outputHash = if sha256 == "" then
+    (stdenv.lib.fetchMD5warn "fetchgit" url md5) else sha256;
 
   inherit url rev leaveDotGit fetchSubmodules deepClone branchName;
 
diff --git a/pkgs/build-support/fetchhg/default.nix b/pkgs/build-support/fetchhg/default.nix
index 79f610166a79..b30a3556b0fe 100644
--- a/pkgs/build-support/fetchhg/default.nix
+++ b/pkgs/build-support/fetchhg/default.nix
@@ -15,7 +15,8 @@ stdenv.mkDerivation {
 
   outputHashAlgo = if md5 != null then "md5" else "sha256";
   outputHashMode = "recursive";
-  outputHash = if md5 != null then md5 else sha256;
+  outputHash = if md5 != null then
+    (stdenv.lib.fetchMD5warn "fetchhg" url md5) else sha256;
 
   inherit url rev;
   preferLocalBuild = true;
diff --git a/pkgs/build-support/fetchsvn/default.nix b/pkgs/build-support/fetchsvn/default.nix
index 85ec52c4bde0..b6f68e21384d 100644
--- a/pkgs/build-support/fetchsvn/default.nix
+++ b/pkgs/build-support/fetchsvn/default.nix
@@ -29,7 +29,8 @@ stdenv.mkDerivation {
 
   outputHashAlgo = if sha256 == "" then "md5" else "sha256";
   outputHashMode = "recursive";
-  outputHash = if sha256 == "" then md5 else sha256;
+  outputHash = if sha256 == "" then
+    (stdenv.lib.fetchMD5warn "fetchsvn" url md5) else sha256;
   
   inherit url rev sshSupport openssh ignoreExternals;
 
diff --git a/pkgs/build-support/fetchsvnssh/default.nix b/pkgs/build-support/fetchsvnssh/default.nix
index 6c6c03d68732..2d151fad07cb 100644
--- a/pkgs/build-support/fetchsvnssh/default.nix
+++ b/pkgs/build-support/fetchsvnssh/default.nix
@@ -8,7 +8,8 @@ stdenv.mkDerivation {
 
   outputHashAlgo = if sha256 == "" then "md5" else "sha256";
   outputHashMode = "recursive";
-  outputHash = if sha256 == "" then md5 else sha256;
+  outputHash = if sha256 == "" then
+    (stdenv.lib.fetchMD5warn "fetchsvnssh" url md5) else sha256;
   
   sshSubversion = ./sshsubversion.exp;
   
diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix
index 00f485ce6975..2cc45ca4bbf2 100644
--- a/pkgs/build-support/fetchurl/default.nix
+++ b/pkgs/build-support/fetchurl/default.nix
@@ -112,7 +112,8 @@ if (!hasHash) then throw "Specify hash for fetchurl fixed-output derivation: ${s
   outputHashAlgo = if outputHashAlgo != "" then outputHashAlgo else
       if sha512 != "" then "sha512" else if sha256 != "" then "sha256" else if sha1 != "" then "sha1" else "md5";
   outputHash = if outputHash != "" then outputHash else
-      if sha512 != "" then sha512 else if sha256 != "" then sha256 else if sha1 != "" then sha1 else md5;
+      if sha512 != "" then sha512 else if sha256 != "" then sha256 else if sha1 != "" then sha1 else
+        (stdenv.lib.fetchMD5warn "fetchurl" (builtins.head urls_) md5);
 
   outputHashMode = if (recursiveHash || executable) then "recursive" else "flat";
 
diff --git a/pkgs/build-support/ocaml/default.nix b/pkgs/build-support/ocaml/default.nix
index 54951dadf56d..cc2001c66e2e 100644
--- a/pkgs/build-support/ocaml/default.nix
+++ b/pkgs/build-support/ocaml/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, writeText, ocaml, findlib, camlp4 }:
+{ stdenv, writeText, ocaml, findlib, ocamlbuild, camlp4 }:
 
 { name, version, buildInputs ? [],
   createFindlibDestdir ?  true,
@@ -19,7 +19,7 @@ in
 stdenv.mkDerivation (args // {
   name = "ocaml-${name}-${version}";
 
-  buildInputs = [ ocaml findlib camlp4 ] ++ buildInputs;
+  buildInputs = [ ocaml findlib ocamlbuild camlp4 ] ++ buildInputs;
 
   setupHook = if setupHook == null && hasSharedObjects
   then writeText "setupHook.sh" ''
diff --git a/pkgs/data/documentation/stdman/default.nix b/pkgs/data/documentation/stdman/default.nix
index cc6f871cded8..114c8ebce980 100644
--- a/pkgs/data/documentation/stdman/default.nix
+++ b/pkgs/data/documentation/stdman/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
       formatting for easy readability.";
     homepage = https://github.com/jeaye/stdman;
     license = licenses.mit;
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     maintainers = [ maintainers.twey ];
   };
 }
diff --git a/pkgs/data/documentation/zeal/default.nix b/pkgs/data/documentation/zeal/default.nix
index 89e5d83df614..a4ecc24d3a65 100644
--- a/pkgs/data/documentation/zeal/default.nix
+++ b/pkgs/data/documentation/zeal/default.nix
@@ -2,14 +2,14 @@
 , qtimageformats, qtwebkit, qtx11extras, xcbutilkeysyms, qmakeHook }:
 
 stdenv.mkDerivation rec {
-  version = "0.2.1";
+  version = "0.3.0";
   name = "zeal-${version}";
 
   src = fetchFromGitHub {
     owner = "zealdocs";
     repo = "zeal";
     rev = "v${version}";
-    sha256 = "1j1nfvkwkb2xdh289q5gdb526miwwqmqjyd6fz9qm5dg467wmwa3";
+    sha256 = "1f0nsnily2lsrraj1f8j34lqhiskiyq22clkci7w4h2zfv35j1s0";
   };
 
   buildInputs = [
@@ -34,4 +34,3 @@ stdenv.mkDerivation rec {
     maintainers = with stdenv.lib.maintainers; [ skeidel ];
   };
 }
-
diff --git a/pkgs/data/fonts/camingo-code/default.nix b/pkgs/data/fonts/camingo-code/default.nix
new file mode 100644
index 000000000000..bc1402270aa4
--- /dev/null
+++ b/pkgs/data/fonts/camingo-code/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, unzip }:
+
+stdenv.mkDerivation rec {
+  name = "camingo-code-${version}";
+  version = "1.0";
+
+  src = fetchurl {
+    url = https://github.com/chrissimpkins/codeface/releases/download/font-collection/codeface-fonts.zip;
+    sha256 = "1gbpfa5mqyhi5yrb6dl708pggiwp002b532fn3axiagb0cxxf02s";
+  };
+
+  buildInputs = [ unzip ];
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    mkdir -p $out/share/doc/${name}
+    cp -v camingo-code/*.ttf $out/share/fonts/truetype/
+    cp -v camingo-code/*.txt $out/share/doc/${name}/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://www.myfonts.com/fonts/jan-fromm/camingo-code/;
+    description = "A monospaced typeface designed for source-code editors";
+    platforms = platforms.all;
+    license = licenses.cc-by-nd-30;
+  };
+}
diff --git a/pkgs/data/fonts/input-fonts/default.nix b/pkgs/data/fonts/input-fonts/default.nix
new file mode 100644
index 000000000000..8cfda1a5e9c8
--- /dev/null
+++ b/pkgs/data/fonts/input-fonts/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, requireFile, unzip }:
+
+stdenv.mkDerivation rec {
+  name = "input-fonts-${version}";
+  version = "2016-10-06"; # date of the download and checksum
+
+  src = requireFile {
+    name = "Input-Font.zip";
+    url = "http://input.fontbureau.com/download/";
+    sha256 = "06hrsrb5a6hzrgkkhk0gdj92rhgr433vgn4j5g3pd8f1ijlfqn4y";
+  };
+
+  nativeBuildInputs = [ unzip ];
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  sourceRoot = ".";
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    find Input_Fonts -name "*.ttf" -exec cp -a {} "$out"/share/fonts/truetype/ \;
+    mkdir -p "$out"/share/doc
+    cp -a *.txt "$out"/share/doc/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Fonts for Code, from Font Bureau";
+    longDescrition = ''
+      Input is a font family designed for computer programming, data,
+      and text composition. It was designed by David Jonathan Ross
+      between 2012 and 2014 and published by The Font Bureau. It
+      contains a wide array of styles so you can fine-tune the
+      typography that works best in your editing environment.
+
+      Input Mono is a monospaced typeface, where all characters occupy
+      a fixed width. Input Sans and Serif are proportional typefaces
+      that are designed with all of the features of a good monospace —
+      generous spacing, large punctuation, and easily distinguishable
+      characters — but without the limitations of a fixed width.
+    '';
+    homepage = http://input.fontbureau.com;
+    license = licenses.unfree;
+    maintainers = with maintainers; [ romildo ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/data/icons/maia-icon-theme/default.nix b/pkgs/data/icons/maia-icon-theme/default.nix
index 492a4627de33..f4f81f8de8be 100644
--- a/pkgs/data/icons/maia-icon-theme/default.nix
+++ b/pkgs/data/icons/maia-icon-theme/default.nix
@@ -1,27 +1,30 @@
 { stdenv, fetchFromGitHub }:
 
-stdenv.mkDerivation {
-  name = "maia-icon-theme";
+stdenv.mkDerivation rec {
+  name = "maia-icon-theme-${version}";
+  version = "2016-09-16";
 
   src = fetchFromGitHub {
     owner = "manjaro";
     repo = "artwork-maia";
-    rev = "23235fa56e6111d30e9f92576030cc855a0facbe";
-    sha256 = "1d5bv13gds1nx88pc6a9gkrz1lb8sji0wcc5h3bf4mjw0q072nfr";
+    rev = "f6718cd9c383adb77af54b694c47efa4d581f5b5";
+    sha256 = "0f9l3k9abgg8islzddrxgbxaw6vbai5bvz5qi1v2fzir7ykx7bgj";
   };
 
   dontBuild = true;
   
   installPhase = ''
     install -dm 755 $out/share/icons
-    rm icons/CMakeLists.txt
-    cp -dr --no-preserve='ownership' icons $out/share/icons/Maia
+    for f in "" "-dark"; do
+      rm icons$f/CMakeLists.txt
+      cp -dr --no-preserve='ownership' icons$f $out/share/icons/maia$f
+    done
   '';
 
   meta = with stdenv.lib; {
     description = "Icons based on Breeze and Super Flat Remix";
     homepage = https://github.com/manjaro/artwork-maia;
-    licence = licenses.free;
+    license = licenses.free;
     maintainers = [ maintainers.mounium ];
     platforms = platforms.all;
   };
diff --git a/pkgs/data/misc/cacert/default.nix b/pkgs/data/misc/cacert/default.nix
index 3ce6dc81a396..5095fce8958e 100644
--- a/pkgs/data/misc/cacert/default.nix
+++ b/pkgs/data/misc/cacert/default.nix
@@ -1,25 +1,49 @@
-{ stdenv, nss, curl, perl }:
+{ stdenv, fetchurl, writeText, nss, python
+, blacklist ? []
+, includeEmail ? false
+}:
+
+with stdenv.lib;
+
+let
+
+  certdata2pem = fetchurl {
+    name = "certdata2pem.py";
+    url = "https://anonscm.debian.org/cgit/collab-maint/ca-certificates.git/plain/mozilla/certdata2pem.py?h=debian/20160104";
+    sha256 = "0bw11mgfrf19qziyvdnq22kirp0nn54lfsanrg5h6djs6ig1c2im";
+  };
+
+in
 
 stdenv.mkDerivation rec {
   name = "nss-cacert-${nss.version}";
 
   src = nss.src;
 
-  postPatch = ''
-    unpackFile ${curl.src};
+  nativeBuildInputs = [ python ];
 
-    # Remove dependency on LWP, curl is enough. Also, since curl here
-    # is working on a local file it will not actually get a 200 OK, so
-    # remove that expectation.
-    substituteInPlace curl-*/lib/mk-ca-bundle.pl \
-      --replace 'use LWP::UserAgent;' "" \
-      --replace ' && $out[0] == 200' ""
-  '';
+  configurePhase = ''
+    ln -s nss/lib/ckfw/builtins/certdata.txt
+
+    cat << EOF > blacklist.txt
+    ${concatStringsSep "\n" (map (c: ''"${c}"'') blacklist)}
+    EOF
 
-  nativeBuildInputs = [ curl perl ];
+    cp ${certdata2pem} certdata2pem.py
+    ${optionalString includeEmail ''
+      # Disable CAs used for mail signing
+      substituteInPlace certdata2pem.py --replace \[\'CKA_TRUST_EMAIL_PROTECTION\'\] '''
+    ''}
+  '';
 
   buildPhase = ''
-    perl curl-*/lib/mk-ca-bundle.pl -d "file://$(pwd)/nss/lib/ckfw/builtins/certdata.txt" ca-bundle.crt
+    python certdata2pem.py | grep -vE '^(!|UNTRUSTED)'
+
+    for cert in *.crt; do
+      echo $cert | cut -d. -f1 | sed -e 's,_, ,g' >> ca-bundle.crt
+      cat $cert >> ca-bundle.crt
+      echo >> ca-bundle.crt
+    done
   '';
 
   installPhase = ''
@@ -27,10 +51,10 @@ stdenv.mkDerivation rec {
     cp -v ca-bundle.crt $out/etc/ssl/certs
   '';
 
-  meta = with stdenv.lib; {
+  meta = {
     homepage = http://curl.haxx.se/docs/caextract.html;
     description = "A bundle of X.509 certificates of public Certificate Authorities (CA)";
     platforms = platforms.all;
-    maintainers = with maintainers; [ wkennington ];
+    maintainers = with maintainers; [ wkennington fpletz ];
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.20/core/epiphany/default.nix b/pkgs/desktops/gnome-3/3.20/core/epiphany/default.nix
index d50036a597e6..13efcd613928 100644
--- a/pkgs/desktops/gnome-3/3.20/core/epiphany/default.nix
+++ b/pkgs/desktops/gnome-3/3.20/core/epiphany/default.nix
@@ -18,7 +18,8 @@ stdenv.mkDerivation rec {
                   webkitgtk libsoup libsecret gnome_desktop libnotify libtool
                   sqlite isocodes nss itstool p11_kit nspr icu gnome3.yelp_tools
                   gdk_pixbuf gnome3.defaultIconTheme librsvg which gnome_common
-                  gcr avahi gnome3.gsettings_desktop_schemas gnome3.dconf ];
+                  gcr avahi gnome3.gsettings_desktop_schemas gnome3.dconf
+                  gnome3.glib_networking ];
 
   NIX_CFLAGS_COMPILE = "-I${nspr.dev}/include/nspr -I${nss.dev}/include/nss -I${glib.dev}/include/gio-unix-2.0";
 
diff --git a/pkgs/desktops/lxqt/base/liblxqt/default.nix b/pkgs/desktops/lxqt/base/liblxqt/default.nix
new file mode 100644
index 000000000000..b973940b9b63
--- /dev/null
+++ b/pkgs/desktops/lxqt/base/liblxqt/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt, xorg }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "liblxqt";
+  version = "0.11.0";
+
+  src = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "12gla3pdg0n28w15qrmha83xm3021xdby8ydwp1qzcips5pa5zac";
+  };
+
+  nativeBuildInputs = [
+    cmake
+  ];
+
+  buildInputs = [
+    qt5.qtx11extras
+    qt5.qttools
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.libqtxdg
+    xorg.libXScrnSaver
+  ];
+
+  cmakeFlags = [
+    "-DPULL_TRANSLATIONS=NO"
+    "-DLXQT_ETC_XDG_DIR=/run/current-system/sw/etc/xdg"
+  ];
+  
+  patchPhase = ''
+    sed -i 's|set(LXQT_SHARE_DIR .*)|set(LXQT_SHARE_DIR "/run/current-system/sw/share/lxqt")|' CMakeLists.txt
+  '';
+  
+  meta = with stdenv.lib; {
+    description = "Core utility library for all LXQt components";
+    homepage = https://github.com/lxde/liblxqt;
+    license = licenses.lgpl21Plus;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/base/libqtxdg/default.nix b/pkgs/desktops/lxqt/base/libqtxdg/default.nix
new file mode 100644
index 000000000000..47d3fb2e91c3
--- /dev/null
+++ b/pkgs/desktops/lxqt/base/libqtxdg/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, cmake, qt5 }:
+
+stdenv.mkDerivation rec {
+  name = "libqtxdg-${version}";
+  version = "2.0.0";
+
+  src = fetchFromGitHub {
+    owner = "lxde";
+    repo = "libqtxdg";
+    rev = version;
+    sha256 = "1s5jw4q6gcivk7mc95ir9q2nry4yyhfwy039ddf5ymh79nynv8vy";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ qt5.qtbase qt5.qtsvg ];
+
+  meta = with stdenv.lib; {
+    description = "Qt implementation of freedesktop.org xdg specs";
+    homepage = https://github.com/lxde/libqtxdg;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/base/libsysstat/default.nix b/pkgs/desktops/lxqt/base/libsysstat/default.nix
new file mode 100644
index 000000000000..363b3d33d141
--- /dev/null
+++ b/pkgs/desktops/lxqt/base/libsysstat/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, cmake, qt5 }:
+
+stdenv.mkDerivation rec {
+  name = "libsysstat-${version}";
+  version = "0.3.2";
+
+  src = fetchFromGitHub {
+    owner = "lxde";
+    repo = "libsysstat";
+    rev = version;
+    sha256 = "1swpnz37daj3njkbqddmhaiipfl335c3g675y9afhabg7l4anf1n";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ qt5.qtbase ];
+
+  meta = with stdenv.lib; {
+    description = "Library used to query system info and statistics";
+    homepage = https://github.com/lxde/libsysstat;
+    license = licenses.lgpl21Plus;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/libfm-qt/default.nix b/pkgs/desktops/lxqt/core/libfm-qt/default.nix
new file mode 100644
index 000000000000..71b6cff5899e
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/libfm-qt/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, qt5, kde5, lxqt, xorg,
+libfm, menu-cache }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "libfm-qt";
+  version = "0.11.1";
+
+  src = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "1kgvzjsa4ihlj2clz6y6s95nq0lhg66d1dhkgw3mdqaak7d0pdiz";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+    lxqt.liblxqt
+    lxqt.libqtxdg
+  ];
+
+  buildInputs = [
+    qt5.qtx11extras
+    qt5.qttools
+    qt5.qtsvg
+    kde5.kwindowsystem
+    xorg.libpthreadstubs
+    xorg.libXdmcp
+    libfm
+    menu-cache
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+   
+  meta = with stdenv.lib; {
+    description = "Core library of PCManFM-Qt (Qt binding for libfm)";
+    homepage = https://github.com/lxde/libfm-qt;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-about/default.nix b/pkgs/desktops/lxqt/core/lxqt-about/default.nix
new file mode 100644
index 000000000000..3e3b047dd4ed
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-about/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt, xorg }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lxqt-about";
+  version = "0.11.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "0739gp3af68cvf8fxqvd203xqzncglmxpklq8mryrs5f1xnqp6gc";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    qt5.qtx11extras
+    qt5.qttools
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  postPatch = lxqt.standardPatch;
+
+  meta = with stdenv.lib; {
+    description = "Dialogue window providing information about LXQt and the system it's running on";
+    homepage = https://github.com/lxde/lxqt-about;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-admin/default.nix b/pkgs/desktops/lxqt/core/lxqt-admin/default.nix
new file mode 100644
index 000000000000..da47e02dcf1f
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-admin/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt, xorg, polkit }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lxqt-admin";
+  version = "0.11.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "17g9v6dyqy5pgpqragpf0sgnfxz2ip2g7xix7kmkna3qyym44b23";
+  };
+
+  nativeBuildInputs = [
+    cmake
+  ];
+
+  buildInputs = [
+    qt5.qtx11extras
+    qt5.qttools
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+    polkit
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  postPatch = lxqt.standardPatch;
+
+  meta = with stdenv.lib; {
+    description = "LXQt system administration tool";
+    homepage = https://github.com/lxde/lxqt-admin;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-common/default.nix b/pkgs/desktops/lxqt/core/lxqt-common/default.nix
new file mode 100644
index 000000000000..a4b8f000dc7b
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-common/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt, xorg, hicolor_icon_theme, xmessage }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lxqt-common";
+  version = "0.11.0";
+
+  src = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "14nx3zcknwsn713wdnmb2xl15vf21vh13kxscdwmfnd48m5j4m3b";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    qt5.qtx11extras
+    qt5.qttools
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+    hicolor_icon_theme
+    xmessage
+  ];
+
+  postPatch = lxqt.standardPatch
+  + ''
+    substituteInPlace ./startlxqt.in \
+      --replace  "cp " "cp --no-preserve=mode " \
+      --replace xmessage "${xmessage}"/bin/xmessage
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Common files for LXQt";
+    homepage = https://github.com/lxde/lxqt-common;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-config/default.nix b/pkgs/desktops/lxqt/core/lxqt-config/default.nix
new file mode 100644
index 000000000000..66187a0ae6f8
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-config/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, qt5, kde5, lxqt, xorg }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lxqt-config";
+  version = "0.11.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "187x19s0jw20an37v7svkry6p021ply4i3ngh5w2nx5rlqkf63qw";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkgconfig
+   ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qtx11extras
+    qt5.qttools
+    qt5.qtsvg
+    kde5.kwindowsystem
+    kde5.libkscreen
+    lxqt.liblxqt
+    lxqt.libqtxdg
+    xorg.libpthreadstubs
+    xorg.libXdmcp
+    xorg.libXScrnSaver
+    xorg.libxcb
+    xorg.libXcursor
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  postPatch = lxqt.standardPatch;
+
+  meta = with stdenv.lib; {
+    description = "Tools to configure LXQt and the underlying operating system";
+    homepage = https://github.com/lxde/lxqt-config;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-globalkeys/default.nix b/pkgs/desktops/lxqt/core/lxqt-globalkeys/default.nix
new file mode 100644
index 000000000000..7f1f140653fe
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-globalkeys/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lxqt-globalkeys";
+  version = "0.11.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "05kcq21fyz7vnhh9k4nzhskgbghp1slsz14gh9anhya4a567xx0y";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtx11extras
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  postPatch = lxqt.standardPatch;
+
+  meta = with stdenv.lib; {
+    description = "Daemon used to register global keyboard shortcuts";
+    homepage = https://github.com/lxde/lxqt-globalkeys;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-l10n/default.nix b/pkgs/desktops/lxqt/core/lxqt-l10n/default.nix
new file mode 100644
index 000000000000..477575289bb1
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-l10n/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt }:
+
+stdenv.mkDerivation rec {
+  name = "lxqt-l10n-${version}";
+  version = "0.11.0";
+
+  src = fetchFromGitHub {
+    owner = "lxde";
+    repo = "lxqt-l10n";
+    rev = version;
+    sha256 = "1gwismyjfdd7lwlgfl5jvbxmkbq9v9ia0shm4f7hkkvlpc2y24gk";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    qt5.qtbase
+    qt5.qtx11extras
+    qt5.qttools
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+  ];
+
+  postPatch = ''
+    substituteInPlace CMakeLists.txt \
+      --replace "\''${LXQT_TRANSLATIONS_DIR}" "$out"/share/lxqt/translations
+  '';
+  
+  meta = with stdenv.lib; {
+    description = "Translations of LXQt";
+    homepage = https://github.com/lxde/lxqt-l10n;
+    license = licenses.lgpl21Plus;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-notificationd/default.nix b/pkgs/desktops/lxqt/core/lxqt-notificationd/default.nix
new file mode 100644
index 000000000000..1ecef6334946
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-notificationd/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lxqt-notificationd";
+  version = "0.11.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "001xcvmg7ap5pbssc9pqp4jshgq2h4zxk9rra76xnrby6k8n6p3x";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  meta = with stdenv.lib; {
+    description = "The LXQt notification daemon";
+    homepage = https://github.com/lxde/lxqt-notificationd;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-openssh-askpass/default.nix b/pkgs/desktops/lxqt/core/lxqt-openssh-askpass/default.nix
new file mode 100644
index 000000000000..202231fbdea9
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-openssh-askpass/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lxqt-openssh-askpass";
+  version = "0.11.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "0nz8sv3yrqbzgmd6jahaqaa71axy5x06k091splp9cmab0vzng7c";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtx11extras
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  meta = with stdenv.lib; {
+    description = "GUI to query passwords on behalf of SSH agents";
+    homepage = https://github.com/lxde/lxqt-openssh-askpass;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-panel/default.nix b/pkgs/desktops/lxqt/core/lxqt-panel/default.nix
new file mode 100644
index 000000000000..d5786444fadb
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-panel/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, qt5, kde5, lxqt, xorg,
+libstatgrab, lm_sensors, libpulseaudio, alsaLib, menu-cache,
+lxmenu-data }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lxqt-panel";
+  version = "0.11.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "0lwgz6nir4cd50xbmc3arngnw38rb5kqgcsgp3dlq6gpncg45hdq";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtx11extras
+    qt5.qtsvg
+    qt5.libdbusmenu
+    kde5.kwindowsystem
+    kde5.solid
+    kde5.kguiaddons
+    lxqt.liblxqt
+    lxqt.libqtxdg
+    lxqt.lxqt-globalkeys
+    lxqt.libsysstat
+    xorg.libpthreadstubs
+    xorg.libXdmcp
+    libstatgrab
+    lm_sensors
+    libpulseaudio
+    alsaLib
+    menu-cache
+    lxmenu-data
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  postPatch = lxqt.standardPatch;
+
+  meta = with stdenv.lib; {
+    description = "The LXQt desktop panel";
+    homepage = https://github.com/lxde/lxqt-panel;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-policykit/default.nix b/pkgs/desktops/lxqt/core/lxqt-policykit/default.nix
new file mode 100644
index 000000000000..627f43f8be60
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-policykit/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, qt5, kde5, lxqt }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lxqt-policykit";
+  version = "0.11.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "0rbqzh8r259cc44f1cb236p9c3lp195zjdsw3w1nz7j7gzv9yjnd";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtx11extras
+    qt5.qtsvg
+    qt5.polkit-qt
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  meta = with stdenv.lib; {
+    description = "The LXQt PolicyKit agent";
+    homepage = https://github.com/lxde/lxqt-policykit;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-powermanagement/default.nix b/pkgs/desktops/lxqt/core/lxqt-powermanagement/default.nix
new file mode 100644
index 000000000000..aabce857edd5
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-powermanagement/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lxqt-powermanagement";
+  version = "0.11.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "10myxrhlhvr9cmcqv67skzd11c40bgqgf6qdvm5smww2il1mzfwa";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtx11extras
+    qt5.qtsvg
+    kde5.kwindowsystem
+    kde5.solid
+    kde5.kidletime
+    lxqt.liblxqt
+    lxqt.libqtxdg
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  meta = with stdenv.lib; {
+    description = "Power management module for LXQt";
+    homepage = https://github.com/lxde/lxqt-powermanagement;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-qtplugin/default.nix b/pkgs/desktops/lxqt/core/lxqt-qtplugin/default.nix
new file mode 100644
index 000000000000..e0a95d23c4e1
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-qtplugin/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lxqt-qtplugin";
+  version = "0.11.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "14bwi1c078arin025jcygz0db9nfr8qla9071ls17bbp4dh14vhx";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qtx11extras
+    qt5.qttools
+    qt5.qtsvg
+    qt5.libdbusmenu
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  postPatch = lxqt.standardPatch;
+
+  meta = with stdenv.lib; {
+    description = "LXQt Qt platform integration plugin";
+    homepage = https://github.com/lxde/lxqt-qtplugin;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-runner/default.nix b/pkgs/desktops/lxqt/core/lxqt-runner/default.nix
new file mode 100644
index 000000000000..02d6f90397ac
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-runner/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, qt5, kde5, lxqt,
+menu-cache, muparser }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lxqt-runner";
+  version = "0.11.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "1gqs1b90km39dbg49g80x770i9jknni4h8y6ka2r1fga35amllkc";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+    lxqt.lxqt-globalkeys
+    menu-cache
+    muparser
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  meta = with stdenv.lib; {
+    description = "Tool used to launch programs quickly by typing their names";
+    homepage = https://github.com/lxde/lxqt-runner;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-session/default.nix b/pkgs/desktops/lxqt/core/lxqt-session/default.nix
new file mode 100644
index 000000000000..a226169b21a9
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-session/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, qt5, kde5, lxqt, xorg, xdg-user-dirs }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lxqt-session";
+  version = "0.11.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "1vb8mcy6z1irnd977x5425mbp4c7yc9dhk5552isqss1qb44hpn4";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+    xorg.libpthreadstubs
+    xorg.libXdmcp
+    xdg-user-dirs
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  meta = with stdenv.lib; {
+    description = "An alternative session manager ported from the original razor-session";
+    homepage = https://github.com/lxde/lxqt-session;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/lxqt-sudo/default.nix b/pkgs/desktops/lxqt/core/lxqt-sudo/default.nix
new file mode 100644
index 000000000000..ad0885917aed
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/lxqt-sudo/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt, sudo }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lxqt-sudo";
+  version = "0.11.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "0nmn0j5qvqpkhlq8yvl8ycn3hijbnwxd32hhmxhcnaq07cmzbg1j";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtx11extras
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+    sudo
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  meta = with stdenv.lib; {
+    description = "GUI frontend for sudo/su";
+    homepage = https://github.com/lxde/lxqt-sudo;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/pavucontrol-qt/default.nix b/pkgs/desktops/lxqt/core/pavucontrol-qt/default.nix
new file mode 100644
index 000000000000..ea2f24d6cf1f
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/pavucontrol-qt/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, qt5, kde5, lxqt,
+xdg-user-dirs, libpulseaudio }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "pavucontrol-qt";
+  version = "0.1.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "1bis88ykasrnk9a55nnbn832acjz2h76h6i3lbxnb36yq71wan7j";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtx11extras
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+    xdg-user-dirs
+    libpulseaudio
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  meta = with stdenv.lib; {
+    description = "A Pulseaudio mixer in Qt (port of pavucontrol)";
+    homepage = https://github.com/lxde/pavucontrol-qt;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/pcmanfm-qt/default.nix b/pkgs/desktops/lxqt/core/pcmanfm-qt/default.nix
new file mode 100644
index 000000000000..bc9cf774017f
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/pcmanfm-qt/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, qt5, kde5, lxqt, xorg, libfm,
+menu-cache, lxmenu-data }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "pcmanfm-qt";
+  version = "0.11.1";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "04fv23glcnfiszam90iy3gvn2sigyk8zj8a1s43wz8fgjijnws32";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtx11extras
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+    lxqt.libfm-qt
+    xorg.libpthreadstubs
+    xorg.libXdmcp
+    libfm
+    menu-cache
+    lxmenu-data
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  meta = with stdenv.lib; {
+    description = "File manager and desktop icon manager (Qt port of PCManFM and libfm)";
+    homepage = https://github.com/lxde/pcmanfm-qt;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/core/qtermwidget/default.nix b/pkgs/desktops/lxqt/core/qtermwidget/default.nix
new file mode 100644
index 000000000000..33f3cc19cf67
--- /dev/null
+++ b/pkgs/desktops/lxqt/core/qtermwidget/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, cmake, qt5 }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "qtermwidget";
+  version = "0.7.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "18dnrzpbijh0xdgx83zs8nlbxk0d7hgzib54fqqvxyrjjy4g9scz";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ qt5.qtbase ];
+
+  meta = with stdenv.lib; {
+    description = "A terminal emulator widget for Qt 5";
+    homepage = https://github.com/lxde/qtermwidget;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/default.nix b/pkgs/desktops/lxqt/default.nix
new file mode 100644
index 000000000000..981503cab95a
--- /dev/null
+++ b/pkgs/desktops/lxqt/default.nix
@@ -0,0 +1,66 @@
+{ pkgs, newScope, fetchFromGitHub }:
+
+let
+  callPackage = newScope self;
+
+  self = rec {
+
+    # For compiling information, see:
+    # - https://github.com/lxde/lxqt/wiki/Building-from-source
+  
+    standardPatch = ''
+      for file in $(find . -name CMakeLists.txt); do
+        substituteInPlace $file \
+          --replace "DESTINATION \''${LXQT_ETC_XDG_DIR}" "DESTINATION etc/xdg" \
+          --replace "DESTINATION \"\''${LXQT_ETC_XDG_DIR}" "DESTINATION \"etc/xdg" \
+          --replace "DESTINATION \"\''${LXQT_SHARE_DIR}" "DESTINATION \"share/lxqt" \
+          --replace "DESTINATION \"\''${LXQT_GRAPHICS_DIR}" "DESTINATION \"share/lxqt/graphics" \
+          --replace "DESTINATION \"\''${QT_PLUGINS_DIR}" "DESTINATION \"lib/qt5/plugins" \
+          --replace "\''${LXQT_TRANSLATIONS_DIR}" share/lxqt/translations
+        echo ============================
+        echo $file
+        grep --color=always DESTINATION $file || true
+        grep --color=always share/lxqt/translations $file || true
+        grep --color=always platform $file || true
+      done
+      echo --------------------------------------------------------
+    '';
+
+    ### BASE
+    libqtxdg = callPackage ./base/libqtxdg { };
+    libsysstat = callPackage ./base/libsysstat { };
+    liblxqt = callPackage ./base/liblxqt { };
+
+    ### CORE 1
+    libfm-qt = callPackage ./core/libfm-qt { };
+    lxqt-about = callPackage ./core/lxqt-about { };
+    lxqt-admin = callPackage ./core/lxqt-admin { };
+    lxqt-common = callPackage ./core/lxqt-common { };
+    lxqt-config = callPackage ./core/lxqt-config { };
+    lxqt-globalkeys = callPackage ./core/lxqt-globalkeys { };
+    lxqt-l10n = callPackage ./core/lxqt-l10n { };
+    lxqt-notificationd = callPackage ./core/lxqt-notificationd { };
+    lxqt-openssh-askpass = callPackage ./core/lxqt-openssh-askpass { };
+    lxqt-policykit = callPackage ./core/lxqt-policykit { };
+    lxqt-powermanagement = callPackage ./core/lxqt-powermanagement { };
+    lxqt-qtplugin = callPackage ./core/lxqt-qtplugin { };
+    lxqt-session = callPackage ./core/lxqt-session { };
+    lxqt-sudo = callPackage ./core/lxqt-sudo { };
+    pavucontrol-qt = callPackage ./core/pavucontrol-qt { };
+    qtermwidget = callPackage ./core/qtermwidget { };
+
+    ### CORE 2
+    lxqt-panel = callPackage ./core/lxqt-panel { };
+    lxqt-runner = callPackage ./core/lxqt-runner { };
+    pcmanfm-qt = callPackage ./core/pcmanfm-qt { };
+
+    ### OPTIONAL
+    qterminal = callPackage ./optional/qterminal { };
+    compton-conf = callPackage ./optional/compton-conf { };
+    obconf-qt = callPackage ./optional/obconf-qt { };
+    lximage-qt = callPackage ./optional/lximage-qt { };
+    qps = callPackage ./optional/qps { };
+   
+  };
+
+in self
diff --git a/pkgs/desktops/lxqt/optional/compton-conf/default.nix b/pkgs/desktops/lxqt/optional/compton-conf/default.nix
new file mode 100644
index 000000000000..45717fe31e20
--- /dev/null
+++ b/pkgs/desktops/lxqt/optional/compton-conf/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, qt5, kde5, lxqt, libconfig }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "compton-conf";
+  version = "0.2.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "04svxawa8l0ciflrspkzi13nnl7bljmfwwrgxn5lb3sw6qdcmdlk";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtx11extras
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+    libconfig
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  meta = with stdenv.lib; {
+    description = "GUI configuration tool for compton X composite manager";
+    homepage = https://github.com/lxde/compton-conf;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/optional/lximage-qt/default.nix b/pkgs/desktops/lxqt/optional/lximage-qt/default.nix
new file mode 100644
index 000000000000..ac7055924c42
--- /dev/null
+++ b/pkgs/desktops/lxqt/optional/lximage-qt/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, qt5, kde5, xorg, lxqt,
+ libfm, menu-cache, libexif }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "lximage-qt";
+  version = "0.5.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "0c5s0c2y73hp7mcxwg31bpn0kmjyhv519d0dxzp3na56n0xk9vl0";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtx11extras
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+    lxqt.libfm-qt
+    xorg.libpthreadstubs
+    xorg.libXdmcp
+    libfm
+    menu-cache
+    libexif
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  meta = with stdenv.lib; {
+    description = "The image viewer and screenshot tool for lxqt";
+    homepage = https://github.com/lxde/lximage-qt;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/optional/obconf-qt/default.nix b/pkgs/desktops/lxqt/optional/obconf-qt/default.nix
new file mode 100644
index 000000000000..381c998616f5
--- /dev/null
+++ b/pkgs/desktops/lxqt/optional/obconf-qt/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, qt5, kde5, xorg, lxqt,
+openbox, hicolor_icon_theme }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "obconf-qt";
+  version = "0.11.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "1q3y4sc1kg3hw4869rx4g08y85rnvnxgk8rf8h6amkf5r5561iyk";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtx11extras
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+    xorg.libpthreadstubs
+    xorg.libXdmcp
+    openbox
+    hicolor_icon_theme
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  meta = with stdenv.lib; {
+    description = "The Qt port of obconf, the Openbox configuration tool";
+    homepage = https://github.com/lxde/obconf-qt;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/optional/qps/default.nix b/pkgs/desktops/lxqt/optional/qps/default.nix
new file mode 100644
index 000000000000..d39341eb05d0
--- /dev/null
+++ b/pkgs/desktops/lxqt/optional/qps/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchFromGitHub, cmake, qt5, makeDesktopItem }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "qps";
+  version = "1.10.16";
+
+  srcs = fetchFromGitHub {
+    owner = "QtDesktop";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1s6hvqfv9hv1cl5pfsmghqn1zqhibr4plq3glzgd8s7swwdnsvjj";
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "qps";
+    exec = "qps";
+    icon = "qps";
+    comment = "Visual process manager - Qt version of ps/top";
+    desktopName = "qps";
+    genericName = meta.description;
+    categories = "System;";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ qt5.qtbase qt5.qtx11extras ];
+
+  installPhase = ''
+    mkdir -p $out/{bin,share/{man/man1,doc,icons}}
+    cp -a src/qps $out/bin/
+    cp -a ../README.md $out/share/doc/
+    cp -a ../qps.1 $out/share/man/man1/
+    cp -a ../icon/icon.xpm $out/share/icons/qps.xpm
+    ln -sv "${desktopItem}/share/applications" $out/share/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "The Qt process manager";
+    homepage = https://github.com/QtDesktop/qps;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/desktops/lxqt/optional/qterminal/default.nix b/pkgs/desktops/lxqt/optional/qterminal/default.nix
new file mode 100644
index 000000000000..7f0f66c6fbe4
--- /dev/null
+++ b/pkgs/desktops/lxqt/optional/qterminal/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, cmake, qt5, kde5, lxqt }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "qterminal";
+  version = "0.7.0";
+
+  srcs = fetchFromGitHub {
+    owner = "lxde";
+    repo = pname;
+    rev = version;
+    sha256 = "1g8d66h8avk094wvgqw0mgl9caamdig6bnn4vawshn4j7y8g4n7v";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    qt5.qtbase
+    qt5.qttools
+    qt5.qtx11extras
+    qt5.qtsvg
+    kde5.kwindowsystem
+    lxqt.liblxqt
+    lxqt.libqtxdg
+    lxqt.qtermwidget
+  ];
+
+  cmakeFlags = [ "-DPULL_TRANSLATIONS=NO" ];
+
+  meta = with stdenv.lib; {
+    description = "A lightweight Qt-based terminal emulator";
+    homepage = https://github.com/lxde/qterminal;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ romildo ];
+    platforms = with platforms; unix;
+  };
+}
diff --git a/pkgs/development/arduino/arduino-core/default.nix b/pkgs/development/arduino/arduino-core/default.nix
index f89947d7d61f..ccf6dac895c9 100644
--- a/pkgs/development/arduino/arduino-core/default.nix
+++ b/pkgs/development/arduino/arduino-core/default.nix
@@ -16,14 +16,14 @@ let
   ncurses5 = ncurses.override { abiVersion = "5"; };
 in
 stdenv.mkDerivation rec {
-  version = "1.6.9";
+  version = "1.6.12";
   name = "arduino${stdenv.lib.optionalString (withGui == false) "-core"}-${version}";
 
   src = fetchFromGitHub {
     owner = "arduino";
     repo = "Arduino";
     rev = "${version}";
-    sha256 = "0ksd6mkcf41114n0h37q80y1bz3a2q3z8kg6m9i11c3wrj8n80np";
+    sha256 = "0rz8dv1mncwx2wkafakxqdi2y0rq3f72fr57cg0z5hgdgdm89lkh";
   };
 
   buildInputs = [ jdk ant libusb libusb1 unzip zlib ncurses5 readline ];
@@ -43,13 +43,8 @@ stdenv.mkDerivation rec {
       cp -v $file_src $file_dst
     done
 
-    # Loop above creates library_index.json.gz, package_index.json.gz and package_index.json.sig in
-    # current directory. And now we can inject them into build process.
-    library_index_url=file://$(pwd)/library_index.json
-    package_index_url=file://$(pwd)/package_index.json
-
     cd ./arduino-core && ant
-    cd ../build && ant -Dlibrary_index_url=$library_index_url -Dpackage_index_url=$package_index_url
+    cd ../build && ant 
     cd ..
   '';
 
diff --git a/pkgs/development/arduino/arduino-core/downloads.nix b/pkgs/development/arduino/arduino-core/downloads.nix
index 5057d5ac6b5b..9d3ed56bee99 100644
--- a/pkgs/development/arduino/arduino-core/downloads.nix
+++ b/pkgs/development/arduino/arduino-core/downloads.nix
@@ -1,22 +1,6 @@
 {fetchurl, optionalAttrs, system}:
 
 {
-  # Following 3 files are snapshots of files that were downloaded from http://download.arduino.cc/
-  # Because original URLs update daily. https://github.com/binarin/arduino-indexes also contains script
-  # for updating those snapshots.
-  "package_index.json.gz" = fetchurl {
-    url = "https://github.com/binarin/arduino-indexes/raw/snapshot-2016-07-18/package_index.json.gz";
-    sha256 = "11y16864bca6h5n03xbk8cw3v9b4xwvjz5mkirkcxslkkf7cx5yg";
-  };
-  "package_index.json.sig" = fetchurl {
-    url = "https://github.com/binarin/arduino-indexes/raw/snapshot-2016-07-18/package_index.json.sig";
-    sha256 = "14ky3qb81mvqswaw9g5cpg5jcjqx6knfm75mzx1si7fbx576amls";
-  };
-  "library_index.json.gz" = fetchurl {
-    url = "https://github.com/binarin/arduino-indexes/raw/snapshot-2016-07-18/library_index.json.gz";
-    sha256 = "19md4yf4m4wh9vnc3aj0gm3jak1qa591z5yhg0x8lsxx5hr2v85z";
-  };
-
   "build/shared/reference-1.6.6-3.zip" = fetchurl {
     url = "http://downloads.arduino.cc/reference-1.6.6-3.zip";
     sha256 = "119nj1idz85l71fy6a6wwsx0mcd8y0ib1wy0l6j9kz88nkwvggy3";
@@ -29,13 +13,13 @@
     url = "http://downloads.arduino.cc/Edison_help_files-1.6.2.zip";
     sha256 = "1x25rivmh0zpa6lr8dafyxvim34wl3wnz3r9msfxg45hnbjqqwan";
   };
-  "build/Firmata-2.5.2.zip" = fetchurl {
-    url = "https://github.com/arduino-libraries/Firmata/archive/2.5.2.zip";
-    sha256 = "1r75bxvpr17kwhpks9nxxpm5d5qbw0qnhygakv06whan9s0dc5cz";
+  "build/Firmata-2.5.3.zip" = fetchurl {
+    url = "https://github.com/arduino-libraries/Firmata/archive/2.5.3.zip";
+    sha256 = "1ims6bdmwv8lgcvd4ri4i39vqm1q5jbwirmki35bybqqb1sl171v";
   };
-  "build/Bridge-1.6.2.zip" = fetchurl {
-    url = "https://github.com/arduino-libraries/Bridge/archive/1.6.2.zip";
-    sha256 = "10v557bsxasq8ya09m9157nlk50cbkb0wlzrm54cznzmwc0gx49a";
+  "build/Bridge-1.6.3.zip" = fetchurl {
+    url = "https://github.com/arduino-libraries/Bridge/archive/1.6.3.zip";
+    sha256 = "1lha5wkzz63bgcn7bhx4rmgsh9ywa47lffycpyz6qjnl1pvm5mmj";
   };
   "build/Robot_Control-1.0.2.zip" = fetchurl {
     url = "https://github.com/arduino-libraries/Robot_Control/archive/1.0.2.zip";
@@ -49,13 +33,13 @@
     url = "https://github.com/arduino-libraries/RobotIRremote/archive/1.0.2.zip";
     sha256 = "0wkya7dy4x0xyi7wn5aghmr1gj0d0wszd61pq18zgfdspz1gi6xn";
   };
-  "build/SpacebrewYun-1.0.0.zip" = fetchurl {
-    url = "https://github.com/arduino-libraries/SpacebrewYun/archive/1.0.0.zip";
-    sha256 = "1sklyp92m8i31rfb9b9iw0zvvab1zd7jdmg85fr908xn6k05qhmp";
+  "build/SpacebrewYun-1.0.1.zip" = fetchurl {
+    url = "https://github.com/arduino-libraries/SpacebrewYun/archive/1.0.1.zip";
+    sha256 = "1zs6ymlzw66bglrm0x6d3cvr52q85c8rlm525x0wags111xx3s90";
   };
-  "build/Temboo-1.1.5.zip" = fetchurl {
-    url = "https://github.com/arduino-libraries/Temboo/archive/1.1.5.zip";
-    sha256 = "1ak9b2wrd42n3ak7kcqwg28ianq01acsi5jv4cc031wr0kpq4507";
+  "build/Temboo-1.1.7.zip" = fetchurl {
+    url = "https://github.com/arduino-libraries/Temboo/archive/1.1.7.zip";
+    sha256 = "0fq2q6qs0qp15njsl9dif8dkpxgb4cgg8jk3s5y0fcz9lb8m2j50";
   };
   "build/Esplora-1.0.4.zip" = fetchurl {
     url = "https://github.com/arduino-libraries/Esplora/archive/1.0.4.zip";
@@ -73,64 +57,68 @@
     url = "http://downloads.arduino.cc/libastylej-2.05.1-3.zip";
     sha256 = "0a1xy2cdl0xls5r21vy5d2j1dapn1jsdw0vbimlwnzfx7r84mxa6";
   };
-  "build/liblistSerials-1.1.0.zip" = fetchurl {
-    url = "http://downloads.arduino.cc/liblistSerials/liblistSerials-1.1.0.zip";
-    sha256 = "12n3y9y3gfi7i3x6llbwvi59jram02v8yyilv2kd38dm7wrqpw16";
+  "build/liblistSerials-1.1.4.zip" = fetchurl {
+    url = "http://downloads.arduino.cc/liblistSerials/liblistSerials-1.1.4.zip";
+    sha256 = "1w0zs155hs5b87i5wj049hfj2jsnf9jk30qq93wz1mxab01261v0";
+  };
+  "build/shared/WiFi101-Updater-ArduinoIDE-Plugin-0.8.0.zip" = fetchurl {
+    url = "https://github.com/arduino-libraries/WiFi101-FirmwareUpdater-Plugin/releases/download/v0.8.0/WiFi101-Updater-ArduinoIDE-Plugin-0.8.0.zip";
+    sha256 = "0fp4mb1qa3w02hrwd51wf261l8ywcl36mi9wipsrgx2y29pk759z";
   };
 }
 // optionalAttrs (system == "x86_64-linux") {
-  "build/arduino-builder-linux64-1.3.18.tar.bz2" = fetchurl {
-    url = "http://downloads.arduino.cc/tools/arduino-builder-linux64-1.3.18.tar.bz2";
-    sha256 = "0xbzcmvfa1h22dlvym8v4s68w4r1vdq8pj086sk1iwlkfiq0y4zq";
+  "build/arduino-builder-linux64-1.3.21_r1.tar.bz2" = fetchurl {
+    url = "http://downloads.arduino.cc/tools/arduino-builder-linux64-1.3.21_r1.tar.bz2";
+    sha256 = "1cqx5smzm4dhbj2ah191vbbxi0l7xj95c5gcdbgqm9283hrpfrn7";
   };
-  "build/linux/avr-gcc-4.8.1-arduino5-x86_64-pc-linux-gnu.tar.bz2" = fetchurl {
-    url = "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino5-x86_64-pc-linux-gnu.tar.bz2";
-    sha256 = "1k793qsv1jdc0m4i9k40l2k7blnarfzy2k3clndl2yirfk0zqm4h";
+  "build/linux/avr-gcc-4.9.2-atmel3.5.3-arduino2-x86_64-pc-linux-gnu.tar.bz2" = fetchurl {
+    url = "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino2-x86_64-pc-linux-gnu.tar.bz2";
+    sha256 = "124icbjh28cax6pgg6bzrfdi27shsn9mjjshgrr93pczpg8sc0rr";
   };
-  "build/linux/avrdude-6.0.1-arduino5-x86_64-pc-linux-gnu.tar.bz2" = fetchurl {
-    url = "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino5-x86_64-pc-linux-gnu.tar.bz2";
-    sha256 = "0xm4hfr4binny9f5affnmyrrq3lhrxr66s6ymplgfq9l72kwq9nq";
+  "build/linux/avrdude-6.3.0-arduino6-x86_64-pc-linux-gnu.tar.bz2" = fetchurl {
+    url = "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino6-x86_64-pc-linux-gnu.tar.bz2";
+    sha256 = "08b6dbllnvzv1aqx0v037zks4r3vqcx6yxxv040wf431mmf8gd4p";
   };
 }
 // optionalAttrs (system == "i686-linux") {
-  "build/arduino-builder-linux32-1.3.18.tar.bz2" = fetchurl {
-    url = "http://downloads.arduino.cc/tools/arduino-builder-linux32-1.3.18.tar.bz2";
-    sha256 = "0b6ls31gaagni929v4isr8ivyviid37721ffhgw6mnb8vshcws2d";
+  "build/arduino-builder-linux32-1.3.21_r1.tar.bz2" = fetchurl {
+    url = "http://downloads.arduino.cc/tools/arduino-builder-linux32-1.3.21_r1.tar.bz2";
+    sha256 = "1prfwb5scprvd74gihd78ibsdy3806b0fsjhgyj9in4w1q8s3dxj";
   };
-  "build/linux/avr-gcc-4.8.1-arduino5-i686-pc-linux-gnu.tar.bz2" = fetchurl {
-    url = "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino5-i686-pc-linux-gnu.tar.bz2";
-    sha256 = "07ql6apml1w5gy3ygd1wmj12yr8vg6p3pr8b1gd92wdk97svfj3n";
+  "build/linux/avr-gcc-4.9.2-atmel3.5.3-arduino2-i686-pc-linux-gnu.tar.bz2" = fetchurl {
+    url = "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino2-i686-pc-linux-gnu.tar.bz2";
+    sha256 = "0s7chsp1jyk477zvfaraf0yacvlzahkwqxpws4k0kjadghg9a27i";
   };
-  "build/linux/avrdude-6.0.1-arduino5-i686-pc-linux-gnu.tar.bz2" = fetchurl {
-    url = "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino5-i686-pc-linux-gnu.tar.bz2";
-    sha256 = "1vmzqvkg8z2xp3j5qypzyg26hgymy6vshs4vpax6mr5w4xlxccsr";
+  "build/linux/avrdude-6.3.0-arduino6-i686-pc-linux-gnu.tar.bz2" = fetchurl {
+    url = "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino6-i686-pc-linux-gnu.tar.bz2";
+    sha256 = "1yyn016b5162j94nmqcznfabi5y2ly27z2whr77387bvjnqc8jsz";
   };
 }
 // optionalAttrs (system == "x86_64-darwin") {
-  "build/arduino-builder-macosx-1.3.18.tar.bz2" = fetchurl {
-    url = "http://downloads.arduino.cc/tools/arduino-builder-macosx-1.3.18.tar.bz2";
-    sha256 = "01m21r2blh3rwzmjgjn65hivlbj95ddqkjq5xm1yb4b5h3i03mfj";
+  "build/arduino-builder-macosx-1.3.21_r1.tar.bz2" = fetchurl {
+    url = "http://downloads.arduino.cc/tools/arduino-builder-macosx-1.3.21_r1.tar.bz2";
+    sha256 = "06y5j1z9jjnqa7v6nl9dflm1qqpf3ar1jc53zxgdgsrb9c473d8l";
   };
-  "build/linux/avr-gcc-4.8.1-arduino5-i386-apple-darwin11.tar.bz2" = fetchurl {
-    url = "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino5-i386-apple-darwin11.tar.bz2";
-    sha256 = "00d9i1vg1zngcd3f52c6d7j2iffb0qs97a1pnag0czbk1pq3w6qi";
+  "build/linux/avr-gcc-4.9.2-arduino5-i386-apple-darwin11.tar.bz2" = fetchurl {
+    url = "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino2-i386-apple-darwin11.tar.bz2";
+    sha256 = "12r4a1q7mh1gbasy7lqn0p4acg699lglw7il9d5f5vwd32pmh4ii";
   };
-  "build/linux/avrdude-6.0.1-arduino5-i386-apple-darwin11.tar.bz2" = fetchurl {
-    url = "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino5-i386-apple-darwin11.tar.bz2";
-    sha256 = "1rf3dwb4534qzn0gdpbh3155knx07hbbakvv67456s2q18xqvbs1";
+  "build/linux/avrdude-6.3.0-arduino6-i386-apple-darwin11.tar.bz2" = fetchurl {
+    url = "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino6-i386-apple-darwin11.tar.bz2";
+    sha256 = "11703f0r82aq3mmkiy7vwa4jfjhs9826qpp724hbng9dx74kk86r";
   };
 }
 // optionalAttrs (system == "armv6l-linux") {
-  "build/arduino-builder-arm-1.3.18.tar.bz2" = fetchurl {
-    url = "http://downloads.arduino.cc/tools/arduino-builder-arm-1.3.18.tar.bz2";
-    sha256 = "1v4vrmv24cajl7hxmyz5nh2y007kmwrcgl6180dlfwpc9526s4p1";
+  "build/arduino-builder-arm-1.3.21_r1.tar.bz2" = fetchurl {
+    url = "http://downloads.arduino.cc/tools/arduino-builder-arm-1.3.21_r1.tar.bz2";
+    sha256 = "1ik6r5n6g20x4pb0vbxbkqxgzj39f13n995ki9xgpsrq22x6g1n4";
   };
-  "build/linux/avr-gcc-4.8.1-arduino5-armhf-pc-linux-gnu.tar.bz2" = fetchurl {
-    url = "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino5-armhf-pc-linux-gnu.tar.bz2";
-    sha256 = "0jqmyamvvwiab6ag580h09zkxbpv6i5xn6ganj5b8ld6nwnwvzy8";
+  "build/linux/avr-gcc-4.9.2-arduino5-armhf-pc-linux-gnu.tar.bz2" = fetchurl {
+    url = "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino2-armhf-pc-linux-gnu.tar.bz2";
+    sha256 = "08b8z7ca0wcgzxmjz6q5ihjrm3i10frnrcqpvwjrlsxw37ah1wvp";
   };
-  "build/linux/avrdude-6.0.1-arduino5-armhf-pc-linux-gnu.tar.bz2" = fetchurl {
-    url = "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino5-armhf-pc-linux-gnu.tar.bz2";
-    sha256 = "1d7n0jcc6670n803q57hzw8pvp9bmnca9c9fgw3fq5y1vd0i7si3";
+  "build/linux/avrdude-6.3.0-arduino6-armhf-pc-linux-gnu.tar.bz2" = fetchurl {
+    url = "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino6-armhf-pc-linux-gnu.tar.bz2";
+    sha256 = "1rybp4hgk0mm7dydr3rj7yx59jzi30s4kyadzkjv13nm4ds209i4";
   };
 }
diff --git a/pkgs/development/compilers/kotlin/default.nix b/pkgs/development/compilers/kotlin/default.nix
index ba546f6f51fc..f0f8fa3b7ff2 100644
--- a/pkgs/development/compilers/kotlin/default.nix
+++ b/pkgs/development/compilers/kotlin/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, makeWrapper, jre, unzip }:
 
 stdenv.mkDerivation rec {
-  version = "1.0.3";
+  version = "1.0.4";
   name = "kotlin-${version}";
 
   src = fetchurl {
     url = "https://github.com/JetBrains/kotlin/releases/download/v${version}/kotlin-compiler-${version}.zip";
-    sha256 = "15ywjv46i2d7zgg2b3vdklc6agr62nvn0gkz7k9hql78ccfmyq9p";
+    sha512 = "39mcyw3rdgrhfkxl0xygh74idl2pvw3dy0n9d3z4aj6hq4pxkn1dclmpfbrfa333vjpzfhlqwl578vmly9vah7m6z6g4j12gkdijiyf";
   };
 
   propagatedBuildInputs = [ jre ] ;
diff --git a/pkgs/development/compilers/llvm/3.8/clang/default.nix b/pkgs/development/compilers/llvm/3.8/clang/default.nix
index 8128bfd23925..d0d5a2dea142 100644
--- a/pkgs/development/compilers/llvm/3.8/clang/default.nix
+++ b/pkgs/development/compilers/llvm/3.8/clang/default.nix
@@ -39,7 +39,10 @@ let
       ln -sv $out/bin/clang $out/bin/cpp
 
       mkdir -p $python/bin $python/share/clang/
-      mv $out/bin/{git-clang-format,scan-view,set-xcode-analyzer} $python/bin
+      mv $out/bin/{git-clang-format,scan-view} $python/bin
+      if [ -e $out/bin/set-xcode-analyzer ]; then
+        mv $out/bin/set-xcode-analyzer $python/bin
+      fi
       mv $out/share/clang/*.py $python/share/clang
 
       rm $out/bin/c-index-test
diff --git a/pkgs/development/compilers/mezzo/default.nix b/pkgs/development/compilers/mezzo/default.nix
index 67e7c932e555..79dc479fae83 100644
--- a/pkgs/development/compilers/mezzo/default.nix
+++ b/pkgs/development/compilers/mezzo/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, ocaml, findlib, menhir, yojson, ulex, pprint, fix, functory }:
+{ stdenv, fetchFromGitHub, ocaml, findlib, ocamlbuild, menhir, yojson, ulex, pprint, fix, functory }:
 
 let
   check-ocaml-version = with stdenv.lib; versionAtLeast (getVersion ocaml);
@@ -17,7 +17,7 @@ stdenv.mkDerivation {
     sha256 = "0yck5r6di0935s3iy2mm9538jkf77ssr789qb06ms7sivd7g3ip6";
   };
 
-  buildInputs = [ ocaml findlib yojson menhir ulex pprint fix functory ];
+  buildInputs = [ ocaml findlib ocamlbuild yojson menhir ulex pprint fix functory ];
 
   # Sets warning 3 as non-fatal
   prePatch = stdenv.lib.optionalString (check-ocaml-version "4.02") ''
diff --git a/pkgs/development/compilers/obliv-c/default.nix b/pkgs/development/compilers/obliv-c/default.nix
new file mode 100644
index 000000000000..f1f9a38a198f
--- /dev/null
+++ b/pkgs/development/compilers/obliv-c/default.nix
@@ -0,0 +1,33 @@
+{stdenv, fetchurl, ocaml, libgcrypt, fetchFromGitHub, ocamlPackages, perl}:
+stdenv.mkDerivation rec {
+  name = "obliv-c-${version}";
+  version = "0.0pre20161001";
+  buildInputs = [ ocaml ocamlPackages.findlib perl ];
+  propagatedBuildInputs = [ libgcrypt ];
+  src = fetchFromGitHub {
+    owner = "samee";
+    repo = "obliv-c";
+    rev = "32d71fb46983aded604045e8cda7874d8fb160a2";
+    sha256 = "05bicvalsfabngvf41q02bcyzkibmyihj7naqd53kdq75xa1yf37";
+  };
+  preInstall = ''
+    mkdir -p "$out/bin"
+    cp bin/* "$out/bin"
+    mkdir -p "$out/share/doc/obliv-c"
+    cp -r doc/* README* CHANGE* Change* LICEN* TODO* "$out/share/doc/obliv-c"
+    mkdir -p "$out/share/obliv-c"
+    cp -r test "$out/share/obliv-c"
+    mkdir -p "$out/include"
+    cp src/ext/oblivc/*.h "$out/include"
+    mkdir -p "$out/lib"
+    gcc $(ar t _build/libobliv.a | sed -e 's@^@_build/@') --shared -o _build/libobliv.so
+    cp _build/lib*.a _build/lib*.so* "$out/lib"
+  '';
+  meta = {
+    inherit version;
+    description = ''A GCC wrapper that makes it easy to embed secure computation protocols inside regular C programs'';
+    license = stdenv.lib.licenses.bsd3;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/compilers/openjdk/8.nix b/pkgs/development/compilers/openjdk/8.nix
index 50199852ae2f..2969dab92260 100644
--- a/pkgs/development/compilers/openjdk/8.nix
+++ b/pkgs/development/compilers/openjdk/8.nix
@@ -1,8 +1,11 @@
-{ stdenv, fetchurl, cpio, pkgconfig, file, which, unzip, zip, xorg, cups, freetype
-, alsaLib, bootjdk, cacert, perl, liberation_ttf, fontconfig, zlib
+{ stdenv, lib, fetchurl, cpio, pkgconfig, file, which, unzip, zip, cups, freetype
+, alsaLib, bootjdk, cacert, perl, liberation_ttf, fontconfig, zlib, lndir
+, libX11, libICE, libXrender, libXext, libXt, libXtst, libXi, libXinerama, libXcursor
+, libjpeg, giflib
 , setJavaClassPath
 , minimal ? false
 , enableInfinality ? true # font rendering patch
+, enableGnome2 ? true, gtk2, gnome_vfs, glib, GConf
 }:
 
 let
@@ -65,10 +68,11 @@ let
 
     nativeBuildInputs = [ pkgconfig ];
     buildInputs = [
-      cpio file which unzip zip
-      xorg.libX11 xorg.libXt xorg.libXext xorg.libXrender xorg.libXtst
-      xorg.libXi xorg.libXinerama xorg.libXcursor xorg.lndir
-      cups freetype alsaLib perl liberation_ttf fontconfig bootjdk zlib
+      cpio file which unzip zip perl bootjdk zlib cups freetype alsaLib
+      libjpeg giflib libX11 libICE libXext libXrender libXtst libXt libXtst
+      libXi libXinerama libXcursor lndir fontconfig
+    ] ++ lib.optionals (!minimal && enableGnome2) [
+      gtk2 gnome_vfs GConf glib
     ];
 
     prePatch = ''
@@ -82,10 +86,12 @@ let
       ./fix-java-home-jdk8.patch
       ./read-truststore-from-env-jdk8.patch
       ./currency-date-range-jdk8.patch
-    ] ++ (if enableInfinality then [
+    ] ++ lib.optionals (!minimal && enableInfinality) [
       ./004_add-fontconfig.patch
       ./005_enable-infinality.patch
-    ] else []);
+    ] ++ lib.optionals (!minimal && enableGnome2) [
+      ./swing-use-gtk.patch
+    ];
 
     preConfigure = ''
       chmod +x configure
@@ -101,21 +107,22 @@ let
       "--enable-unlimited-crypto"
       "--disable-debug-symbols"
       "--disable-freetype-bundling"
+      "--with-zlib=system"
+      "--with-giflib=system"
+      "--with-stdc++lib=dynamic"
 
       # glibc 2.24 deprecated readdir_r so we need this
       # See https://www.mail-archive.com/openembedded-devel@lists.openembedded.org/msg49006.html
       "--with-extra-cflags=\"-Wno-error=deprecated-declarations\""
-    ] ++ (if minimal then [
-      "--disable-headful"
-      "--with-zlib=bundled"
-      "--with-giflib=bundled"
-    ] else [
-      "--with-zlib=system"
-    ]);
+    ] ++ lib.optional minimal "--disable-headful";
 
-    NIX_LDFLAGS= if minimal then null else "-lfontconfig";
+    NIX_LDFLAGS= lib.optionals (!minimal) [
+      "-lfontconfig" "-lcups" "-lXinerama" "-lXrandr" "-lmagic"
+    ] ++ lib.optionals (!minimal && enableGnome2) [
+      "-lgtk-x11-2.0" "-lgio-2.0" "-lgnomevfs-2" "-lgconf-2"
+    ];
 
-    buildFlags = "all";
+    buildFlags = [ "all" ];
 
     installPhase = ''
       mkdir -p $out/lib/openjdk $out/share $jre/lib/openjdk
@@ -135,12 +142,19 @@ let
 
       # Remove crap from the installation.
       rm -rf $out/lib/openjdk/demo $out/lib/openjdk/sample
+      ${lib.optionalString minimal ''
+        rm $out/lib/openjdk/jre/lib/${architecture}/{libjsound,libjsoundalsa,libsplashscreen,libawt*,libfontmanager}.so
+        rm $out/lib/openjdk/jre/bin/policytool
+        rm $out/lib/openjdk/bin/{policytool,appletviewer}
+      ''}
 
       # Move the JRE to a separate output and setup fallback fonts
       mv $out/lib/openjdk/jre $jre/lib/openjdk/
       mkdir $out/lib/openjdk/jre
-      mkdir -p $jre/lib/openjdk/jre/lib/fonts/fallback
-      lndir ${liberation_ttf}/share/fonts/truetype $jre/lib/openjdk/jre/lib/fonts/fallback
+      ${lib.optionalString (!minimal) ''
+        mkdir -p $jre/lib/openjdk/jre/lib/fonts/fallback
+        lndir ${liberation_ttf}/share/fonts/truetype $jre/lib/openjdk/jre/lib/fonts/fallback
+      ''}
       lndir $jre/lib/openjdk/jre $out/lib/openjdk/jre
 
       rm -rf $out/lib/openjdk/jre/bina
diff --git a/pkgs/development/compilers/openjdk/swing-use-gtk.patch b/pkgs/development/compilers/openjdk/swing-use-gtk.patch
new file mode 100644
index 000000000000..9538aade6726
--- /dev/null
+++ b/pkgs/development/compilers/openjdk/swing-use-gtk.patch
@@ -0,0 +1,26 @@
+diff -ru3 a/jdk/src/share/classes/javax/swing/UIManager.java b/jdk/src/share/classes/javax/swing/UIManager.java
+--- a/jdk/src/share/classes/javax/swing/UIManager.java	2016-07-26 00:41:37.000000000 +0300
++++ b/jdk/src/share/classes/javax/swing/UIManager.java	2016-10-02 22:46:01.890071761 +0300
+@@ -607,11 +607,9 @@
+         if (osType == OSInfo.OSType.WINDOWS) {
+             return "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
+         } else {
+-            String desktop = AccessController.doPrivileged(new GetPropertyAction("sun.desktop"));
+             Toolkit toolkit = Toolkit.getDefaultToolkit();
+-            if ("gnome".equals(desktop) &&
+-                    toolkit instanceof SunToolkit &&
+-                    ((SunToolkit) toolkit).isNativeGTKAvailable()) {
++            if (toolkit instanceof SunToolkit &&
++                    ((SunToolkit) toolkit).isNativeGTKAvailable()) {
+                 // May be set on Linux and Solaris boxs.
+                 return "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";
+             }
+@@ -1341,7 +1339,7 @@
+             lafName = (String) lafData.remove("defaultlaf");
+         }
+         if (lafName == null) {
+-            lafName = getCrossPlatformLookAndFeelClassName();
++            lafName = getSystemLookAndFeelClassName();
+         }
+         lafName = swingProps.getProperty(defaultLAFKey, lafName);
+ 
diff --git a/pkgs/development/compilers/pakcs/adjust-buildsystem.patch b/pkgs/development/compilers/pakcs/adjust-buildsystem.patch
new file mode 100644
index 000000000000..2d1f92af81df
--- /dev/null
+++ b/pkgs/development/compilers/pakcs/adjust-buildsystem.patch
@@ -0,0 +1,21 @@
+diff -Naur pakcs-1.11.4-upstream/scripts/pakcs.sh pakcs-1.11.4/scripts/pakcs.sh
+--- pakcs-1.11.4-upstream/scripts/pakcs.sh	2014-10-24 05:06:07.000000000 -0430
++++ pakcs-1.11.4/scripts/pakcs.sh	2015-01-05 16:26:15.697982791 -0430
+@@ -16,7 +16,7 @@
+ # use readline wrapper rlwrap if it is installed and we have tty as stdin:
+ USERLWRAP=no
+ if tty -s ; then
+-  RLWRAP=`which rlwrap`
++  RLWRAP=`type -P rlwrap`
+   if [ -x "$RLWRAP" ] ; then
+     USERLWRAP=yes
+   fi
+@@ -29,7 +29,7 @@
+ done
+ 
+ if [ $USERLWRAP = yes ] ; then
+-  exec rlwrap -c -f "$PAKCSHOME/tools/rlwrap" "$REPL" ${1+"$@"}
++  exec rlwrap -a -c -f "$PAKCSHOME/tools/rlwrap" "$REPL" ${1+"$@"}
+ else
+   exec "$REPL" ${1+"$@"}
+ fi
diff --git a/pkgs/development/compilers/pakcs/default.nix b/pkgs/development/compilers/pakcs/default.nix
new file mode 100644
index 000000000000..92b916ccb8e1
--- /dev/null
+++ b/pkgs/development/compilers/pakcs/default.nix
@@ -0,0 +1,156 @@
+{ stdenv, fetchurl, swiProlog, haskellPackages
+, glibcLocales, makeWrapper, rlwrap, tk, which }:
+
+let
+  fname = "pakcs-1.14.0";
+
+  fsrc = fetchurl {
+    url = "http://www.informatik.uni-kiel.de/~pakcs/download/${fname}-src.tar.gz";
+    sha256 = "1651ssh4ql79x8asd7kp4yis2n5rhn3lml4s26y03b0cgbfhs78s";
+  };
+
+  swiPrologLocked = stdenv.lib.overrideDerivation swiProlog (oldAttrs: rec {
+    version = "6.6.6";
+    name = "swi-prolog-${version}";
+    src = fetchurl {
+      url = "http://www.swi-prolog.org/download/stable/src/pl-${version}.tar.gz";
+      sha256 = "0vcrfskm2hyhv30lxr6v261myb815jc3bgmcn1lgsc9g9qkvp04z";
+    };
+  });
+
+in
+stdenv.mkDerivation rec {
+
+  name = fname;
+
+  curryBase = haskellPackages.callPackage (
+    { mkDerivation, base, Cabal, containers, directory, either
+    , filepath, mtl, pretty, stdenv, syb, time
+    }:
+    mkDerivation {
+      pname = "curry-base";
+      version = "0.4.1";
+      src = fsrc;
+      libraryHaskellDepends = [
+        base containers directory either filepath mtl pretty syb time
+      ];
+      testHaskellDepends = [ base Cabal filepath mtl ];
+      homepage = "http://curry-language.org";
+      description = "Functions for manipulating Curry programs";
+      license = "unknown";
+
+      postUnpack = ''
+        mv ${name} ${name}.orig
+        ln -s ${name}.orig/frontend/curry-base ${name}
+      '';
+      doCheck = false;
+    }
+  ) {};
+
+  curryFront = haskellPackages.callPackage (
+    { mkDerivation, base, Cabal, containers, directory
+    , filepath, mtl, network-uri, process, stdenv, syb, transformers
+    }:
+    mkDerivation {
+      pname = "curry-frontend";
+      version = "0.4.1";
+      src = fsrc;
+      isLibrary = true;
+      isExecutable = true;
+      libraryHaskellDepends = [
+        base containers curryBase directory filepath mtl network-uri
+        process syb transformers
+      ];
+      executableHaskellDepends = [
+        base containers curryBase directory filepath mtl network-uri
+        process syb transformers
+      ];
+      testHaskellDepends = [ base Cabal curryBase filepath ];
+      homepage = "http://curry-language.org";
+      description = "Compile the functional logic language Curry to several intermediate formats";
+      license = "unknown";
+
+      postUnpack = ''
+        mv ${name} ${name}.orig
+        ln -s ${name}.orig/frontend/curry-frontend ${name}
+      '';
+      doCheck = false;
+    }
+  ) {};
+
+  src = fsrc;
+
+  buildInputs = [ swiPrologLocked makeWrapper glibcLocales rlwrap tk which ];
+
+  patches = [ ./adjust-buildsystem.patch ];
+
+  configurePhase = ''
+    # Phony HOME.
+    mkdir phony-home
+    export HOME=$(pwd)/phony-home
+
+    # SWI Prolog
+    sed -i 's@SWIPROLOG=@SWIPROLOG='${swiPrologLocked}/bin/swipl'@' scripts/pakcsinitrc.sh
+  '';
+
+  buildPhase = ''
+    # Some comments in files are in UTF-8, so include the locale needed by GHC runtime.
+    export LC_ALL=en_US.UTF-8
+
+    # PAKCS must be build in place due to embedded filesystem references placed by swi.
+
+    # Prepare PAKCSHOME directory.
+    mkdir -p $out/pakcs/bin
+
+    # Set up link to cymake, which has been built already.
+    ln -s ${curryFront}/bin/cymake $out/pakcs/bin/
+    rm -r frontend
+
+    # Prevent embedding the derivation build directory as temp.
+    export TEMP=/tmp
+
+    # Copy to in place build location and run the build.
+    cp -r * $out/pakcs
+    (cd $out/pakcs ; make)
+  '';
+
+  installPhase = ''
+    # Install bin.
+    mkdir -p $out/bin
+    for b in $(ls $out/pakcs/bin) ; do
+      ln -s $out/pakcs/bin/$b $out/bin/ ;
+    done
+
+    # Place emacs lisp files in expected locations.
+    mkdir -p $out/share/emacs/site-lisp/curry-pakcs
+    for e in "$out/pakcs/tools/emacs/"*.el ; do
+      cp $e $out/share/emacs/site-lisp/curry-pakcs/ ;
+    done
+
+    # Wrap for rlwrap and tk support.
+    wrapProgram $out/pakcs/bin/pakcs \
+      --prefix PATH ":" "${rlwrap}/bin" \
+      --prefix PATH ":" "${tk}/bin" \
+  '';
+
+  meta = {
+    homepage = "http://www.informatik.uni-kiel.de/~pakcs/";
+    description = "An implementation of the multi-paradigm declarative language Curry";
+    license = stdenv.lib.licenses.bsd3;
+
+    longDescription = ''
+      PAKCS is an implementation of the multi-paradigm declarative language
+      Curry jointly developed by the Portland State University, the Aachen
+      University of Technology, and the University of Kiel. Although this is
+      not a highly optimized implementation but based on a high-level
+      compilation of Curry programs into Prolog programs, it is not a toy
+      implementation but has been used for a variety of applications (e.g.,
+      graphical programming environments, an object-oriented front-end for
+      Curry, partial evaluators, database applications, HTML programming
+      with dynamic web pages, prototyping embedded systems).
+    '';
+
+    maintainers = [ stdenv.lib.maintainers.gnidorah ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/compilers/rust/bootstrap.nix b/pkgs/development/compilers/rust/bootstrap.nix
index e7cc7b15627e..454b67b8151b 100644
--- a/pkgs/development/compilers/rust/bootstrap.nix
+++ b/pkgs/development/compilers/rust/bootstrap.nix
@@ -17,13 +17,13 @@ let
   # fetch hashes by running `print-hashes.sh 1.9.0`
   bootstrapHash =
     if stdenv.system == "i686-linux"
-    then "be93dd2b80a97f2877679950d56990628c6547b953294f16bf6d69c18a39edc0"
+    then "f5a3f5d53defe827a71447b1a0e7a656394b87ee23e009d7bf73a0277c1b5ac2"
     else if stdenv.system == "x86_64-linux"
-    then "f189303d52b37c8bb694b9d9739ae73ffa926cbdeffde1d5d6a5c6e811940293"
+    then "f4ebbd6d9494cb8fa6c410cb58954e1913546c2bca8963faebc424591547d83f"
     else if stdenv.system == "i686-darwin"
-    then "40d4782a58dd5bef22dbbaa7a363f3b42f844628db07205f6435ac934f350061"
+    then "bf07182bc362985fcdd48af905cdb559e20c68518cd71dabec3c30b78ca8a94a"
     else if stdenv.system == "x86_64-darwin"
-    then "4bb71249f4afd7cee07f63d681f9fcb1b525ee3dfd49722adab7a40024e45af7"
+    then "2cdbc47438dc86ecaf35298317b77d735956eb160862e3f6d0fda0da656ecc35"
     else throw "missing boostrap hash for platform ${stdenv.system}";
 
   needsPatchelf = stdenv.isLinux;
@@ -33,7 +33,7 @@ let
      sha256 = bootstrapHash;
   };
 
-  version = "1.10.0";
+  version = "1.11.0";
 in
 
 rec {
diff --git a/pkgs/development/compilers/rust/default.nix b/pkgs/development/compilers/rust/default.nix
index b7e992c916d3..1dbc6c13e0bf 100644
--- a/pkgs/development/compilers/rust/default.nix
+++ b/pkgs/development/compilers/rust/default.nix
@@ -7,12 +7,12 @@ in
 
 rec {
   rustc = callPackage ./rustc.nix {
-    shortVersion = "1.11.0";
+    shortVersion = "1.12.0";
     isRelease = true;
     forceBundledLLVM = false;
     configureFlags = [ "--release-channel=stable" ];
-    srcRev = "9b21dcd6a89f38e8ceccb2ede8c9027cb409f6e3";
-    srcSha = "12djpxhwqvq3262ai9vd096bvriynci2mrwn0dfjrd0w6s0i8viy";
+    srcRev = "3191fbae9da539442351f883bdabcad0d72efcb6";
+    srcSha = "1mpw6c5jfxy60g786wl8g0ncwikqfbcj67jrdpj3jacywxsxzlby";
 
     patches = [
       ./patches/disable-lockfile-check.patch
@@ -25,10 +25,10 @@ rec {
   };
 
   cargo = callPackage ./cargo.nix rec {
-    version = "0.12.0";
-    srcRev = "6b98d1f8abf5b33c1ca2771d3f5f3bafc3407b93";
-    srcSha = "0pq6l3yzmh2il6320f6501hvp9iikdxzl34i5b52v93ncpim36bk";
-    depsSha256 = "1jrwzm9fd15kf2d5zb17q901hx32h711ivcwdpxpmzwq08sjlcvl";
+    version = "0.13.0";
+    srcRev = "109cb7c33d426044d141457049bd0fffaca1327c";
+    srcSha = "0p79m7hpzjh36l4fc6a59h6r8yz6qafjcdg5v1yb7bac9m2wi7vs";
+    depsSha256 = "1cwp4p8b985fj8j2qmgsi2mpp51rdpwzm9qa60760nrry1fy624z";
 
     inherit rustc; # the rustc that will be wrapped by cargo
     inherit rustPlatform; # used to build cargo
diff --git a/pkgs/development/compilers/rust/rustc.nix b/pkgs/development/compilers/rust/rustc.nix
index 44964f53a44c..e1bff12f398e 100644
--- a/pkgs/development/compilers/rust/rustc.nix
+++ b/pkgs/development/compilers/rust/rustc.nix
@@ -90,6 +90,9 @@ stdenv.mkDerivation {
     # Disable fragile linker-output-non-utf8 test
     rm -vr src/test/run-make/linker-output-non-utf8/
 
+    # Remove test targeted at LLVM 3.9 - https://github.com/rust-lang/rust/issues/36835
+    rm -vr src/test/run-pass/issue-36023.rs
+
     # Useful debugging parameter
     # export VERBOSE=1
   '' +
diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix
index a130772297c4..be7cf7302b70 100644
--- a/pkgs/development/haskell-modules/configuration-common.nix
+++ b/pkgs/development/haskell-modules/configuration-common.nix
@@ -269,12 +269,14 @@ self: super: {
   snowball = dontCheck super.snowball;
   sophia = dontCheck super.sophia;
   test-sandbox = dontCheck super.test-sandbox;
+  texrunner = dontCheck super.texrunner;
   users-postgresql-simple = dontCheck super.users-postgresql-simple;
   wai-middleware-hmac = dontCheck super.wai-middleware-hmac;
   xkbcommon = dontCheck super.xkbcommon;
   xmlgen = dontCheck super.xmlgen;
   hapistrano = dontCheck super.hapistrano;
   HerbiePlugin = dontCheck super.HerbiePlugin;
+  wai-cors = dontCheck super.wai-cors;
 
   # These packages try to access the network.
   amqp = dontCheck super.amqp;
@@ -641,6 +643,11 @@ self: super: {
     '';
   }));
 
+  # Requires optparse-applicative 0.13.0.0
+  diagrams-pgf = super.diagrams-pgf.overrideScope (self: super: {
+    optparse-applicative = self.optparse-applicative_0_13_0_0;
+  });
+
   # Patch to consider NIX_GHC just like xmonad does
   dyre = appendPatch super.dyre ./patches/dyre-nix.patch;
 
@@ -1019,4 +1026,10 @@ self: super: {
   # https://github.com/fpco/store/issues/77
   store = dontCheck super.store;
 
+  # https://github.com/bmillwood/applicative-quoters/issues/6
+  applicative-quoters = doJailbreak super.applicative-quoters;
+
+  # https://github.com/vshabanov/HsOpenSSL/issues/11
+  HsOpenSSL = doJailbreak super.HsOpenSSL;
+
 }
diff --git a/pkgs/development/haskell-modules/configuration-ghc-7.10.x.nix b/pkgs/development/haskell-modules/configuration-ghc-7.10.x.nix
index a0f8056c081c..00f6f3770d5f 100644
--- a/pkgs/development/haskell-modules/configuration-ghc-7.10.x.nix
+++ b/pkgs/development/haskell-modules/configuration-ghc-7.10.x.nix
@@ -179,9 +179,6 @@ self: super: {
   vector-algorithms = addBuildDepends (dontCheck super.vector-algorithms)
     [ self.mtl self.mwc-random ];
 
-  # Trigger rebuild to mitigate broken packaes on Hydra.
-  amazonka-core = triggerRebuild super.amazonka-core 1;
-
   # https://github.com/thoughtpolice/hs-ed25519/issues/13
   ed25519 = dontCheck super.ed25519;
 
@@ -190,6 +187,7 @@ self: super: {
   hackage-security = dontHaddock (dontCheck super.hackage-security);
 
   # GHC versions prior to 8.x require additional build inputs.
+  attoparsec = addBuildDepends super.attoparsec (with self; [semigroups fail]);
   Glob = addBuildDepends super.Glob (with self; [semigroups]);
   Glob_0_7_10 = addBuildDepends super.Glob_0_7_10 (with self; [semigroups]);
   aeson = disableCabalFlag (addBuildDepend super.aeson self.semigroups) "old-locale";
@@ -212,6 +210,6 @@ self: super: {
   # Moved out from common as no longer the case for GHC8
   ghc-mod = super.ghc-mod.override { cabal-helper = self.cabal-helper_0_6_3_1; };
 
-  generic-deriving = self.generic-deriving_1_10_5;
+
 
 }
diff --git a/pkgs/development/haskell-modules/default.nix b/pkgs/development/haskell-modules/default.nix
index 19940bd70bea..9020f1ee4671 100644
--- a/pkgs/development/haskell-modules/default.nix
+++ b/pkgs/development/haskell-modules/default.nix
@@ -6,12 +6,13 @@
 
 let
 
-  allCabalFiles = pkgs.fetchFromGitHub {
-     owner = "commercialhaskell";
-     repo = "all-cabal-hashes";
-     rev = "72f1318540eff69544eb8c14a16f630d0c5448b8";
-     sha256 = "1czi1rajk2726mqrw3qp7a43h26acbjw54ll3ns063yzg9hg469m";
-   };
+  allCabalFiles = stdenv.mkDerivation {
+    name = "all-cabal-hashes-0";
+    buildCommand = ''
+      mkdir -p $out
+      tar -C $out --strip-components=1 -x -f ${builtins.fetchurl "https://github.com/commercialhaskell/all-cabal-hashes/archive/hackage.tar.gz"}
+    '';
+  };
 
   inherit (stdenv.lib) fix' extends;
 
diff --git a/pkgs/development/haskell-modules/generic-builder.nix b/pkgs/development/haskell-modules/generic-builder.nix
index e4fcd09c0e03..2b597532b44d 100644
--- a/pkgs/development/haskell-modules/generic-builder.nix
+++ b/pkgs/development/haskell-modules/generic-builder.nix
@@ -180,11 +180,6 @@ stdenv.mkDerivation ({
     setupCompileFlags="${concatStringsSep " " setupCompileFlags}"
     configureFlags="${concatStringsSep " " defaultConfigureFlags} $configureFlags"
 
-    ${optionalString (stdenv.lib.versionOlder "8" ghc.version) ''
-      ipid=$(echo $(basename "$out") | cut -d- -f1)
-      configureFlags+=" --ipid=$ipid"
-    ''}
-
     local inputClosure=""
     for i in $propagatedNativeBuildInputs $nativeBuildInputs; do
       findInputs $i inputClosure propagated-native-build-inputs
diff --git a/pkgs/development/interpreters/eff/default.nix b/pkgs/development/interpreters/eff/default.nix
index 566d7025e5c9..9fc25ad46fdc 100644
--- a/pkgs/development/interpreters/eff/default.nix
+++ b/pkgs/development/interpreters/eff/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, ocaml, findlib, menhir, which }:
+{ stdenv, fetchgit, ocaml, findlib, ocamlbuild, menhir, which }:
 
 let inherit (stdenv.lib) getVersion versionAtLeast; in
 
@@ -14,7 +14,7 @@ stdenv.mkDerivation {
     sha256 = "0cqqrpvfw0nrk5d28mkzfvc8yzqxcss0k46bkmqhqjkqq886n2mm";
   };
 
-  buildInputs = [ ocaml findlib menhir which ];
+  buildInputs = [ ocaml findlib ocamlbuild menhir which ];
 
   doCheck = true;
   checkTarget = "test";
diff --git a/pkgs/development/interpreters/php/default.nix b/pkgs/development/interpreters/php/default.nix
index f79ef61d36a2..ae8256dfaeaf 100644
--- a/pkgs/development/interpreters/php/default.nix
+++ b/pkgs/development/interpreters/php/default.nix
@@ -271,7 +271,7 @@ let
         done
 
         [[ -z "$libxml2" ]] || export PATH=$PATH:$libxml2/bin
-        ./configure --with-config-file-scan-dir=/etc --with-config-file-path=$out/etc --prefix=$out $configureFlags
+        ./configure --with-config-file-scan-dir=/etc/php.d --with-config-file-path=$out/etc --prefix=$out $configureFlags
       '';
 
       postInstall = ''
diff --git a/pkgs/development/libraries/accountsservice/Add-nixbld-to-user-blacklist.patch b/pkgs/development/libraries/accountsservice/Add-nixbld-to-user-blacklist.patch
deleted file mode 100644
index f5d9e5695026..000000000000
--- a/pkgs/development/libraries/accountsservice/Add-nixbld-to-user-blacklist.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From e069102365a9ff03822667f435e662f938e8d768 Mon Sep 17 00:00:00 2001
-From: Alexander Ried <ried@mytum.de>
-Date: Wed, 1 Jun 2016 12:49:48 +0200
-Subject: [PATCH] Add nixbld* to user blacklist
-
----
- src/user-classify.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/user-classify.c b/src/user-classify.c
-index 69e6809..0e152b6 100644
---- a/src/user-classify.c
-+++ b/src/user-classify.c
-@@ -75,6 +75,10 @@ user_classify_is_blacklisted (const char *username)
-                 return TRUE;
-         }
- 
-+        if (g_str_has_prefix (username, "nixbld")) {
-+                return TRUE;
-+        }
-+
-         return FALSE;
- }
- 
--- 
-2.7.4
-
diff --git a/pkgs/development/libraries/accountsservice/default.nix b/pkgs/development/libraries/accountsservice/default.nix
index 2dc6b57c339f..1a49913727d8 100644
--- a/pkgs/development/libraries/accountsservice/default.nix
+++ b/pkgs/development/libraries/accountsservice/default.nix
@@ -3,11 +3,11 @@
 
 stdenv.mkDerivation rec {
   name = "accountsservice-${version}";
-  version = "0.6.42";
+  version = "0.6.43";
 
   src = fetchurl {
     url = "http://www.freedesktop.org/software/accountsservice/accountsservice-${version}.tar.xz";
-    sha256 = "0zh0kjpdc631qh36plcgpwvnmh9wj8l5cki3aw5r09w6y7198r75";
+    sha256 = "1k6n9079001sgcwlkq0bz6mkn4m8y4dwf6hs1qm85swcld5ajfzd";
   };
 
   buildInputs = [ pkgconfig glib intltool libtool makeWrapper
@@ -26,7 +26,6 @@ stdenv.mkDerivation rec {
 
   patches = [
     ./no-create-dirs.patch
-    ./Add-nixbld-to-user-blacklist.patch
     ./Disable-methods-that-change-files-in-etc.patch
   ];
 
diff --git a/pkgs/development/libraries/c-ares/default.nix b/pkgs/development/libraries/c-ares/default.nix
index eb68a7b9a910..482cf9fdfadd 100644
--- a/pkgs/development/libraries/c-ares/default.nix
+++ b/pkgs/development/libraries/c-ares/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "c-ares-1.10.0";
+  name = "c-ares-1.12.0";
 
   src = fetchurl {
     url = "http://c-ares.haxx.se/download/${name}.tar.gz";
-    sha256 = "1nyka87yf2jfd0y6sspll0yxwb8zi7kyvajrdbjmh4axc5s1cw1x";
+    sha256 = "1yv5ygkd813glz8hbagykgp1hlb6450chig061hr7pyw7i0gk4l6";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/capstone/default.nix b/pkgs/development/libraries/capstone/default.nix
index 80f858254ffb..97a975232602 100644
--- a/pkgs/development/libraries/capstone/default.nix
+++ b/pkgs/development/libraries/capstone/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, bash, cmake }:
+{ stdenv, fetchurl, bash }:
 
 stdenv.mkDerivation rec {
   name    = "capstone-${version}";
@@ -9,7 +9,10 @@ stdenv.mkDerivation rec {
     sha256 = "1whl5c8j6vqvz2j6ay2pyszx0jg8d3x8hq66cvgghmjchvsssvax";
   };
 
-  buildInputs = [ cmake ];
+  configurePhase = '' patchShebangs make.sh '';
+  buildPhase = '' ./make.sh '';
+  installPhase = '' env PREFIX=$out ./make.sh install '';
+
   enableParallelBuilding = true;
 
   meta = {
diff --git a/pkgs/development/libraries/cpp-netlib/default.nix b/pkgs/development/libraries/cpp-netlib/default.nix
index 5b824e3c5753..ecc730597c31 100644
--- a/pkgs/development/libraries/cpp-netlib/default.nix
+++ b/pkgs/development/libraries/cpp-netlib/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, cmake, boost, openssl }:
+{ stdenv, fetchurl, cmake, boost, openssl, asio }:
 
 stdenv.mkDerivation rec {
   name = "cpp-netlib-${version}";
@@ -11,6 +11,9 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ cmake boost openssl ];
 
+  # This can be removed when updating to 0.13, see https://github.com/cpp-netlib/cpp-netlib/issues/629
+  propagatedBuildInputs = [ asio ];
+
   cmakeFlags = [
     "-DCPP-NETLIB_BUILD_SHARED_LIBS=ON"
   ];
diff --git a/pkgs/development/libraries/gpgme/default.nix b/pkgs/development/libraries/gpgme/default.nix
index 551d18d17f19..8acc773a46c8 100644
--- a/pkgs/development/libraries/gpgme/default.nix
+++ b/pkgs/development/libraries/gpgme/default.nix
@@ -28,6 +28,9 @@ stdenv.mkDerivation rec {
     "--enable-fixed-path=${gpgStorePath}/bin"
   ];
 
+  NIX_CFLAGS_COMPILE =
+    with stdenv; lib.optional (system == "i686-linux") "-D_FILE_OFFSET_BITS=64";
+
   meta = with stdenv.lib; {
     homepage = "http://www.gnupg.org/related_software/gpgme";
     description = "Library for making GnuPG easier to use";
diff --git a/pkgs/development/libraries/jansson/default.nix b/pkgs/development/libraries/jansson/default.nix
index a24005487bee..5a3085ba7285 100644
--- a/pkgs/development/libraries/jansson/default.nix
+++ b/pkgs/development/libraries/jansson/default.nix
@@ -1,11 +1,11 @@
 {stdenv, fetchurl}:
 
 stdenv.mkDerivation rec {
-  name = "jansson-2.8";
+  name = "jansson-2.9";
 
   src = fetchurl {
     url = "http://www.digip.org/jansson/releases/${name}.tar.gz";
-    sha256 = "0v7v82mv7x44rpcxmrpnmb8hqimx67qwsp2cz9mv3y0f37iykwnf";
+    sha256 = "19fjgfwjfj99rqa3kf96x5rssj88siazggksgrikd6h4r9sd1l0a";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/jasper/default.nix b/pkgs/development/libraries/jasper/default.nix
index c9fa9b10f938..e2061df88f09 100644
--- a/pkgs/development/libraries/jasper/default.nix
+++ b/pkgs/development/libraries/jasper/default.nix
@@ -1,37 +1,17 @@
-{ stdenv, fetchurl, fetchpatch, unzip, libjpeg, autoreconfHook }:
+{ stdenv, fetchurl, fetchpatch, libjpeg, autoreconfHook }:
 
 stdenv.mkDerivation rec {
-  name = "jasper-1.900.1";
+  name = "jasper-1.900.2";
 
   src = fetchurl {
-    url = "http://www.ece.uvic.ca/~mdadams/jasper/software/${name}.zip";
-    sha256 = "154l7zk7yh3v8l2l6zm5s2alvd2fzkp6c9i18iajfbna5af5m43b";
+    url = "http://www.ece.uvic.ca/~mdadams/jasper/software/${name}.tar.gz";
+    sha256 = "0bkibjhq3js2ldxa2f9pss84lcx4f5d3v0qis3ifi11ciy7a6c9a";
   };
 
   patches = [
-    ./jasper-CVE-2016-1867.diff
     ./jasper-CVE-2014-8137-variant2.diff
     ./jasper-CVE-2014-8137-noabort.diff
-    ./jasper-CVE-2014-8138.diff
-    ./jasper-CVE-2014-8157.diff
-    ./jasper-CVE-2014-8158.diff
-    ./jasper-CVE-2014-9029.diff
-    (fetchpatch { # CVE-2016-2116
-      url = "https://github.com/mdadams/jasper/commit/142245b9bbb33274a7c620aa7a8f85bc00b2d68e.patch";
-      sha256 = "06dkplqfb3swmdfqb9i2m6r13q0ivn538xfvinxz0agandxyc9yr";
-    })
-    (fetchpatch { # CVE-2016-1577
-      url = "https://github.com/mdadams/jasper/commit/74ea22a7a4fe186e0a0124df25e19739b77c4a29.patch";
-      sha256 = "1xgvhfhv8r77z0a07ick2w3217mypnkaqjwzxbk1g1ym8lsy5r13";
-    })
-    (fetchpatch { # CVE-2015-5221
-      url = "https://github.com/mdadams/jasper/commit/df5d2867e8004e51e18b89865bc4aa69229227b3.patch";
-      sha256 = "0qsiymm59dkj843dbi43ijqdyy3rrzf193ndm9ynj3cfhqghi10l";
-    })
-    (fetchpatch { # CVE-2008-3522
-      url = "https://github.com/mdadams/jasper/commit/d678ccd27b8a062e3bfd4c80d8ce2676a8166a27.patch";
-      sha256 = "0dapf8h4s3zijbgd8vmap3blpnc78h7jqm5ydv8j0krrs5dv5672";
-    })
+
     (fetchpatch { # CVE-2016-2089
       url = "https://github.com/mdadams/jasper/commit/aa6d9c2bbae9155f8e1466295373a68fa97291c3.patch";
       sha256 = "1pxnm86zmbq6brfwsm5wx3iv7s92n4xilc52lzp61q266jmlggrf";
@@ -43,7 +23,7 @@ stdenv.mkDerivation rec {
   ];
 
   # newer reconf to recognize a multiout flag
-  nativeBuildInputs = [ unzip autoreconfHook ];
+  nativeBuildInputs = [ autoreconfHook ];
   propagatedBuildInputs = [ libjpeg ];
 
   configureFlags = "--enable-shared";
diff --git a/pkgs/development/libraries/libcaca/default.nix b/pkgs/development/libraries/libcaca/default.nix
index 5ff3157272ee..04e1af2326b6 100644
--- a/pkgs/development/libraries/libcaca/default.nix
+++ b/pkgs/development/libraries/libcaca/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ncurses, zlib, imlib2, pkgconfig, libX11 }:
+{ stdenv, fetchurl, ncurses, zlib, imlib2, pkgconfig, libX11, libXext }:
 
 stdenv.mkDerivation rec {
   name = "libcaca-0.99.beta19";
@@ -13,7 +13,8 @@ stdenv.mkDerivation rec {
 
   outputs = [ "bin" "dev" "out" "man" ];
 
-  propagatedBuildInputs = [ ncurses zlib imlib2 pkgconfig libX11 ];
+  propagatedBuildInputs = [ ncurses zlib imlib2 pkgconfig libX11 ]
+   ++ stdenv.lib.optional stdenv.isDarwin libXext;
 
   postInstall = ''
     mkdir -p $dev/bin
diff --git a/pkgs/development/libraries/libgee/0.8.nix b/pkgs/development/libraries/libgee/0.8.nix
new file mode 100644
index 000000000000..aba06d861078
--- /dev/null
+++ b/pkgs/development/libraries/libgee/0.8.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, pkgconfig, glib }:
+
+let
+  ver_maj = "0.8";
+  ver_min = "6";
+in
+stdenv.mkDerivation rec {
+  name = "libgee-${ver_maj}.${ver_min}";
+
+  src = fetchurl {
+    url = "https://download.gnome.org/sources/libgee/${ver_maj}/${name}.tar.xz";
+    sha256 = "1mp3bfghc8qh2v8h2pfhksda22mgy2d5ygm1jr3bir544nr8i4fg";
+  };
+
+  buildInputs = [ glib ];
+  nativeBuildInputs = [ pkgconfig ];
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "Utility library providing GObject-based interfaces and classes for commonly used data structures";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    homepage = "http://live.gnome.org/Libgee";
+    maintainers = with maintainers; [ sternenseemann ];
+  };
+}
diff --git a/pkgs/development/libraries/libmbim/default.nix b/pkgs/development/libraries/libmbim/default.nix
index aa5d858d82cf..c40e54e09cb6 100644
--- a/pkgs/development/libraries/libmbim/default.nix
+++ b/pkgs/development/libraries/libmbim/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, pkgconfig, glib, python, udev, libgudev }:
 
 stdenv.mkDerivation rec {
-  name = "libmbim-1.12.2";
+  name = "libmbim-1.14.0";
 
   src = fetchurl {
-    url = "http://www.freedesktop.org/software/libmbim/${name}.tar.xz";
-    sha256 = "0abv0h9c3kbw4bq1b9270sg189jcjj3x3wa91bj836ynwg9m34wl";
+    url = "https://www.freedesktop.org/software/libmbim/${name}.tar.xz";
+    sha256 = "0nxb4x8l092xckk4dy84cn5qhviif8akzy0miypapjqqbalm53fa";
   };
 
   outputs = [ "out" "dev" "doc" ];
diff --git a/pkgs/development/libraries/libnfnetlink/default.nix b/pkgs/development/libraries/libnfnetlink/default.nix
index c47076014c43..be60612a4ff2 100644
--- a/pkgs/development/libraries/libnfnetlink/default.nix
+++ b/pkgs/development/libraries/libnfnetlink/default.nix
@@ -5,7 +5,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "http://www.netfilter.org/projects/libnfnetlink/files/${name}.tar.bz2";
-    md5 = "98927583d2016a9fb1936fed992e2c5e";
+    sha256 = "06mm2x4b01k3m7wnrxblk9j0mybyr4pfz28ml7944xhjx6fy2w7j";
   };
 
   meta = {
diff --git a/pkgs/development/libraries/libqmi/default.nix b/pkgs/development/libraries/libqmi/default.nix
index cfce5e0fd713..d0b46722ff35 100644
--- a/pkgs/development/libraries/libqmi/default.nix
+++ b/pkgs/development/libraries/libqmi/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, pkgconfig, glib, python }:
 
 stdenv.mkDerivation rec {
-  name = "libqmi-1.12.6";
+  name = "libqmi-1.16.0";
 
   src = fetchurl {
-    url = "http://www.freedesktop.org/software/libqmi/${name}.tar.xz";
-    sha256 = "101ppan2q1h4pyp2zbn9b8sdwy2c7fk9rp91yykxz3afrvzbymq8";
+    url = "https://www.freedesktop.org/software/libqmi/${name}.tar.xz";
+    sha256 = "0amshs06qc8zy8jz3r2yksqhhbamll7f893ll4zlvgr3zm3vpdks";
   };
 
   outputs = [ "out" "dev" "devdoc" ];
diff --git a/pkgs/development/libraries/libunistring/default.nix b/pkgs/development/libraries/libunistring/default.nix
index 7f32f37a704d..ad6d99473555 100644
--- a/pkgs/development/libraries/libunistring/default.nix
+++ b/pkgs/development/libraries/libunistring/default.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
 
   patches = stdenv.lib.optional stdenv.isDarwin [ ./clang.patch ];
 
-  propagatedBuildInputs = [ libiconv ];
+  buildInputs = [ libiconv ];
 
   configureFlags = [
     "--with-libiconv-prefix=${libiconv}"
diff --git a/pkgs/development/libraries/openjpeg/2.1.nix b/pkgs/development/libraries/openjpeg/2.1.nix
index d59ceb9f7a9d..00cd4103c8f7 100644
--- a/pkgs/development/libraries/openjpeg/2.1.nix
+++ b/pkgs/development/libraries/openjpeg/2.1.nix
@@ -1,8 +1,8 @@
 { callPackage, ... } @ args:
 
 callPackage ./generic.nix (args // rec {
-  version = "2.1.1";
+  version = "2.1.2";
   branch = "2.1";
-  revision = "v2.1.1";
-  sha256 = "1hrn10byrlw7hb7hwv2zvff89rxy3bsbn0im5ki4kdk63jw5p601";
+  revision = "v2.1.2";
+  sha256 = "0kdcl9sqjz0vagli4ad6bxq1r8ma086m0prpkm5x3dxp37hpjp8h";
 })
diff --git a/pkgs/development/libraries/pcl/default.nix b/pkgs/development/libraries/pcl/default.nix
index 42a8d00eec01..b9762e284e68 100644
--- a/pkgs/development/libraries/pcl/default.nix
+++ b/pkgs/development/libraries/pcl/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub, cmake, qhull, flann, boost, vtk, eigen, pkgconfig, qt4
-, libusb1, libpcap, libXt, libpng, Cocoa, AGL, cf-private
+, libusb1, libpcap, libXt, libpng, Cocoa, AGL, cf-private, OpenGL
 }:
 
 stdenv.mkDerivation rec {
@@ -18,7 +18,9 @@ stdenv.mkDerivation rec {
                   libpng vtk qt4 libXt ]
     ++ stdenv.lib.optionals stdenv.isDarwin [ Cocoa AGL cf-private ];
   cmakeFlags = stdenv.lib.optionals stdenv.isDarwin [
-    "-DCMAKE_OSX_SYSROOT=" "-DCMAKE_OSX_DEPLOYMENT_TARGET=" ];
+    "-DCMAKE_OSX_SYSROOT=" "-DCMAKE_OSX_DEPLOYMENT_TARGET="
+    "-DOPENGL_INCLUDE_DIR=${OpenGL}/Library/Frameworks"
+  ];
 
   preConfigure = stdenv.lib.optionalString stdenv.isDarwin ''
     NIX_CFLAGS_COMPILE=$(echo "$NIX_CFLAGS_COMPILE" | sed "s,[[:space:]]*-F$NIX_STORE/[[:alnum:]]*-CF-osx-[[:digit:].]*/Library/Frameworks,,g")
diff --git a/pkgs/development/libraries/quickder/default.nix b/pkgs/development/libraries/quickder/default.nix
new file mode 100644
index 000000000000..2ee3a61aacfc
--- /dev/null
+++ b/pkgs/development/libraries/quickder/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, fetchurl, hexio, python, which, asn2quickder, bash }:
+
+stdenv.mkDerivation rec {
+  pname = "quickder";
+  name = "${pname}-${version}";
+  version = "1.0-RC1";
+
+  src = fetchFromGitHub {
+    sha256 = "05gw5dqkw3l8kwwm0044zpxhcp7sxicx9wxbfyr49c91403p870w";
+    rev = "version-${version}";
+    owner = "vanrein";
+    repo = "quick-der";
+  };
+
+  buildInputs = [ which asn2quickder bash ];
+
+  patchPhase = ''
+    substituteInPlace Makefile \
+      --replace 'lib tool test rfc' 'lib test rfc'
+    substituteInPlace ./rfc/Makefile \
+      --replace 'ASN2QUICKDER_CMD = ' 'ASN2QUICKDER_CMD = ${asn2quickder}/bin/asn2quickder #'
+    '';
+
+  installFlags = "ASN2QUICKDER_DIR=${asn2quickder}/bin ASN2QUICKDER_CMD=${asn2quickder}/bin/asn2quickder";
+  installPhase = ''
+    mkdir -p $out/lib $out/man
+    make DESTDIR=$out PREFIX=/ all
+    make DESTDIR=$out PREFIX=/ install
+    '';
+
+  meta = with stdenv.lib; {
+    description = "Quick (and Easy) DER, a Library for parsing ASN.1";
+    homepage = https://github.com/vanrein/quick-der;
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ leenaars ];
+  };
+}
diff --git a/pkgs/development/libraries/uri/default.nix b/pkgs/development/libraries/uri/default.nix
new file mode 100644
index 000000000000..61ac651256a2
--- /dev/null
+++ b/pkgs/development/libraries/uri/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, cmake, doxygen }:
+
+stdenv.mkDerivation {
+  name = "uri-2016-09-04";
+
+  src = fetchFromGitHub {
+    owner = "cpp-netlib";
+    repo = "uri";
+    rev = "8b1eec80621ea7be1db3b28f1621e531cc72855c";
+    sha256 = "0f77y79b11pp31y0qpydki2nnxd6gpycp24fmrapi70fsni2ah0d";
+  };
+
+  buildInputs = [ cmake doxygen ];
+
+  cmakeFlags = [ "-DUri_BUILD_TESTS=OFF" "-DBUILD_SHARED_LIBS=ON" ];
+
+  postBuild = ''
+    make doc
+  '';
+
+  # https://github.com/cpp-netlib/uri/issues/90
+  postInstall = ''
+    mv $out/include $out/include2
+    mv $out/include2/include $out/
+    rmdir $out/include2
+    mkdir -p $out/share/doc
+    mv html $out/share/doc/uri
+  '';
+
+  meta = {
+    description = "C++ URI library";
+    homepage = http://cpp-netlib.org;
+    license = stdenv.lib.licenses.boost;
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/pkgs/development/libraries/webkitgtk/2.14.nix b/pkgs/development/libraries/webkitgtk/2.14.nix
index fca358ed4305..7439d72151dd 100644
--- a/pkgs/development/libraries/webkitgtk/2.14.nix
+++ b/pkgs/development/libraries/webkitgtk/2.14.nix
@@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
 
   # XXX: WebKit2 missing include path for gst-plugins-base.
   # Filled: https://bugs.webkit.org/show_bug.cgi?id=148894
-  #NIX_CFLAGS_COMPILE = "-I${gst-plugins-base.dev}/include/gstreamer-1.0";
+  NIX_CFLAGS_COMPILE = "-I${gst-plugins-base.dev}/include/gstreamer-1.0";
 
   nativeBuildInputs = [
     cmake perl python ruby bison gperf sqlite
diff --git a/pkgs/development/ocaml-modules/ansiterminal/default.nix b/pkgs/development/ocaml-modules/ansiterminal/default.nix
index 615e1d1b6739..7edd0ddda5eb 100644
--- a/pkgs/development/ocaml-modules/ansiterminal/default.nix
+++ b/pkgs/development/ocaml-modules/ansiterminal/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild }:
 
 stdenv.mkDerivation {
 
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
     sha256 = "1j9kflv2i16vf9hy031cl6z8hv6791mjbhnd9bw07y1pswdlx1r6";
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   configurePhase = "ocaml setup.ml -configure --prefix $out";
 
diff --git a/pkgs/development/ocaml-modules/base64/default.nix b/pkgs/development/ocaml-modules/base64/default.nix
index aabb9f8a76a1..8128dc1cb6f5 100644
--- a/pkgs/development/ocaml-modules/base64/default.nix
+++ b/pkgs/development/ocaml-modules/base64/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib }:
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild }:
 
 let version = "2.0.0"; in
 
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
     sha256 = "1nv55gwq5vaxmrcz9ja2s165b1p9fhcxszc1l76043gpa56qm4fs";
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/batteries/default.nix b/pkgs/development/ocaml-modules/batteries/default.nix
index 0c01a946e5ad..904a214c34f5 100644
--- a/pkgs/development/ocaml-modules/batteries/default.nix
+++ b/pkgs/development/ocaml-modules/batteries/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib, qtest }:
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild, qtest }:
 
 let version = "2.5.2"; in
 
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
     sha256 = "01v7sp8vsqlfrmpji5pkrsjl43r3q8hk1a4z4lmyy9y2i0fqwl07";
   };
 
-  buildInputs = [ ocaml findlib qtest ];
+  buildInputs = [ ocaml findlib ocamlbuild qtest ];
 
   configurePhase = "true"; 	# Skip configure
 
diff --git a/pkgs/development/ocaml-modules/bolt/default.nix b/pkgs/development/ocaml-modules/bolt/default.nix
index cf8b21edb50e..5d1fe8aa0d11 100644
--- a/pkgs/development/ocaml-modules/bolt/default.nix
+++ b/pkgs/development/ocaml-modules/bolt/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, which, camlp4 }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, which, camlp4 }:
 
 let inherit (stdenv.lib) getVersion versionAtLeast; in
 
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
     sha256 = "1c807wrpxra9sbb34lajhimwra28ldxv04m570567lh2b04n38zy";
   };
 
-  buildInputs = [ ocaml findlib which camlp4 ];
+  buildInputs = [ ocaml findlib ocamlbuild which camlp4 ];
 
   patchPhase = ''
     patch myocamlbuild.ml <<EOF
diff --git a/pkgs/development/ocaml-modules/cil/default.nix b/pkgs/development/ocaml-modules/cil/default.nix
index 1753084910b9..99b5f92b3405 100644
--- a/pkgs/development/ocaml-modules/cil/default.nix
+++ b/pkgs/development/ocaml-modules/cil/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, perl, ocaml, findlib }:
+{ stdenv, fetchurl, perl, ocaml, findlib, ocamlbuild }:
 stdenv.mkDerivation {
   name = "ocaml-cil-1.7.3";
   src = fetchurl {
@@ -6,7 +6,7 @@ stdenv.mkDerivation {
     sha256 = "05739da0b0msx6kmdavr3y2bwi92jbh3szc35d7d8pdisa8g5dv9";
   };
 
-  buildInputs = [ perl ocaml findlib ];
+  buildInputs = [ perl ocaml findlib ocamlbuild ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/cmdliner/default.nix b/pkgs/development/ocaml-modules/cmdliner/default.nix
index d72ff6d93d4b..8be36a2a408f 100644
--- a/pkgs/development/ocaml-modules/cmdliner/default.nix
+++ b/pkgs/development/ocaml-modules/cmdliner/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib, opam}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, opam }:
 
 let
   pname = "cmdliner";
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
   };
 
   unpackCmd = "tar xjf $src";
-  buildInputs = [ ocaml findlib opam ];
+  buildInputs = [ ocaml findlib ocamlbuild opam ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/containers/default.nix b/pkgs/development/ocaml-modules/containers/default.nix
index fbbf0fc74149..4719cd300c19 100644
--- a/pkgs/development/ocaml-modules/containers/default.nix
+++ b/pkgs/development/ocaml-modules/containers/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, ocaml, findlib, cppo, gen, sequence, qtest, ounit, ocaml_oasis, result
+{ stdenv, fetchFromGitHub, ocaml, findlib, ocamlbuild, cppo, gen, sequence, qtest, ounit, ocaml_oasis, result
 , qcheck }:
 
 let
@@ -21,7 +21,7 @@ stdenv.mkDerivation {
     sha256 = "169j8vqg8h70wbldjg610jqikfk23ggw8zypmpzv3piym5p1dfiw";
   };
 
-  buildInputs = [ ocaml findlib cppo gen sequence qtest ounit ocaml_oasis qcheck ];
+  buildInputs = [ ocaml findlib ocamlbuild cppo gen sequence qtest ounit ocaml_oasis qcheck ];
 
   propagatedBuildInputs = [ result ];
 
diff --git a/pkgs/development/ocaml-modules/cryptokit/default.nix b/pkgs/development/ocaml-modules/cryptokit/default.nix
index be61ad70b3df..461e2b887084 100644
--- a/pkgs/development/ocaml-modules/cryptokit/default.nix
+++ b/pkgs/development/ocaml-modules/cryptokit/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, zlib, ocaml, findlib, ncurses}:
+{ stdenv, fetchurl, zlib, ocaml, findlib, ocamlbuild, ncurses }:
 
 assert stdenv.lib.versionAtLeast ocaml.version "3.12";
 
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     sha256 = "1k2f2ixm7jcsgrzn9lz1hm9qqgq71lk9lxy3v3cwsd8xdrj3jrnv";
   };
 
-  buildInputs = [zlib ocaml findlib ncurses];
+  buildInputs = [ zlib ocaml findlib ocamlbuild ncurses ];
 
   buildFlags = "setup.data build";
 
diff --git a/pkgs/development/ocaml-modules/csv/default.nix b/pkgs/development/ocaml-modules/csv/default.nix
index 760b981dd2ca..95199f16dcc2 100644
--- a/pkgs/development/ocaml-modules/csv/default.nix
+++ b/pkgs/development/ocaml-modules/csv/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib }:
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild }:
 
 stdenv.mkDerivation {
 
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
     sha256 = "05s8py2qr3889c72g1q07r15pzch3j66xdphxi2sd93h5lvnpi4j";
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/dolog/default.nix b/pkgs/development/ocaml-modules/dolog/default.nix
index 5987c53898fc..318353168336 100644
--- a/pkgs/development/ocaml-modules/dolog/default.nix
+++ b/pkgs/development/ocaml-modules/dolog/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib }:
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild }:
 
 let version = "3.0"; in
 
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
     sha256 = "0gx2s4509vkkkaikl2yp7k5x7bqv45s1y1vsy408d8rakd7yl1zb";
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/enumerate/default.nix b/pkgs/development/ocaml-modules/enumerate/default.nix
index a9475649ff66..557f2f88d8d2 100644
--- a/pkgs/development/ocaml-modules/enumerate/default.nix
+++ b/pkgs/development/ocaml-modules/enumerate/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, type_conv, camlp4 }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, type_conv, camlp4 }:
 
 assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4.00";
 
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
     sha256 = "0b6mx5p01lcpimvak4wx6aj2119707wsfzd83rwgb91bhpgzh156";
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
   propagatedBuildInputs = [ type_conv camlp4 ];
 
   createFindlibDestdir = true;
diff --git a/pkgs/development/ocaml-modules/erm_xml/default.nix b/pkgs/development/ocaml-modules/erm_xml/default.nix
index ecfdb846ff1e..ae264b657d87 100644
--- a/pkgs/development/ocaml-modules/erm_xml/default.nix
+++ b/pkgs/development/ocaml-modules/erm_xml/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib }:
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild }:
 
 let version = "0.3"; in
 
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
     sha256 = "19znk5w0qiw3wij4n6w3h5bcr221yy57jf815fr8k9m8kin710g3";
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/erm_xmpp/default.nix b/pkgs/development/ocaml-modules/erm_xmpp/default.nix
index efa239f6c332..c6027ce11ce5 100644
--- a/pkgs/development/ocaml-modules/erm_xmpp/default.nix
+++ b/pkgs/development/ocaml-modules/erm_xmpp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fetchzip, ocaml, findlib, erm_xml, cryptokit, camlp4 }:
+{ stdenv, fetchurl, fetchzip, ocaml, findlib, ocamlbuild, erm_xml, cryptokit, camlp4 }:
 
 let
   version = "0.2";
@@ -18,7 +18,7 @@ stdenv.mkDerivation {
 
   patches = [ disable-tests ];
 
-  buildInputs = [ ocaml findlib camlp4 ];
+  buildInputs = [ ocaml findlib ocamlbuild camlp4 ];
   propagatedBuildInputs = [ erm_xml cryptokit ];
 
   createFindlibDestdir = true;
diff --git a/pkgs/development/ocaml-modules/expat/default.nix b/pkgs/development/ocaml-modules/expat/default.nix
index 0ecb135b4e8f..5fcc317d9408 100644
--- a/pkgs/development/ocaml-modules/expat/default.nix
+++ b/pkgs/development/ocaml-modules/expat/default.nix
@@ -28,7 +28,8 @@ stdenv.mkDerivation rec {
     substituteInPlace "unittest.ml" \
       --replace "/home/maas/xml-samples/REC-xml-19980210.xml.txt" "${testcase}"
     substituteInPlace Makefile --replace "EXPAT_LIBDIR=/usr/local/lib" "EXPAT_LIBDIR=${expat.out}/lib" \
-    substituteInPlace Makefile --replace "EXPAT_INCDIR=/usr/local/include" "EXPAT_INCDIR=${expat.dev}/include" \
+      --replace "EXPAT_INCDIR=/usr/local/include" "EXPAT_INCDIR=${expat.dev}/include" \
+      --replace "gcc" "\$(CC)"
   '';
 
   configurePhase = "true";  	# Skip configure
diff --git a/pkgs/development/ocaml-modules/fileutils/default.nix b/pkgs/development/ocaml-modules/fileutils/default.nix
index 3ffcfada3d5d..9dfffbf48c55 100644
--- a/pkgs/development/ocaml-modules/fileutils/default.nix
+++ b/pkgs/development/ocaml-modules/fileutils/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, ounit }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, ounit }:
 
 stdenv.mkDerivation {
   name = "ocaml-fileutils-0.5.0";
@@ -8,7 +8,7 @@ stdenv.mkDerivation {
     sha256 = "0xs96nlrrm335mcsgsxnqzspiqyfn26b0jjxm72br7c7ax534n47";
   };
 
-  buildInputs = [ ocaml findlib ounit ];
+  buildInputs = [ ocaml findlib ocamlbuild ounit ];
 
   configureFlags = "--enable-tests";
   doCheck = true;
diff --git a/pkgs/development/ocaml-modules/fix/default.nix b/pkgs/development/ocaml-modules/fix/default.nix
index 77e2461bda04..76cb6d088440 100644
--- a/pkgs/development/ocaml-modules/fix/default.nix
+++ b/pkgs/development/ocaml-modules/fix/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild }:
 
 assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "3.12";
 
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
     sha256 = "1phlqcs1nb93x9cf0w0hnq2ck4dmn71zm4mxf60w96vb9yb9qzp0";
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/gapi-ocaml/default.nix b/pkgs/development/ocaml-modules/gapi-ocaml/default.nix
index 06a67e9cb8b6..224f3537a2e0 100644
--- a/pkgs/development/ocaml-modules/gapi-ocaml/default.nix
+++ b/pkgs/development/ocaml-modules/gapi-ocaml/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, ocurl, cryptokit, ocaml_extlib, yojson, ocamlnet, xmlm }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, ocurl, cryptokit, ocaml_extlib, yojson, ocamlnet, xmlm }:
 
 stdenv.mkDerivation rec {
   name = "gapi-ocaml-0.2.10";
@@ -6,7 +6,7 @@ stdenv.mkDerivation rec {
     url = "https://forge.ocamlcore.org/frs/download.php/1601/${name}.tar.gz";
     sha256 = "0kg4j7dhr7jynpy8x53bflqjf78jyl14j414l6px34xz7c9qx5fl";
   };
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
   propagatedBuildInputs = [ ocurl cryptokit ocaml_extlib yojson ocamlnet xmlm ];
 
   configurePhase = "ocaml setup.ml -configure --prefix $out";
diff --git a/pkgs/development/ocaml-modules/gen/default.nix b/pkgs/development/ocaml-modules/gen/default.nix
index 90f74b2c6026..c023b590f7a7 100644
--- a/pkgs/development/ocaml-modules/gen/default.nix
+++ b/pkgs/development/ocaml-modules/gen/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, ocaml, findlib, qtest, ounit }:
+{ stdenv, fetchFromGitHub, ocaml, findlib, ocamlbuild, qtest, ounit }:
 
 let version = "0.3"; in
 
@@ -12,7 +12,7 @@ stdenv.mkDerivation {
     sha256 = "0xrnkcfa5q86ammf49j5hynw5563x5sa2mk7vqf7g097j1szif72";
   };
 
-  buildInputs = [ ocaml findlib qtest ounit ];
+  buildInputs = [ ocaml findlib ocamlbuild qtest ounit ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/gg/default.nix b/pkgs/development/ocaml-modules/gg/default.nix
index 9351bfa7520e..0839ff361aea 100644
--- a/pkgs/development/ocaml-modules/gg/default.nix
+++ b/pkgs/development/ocaml-modules/gg/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, opam }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, opam }:
 
 let
   inherit (stdenv.lib) getVersion versionAtLeast;
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
     sha256 = "0czj41sr8jsivl3z8wyblf9k971j3kx2wc3s0c1nhzcc8allg9i2";
   };
 
-  buildInputs = [ ocaml findlib opam ];
+  buildInputs = [ ocaml findlib ocamlbuild opam ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/iso8601/default.nix b/pkgs/development/ocaml-modules/iso8601/default.nix
index 0aad6f7b13bb..8a11d22c2c11 100644
--- a/pkgs/development/ocaml-modules/iso8601/default.nix
+++ b/pkgs/development/ocaml-modules/iso8601/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib }:
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild }:
 
 let version = "0.2.4"; in
 
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
     sha256 = "0ypdd1p04xdjxxx3b61wp7abswfrq3vcvwwaxvywxwqljw0dhydi";
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
   createFindlibDestdir = true;
 
   meta = {
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-variants-conv.nix b/pkgs/development/ocaml-modules/janestreet/ppx-variants-conv.nix
index e5efb786a943..9bc1cbb59e46 100644
--- a/pkgs/development/ocaml-modules/janestreet/ppx-variants-conv.nix
+++ b/pkgs/development/ocaml-modules/janestreet/ppx-variants-conv.nix
@@ -1,10 +1,10 @@
 {stdenv, buildOcamlJane,
- ppx_core, ppx_tools, ppx_type_conv, sexplib}:
+ ppx_core, ppx_tools, ppx_type_conv, sexplib, variantslib}:
 
 buildOcamlJane rec {
   name = "ppx_variants_conv";
   hash = "0kgal8b9yh7wrd75hllb9fyl6zbksfnr9k7pykpzdm3js98dirhn";
-  propagatedBuildInputs = [ ppx_core ppx_tools ppx_type_conv sexplib];
+  propagatedBuildInputs = [ ppx_core ppx_tools ppx_type_conv sexplib variantslib ];
 
   meta = with stdenv.lib; {
     description = "Generation of accessor and iteration functions for ocaml variant types";
diff --git a/pkgs/development/ocaml-modules/jsonm/default.nix b/pkgs/development/ocaml-modules/jsonm/default.nix
index cc5de781beec..f473527c15c8 100644
--- a/pkgs/development/ocaml-modules/jsonm/default.nix
+++ b/pkgs/development/ocaml-modules/jsonm/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, uutf }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, uutf }:
 
 let version = "0.9.1"; in
 
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
     sha256 = "0wszqrmx8iqlwzvs76fjf4sqh15mv20yjrbyhkd348yq8nhdrm1z";
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
   propagatedBuildInputs = [ uutf ];
 
   unpackCmd = "tar xjf $src";
diff --git a/pkgs/development/ocaml-modules/lambda-term/1.6.nix b/pkgs/development/ocaml-modules/lambda-term/1.6.nix
index 026f67d8ef44..4638748160a2 100644
--- a/pkgs/development/ocaml-modules/lambda-term/1.6.nix
+++ b/pkgs/development/ocaml-modules/lambda-term/1.6.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libev, ocaml, findlib, ocaml_lwt, ocaml_react, zed, camlp4 }:
+{ stdenv, fetchurl, libev, ocaml, findlib, ocamlbuild, ocaml_lwt, ocaml_react, zed, camlp4 }:
 
 stdenv.mkDerivation rec {
   version = "1.6";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "1rhfixdgpylxznf6sa9wr31wb4pjzpfn5mxhxqpbchmpl2afwa09";
   };
 
-  buildInputs = [ libev ocaml findlib ocaml_lwt ocaml_react ];
+  buildInputs = [ libev ocaml findlib ocamlbuild ocaml_lwt ocaml_react ];
 
   propagatedBuildInputs = [ camlp4 zed ];
 
diff --git a/pkgs/development/ocaml-modules/lambda-term/default.nix b/pkgs/development/ocaml-modules/lambda-term/default.nix
index 60afad57b57b..f66773d426af 100644
--- a/pkgs/development/ocaml-modules/lambda-term/default.nix
+++ b/pkgs/development/ocaml-modules/lambda-term/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libev, ocaml, findlib, ocaml_lwt, ocaml_react, zed }:
+{ stdenv, fetchurl, libev, ocaml, findlib, ocamlbuild, ocaml_lwt, ocaml_react, zed }:
 
 assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4.01";
 
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     sha256 = "1kwpsqds51xmy3z3ddkam92hkl7arlzy9awhzsq62ysxcl91fb8m";
   };
 
-  buildInputs = [ libev ocaml findlib ocaml_react ];
+  buildInputs = [ libev ocaml findlib ocamlbuild ocaml_react ];
 
   propagatedBuildInputs = [ zed ocaml_lwt ];
 
diff --git a/pkgs/development/ocaml-modules/llvm/default.nix b/pkgs/development/ocaml-modules/llvm/default.nix
index 2f58c41ba355..351a773a6f7b 100644
--- a/pkgs/development/ocaml-modules/llvm/default.nix
+++ b/pkgs/development/ocaml-modules/llvm/default.nix
@@ -12,7 +12,7 @@ stdenv.mkDerivation {
   configurePhase = ''
     mkdir build
     cd build
-    ../configure CC=gcc CXX=g++ --disable-compiler-version-checks --prefix=$out \
+    ../configure --disable-compiler-version-checks --prefix=$out \
     --disable-doxygen --disable-docs --with-ocaml-libdir=$OCAMLFIND_DESTDIR/llvm \
     --enable-static
     '';
diff --git a/pkgs/development/ocaml-modules/lwt/default.nix b/pkgs/development/ocaml-modules/lwt/default.nix
index 4c99ff2b6859..9eeed1285dcc 100644
--- a/pkgs/development/ocaml-modules/lwt/default.nix
+++ b/pkgs/development/ocaml-modules/lwt/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, which, cryptopp, ocaml, findlib, ocaml_react, ocaml_ssl, libev, pkgconfig, ncurses, ocaml_oasis, ocaml_text, glib, camlp4, ppx_tools }:
+{ stdenv, fetchzip, which, cryptopp, ocaml, findlib, ocamlbuild, ocaml_react, ocaml_ssl, libev, pkgconfig, ncurses, ocaml_oasis, ocaml_text, glib, camlp4, ppx_tools }:
 
 let
   inherit (stdenv.lib) optional getVersion versionAtLeast;
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
     sha256 = "0gmhm282r8yi0gwcv0g2s7qchkfjmhqbqf4j9frlyv665ink9kxl";
   };
 
-  buildInputs = [ ocaml_oasis pkgconfig which cryptopp ocaml findlib glib ncurses camlp4 ppx_tools ];
+  buildInputs = [ ocaml_oasis pkgconfig which cryptopp ocaml findlib ocamlbuild glib ncurses camlp4 ppx_tools ];
 
   propagatedBuildInputs = [ ocaml_react ocaml_ssl ocaml_text libev ];
 
diff --git a/pkgs/development/ocaml-modules/macaque/default.nix b/pkgs/development/ocaml-modules/macaque/default.nix
index a24859892fa1..3d015e26275b 100644
--- a/pkgs/development/ocaml-modules/macaque/default.nix
+++ b/pkgs/development/ocaml-modules/macaque/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib, pgocaml, camlp4 }:
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild, pgocaml, camlp4 }:
 
 stdenv.mkDerivation {
   name = "ocaml-macaque-0.7.2";
@@ -7,7 +7,7 @@ stdenv.mkDerivation {
     sha256 = "14i0a8cndzndjmlkyhf31r451q99cnkndgxcj0id4qjqhdl4bmjv";
   };
 
-  buildInputs = [ ocaml findlib camlp4 ];
+  buildInputs = [ ocaml findlib ocamlbuild camlp4 ];
   propagatedBuildInputs = [ pgocaml ];
 
   createFindlibDestdir = true;
diff --git a/pkgs/development/ocaml-modules/magic-mime/default.nix b/pkgs/development/ocaml-modules/magic-mime/default.nix
index 9c42aed37df2..9a8a6259a778 100644
--- a/pkgs/development/ocaml-modules/magic-mime/default.nix
+++ b/pkgs/development/ocaml-modules/magic-mime/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib }:
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild }:
 
 let version = "1.0.0"; in
 
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
     sha256 = "058d83hmxd5mjccxdm3ydchmhk2lca5jdg82jg0klsigmf4ida6v";
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/markup/default.nix b/pkgs/development/ocaml-modules/markup/default.nix
index d4a38d9bd9e4..a177ae240d14 100644
--- a/pkgs/development/ocaml-modules/markup/default.nix
+++ b/pkgs/development/ocaml-modules/markup/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, uutf, lwt }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, uutf, lwt }:
 
 stdenv.mkDerivation rec {
   pname = "ocaml-markup";
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
     sha256 = "0d3wi22v7h0iqzq8dgl0g4fj2wb67gvmbzdckacifghinrx762k3";
     };
 
-  buildInputs = [ocaml findlib];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   installPhase = "make ocamlfind-install";
   
diff --git a/pkgs/development/ocaml-modules/menhir/default.nix b/pkgs/development/ocaml-modules/menhir/default.nix
index 5b2fd400cd7f..839a49615cd8 100644
--- a/pkgs/development/ocaml-modules/menhir/default.nix
+++ b/pkgs/development/ocaml-modules/menhir/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild
 , version ? if stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4.02" then "20160526" else "20140422"
 }@args:
 
diff --git a/pkgs/development/ocaml-modules/menhir/generic.nix b/pkgs/development/ocaml-modules/menhir/generic.nix
index c182d2100490..9d4615a006b5 100644
--- a/pkgs/development/ocaml-modules/menhir/generic.nix
+++ b/pkgs/development/ocaml-modules/menhir/generic.nix
@@ -1,4 +1,4 @@
-{ version, sha256, stdenv, fetchurl, ocaml, findlib }:
+{ version, sha256, stdenv, fetchurl, ocaml, findlib, ocamlbuild }:
 
 stdenv.mkDerivation {
   name = "menhir-${version}";
@@ -8,7 +8,7 @@ stdenv.mkDerivation {
     inherit sha256;
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/ocaml-cairo2/default.nix b/pkgs/development/ocaml-modules/ocaml-cairo2/default.nix
index 204adeb9451e..5b902afcb6db 100644
--- a/pkgs/development/ocaml-modules/ocaml-cairo2/default.nix
+++ b/pkgs/development/ocaml-modules/ocaml-cairo2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, pkgconfig, cairo, lablgtk, gtk2,
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, pkgconfig, cairo, lablgtk, gtk2,
   enableGtkSupport ? true # Whether to compile with support for Gtk
                           # integration (library file cairo2_gtk). Depends
                           # on lablgtk and gtk2.
@@ -19,7 +19,7 @@ stdenv.mkDerivation {
     sha256 = "1lc1iv5yz49avbc0wbrw9nrx8dn0c35r7cykivjln1zc2fwscf7w";
   };
 
-  buildInputs = [ ocaml findlib pkgconfig cairo ]
+  buildInputs = [ ocaml findlib ocamlbuild pkgconfig cairo ]
                 ++ optionals enableGtkSupport [ gtk2 ];
 
   # lablgtk2 is marked as a propagated build input since loading the
diff --git a/pkgs/development/ocaml-modules/ocaml-text/default.nix b/pkgs/development/ocaml-modules/ocaml-text/default.nix
index 64e0bb5ba010..d90fda954ba3 100644
--- a/pkgs/development/ocaml-modules/ocaml-text/default.nix
+++ b/pkgs/development/ocaml-modules/ocaml-text/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, libiconv, ocaml, findlib, ncurses }:
+{ stdenv, fetchzip, libiconv, ocaml, findlib, ocamlbuild, ncurses }:
 
 stdenv.mkDerivation rec {
   name = "ocaml-text-${version}";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "11jamdfn5s19a0yvl012q1xvdk1grkp4rkrn819imqrvdplqkn1y";
   };
 
-  buildInputs = [ocaml findlib ncurses libiconv];
+  buildInputs = [ ocaml findlib ocamlbuild ncurses libiconv ];
 
   configurePhase = "iconv_prefix=${libiconv} ocaml setup.ml -configure";
 
diff --git a/pkgs/development/ocaml-modules/ocamlnet/default.nix b/pkgs/development/ocaml-modules/ocamlnet/default.nix
index 73351ea633f4..fc7640cc0c94 100644
--- a/pkgs/development/ocaml-modules/ocamlnet/default.nix
+++ b/pkgs/development/ocaml-modules/ocamlnet/default.nix
@@ -2,11 +2,11 @@
 , gnutls, nettle }:
 
 stdenv.mkDerivation {
-  name = "ocamlnet-4.1.1";
+  name = "ocamlnet-4.1.2";
 
   src = fetchurl {
-    url = http://download.camlcity.org/download/ocamlnet-4.1.1.tar.gz;
-    sha256 = "1z0j542dfzfimsn4asw1ycb4ww561pv92cz6s6kxazvgx60c5rb1";
+    url = http://download.camlcity.org/download/ocamlnet-4.1.2.tar.gz;
+    sha256 = "1n0l9zlq7dc5yr43bpa4a0b6bxj3iyjkadbb41g59zlwa8hkk34i";
   };
 
   buildInputs = [ ncurses ocaml findlib ocaml_pcre camlzip gnutls pkgconfig nettle ];
diff --git a/pkgs/development/ocaml-modules/ocplib-endian/default.nix b/pkgs/development/ocaml-modules/ocplib-endian/default.nix
index 351f667a8c90..b7d897b38531 100644
--- a/pkgs/development/ocaml-modules/ocplib-endian/default.nix
+++ b/pkgs/development/ocaml-modules/ocplib-endian/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib, cppo }:
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild, cppo }:
 
 let version = "0.8"; in
 
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
     sha256 = "12xjvzw245mj4s02dgi4k2sx5gam7wxi4mbxmz6k18zg64n48yjd";
   };
 
-  buildInputs = [ ocaml findlib cppo ];
+  buildInputs = [ ocaml findlib ocamlbuild cppo ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/odn/default.nix b/pkgs/development/ocaml-modules/odn/default.nix
index b3c7ddb84331..f30fea2c4192 100644
--- a/pkgs/development/ocaml-modules/odn/default.nix
+++ b/pkgs/development/ocaml-modules/odn/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib, type_conv, ounit, camlp4}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, type_conv, ounit, camlp4 }:
 
 stdenv.mkDerivation {
   name = "ocaml-data-notation-0.0.11";
@@ -8,7 +8,7 @@ stdenv.mkDerivation {
     sha256 = "09a8zdyifpc2nl4hdvg9206142y31cq95ajgij011s1qcg3z93lj";
   };
 
-  buildInputs = [ocaml findlib type_conv ounit camlp4];
+  buildInputs = [ ocaml findlib ocamlbuild type_conv ounit camlp4 ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/optcomp/default.nix b/pkgs/development/ocaml-modules/optcomp/default.nix
index 120751454151..7afbf3a4b407 100644
--- a/pkgs/development/ocaml-modules/optcomp/default.nix
+++ b/pkgs/development/ocaml-modules/optcomp/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib, camlp4}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, camlp4 }:
 
 stdenv.mkDerivation {
   name = "ocaml-optcomp-1.6";
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
   
   createFindlibDestdir = true;
 
-  buildInputs = [ocaml findlib camlp4];
+  buildInputs = [ ocaml findlib ocamlbuild camlp4 ];
 
 
   meta =  {
diff --git a/pkgs/development/ocaml-modules/otfm/default.nix b/pkgs/development/ocaml-modules/otfm/default.nix
index a2047a0fe786..30946da1c0b2 100644
--- a/pkgs/development/ocaml-modules/otfm/default.nix
+++ b/pkgs/development/ocaml-modules/otfm/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, opam, uutf }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, opam, uutf }:
 
 let
   inherit (stdenv.lib) getVersion versionAtLeast;
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
     sha256 = "1wgi9plf98gd7x3b7fzjxds089sivsap97bl1bw2lj73nxwnyb9c";
   };
 
-  buildInputs = [ ocaml findlib opam ];
+  buildInputs = [ ocaml findlib ocamlbuild opam ];
 
   propagatedBuildInputs = [ uutf ];
 
diff --git a/pkgs/development/ocaml-modules/ounit/default.nix b/pkgs/development/ocaml-modules/ounit/default.nix
index 47f15f8c1225..7179b8408a00 100644
--- a/pkgs/development/ocaml-modules/ounit/default.nix
+++ b/pkgs/development/ocaml-modules/ounit/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib, camlp4}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, camlp4 }:
 
 stdenv.mkDerivation {
   name = "ounit-2.0.0";
@@ -8,7 +8,7 @@ stdenv.mkDerivation {
     sha256 = "118xsadrx84pif9vaq13hv4yh22w9kmr0ypvhrs0viir1jr0ajjd";
   };
 
-  buildInputs = [ocaml findlib camlp4];
+  buildInputs = [ ocaml findlib ocamlbuild camlp4 ];
 
   dontAddPrefix = true;
 
diff --git a/pkgs/development/ocaml-modules/pgocaml/default.nix b/pkgs/development/ocaml-modules/pgocaml/default.nix
index f1bc4849a7f5..6b9ae97ad54e 100644
--- a/pkgs/development/ocaml-modules/pgocaml/default.nix
+++ b/pkgs/development/ocaml-modules/pgocaml/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, camlp4, calendar, csv, ocaml_pcre }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, camlp4, calendar, csv, ocaml_pcre }:
 
 stdenv.mkDerivation {
   name = "ocaml-pgocaml-2.2";
@@ -7,7 +7,7 @@ stdenv.mkDerivation {
     sha256 = "0x0dhlz2rqxpwfdqi384f9fn0ng2irifadmxfm2b4gcz7y1cl9rh";
   };
 
-  buildInputs = [ ocaml findlib camlp4 ];
+  buildInputs = [ ocaml findlib ocamlbuild camlp4 ];
   propagatedBuildInputs = [ calendar csv ocaml_pcre ];
 
   createFindlibDestdir = true;
diff --git a/pkgs/development/ocaml-modules/pprint/default.nix b/pkgs/development/ocaml-modules/pprint/default.nix
index e28f85b475cc..83732eb1f75f 100644
--- a/pkgs/development/ocaml-modules/pprint/default.nix
+++ b/pkgs/development/ocaml-modules/pprint/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild }:
 
 assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "3.12";
 
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
     sha256 = "0sc9q89dnyarcg24czyhr6ams0ylqvia3745s6rfwd2nldpygsdk";
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/qcheck/default.nix b/pkgs/development/ocaml-modules/qcheck/default.nix
index 7d904e576336..158c69ef11a8 100644
--- a/pkgs/development/ocaml-modules/qcheck/default.nix
+++ b/pkgs/development/ocaml-modules/qcheck/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib, oasis, ounit }:
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild, oasis, ounit }:
 
 assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4";
 
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
     sha256 = "0j2jdrfz8rrslgjihnfgg8yy12860z2vvf7hqzjbmfmf03hz4pgv";
   };
 
-  buildInputs = [ ocaml findlib oasis ounit ];
+  buildInputs = [ ocaml findlib ocamlbuild oasis ounit ];
 
   configureFlags = "--enable-tests --enable-ounit";
 
diff --git a/pkgs/development/ocaml-modules/qtest/default.nix b/pkgs/development/ocaml-modules/qtest/default.nix
index 05b9c06af0fe..6d5f8ecc6833 100644
--- a/pkgs/development/ocaml-modules/qtest/default.nix
+++ b/pkgs/development/ocaml-modules/qtest/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib, ounit }:
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild, ounit }:
 
 let version = "2.2"; in
 
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
     sha256 = "1k68z8kby1f9s5j9xbn9bz8yhk59aalffz8gj5d1y5zhyalifrlz";
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
   propagatedBuildInputs = [ ounit ];
 
   createFindlibDestdir = true;
diff --git a/pkgs/development/ocaml-modules/re/default.nix b/pkgs/development/ocaml-modules/re/default.nix
index 072754fc60fd..1ea2310bf9fa 100644
--- a/pkgs/development/ocaml-modules/re/default.nix
+++ b/pkgs/development/ocaml-modules/re/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib, ounit }:
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild, ounit }:
 
 stdenv.mkDerivation rec {
   name = "ocaml-re-1.5.0";
@@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
     sha256 = "17avk7kwmgdjkri1sj5q4a59ykc9rj0bxj6ixxpl6i0n49br3f92";
   };
 
-  buildInputs = [ ocaml findlib ounit ];
+  buildInputs = [ ocaml findlib ocamlbuild ounit ];
 
   configurePhase = "ocaml setup.ml -configure --prefix $out --enable-tests";
   buildPhase = "ocaml setup.ml -build";
diff --git a/pkgs/development/ocaml-modules/react/default.nix b/pkgs/development/ocaml-modules/react/default.nix
index f9fe95b89dc2..66c2533853e6 100644
--- a/pkgs/development/ocaml-modules/react/default.nix
+++ b/pkgs/development/ocaml-modules/react/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib, opam}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, opam }:
 
 stdenv.mkDerivation {
   name = "ocaml-react-1.2.0";
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
   };
 
   unpackCmd = "tar xjf $src";
-  buildInputs = [ocaml findlib opam];
+  buildInputs = [ ocaml findlib ocamlbuild opam ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/reactivedata/default.nix b/pkgs/development/ocaml-modules/reactivedata/default.nix
index 4b335496500b..cd64e6578c16 100644
--- a/pkgs/development/ocaml-modules/reactivedata/default.nix
+++ b/pkgs/development/ocaml-modules/reactivedata/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib, ocaml_react, camlp4, opam}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, ocaml_react, camlp4, opam }:
 
 let
   ocamlVersion = stdenv.lib.getVersion ocaml;
@@ -13,7 +13,7 @@ stdenv.mkDerivation {
     sha256 = "0rskcxnyjn8sxqnncdm6rh9wm99nha5m5sc83fywgzs64xfl43fq";
   };
 
-  buildInputs = [ocaml findlib opam camlp4 ];
+  buildInputs = [ ocaml findlib ocamlbuild opam camlp4 ];
   propagatedBuildInputs = [ocaml_react];
 
   buildPhase = "ocaml pkg/build.ml native=true native-dynlink=true";
diff --git a/pkgs/development/ocaml-modules/safepass/default.nix b/pkgs/development/ocaml-modules/safepass/default.nix
index 2f941b923e33..44a74b3fa2f0 100644
--- a/pkgs/development/ocaml-modules/safepass/default.nix
+++ b/pkgs/development/ocaml-modules/safepass/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild }:
 
 stdenv.mkDerivation {
   name = "ocaml-safepass-1.3";
@@ -7,7 +7,7 @@ stdenv.mkDerivation {
     sha256 = "0lb8xbpyc5d1zml7s7mmcr6y2ipwdp7qz73lkv9asy7dyi6cj15g";
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/sequence/default.nix b/pkgs/development/ocaml-modules/sequence/default.nix
index c689aec1904f..a87a13fd3960 100644
--- a/pkgs/development/ocaml-modules/sequence/default.nix
+++ b/pkgs/development/ocaml-modules/sequence/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, ocaml, findlib, qtest, ounit }:
+{ stdenv, fetchFromGitHub, ocaml, findlib, ocamlbuild, qtest, ounit }:
 
 let version = "0.6"; in
 
@@ -12,7 +12,7 @@ stdenv.mkDerivation {
     sha256 = "0mky5qas3br2x4y14dzcky212z624ydqnx8mw8w00x0c1xjpafkb";
   };
 
-  buildInputs = [ ocaml findlib qtest ounit ];
+  buildInputs = [ ocaml findlib ocamlbuild qtest ounit ];
 
   configureFlags = [
     "--enable-tests"
diff --git a/pkgs/development/ocaml-modules/sqlite3/default.nix b/pkgs/development/ocaml-modules/sqlite3/default.nix
index 804e33fc7386..cfa90226678a 100644
--- a/pkgs/development/ocaml-modules/sqlite3/default.nix
+++ b/pkgs/development/ocaml-modules/sqlite3/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, sqlite, ocaml, findlib, pkgconfig }:
+{ stdenv, fetchurl, sqlite, ocaml, findlib, ocamlbuild, pkgconfig }:
 
 stdenv.mkDerivation rec {
   name = "ocaml-sqlite3-${version}";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "0rwsx1nfa3xqmbygim2qx45jqm1gwf08m70wmcwkx50f1qk3l551";
   };
 
-  buildInputs = [ ocaml findlib pkgconfig sqlite ];
+  buildInputs = [ ocaml findlib ocamlbuild pkgconfig sqlite ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/sqlite3EZ/default.nix b/pkgs/development/ocaml-modules/sqlite3EZ/default.nix
index a6ff9f44116c..0a5c04ce7aa9 100644
--- a/pkgs/development/ocaml-modules/sqlite3EZ/default.nix
+++ b/pkgs/development/ocaml-modules/sqlite3EZ/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib, twt, ocaml_sqlite3 }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, twt, ocaml_sqlite3 }:
 
 assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "3.12";
 
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
     sha256 = "8ed2c5d5914a65cbd95589ef11bfb8b38a020eb850cdd49b8adce7ee3a563748";
   };
 
-  buildInputs = [ ocaml findlib twt ];
+  buildInputs = [ ocaml findlib ocamlbuild twt ];
 
   propagatedBuildInputs = [ ocaml_sqlite3 ];
 
diff --git a/pkgs/development/ocaml-modules/stringext/default.nix b/pkgs/development/ocaml-modules/stringext/default.nix
index 05aa2c2da683..9eb9ad514f72 100644
--- a/pkgs/development/ocaml-modules/stringext/default.nix
+++ b/pkgs/development/ocaml-modules/stringext/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib, ounit, qcheck
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild, ounit, qcheck
 # Optionally enable tests; test script use OCaml-4.01+ features
 , doCheck ? stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4.01"
 }:
@@ -13,7 +13,7 @@ stdenv.mkDerivation {
     sha256 = "1jp0x9rkss8a48z9wbnc4v5zvmnysin30345psl3xnxb2aqzwlii";
   };
 
-  buildInputs = [ ocaml findlib ounit qcheck ];
+  buildInputs = [ ocaml findlib ocamlbuild ounit qcheck ];
 
   configurePhase = "ocaml setup.ml -configure --prefix $out"
   + stdenv.lib.optionalString doCheck " --enable-tests";
diff --git a/pkgs/development/ocaml-modules/topkg/default.nix b/pkgs/development/ocaml-modules/topkg/default.nix
index 4fd6589cfb58..1b1a127c5361 100644
--- a/pkgs/development/ocaml-modules/topkg/default.nix
+++ b/pkgs/development/ocaml-modules/topkg/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, result, opam }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, result, opam }:
 
 let ocaml-version = stdenv.lib.getVersion ocaml; in
 
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ opam ];
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
   propagatedBuildInputs = [ result ];
 
   unpackCmd = "tar xjf ${src}";
diff --git a/pkgs/development/ocaml-modules/tsdl/default.nix b/pkgs/development/ocaml-modules/tsdl/default.nix
index 79a696632e1b..d47d5d3169b6 100644
--- a/pkgs/development/ocaml-modules/tsdl/default.nix
+++ b/pkgs/development/ocaml-modules/tsdl/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, ctypes, result, SDL2, pkgconfig, opam }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, ctypes, result, SDL2, pkgconfig, opam }:
 
 let
   inherit (stdenv.lib) getVersion;
@@ -17,7 +17,7 @@ stdenv.mkDerivation {
     sha256 = "02x0wsy5nxagxrh07yb2h4yqqy1bxryp2gwrylds0j6ybqsv4shm";
   };
 
-  buildInputs = [ ocaml findlib result pkgconfig opam ];
+  buildInputs = [ ocaml findlib ocamlbuild result pkgconfig opam ];
   propagatedBuildInputs = [ SDL2 ctypes ];
 
   createFindlibDestdir = true;
diff --git a/pkgs/development/ocaml-modules/tyxml/default.nix b/pkgs/development/ocaml-modules/tyxml/default.nix
index 4f9644ea5be0..b8c415b75669 100644
--- a/pkgs/development/ocaml-modules/tyxml/default.nix
+++ b/pkgs/development/ocaml-modules/tyxml/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, ocaml_oasis, camlp4, uutf, markup, ppx_tools, re }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, ocaml_oasis, camlp4, uutf, markup, ppx_tools, re }:
 
 stdenv.mkDerivation rec {
   pname = "tyxml";
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
     sha256 = "1rz0f48x8p1m30723rn5v85pp7rd0spr04sd7gzryy99vn3ianga";
     };
 
-  buildInputs = [ocaml findlib camlp4];
+  buildInputs = [ ocaml findlib ocamlbuild camlp4 ];
 
   propagatedBuildInputs = [uutf re ppx_tools markup];
 
diff --git a/pkgs/development/ocaml-modules/ulex/default.nix b/pkgs/development/ocaml-modules/ulex/default.nix
index a5b9349cbe08..fa26b305da2d 100644
--- a/pkgs/development/ocaml-modules/ulex/default.nix
+++ b/pkgs/development/ocaml-modules/ulex/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, camlp4 }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, camlp4 }:
 
 let
   pname = "ulex";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   createFindlibDestdir = true;
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
   propagatedBuildInputs = [ camlp4 ];
 
   buildFlags = "all all.opt";
diff --git a/pkgs/development/ocaml-modules/uucd/default.nix b/pkgs/development/ocaml-modules/uucd/default.nix
index 7d4e4b42efb4..73a0ccdacfe7 100644
--- a/pkgs/development/ocaml-modules/uucd/default.nix
+++ b/pkgs/development/ocaml-modules/uucd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, opam, xmlm, topkg }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, opam, xmlm, topkg }:
 
 let
   pname = "uucd";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
     sha256 = "11cjfwa4wjhsyvzq4wl9z44xi28n49drz8nbfpx754vyfzwj3yc6";
   };
 
-  buildInputs = [ ocaml findlib opam topkg ];
+  buildInputs = [ ocaml findlib ocamlbuild opam topkg ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/uucp/default.nix b/pkgs/development/ocaml-modules/uucp/default.nix
index 4e4dd67e2105..456fc8a19761 100644
--- a/pkgs/development/ocaml-modules/uucp/default.nix
+++ b/pkgs/development/ocaml-modules/uucp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, opam }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, opam }:
 
 let
   inherit (stdenv.lib) getVersion versionAtLeast;
@@ -19,7 +19,7 @@ stdenv.mkDerivation {
     sha256 = "1vm5f2ppdrnk19j0ppjiqz56qf5bzyk26gs0lz071s7iblk459jz";
   };
 
-  buildInputs = [ ocaml findlib opam ];
+  buildInputs = [ ocaml findlib ocamlbuild opam ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/uuidm/default.nix b/pkgs/development/ocaml-modules/uuidm/default.nix
index 07ba10a74a97..0391cd5033fd 100644
--- a/pkgs/development/ocaml-modules/uuidm/default.nix
+++ b/pkgs/development/ocaml-modules/uuidm/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild }:
 
 stdenv.mkDerivation rec {
   version = "0.9.5";
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
 
   unpackCmd = "tar -xf $curSrc";
 
-  buildInputs = [ocaml findlib];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   configurePhase = "ocaml setup.ml -configure --prefix $prefix";
   buildPhase = "ocaml setup.ml -build";
diff --git a/pkgs/development/ocaml-modules/uunf/default.nix b/pkgs/development/ocaml-modules/uunf/default.nix
index a407410907e3..11ff9a36a41c 100644
--- a/pkgs/development/ocaml-modules/uunf/default.nix
+++ b/pkgs/development/ocaml-modules/uunf/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib, opam}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, opam }:
 let
   pname = "uunf";
   webpage = "http://erratique.ch/software/${pname}";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
     sha256 = "16cgjy1m0m61srv1pmlc3gr0y40kd4724clvpagdnz68raz4zmn0";
   };
 
-  buildInputs = [ ocaml findlib opam ];
+  buildInputs = [ ocaml findlib ocamlbuild opam ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/uuseg/default.nix b/pkgs/development/ocaml-modules/uuseg/default.nix
index 5946fd2a70df..3c7a4ff5c58b 100644
--- a/pkgs/development/ocaml-modules/uuseg/default.nix
+++ b/pkgs/development/ocaml-modules/uuseg/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, findlib, opam, uucp, uutf, cmdliner }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, opam, uucp, uutf, cmdliner }:
 
 let
   inherit (stdenv.lib) getVersion versionAtLeast;
@@ -19,7 +19,7 @@ stdenv.mkDerivation {
     sha256 = "00n4zi8dyw2yzi4nr2agcrr33b0q4dr9mgnkczipf4c0gm5cm50h";
   };
 
-  buildInputs = [ ocaml findlib opam cmdliner ];
+  buildInputs = [ ocaml findlib ocamlbuild opam cmdliner ];
   propagatedBuildInputs = [ uucp uutf ];
 
   createFindlibDestdir = true;
diff --git a/pkgs/development/ocaml-modules/uutf/default.nix b/pkgs/development/ocaml-modules/uutf/default.nix
index 897630ccac6f..fda630114ed6 100644
--- a/pkgs/development/ocaml-modules/uutf/default.nix
+++ b/pkgs/development/ocaml-modules/uutf/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib, opam}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, opam }:
 let
   pname = "uutf";
   webpage = "http://erratique.ch/software/${pname}";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
     sha256 = "0xvq20knmq25902ijpbk91ax92bkymsqkbfklj1537hpn64lydhz";
   };
 
-  buildInputs = [ ocaml findlib opam ];
+  buildInputs = [ ocaml findlib ocamlbuild opam ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/xmlm/default.nix b/pkgs/development/ocaml-modules/xmlm/default.nix
index 2f2d5b0b8be0..d94a3eac873a 100644
--- a/pkgs/development/ocaml-modules/xmlm/default.nix
+++ b/pkgs/development/ocaml-modules/xmlm/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib, opam}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, opam }:
 let
   pname = "xmlm";
   webpage = "http://erratique.ch/software/${pname}";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
     sha256 = "1jywcrwn5z3gkgvicr004cxmdaqfmq8wh72f81jqz56iyn5024nh";
   };
 
-  buildInputs = [ ocaml findlib opam ];
+  buildInputs = [ ocaml findlib ocamlbuild opam ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/ocaml-modules/zed/default.nix b/pkgs/development/ocaml-modules/zed/default.nix
index f9bf65cf8141..410d5c0c612b 100644
--- a/pkgs/development/ocaml-modules/zed/default.nix
+++ b/pkgs/development/ocaml-modules/zed/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, ocaml, findlib, camomile, ocaml_react }:
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild, camomile, ocaml_react }:
 
 stdenv.mkDerivation rec {
   version = "1.4";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "0d8qfy0qiydrrqi8qc9rcwgjigql6vx9gl4zp62jfz1lmjgb2a3w";
   };
 
-  buildInputs = [ ocaml findlib ocaml_react ];
+  buildInputs = [ ocaml findlib ocamlbuild ocaml_react ];
 
   propagatedBuildInputs = [ camomile ];
 
diff --git a/pkgs/development/python-modules/matplotlib/default.nix b/pkgs/development/python-modules/matplotlib/default.nix
index 7c1b8b503a3a..5ba813deba60 100644
--- a/pkgs/development/python-modules/matplotlib/default.nix
+++ b/pkgs/development/python-modules/matplotlib/default.nix
@@ -18,11 +18,11 @@ assert enableTk -> (tcl != null)
 
 buildPythonPackage rec {
   name = "matplotlib-${version}";
-  version = "1.5.1";
+  version = "1.5.3";
 
   src = fetchurl {
     url = "mirror://pypi/m/matplotlib/${name}.tar.gz";
-    sha256 = "3ab8d968eac602145642d0db63dd8d67c85e9a5444ce0e2ecb2a8fedc7224d40";
+    sha256 = "1g7bhr6v3wdxyx29rfxgf57l9w19s79cdlpyi0h4y0c5ywwxr9d0";
   };
 
   NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin "-I${libcxx}/include/c++/v1";
diff --git a/pkgs/development/tools/asn2quickder/default.nix b/pkgs/development/tools/asn2quickder/default.nix
new file mode 100644
index 000000000000..69051714ab4c
--- /dev/null
+++ b/pkgs/development/tools/asn2quickder/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, pythonPackages, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "asn2quickder";
+  name = "${pname}-${version}";
+  version = "0.7-RC1";
+
+  src = fetchFromGitHub {
+    sha256 = "0ynajhbml28m4ipbj5mscjcv6g1a7frvxfimxh813rhgl0w3sgq8";
+    rev = "version-${version}";
+    owner = "vanrein";
+    repo = "${pname}";
+  };
+
+  propagatedBuildInputs = with pythonPackages; [ pyparsing makeWrapper ];
+
+  patchPhase = with pythonPackages; ''
+    substituteInPlace Makefile \
+      --replace '..' '..:$(DESTDIR)/${python.sitePackages}:${pythonPackages.pyparsing}/${python.sitePackages}' \
+    '';
+
+  installPhase = ''
+    mkdir -p $out/${pythonPackages.python.sitePackages}/
+    mkdir -p $out/bin $out/lib $out/sbin $out/man
+    make DESTDIR=$out PREFIX=/ all
+    make DESTDIR=$out PREFIX=/ install
+    '';
+
+  meta = with stdenv.lib; {
+    description = "An ASN.1 compiler with a backend for Quick DER";
+    homepage = https://github.com/vanrein/asn2quickder;
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ leenaars ];
+  };
+}
diff --git a/pkgs/development/tools/build-managers/bazel/default.nix b/pkgs/development/tools/build-managers/bazel/default.nix
index 002d3bde201e..5d57c9b4579a 100644
--- a/pkgs/development/tools/build-managers/bazel/default.nix
+++ b/pkgs/development/tools/build-managers/bazel/default.nix
@@ -1,35 +1,70 @@
-{ stdenv, fetchFromGitHub, jdk, zip, zlib, protobuf3_0, pkgconfig, libarchive, unzip, which, makeWrapper }:
-stdenv.mkDerivation rec {
-  version = "0.3.1";
-  name = "bazel-${version}";
-
-  src = fetchFromGitHub {
-    owner = "google";
-    repo = "bazel";
-    rev = version;
-    sha256 = "1cm8zjxf8y3ai6h9wndxvflfsijjqhg87fll9ar7ff0hbbbdf6l5";
+{ stdenv, fetchFromGitHub, buildFHSUserEnv, writeScript, jdk, zip, unzip,
+  which, makeWrapper, binutils }:
+
+let
+
+  version = "0.3.2";
+
+  meta = with stdenv.lib; {
+    homepage = http://github.com/bazelbuild/bazel/;
+    description = "Build tool that builds code quickly and reliably";
+    license = licenses.asl20;
+    maintainers = [ maintainers.philandstuff ];
+    platforms = platforms.linux;
   };
 
-  buildInputs = [ pkgconfig protobuf3_0 zlib zip libarchive unzip which makeWrapper jdk ];
+  bootstrapEnv = buildFHSUserEnv {
+    name = "bazel-bootstrap-env";
 
-  buildPhase = ''
-    export LD_LIBRARY_PATH="${stdenv.lib.makeLibraryPath [ stdenv.cc.cc.lib ]}"
+    targetPkgs = pkgs: [ ];
 
-    bash compile.sh
-  '';
+    inherit meta;
+  };
 
-  installPhase = ''
-    mkdir -p $out/bin $out/share
-    cp -R output $out/share/bazel
-    ln -s $out/share/bazel/bazel $out/bin/bazel
-    wrapProgram $out/bin/bazel --set JAVA_HOME "${jdk.home}"
-  '';
+  bazelBinary = stdenv.mkDerivation rec {
+    name = "bazel-${version}";
 
-  meta = {
-    homepage = http://github.com/google/bazel/;
-    description = "Build tool that builds code quickly and reliably";
-    license = stdenv.lib.licenses.asl20;
-    maintainers = [ stdenv.lib.maintainers.philandstuff ];
-    platforms = [ "x86_64-linux" ];
+    src = fetchFromGitHub {
+      owner = "bazelbuild";
+      repo = "bazel";
+      rev = version;
+      sha256 = "085cjz0qhm4a12jmhkjd9w3ic4a67035j01q111h387iklvgn6xg";
+    };
+    patches = [ ./java_stub_template.patch ];
+
+    packagesNotFromEnv = [
+        stdenv.cc stdenv.cc.cc.lib jdk which zip unzip binutils ];
+    buildInputs = packagesNotFromEnv ++ [ bootstrapEnv makeWrapper ];
+
+    buildTimeBinPath = stdenv.lib.makeBinPath packagesNotFromEnv;
+    buildTimeLibPath = stdenv.lib.makeLibraryPath packagesNotFromEnv;
+
+    runTimeBinPath = stdenv.lib.makeBinPath [ jdk stdenv.cc.cc ];
+    runTimeLibPath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc.lib ];
+
+    buildWrapper = writeScript "build-wrapper.sh" ''
+      #! ${stdenv.shell} -e
+      export PATH="${buildTimeBinPath}:$PATH"
+      export LD_LIBRARY_PATH="${buildTimeLibPath}:$LD_LIBRARY_PATH"
+      ./compile.sh
+    '';
+
+    buildPhase = ''
+      bazel-bootstrap-env ${buildWrapper}
+    '';
+
+    installPhase = ''
+      mkdir -p $out/bin
+      cp output/bazel $out/bin/
+      wrapProgram $out/bin/bazel \
+          --suffix PATH ":" "${runTimeBinPath}" \
+          --suffix LD_LIBRARY_PATH ":" "${runTimeLibPath}"
+    '';
+
+    dontStrip = true;
+    dontPatchELF = true;
+
+    inherit meta;
   };
-}
+
+in bazelBinary
diff --git a/pkgs/development/tools/build-managers/bazel/java_stub_template.patch b/pkgs/development/tools/build-managers/bazel/java_stub_template.patch
new file mode 100644
index 000000000000..4e456a78d800
--- /dev/null
+++ b/pkgs/development/tools/build-managers/bazel/java_stub_template.patch
@@ -0,0 +1,16 @@
+commit 5525326e3287243e0e7417de96bf7d58d04b4c8b
+Author: Irene Knapp <ireneista@google.com>
+Date:   Sat Oct 8 19:36:12 2016 -0700
+
+    Change #!/bin/bash to #!/usr/bin/env bash.
+
+diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt
+index f77051f..fbf367a 100644
+--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt
++++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt
+@@ -1,4 +1,4 @@
+-#!/bin/bash --posix
++#!/usr/bin/env bash
+ # Copyright 2014 The Bazel Authors. All rights reserved.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/pkgs/development/tools/build-managers/buildbot/default.nix b/pkgs/development/tools/build-managers/buildbot/default.nix
index 4431105d18f8..d16b83a2831c 100644
--- a/pkgs/development/tools/build-managers/buildbot/default.nix
+++ b/pkgs/development/tools/build-managers/buildbot/default.nix
@@ -1,16 +1,12 @@
-{ stdenv
-, pythonPackages
-, fetchurl
-, plugins ? []
-}:
+{ stdenv, pythonPackages, fetchurl, coreutils, plugins ? [] }:
 
 pythonPackages.buildPythonApplication (rec {
   name = "${pname}-${version}";
   pname = "buildbot";
-  version = "0.9.0rc3";
+  version = "0.9.0rc4";
   src = fetchurl {
     url = "mirror://pypi/b/${pname}/${name}.tar.gz";
-    sha256 = "18238n9l0pfivb23csy5lnkx91fcm4jgmhxn03f2nfnp00rlppzb";
+    sha256 = "16bnrr5qkfpnby9sw9azcagnw0ybi7d8bpdlga2a4c61jg2d5dnc";
   };
 
   buildInputs = with pythonPackages; [
@@ -61,16 +57,17 @@ pythonPackages.buildPythonApplication (rec {
   preInstall = ''
     # writes out a file that can't be read properly
     sed -i.bak -e '69,84d' buildbot/test/unit/test_www_config.py
+
+    # re-hardcode path to tail
+    sed -i.bak 's|/usr/bin/tail|${coreutils}/bin/tail|' buildbot/scripts/logwatcher.py
   '';
 
   postFixup = ''
-    buildPythonPath "$out"
-    patchPythonScript "$out/bin/buildbot"
     mv -v $out/bin/buildbot $out/bin/.wrapped-buildbot
-    echo "#!/bin/bash" > $out/bin/buildbot
-    echo "export PYTHONPATH=$out/lib/python2.7/site-packages:$PYTHONPATH" >> $out/bin/buildbot
+    echo "#!/bin/sh" > $out/bin/buildbot
+    echo "export PYTHONPATH=$PYTHONPATH" >> $out/bin/buildbot
     echo "exec $out/bin/.wrapped-buildbot \"\$@\"" >> $out/bin/buildbot
-    chmod -c 755 $out/bin/buildbot
+    chmod -c 555 $out/bin/buildbot
   '';
 
   meta = with stdenv.lib; {
@@ -78,5 +75,6 @@ pythonPackages.buildPythonApplication (rec {
     description = "Continuous integration system that automates the build/test cycle";
     maintainers = with maintainers; [ nand0p ryansydnor ];
     platforms = platforms.all;
+    license = licenses.gpl2;
   };
 })
diff --git a/pkgs/development/tools/build-managers/buildbot/plugins.nix b/pkgs/development/tools/build-managers/buildbot/plugins.nix
index 384452e27d9c..09f8b1e750a5 100644
--- a/pkgs/development/tools/build-managers/buildbot/plugins.nix
+++ b/pkgs/development/tools/build-managers/buildbot/plugins.nix
@@ -1,17 +1,14 @@
-{ stdenv
-, fetchurl
-, pythonPackages
-}:
+{ stdenv, fetchurl, pythonPackages }:
 
 let
   buildbot-pkg = pythonPackages.buildPythonPackage rec {
     name = "${pname}-${version}";
     pname = "buildbot-pkg";
-    version = "0.9.0rc3";
+    version = "0.9.0rc4";
 
     src = fetchurl {
       url = "mirror://pypi/b/${pname}/${name}.tar.gz";
-      sha256 = "0a05dgc5nn6sx3nicfvqwar9iy8yxhq92688dhs5p6mzjxaprlxm";
+      sha256 = "0dfdyc3x0926dynzdl9w7z0p84w287l362mxdl3r6wl87gkisr10";
     };
 
     propagatedBuildInputs = with pythonPackages; [ setuptools ];
@@ -21,6 +18,7 @@ let
       description = "Buildbot Packaging Helper";
       maintainers = with maintainers; [ nand0p ryansydnor ];
       platforms = platforms.all;
+      license = licenses.gpl2;
     };
   };
 
@@ -29,13 +27,14 @@ in {
   www = pythonPackages.buildPythonPackage rec {
     name = "${pname}-${version}";
     pname = "buildbot_www";
-    version = "0.9.0rc3";
+    version = "0.9.0rc4";
 
     # NOTE: wheel is used due to buildbot circular dependency
     format = "wheel";
+
     src = fetchurl {
-      url = "https://pypi.python.org/packages/93/1e/09e329fc831ae4f5be05eb3363c9028ab7e26e9c7e5d89e3aa66c3f25d9d/${name}-py2-none-any.whl";
-      sha256 = "0fy2v7y1kc53zm67ddx85yz5qh4b7hmcbfzmsziiv9n83a0qh1i6";
+      url = "https://pypi.python.org/packages/78/45/b43bd85695cd0178f8bac9c3b394062e9eb46f489b655c11e950e54278a2/${name}-py2-none-any.whl";
+      sha256 = "0ixi0y0jhbql55swsvy0jin1v6xf4q4mw9p5n9sll2h10lyp9h0p";
     };
 
     propagatedBuildInputs = [ buildbot-pkg ];
@@ -45,17 +44,18 @@ in {
       description = "Buildbot UI";
       maintainers = with maintainers; [ nand0p ryansydnor ];
       platforms = platforms.all;
+      license = licenses.gpl2;
     };
   };
 
   console-view = pythonPackages.buildPythonPackage rec {
     name = "${pname}-${version}";
     pname = "buildbot-console-view";
-    version = "0.9.0rc3";
+    version = "0.9.0rc4";
 
     src = fetchurl {
       url = "mirror://pypi/b/${pname}/${name}.tar.gz";
-      sha256 = "09yfqrnwfambg1j4x7ywnjg4xfhvv6f242zzh35fwj64cnqmqx07";
+      sha256 = "1fig635yg5dgn239g9wzfpw9wc3p91lcl9nnig9k7fijz85pwrva";
     };
 
     propagatedBuildInputs = [ buildbot-pkg ];
@@ -65,17 +65,18 @@ in {
       description = "Buildbot Console View Plugin";
       maintainers = with maintainers; [ nand0p ryansydnor ];
       platforms = platforms.all;
+      license = licenses.gpl2;
     };
   };
 
   waterfall-view = pythonPackages.buildPythonPackage rec {
     name = "${pname}-${version}";
     pname = "buildbot-waterfall-view";
-    version = "0.9.0rc3";
+    version = "0.9.0rc4";
 
     src = fetchurl {
       url = "mirror://pypi/b/${pname}/${name}.tar.gz";
-      sha256 = "0xpqxj3mmwl5xdhm3p52shl24d85qapdk4v66f9hrb9pnk5k4a81";
+      sha256 = "08kh966grj9b4mif337vv7bqy5ixz8xz31ml63wysjb65djnjbk8";
     };
 
     propagatedBuildInputs = [ buildbot-pkg ];
@@ -85,6 +86,7 @@ in {
       description = "Buildbot Waterfall View Plugin";
       maintainers = with maintainers; [ nand0p ryansydnor ];
       platforms = platforms.all;
+      license = licenses.gpl2;
     };
   };
 }
diff --git a/pkgs/development/tools/build-managers/buildbot/worker.nix b/pkgs/development/tools/build-managers/buildbot/worker.nix
index 2c8e17a37c00..01b2051aaa6d 100644
--- a/pkgs/development/tools/build-managers/buildbot/worker.nix
+++ b/pkgs/development/tools/build-managers/buildbot/worker.nix
@@ -1,16 +1,13 @@
-{ stdenv
-, fetchurl
-, pythonPackages
-}:
+{ stdenv, fetchurl, pythonPackages }:
 
 pythonPackages.buildPythonApplication (rec {
   name = "${pname}-${version}";
   pname = "buildbot-worker";
-  version = "0.9.0rc3";
+  version = "0.9.0rc4";
 
   src = fetchurl {
     url = "mirror://pypi/b/${pname}/${name}.tar.gz";
-    sha256 = "0wqn2176rk7hc27r4hfy5qnxp0nr9iis5nyzg5x07xljnsspnhy1";
+    sha256 = "1fv40pki1awv5f2z9vd7phjk7dlsy1cp4blsy2vdhqwbc7112a8c";
   };
 
   buildInputs = with pythonPackages; [ setuptoolsTrial mock ];
@@ -21,5 +18,6 @@ pythonPackages.buildPythonApplication (rec {
     description = "Buildbot Worker Daemon";
     maintainers = with maintainers; [ nand0p ryansydnor ];
     platforms = platforms.all;
+    license = licenses.gpl2;
   };
 })
diff --git a/pkgs/development/tools/build-managers/meson/default.nix b/pkgs/development/tools/build-managers/meson/default.nix
index 47c6e12a5860..558b8acf70f1 100644
--- a/pkgs/development/tools/build-managers/meson/default.nix
+++ b/pkgs/development/tools/build-managers/meson/default.nix
@@ -1,10 +1,11 @@
 { lib, python3Packages, fetchurl }:
 python3Packages.buildPythonPackage rec {
-  name = "meson-0.32.0";
+  version = "0.35.0";
+  name = "meson-${version}";
 
   src = fetchurl {
     url = "mirror://pypi/m/meson/${name}.tar.gz";
-    sha256 = "1i5m4q53sr55aw8kx761kh0rsfwkpq0gfa0c0k3jf66y4aml6n54";
+    sha256 = "0w4vian55cwcv2m5qzn73aznf9a0y24cszqb7dkpahrb9yrg25l3";
   };
 
   meta = with lib; {
diff --git a/pkgs/development/tools/hexio/default.nix b/pkgs/development/tools/hexio/default.nix
new file mode 100644
index 000000000000..6d75c7256ee0
--- /dev/null
+++ b/pkgs/development/tools/hexio/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, fetchurl, python, pcsclite, pth, glibc }:
+
+stdenv.mkDerivation rec {
+  pname = "hexio";
+  name = "${pname}-${version}";
+  version = "201605";
+
+  src = fetchFromGitHub {
+    sha256 = "08jxkdi0gjsi8s793f9kdlad0a58a0xpsaayrsnpn9bpmm5cgihq";
+    rev = "f6f963bd0fcd2808977e0ad82dcb3100691cdd7c";
+    owner = "vanrein";
+    repo = "hexio";
+  };
+
+  buildInputs = [ python pcsclite pth glibc ];
+
+  patchPhase = ''
+    substituteInPlace Makefile \
+      --replace '-I/usr/local/include/PCSC/' '-I${pcsclite}/include/PCSC/' \
+      --replace '-L/usr/local/lib/pth' '-I${pth}/lib/'
+    '';
+
+  installPhase = ''
+    mkdir -p $out/bin $out/lib $out/sbin $out/man
+    make DESTDIR=$out PREFIX=/ all
+    make DESTDIR=$out PREFIX=/ install
+    '';
+
+  meta = with stdenv.lib; {
+    description = "Low-level I/O helpers for hexadecimal, tty/serial devices and so on";
+    homepage = https://github.com/vanrein/hexio;
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ leenaars ];
+  };
+}
diff --git a/pkgs/development/tools/mdk/default.nix b/pkgs/development/tools/mdk/default.nix
index f54b409efb6d..ca8c2de9630f 100644
--- a/pkgs/development/tools/mdk/default.nix
+++ b/pkgs/development/tools/mdk/default.nix
@@ -4,7 +4,7 @@ stdenv.mkDerivation {
   name = "gnu-mdk-1.2.9";
   src = fetchurl {
     url = http://ftp.gnu.org/gnu/mdk/v1.2.9/mdk-1.2.9.tar.gz;
-    md5 = "08c96baa4b99dd9d25190dd15fe415a5";
+    sha256 = "0c24wzrzbk0l4z1p5nnxihaqra75amwmw59va44554infkfms9kc";
   };
   buildInputs = [ intltool pkgconfig glib ];
   postInstall = ''
diff --git a/pkgs/development/tools/misc/gdb/default.nix b/pkgs/development/tools/misc/gdb/default.nix
index 48e74cf2631d..60218bbb1ad4 100644
--- a/pkgs/development/tools/misc/gdb/default.nix
+++ b/pkgs/development/tools/misc/gdb/default.nix
@@ -12,7 +12,7 @@
 
 let
 
-  basename = "gdb-7.11.1";
+  basename = "gdb-7.12";
 
   # Whether (cross-)building for GNU/Hurd.  This is an approximation since
   # having `stdenv ? cross' doesn't tell us if we're building `crossDrv' and
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://gnu/gdb/${basename}.tar.xz";
-    sha256 = "0w7wi1llznlqdqk2lmzygz2xylb2c9mh580s9i0rypkmwfj6s8g9";
+    sha256 = "152g2qa8337cxif3lkvabjcxfd9jphfb2mza8f1p2c4bjk2z6kw3";
   };
 
   nativeBuildInputs = [ pkgconfig texinfo perl ]
diff --git a/pkgs/development/tools/misc/lsof/default.nix b/pkgs/development/tools/misc/lsof/default.nix
index da5da2e5ab9a..37e5ae6f7105 100644
--- a/pkgs/development/tools/misc/lsof/default.nix
+++ b/pkgs/development/tools/misc/lsof/default.nix
@@ -1,9 +1,11 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchurl, ncurses }:
 
 stdenv.mkDerivation rec {
   name = "lsof-${version}";
   version = "4.89";
 
+  buildInputs = [ ncurses ];
+
   src = fetchurl {
     urls =
       ["ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_${version}.tar.bz2"]
@@ -22,14 +24,19 @@ stdenv.mkDerivation rec {
   };
 
   unpackPhase = "tar xvjf $src; cd lsof_*; tar xvf lsof_*.tar; sourceRoot=$( echo lsof_*/); ";
-
-  preBuild = "sed -i Makefile -e 's/^CFGF=/&	-DHASIPv6=1/;';";
+ 
+  patches = [ ./dfile.patch ];
 
   configurePhase = ''
     # Stop build scripts from searching global include paths
-    export LSOF_INCLUDE=/$(md5sum <(echo $name) | awk '{print $1}')
+    export LSOF_INCLUDE=${stdenv.cc.libc}/include
     ./Configure -n ${if stdenv.isDarwin then "darwin" else "linux"}
   '';
+  
+  preBuild = ''
+    sed -i Makefile -e 's/^CFGF=/&	-DHASIPv6=1/;' -e 's/-lcurses/-lncurses/'
+  '';
+
 
   installPhase = ''
     mkdir -p $out/bin $out/man/man8
diff --git a/pkgs/development/tools/misc/lsof/dfile.patch b/pkgs/development/tools/misc/lsof/dfile.patch
new file mode 100644
index 000000000000..47202d5ebeab
--- /dev/null
+++ b/pkgs/development/tools/misc/lsof/dfile.patch
@@ -0,0 +1,18 @@
+--- lsof_4.89_src/dialects/darwin/libproc/dfile.c	2014-10-30 12:39:46.000000000 +0100
++++ lsof_4.89_src/dialects/darwin/libproc/dfile_new.c	2016-10-04 13:44:58.000000000 +0200
+@@ -286,13 +286,13 @@
+ 
+ #if	defined(PROC_FP_GUARDED)
+ 	if (extra > 1)
+-	    putchar(`,');
++	    putchar(',');
+ 	if (lf->guardflags) {
+ 	    struct pff_tab *tp;
+ 	    long gf;
+ 
+ 	    (void) printf("guard=");
+-	    tp = Pgf_tab;
++	    tp = Pff_tab;
+ 	    gf = lf->guardflags;
+ 	    while (gf && !FsvFlagX) {
+ 		while (tp->nm) {
diff --git a/pkgs/development/tools/nimble/default.nix b/pkgs/development/tools/nimble/default.nix
index 3e4cd49a2cee..1382883e5a3b 100644
--- a/pkgs/development/tools/nimble/default.nix
+++ b/pkgs/development/tools/nimble/default.nix
@@ -12,22 +12,20 @@ stdenv.mkDerivation rec {
     sha256 = "12znxzj1j5fflw2mkkrns9n7qg6sf207652zrdyf7h2jdyzzb73x";
   };
 
-  buildInputs = [ nim ];
+  buildInputs = [ nim openssl ];
 
   patchPhase = ''
     substituteInPlace src/nimble.nim.cfg --replace "./vendor/nim" "${nim}/share"
+    echo "--clib:crypto" >> src/nimble.nim.cfg
   '';
 
   buildPhase = ''
-    nim c src/nimble
+    cd src && nim c -d:release nimble
   '';
 
   installPhase = ''
     mkdir -p $out/bin
-    cp src/nimble $out/bin
-    patchelf --set-rpath "${stdenv.lib.makeLibraryPath [stdenv.cc.libc openssl]}" \
-        --add-needed libcrypto.so \
-        "$out/bin/nimble"
+    cp nimble $out/bin
   '';
 
   dontStrip = true;
diff --git a/pkgs/development/tools/ocaml/camlidl/default.nix b/pkgs/development/tools/ocaml/camlidl/default.nix
index 093e90dd47f3..feedd8835485 100644
--- a/pkgs/development/tools/ocaml/camlidl/default.nix
+++ b/pkgs/development/tools/ocaml/camlidl/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, makeWrapper, gcc, ocaml, ncurses}:
+{ stdenv, fetchurl, makeWrapper, ocaml, ncurses }:
 
 let
   pname = "camlidl";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
     mv config/Makefile.unix config/Makefile
     substituteInPlace config/Makefile --replace BINDIR=/usr/local/bin BINDIR=$out
     substituteInPlace config/Makefile --replace OCAMLLIB=/usr/local/lib/ocaml OCAMLLIB=$out/lib/ocaml/${ocaml.version}/site-lib/camlidl
-    substituteInPlace config/Makefile --replace CPP=/lib/cpp CPP=${gcc}/bin/cpp
+    substituteInPlace config/Makefile --replace CPP=/lib/cpp CPP=${stdenv.cc}/bin/cpp
     mkdir -p $out/lib/ocaml/${ocaml.version}/site-lib/camlidl/caml
   '';
 
diff --git a/pkgs/development/tools/ocaml/camlp4/4_03.nix b/pkgs/development/tools/ocaml/camlp4/4_03.nix
deleted file mode 100644
index a92f2491e468..000000000000
--- a/pkgs/development/tools/ocaml/camlp4/4_03.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{stdenv, fetchzip, which, ocaml, ocamlbuild}:
-
-assert stdenv.lib.versionAtLeast ocaml.version "4.02";
-
-stdenv.mkDerivation {
-  name = "camlp4-${version}";
-  version = "4.03+1";
-
-  src = fetchzip {
-    url = "https://github.com/ocaml/camlp4/archive/${version}.tar.gz";
-    sha256 = "1f2ndch6f1m4fgnxsjb94qbpwjnjgdlya6pard44y6n0dqxi1wsq";
-  };
-
-  buildInputs = [ which ocaml ocamlbuild ];
-
-  dontAddPrefix = true;
-
-  preConfigure = ''
-    configureFlagsArray=(
-      --bindir=$out/bin
-      --libdir=$out/lib/ocaml/${ocaml.version}/site-lib
-      --pkgdir=$out/lib/ocaml/${ocaml.version}/site-lib
-    )
-  '';
-
-  postConfigure = ''
-    substituteInPlace camlp4/META.in \
-    --replace +camlp4 $out/lib/ocaml/${ocaml.version}/site-lib/camlp4
-  '';
-
-
-  makeFlags = "all";
-
-  installTargets = "install install-META";
-
-  meta = with stdenv.lib; {
-    description = "A software system for writing extensible parsers for programming languages";
-    homepage = https://github.com/ocaml/camlp4;
-    platforms = ocaml.meta.platforms or [];
-  };
-}
-
diff --git a/pkgs/development/tools/ocaml/camlp4/default.nix b/pkgs/development/tools/ocaml/camlp4/default.nix
index 145a3a2b54a9..1e1d2eb68eab 100644
--- a/pkgs/development/tools/ocaml/camlp4/default.nix
+++ b/pkgs/development/tools/ocaml/camlp4/default.nix
@@ -1,17 +1,25 @@
-{stdenv, fetchzip, which, ocaml}:
-
-assert stdenv.lib.versionAtLeast ocaml.version "4.02";
+{ stdenv, fetchzip, which, ocaml, ocamlbuild }:
+
+let param = {
+  "4.02.3" = {
+     version = "4.02+6";
+     sha256 = "06yl4q0qazl7g25b0axd1gdkfd4qpqzs1gr5fkvmkrcbz113h1hj"; };
+  "4.03.0" = {
+     version = "4.03+1";
+     sha256 = "1f2ndch6f1m4fgnxsjb94qbpwjnjgdlya6pard44y6n0dqxi1wsq"; };
+  }."${ocaml.version}";
+in
 
 stdenv.mkDerivation rec {
   name = "camlp4-${version}";
-  version = "4.02+6";
+  inherit (param) version;
 
   src = fetchzip {
     url = "https://github.com/ocaml/camlp4/archive/${version}.tar.gz";
-    sha256 = "06yl4q0qazl7g25b0axd1gdkfd4qpqzs1gr5fkvmkrcbz113h1hj";
+    inherit (param) sha256;
   };
 
-  buildInputs = [ which ocaml ];
+  buildInputs = [ which ocaml ocamlbuild ];
 
   dontAddPrefix = true;
 
@@ -28,7 +36,6 @@ stdenv.mkDerivation rec {
     --replace +camlp4 $out/lib/ocaml/${ocaml.version}/site-lib/camlp4
   '';
 
-
   makeFlags = "all";
 
   installTargets = "install install-META";
diff --git a/pkgs/development/tools/ocaml/cppo/default.nix b/pkgs/development/tools/ocaml/cppo/default.nix
index 38b97c006cde..59130bec50e4 100644
--- a/pkgs/development/tools/ocaml/cppo/default.nix
+++ b/pkgs/development/tools/ocaml/cppo/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, ocaml, findlib }:
+{ stdenv, fetchFromGitHub, ocaml, findlib, ocamlbuild }:
 let
   pname = "cppo";
   version = "1.3.2";
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
     sha256 = "06j0zr78f04ahxi2459vjn61z25hkvs4dfj76200ydg3g6ifb3k1";
   };
 
-  buildInputs = [ ocaml findlib ];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   createFindlibDestdir = true;
 
diff --git a/pkgs/development/tools/ocaml/oasis/0.4.6.nix b/pkgs/development/tools/ocaml/oasis/0.4.6.nix
index 6dcf05222320..b5e977d623b3 100644
--- a/pkgs/development/tools/ocaml/oasis/0.4.6.nix
+++ b/pkgs/development/tools/ocaml/oasis/0.4.6.nix
@@ -1,5 +1,6 @@
-{stdenv, fetchurl, ocaml, findlib, ocaml_data_notation, type_conv, camlp4,
- ocamlmod, ocamlify, ounit, expect}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, camlp4
+, ocaml_data_notation, type_conv, ocamlmod, ocamlify, ounit, expect
+}:
 
 stdenv.mkDerivation {
   name = "ocaml-oasis-0.4.6";
@@ -13,7 +14,7 @@ stdenv.mkDerivation {
 
   buildInputs =
     [
-      ocaml findlib type_conv ocamlmod ocamlify ounit camlp4
+      ocaml findlib ocamlbuild type_conv ocamlmod ocamlify ounit camlp4
     ];
 
   propagatedBuildInputs = [ ocaml_data_notation ];
diff --git a/pkgs/development/tools/ocaml/oasis/default.nix b/pkgs/development/tools/ocaml/oasis/default.nix
index eb6cd35b2561..214a2239688a 100644
--- a/pkgs/development/tools/ocaml/oasis/default.nix
+++ b/pkgs/development/tools/ocaml/oasis/default.nix
@@ -1,5 +1,6 @@
-{stdenv, fetchurl, ocaml, findlib, ocaml_data_notation, type_conv, camlp4,
- ocamlmod, ocamlify, ounit, expect}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, camlp4
+, ocaml_data_notation, type_conv, ocamlmod, ocamlify, ounit, expect
+}:
 
 stdenv.mkDerivation rec {
   version = "0.4.7";
@@ -16,7 +17,7 @@ stdenv.mkDerivation rec {
 
   buildInputs =
     [
-      ocaml findlib type_conv ocamlmod ocamlify ounit camlp4
+      ocaml findlib ocamlbuild type_conv ocamlmod ocamlify ounit camlp4
     ];
 
   propagatedBuildInputs = [ ocaml_data_notation ];
diff --git a/pkgs/development/tools/ocaml/ocamlify/default.nix b/pkgs/development/tools/ocaml/ocamlify/default.nix
index f3caa42b8fd7..d5dd0c19d987 100644
--- a/pkgs/development/tools/ocaml/ocamlify/default.nix
+++ b/pkgs/development/tools/ocaml/ocamlify/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild }:
 
 stdenv.mkDerivation {
   name = "ocamlify-0.0.2";
@@ -8,7 +8,7 @@ stdenv.mkDerivation {
     sha256 = "1f0fghvlbfryf5h3j4as7vcqrgfjb4c8abl5y0y5h069vs4kp5ii";
   };
 
-  buildInputs = [ocaml findlib];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   configurePhase = "ocaml setup.ml -configure --prefix $out";
   buildPhase     = "ocaml setup.ml -build";
diff --git a/pkgs/development/tools/ocaml/ocamlmod/default.nix b/pkgs/development/tools/ocaml/ocamlmod/default.nix
index 19ac4701252e..0b92a45153c1 100644
--- a/pkgs/development/tools/ocaml/ocamlmod/default.nix
+++ b/pkgs/development/tools/ocaml/ocamlmod/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, findlib}:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild }:
 
 stdenv.mkDerivation rec {
   name = "ocamlmod-${version}";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "1w0w8lfyymvk300dv13gvhrddpcyknvyp4g2yvq2vaw7khkhjs9g";
   };
 
-  buildInputs = [ocaml findlib];
+  buildInputs = [ ocaml findlib ocamlbuild ];
 
   configurePhase = "ocaml setup.ml -configure --prefix $out";
   buildPhase     = "ocaml setup.ml -build";
diff --git a/pkgs/development/tools/ocaml/utop/default.nix b/pkgs/development/tools/ocaml/utop/default.nix
index 45888924a2ef..b8740bc37932 100644
--- a/pkgs/development/tools/ocaml/utop/default.nix
+++ b/pkgs/development/tools/ocaml/utop/default.nix
@@ -1,5 +1,5 @@
-{stdenv, fetchurl, ocaml, findlib, lambdaTerm, ocaml_lwt, makeWrapper,
- ocaml_react, camomile, zed, cppo, camlp4, ppx_tools
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, camlp4, ocaml_react
+, lambdaTerm, ocaml_lwt, makeWrapper, camomile, zed, cppo, ppx_tools
 }:
 
 stdenv.mkDerivation rec {
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     sha256 = "0hxybkqmrh0sz1yyyrgzdmxp46gda4vk22pv07s0qpfg2dpv56jh";
   };
 
-  buildInputs = [ ocaml findlib makeWrapper cppo camlp4 ppx_tools ];
+  buildInputs = [ ocaml findlib ocamlbuild makeWrapper cppo camlp4 ppx_tools ];
 
   propagatedBuildInputs = [ lambdaTerm ocaml_lwt ];
 
diff --git a/pkgs/development/tools/simavr/default.nix b/pkgs/development/tools/simavr/default.nix
new file mode 100644
index 000000000000..823f93f9ac4f
--- /dev/null
+++ b/pkgs/development/tools/simavr/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, avrgcclibc, libelf, which, git, pkgconfig, freeglut
+, mesa }:
+
+stdenv.mkDerivation rec {
+  name = "simavr-${version}";
+  version = "1.3";
+  enableParallelBuilding = true;
+
+  src = fetchFromGitHub {
+    owner = "buserror";
+    repo = "simavr";
+    rev = "51d5fa69f9bc3d62941827faec02f8fbc7e187ab";
+    sha256 = "0k8xwzw9i6xsmf98q43fxhphq0wvflvmzqma1n4jd1ym9wi48lfx";
+  };
+
+  buildFlags = "AVR_ROOT=${avrgcclibc}/avr SIMAVR_VERSION=${version}";
+  installFlags = buildFlags + " DESTDIR=$(out)";
+
+  postFixup = ''
+    target="$out/bin/simavr"
+    patchelf --set-rpath "$(patchelf --print-rpath "$target"):$out/lib" "$target"
+  '';
+
+  buildInputs = [ which git avrgcclibc libelf pkgconfig freeglut mesa ];
+
+  meta = with stdenv.lib; {
+    description = "A lean and mean Atmel AVR simulator";
+    homepage    = https://github.com/buserror/simavr;
+    license     = licenses.gpl3;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ goodrone ];
+  };
+
+}
+
diff --git a/pkgs/development/tools/vagrant/default.nix b/pkgs/development/tools/vagrant/default.nix
index c9987aea8325..cf4f34cbdfee 100644
--- a/pkgs/development/tools/vagrant/default.nix
+++ b/pkgs/development/tools/vagrant/default.nix
@@ -4,7 +4,7 @@
 assert stdenv.system == "x86_64-linux" || stdenv.system == "i686-linux";
 
 let
-  version = "1.8.5";
+  version = "1.8.6";
   rake = buildRubyGem {
     inherit ruby;
     gemName = "rake";
@@ -13,8 +13,8 @@ let
   };
 
   sha256 = {
-    "x86_64-linux" = "1na5hxm3ilx268hk68dpgkks1jjh9q7p3ksjx8ssiijq6df47vih";
-    "i686-linux"   = "16psr5s0azpzavizh74085z7wygkfs4ribsfalvbd96phkrkp2wp";
+    "x86_64-linux" = "1nkhf160hcl02yvafj6hq53j204qqxyvxjngnmf4f5md8dmkpn76";
+    "i686-linux"   = "0mr4pn7nggjdsqyxh1z2mflvvmpzhbxh5gax501d2hi8xr0y68df";
   }."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
 
   arch = builtins.replaceStrings ["-linux"] [""] stdenv.system;
@@ -28,24 +28,11 @@ in stdenv.mkDerivation rec {
     inherit sha256;
   };
 
-  # Remove the patchFlags/patches when 1.8.6 is released
-  patchFlags = [
-    "-p1"
-    "-d ./opt/vagrant/embedded/gems/gems/vagrant-${version}"
-  ];
-  patches = [
-    (fetchpatch {
-      url = "https://patch-diff.githubusercontent.com/raw/mitchellh/vagrant/pull/7611.diff";
-      name = "fix_incorrect_ssh_keys_permissions.patch";
-      sha256 = "0lqa9xpg79ggp9fc8gzb5lv675ydj2p8l55bx4hs1hf8zz2c1hjf";
-    })
-  ];
-
   meta = with stdenv.lib; {
     description = "A tool for building complete development environments";
     homepage    = http://vagrantup.com;
     license     = licenses.mit;
-    maintainers = with maintainers; [ lovek323 globin jgeerds ];
+    maintainers = with maintainers; [ lovek323 globin jgeerds kamilchm ];
     platforms   = platforms.linux;
   };
 
diff --git a/pkgs/development/tools/valadoc/default.nix b/pkgs/development/tools/valadoc/default.nix
new file mode 100644
index 000000000000..7d4e61c87995
--- /dev/null
+++ b/pkgs/development/tools/valadoc/default.nix
@@ -0,0 +1,24 @@
+{stdenv, fetchgit, gnome3, automake, autoconf, which, libtool, pkgconfig, graphviz, glib, gobjectIntrospection, expat}:
+stdenv.mkDerivation rec {
+  version = "2016-10-09";
+  name = "valadoc-unstable-${version}";
+
+  src = fetchgit {
+    url = "git://git.gnome.org/valadoc";
+    rev = "37756970379d1363453562e9f2af2c354d172fb4";
+    sha256 = "1s9sf6f0srh5sqqikswnb3bgwv5s1r9bd4n10hs2lzfmh7z227qb";
+  };
+
+  nativeBuildInputs = [ automake autoconf which gnome3.vala libtool pkgconfig gobjectIntrospection ];
+  buildInputs = [ graphviz glib gnome3.libgee expat ];
+
+  preConfigure = "./autogen.sh";
+
+  meta = with stdenv.lib; {
+    description = "valadoc is a documentation generator for generating API documentation from Vala source code";
+    homepage = http://valadoc.org;
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with maintainers; [ sternenseemann ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/pkgs/games/anki/default.nix b/pkgs/games/anki/default.nix
index a298b379c0f8..cb20bb516c9b 100644
--- a/pkgs/games/anki/default.nix
+++ b/pkgs/games/anki/default.nix
@@ -7,7 +7,7 @@
 }:
 
 let
-    version = "2.0.35";
+    version = "2.0.36";
 in
 stdenv.mkDerivation rec {
     name = "anki-${version}";
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
         "http://ankisrs.net/download/mirror/${name}.tgz"
         "http://ankisrs.net/download/mirror/archive/${name}.tgz"
       ];
-      sha256 = "1d7k38xzw1nbg83d1aqxf2f76fv3hn2fry99k3vf4lgmhndj52mv";
+      sha256 = "070p0jmx6cy7kp9bfcgpgkzpyqkcj81wy8gmacns03n5rlq8487v";
     };
 
     pythonPath = [ pyqt4 pysqlite sqlalchemy pyaudio beautifulsoup httplib2 ]
diff --git a/pkgs/games/crafty/default.nix b/pkgs/games/crafty/default.nix
index 351e25388e17..9526512f15cc 100644
--- a/pkgs/games/crafty/default.nix
+++ b/pkgs/games/crafty/default.nix
@@ -1,658 +1,64 @@
-{ stdenv, fetchurl, unzip, fullVariant ? false }:
+{ stdenv, fetchurl, unzip }:
 
 stdenv.mkDerivation rec {
   name = "crafty-${version}";
-  version = "23.4";
-  
+  version = "25.0.1";
+
   src = fetchurl {
-    url = "http://www.craftychess.com/crafty-${version}.zip";
-    sha256 = "0rhf4pfxcwj8hqd7bqj98fpdd80v6ss1jnc9kgwx2fw4ksdi37pl";
+    url = "http://www.craftychess.com/downloads/source/crafty-${version}.zip";
+    sha256 = "0aqgj2q7kdlgbha01qs869cwyja13bc7q2lh4nfhlba2pklknsm8";
   };
 
   bookBin = fetchurl {
-    url = http://www.craftychess.com/book.bin;
-    sha256 = "1j8f33iks4xf19bpv2mpvxrnlm5w1f5fbnxcrxasg9p7w600wyb8";
+    url = http://www.craftychess.com/downloads/book/book.bin;
+    sha256 = "10rrgkr3hxm7pxdbc2jq8b5g74gfhzk4smahks3k8am1cmyq4p7r";
   };
 
   startPgn = fetchurl {
-    url = http://www.cis.uab.edu/hyatt/crafty/pgn/start.pgn;
-    sha256 = "08c066acqwgr19jkaizdbzdpcm3ld5nsixv5wp9pnc37b8w9f0vm";
+    url = http://craftychess.com/downloads/book/start.pgn.gz;
+    sha256 = "12g70mgfifwssfvndzq94pin34dizlixhsga75vgj7dakysi2p7f";
   };
 
-  enormousPgn = stdenv.lib.optionalString fullVariant (fetchurl {
-    url = http://www.cis.uab.edu/hyatt/crafty/pgn/enormous.zip;
-    sha256 = "001574gz3881xfvhlc2wy6pg66c4sh0q2ms42swwvq0l80syz6y2";
-  });
-
-  tableBases345 =
-    let root = http://www.cis.uab.edu/hyatt/crafty/TB/3-4-5/;
-    in stdenv.lib.optionals fullVariant (map fetchurl [
-      { url = root + "kbbbk.nbb.emd";
-        sha256 = "1yssskq32x22ki67ja7azvlglz0vgq6d6awdz4avj1k72nbcs90g"; }
-      { url = root + "kbbbk.nbw.emd";
-        sha256 = "0n0hy09pnp0ldxkrvs1gz1ch7px0hzj1ni7iicfy7y9zhsqaky2r"; }
-      { url = root + "kbbk.nbb.emd";
-        sha256 = "1gyd2p546rapisbzjpqm1kbdlsj77yw46lr5wx28sng11wkz8xnk"; }
-      { url = root + "kbbk.nbw.emd";
-        sha256 = "1gvl0vw9k22wkas8mzdik2ynnykgiisp8smyf97i0v7h1y7bxsx5"; }
-      { url = root + "kbbkb.nbb.emd";
-        sha256 = "0zk12q2d3xfbj7zv9jkk0p1gzj7n640jynx7nkcfhmpz9qvjz5d1"; }
-      { url = root + "kbbkb.nbw.emd";
-        sha256 = "1kw68pbs12cjf0gg40j5b694zdyffprjblf56czgyj8xpfz219x9"; }
-      { url = root + "kbbkn.nbb.emd";
-        sha256 = "0gibrw89zlz93sdi8bkhy0pkfcgl4sswbm3vg6fgp752cwsvksiv"; }
-      { url = root + "kbbkn.nbw.emd";
-        sha256 = "0v781yid5g57y3raw5pqhr2cb8zm0rscim0zszypp4piz22pb60h"; }
-      { url = root + "kbbkp.nbb.emd";
-        sha256 = "1y2nxqqd7fhk7x2fc3dxidqlcrgcbwd9gkk4bggay3xds9m5nhrg"; }
-      { url = root + "kbbkp.nbw.emd";
-        sha256 = "0py5adrciqbs0cdwh1lz5q8ldkyvqbc7rx4995k6kvlq4nh95qam"; }
-      { url = root + "kbbkq.nbb.emd";
-        sha256 = "141jkx0ifb91b5nwps4xssvvcm1fny8ng1zxqsjb1n9dgsigsna7"; }
-      { url = root + "kbbkq.nbw.emd";
-        sha256 = "0iknfd1rjm4ar4gycg0yzw5dbf7hs3y1fnb3s9abypk8pkn8ga9d"; }
-      { url = root + "kbbkr.nbb.emd";
-        sha256 = "0jpp1f0rgglrn7gc36v7y38rivwl68s6gr2p15lqdvngismmyp13"; }
-      { url = root + "kbbkr.nbw.emd";
-        sha256 = "0gqs5bxg6kv4nw0sl0drfs9p043q10ic6d9il0rlvs6qds6d9bv0"; }
-      { url = root + "kbbnk.nbb.emd";
-        sha256 = "0x7q6clkhfv3scqyyj42b8r7jkd99v396pmih2f10a4scca3glxc"; }
-      { url = root + "kbbnk.nbw.emd";
-        sha256 = "1qry3mpl1rjsjasayfxhh6abnm7arfdljnz9q2n5v769kaqx1bx3"; }
-      { url = root + "kbbpk.nbb.emd";
-        sha256 = "1y2vx6i351nbfrbg5qkjyp9ys8vkb45i5101gz8fx1w3pkxq9312"; }
-      { url = root + "kbbpk.nbw.emd";
-        sha256 = "16jkjb1ljyck5k4mr3pwxasxb1l08h7mcc0iigjlgzrnvsc38nrb"; }
-      { url = root + "kbk.nbb.emd";
-        sha256 = "162jy1dm8h35p5yxz9ii5y3bwspgf1xy4m0hhdxzqm3an8f2i7nr"; }
-      { url = root + "kbk.nbw.emd";
-        sha256 = "1lks1fccaikrc455cadkw1h1012jk6nqfmqzi40ilmlckc3i7pnj"; }
-      { url = root + "kbkb.nbb.emd";
-        sha256 = "1hvkp65jp5jd3j7rp9wivrfcwgr42kd4kbj9n2sk68nqbdw5j4h1"; }
-      { url = root + "kbkb.nbw.emd";
-        sha256 = "1hvkp65jp5jd3j7rp9wivrfcwgr42kd4kbj9n2sk68nqbdw5j4h1"; }
-      { url = root + "kbkn.nbb.emd";
-        sha256 = "1cwzqb64q7br94pc1wbp86k4fpcii14wcsj3f7l5n9mmgrzk3y9k"; }
-      { url = root + "kbkn.nbw.emd";
-        sha256 = "17wnagdkc25d6daqa3cmr0923k4d98jjzpw1h4g70r19zrnczjn5"; }
-      { url = root + "kbkp.nbb.emd";
-        sha256 = "05mcmbwwrp4iljlw0ba7d6vgh0w1pl5a1vsmvsg56k4npx6npc95"; }
-      { url = root + "kbkp.nbw.emd";
-        sha256 = "1jsh96mrhshj07x9sv3prl4zzhpl2xmdr6znxshyr461481b6g7m"; }
-      { url = root + "kbnk.nbb.emd";
-        sha256 = "0k6bn47hdj36szqcbh66wcbv3ygxv6cm0zj36rl9n1c7rc9j7p4g"; }
-      { url = root + "kbnk.nbw.emd";
-        sha256 = "0rhkzsw9zw36zckjic6dd95psx90fr4d8rzbhkqskh8l945cyxky"; }
-      { url = root + "kbnkb.nbb.emd";
-        sha256 = "10mblq1n0m0ipfs4zdnnay6dmwafshb8l5mynfrn5wiaf26jysvz"; }
-      { url = root + "kbnkb.nbw.emd";
-        sha256 = "0h90b4a6m7pp0qfc1anm30ffqwmaj3h1zslsbivw4k8i0jnpfqax"; }
-      { url = root + "kbnkn.nbb.emd";
-        sha256 = "009rw6czd9zagly7nz43rd9vq60h57mfrlzx02cchn1ydsr6cnj2"; }
-      { url = root + "kbnkn.nbw.emd";
-        sha256 = "03harm479g91s2lb5ixk27n50kj15qjz8784nn1rmmcicisj4z7c"; }
-      { url = root + "kbnkp.nbb.emd";
-        sha256 = "0y737si4zrf8ac9jmn9sbwylcd1yvcxn5ihn128p2kan3956fpdv"; }
-      { url = root + "kbnkp.nbw.emd";
-        sha256 = "1902fn3pwrslxi4rv8lrahwq3hakz9kfq70b8c0hqshf44h06ggi"; }
-      { url = root + "kbnkq.nbb.emd";
-        sha256 = "112chi9pw5fqrpv4q4a9p8jc5zld8wkiwd9y71rky09z7zng4vy5"; }
-      { url = root + "kbnkq.nbw.emd";
-        sha256 = "1m1pdsq9zl9g2fs2gjp76za3qmdrv0k1ngxvz3cjyh3p08lixca0"; }
-      { url = root + "kbnkr.nbb.emd";
-        sha256 = "13nkcvcn70g3q5fgrhbc8qs0i0fl7k78m5pxdgmijbkax52kpfgl"; }
-      { url = root + "kbnkr.nbw.emd";
-        sha256 = "0kjplgzbza4wp8aqf7b4k9nqg0vzdj0q6nj90sg7ssiw2w95z1jz"; }
-      { url = root + "kbnnk.nbb.emd";
-        sha256 = "1v3a5fi2fnh9mr9j59dv8jw2inx55jsfg9ypn92dgdmmlwg688yr"; }
-      { url = root + "kbnnk.nbw.emd";
-        sha256 = "096l2zpi7ywrqsapkz47pcivkh2igsdmxb8szd9gq8ylylrsma37"; }
-      { url = root + "kbnpk.nbb.emd";
-        sha256 = "1011x2w59fjn89nd8yqhvjcxdwla4chifwvx3hml2g82rfqgmw5r"; }
-      { url = root + "kbnpk.nbw.emd";
-        sha256 = "1nvqwv6akdr5acs9cdcf1zircw351fmf433niyc7blzqa0nng7n1"; }
-      { url = root + "kbpk.nbb.emd";
-        sha256 = "1bbyr59kapp6f2r4mn1b79668b6gf1j0pwh6f3fcym7xms7gg28k"; }
-      { url = root + "kbpk.nbw.emd";
-        sha256 = "0bn70m7g225mpbs1s7vpw5swd12wwziryp25sv2z5xpg03y7zm10"; }
-      { url = root + "kbpkb.nbb.emd";
-        sha256 = "0clwycpzqklasqw5igk74sm9w6wqwx6h8dbqajpccq3l6ipf2ylx"; }
-      { url = root + "kbpkb.nbw.emd";
-        sha256 = "0w7sf6q3m2hn9ix7lyg1c8casz3qxnzqvfvsbsda46xx5chrp7wh"; }
-      { url = root + "kbpkn.nbb.emd";
-        sha256 = "052fi7b56qq46pc4hvr5wpxkr0gv7wq0cnp5550qbr7an446nbri"; }
-      { url = root + "kbpkn.nbw.emd";
-        sha256 = "1lbwj845qff7y51iw4fybqvpcbh9r5jlfphmhidzdkjhd2gflb0j"; }
-      { url = root + "kbpkp.nbb.emd";
-        sha256 = "1ybzqw8fjqal6n6isy2m9rhhykd8g81slvc5m55ccald63zalk43"; }
-      { url = root + "kbpkp.nbw.emd";
-        sha256 = "139dm4709pvzxn6aixfsbv88ly0cjn6dk7khr1sjf2x17c21mj69"; }
-      { url = root + "kbpkq.nbb.emd";
-        sha256 = "0640xw9hasgif9cxyskpp397dzvhwnpkcfyn33d4vbi4r0cbdv81"; }
-      { url = root + "kbpkq.nbw.emd";
-        sha256 = "13yhn55y65pl6bh67hlfjlwj3mm4w6gy1y34qypgc7kck0rrygn6"; }
-      { url = root + "kbpkr.nbb.emd";
-        sha256 = "03avk4igjdyh6ayh3xm0ds8agmqhagyxmv3s8g8830qk3a6frkz3"; }
-      { url = root + "kbpkr.nbw.emd";
-        sha256 = "0vqkywgxkys0dxnx0sv35kzx9fxhqzbnk4qskjzd1fw9ck21pnad"; }
-      { url = root + "kbppk.nbb.emd";
-        sha256 = "0i4zgsp7izp789chl1vlp93dy567schz96my19vgki1y3ifx4wkz"; }
-      { url = root + "kbppk.nbw.emd";
-        sha256 = "0ki9a0f5cp7ma9zrabjrz5alk6d3xihl388j1h9ii4g52g1zci3v"; }
-      { url = root + "knk.nbb.emd";
-        sha256 = "162jy1dm8h35p5yxz9ii5y3bwspgf1xy4m0hhdxzqm3an8f2i7nr"; }
-      { url = root + "knk.nbw.emd";
-        sha256 = "0irmycxkah9j5qf9inmrz6cvjv8i894vzg5378qmazkpgpmzvix8"; }
-      { url = root + "knkn.nbb.emd";
-        sha256 = "0gwxp4q8wk9vsw4zprh3psrjdxkr3rjx0q3k3iqlf9y3rb6yy0hv"; }
-      { url = root + "knkn.nbw.emd";
-        sha256 = "0gwxp4q8wk9vsw4zprh3psrjdxkr3rjx0q3k3iqlf9y3rb6yy0hv"; }
-      { url = root + "knkp.nbb.emd";
-        sha256 = "1cfav9xgsmvs44j4irw1mx04phszlasz96i26ik8lw8wjdl8x6vx"; }
-      { url = root + "knkp.nbw.emd";
-        sha256 = "0p560zfmixmcizy60f13lz5a3yd83w7bz06cac0nj0myv4m4s6yp"; }
-      { url = root + "knnk.nbb.emd";
-        sha256 = "1w1dh6lmmrxjfi6srmznqvc7frzxhrs48f5g0jijb410y2c26y0l"; }
-      { url = root + "knnk.nbw.emd";
-        sha256 = "1a9nvqk0w2xhwx5d2ia35z8g2xcsg2kh59ca1jwbvx9sh438b2xh"; }
-      { url = root + "knnkb.nbb.emd";
-        sha256 = "1r8g6ml0hi6fxmff396wjnff76csrq47si1s0qsy1cdfkvax7yyn"; }
-      { url = root + "knnkb.nbw.emd";
-        sha256 = "1v74lhr44s0plxab7qhn4crf55hhp4j7w2mr090sfxz0bzk7cb78"; }
-      { url = root + "knnkn.nbb.emd";
-        sha256 = "1fy4ksqncjv0iqf0papy8hb353di0k39aq0jqh5jvshl9vmspz15"; }
-      { url = root + "knnkn.nbw.emd";
-        sha256 = "1qgprlkaqfwfjkmc048faz2j8y1n46mqp3dfpdnn9ps1x3iqvs0f"; }
-      { url = root + "knnkp.nbb.emd";
-        sha256 = "1xhsjq79nb7zgqgyjp0v6n0g8r37x2csa5svyz8ndsax9hrxc1r7"; }
-      { url = root + "knnkp.nbw.emd";
-        sha256 = "08pxmb0sdppims2lfl0zi42rsh3dlrdbl7vq2rs8v0b470q4j5jx"; }
-      { url = root + "knnkq.nbb.emd";
-        sha256 = "00y7vv6ajzr9kgwx8gk7wap7ncb9dg086iv3lwki6qcwvy14bxql"; }
-      { url = root + "knnkq.nbw.emd";
-        sha256 = "09brsqvzwx4fmf7a6ljqcabx2isqfv1mmvsjb453wmhx98fkglj3"; }
-      { url = root + "knnkr.nbb.emd";
-        sha256 = "01df21j4zdwb4dfngjrr4797b1ipdajs1730i4gajcbm4hqigi69"; }
-      { url = root + "knnkr.nbw.emd";
-        sha256 = "0q0jxmqc57s22vlbk98dbb7c2zmzs6g6chlg42sw156j9414jdfb"; }
-      { url = root + "knnnk.nbb.emd";
-        sha256 = "0jxlaqkbdxhw45p8y4g5ggryzc6l7s159fdlw0bi5ipcp40afpvg"; }
-      { url = root + "knnnk.nbw.emd";
-        sha256 = "0782r7r4b4qmy3afrdmj5l0vlp5sgr33v0h0cigxghfmf19xhgdl"; }
-      { url = root + "knnpk.nbb.emd";
-        sha256 = "0cxj1mxdz8hmjlzhnc7j4cdi5jkcj1l0xfrz4l4z4az7f4ad91ci"; }
-      { url = root + "knnpk.nbw.emd";
-        sha256 = "13y2picx7c814hfsq3bb95js9s3bng85mblhhb7i12yqhddrzyx0"; }
-      { url = root + "knpk.nbb.emd";
-        sha256 = "03xah0j9n427nvqwym0ay84zg831v26x3gnp1zkpg1072r78d2p2"; }
-      { url = root + "knpk.nbw.emd";
-        sha256 = "10lv54gs3pgqqmndlihvjfbrfiqzgzfl7a127nchfyb12f9y91zz"; }
-      { url = root + "knpkb.nbb.emd";
-        sha256 = "1jiihs0cd5jx2hwv99vb3n3iahqwz6ja60zk5nbr17cxzhw0g2ng"; }
-      { url = root + "knpkb.nbw.emd";
-        sha256 = "19jxzp7v90hd1j6i109z03vdq81cndmlvmbb65fm2mc4ffrwms83"; }
-      { url = root + "knpkn.nbb.emd";
-        sha256 = "1yqjxxhc0fq2jvsqifw8my8lzfs2fgn6z8c2lgvak8ag2mi57ka8"; }
-      { url = root + "knpkn.nbw.emd";
-        sha256 = "1kh8sh9vscig0kkwvz79i3gk582xrgll8f4jlqw219f80ckh2ry6"; }
-      { url = root + "knpkp.nbb.emd";
-        sha256 = "1sd46as18ciml1nyzwh8v5qm5slhchbv15yv4qhcaga7cmljy9w5"; }
-      { url = root + "knpkp.nbw.emd";
-        sha256 = "0p8cwryphz16j2yihg7c1szx20s9mxzbgc7y6ddigvhafa19fc1d"; }
-      { url = root + "knpkq.nbb.emd";
-        sha256 = "03vaswq917maa1wxfkilcxjxvm9srnwzmzq1sq36q3h3dlcv23mp"; }
-      { url = root + "knpkq.nbw.emd";
-        sha256 = "1wmnipmacrbwggr1n63zdivvy9haqs96rkn458xswpmvks5fbyqj"; }
-      { url = root + "knpkr.nbb.emd";
-        sha256 = "1ngpj8iaz6si5i3vxri8k8ajpaim71caldxal28djkpmw91yqil6"; }
-      { url = root + "knpkr.nbw.emd";
-        sha256 = "1hqm6xp361iqdn7ayw6zvdk068iz2mwdz6sr087cr7gc0mim2ndw"; }
-      { url = root + "knppk.nbb.emd";
-        sha256 = "1mphpswq01v7d0pxij12nd1lpiz683gp0zgwnz0nyninwsmpq08v"; }
-      { url = root + "knppk.nbw.emd";
-        sha256 = "1m8l9jy96nxvqk48y73yj8b996q2gza1h448rrl00hjn1apbmjf3"; }
-      { url = root + "kpk.nbb.emd";
-        sha256 = "1xgbahdym0nbj63rc6rwgiwzss8xw3ra4lg03z46666hwykx8gxp"; }
-      { url = root + "kpk.nbw.emd";
-        sha256 = "1clkwzf3nb8lzrrs3gg4m9j5wh7z66ihra8gyz8majpjbhcz86an"; }
-      { url = root + "kpkp.nbb.emd";
-        sha256 = "06jsna3795gjlymnrxmscgxnz9ic1i648hr6v5vfagf8lmqi9nq4"; }
-      { url = root + "kpkp.nbw.emd";
-        sha256 = "1gplq6ksq4kvwramx137ncl6giwcm8rg3q8xmyqk1mq10dwcjfbp"; }
-      { url = root + "kppk.nbb.emd";
-        sha256 = "11xlmyw2hx26mkca4bid4qg62yxd0pspgmb40l9kf6h0yjzq4q07"; }
-      { url = root + "kppk.nbw.emd";
-        sha256 = "0j4dmlsm5i7rwrw7kkiq8j7zmcwvb6w38g41kfslm4sv6nm5mvjs"; }
-      { url = root + "kppkb.nbb.emd";
-        sha256 = "0w2yzi0l3jdnr88my8gcsqy72crkm9ppyiy8wl629lpcbrwj75x6"; }
-      { url = root + "kppkb.nbw.emd";
-        sha256 = "06f1h0x6rcsq9kag1fcz9z47hpffr4w9q171rkspd8ffpfzqq7za"; }
-      { url = root + "kppkn.nbb.emd";
-        sha256 = "0wmkn2i8z7m4j93hid2z2ns31kg4yhn939lfkvglfdvrgqjn1kh9"; }
-      { url = root + "kppkn.nbw.emd";
-        sha256 = "1ky4zcwyv5rn4g0h490s6l8vin6rwdv156ial7iczaq8hf70yhkm"; }
-      { url = root + "kppkp.nbb.emd";
-        sha256 = "1ivfxjphcld71cg4rvvq9rvnkpidh6apd52jf2cv42fvx313d9mq"; }
-      { url = root + "kppkp.nbw.emd";
-        sha256 = "1ymvp0z6jhrqi2hz87c81r54m9sdjpm91pvxwbx061yfbdpv230z"; }
-      { url = root + "kppkq.nbb.emd";
-        sha256 = "018cy2q2dvhxjh80prjxg6fx1lal50qc5mzzbfy0xlkk1l1y4sk5"; }
-      { url = root + "kppkq.nbw.emd";
-        sha256 = "0k4jlzcn213h8303jl3hkdapd9z8dhazsa22zac0bg52488r07gj"; }
-      { url = root + "kppkr.nbb.emd";
-        sha256 = "187pjqvp7kzyxkncp51c3vi26khimabkw5b3nyaj498jqjjlfa23"; }
-      { url = root + "kppkr.nbw.emd";
-        sha256 = "0mkrap8dizwxhhiij2xzlvbn8q9hrlsfvkcfcxajn8azaxnhx3ck"; }
-      { url = root + "kpppk.nbb.emd";
-        sha256 = "10spzc39zks7pwa2qy8aps5hk0z4xsxq1lpfwd61qwm5hazci391"; }
-      { url = root + "kpppk.nbw.emd";
-        sha256 = "1wx48xyb1xl5v7gjrahby8psig1gs9dipsj6iq44d052qr56513j"; }
-      { url = root + "kqbbk.nbb.emd";
-        sha256 = "1zvacin043njqws2nwiylch5dan28yis3ybcjb3zvmkdxyy8qzrh"; }
-      { url = root + "kqbbk.nbw.emd";
-        sha256 = "1s5likpps43bxplsv5yrqqnh2xzakibcknn6jh67xwdvl2v4jfz5"; }
-      { url = root + "kqbk.nbb.emd";
-        sha256 = "1814l1cgfphzl4v7k3hnwi21ydzfzyr7xzbh05dw3mnm0dsg9gzk"; }
-      { url = root + "kqbk.nbw.emd";
-        sha256 = "0xpmqr99qscrqjk5rzb7cgkjpcz4cmp6gngfsy8hq7530a4nknxk"; }
-      { url = root + "kqbkb.nbb.emd";
-        sha256 = "1jpl4nx4ddwnz455433508ibxywsrccb098infn992gs7wqqjsi2"; }
-      { url = root + "kqbkb.nbw.emd";
-        sha256 = "0krx6irqv0gvdy7hknhwa6gj2zwiv9rnjk2qlf2cy6xsldzn6af7"; }
-      { url = root + "kqbkn.nbb.emd";
-        sha256 = "09xsg79xajh1g2d9nvms61pjgb13x6fc0nhw58nnfg28nbvjzz1n"; }
-      { url = root + "kqbkn.nbw.emd";
-        sha256 = "0gb8pdsd77fmjd09h7ri1z8rrparqn5xa56dwi4yd4hhwsb8c4fq"; }
-      { url = root + "kqbkp.nbb.emd";
-        sha256 = "07h1zzaic2qh2140wvcq0hvhmkv0j9h7rchm3avsk7m6ma98d7zi"; }
-      { url = root + "kqbkp.nbw.emd";
-        sha256 = "13lffpplxis2a5949wnq998262idiydg2b2pz5np3mxyppc48r61"; }
-      { url = root + "kqbkq.nbb.emd";
-        sha256 = "09l20wcjcvmncz97j4107q3ch81dgzmx7i86m6pzifhy8mrn2cll"; }
-      { url = root + "kqbkq.nbw.emd";
-        sha256 = "0vra23shpwlsiyzd8wd2m2ayrs4ig2943l90ps9xh1p6igjv1n9d"; }
-      { url = root + "kqbkr.nbb.emd";
-        sha256 = "0gmzhzr1m751djfp6b71yrah04r89lq41nshvw02qp531aqp1xyq"; }
-      { url = root + "kqbkr.nbw.emd";
-        sha256 = "1zz0fdfn463xa76xd8hg2hz8a1kaljka9l01z64vsqvn73nkd5fm"; }
-      { url = root + "kqbnk.nbb.emd";
-        sha256 = "1m7krpj5sd6mvrsks39jyxkg8mvz7g15rwnn55kql2flpsw481q4"; }
-      { url = root + "kqbnk.nbw.emd";
-        sha256 = "1q6jvhxjzcani3ls402n3ylhhmf8kd482in19d2ny0q7pqcimvy7"; }
-      { url = root + "kqbpk.nbb.emd";
-        sha256 = "1pdc8kd3q9f8vgfqxymar3vkg1h9qbsfr614lhgbmpmpmn4zxqdj"; }
-      { url = root + "kqbpk.nbw.emd";
-        sha256 = "0dcyxa92200g0dgq7lk018grhvwxzrhh6wrwqdk6g3v02g63h38d"; }
-      { url = root + "kqk.nbb.emd";
-        sha256 = "1f0cdqyakzck0ng11smhk9kdkch9hbm3azniqv2wjg2wp9aj9s1n"; }
-      { url = root + "kqk.nbw.emd";
-        sha256 = "0gzxgkxzfnlri5ypvx67k2mwq4xnwkm4hn4n9mqpl7fjwdj733w2"; }
-      { url = root + "kqkb.nbb.emd";
-        sha256 = "0j3w39l4mnwm5nrrw0zcd4icdj8hgds792nhick2mfn40injwna6"; }
-      { url = root + "kqkb.nbw.emd";
-        sha256 = "0q30gjvlfmx1ld4i0x2xj97i4i3w6q1vhl2q91w8dd84bw1cy1k8"; }
-      { url = root + "kqkn.nbb.emd";
-        sha256 = "15aivg3vpc6y1g3gcnmssjnww9l7npy3g5xxq3wq99ai1mbgik7p"; }
-      { url = root + "kqkn.nbw.emd";
-        sha256 = "1qqi3r6a5d74108xgdxx9qx4cxv7fkr9jpkrcizirzv30dp3cb4z"; }
-      { url = root + "kqkp.nbb.emd";
-        sha256 = "0hlsmjn9baa1bplnwygxvgnkfn15fm9fhc6k39bfiacy7ai0zkka"; }
-      { url = root + "kqkp.nbw.emd";
-        sha256 = "0ibx6xp2v980626xffb7khz8lfnxb9577w5zc6mlc892kinaf4gf"; }
-      { url = root + "kqkq.nbb.emd";
-        sha256 = "0kc2d1qwlib2v71fhx11frk2a06lx1mvvddw83mmvyzca108ggz3"; }
-      { url = root + "kqkq.nbw.emd";
-        sha256 = "0kc2d1qwlib2v71fhx11frk2a06lx1mvvddw83mmvyzca108ggz3"; }
-      { url = root + "kqkr.nbb.emd";
-        sha256 = "13fabjhiq5psyvg2a1cbx16471g35il0lm3fsfdy4dpl9zr2pw58"; }
-      { url = root + "kqkr.nbw.emd";
-        sha256 = "0hwy21k0a3qa6b1093904krdqrqrz5iwqsb0qxqqnwljpz8kr1zl"; }
-      { url = root + "kqnk.nbb.emd";
-        sha256 = "0dy9d9fwaqvmr3x796a7vq5ynqnpw8b4l0zsm7nkvvd5sak1blxj"; }
-      { url = root + "kqnk.nbw.emd";
-        sha256 = "0zdzqhg0ww4b79w3w3hjpwfar0r8fhk2yc8jknwzcc9q9rv9a78n"; }
-      { url = root + "kqnkb.nbb.emd";
-        sha256 = "04zvc8s2rwcgr9chx3rmvr3shs47i75pwh1wph9wiy33jx5gw846"; }
-      { url = root + "kqnkb.nbw.emd";
-        sha256 = "1v22rln9plikvchdxqii4m9kh9s0mahrxnsqs6i2kzcfphiqp3ns"; }
-      { url = root + "kqnkn.nbb.emd";
-        sha256 = "0kwz1390brs60ri0mrvf3f64ax0yncnp6kpaf7nrw5v29s5cxpyz"; }
-      { url = root + "kqnkn.nbw.emd";
-        sha256 = "0gvsx71nf0bhggk338rsmvbpajwa6j1ja09gchny6i9gvg9l0frs"; }
-      { url = root + "kqnkp.nbb.emd";
-        sha256 = "169llq4dv4fsh8hvvwwrbc2b1iwklnqwqmhzv77q862cxs8rbcsa"; }
-      { url = root + "kqnkp.nbw.emd";
-        sha256 = "1b1mgfh7hgiqv9a0dv1f7vr180g1mjxcg3nlx4zmpj0mzgwka39g"; }
-      { url = root + "kqnkq.nbb.emd";
-        sha256 = "02za7wp2z1h1sd55mmkaa6i0bh3piwiz5ybpdrxk2amm54kvjmsj"; }
-      { url = root + "kqnkq.nbw.emd";
-        sha256 = "0s9c4zfw4slp7lv373nkhlyafn3hpw9pv4543mm69c6cdnl04xhk"; }
-      { url = root + "kqnkr.nbb.emd";
-        sha256 = "0nffvkdfs17b6n2hmy9i7ha793dn8an7ff9nd97z62zxxm63gmyp"; }
-      { url = root + "kqnkr.nbw.emd";
-        sha256 = "1jqmbna1i5wqahqz2lalviv61y6ak379fhjcc9xg651dxfnjnmwh"; }
-      { url = root + "kqnnk.nbb.emd";
-        sha256 = "1dlhfqmv5g3f9lvfgvy4h7x0xfkbn9pcsplb9kjlqg7qhkimcvbg"; }
-      { url = root + "kqnnk.nbw.emd";
-        sha256 = "0zlg34ff2bp88q8bws2isswwa8ls0qncpzyzc3d1j6avkprwkq2i"; }
-      { url = root + "kqnpk.nbb.emd";
-        sha256 = "0i436sxh5093zy03v6rjf6r0ydjmkmfj5fkxqk2qjjps2gc6jwsn"; }
-      { url = root + "kqnpk.nbw.emd";
-        sha256 = "0yf7il0maiw8c9gam9cvnjgvywjk5k3pjvmgcy377yf31hgi209g"; }
-      { url = root + "kqpk.nbb.emd";
-        sha256 = "11vl1p9qwqsdbxdppqg3n73868kd69kqhl6h6q1p47a4dq9lqldy"; }
-      { url = root + "kqpk.nbw.emd";
-        sha256 = "02ik15sm3mdhyn76rnx8jvg7fma1m7njm55h6mqqqgqgbji0zzvi"; }
-      { url = root + "kqpkb.nbb.emd";
-        sha256 = "0s7k9dh87s6msmqpv43csax632i5w5gzc2s4ijiy38kg0d3cgz31"; }
-      { url = root + "kqpkb.nbw.emd";
-        sha256 = "115y0gshq2g6p6mfclxag1lvba3pz2rlyw8b6d5rykkapm299yvb"; }
-      { url = root + "kqpkn.nbb.emd";
-        sha256 = "1i3wx9c7dk1sdig6kv4h3pa2m9ir1gd6qz7jyan9q18wvrpag12l"; }
-      { url = root + "kqpkn.nbw.emd";
-        sha256 = "0iqxrgr1x2k3mfvhgckz9dya92wj8vddpv746gz86yi6n05wp373"; }
-      { url = root + "kqpkp.nbb.emd";
-        sha256 = "0ifxixayrfhdp3yq04h55kjcgbly4390ghrhpvllc3mf6yrcg3sh"; }
-      { url = root + "kqpkp.nbw.emd";
-        sha256 = "1hf8b4lvci0lm4skvxsw83c521q2x1i7yij8ih9j8ijyg64fivp8"; }
-      { url = root + "kqpkq.nbb.emd";
-        sha256 = "0vy9ihcl80q2ml7lilgi007d7zx4r9knsyn8f63fqfa8x3m5rs6b"; }
-      { url = root + "kqpkq.nbw.emd";
-        sha256 = "0xqngdyq8anfz1xqyg24nvwds7k7027j1l5pjwl22x0ipi7hda98"; }
-      { url = root + "kqpkr.nbb.emd";
-        sha256 = "1c3xbrvsmyjz0ydc3xpw5hcxky20742d2jqwf7rrx5q223y11mlv"; }
-      { url = root + "kqpkr.nbw.emd";
-        sha256 = "0fsi0d0czwvi2az56v2a4r0k78drybyqdda264gqjs53j65h02bp"; }
-      { url = root + "kqppk.nbb.emd";
-        sha256 = "0995h6li6ixljxfs4xxy1bvmzj589h675bg8pkhbrmvimhja2nrf"; }
-      { url = root + "kqppk.nbw.emd";
-        sha256 = "18hh8080s90qdacy6svhymfs4nw27x0p0s8km8p090rwk5si860a"; }
-      { url = root + "kqqbk.nbb.emd";
-        sha256 = "15n425kcfjypwbxj1ck9v4rzd24lmd36kczhsi1cp2y6955vz9vp"; }
-      { url = root + "kqqbk.nbw.emd";
-        sha256 = "1mjkgcblgsga7vib0410mdcjqh3dkc3xq8nx17p1hapinj987w8s"; }
-      { url = root + "kqqk.nbb.emd";
-        sha256 = "0ihmqjiqycybci4zczrdv4c3a1bdz7l2qln0g43rbzwbkjsplykx"; }
-      { url = root + "kqqk.nbw.emd";
-        sha256 = "0m0359yb17azb8s482i63fvqqy1b9idgklrj82rpbidasz41gj0m"; }
-      { url = root + "kqqkb.nbb.emd";
-        sha256 = "0b9hm4pw01dal7lazb1qakjbgg5wg3nrn2bdjmkabfjgbrnh4hbm"; }
-      { url = root + "kqqkb.nbw.emd";
-        sha256 = "1msk54xzbn41rhlyx9qkragihmg7yw2r5jc97lkvb7d8lwg6s59r"; }
-      { url = root + "kqqkn.nbb.emd";
-        sha256 = "18d8nc25h33gd1qr6jmsbka3qmd8xjb2q1545959x6b4ch93cbsy"; }
-      { url = root + "kqqkn.nbw.emd";
-        sha256 = "0i2mzllfklvv8bw0g6rjjrjkw71mvn8hsvqg6m7hhdq8lg5ajhyp"; }
-      { url = root + "kqqkp.nbb.emd";
-        sha256 = "14y51vjw0r605pbjz0gvhc0x2w14ijxn3nilvpd5sdcnfh79kaax"; }
-      { url = root + "kqqkp.nbw.emd";
-        sha256 = "11m1034gb608czhzrrj3fgpixq4rlvr92bzv7ga5r8wypwwycbdp"; }
-      { url = root + "kqqkq.nbb.emd";
-        sha256 = "1cxyavw61qqpy15vrq51a0sjsd2lhya60cf33nnh9vb370amwqj9"; }
-      { url = root + "kqqkq.nbw.emd";
-        sha256 = "1lrv2757bivjs9bsyh7ghj53halg3jz29xhnx7xhjrf48rpv6nxw"; }
-      { url = root + "kqqkr.nbb.emd";
-        sha256 = "1m2r0myc2piqn4pcd3b9ngivrjg1j5viwsi9740dlb730dbvkzna"; }
-      { url = root + "kqqkr.nbw.emd";
-        sha256 = "1767n2993dw5akbd3h6w570nbs5bncd8qid1dhgzfs9yxxzjplns"; }
-      { url = root + "kqqnk.nbb.emd";
-        sha256 = "047950dbkh0mzpfb1klm51lmqzx1d90w6j7r4z8mc1nw4knh5cpp"; }
-      { url = root + "kqqnk.nbw.emd";
-        sha256 = "0yd35ra0s0qckqymzi634bxp127arbrqzyj3s3xww82qsn6lbm07"; }
-      { url = root + "kqqpk.nbb.emd";
-        sha256 = "08wbdhpa8vna39i226hg71r8a7ydp2vd2gh5prskr39vqj0k5pa3"; }
-      { url = root + "kqqpk.nbw.emd";
-        sha256 = "1vyd4pvb8mhbdkm85njnqxg755biw0y68ylxfbnar8wna4dl27ds"; }
-      { url = root + "kqqqk.nbb.emd";
-        sha256 = "0l0ichgik395z90h37zj6x4kcxpf0121zw57s8s0y51iwz61ikg9"; }
-      { url = root + "kqqqk.nbw.emd";
-        sha256 = "0jmkd9n96al6sggva1kmdax8vxqprai9hhkxxvsk35wivcp8akk8"; }
-      { url = root + "kqqrk.nbb.emd";
-        sha256 = "02wahvwixy5l3q9h57ayr2mxqs79zg8m2qh8cv3mms39csa9axzh"; }
-      { url = root + "kqqrk.nbw.emd";
-        sha256 = "05rypafy4lgb53x8zx2qlvdrjm91aqr61hc7iwlpfikqqcbiksiw"; }
-      { url = root + "kqrbk.nbb.emd";
-        sha256 = "0bk77dvdg5qx86rss0q9v8zl079g85p7snfgjpr30jpfv2z0a6p6"; }
-      { url = root + "kqrbk.nbw.emd";
-        sha256 = "0mgamh4fqr6g063ic5qapdjng6jw35f82f0wjq8j9gv5w83s0vqs"; }
-      { url = root + "kqrk.nbb.emd";
-        sha256 = "0vsadlphh4b6cgs4pizw44nfw4lhpq65dws44fc9z74sf32q0ibr"; }
-      { url = root + "kqrk.nbw.emd";
-        sha256 = "1qq8jqzqzkcarhnc7ad6xp3s2f8r4crrxgj0ajciz2pkyc98xdh6"; }
-      { url = root + "kqrkb.nbb.emd";
-        sha256 = "0bxmkjmqx7gjdaz78d31sbk7v67crx24dpbhswfg6b3xkhi8cy3f"; }
-      { url = root + "kqrkb.nbw.emd";
-        sha256 = "0hhz4yxrcwvvc4b36ixlh3g8gdm4krhvip80xazcy538dwl26b29"; }
-      { url = root + "kqrkn.nbb.emd";
-        sha256 = "13h7qa2zy9akdrvrwl7wmlpncgljjamc7asa9vpd76bi5mp0wrap"; }
-      { url = root + "kqrkn.nbw.emd";
-        sha256 = "0ihcp5wh61cgq439nh5rn3qqhpyjl5h4xz9ayyma298fm2xw7w89"; }
-      { url = root + "kqrkp.nbb.emd";
-        sha256 = "1wjrcrjgq1gj0jqbw0mi8ah79qv80zp921bzjxsx9vjm35hdbbhl"; }
-      { url = root + "kqrkp.nbw.emd";
-        sha256 = "0qwc76wyy60vicxyxx80gm6f40fw3izs6xndhhkfh86cj7sjl3l5"; }
-      { url = root + "kqrkq.nbb.emd";
-        sha256 = "0drzfjrm6mh8q1vb36ycvfsipp6z4ij4a200zxypaxaimnxssq3x"; }
-      { url = root + "kqrkq.nbw.emd";
-        sha256 = "0n12rixcd2k3bgm00k2z9cnlzx1av5y62r8adnx6h2grlgcyd26j"; }
-      { url = root + "kqrkr.nbb.emd";
-        sha256 = "0zvzx89gp4saggjb062nafy3xncv01fmbymsmnlswmq80xdkcn4d"; }
-      { url = root + "kqrkr.nbw.emd";
-        sha256 = "0by6f36850d4fdraqj8rqv7ryaplqxlmkm00prm0pcmlb3y5czc7"; }
-      { url = root + "kqrnk.nbb.emd";
-        sha256 = "0z5599ci1n7qgpn3inch8zc3ciyy1b5gjbix78k3b5ig4ra2idv6"; }
-      { url = root + "kqrnk.nbw.emd";
-        sha256 = "18a5bm0rlh4wf5im54acq0w0l6lnjjk4dxaxcph67q4smfbfacv3"; }
-      { url = root + "kqrpk.nbb.emd";
-        sha256 = "10rbm2j3rz04jv0s70aink3y7h303zvnf29b9pim8b8pv23pwvy3"; }
-      { url = root + "kqrpk.nbw.emd";
-        sha256 = "1jqvxfj3fnm456livvfbp3v750mm86js2qb7va5nq9wilif13chb"; }
-      { url = root + "kqrrk.nbb.emd";
-        sha256 = "0h2g8v9i6ic2fmjgzwh1hcwaka2m8n8l28nvbbkq3447hrwl8sba"; }
-      { url = root + "kqrrk.nbw.emd";
-        sha256 = "137iicxbws20rv93b5qas6dpk5a7qj18rcbj632117hkiw3ddjly"; }
-      { url = root + "krbbk.nbb.emd";
-        sha256 = "1i0yjbvkrqz4m61qk6flz88zsb3nwskj6rrn3bz4fzv63m0yhcpk"; }
-      { url = root + "krbbk.nbw.emd";
-        sha256 = "00rna709hpxw06sg5cnzn9xzgn2pib4n5yyffjz638sgivgh62k4"; }
-      { url = root + "krbk.nbb.emd";
-        sha256 = "1xq45jiwg96084jm0qkacjmxl86v0mp1nrr6k85dpn99bmyzx5xw"; }
-      { url = root + "krbk.nbw.emd";
-        sha256 = "0jnxrpwad8cpl6yp31bs5g0h89jjr8061lj69n8wdmmwhvjafvk0"; }
-      { url = root + "krbkb.nbb.emd";
-        sha256 = "0gdwy9q7xf35fpb78g02jn07d969p7zzhnn4asbk5y3fmix209l2"; }
-      { url = root + "krbkb.nbw.emd";
-        sha256 = "0kryfbjli1l05nqarz96q6fnviwzgjvmbljbmapirw40ma68nx4r"; }
-      { url = root + "krbkn.nbb.emd";
-        sha256 = "01fll6vvqiyxpmn6qmwhrzd7f3j3irpbdvc2jn2hqzjdmsr0kz59"; }
-      { url = root + "krbkn.nbw.emd";
-        sha256 = "13yipfw7v5w2hcgmnml3ka1rq1g5djcf81nkanrlmrkqaksxbc0m"; }
-      { url = root + "krbkp.nbb.emd";
-        sha256 = "1bpa5x4zm9nap62hf3iiyzzwcp0fsh5bww0sdnvlzaclw9mbc1g8"; }
-      { url = root + "krbkp.nbw.emd";
-        sha256 = "0y157ai66amm5lryigc7nizj79mfbcny925qqcsgbi8l2yhl7hk1"; }
-      { url = root + "krbkq.nbb.emd";
-        sha256 = "199gckvazpsv1f3jkfxw9p3hyfshpvqm2i9wqjgzlm69dckbbj4x"; }
-      { url = root + "krbkq.nbw.emd";
-        sha256 = "1m72pzaxlrppwpaqgdcxcjr9n5cnyxs8p0kxybgkl17vfvpc5jmw"; }
-      { url = root + "krbkr.nbb.emd";
-        sha256 = "04wpcfq3y4nx1q57vina4z75lv3mrzljfzw5s73s5m0fhfq54i9v"; }
-      { url = root + "krbkr.nbw.emd";
-        sha256 = "1wii5h5cyxxxgjp53ap43v0wnpj7amxyd8kg9bxsamcfz3wj1v70"; }
-      { url = root + "krbnk.nbb.emd";
-        sha256 = "0s2jrbyjn4d2kik7ic4i1d4w6yx2841cdwb7lalpw3jf74ag2cv4"; }
-      { url = root + "krbnk.nbw.emd";
-        sha256 = "1py0lnsahky21dvk5kdcfgbrca1cks7ihjslpvins91l58yzldh9"; }
-      { url = root + "krbpk.nbb.emd";
-        sha256 = "1v3j61j125i9hbmqm11ay2ng65djq55mwxfr5v8173whqjk9cjc5"; }
-      { url = root + "krbpk.nbw.emd";
-        sha256 = "1zvinpcr9mzm6jgicq6y6jfl6dsd7pyn648bfayszfgndyr2b125"; }
-      { url = root + "krk.nbb.emd";
-        sha256 = "042qliismf63y6vims4bg31lj1w9r2y45p32frqxgk79hvb567yv"; }
-      { url = root + "krk.nbw.emd";
-        sha256 = "1fam4n038dg4g1nc1zn55lyjagv4j4lkbq28rhiaz7mhj3z4r3zz"; }
-      { url = root + "krkb.nbb.emd";
-        sha256 = "0y44rbly8ggzjg2i5vhxibia551ii28dnpyzls3b74a6078zy0wy"; }
-      { url = root + "krkb.nbw.emd";
-        sha256 = "12bqs411yhv6k0b2jhil1l7hpk4cj3i8x0bcj168jnmikzhprvgq"; }
-      { url = root + "krkn.nbb.emd";
-        sha256 = "1wcghsgr9g09pbyhak1hyxw3rvfis6zplc3zgzx3qphp69rivk3k"; }
-      { url = root + "krkn.nbw.emd";
-        sha256 = "1jkwz4kjl91kxxascg21zj6c6qgx9s0k91jjbic6ybsmpv4wj4qc"; }
-      { url = root + "krkp.nbb.emd";
-        sha256 = "1jmaansnxspb7x2ka8y44vssgk78wfcrmdczj60zyzg1bj3n5fl8"; }
-      { url = root + "krkp.nbw.emd";
-        sha256 = "14yi4fsax0w9sd5bv463ajs6r4q0wxj3n19np9anc1zfvb3yk846"; }
-      { url = root + "krkr.nbb.emd";
-        sha256 = "12y29sgqhxcvilg089766nn14scy8b0dxmla1isjmgq9qb4yi9vy"; }
-      { url = root + "krkr.nbw.emd";
-        sha256 = "12y29sgqhxcvilg089766nn14scy8b0dxmla1isjmgq9qb4yi9vy"; }
-      { url = root + "krnk.nbb.emd";
-        sha256 = "0gvm4y8p5a9769nqhgnx6xj6nlldgrh75k3z8c8hj2xd9cyj01pp"; }
-      { url = root + "krnk.nbw.emd";
-        sha256 = "0p7j4x0xdq5krsvmj44qkcaqmww7rplrjdr08ix3jyjf31kk2x13"; }
-      { url = root + "krnkb.nbb.emd";
-        sha256 = "0w9gybr4i7d8zjpbbyg1m4263bx2gpmnh91vd0xmpwi0ykrxrl57"; }
-      { url = root + "krnkb.nbw.emd";
-        sha256 = "19wp8swng0q2wzxwx89km5fqlqfb4vcamky9h7pvas2sgh8frfmq"; }
-      { url = root + "krnkn.nbb.emd";
-        sha256 = "0g3b48symag31lcgbimpmmqsqdmihsr6g9k5a15l0mfkisfwadlf"; }
-      { url = root + "krnkn.nbw.emd";
-        sha256 = "1vryhaw1aj4bhv2ghb10zxyx930s2f4xqg7v9cxfnr9q5w2qv7xh"; }
-      { url = root + "krnkp.nbb.emd";
-        sha256 = "13b8vahj7hj4f12kiaigx1nphdrf8z30j68zav9n617kpf5s35i0"; }
-      { url = root + "krnkp.nbw.emd";
-        sha256 = "1qcnjwkg0pxp1hq4xws9dgq4bx6pxn0am3mcj1n837qcmv46mf7c"; }
-      { url = root + "krnkq.nbb.emd";
-        sha256 = "150d9z4v6fk16sdxq1w96gl2pl9nsf0jimy8kdgc8a19i1ab1rjc"; }
-      { url = root + "krnkq.nbw.emd";
-        sha256 = "13dn9hgk4i26axwymv0gvdkl0zr5shggvm5lpwa15gigmrva73bh"; }
-      { url = root + "krnkr.nbb.emd";
-        sha256 = "14ja7chmg7aklg6swlc3lpik4akj8zv3x2qppsip0vi3j05lnqyv"; }
-      { url = root + "krnkr.nbw.emd";
-        sha256 = "04qxh0kzk2p7m5zdrzg0faqva91qals4njnwf4vgfr65lmd4hyfn"; }
-      { url = root + "krnnk.nbb.emd";
-        sha256 = "1f35pqprkf1clx0mzzkgx9mn8ncqdiyc2cbxcp5a4x1kzli7zp34"; }
-      { url = root + "krnnk.nbw.emd";
-        sha256 = "16y28mqjl7fbl8rlwv51bn17sx0fpvfi0izyq1f5043l7fmpshfr"; }
-      { url = root + "krnpk.nbb.emd";
-        sha256 = "097rmr9zb550qn41kn11c15qp8l5582wqncg5li46iq9mfxcskiw"; }
-      { url = root + "krnpk.nbw.emd";
-        sha256 = "0hj3bhqvgdd64qa47irwx08nz4fqxhm0ddmpjq0jb757wlqw5f05"; }
-      { url = root + "krpk.nbb.emd";
-        sha256 = "1qz218amn2ii66g2fr2ifq6csr0n5n9ip9jcjxkxgpmawiwjhcm1"; }
-      { url = root + "krpk.nbw.emd";
-        sha256 = "19vh7k73gjyjwqzdpf0pv2i7zrqb2ns6a6r3n4jgwwd2n35inr1i"; }
-      { url = root + "krpkb.nbb.emd";
-        sha256 = "1y6kknnkb0ikk7az6syc3drhp4v3avpffa5pghpr2pm6i8xzx3nm"; }
-      { url = root + "krpkb.nbw.emd";
-        sha256 = "0fnbyhgjlnrnddkpbbyabyg31nmi61w9ra8ylicv6ysgyn4bcps4"; }
-      { url = root + "krpkn.nbb.emd";
-        sha256 = "08cn0pa6y1hxq7clgj70hdxm13a6zi9c8z2mmf3qgsjjkrj2wgc5"; }
-      { url = root + "krpkn.nbw.emd";
-        sha256 = "16ybnwl7sf832z546igrwclahhymp734dcg6rhrakxabrv0y144z"; }
-      { url = root + "krpkp.nbb.emd";
-        sha256 = "125qzj83kc5y5rx6jn078pjj6lph1gslmglx24n5n399382kllkn"; }
-      { url = root + "krpkp.nbw.emd";
-        sha256 = "1kbahpn99r37syb1yypabw55g4diwbp6q99nr6f6rn19wp0b44mk"; }
-      { url = root + "krpkq.nbb.emd";
-        sha256 = "1wsxy8ycz8l6wn6c58w4n0gdsdb8lik6b046q132qjw8mnn07gv1"; }
-      { url = root + "krpkq.nbw.emd";
-        sha256 = "0l8sg8sv6yy2wsrg7p9j2w5s61sd3jak09z1i347k0g0190m77m8"; }
-      { url = root + "krpkr.nbb.emd";
-        sha256 = "1mv4jcgkilsw3d4m879r2cwslz71v0rg5hwk9r6lhpg22qam3kz1"; }
-      { url = root + "krpkr.nbw.emd";
-        sha256 = "1nj906wq21h9xfzihc3wcp9s2bwgy7c68j4a6vlxq3zy1c8k53yx"; }
-      { url = root + "krppk.nbb.emd";
-        sha256 = "0x63qm3zwp70y3a33s29bv7lhg1vjnvi4gkxxgh6s0590y7s8pj4"; }
-      { url = root + "krppk.nbw.emd";
-        sha256 = "1z4nhf2gygbdgk6j3bdxhllx154ajkrrz3j0y715r20m0fxfl6x8"; }
-      { url = root + "krrbk.nbb.emd";
-        sha256 = "0gxam25i89sqmmmd781yyk2k2zyj76l9w9hngqkzagiz0fhh9ycz"; }
-      { url = root + "krrbk.nbw.emd";
-        sha256 = "1v7rfv5b4wjsgfy21fi3xyxbfj76mvkxhfz52612p4rnzp78bb56"; }
-      { url = root + "krrk.nbb.emd";
-        sha256 = "0ms9cjndxiflssymcx7aakf6bjwb5043nz5i4jvix89wvp6lgfa1"; }
-      { url = root + "krrk.nbw.emd";
-        sha256 = "18bh2y3v2ak6j1q1rlnkp02vijbbqr69i4cg1pvj943c83xz18l3"; }
-      { url = root + "krrkb.nbb.emd";
-        sha256 = "0hdr8v5bgybma3sdl8mk0v3msjvdva89zs1wd52m6jbdgwb5hzca"; }
-      { url = root + "krrkb.nbw.emd";
-        sha256 = "1g8bkyzq585az5rrglxd71ydj2fhhgqzdfmkgihbi7ncjym9kpw7"; }
-      { url = root + "krrkn.nbb.emd";
-        sha256 = "0bz8np2sqj8viwszx4jj9wxj774kv548pjzrmc6xh11p0sfjx3rj"; }
-      { url = root + "krrkn.nbw.emd";
-        sha256 = "1qf4d6zlvwlgrq0f732wafpznkqd3qnf7na4bgd4p1pb105ickg4"; }
-      { url = root + "krrkp.nbb.emd";
-        sha256 = "1kw434r77f61b5agly6lqkvn4b1rwssd511lcv16mvvf56xlqnb4"; }
-      { url = root + "krrkp.nbw.emd";
-        sha256 = "1yzqpp01gckk25zjy8j820y37m4vj6rgc6zpphwll45rn1ahwk0p"; }
-      { url = root + "krrkq.nbb.emd";
-        sha256 = "1ynhjzzmjpd6yw0d2w5xhlms3sqjc8gksfqgq3wmx7ym23wya2qq"; }
-      { url = root + "krrkq.nbw.emd";
-        sha256 = "01wil4pbcnrqynj1xpkglk2r36b36cz9gjr2g76rrz5xhdy5q8vj"; }
-      { url = root + "krrkr.nbb.emd";
-        sha256 = "0iyqadmpddy9i330nv1qrsjfkk2vlkxfxjphx3q349lplq6a9s16"; }
-      { url = root + "krrkr.nbw.emd";
-        sha256 = "1fg4byzzmjlzz8hs2vhpysmf8py9ylkf5pdw3rv88dxr4cp1wciq"; }
-      { url = root + "krrnk.nbb.emd";
-        sha256 = "1jb8rq7sy28c9wr7yih8w5bi8jbcf4xzf8sccanz32qxp0159f0h"; }
-      { url = root + "krrnk.nbw.emd";
-        sha256 = "17g7l0szgqczykjgxdhpihs5hh2snc35cy3hggnvah3j8bv6ksb4"; }
-      { url = root + "krrpk.nbb.emd";
-        sha256 = "1q7vk3pawab9nbpdn3cw2kf205yx6lznr6gkd9qbjj3754s9zswh"; }
-      { url = root + "krrpk.nbw.emd";
-        sha256 = "0wl23j0a67mm01655p4ivjrlsacvm7lxglhrg6cni61qkdqr6vqz"; }
-      { url = root + "krrrk.nbb.emd";
-        sha256 = "1ggm5q38wc65rkp87n5d2l71kcl7nqjkvwa31hmlagq2735vd0gd"; }
-      { url = root + "krrrk.nbw.emd";
-        sha256 = "1h7psv25a4wajg6ggk2q0cllf5mng4qjas3yi9nvi7kc766p85ax"; }
-    ]);
-
-  patches = [ ./strcpy.patch ./malloc.patch ];
-
   buildInputs = [ unzip ];
 
-  buildPhase =
-    if stdenv.isDarwin
-    then "make darwin"
-    else if stdenv.isLinux
-           then "make linux-amd64"
-           else "make";
+  unpackPhase = ''
+    mkdir "craftysrc"
+    unzip $src -d craftysrc
+    gunzip -c $startPgn > "craftysrc/start.pgn"
+  '';
+
+  buildPhase = ''
+    cd craftysrc
+    make unix-gcc
+  '';
 
   installPhase = ''
+    BUILDDIR="$PWD"
     mkdir -p $out/bin
     cp -p ./crafty $out/bin
 
     mkdir -p $out/share/crafty
     cd $out/share/crafty
 
-    $out/bin/crafty "books create ${startPgn} 60"
+    $out/bin/crafty "books create $BUILDDIR/start.pgn 60"
     rm -f *.001
 
-    ${if fullVariant then ''
-        unzip ${enormousPgn}
-        $out/bin/crafty "book create enormous.pgn 60"
-        rm -f *.001 enormous.pgn
-        
-        mkdir -p $out/share/crafty/TB
-        ${stdenv.lib.fold
-          (tb: acc: acc + "\nln -s "
-                        + toString tb
-                        + " $out/share/crafty/TB/`echo "
-                        + toString tb
-                        + " | sed 's/.*-//'`")
-          ""
-          tableBases345}
-      ''
-      else ''
-        cp -p ${bookBin} $out/share/crafty/book.bin
-      ''}
+    cp -p ${bookBin} $out/share/crafty/book.bin
 
     mv $out/bin/crafty $out/bin/.crafty-wrapped
+
     cat - > $out/bin/crafty <<EOF
     #! ${stdenv.shell}
-    exec $out/bin/.crafty-wrapped bookpath=$out/share/crafty ${stdenv.lib.optionalString fullVariant "egtb=on tbpath=$out/share/crafty/TB"} "\$@"
+    #
+    # The books are copied from share/crafty to ~/.crafty/books the first time
+    # this script is run. You can restore them at any time just copying them
+    # again.
+    if [[ ! -d "\$HOME/.crafty/books" ]]; then
+      mkdir "\$HOME/.crafty/books" -p
+      cp "$out/share/crafty/"book*.bin "\$HOME/.crafty/books"
+      chmod ug+w "\$HOME/.crafty/books/"*
+    fi
+    exec $out/bin/.crafty-wrapped bookpath=\$HOME/.crafty/books "\$@"
     EOF
     chmod +x $out/bin/crafty
   '';
diff --git a/pkgs/games/crafty/malloc.patch b/pkgs/games/crafty/malloc.patch
deleted file mode 100644
index 39b5afe8ddac..000000000000
--- a/pkgs/games/crafty/malloc.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/chess.h
-+++ b/chess.h
-@@ -25,7 +25,7 @@
- #include <assert.h>
- #include <stdlib.h>
- #if !defined(IPHONE)
--#  include <malloc.h>
-+#  include <sys/malloc.h>
- #endif
- #include <string.h>
- #if !defined(TYPES_INCLUDED)
diff --git a/pkgs/games/crafty/strcpy.patch b/pkgs/games/crafty/strcpy.patch
deleted file mode 100644
index d4d424d23dab..000000000000
--- a/pkgs/games/crafty/strcpy.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- a/utility.c
-+++ b/utility.c
-@@ -2144,7 +2144,7 @@ int ReadPGN(FILE * input, int option) {
-         char *skip;
- 
-         strcpy(temp, input_buffer);
--        skip = strstr(input_buffer, buffer) + strlen(buffer);
-+        skip = strstr(temp, buffer) + strlen(buffer);
-         if (skip)
-           strcpy(input_buffer, skip);
-       }
-@@ -2241,7 +2241,7 @@ int ReadPGN(FILE * input, int option) {
-             }
-           }
-           strcpy(temp, input_buffer);
--          skip = strstr(input_buffer, buffer) + strlen(buffer);
-+          skip = strstr(temp, buffer) + strlen(buffer);
-           strcpy(input_buffer, skip);
-       } else {
-         int skip;
-
diff --git a/pkgs/games/openclonk/default.nix b/pkgs/games/openclonk/default.nix
new file mode 100644
index 000000000000..91b9b6fbb6db
--- /dev/null
+++ b/pkgs/games/openclonk/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, cmake, gnome3, pcre, freetype, glew, gtk3, libjpeg, libpng,
+  SDL, SDL_mixer, libupnp, xorg, pkgconfig, gtest, tinyxml, gmock, readline,
+  libxkbcommon, epoxy, at_spi2_core, dbus, libxml2,
+  enableSoundtrack ? false # Enable the "Open Clonk Soundtrack - Explorers Journey" by David Oerther
+}:
+
+let
+  soundtrack_src = fetchurl {
+    url = "http://www.openclonk.org/download/Music.ocg";
+    sha256 = "1ckj0dlpp5zsnkbb5qxxfxpkiq76jj2fgj91fyf3ll7n0gbwcgw5";
+  };
+in stdenv.mkDerivation rec {
+  version = "7.0";
+  name = "openclonk-${version}";
+
+  src = fetchurl {
+    url = "http://www.openclonk.org/builds/release/7.0/openclonk-${version}-src.tar.bz2";
+    sha256 = "0ch71dqaaalg744pc1gvg6sj2yp2kgvy2m4yh6l7ljkpf8fj66mw";
+  };
+
+  postInstall = ''
+    mv -v $out/games/openclonk $out/bin/
+  '' + stdenv.lib.optionalString enableSoundtrack ''
+    cp -v ${soundtrack_src} $out/share/games/openclonk/Music.ocg
+  '';
+
+  enableParallelBuilding = true;
+
+  buildInputs = [
+    cmake gnome3.gtksourceview pcre freetype glew gtk3 libjpeg libpng SDL
+    SDL_mixer libupnp tinyxml xorg.libpthreadstubs libxkbcommon xorg.libXdmcp
+    pkgconfig gtest gmock readline epoxy at_spi2_core dbus libxml2
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Free multiplayer action game in which you control clonks, small but witty and nimble humanoid beings";
+    homepage = "http://openclonk.org";
+    license = if enableSoundtrack then licenses.unfreeRedistributable else licenses.isc;
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/games/opentyrian/default.nix b/pkgs/games/opentyrian/default.nix
index c435bbe5887f..c91f9807581e 100644
--- a/pkgs/games/opentyrian/default.nix
+++ b/pkgs/games/opentyrian/default.nix
@@ -1,21 +1,20 @@
-{stdenv, fetchhg, fetchurl, unzip, SDL, SDL_net}:
+{stdenv, fetchurl, fetchzip, SDL, SDL_net}:
 
 stdenv.mkDerivation rec {
   name = "opentyrian-${version}";
-  version = "0.0.955";
+  version = "2.1.20130907";
 
-  src = fetchhg {
-    url = "https://opentyrian.googlecode.com/hg/";
-    rev = "13ef8ce47362";
-    md5 = "95c8f9e7ff3d4207f1c692c7cec6c9b0";
+  src = fetchurl {
+    url = "https://bitbucket.org/opentyrian/opentyrian/get/${version}.tar.gz";
+    sha256 = "1jnrkq616pc4dhlbd4n30d65vmn25q84w6jfv9383l9q20cqf2ph";
   };
 
-  data = fetchurl {
+  data = fetchzip {
     url = http://sites.google.com/a/camanis.net/opentyrian/tyrian/tyrian21.zip;
-    md5 = "2a3b206a6de25ed4b771af073f8ca904";
+    sha256 = "1biz6hf6s7qrwn8ky0g6p8w7yg715w7yklpn6258bkks1s15hpdb";
   };
 
-  buildInputs = [SDL SDL_net unzip];
+  buildInputs = [SDL SDL_net];
 
   patchPhase = "
     substituteInPlace src/file.c --replace /usr/share $out/share
@@ -25,12 +24,12 @@ stdenv.mkDerivation rec {
     mkdir -p $out/bin
     cp ./opentyrian $out/bin
     mkdir -p $out/share/opentyrian/data
-    unzip -j $data -d $out/share/opentyrian/data
+    cp -r $data/* $out/share/opentyrian/data
   ";
 
   meta = {
     description = ''Open source port of the game "Tyrian"'';
-    homepage = https://opentyrian.googlecode.com/;
+    homepage = https://bitbucket.org/opentyrian/opentyrian;
     # This does not account of Tyrian data.
     # license = stdenv.lib.licenses.gpl2;
   };
diff --git a/pkgs/misc/emulators/fs-uae/default.nix b/pkgs/misc/emulators/fs-uae/default.nix
index 43ace9ca977e..f7d94bcad471 100644
--- a/pkgs/misc/emulators/fs-uae/default.nix
+++ b/pkgs/misc/emulators/fs-uae/default.nix
@@ -1,24 +1,18 @@
 { stdenv, fetchurl, pkgconfig
-, gettext, gtk2, SDL, zlib, glib, openal, mesa, lua, freetype }:
+, gettext, gtk2, SDL2, zlib, glib, openal, mesa, lua, freetype, libmpeg2, zip }:
 
 with stdenv.lib;
-stdenv.mkDerivation rec{
+stdenv.mkDerivation rec {
 
   name = "fs-uae-${version}";
-  version = "2.4.3";
+  version = "2.8.0";
 
   src = fetchurl {
-    urls = [ "http://fs-uae.net/fs-uae/stable/${version}/${name}.tar.gz" ];
-    sha256 = "05wngvpqj8kj4wzi5jzzhvs19iljb3m6ba1l2hk4rz68b400ndv6";
+    url = "http://fs-uae.net/fs-uae/stable/${version}/${name}.tar.gz";
+    sha256 = "1cvvlkzhh4rrpax7505bngw990rx86l1nhad174zpqc9ah93il25";
   };
 
-  buildInputs = [ pkgconfig gettext gtk2 SDL zlib glib openal mesa lua freetype ];
-
-  phases = "unpackPhase buildPhase installPhase";
-
-  # Strange: the docs recommend SDL2, but it does compile only with SDL1
-  buildPhase = "make sdl=1";
-  installPhase = "make install prefix=$out";
+  buildInputs = [ pkgconfig gettext gtk2 SDL2 zlib glib openal mesa lua freetype libmpeg2 zip ];
 
   meta = {
     description = "An accurate, customizable Amiga Emulator";
@@ -30,9 +24,8 @@ stdenv.mkDerivation rec{
     '';
     license = licenses.gpl2Plus;
     homepage = http://fs-uae.net;
-    maintainers = [ maintainers.AndersonTorres ];
+    maintainers = with stdenv.lib; [ maintainers.AndersonTorres ];
     platforms = stdenv.lib.platforms.linux;
   };
 }
 # TODO: testing and Python GUI support
-# TODO: SDL2 support
diff --git a/pkgs/misc/emulators/mgba/default.nix b/pkgs/misc/emulators/mgba/default.nix
index a38576dcbe45..7724d3d8d1bd 100644
--- a/pkgs/misc/emulators/mgba/default.nix
+++ b/pkgs/misc/emulators/mgba/default.nix
@@ -1,21 +1,20 @@
-{ stdenv, fetchgit
+{ stdenv, fetchFromGitHub
 , pkgconfig, cmake, libzip, epoxy, ffmpeg, imagemagick, SDL2
 , qtbase, qtmultimedia }:
 
 stdenv.mkDerivation rec {
-  name = "mgba-git-${version}";
-  version = "20160325";
+  name = "mgba-${version}";
+  version = "0.5.1";
 
-  src = fetchgit {
-    url = "https://github.com/mgba-emu/mgba.git";
-    rev = "be2641c77b4a438e0db487bc82b43bc27a26e0c2";
-    sha256 = "1wxywfbkgqvb0j9cyz4nwsfzhxrdjcmvz1k7rljmy4bz1pjcglj1";
+  src = fetchFromGitHub {
+    owner = "mgba-emu";
+    repo = "mgba";
+    rev = version;
+    sha256 = "1ysxyy888qdwjbgsh3xdzsx8f3a5yd1gqx54xvndpv9v3zqgr2jf";
   };
 
-  buildInputs = [
-    pkgconfig cmake libzip epoxy ffmpeg imagemagick SDL2
-    qtbase qtmultimedia
-  ];
+  nativeBuildInputs = [ pkgconfig cmake ];
+  buildInputs = [ libzip epoxy ffmpeg imagemagick SDL2 qtbase qtmultimedia ];
 
   meta = with stdenv.lib; {
     homepage = https://mgba.io;
diff --git a/pkgs/misc/emulators/zsnes/default.nix b/pkgs/misc/emulators/zsnes/default.nix
index 8ad0ca39b07c..02f93eb931d5 100644
--- a/pkgs/misc/emulators/zsnes/default.nix
+++ b/pkgs/misc/emulators/zsnes/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, fetchpatch, nasm, SDL, zlib, libpng, ncurses, mesa
+{stdenv, fetchFromGitHub, nasm, SDL, zlib, libpng, ncurses, mesa
 , makeDesktopItem }:
 
 let
@@ -15,35 +15,22 @@ let
 in stdenv.mkDerivation {
   name = "zsnes-1.51";
 
-  src = fetchurl {
-    url = mirror://sourceforge/zsnes/zsnes151src.tar.bz2;
-    sha256 = "08s64qsxziv538vmfv38fg1rfrz5k95dss5zdkbfxsbjlbdxwmi8";
+  src = fetchFromGitHub {
+    owner = "emillon";
+    repo = "zsnes";
+    rev = "fc160b2538738995f600f8405d23a66b070dac02";
+    sha256 = "1gy79d5wdaacph0cc1amw7mqm7i0716n6mvav16p1svi26iz193v";
   };
 
-  patches = [ (fetchpatch {
-                url = "https://raw.githubusercontent.com/emillon/zsnes/fc160b2538738995f600f8405d23a66b070dac02/debian/patches/0003-gcc-4.3-ftbfs.patch";
-                sha256 = "1rlqjxnx21iz03414bamqrpysaxbvmfacfnk111233yxjd4vhq89";
-              })
-              (fetchpatch {
-                url = "https://raw.githubusercontent.com/emillon/zsnes/fc160b2538738995f600f8405d23a66b070dac02/debian/patches/0009-hat-events.patch";
-                sha256 = "1az5vxjff22hqlsv0nmliax3ziwcr9kc75na805v9f66s8fmj5rf";
-              })
-              (fetchpatch {
-                url = "https://raw.githubusercontent.com/emillon/zsnes/fc160b2538738995f600f8405d23a66b070dac02/debian/patches/0010-Fix-build-with-libpng-1.5.patch";
-                sha256 = "1vjfraxjw6f496j3w8r581m3lbn16s0nx3hskzj14hl9ycfskhnr";
-              })
-              (fetchpatch {
-                url = "https://raw.githubusercontent.com/emillon/zsnes/fc160b2538738995f600f8405d23a66b070dac02/debian/patches/0012-Fix-build-with-gcc-4.7.patch";
-                sha256 = "1d8m0vxi8wf9z4wfjx2cc48p1wy2qadgvcm88dg1jncg334jwfrg";
-              })
-              (fetchpatch {
-                url = "https://raw.githubusercontent.com/emillon/zsnes/fc160b2538738995f600f8405d23a66b070dac02/debian/patches/zsnes-linux-resume-freeze-fix.patch";
-                sha256 = "0gvf6gsqxxfah1s80ya2l5yils2kv9xa6faajdyby7xipzkc6qc7";
-              })
-            ];
-
   buildInputs = [ nasm SDL zlib libpng ncurses mesa ];
 
+  prePatch = ''
+    for i in $(cat debian/patches/series); do
+      echo "applying $i"
+      patch -p1 < "debian/patches/$i"
+    done
+  '';
+
   preConfigure = ''
     cd src
     sed -i "/^STRIP/d" configure
diff --git a/pkgs/misc/themes/flat-plat/default.nix b/pkgs/misc/themes/flat-plat/default.nix
index da28f1892df1..342fc1277c9b 100644
--- a/pkgs/misc/themes/flat-plat/default.nix
+++ b/pkgs/misc/themes/flat-plat/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     description = "A Material Design-like flat theme for GTK3, GTK2, and GNOME Shell";
     homepage = https://github.com/nana-4/Flat-Plat;
-    licence = licenses.gpl2;
+    license = licenses.gpl2;
     maintainers = [ maintainers.mounium ];
     platforms = platforms.all;
   };
diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix
index 70d998db9594..d2eee8c2cac5 100644
--- a/pkgs/misc/vim-plugins/default.nix
+++ b/pkgs/misc/vim-plugins/default.nix
@@ -1341,6 +1341,17 @@ rec {
 
   };
 
+  Rename = buildVimPluginFrom2Nix { # created by nix#NixDerivation
+    name = "Rename-2011-08-30";
+    src = fetchgit {
+      url = "git://github.com/vim-scripts/Rename";
+      rev = "b240f28d2ede65fa77cd99fe045efe79202f7a34";
+      sha256 = "1d1myg4zyc281zcc1ba9idbgcgxndb4a0jwqr4yqxhhzdgszw46r";
+    };
+    dependencies = [];
+
+  };
+
   a-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
     name = "a-vim-2010-11-06";
     src = fetchgit {
diff --git a/pkgs/misc/vim-plugins/vim-plugin-names b/pkgs/misc/vim-plugins/vim-plugin-names
index 5777b5e4707b..1e04ab992212 100644
--- a/pkgs/misc/vim-plugins/vim-plugin-names
+++ b/pkgs/misc/vim-plugins/vim-plugin-names
@@ -2,6 +2,7 @@
 "CheckAttach"
 "Gist"
 "Hoogle"
+"Rename"
 "Solarized"
 "Supertab"
 "Syntastic"
diff --git a/pkgs/os-specific/darwin/apple-source-releases/libiconv/default.nix b/pkgs/os-specific/darwin/apple-source-releases/libiconv/default.nix
index bc514d617bd3..f5feee48e071 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/libiconv/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/libiconv/default.nix
@@ -2,4 +2,15 @@
 
 appleDerivation {
   preConfigure = "cd libiconv";
+
+  postInstall = ''
+    mv $out/lib/libiconv.dylib $out/lib/libiconv-nocharset.dylib
+    install_name_tool -id $out/lib/libiconv-nocharset.dylib $out/lib/libiconv-nocharset.dylib
+
+    # re-export one useless symbol; ld will reject a dylib that only reexports other dylibs
+    echo 'void dont_use_this(){}' | clang -dynamiclib -x c - -current_version 2.4.0 \
+      -compatibility_version 7.0.0 -current_version 7.0.0 -o $out/lib/libiconv.dylib \
+      -Wl,-reexport_library -Wl,$out/lib/libiconv-nocharset.dylib \
+      -Wl,-reexport_library -Wl,$out/lib/libcharset.dylib
+  '';
 }
diff --git a/pkgs/os-specific/linux/firmware/intel2200BGFirmware/default.nix b/pkgs/os-specific/linux/firmware/intel2200BGFirmware/default.nix
index bfcef1d9c1aa..c87023bf336d 100644
--- a/pkgs/os-specific/linux/firmware/intel2200BGFirmware/default.nix
+++ b/pkgs/os-specific/linux/firmware/intel2200BGFirmware/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation {
     description = "Firmware for Intel 2200BG cards";
     homepage = http://ipw2200.sourceforge.net/firmware.php;
     license = stdenv.lib.licenses.unfreeRedistributableFirmware;
-    maintainers = with maintainers; [ lukasepple ];
+    maintainers = with maintainers; [ sternenseemann ];
     platforms = with platforms; linux;
   };
 }
diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix
index d7dab32e2971..bdc243a149ec 100644
--- a/pkgs/os-specific/linux/kernel/common-config.nix
+++ b/pkgs/os-specific/linux/kernel/common-config.nix
@@ -284,6 +284,7 @@ with stdenv.lib;
   RANDOMIZE_BASE? y
   STRICT_DEVMEM y # Filter access to /dev/mem
   SECURITY_SELINUX_BOOTPARAM_VALUE 0 # Disable SELinux by default
+  SECURITY_YAMA? y # Prevent processes from ptracing non-children processes
   DEVKMEM n # Disable /dev/kmem
   ${if versionOlder version "3.14" then ''
     CC_STACKPROTECTOR? y # Detect buffer overflows on the stack
@@ -395,7 +396,7 @@ with stdenv.lib;
 
   # Linux containers.
   NAMESPACES? y #  Required by 'unshare' used by 'nixos-install'
-  RT_GROUP_SCHED? y
+  RT_GROUP_SCHED n
   CGROUP_DEVICE? y
   MEMCG y
   MEMCG_SWAP y
diff --git a/pkgs/os-specific/linux/kernel/linux-4.4.nix b/pkgs/os-specific/linux/kernel/linux-4.4.nix
index 04b759ae0e6b..246068f09ea4 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.4.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.4.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, perl, buildLinux, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "4.4.23";
+  version = "4.4.24";
   extraMeta.branch = "4.4";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "1ljvga8c6p3aww3jpi810rvf4m9qr1rjy8ya6s1xq07b08g5hpbk";
+    sha256 = "0yhs1742wrl0ip9wsayparjpr7vccljnhfjimgy4fjp3w6aync1k";
   };
 
   kernelPatches = args.kernelPatches;
diff --git a/pkgs/os-specific/linux/kernel/linux-4.7.nix b/pkgs/os-specific/linux/kernel/linux-4.7.nix
index f08d594a3957..139ae20d8c96 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.7.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.7.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, perl, buildLinux, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "4.7.6";
+  version = "4.7.7";
   extraMeta.branch = "4.7";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "1lidsc85xc025a46pyjimcr1xcwv7mh59jihmnqihfnwqch6albv";
+    sha256 = "079gvv91a0mymzxx1h9bbn4snk6xz0cyk1bf8pjkhdyyad90v17d";
   };
 
   kernelPatches = args.kernelPatches;
diff --git a/pkgs/os-specific/linux/kernel/linux-4.8.nix b/pkgs/os-specific/linux/kernel/linux-4.8.nix
index 5c2112686235..d7164d729402 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.8.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.8.nix
@@ -1,13 +1,12 @@
 { stdenv, fetchurl, perl, buildLinux, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "4.8";
-  modDirVersion = "4.8.0";
+  version = "4.8.1";
   extraMeta.branch = "4.8";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "3e9150065f193d3d94bcf46a1fe9f033c7ef7122ab71d75a7fb5a2f0c9a7e11a";
+    sha256 = "0rcqgi91jz5iyx1nrd4qjmvh0sgqjpqj94bwjh56c21nkxxiahg6";
   };
 
   kernelPatches = args.kernelPatches;
diff --git a/pkgs/os-specific/linux/kernel/linux-grsecurity.nix b/pkgs/os-specific/linux/kernel/linux-grsecurity.nix
index f08d594a3957..139ae20d8c96 100644
--- a/pkgs/os-specific/linux/kernel/linux-grsecurity.nix
+++ b/pkgs/os-specific/linux/kernel/linux-grsecurity.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, perl, buildLinux, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "4.7.6";
+  version = "4.7.7";
   extraMeta.branch = "4.7";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "1lidsc85xc025a46pyjimcr1xcwv7mh59jihmnqihfnwqch6albv";
+    sha256 = "079gvv91a0mymzxx1h9bbn4snk6xz0cyk1bf8pjkhdyyad90v17d";
   };
 
   kernelPatches = args.kernelPatches;
diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix
index 0a577bb4e316..29d622cd3c38 100644
--- a/pkgs/os-specific/linux/kernel/patches.nix
+++ b/pkgs/os-specific/linux/kernel/patches.nix
@@ -86,9 +86,9 @@ rec {
   };
 
   grsecurity_testing = grsecPatch
-    { kver   = "4.7.6";
-      grrev  = "201609301918";
-      sha256 = "153x97vvd3jl2i7fs6d5ilqnmz2v2iyzsf3pg3frrackv6xaisa5";
+    { kver   = "4.7.7";
+      grrev  = "201610101902";
+      sha256 = "18x8grxj03bh9gqlm3sfgjl8vy5gpyrjr8nmdnrnas6ycmbvyjx4";
     };
 
   # This patch relaxes grsec constraints on the location of usermode helpers,
diff --git a/pkgs/os-specific/linux/kernel/perf.nix b/pkgs/os-specific/linux/kernel/perf.nix
index 69a951875a53..9e5724984576 100644
--- a/pkgs/os-specific/linux/kernel/perf.nix
+++ b/pkgs/os-specific/linux/kernel/perf.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, kernel, elfutils, python, perl, newt, slang, asciidoc, xmlto
 , docbook_xsl, docbook_xml_dtd_45, libxslt, flex, bison, pkgconfig, libunwind, binutils
-, libiberty
+, libiberty, libaudit
 , zlib, withGtk ? false, gtk2 ? null }:
 
 with lib;
@@ -24,7 +24,7 @@ stdenv.mkDerivation {
   # perf refers both to newt and slang
   # binutils is required for libbfd.
   nativeBuildInputs = [ asciidoc xmlto docbook_xsl docbook_xml_dtd_45 libxslt
-      flex bison libiberty ];
+      flex bison libiberty libaudit ];
   buildInputs = [ elfutils python perl newt slang pkgconfig libunwind binutils zlib ] ++
     stdenv.lib.optional withGtk gtk2;
 
diff --git a/pkgs/os-specific/linux/kmod/aggregator.nix b/pkgs/os-specific/linux/kmod/aggregator.nix
index 88069ba4bf13..9bd7c8480c1c 100644
--- a/pkgs/os-specific/linux/kmod/aggregator.nix
+++ b/pkgs/os-specific/linux/kmod/aggregator.nix
@@ -17,10 +17,12 @@ buildEnv {
 
       echo "kernel version is $kernelVersion"
 
+      shopt -s extglob
+
       # Regenerate the depmod map files.  Be sure to pass an explicit
       # kernel version number, otherwise depmod will use `uname -r'.
       if test -w $out/lib/modules/$kernelVersion; then
-          rm -f $out/lib/modules/$kernelVersion/modules.*
+          rm -f $out/lib/modules/$kernelVersion/modules.!(builtin*|order*)
           ${kmod}/bin/depmod -b $out -a $kernelVersion
       fi
     '';
diff --git a/pkgs/os-specific/linux/rtkit/default.nix b/pkgs/os-specific/linux/rtkit/default.nix
index 3284dfcb88ba..dd6f9ec42afa 100644
--- a/pkgs/os-specific/linux/rtkit/default.nix
+++ b/pkgs/os-specific/linux/rtkit/default.nix
@@ -13,10 +13,17 @@ stdenv.mkDerivation rec {
   ];
 
   patches = [
+    # Drop removed ControlGroup stanza
     (fetchpatch {
-      url = "https://anonscm.debian.org/cgit/pkg-multimedia/rtkit.git/plain/debian/patches/0002-Drop-Removed-ControlGroup-stanza.patch?id=21f2c6be6985c777cbf113c67043353406744050";
+      url = "http://git.0pointer.net/rtkit.git/patch/?id=6c28e20c0be2f616a025059fda0ffac84e7f4f17";
       sha256 = "0lsxk5nv08i1wjb4xh20i5fcwg3x0qq0k4f8bc0r9cczph2sv7ck";
     })
+
+    # security patch: Pass uid of caller to polkit
+    (fetchpatch {
+      url = "http://git.0pointer.net/rtkit.git/patch/?id=88d4082ef6caf6b071d749dca1c50e7edde914cc";
+      sha256 = "0hp1blbi359qz8fmr6nj4w9yc0jf3dd176f8pn25wdj38n13qkix";
+    })
   ];
 
   buildInputs = [ pkgconfig dbus libcap ];
diff --git a/pkgs/servers/dns/bind/default.nix b/pkgs/servers/dns/bind/default.nix
index 309b033bca25..e55b3eeb18b9 100644
--- a/pkgs/servers/dns/bind/default.nix
+++ b/pkgs/servers/dns/bind/default.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     sha256 = "1vxs29w4hnl7jcd7sknga58xv1qk2rcpsxyich7cpp7xi77faxd0";
   };
 
-  outputs = [ "bin" "dev" "out" "man" ];
+  outputs = [ "bin" "lib" "dev" "out" "man" "dnsutils" "host" ];
 
   patches = [ ./dont-keep-configure-flags.patch ./remove-mkdir-var.patch ] ++
     stdenv.lib.optional stdenv.isDarwin ./darwin-openssl-linking-fix.patch;
@@ -40,6 +40,15 @@ stdenv.mkDerivation rec {
     moveToOutput bin/bind9-config $dev
     moveToOutput bin/isc-config.sh $dev
 
+    moveToOutput bin/host $host
+    ln -sf $host/bin/host $bin/bin
+
+    moveToOutput bin/dig $dnsutils
+    moveToOutput bin/nslookup $dnsutils
+    moveToOutput bin/nsupdate $dnsutils
+    ln -sf $dnsutils/bin/{dig,nslookup,nsupdate} $bin/bin
+    ln -sf $host/bin/host $dnsutils/bin
+
     for f in "$out/lib/"*.la; do
       sed -i $f -e 's|-L${openssl.dev}|-L${openssl.out}|g'
     done
diff --git a/pkgs/servers/kippo/default.nix b/pkgs/servers/kippo/default.nix
index 51630b4231ce..2e2923e17c39 100644
--- a/pkgs/servers/kippo/default.nix
+++ b/pkgs/servers/kippo/default.nix
@@ -25,16 +25,48 @@
 #
 # Use this package at your own risk.
 
-{stdenv, pkgs, config, fetchurl, ... }:
+{stdenv, fetchurl, pythonPackages }:
 
-stdenv.mkDerivation rec {
+let
+
+  twisted_13 = pythonPackages.buildPythonPackage rec {
+    # NOTE: When updating please check if new versions still cause issues
+    # to packages like carbon (http://stackoverflow.com/questions/19894708/cant-start-carbon-12-04-python-error-importerror-cannot-import-name-daem)
+    disabled = pythonPackages.isPy3k;
+
+    name = "Twisted-13.2.0";
+    src = fetchurl {
+      url = "mirror://pypi/T/Twisted/${name}.tar.bz2";
+      sha256 = "1wrcqv5lvgwk2aq83qb2s2ng2vx14hbjjk2gc30cg6h1iiipal89";
+    };
+
+    propagatedBuildInputs = with pythonPackages; [ zope_interface ];
+
+    # Generate Twisted's plug-in cache.  Twited users must do it as well.  See
+    # http://twistedmatrix.com/documents/current/core/howto/plugin.html#auto3
+    # and http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477103 for
+    # details.
+    postInstall = "$out/bin/twistd --help > /dev/null";
+
+    meta = with stdenv.lib; {
+      homepage = http://twistedmatrix.com/;
+      description = "Twisted, an event-driven networking engine written in Python";
+      longDescription = ''
+        Twisted is an event-driven networking engine written in Python
+        and licensed under the MIT license.
+      '';
+      license = licenses.mit;
+    };
+  };
+
+in stdenv.mkDerivation rec {
     name = "kippo-${version}";
     version = "0.8";
     src = fetchurl {
       url = "https://kippo.googlecode.com/files/kippo-${version}.tar.gz";
       sha1 = "f57a5cf88171cb005afe44a4b33cb16f825c33d6";
     };
-    buildInputs = with pkgs.pythonPackages; [ pycrypto pyasn1 twisted_11 ];
+    buildInputs = with pythonPackages; [ pycrypto pyasn1 twisted_13 ];
     installPhase = ''
         substituteInPlace ./kippo.tac --replace "kippo.cfg" "$out/src/kippo.cfg"
         substituteInPlace ./kippo.cfg --replace "log_path = log" "log_path = /var/log/kippo" \
@@ -51,6 +83,8 @@ stdenv.mkDerivation rec {
         mv $out/src/utils/* $out/bin
         '';
 
+    passthru.twisted = twisted_13;
+
     meta = with stdenv.lib; {
       homepage = https://code.google.com/p/kippo;
       description = "SSH Honeypot";
diff --git a/pkgs/servers/nosql/cassandra/generic.nix b/pkgs/servers/nosql/cassandra/generic.nix
index 5e364ba3e689..7541f76b40e1 100644
--- a/pkgs/servers/nosql/cassandra/generic.nix
+++ b/pkgs/servers/nosql/cassandra/generic.nix
@@ -4,7 +4,13 @@
 
 let
   libPath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc ];
-  binPath = stdenv.lib.makeBinPath [ bash getopt gawk procps which jre ];
+  binPath = with stdenv.lib; makeBinPath ([
+    bash
+    getopt
+    gawk
+    which
+    jre
+  ] ++ stdenv.lib.optional stdenv.isLinux procps);
 in
 
 stdenv.mkDerivation rec {
@@ -42,7 +48,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = http://cassandra.apache.org/;
     description = "A massively scalable open source NoSQL database";
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     license = licenses.asl20;
     maintainers = with maintainers; [ nckx rushmorem cransom ];
   };
diff --git a/pkgs/servers/nosql/influxdb/deps-1.0.0-beta3.nix b/pkgs/servers/nosql/influxdb/deps-1.0.0-beta3.nix
deleted file mode 100644
index 016e7a1624d9..000000000000
--- a/pkgs/servers/nosql/influxdb/deps-1.0.0-beta3.nix
+++ /dev/null
@@ -1,155 +0,0 @@
-[
-{
-  goPackagePath = "collectd.org";
-  fetch = {
-    type = "git";
-    url = "https://github.com/collectd/go-collectd.git";
-    rev = "9fc824c70f713ea0f058a07b49a4c563ef2a3b98";
-    sha256 = "0kjal6bsjpnppfnlqbg7g56xwssaj2ani499yykyj817zq56hi0w";
-  };
-}
-{
-  goPackagePath = "github.com/BurntSushi/toml";
-  fetch = {
-    type = "git";
-    url = "https://github.com/BurntSushi/toml.git";
-    rev = "a4eecd407cf4129fc902ece859a0114e4cf1a7f4";
-    sha256 = "1l74zvd534k2fs73gmaq4mgl48p1i9559k1gwq4vakca727z5sgf";
-  };
-}
-{
-  goPackagePath = "github.com/bmizerany/pat";
-  fetch = {
-    type = "git";
-    url = "https://github.com/bmizerany/pat.git";
-    rev = "b8a35001b773c267eb260a691f4e5499a3531600";
-    sha256 = "11zxd45rvjm6cn3wzbi18wy9j4vr1r1hgg6gzlqnxffiizkycxmz";
-  };
-}
-{
-  goPackagePath = "github.com/boltdb/bolt";
-  fetch = {
-    type = "git";
-    url = "https://github.com/boltdb/bolt.git";
-    rev = "2f846c3551b76d7710f159be840d66c3d064abbe";
-    sha256 = "0cvpcgmzlrn87jqrflwf4pciz6i25ri1r83sq7v1z9zry1ah16r5";
-  };
-}
-{
-  goPackagePath = "github.com/davecgh/go-spew";
-  fetch = {
-    type = "git";
-    url = "https://github.com/davecgh/go-spew.git";
-    rev = "fc32781af5e85e548d3f1abaf0fa3dbe8a72495c";
-    sha256 = "1dwwd4va0qnyr256i7n8d4g24d7yyvwd0975y6v4dy06qpwir232";
-  };
-}
-{
-  goPackagePath = "github.com/dgrijalva/jwt-go";
-  fetch = {
-    type = "git";
-    url = "https://github.com/dgrijalva/jwt-go.git";
-    rev = "a2c85815a77d0f951e33ba4db5ae93629a1530af";
-    sha256 = "1m7011hdr4qa400awbdagj2m5zwfbvhinq8p5hq7ysn14xpaq5vw";
-  };
-}
-{
-  goPackagePath = "github.com/dgryski/go-bits";
-  fetch = {
-    type = "git";
-    url = "https://github.com/dgryski/go-bits.git";
-    rev = "86c69b3c986f9d40065df5bd8f765796549eef2e";
-    sha256 = "08i3p8lcisr88gmwvi8qdc8bgksxh5ydjspgfbi4aba9msybp78b";
-  };
-}
-{
-  goPackagePath = "github.com/dgryski/go-bitstream";
-  fetch = {
-    type = "git";
-    url = "https://github.com/dgryski/go-bitstream.git";
-    rev = "27cd5973303fde7d914860be1ea4b927a6be0c92";
-    sha256 = "12ji4vcfy0cz12yq43cz0w1f1k4c1kg0vwpsk1iy47kc38kzdkc6";
-  };
-}
-{
-  goPackagePath = "github.com/gogo/protobuf";
-  fetch = {
-    type = "git";
-    url = "https://github.com/gogo/protobuf.git";
-    rev = "74b6e9deaff6ba6da1389ec97351d337f0d08b06";
-    sha256 = "0045fz4bx72rikm2ggx9j1h3yrq518299qwaizrgy5jvxzj1707b";
-  };
-}
-{
-  goPackagePath = "github.com/golang/snappy";
-  fetch = {
-    type = "git";
-    url = "https://github.com/golang/snappy.git";
-    rev = "5979233c5d6225d4a8e438cdd0b411888449ddab";
-    sha256 = "0i0pvwc2a4xgsns6mr3xbc6p0sra34qsaagd7yf7v1as0z7ydl3s";
-  };
-}
-{
-  goPackagePath = "github.com/influxdata/usage-client";
-  fetch = {
-    type = "git";
-    url = "https://github.com/influxdata/usage-client.git";
-    rev = "475977e68d79883d9c8d67131c84e4241523f452";
-    sha256 = "0yhywablqqpd2x70rax1kf7yaw1jpvrc2gks8360cwisda57d3qy";
-  };
-}
-{
-  goPackagePath = "github.com/jwilder/encoding";
-  fetch = {
-    type = "git";
-    url = "https://github.com/jwilder/encoding.git";
-    rev = "b421ab402545ef5a119f4f827784c6551d9bfc37";
-    sha256 = "0sjz2cl8kpni0mh0y4269k417dj06gn2y0ppi25i3wh9p4j4i4fq";
-  };
-}
-{
-  goPackagePath = "github.com/kimor79/gollectd";
-  fetch = {
-    type = "git";
-    url = "https://github.com/kimor79/gollectd.git";
-    rev = "61d0deeb4ffcc167b2a1baa8efd72365692811bc";
-    sha256 = "0als2v4d5hlw0sqam670p3fi471ikgl3l81bp31mf3s3jssdxwfs";
-  };
-}
-{
-  goPackagePath = "github.com/paulbellamy/ratecounter";
-  fetch = {
-    type = "git";
-    url = "https://github.com/paulbellamy/ratecounter.git";
-    rev = "5a11f585a31379765c190c033b6ad39956584447";
-    sha256 = "137p62imi91zhkjcjigdd64n7f9z6djjpsxcyifgrcxs41jj9ra0";
-  };
-}
-{
-  goPackagePath = "github.com/peterh/liner";
-  fetch = {
-    type = "git";
-    url = "https://github.com/peterh/liner.git";
-    rev = "82a939e738b0ee23e84ec7a12d8e216f4d95c53f";
-    sha256 = "1187c1rqmh9k9ap5bz3p9hbjp3ad5hysykh58kgv5clah1jbkg04";
-  };
-}
-{
-  goPackagePath = "github.com/rakyll/statik";
-  fetch = {
-    type = "git";
-    url = "https://github.com/rakyll/statik.git";
-    rev = "274df120e9065bdd08eb1120e0375e3dc1ae8465";
-    sha256 = "0llk7bxmk66wdiy42h32vj1jfk8zg351xq21hwhrq7gkfljghffp";
-  };
-}
-{
-  goPackagePath = "golang.org/x/crypto";
-  fetch = {
-    type = "git";
-    url = "https://github.com/golang/crypto.git";
-    rev = "1f22c0103821b9390939b6776727195525381532";
-    sha256 = "1acy12f396sr3lrnbcnym5q72qnlign5bagving41qijzjnc219m";
-  };
-}
-]
diff --git a/pkgs/servers/nosql/influxdb/deps-1.0.2.nix b/pkgs/servers/nosql/influxdb/deps-1.0.2.nix
new file mode 100644
index 000000000000..f1c8103db331
--- /dev/null
+++ b/pkgs/servers/nosql/influxdb/deps-1.0.2.nix
@@ -0,0 +1,164 @@
+[
+  {
+    goPackagePath= "collectd.org";
+    fetch= {
+      type= "git";
+      url= "https://github.com/collectd/go-collectd.git";
+      rev= "9fc824c70f713ea0f058a07b49a4c563ef2a3b98";
+      sha256= "0kjal6bsjpnppfnlqbg7g56xwssaj2ani499yykyj817zq56hi0w";
+    };
+  }
+  {
+    goPackagePath= "github.com/BurntSushi/toml";
+    fetch= {
+      type= "git";
+      url= "https://github.com/BurntSushi/toml.git";
+      rev= "99064174e013895bbd9b025c31100bd1d9b590ca";
+      sha256= "058qrar8rvw3wb0ci1mf1axnqq2729cvv9zmdr4ms2nn9s97yiz9";
+    };
+  }
+  {
+    goPackagePath= "github.com/bmizerany/pat";
+    fetch= {
+      type= "git";
+      url= "https://github.com/bmizerany/pat.git";
+      rev= "c068ca2f0aacee5ac3681d68e4d0a003b7d1fd2c";
+      sha256= "02ayddkp2b22rixw5jldw3kb6762zzkg5zhxwcv9v9yp0x39qw6r";
+    };
+  }
+  {
+    goPackagePath= "github.com/boltdb/bolt";
+    fetch= {
+      type= "git";
+      url= "https://github.com/boltdb/bolt.git";
+      rev= "5cc10bbbc5c141029940133bb33c9e969512a698";
+      sha256= "0m3icjqymqr9hmsss61fl9lmvspq8kv0bhynkqfwpdgc9wbb1a4n";
+    };
+  }
+  {
+    goPackagePath= "github.com/davecgh/go-spew";
+    fetch= {
+      type= "git";
+      url= "https://github.com/davecgh/go-spew.git";
+      rev= "5215b55f46b2b919f50a1df0eaa5886afe4e3b3d";
+      sha256= "15h9kl73rdbzlfmsdxp13jja5gs7sknvqkpq2qizq3qv3nr1x8dk";
+    };
+  }
+  {
+    goPackagePath= "github.com/dgrijalva/jwt-go";
+    fetch= {
+      type= "git";
+      url= "https://github.com/dgrijalva/jwt-go.git";
+      rev= "9b486c879bab3fde556ce8c27d9a2bb05d5b2c60";
+      sha256= "0rpinzvbhdy27b1rs7yxwsiqp5j5yd4lw8kbyrd0f5z2q1frchk3";
+    };
+  }
+  {
+    goPackagePath= "github.com/dgryski/go-bits";
+    fetch= {
+      type= "git";
+      url= "https://github.com/dgryski/go-bits.git";
+      rev= "2ad8d707cc05b1815ce6ff2543bb5e8d8f9298ef";
+      sha256= "08mxwa4c77dgpvz2ygwd0pc929qxwff95y680mjjgbvj8yifiag2";
+    };
+  }
+  {
+    goPackagePath= "github.com/dgryski/go-bitstream";
+    fetch= {
+      type= "git";
+      url= "https://github.com/dgryski/go-bitstream.git";
+      rev= "7d46cd22db7004f0cceb6f7975824b560cf0e486";
+      sha256= "1k9l16y7l2mkfvnp2ydv9cqly8179wqd20am4zy0q77qcsawkksx";
+    };
+  }
+  {
+    goPackagePath= "github.com/gogo/protobuf";
+    fetch= {
+      type= "git";
+      url= "https://github.com/gogo/protobuf.git";
+      rev= "6abcf94fd4c97dcb423fdafd42fe9f96ca7e421b";
+      sha256= "0w5ln92b57mnc26jwm3bsa320gzgis78l2x9bhrbfs99d45079rf";
+    };
+  }
+  {
+    goPackagePath= "github.com/golang/snappy";
+    fetch= {
+      type= "git";
+      url= "https://github.com/golang/snappy.git";
+      rev= "d9eb7a3d35ec988b8585d4a0068e462c27d28380";
+      sha256= "0wynarlr1y8sm9y9l29pm9dgflxriiialpwn01066snzjxnpmbyn";
+    };
+  }
+  {
+    goPackagePath= "github.com/influxdata/usage-client";
+    fetch= {
+      type= "git";
+      url= "https://github.com/influxdata/usage-client.git";
+      rev= "475977e68d79883d9c8d67131c84e4241523f452";
+      sha256= "0yhywablqqpd2x70rax1kf7yaw1jpvrc2gks8360cwisda57d3qy";
+    };
+  }
+  {
+    goPackagePath= "github.com/jwilder/encoding";
+    fetch= {
+      type= "git";
+      url= "https://github.com/jwilder/encoding.git";
+      rev= "ac74639f65b2180a2e5eb5ff197f0c122441aed0";
+      sha256= "1zp0l4wlb8ngz8bsgzf2rhxfd0n3qj6149yjwwpwpj3mzz5rvspi";
+    };
+  }
+  {
+    goPackagePath= "github.com/kimor79/gollectd";
+    fetch= {
+      type= "git";
+      url= "https://github.com/kimor79/gollectd.git";
+      rev= "61d0deeb4ffcc167b2a1baa8efd72365692811bc";
+      sha256= "0als2v4d5hlw0sqam670p3fi471ikgl3l81bp31mf3s3jssdxwfs";
+    };
+  }
+  {
+    goPackagePath= "github.com/paulbellamy/ratecounter";
+    fetch= {
+      type= "git";
+      url= "https://github.com/paulbellamy/ratecounter.git";
+      rev= "5a11f585a31379765c190c033b6ad39956584447";
+      sha256= "137p62imi91zhkjcjigdd64n7f9z6djjpsxcyifgrcxs41jj9ra0";
+    };
+  }
+  {
+    goPackagePath= "github.com/peterh/liner";
+    fetch= {
+      type= "git";
+      url= "https://github.com/peterh/liner.git";
+      rev= "8975875355a81d612fafb9f5a6037bdcc2d9b073";
+      sha256= "17l7p6lxhlnna1w1drgh7g8afxcxxd5j472givm2g7l9v8yg4f17";
+    };
+  }
+  {
+    goPackagePath= "github.com/rakyll/statik";
+    fetch= {
+      type= "git";
+      url= "https://github.com/rakyll/statik.git";
+      rev= "274df120e9065bdd08eb1120e0375e3dc1ae8465";
+      sha256= "0llk7bxmk66wdiy42h32vj1jfk8zg351xq21hwhrq7gkfljghffp";
+    };
+  }
+  {
+    goPackagePath= "github.com/retailnext/hllpp";
+    fetch= {
+      type= "git";
+      url= "https://github.com/retailnext/hllpp.git";
+      rev= "38a7bb71b483e855d35010808143beaf05b67f9d";
+      sha256= "0zpq5yjqprzdw9ll6g9sqp8nzwkhjh4ngzhx5mxahmpajgnzz7a8";
+    };
+  }
+  {
+    goPackagePath= "golang.org/x/crypto";
+    fetch= {
+      type= "git";
+      url= "https://github.com/golang/crypto.git";
+      rev= "c197bcf24cde29d3f73c7b4ac6fd41f4384e8af6";
+      sha256= "1y2bbghi594m8p4pcm9pwrzql06179xj6zvhaghwcc6y0l48rbgp";
+    };
+  }
+]
diff --git a/pkgs/servers/nosql/influxdb/v1.nix b/pkgs/servers/nosql/influxdb/v1.nix
index f50d38180e94..57d62a596e3f 100644
--- a/pkgs/servers/nosql/influxdb/v1.nix
+++ b/pkgs/servers/nosql/influxdb/v1.nix
@@ -2,12 +2,12 @@
 
 import ./default.nix (args // rec {
   
-  version = "1.0.0-beta3";
+  version = "1.0.2";
 
   src = fetchFromGitHub {
     owner = "influxdata";
     repo = "influxdb";
     rev = "v${version}";
-    sha256 = "1hj9wl2bfd1llc11jrv8bq18wl2y9n6fl3w6052wb530j7gsivsq";
+    sha256 = "0z8y995gm2hpxny7l5nx5fjc5c26hfgvghwmzva8d1mrlnapcsyc";
   };
 }) 
diff --git a/pkgs/servers/unifi/default.nix b/pkgs/servers/unifi/default.nix
index 56880b5b8692..0ea5dfd1a0d3 100644
--- a/pkgs/servers/unifi/default.nix
+++ b/pkgs/servers/unifi/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "unifi-controller-${version}";
-  version = "5.0.6";
+  version = "5.2.9";
 
   src = fetchurl {
     url = "https://dl.ubnt.com/unifi/${version}/UniFi.unix.zip";
-    sha256 = "0splrxgh1ppxnf4nynawbn8mwywqsvaib7m60wgnz4inpxhp3pp8";
+    sha256 = "1521c5jdk5s4r57i7ajzdfq2l4fmvylqlhvddnxllqm6s4yij7fk";
   };
 
   buildInputs = [ unzip ];
diff --git a/pkgs/servers/web-apps/pump.io/composition.nix b/pkgs/servers/web-apps/pump.io/composition.nix
new file mode 100644
index 000000000000..36815198d67b
--- /dev/null
+++ b/pkgs/servers/web-apps/pump.io/composition.nix
@@ -0,0 +1,16 @@
+# This file has been generated by node2nix 1.1.0. Do not edit!
+
+{pkgs ? import <nixpkgs> {
+    inherit system;
+  }, system ? builtins.currentSystem, nodejs ? pkgs."nodejs"}:
+
+let
+  nodeEnv = import ../../../development/node-packages/node-env.nix {
+    inherit (pkgs) stdenv python utillinux runCommand writeTextFile;
+    inherit nodejs;
+  };
+in
+import ./node-packages.nix {
+  inherit (pkgs) fetchurl fetchgit;
+  inherit nodeEnv;
+}
\ No newline at end of file
diff --git a/pkgs/servers/web-apps/pump.io/default.nix b/pkgs/servers/web-apps/pump.io/default.nix
index 2d3765936623..f888566cad66 100644
--- a/pkgs/servers/web-apps/pump.io/default.nix
+++ b/pkgs/servers/web-apps/pump.io/default.nix
@@ -1,34 +1,19 @@
-{ stdenv, fetchFromGitHub, makeWrapper, callPackage, nodejs, python, utillinux, graphicsmagick }:
+{ pkgs, system, stdenv, fetchurl, makeWrapper, nodejs, graphicsmagick }:
 
 with stdenv.lib;
 
 let
-  nodePackages = callPackage (import ../../../top-level/node-packages.nix) {
-    inherit stdenv nodejs fetchurl fetchgit;
-    neededNatives = [ python ] ++ optional stdenv.isLinux utillinux;
-    self = nodePackages;
-    generated = ./node-packages.nix;
+  # To regenerate composition.nix, run generate.sh.
+  nodePackages = import ./composition.nix {
+    inherit pkgs system nodejs;
   };
-
-in nodePackages.buildNodePackage rec {
-  version = "git-2015-11-09";
-  name = "pump.io-${version}";
-
-  src = fetchFromGitHub {
-    owner = "e14n";
-    repo = "pump.io";
-    rev = "2f8d6b3518607ed02b594aee0db6ccacbe631b2d";
-    sha256 = "1xym3jzpxlni1n2i0ixwrnpkx5fbnd1p6sm1hf9n3w5m2lx6gdw5";
-  };
-
-  deps = (filter (v: nixType v == "derivation") (attrValues nodePackages));
-
-  buildInputs = [ makeWrapper ];
+in
+nodePackages.package.override (oldAttrs: {
+  buildInputs = oldAttrs.buildInputs ++ [ makeWrapper ];
 
   postInstall = ''
     for prog in pump pump-authorize pump-follow pump-post-note pump-register-app pump-register-user pump-stop-following; do
       wrapProgram "$out/bin/$prog" \
-        --set NODE_PATH "$out/lib/node_modules/pump.io/node_modules/" \
         --prefix PATH : ${graphicsmagick}/bin:$out/bin
     done
   '';
@@ -65,4 +50,4 @@ in nodePackages.buildNodePackage rec {
       * Experimenting with social software
     '';
   };
-}
+})
diff --git a/pkgs/servers/web-apps/pump.io/generate.sh b/pkgs/servers/web-apps/pump.io/generate.sh
new file mode 100755
index 000000000000..51e05ce37d6b
--- /dev/null
+++ b/pkgs/servers/web-apps/pump.io/generate.sh
@@ -0,0 +1,29 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p nodePackages.node2nix curl jshon
+
+set -e
+
+# Normally, this node2nix invocation would be sufficient:
+#   exec node2nix --input node-packages.json --composition composition.nix
+#
+# But pump.io soft-depends on extra modules, which have to be *inside*
+# its own node_modules, not beside them.
+#
+# So we hack these extra deps into package.json and feed that into
+# node2nix.
+#
+# Also jshon does funny things with slashes in strings, which can be
+# fixed with sed.
+
+curl https://raw.githubusercontent.com/e14n/pump.io/v1.0.0/package.json | \
+    jshon -e dependencies              \
+          -s '*' -i databank-mongodb   \
+          -s '*' -i databank-redis     \
+          -s '*' -i databank-memcached \
+          -s '*' -i databank-lrucache  \
+          -p | sed 's=\\/=/=g' > full-package.json
+
+node2nix --input full-package.json --composition composition.nix --node-env ../../../development/node-packages/node-env.nix
+
+# overriding nodePackages src doesn't seem to work, so...
+sed -i 's|src = ./.|src = fetchurl { url = "https://registry.npmjs.org/pump.io/-/pump.io-1.0.0.tgz"; sha1 = "404mzdqzknrv7pl9qasksi791cc00bbd"; }|' node-packages.nix
diff --git a/pkgs/servers/web-apps/pump.io/node-packages.json b/pkgs/servers/web-apps/pump.io/node-packages.json
index 10d50a0c72ea..294da7ab2f1c 100644
--- a/pkgs/servers/web-apps/pump.io/node-packages.json
+++ b/pkgs/servers/web-apps/pump.io/node-packages.json
@@ -1,36 +1,7 @@
-{
-  "name": "pump.io",
-  "dependencies": {
-    "bcrypt": "0.8.x",
-    "bunyan": "0.16.x",
-    "connect": "1.x",
-    "connect-auth": "0.5.3",
-    "connect-databank": "0.13.x",
-    "crypto-cacerts": "0.1.x",
-    "databank": "0.19.x",
-    "databank-lrucache": "^0.1.2",
-    "databank-memcached": "^0.15.0",
-    "databank-mongodb": "^0.18.10",
-    "databank-redis": "^0.19.6",
-    "dateformat": "1.x",
-    "dialback-client": "~0.1.5",
-    "emailjs": "0.3.x",
-    "express": "2.5.x",
-    "gm": "1.9.x",
-    "jankyqueue": "0.1.x",
-    "mkdirp": "0.3.x",
-    "node-uuid": "1.3.x",
-    "oauth-evanp": "~0.9.10-evanp.2",
-    "optimist": "0.3.x",
-    "schlock": "~0.2.1",
-    "set-immediate": "0.1.x",
-    "showdown": "0.3.x",
-    "sockjs": "0.3.x",
-    "step": "0.0.x",
-    "underscore": "1.4.x",
-    "underscore-contrib": "0.1.x",
-    "utml": "0.2.x",
-    "validator": "0.4.x",
-    "webfinger": "~0.4.2"
-  }
-}
+[
+  "pump.io",
+  "databank-mongodb",
+  "databank-redis",
+  "databank-memcached",
+  "databank-lrucache"
+]
diff --git a/pkgs/servers/web-apps/pump.io/node-packages.nix b/pkgs/servers/web-apps/pump.io/node-packages.nix
index 4d6272511aa8..ec05cc8c13b9 100644
--- a/pkgs/servers/web-apps/pump.io/node-packages.nix
+++ b/pkgs/servers/web-apps/pump.io/node-packages.nix
@@ -1,2734 +1,4392 @@
-{ self, fetchurl, fetchgit ? null, lib }:
+# This file has been generated by node2nix 1.1.0. Do not edit!
 
-{
-  by-spec."addressparser"."^0.3.2" =
-    self.by-version."addressparser"."0.3.2";
-  by-version."addressparser"."0.3.2" = self.buildNodePackage {
-    name = "addressparser-0.3.2";
-    version = "0.3.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/addressparser/-/addressparser-0.3.2.tgz";
-      name = "addressparser-0.3.2.tgz";
-      sha1 = "59873f35e8fcf6c7361c10239261d76e15348bb2";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."addressparser"."~0.2.0" =
-    self.by-version."addressparser"."0.2.1";
-  by-version."addressparser"."0.2.1" = self.buildNodePackage {
-    name = "addressparser-0.2.1";
-    version = "0.2.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz";
-      name = "addressparser-0.2.1.tgz";
-      sha1 = "d11a5b2eeda04cfefebdf3196c10ae13db6cd607";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."array-parallel"."~0.1.0" =
-    self.by-version."array-parallel"."0.1.3";
-  by-version."array-parallel"."0.1.3" = self.buildNodePackage {
-    name = "array-parallel-0.1.3";
-    version = "0.1.3";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/array-parallel/-/array-parallel-0.1.3.tgz";
-      name = "array-parallel-0.1.3.tgz";
-      sha1 = "8f785308926ed5aa478c47e64d1b334b6c0c947d";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."array-series"."~0.1.0" =
-    self.by-version."array-series"."0.1.5";
-  by-version."array-series"."0.1.5" = self.buildNodePackage {
-    name = "array-series-0.1.5";
-    version = "0.1.5";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/array-series/-/array-series-0.1.5.tgz";
-      name = "array-series-0.1.5.tgz";
-      sha1 = "df5d37bfc5c2ef0755e2aa4f92feae7d4b5a972f";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."async"."0.2.x" =
-    self.by-version."async"."0.2.10";
-  by-version."async"."0.2.10" = self.buildNodePackage {
-    name = "async-0.2.10";
-    version = "0.2.10";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/async/-/async-0.2.10.tgz";
-      name = "async-0.2.10.tgz";
-      sha1 = "b6bbe0b0674b9d719708ca38de8c237cb526c3d1";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."async"."0.9.x" =
-    self.by-version."async"."0.9.2";
-  by-version."async"."0.9.2" = self.buildNodePackage {
-    name = "async-0.9.2";
-    version = "0.9.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/async/-/async-0.9.2.tgz";
-      name = "async-0.9.2.tgz";
-      sha1 = "aea74d5e61c1f899613bf64bda66d4c78f2fd17d";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."bcrypt"."0.8.x" =
-    self.by-version."bcrypt"."0.8.5";
-  by-version."bcrypt"."0.8.5" = self.buildNodePackage {
-    name = "bcrypt-0.8.5";
-    version = "0.8.5";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/bcrypt/-/bcrypt-0.8.5.tgz";
-      name = "bcrypt-0.8.5.tgz";
-      sha1 = "8e5b81b4db80e944f440005979ca8d58a961861d";
-    };
-    deps = {
-      "bindings-1.2.1" = self.by-version."bindings"."1.2.1";
-      "nan-2.0.5" = self.by-version."nan"."2.0.5";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "bcrypt" = self.by-version."bcrypt"."0.8.5";
-  by-spec."bindings"."1.2.1" =
-    self.by-version."bindings"."1.2.1";
-  by-version."bindings"."1.2.1" = self.buildNodePackage {
-    name = "bindings-1.2.1";
-    version = "1.2.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz";
-      name = "bindings-1.2.1.tgz";
-      sha1 = "14ad6113812d2d37d72e67b4cacb4bb726505f11";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."bisection"."*" =
-    self.by-version."bisection"."0.0.3";
-  by-version."bisection"."0.0.3" = self.buildNodePackage {
-    name = "bisection-0.0.3";
-    version = "0.0.3";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/bisection/-/bisection-0.0.3.tgz";
-      name = "bisection-0.0.3.tgz";
-      sha1 = "9891d506d86ec7d50910c5157bb592dbb03f33db";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."bson"."~0.2" =
-    self.by-version."bson"."0.2.22";
-  by-version."bson"."0.2.22" = self.buildNodePackage {
-    name = "bson-0.2.22";
-    version = "0.2.22";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/bson/-/bson-0.2.22.tgz";
-      name = "bson-0.2.22.tgz";
-      sha1 = "fcda103f26d0c074d5a52d50927db80fd02b4b39";
-    };
-    deps = {
-      "nan-1.8.4" = self.by-version."nan"."1.8.4";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."bufferjs"."=1.1.0" =
-    self.by-version."bufferjs"."1.1.0";
-  by-version."bufferjs"."1.1.0" = self.buildNodePackage {
-    name = "bufferjs-1.1.0";
-    version = "1.1.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/bufferjs/-/bufferjs-1.1.0.tgz";
-      name = "bufferjs-1.1.0.tgz";
-      sha1 = "095ffa39c5e6b40a2178a1169c9effc584a73201";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."builtin-modules"."^1.0.0" =
-    self.by-version."builtin-modules"."1.1.0";
-  by-version."builtin-modules"."1.1.0" = self.buildNodePackage {
-    name = "builtin-modules-1.1.0";
-    version = "1.1.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.0.tgz";
-      name = "builtin-modules-1.1.0.tgz";
-      sha1 = "1053955fd994a5746e525e4ac717b81caf07491c";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."bunyan"."0.16.x" =
-    self.by-version."bunyan"."0.16.8";
-  by-version."bunyan"."0.16.8" = self.buildNodePackage {
-    name = "bunyan-0.16.8";
-    version = "0.16.8";
-    bin = true;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/bunyan/-/bunyan-0.16.8.tgz";
-      name = "bunyan-0.16.8.tgz";
-      sha1 = "3b3f6cdca262fa31aba43eb0eb6fb58e7bdde547";
-    };
-    deps = {
-      "dtrace-provider-0.2.4" = self.by-version."dtrace-provider"."0.2.4";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "bunyan" = self.by-version."bunyan"."0.16.8";
-  by-spec."camelcase"."^2.0.0" =
-    self.by-version."camelcase"."2.0.1";
-  by-version."camelcase"."2.0.1" = self.buildNodePackage {
-    name = "camelcase-2.0.1";
-    version = "2.0.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/camelcase/-/camelcase-2.0.1.tgz";
-      name = "camelcase-2.0.1.tgz";
-      sha1 = "57568d687b8da56c4c1d17b4c74a3cee26d73aeb";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."camelcase-keys"."^2.0.0" =
-    self.by-version."camelcase-keys"."2.0.0";
-  by-version."camelcase-keys"."2.0.0" = self.buildNodePackage {
-    name = "camelcase-keys-2.0.0";
-    version = "2.0.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.0.0.tgz";
-      name = "camelcase-keys-2.0.0.tgz";
-      sha1 = "ab87e740d72a1ffcb12a43cc04c14b39d549eab9";
-    };
-    deps = {
-      "camelcase-2.0.1" = self.by-version."camelcase"."2.0.1";
-      "map-obj-1.0.1" = self.by-version."map-obj"."1.0.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."connect"."1.x" =
-    self.by-version."connect"."1.9.2";
-  by-version."connect"."1.9.2" = self.buildNodePackage {
-    name = "connect-1.9.2";
-    version = "1.9.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/connect/-/connect-1.9.2.tgz";
-      name = "connect-1.9.2.tgz";
-      sha1 = "42880a22e9438ae59a8add74e437f58ae8e52807";
-    };
-    deps = {
-      "qs-6.0.1" = self.by-version."qs"."6.0.1";
-      "mime-1.3.4" = self.by-version."mime"."1.3.4";
-      "formidable-1.0.17" = self.by-version."formidable"."1.0.17";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "connect" = self.by-version."connect"."1.9.2";
-  by-spec."connect"."2.0.0" =
-    self.by-version."connect"."2.0.0";
-  by-version."connect"."2.0.0" = self.buildNodePackage {
-    name = "connect-2.0.0";
-    version = "2.0.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/connect/-/connect-2.0.0.tgz";
-      name = "connect-2.0.0.tgz";
-      sha1 = "be0f8fcee7c1a0e2caa2e246a278dbbe250b9f27";
-    };
-    deps = {
-      "qs-0.4.2" = self.by-version."qs"."0.4.2";
-      "mime-1.2.4" = self.by-version."mime"."1.2.4";
-      "formidable-1.0.17" = self.by-version."formidable"."1.0.17";
-      "debug-2.2.0" = self.by-version."debug"."2.2.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."connect-auth"."0.5.3" =
-    self.by-version."connect-auth"."0.5.3";
-  by-version."connect-auth"."0.5.3" = self.buildNodePackage {
-    name = "connect-auth-0.5.3";
-    version = "0.5.3";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/connect-auth/-/connect-auth-0.5.3.tgz";
-      name = "connect-auth-0.5.3.tgz";
-      sha1 = "2af00ac6f67ac1c5f451a0ff841a8d20a725091e";
-    };
-    deps = {
-      "connect-2.0.0" = self.by-version."connect"."2.0.0";
-      "oauth-0.9.7" = self.by-version."oauth"."0.9.7";
-      "openid-0.4.1" = self.by-version."openid"."0.4.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "connect-auth" = self.by-version."connect-auth"."0.5.3";
-  by-spec."connect-databank"."0.13.x" =
-    self.by-version."connect-databank"."0.13.0";
-  by-version."connect-databank"."0.13.0" = self.buildNodePackage {
-    name = "connect-databank-0.13.0";
-    version = "0.13.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/connect-databank/-/connect-databank-0.13.0.tgz";
-      name = "connect-databank-0.13.0.tgz";
-      sha1 = "0d5063e9402381073e0242fd7c6ef28b2d61676b";
-    };
-    deps = {
-      "async-0.2.10" = self.by-version."async"."0.2.10";
-      "underscore-1.4.4" = self.by-version."underscore"."1.4.4";
-      "databank-0.19.1" = self.by-version."databank"."0.19.1";
-      "set-immediate-0.1.1" = self.by-version."set-immediate"."0.1.1";
-      "node-uuid-1.4.7" = self.by-version."node-uuid"."1.4.7";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "connect-databank" = self.by-version."connect-databank"."0.13.0";
-  by-spec."core-util-is"."~1.0.0" =
-    self.by-version."core-util-is"."1.0.2";
-  by-version."core-util-is"."1.0.2" = self.buildNodePackage {
-    name = "core-util-is-1.0.2";
-    version = "1.0.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
-      name = "core-util-is-1.0.2.tgz";
-      sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."crypto-cacerts"."0.1.x" =
-    self.by-version."crypto-cacerts"."0.1.0";
-  by-version."crypto-cacerts"."0.1.0" = self.buildNodePackage {
-    name = "crypto-cacerts-0.1.0";
-    version = "0.1.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/crypto-cacerts/-/crypto-cacerts-0.1.0.tgz";
-      name = "crypto-cacerts-0.1.0.tgz";
-      sha1 = "3499c6dff949ab005d4ad4a3f09c48ced6c88a41";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "crypto-cacerts" = self.by-version."crypto-cacerts"."0.1.0";
-  by-spec."databank"."0.18.x" =
-    self.by-version."databank"."0.18.2";
-  by-version."databank"."0.18.2" = self.buildNodePackage {
-    name = "databank-0.18.2";
-    version = "0.18.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/databank/-/databank-0.18.2.tgz";
-      name = "databank-0.18.2.tgz";
-      sha1 = "b1f85bafa329cdb415589c0ee819a04c989a03ed";
-    };
-    deps = {
-      "vows-0.7.0" = self.by-version."vows"."0.7.0";
-      "step-0.0.6" = self.by-version."step"."0.0.6";
-      "set-immediate-0.1.1" = self.by-version."set-immediate"."0.1.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."databank"."0.19.x" =
-    self.by-version."databank"."0.19.1";
-  by-version."databank"."0.19.1" = self.buildNodePackage {
-    name = "databank-0.19.1";
-    version = "0.19.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/databank/-/databank-0.19.1.tgz";
-      name = "databank-0.19.1.tgz";
-      sha1 = "95c6f662927b891f62c6f07fefe5e690fbe666e0";
-    };
-    deps = {
-      "vows-0.7.0" = self.by-version."vows"."0.7.0";
-      "step-0.0.6" = self.by-version."step"."0.0.6";
-      "set-immediate-0.1.1" = self.by-version."set-immediate"."0.1.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "databank" = self.by-version."databank"."0.19.1";
-  by-spec."databank"."~0.19.1" =
-    self.by-version."databank"."0.19.1";
-  by-spec."databank-lrucache"."^0.1.2" =
-    self.by-version."databank-lrucache"."0.1.2";
-  by-version."databank-lrucache"."0.1.2" = self.buildNodePackage {
-    name = "databank-lrucache-0.1.2";
-    version = "0.1.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/databank-lrucache/-/databank-lrucache-0.1.2.tgz";
-      name = "databank-lrucache-0.1.2.tgz";
-      sha1 = "846d3bbc3d908ea2880baf9a611d86a28697c640";
-    };
-    deps = {
-      "databank-0.19.1" = self.by-version."databank"."0.19.1";
-      "underscore-1.5.2" = self.by-version."underscore"."1.5.2";
-      "lru-cache-2.3.1" = self.by-version."lru-cache"."2.3.1";
-      "set-immediate-0.1.1" = self.by-version."set-immediate"."0.1.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "databank-lrucache" = self.by-version."databank-lrucache"."0.1.2";
-  by-spec."databank-memcached"."^0.15.0" =
-    self.by-version."databank-memcached"."0.15.0";
-  by-version."databank-memcached"."0.15.0" = self.buildNodePackage {
-    name = "databank-memcached-0.15.0";
-    version = "0.15.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/databank-memcached/-/databank-memcached-0.15.0.tgz";
-      name = "databank-memcached-0.15.0.tgz";
-      sha1 = "0817452dfb2b09267cd1c8bbec95363ec14f14f2";
-    };
-    deps = {
-      "memcached-0.2.8" = self.by-version."memcached"."0.2.8";
-      "databank-0.18.2" = self.by-version."databank"."0.18.2";
-      "step-0.0.6" = self.by-version."step"."0.0.6";
-      "underscore-1.4.4" = self.by-version."underscore"."1.4.4";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "databank-memcached" = self.by-version."databank-memcached"."0.15.0";
-  by-spec."databank-mongodb"."^0.18.10" =
-    self.by-version."databank-mongodb"."0.18.10";
-  by-version."databank-mongodb"."0.18.10" = self.buildNodePackage {
-    name = "databank-mongodb-0.18.10";
-    version = "0.18.10";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/databank-mongodb/-/databank-mongodb-0.18.10.tgz";
-      name = "databank-mongodb-0.18.10.tgz";
-      sha1 = "5f9d37059d024f1116bdca05459f9c033b0d8ae5";
-    };
-    deps = {
-      "databank-0.19.1" = self.by-version."databank"."0.19.1";
-      "mongodb-1.4.39" = self.by-version."mongodb"."1.4.39";
-      "step-0.0.6" = self.by-version."step"."0.0.6";
-      "underscore-1.8.3" = self.by-version."underscore"."1.8.3";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "databank-mongodb" = self.by-version."databank-mongodb"."0.18.10";
-  by-spec."databank-redis"."^0.19.6" =
-    self.by-version."databank-redis"."0.19.6";
-  by-version."databank-redis"."0.19.6" = self.buildNodePackage {
-    name = "databank-redis-0.19.6";
-    version = "0.19.6";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/databank-redis/-/databank-redis-0.19.6.tgz";
-      name = "databank-redis-0.19.6.tgz";
-      sha1 = "dd476b81b8200269ea0cc85f6b6decd05799bce9";
-    };
-    deps = {
-      "async-0.9.2" = self.by-version."async"."0.9.2";
-      "databank-0.19.1" = self.by-version."databank"."0.19.1";
-      "redis-0.10.3" = self.by-version."redis"."0.10.3";
-      "underscore-1.6.0" = self.by-version."underscore"."1.6.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "databank-redis" = self.by-version."databank-redis"."0.19.6";
-  by-spec."dateformat"."1.x" =
-    self.by-version."dateformat"."1.0.12";
-  by-version."dateformat"."1.0.12" = self.buildNodePackage {
-    name = "dateformat-1.0.12";
-    version = "1.0.12";
-    bin = true;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz";
-      name = "dateformat-1.0.12.tgz";
-      sha1 = "9f124b67594c937ff706932e4a642cca8dbbfee9";
-    };
-    deps = {
-      "get-stdin-4.0.1" = self.by-version."get-stdin"."4.0.1";
-      "meow-3.6.0" = self.by-version."meow"."3.6.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "dateformat" = self.by-version."dateformat"."1.0.12";
-  by-spec."debug"."*" =
-    self.by-version."debug"."2.2.0";
-  by-version."debug"."2.2.0" = self.buildNodePackage {
-    name = "debug-2.2.0";
-    version = "2.2.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/debug/-/debug-2.2.0.tgz";
-      name = "debug-2.2.0.tgz";
-      sha1 = "f87057e995b1a1f6ae6a4960664137bc56f039da";
-    };
-    deps = {
-      "ms-0.7.1" = self.by-version."ms"."0.7.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."debug"."0.7.0" =
-    self.by-version."debug"."0.7.0";
-  by-version."debug"."0.7.0" = self.buildNodePackage {
-    name = "debug-0.7.0";
-    version = "0.7.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/debug/-/debug-0.7.0.tgz";
-      name = "debug-0.7.0.tgz";
-      sha1 = "f5be05ec0434c992d79940e50b2695cfb2e01b08";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."dialback-client"."~0.1.5" =
-    self.by-version."dialback-client"."0.1.5";
-  by-version."dialback-client"."0.1.5" = self.buildNodePackage {
-    name = "dialback-client-0.1.5";
-    version = "0.1.5";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/dialback-client/-/dialback-client-0.1.5.tgz";
-      name = "dialback-client-0.1.5.tgz";
-      sha1 = "ff37f58554ac7dca79a219ba3e6e7c5ed4cc0745";
-    };
-    deps = {
-      "express-2.5.11" = self.by-version."express"."2.5.11";
-      "underscore-1.4.4" = self.by-version."underscore"."1.4.4";
-      "databank-0.18.2" = self.by-version."databank"."0.18.2";
-      "step-0.0.6" = self.by-version."step"."0.0.6";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "dialback-client" = self.by-version."dialback-client"."0.1.5";
-  by-spec."diff"."~1.0.3" =
-    self.by-version."diff"."1.0.8";
-  by-version."diff"."1.0.8" = self.buildNodePackage {
-    name = "diff-1.0.8";
-    version = "1.0.8";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/diff/-/diff-1.0.8.tgz";
-      name = "diff-1.0.8.tgz";
-      sha1 = "343276308ec991b7bc82267ed55bc1411f971666";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."dtrace-provider"."0.2.4" =
-    self.by-version."dtrace-provider"."0.2.4";
-  by-version."dtrace-provider"."0.2.4" = self.buildNodePackage {
-    name = "dtrace-provider-0.2.4";
-    version = "0.2.4";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.2.4.tgz";
-      name = "dtrace-provider-0.2.4.tgz";
-      sha1 = "0719d4449c8994cc89e317cf0d732213f94653d7";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."emailjs"."0.3.x" =
-    self.by-version."emailjs"."0.3.16";
-  by-version."emailjs"."0.3.16" = self.buildNodePackage {
-    name = "emailjs-0.3.16";
-    version = "0.3.16";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/emailjs/-/emailjs-0.3.16.tgz";
-      name = "emailjs-0.3.16.tgz";
-      sha1 = "f162735352ce7b6615a5d811714051f90f23331d";
-    };
-    deps = {
-      "addressparser-0.3.2" = self.by-version."addressparser"."0.3.2";
-      "mimelib-0.2.14" = self.by-version."mimelib"."0.2.14";
-      "moment-1.7.0" = self.by-version."moment"."1.7.0";
-      "starttls-0.2.1" = self.by-version."starttls"."0.2.1";
-    };
-    optionalDependencies = {
-      "bufferjs-1.1.0" = self.by-version."bufferjs"."1.1.0";
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "emailjs" = self.by-version."emailjs"."0.3.16";
-  by-spec."encoding"."~0.1" =
-    self.by-version."encoding"."0.1.11";
-  by-version."encoding"."0.1.11" = self.buildNodePackage {
-    name = "encoding-0.1.11";
-    version = "0.1.11";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/encoding/-/encoding-0.1.11.tgz";
-      name = "encoding-0.1.11.tgz";
-      sha1 = "52c65ac15aab467f1338451e2615f988eccc0258";
-    };
-    deps = {
-      "iconv-lite-0.4.13" = self.by-version."iconv-lite"."0.4.13";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."error-ex"."^1.2.0" =
-    self.by-version."error-ex"."1.3.0";
-  by-version."error-ex"."1.3.0" = self.buildNodePackage {
-    name = "error-ex-1.3.0";
-    version = "1.3.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz";
-      name = "error-ex-1.3.0.tgz";
-      sha1 = "e67b43f3e82c96ea3a584ffee0b9fc3325d802d9";
-    };
-    deps = {
-      "is-arrayish-0.2.1" = self.by-version."is-arrayish"."0.2.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."express"."2.5.x" =
-    self.by-version."express"."2.5.11";
-  by-version."express"."2.5.11" = self.buildNodePackage {
-    name = "express-2.5.11";
-    version = "2.5.11";
-    bin = true;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/express/-/express-2.5.11.tgz";
-      name = "express-2.5.11.tgz";
-      sha1 = "4ce8ea1f3635e69e49f0ebb497b6a4b0a51ce6f0";
-    };
-    deps = {
-      "connect-1.9.2" = self.by-version."connect"."1.9.2";
-      "mime-1.2.4" = self.by-version."mime"."1.2.4";
-      "qs-0.4.2" = self.by-version."qs"."0.4.2";
-      "mkdirp-0.3.0" = self.by-version."mkdirp"."0.3.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "express" = self.by-version."express"."2.5.11";
-  by-spec."eyes".">=0.1.6" =
-    self.by-version."eyes"."0.1.8";
-  by-version."eyes"."0.1.8" = self.buildNodePackage {
-    name = "eyes-0.1.8";
-    version = "0.1.8";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz";
-      name = "eyes-0.1.8.tgz";
-      sha1 = "62cf120234c683785d902348a800ef3e0cc20bc0";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."faye-websocket"."^0.9.3" =
-    self.by-version."faye-websocket"."0.9.4";
-  by-version."faye-websocket"."0.9.4" = self.buildNodePackage {
-    name = "faye-websocket-0.9.4";
-    version = "0.9.4";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/faye-websocket/-/faye-websocket-0.9.4.tgz";
-      name = "faye-websocket-0.9.4.tgz";
-      sha1 = "885934c79effb0409549e0c0a3801ed17a40cdad";
-    };
-    deps = {
-      "websocket-driver-0.6.3" = self.by-version."websocket-driver"."0.6.3";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."find-up"."^1.0.0" =
-    self.by-version."find-up"."1.1.0";
-  by-version."find-up"."1.1.0" = self.buildNodePackage {
-    name = "find-up-1.1.0";
-    version = "1.1.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/find-up/-/find-up-1.1.0.tgz";
-      name = "find-up-1.1.0.tgz";
-      sha1 = "a63b0eec4625a2902534898a5f9eec8aaed046e9";
-    };
-    deps = {
-      "path-exists-2.1.0" = self.by-version."path-exists"."2.1.0";
-      "pinkie-promise-2.0.0" = self.by-version."pinkie-promise"."2.0.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."formidable"."1.0.x" =
-    self.by-version."formidable"."1.0.17";
-  by-version."formidable"."1.0.17" = self.buildNodePackage {
-    name = "formidable-1.0.17";
-    version = "1.0.17";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/formidable/-/formidable-1.0.17.tgz";
-      name = "formidable-1.0.17.tgz";
-      sha1 = "ef5491490f9433b705faa77249c99029ae348559";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."get-stdin"."^4.0.1" =
-    self.by-version."get-stdin"."4.0.1";
-  by-version."get-stdin"."4.0.1" = self.buildNodePackage {
-    name = "get-stdin-4.0.1";
-    version = "4.0.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz";
-      name = "get-stdin-4.0.1.tgz";
-      sha1 = "b968c6b0a04384324902e8bf1a5df32579a450fe";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."gm"."1.9.x" =
-    self.by-version."gm"."1.9.2";
-  by-version."gm"."1.9.2" = self.buildNodePackage {
-    name = "gm-1.9.2";
-    version = "1.9.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/gm/-/gm-1.9.2.tgz";
-      name = "gm-1.9.2.tgz";
-      sha1 = "00443279fe959a10fa23025e0c8401e710215845";
-    };
-    deps = {
-      "debug-0.7.0" = self.by-version."debug"."0.7.0";
-      "array-series-0.1.5" = self.by-version."array-series"."0.1.5";
-      "array-parallel-0.1.3" = self.by-version."array-parallel"."0.1.3";
-      "through-2.3.8" = self.by-version."through"."2.3.8";
-      "stream-to-buffer-0.0.1" = self.by-version."stream-to-buffer"."0.0.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "gm" = self.by-version."gm"."1.9.2";
-  by-spec."graceful-fs"."^4.1.2" =
-    self.by-version."graceful-fs"."4.1.2";
-  by-version."graceful-fs"."4.1.2" = self.buildNodePackage {
-    name = "graceful-fs-4.1.2";
-    version = "4.1.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz";
-      name = "graceful-fs-4.1.2.tgz";
-      sha1 = "fe2239b7574972e67e41f808823f9bfa4a991e37";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."hashring"."0.0.x" =
-    self.by-version."hashring"."0.0.8";
-  by-version."hashring"."0.0.8" = self.buildNodePackage {
-    name = "hashring-0.0.8";
-    version = "0.0.8";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/hashring/-/hashring-0.0.8.tgz";
-      name = "hashring-0.0.8.tgz";
-      sha1 = "203ab13c364119f10106526d2eaf7bd42b484c31";
-    };
-    deps = {
-      "bisection-0.0.3" = self.by-version."bisection"."0.0.3";
-      "simple-lru-cache-0.0.2" = self.by-version."simple-lru-cache"."0.0.2";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."hosted-git-info"."^2.1.4" =
-    self.by-version."hosted-git-info"."2.1.4";
-  by-version."hosted-git-info"."2.1.4" = self.buildNodePackage {
-    name = "hosted-git-info-2.1.4";
-    version = "2.1.4";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.4.tgz";
-      name = "hosted-git-info-2.1.4.tgz";
-      sha1 = "d9e953b26988be88096c46e926494d9604c300f8";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."iconv-lite"."~0.4.4" =
-    self.by-version."iconv-lite"."0.4.13";
-  by-version."iconv-lite"."0.4.13" = self.buildNodePackage {
-    name = "iconv-lite-0.4.13";
-    version = "0.4.13";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz";
-      name = "iconv-lite-0.4.13.tgz";
-      sha1 = "1f88aba4ab0b1508e8312acc39345f36e992e2f2";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."indent-string"."^2.1.0" =
-    self.by-version."indent-string"."2.1.0";
-  by-version."indent-string"."2.1.0" = self.buildNodePackage {
-    name = "indent-string-2.1.0";
-    version = "2.1.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz";
-      name = "indent-string-2.1.0.tgz";
-      sha1 = "8e2d48348742121b4a8218b7a137e9a52049dc80";
-    };
-    deps = {
-      "repeating-2.0.0" = self.by-version."repeating"."2.0.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."inherits"."~2.0.1" =
-    self.by-version."inherits"."2.0.1";
-  by-version."inherits"."2.0.1" = self.buildNodePackage {
-    name = "inherits-2.0.1";
-    version = "2.0.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz";
-      name = "inherits-2.0.1.tgz";
-      sha1 = "b17d08d326b4423e568eff719f91b0b1cbdf69f1";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."is-arrayish"."^0.2.1" =
-    self.by-version."is-arrayish"."0.2.1";
-  by-version."is-arrayish"."0.2.1" = self.buildNodePackage {
-    name = "is-arrayish-0.2.1";
-    version = "0.2.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz";
-      name = "is-arrayish-0.2.1.tgz";
-      sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."is-builtin-module"."^1.0.0" =
-    self.by-version."is-builtin-module"."1.0.0";
-  by-version."is-builtin-module"."1.0.0" = self.buildNodePackage {
-    name = "is-builtin-module-1.0.0";
-    version = "1.0.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz";
-      name = "is-builtin-module-1.0.0.tgz";
-      sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe";
-    };
-    deps = {
-      "builtin-modules-1.1.0" = self.by-version."builtin-modules"."1.1.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."is-finite"."^1.0.0" =
-    self.by-version."is-finite"."1.0.1";
-  by-version."is-finite"."1.0.1" = self.buildNodePackage {
-    name = "is-finite-1.0.1";
-    version = "1.0.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz";
-      name = "is-finite-1.0.1.tgz";
-      sha1 = "6438603eaebe2793948ff4a4262ec8db3d62597b";
-    };
-    deps = {
-      "number-is-nan-1.0.0" = self.by-version."number-is-nan"."1.0.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."is-utf8"."^0.2.0" =
-    self.by-version."is-utf8"."0.2.0";
-  by-version."is-utf8"."0.2.0" = self.buildNodePackage {
-    name = "is-utf8-0.2.0";
-    version = "0.2.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/is-utf8/-/is-utf8-0.2.0.tgz";
-      name = "is-utf8-0.2.0.tgz";
-      sha1 = "b8aa54125ae626bfe4e3beb965f16a89c58a1137";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."isarray"."0.0.1" =
-    self.by-version."isarray"."0.0.1";
-  by-version."isarray"."0.0.1" = self.buildNodePackage {
-    name = "isarray-0.0.1";
-    version = "0.0.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
-      name = "isarray-0.0.1.tgz";
-      sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."jackpot".">=0.0.6" =
-    self.by-version."jackpot"."0.0.6";
-  by-version."jackpot"."0.0.6" = self.buildNodePackage {
-    name = "jackpot-0.0.6";
-    version = "0.0.6";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/jackpot/-/jackpot-0.0.6.tgz";
-      name = "jackpot-0.0.6.tgz";
-      sha1 = "3cff064285cbf66f4eab2593c90bce816a821849";
-    };
-    deps = {
-      "retry-0.6.0" = self.by-version."retry"."0.6.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."jankyqueue"."0.1.x" =
-    self.by-version."jankyqueue"."0.1.1";
-  by-version."jankyqueue"."0.1.1" = self.buildNodePackage {
-    name = "jankyqueue-0.1.1";
-    version = "0.1.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/jankyqueue/-/jankyqueue-0.1.1.tgz";
-      name = "jankyqueue-0.1.1.tgz";
-      sha1 = "4181b0318fb32e77aee8c54af73f97660f2e88d2";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "jankyqueue" = self.by-version."jankyqueue"."0.1.1";
-  by-spec."kerberos"."0.0.11" =
-    self.by-version."kerberos"."0.0.11";
-  by-version."kerberos"."0.0.11" = self.buildNodePackage {
-    name = "kerberos-0.0.11";
-    version = "0.0.11";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/kerberos/-/kerberos-0.0.11.tgz";
-      name = "kerberos-0.0.11.tgz";
-      sha1 = "cb29891c21c22ac195f3140b97dd12204fea7dc2";
-    };
-    deps = {
-      "nan-1.8.4" = self.by-version."nan"."1.8.4";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."load-json-file"."^1.0.0" =
-    self.by-version."load-json-file"."1.1.0";
-  by-version."load-json-file"."1.1.0" = self.buildNodePackage {
-    name = "load-json-file-1.1.0";
-    version = "1.1.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz";
-      name = "load-json-file-1.1.0.tgz";
-      sha1 = "956905708d58b4bab4c2261b04f59f31c99374c0";
-    };
-    deps = {
-      "graceful-fs-4.1.2" = self.by-version."graceful-fs"."4.1.2";
-      "parse-json-2.2.0" = self.by-version."parse-json"."2.2.0";
-      "pify-2.3.0" = self.by-version."pify"."2.3.0";
-      "pinkie-promise-2.0.0" = self.by-version."pinkie-promise"."2.0.0";
-      "strip-bom-2.0.0" = self.by-version."strip-bom"."2.0.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."loud-rejection"."^1.0.0" =
-    self.by-version."loud-rejection"."1.2.0";
-  by-version."loud-rejection"."1.2.0" = self.buildNodePackage {
-    name = "loud-rejection-1.2.0";
-    version = "1.2.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/loud-rejection/-/loud-rejection-1.2.0.tgz";
-      name = "loud-rejection-1.2.0.tgz";
-      sha1 = "f4f87db6abec3b7fe47834531ecf6a011143e58d";
-    };
-    deps = {
-      "signal-exit-2.1.2" = self.by-version."signal-exit"."2.1.2";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."lru-cache"."2.3.x" =
-    self.by-version."lru-cache"."2.3.1";
-  by-version."lru-cache"."2.3.1" = self.buildNodePackage {
-    name = "lru-cache-2.3.1";
-    version = "2.3.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/lru-cache/-/lru-cache-2.3.1.tgz";
-      name = "lru-cache-2.3.1.tgz";
-      sha1 = "b3adf6b3d856e954e2c390e6cef22081245a53d6";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."map-obj"."^1.0.0" =
-    self.by-version."map-obj"."1.0.1";
-  by-version."map-obj"."1.0.1" = self.buildNodePackage {
-    name = "map-obj-1.0.1";
-    version = "1.0.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz";
-      name = "map-obj-1.0.1.tgz";
-      sha1 = "d933ceb9205d82bdcf4886f6742bdc2b4dea146d";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."memcached"."0.2.x" =
-    self.by-version."memcached"."0.2.8";
-  by-version."memcached"."0.2.8" = self.buildNodePackage {
-    name = "memcached-0.2.8";
-    version = "0.2.8";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/memcached/-/memcached-0.2.8.tgz";
-      name = "memcached-0.2.8.tgz";
-      sha1 = "ffbf9498cbc30779625b77e77770bd50dc525212";
-    };
-    deps = {
-      "hashring-0.0.8" = self.by-version."hashring"."0.0.8";
-      "jackpot-0.0.6" = self.by-version."jackpot"."0.0.6";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."meow"."^3.3.0" =
-    self.by-version."meow"."3.6.0";
-  by-version."meow"."3.6.0" = self.buildNodePackage {
-    name = "meow-3.6.0";
-    version = "3.6.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/meow/-/meow-3.6.0.tgz";
-      name = "meow-3.6.0.tgz";
-      sha1 = "e7a535295cb89db0e0782428e55fa8615bf9e150";
-    };
-    deps = {
-      "camelcase-keys-2.0.0" = self.by-version."camelcase-keys"."2.0.0";
-      "loud-rejection-1.2.0" = self.by-version."loud-rejection"."1.2.0";
-      "minimist-1.2.0" = self.by-version."minimist"."1.2.0";
-      "normalize-package-data-2.3.5" = self.by-version."normalize-package-data"."2.3.5";
-      "object-assign-4.0.1" = self.by-version."object-assign"."4.0.1";
-      "read-pkg-up-1.0.1" = self.by-version."read-pkg-up"."1.0.1";
-      "redent-1.0.0" = self.by-version."redent"."1.0.0";
-      "trim-newlines-1.0.0" = self.by-version."trim-newlines"."1.0.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."mime"."1.2.4" =
-    self.by-version."mime"."1.2.4";
-  by-version."mime"."1.2.4" = self.buildNodePackage {
-    name = "mime-1.2.4";
-    version = "1.2.4";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mime/-/mime-1.2.4.tgz";
-      name = "mime-1.2.4.tgz";
-      sha1 = "11b5fdaf29c2509255176b80ad520294f5de92b7";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."mime".">= 0.0.1" =
-    self.by-version."mime"."1.3.4";
-  by-version."mime"."1.3.4" = self.buildNodePackage {
-    name = "mime-1.3.4";
-    version = "1.3.4";
-    bin = true;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mime/-/mime-1.3.4.tgz";
-      name = "mime-1.3.4.tgz";
-      sha1 = "115f9e3b6b3daf2959983cb38f149a2d40eb5d53";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."mimelib"."0.2.14" =
-    self.by-version."mimelib"."0.2.14";
-  by-version."mimelib"."0.2.14" = self.buildNodePackage {
-    name = "mimelib-0.2.14";
-    version = "0.2.14";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz";
-      name = "mimelib-0.2.14.tgz";
-      sha1 = "2a1aa724bd190b85bd526e6317ab6106edfd6831";
-    };
-    deps = {
-      "encoding-0.1.11" = self.by-version."encoding"."0.1.11";
-      "addressparser-0.2.1" = self.by-version."addressparser"."0.2.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."minimist"."^1.1.3" =
-    self.by-version."minimist"."1.2.0";
-  by-version."minimist"."1.2.0" = self.buildNodePackage {
-    name = "minimist-1.2.0";
-    version = "1.2.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz";
-      name = "minimist-1.2.0.tgz";
-      sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."mkdirp"."0.3.0" =
-    self.by-version."mkdirp"."0.3.0";
-  by-version."mkdirp"."0.3.0" = self.buildNodePackage {
-    name = "mkdirp-0.3.0";
-    version = "0.3.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz";
-      name = "mkdirp-0.3.0.tgz";
-      sha1 = "1bbf5ab1ba827af23575143490426455f481fe1e";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."mkdirp"."0.3.x" =
-    self.by-version."mkdirp"."0.3.5";
-  by-version."mkdirp"."0.3.5" = self.buildNodePackage {
-    name = "mkdirp-0.3.5";
-    version = "0.3.5";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz";
-      name = "mkdirp-0.3.5.tgz";
-      sha1 = "de3e5f8961c88c787ee1368df849ac4413eca8d7";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "mkdirp" = self.by-version."mkdirp"."0.3.5";
-  by-spec."moment"."= 1.7.0" =
-    self.by-version."moment"."1.7.0";
-  by-version."moment"."1.7.0" = self.buildNodePackage {
-    name = "moment-1.7.0";
-    version = "1.7.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/moment/-/moment-1.7.0.tgz";
-      name = "moment-1.7.0.tgz";
-      sha1 = "6f3d73a446c6bd6af1b993801d0b8071efad5e28";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."mongodb"."1.4.x" =
-    self.by-version."mongodb"."1.4.39";
-  by-version."mongodb"."1.4.39" = self.buildNodePackage {
-    name = "mongodb-1.4.39";
-    version = "1.4.39";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/mongodb/-/mongodb-1.4.39.tgz";
-      name = "mongodb-1.4.39.tgz";
-      sha1 = "f5b25c7f7df06c968cd5d3c68280adc9a6404591";
-    };
-    deps = {
-      "bson-0.2.22" = self.by-version."bson"."0.2.22";
-    };
-    optionalDependencies = {
-      "kerberos-0.0.11" = self.by-version."kerberos"."0.0.11";
-      "readable-stream-2.0.4" = self.by-version."readable-stream"."2.0.4";
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."ms"."0.7.1" =
-    self.by-version."ms"."0.7.1";
-  by-version."ms"."0.7.1" = self.buildNodePackage {
-    name = "ms-0.7.1";
-    version = "0.7.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/ms/-/ms-0.7.1.tgz";
-      name = "ms-0.7.1.tgz";
-      sha1 = "9cd13c03adbff25b65effde7ce864ee952017098";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."nan"."2.0.5" =
-    self.by-version."nan"."2.0.5";
-  by-version."nan"."2.0.5" = self.buildNodePackage {
-    name = "nan-2.0.5";
-    version = "2.0.5";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/nan/-/nan-2.0.5.tgz";
-      name = "nan-2.0.5.tgz";
-      sha1 = "365888014be1fd178db0cbfa258edf7b0cb1c408";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."nan"."~1.8" =
-    self.by-version."nan"."1.8.4";
-  by-version."nan"."1.8.4" = self.buildNodePackage {
-    name = "nan-1.8.4";
-    version = "1.8.4";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/nan/-/nan-1.8.4.tgz";
-      name = "nan-1.8.4.tgz";
-      sha1 = "3c76b5382eab33e44b758d2813ca9d92e9342f34";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."node-uuid"."1.3.x" =
-    self.by-version."node-uuid"."1.3.3";
-  by-version."node-uuid"."1.3.3" = self.buildNodePackage {
-    name = "node-uuid-1.3.3";
-    version = "1.3.3";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/node-uuid/-/node-uuid-1.3.3.tgz";
-      name = "node-uuid-1.3.3.tgz";
-      sha1 = "d3db4d7b56810d9e4032342766282af07391729b";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "node-uuid" = self.by-version."node-uuid"."1.3.3";
-  by-spec."node-uuid"."1.4.x" =
-    self.by-version."node-uuid"."1.4.7";
-  by-version."node-uuid"."1.4.7" = self.buildNodePackage {
-    name = "node-uuid-1.4.7";
-    version = "1.4.7";
-    bin = true;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz";
-      name = "node-uuid-1.4.7.tgz";
-      sha1 = "6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."node-uuid"."^1.4.1" =
-    self.by-version."node-uuid"."1.4.7";
-  by-spec."normalize-package-data"."^2.3.2" =
-    self.by-version."normalize-package-data"."2.3.5";
-  by-version."normalize-package-data"."2.3.5" = self.buildNodePackage {
-    name = "normalize-package-data-2.3.5";
-    version = "2.3.5";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz";
-      name = "normalize-package-data-2.3.5.tgz";
-      sha1 = "8d924f142960e1777e7ffe170543631cc7cb02df";
-    };
-    deps = {
-      "hosted-git-info-2.1.4" = self.by-version."hosted-git-info"."2.1.4";
-      "is-builtin-module-1.0.0" = self.by-version."is-builtin-module"."1.0.0";
-      "semver-5.1.0" = self.by-version."semver"."5.1.0";
-      "validate-npm-package-license-3.0.1" = self.by-version."validate-npm-package-license"."3.0.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."normalize-package-data"."^2.3.4" =
-    self.by-version."normalize-package-data"."2.3.5";
-  by-spec."number-is-nan"."^1.0.0" =
-    self.by-version."number-is-nan"."1.0.0";
-  by-version."number-is-nan"."1.0.0" = self.buildNodePackage {
-    name = "number-is-nan-1.0.0";
-    version = "1.0.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz";
-      name = "number-is-nan-1.0.0.tgz";
-      sha1 = "c020f529c5282adfdd233d91d4b181c3d686dc4b";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."oauth"."0.9.7" =
-    self.by-version."oauth"."0.9.7";
-  by-version."oauth"."0.9.7" = self.buildNodePackage {
-    name = "oauth-0.9.7";
-    version = "0.9.7";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/oauth/-/oauth-0.9.7.tgz";
-      name = "oauth-0.9.7.tgz";
-      sha1 = "c2554d0368c966eb3050bec96584625577ad1ecd";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."oauth-evanp"."~0.9.10-evanp.2" =
-    self.by-version."oauth-evanp"."0.9.10-evanp.2";
-  by-version."oauth-evanp"."0.9.10-evanp.2" = self.buildNodePackage {
-    name = "oauth-evanp-0.9.10-evanp.2";
-    version = "0.9.10-evanp.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/oauth-evanp/-/oauth-evanp-0.9.10-evanp.2.tgz";
-      name = "oauth-evanp-0.9.10-evanp.2.tgz";
-      sha1 = "9b5fb3508cea584420855957d56531405cf53a02";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "oauth-evanp" = self.by-version."oauth-evanp"."0.9.10-evanp.2";
-  by-spec."object-assign"."^4.0.1" =
-    self.by-version."object-assign"."4.0.1";
-  by-version."object-assign"."4.0.1" = self.buildNodePackage {
-    name = "object-assign-4.0.1";
-    version = "4.0.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/object-assign/-/object-assign-4.0.1.tgz";
-      name = "object-assign-4.0.1.tgz";
-      sha1 = "99504456c3598b5cad4fc59c26e8a9bb107fe0bd";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."openid"."0.4.1" =
-    self.by-version."openid"."0.4.1";
-  by-version."openid"."0.4.1" = self.buildNodePackage {
-    name = "openid-0.4.1";
-    version = "0.4.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/openid/-/openid-0.4.1.tgz";
-      name = "openid-0.4.1.tgz";
-      sha1 = "de0eb5e381d34dc4aa5a77a98678bedafd11f387";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."optimist"."0.3.x" =
-    self.by-version."optimist"."0.3.7";
-  by-version."optimist"."0.3.7" = self.buildNodePackage {
-    name = "optimist-0.3.7";
-    version = "0.3.7";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz";
-      name = "optimist-0.3.7.tgz";
-      sha1 = "c90941ad59e4273328923074d2cf2e7cbc6ec0d9";
-    };
-    deps = {
-      "wordwrap-0.0.3" = self.by-version."wordwrap"."0.0.3";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "optimist" = self.by-version."optimist"."0.3.7";
-  by-spec."parse-json"."^2.2.0" =
-    self.by-version."parse-json"."2.2.0";
-  by-version."parse-json"."2.2.0" = self.buildNodePackage {
-    name = "parse-json-2.2.0";
-    version = "2.2.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz";
-      name = "parse-json-2.2.0.tgz";
-      sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9";
-    };
-    deps = {
-      "error-ex-1.3.0" = self.by-version."error-ex"."1.3.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."path-exists"."^2.0.0" =
-    self.by-version."path-exists"."2.1.0";
-  by-version."path-exists"."2.1.0" = self.buildNodePackage {
-    name = "path-exists-2.1.0";
-    version = "2.1.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz";
-      name = "path-exists-2.1.0.tgz";
-      sha1 = "0feb6c64f0fc518d9a754dd5efb62c7022761f4b";
-    };
-    deps = {
-      "pinkie-promise-2.0.0" = self.by-version."pinkie-promise"."2.0.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."path-type"."^1.0.0" =
-    self.by-version."path-type"."1.1.0";
-  by-version."path-type"."1.1.0" = self.buildNodePackage {
-    name = "path-type-1.1.0";
-    version = "1.1.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz";
-      name = "path-type-1.1.0.tgz";
-      sha1 = "59c44f7ee491da704da415da5a4070ba4f8fe441";
-    };
-    deps = {
-      "graceful-fs-4.1.2" = self.by-version."graceful-fs"."4.1.2";
-      "pify-2.3.0" = self.by-version."pify"."2.3.0";
-      "pinkie-promise-2.0.0" = self.by-version."pinkie-promise"."2.0.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."pify"."^2.0.0" =
-    self.by-version."pify"."2.3.0";
-  by-version."pify"."2.3.0" = self.buildNodePackage {
-    name = "pify-2.3.0";
-    version = "2.3.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz";
-      name = "pify-2.3.0.tgz";
-      sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."pinkie"."^2.0.0" =
-    self.by-version."pinkie"."2.0.1";
-  by-version."pinkie"."2.0.1" = self.buildNodePackage {
-    name = "pinkie-2.0.1";
-    version = "2.0.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/pinkie/-/pinkie-2.0.1.tgz";
-      name = "pinkie-2.0.1.tgz";
-      sha1 = "4236c86fc29f261c2045bbe81f78cbb2a5e8306c";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."pinkie-promise"."^2.0.0" =
-    self.by-version."pinkie-promise"."2.0.0";
-  by-version."pinkie-promise"."2.0.0" = self.buildNodePackage {
-    name = "pinkie-promise-2.0.0";
-    version = "2.0.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.0.tgz";
-      name = "pinkie-promise-2.0.0.tgz";
-      sha1 = "4c83538de1f6e660c29e0a13446844f7a7e88259";
-    };
-    deps = {
-      "pinkie-2.0.1" = self.by-version."pinkie"."2.0.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."process-nextick-args"."~1.0.0" =
-    self.by-version."process-nextick-args"."1.0.6";
-  by-version."process-nextick-args"."1.0.6" = self.buildNodePackage {
-    name = "process-nextick-args-1.0.6";
-    version = "1.0.6";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.6.tgz";
-      name = "process-nextick-args-1.0.6.tgz";
-      sha1 = "0f96b001cea90b12592ce566edb97ec11e69bd05";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."qs"."0.4.x" =
-    self.by-version."qs"."0.4.2";
-  by-version."qs"."0.4.2" = self.buildNodePackage {
-    name = "qs-0.4.2";
-    version = "0.4.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/qs/-/qs-0.4.2.tgz";
-      name = "qs-0.4.2.tgz";
-      sha1 = "3cac4c861e371a8c9c4770ac23cda8de639b8e5f";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."qs".">= 0.4.0" =
-    self.by-version."qs"."6.0.1";
-  by-version."qs"."6.0.1" = self.buildNodePackage {
-    name = "qs-6.0.1";
-    version = "6.0.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/qs/-/qs-6.0.1.tgz";
-      name = "qs-6.0.1.tgz";
-      sha1 = "ee8b7fcd64fcbe6e36c922bd2c464ee7c54766c3";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."read-pkg"."^1.0.0" =
-    self.by-version."read-pkg"."1.1.0";
-  by-version."read-pkg"."1.1.0" = self.buildNodePackage {
-    name = "read-pkg-1.1.0";
-    version = "1.1.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz";
-      name = "read-pkg-1.1.0.tgz";
-      sha1 = "f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28";
-    };
-    deps = {
-      "load-json-file-1.1.0" = self.by-version."load-json-file"."1.1.0";
-      "normalize-package-data-2.3.5" = self.by-version."normalize-package-data"."2.3.5";
-      "path-type-1.1.0" = self.by-version."path-type"."1.1.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."read-pkg-up"."^1.0.1" =
-    self.by-version."read-pkg-up"."1.0.1";
-  by-version."read-pkg-up"."1.0.1" = self.buildNodePackage {
-    name = "read-pkg-up-1.0.1";
-    version = "1.0.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz";
-      name = "read-pkg-up-1.0.1.tgz";
-      sha1 = "9d63c13276c065918d57f002a57f40a1b643fb02";
-    };
-    deps = {
-      "find-up-1.1.0" = self.by-version."find-up"."1.1.0";
-      "read-pkg-1.1.0" = self.by-version."read-pkg"."1.1.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."readable-stream"."*" =
-    self.by-version."readable-stream"."2.0.4";
-  by-version."readable-stream"."2.0.4" = self.buildNodePackage {
-    name = "readable-stream-2.0.4";
-    version = "2.0.4";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.4.tgz";
-      name = "readable-stream-2.0.4.tgz";
-      sha1 = "2523ef27ffa339d7ba9da8603f2d0599d06edbd8";
-    };
-    deps = {
-      "core-util-is-1.0.2" = self.by-version."core-util-is"."1.0.2";
-      "inherits-2.0.1" = self.by-version."inherits"."2.0.1";
-      "isarray-0.0.1" = self.by-version."isarray"."0.0.1";
-      "process-nextick-args-1.0.6" = self.by-version."process-nextick-args"."1.0.6";
-      "string_decoder-0.10.31" = self.by-version."string_decoder"."0.10.31";
-      "util-deprecate-1.0.2" = self.by-version."util-deprecate"."1.0.2";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."redent"."^1.0.0" =
-    self.by-version."redent"."1.0.0";
-  by-version."redent"."1.0.0" = self.buildNodePackage {
-    name = "redent-1.0.0";
-    version = "1.0.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/redent/-/redent-1.0.0.tgz";
-      name = "redent-1.0.0.tgz";
-      sha1 = "cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde";
-    };
-    deps = {
-      "indent-string-2.1.0" = self.by-version."indent-string"."2.1.0";
-      "strip-indent-1.0.1" = self.by-version."strip-indent"."1.0.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."redis"."~0.10.3" =
-    self.by-version."redis"."0.10.3";
-  by-version."redis"."0.10.3" = self.buildNodePackage {
-    name = "redis-0.10.3";
-    version = "0.10.3";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/redis/-/redis-0.10.3.tgz";
-      name = "redis-0.10.3.tgz";
-      sha1 = "8927fe2110ee39617bcf3fd37b89d8e123911bb6";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."repeating"."^2.0.0" =
-    self.by-version."repeating"."2.0.0";
-  by-version."repeating"."2.0.0" = self.buildNodePackage {
-    name = "repeating-2.0.0";
-    version = "2.0.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/repeating/-/repeating-2.0.0.tgz";
-      name = "repeating-2.0.0.tgz";
-      sha1 = "fd27d6d264d18fbebfaa56553dd7b82535a5034e";
-    };
-    deps = {
-      "is-finite-1.0.1" = self.by-version."is-finite"."1.0.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."retry"."0.6.0" =
-    self.by-version."retry"."0.6.0";
-  by-version."retry"."0.6.0" = self.buildNodePackage {
-    name = "retry-0.6.0";
-    version = "0.6.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/retry/-/retry-0.6.0.tgz";
-      name = "retry-0.6.0.tgz";
-      sha1 = "1c010713279a6fd1e8def28af0c3ff1871caa537";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."sax".">=0.1.1" =
-    self.by-version."sax"."1.1.4";
-  by-version."sax"."1.1.4" = self.buildNodePackage {
-    name = "sax-1.1.4";
-    version = "1.1.4";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/sax/-/sax-1.1.4.tgz";
-      name = "sax-1.1.4.tgz";
-      sha1 = "74b6d33c9ae1e001510f179a91168588f1aedaa9";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."schlock"."~0.2.1" =
-    self.by-version."schlock"."0.2.1";
-  by-version."schlock"."0.2.1" = self.buildNodePackage {
-    name = "schlock-0.2.1";
-    version = "0.2.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/schlock/-/schlock-0.2.1.tgz";
-      name = "schlock-0.2.1.tgz";
-      sha1 = "2a9aaeaa209a5422eadc5dfc005e2c2f15241f99";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "schlock" = self.by-version."schlock"."0.2.1";
-  by-spec."semver"."2 || 3 || 4 || 5" =
-    self.by-version."semver"."5.1.0";
-  by-version."semver"."5.1.0" = self.buildNodePackage {
-    name = "semver-5.1.0";
-    version = "5.1.0";
-    bin = true;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/semver/-/semver-5.1.0.tgz";
-      name = "semver-5.1.0.tgz";
-      sha1 = "85f2cf8550465c4df000cf7d86f6b054106ab9e5";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."set-immediate"."0.1.x" =
-    self.by-version."set-immediate"."0.1.1";
-  by-version."set-immediate"."0.1.1" = self.buildNodePackage {
-    name = "set-immediate-0.1.1";
-    version = "0.1.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/set-immediate/-/set-immediate-0.1.1.tgz";
-      name = "set-immediate-0.1.1.tgz";
-      sha1 = "8986e4a773bf8ec165f24d579107673bfac141de";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "set-immediate" = self.by-version."set-immediate"."0.1.1";
-  by-spec."set-immediate"."~0.1.1" =
-    self.by-version."set-immediate"."0.1.1";
-  by-spec."showdown"."0.3.x" =
-    self.by-version."showdown"."0.3.4";
-  by-version."showdown"."0.3.4" = self.buildNodePackage {
-    name = "showdown-0.3.4";
-    version = "0.3.4";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/showdown/-/showdown-0.3.4.tgz";
-      name = "showdown-0.3.4.tgz";
-      sha1 = "b056fa0209d44ac55c90331b44a934774976ac55";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "showdown" = self.by-version."showdown"."0.3.4";
-  by-spec."signal-exit"."^2.1.2" =
-    self.by-version."signal-exit"."2.1.2";
-  by-version."signal-exit"."2.1.2" = self.buildNodePackage {
-    name = "signal-exit-2.1.2";
-    version = "2.1.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/signal-exit/-/signal-exit-2.1.2.tgz";
-      name = "signal-exit-2.1.2.tgz";
-      sha1 = "375879b1f92ebc3b334480d038dc546a6d558564";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."simple-lru-cache"."0.0.x" =
-    self.by-version."simple-lru-cache"."0.0.2";
-  by-version."simple-lru-cache"."0.0.2" = self.buildNodePackage {
-    name = "simple-lru-cache-0.0.2";
-    version = "0.0.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/simple-lru-cache/-/simple-lru-cache-0.0.2.tgz";
-      name = "simple-lru-cache-0.0.2.tgz";
-      sha1 = "d59cc3a193c1a5d0320f84ee732f6e4713e511dd";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."sockjs"."0.3.x" =
-    self.by-version."sockjs"."0.3.15";
-  by-version."sockjs"."0.3.15" = self.buildNodePackage {
-    name = "sockjs-0.3.15";
-    version = "0.3.15";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/sockjs/-/sockjs-0.3.15.tgz";
-      name = "sockjs-0.3.15.tgz";
-      sha1 = "e19b577e59e0fbdb21a0ae4f46203ca24cad8db8";
-    };
-    deps = {
-      "faye-websocket-0.9.4" = self.by-version."faye-websocket"."0.9.4";
-      "node-uuid-1.4.7" = self.by-version."node-uuid"."1.4.7";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "sockjs" = self.by-version."sockjs"."0.3.15";
-  by-spec."spdx-correct"."~1.0.0" =
-    self.by-version."spdx-correct"."1.0.2";
-  by-version."spdx-correct"."1.0.2" = self.buildNodePackage {
-    name = "spdx-correct-1.0.2";
-    version = "1.0.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz";
-      name = "spdx-correct-1.0.2.tgz";
-      sha1 = "4b3073d933ff51f3912f03ac5519498a4150db40";
-    };
-    deps = {
-      "spdx-license-ids-1.1.0" = self.by-version."spdx-license-ids"."1.1.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."spdx-exceptions"."^1.0.4" =
-    self.by-version."spdx-exceptions"."1.0.4";
-  by-version."spdx-exceptions"."1.0.4" = self.buildNodePackage {
-    name = "spdx-exceptions-1.0.4";
-    version = "1.0.4";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.4.tgz";
-      name = "spdx-exceptions-1.0.4.tgz";
-      sha1 = "220b84239119ae9045a892db81a83f4ce16f80fd";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."spdx-expression-parse"."~1.0.0" =
-    self.by-version."spdx-expression-parse"."1.0.2";
-  by-version."spdx-expression-parse"."1.0.2" = self.buildNodePackage {
-    name = "spdx-expression-parse-1.0.2";
-    version = "1.0.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.2.tgz";
-      name = "spdx-expression-parse-1.0.2.tgz";
-      sha1 = "d52b14b5e9670771440af225bcb563122ac452f6";
-    };
-    deps = {
-      "spdx-exceptions-1.0.4" = self.by-version."spdx-exceptions"."1.0.4";
-      "spdx-license-ids-1.1.0" = self.by-version."spdx-license-ids"."1.1.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."spdx-license-ids"."^1.0.0" =
-    self.by-version."spdx-license-ids"."1.1.0";
-  by-version."spdx-license-ids"."1.1.0" = self.buildNodePackage {
-    name = "spdx-license-ids-1.1.0";
-    version = "1.1.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.1.0.tgz";
-      name = "spdx-license-ids-1.1.0.tgz";
-      sha1 = "28694acdf39fe27de45143fff81f21f6c66d44ac";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."spdx-license-ids"."^1.0.2" =
-    self.by-version."spdx-license-ids"."1.1.0";
-  by-spec."starttls"."0.2.1" =
-    self.by-version."starttls"."0.2.1";
-  by-version."starttls"."0.2.1" = self.buildNodePackage {
-    name = "starttls-0.2.1";
-    version = "0.2.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/starttls/-/starttls-0.2.1.tgz";
-      name = "starttls-0.2.1.tgz";
-      sha1 = "b98d3e5e778d46f199c843a64f889f0347c6d19a";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."step"."0.0.x" =
-    self.by-version."step"."0.0.6";
-  by-version."step"."0.0.6" = self.buildNodePackage {
-    name = "step-0.0.6";
-    version = "0.0.6";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/step/-/step-0.0.6.tgz";
-      name = "step-0.0.6.tgz";
-      sha1 = "143e7849a5d7d3f4a088fe29af94915216eeede2";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "step" = self.by-version."step"."0.0.6";
-  by-spec."stream-to-buffer"."~0.0.1" =
-    self.by-version."stream-to-buffer"."0.0.1";
-  by-version."stream-to-buffer"."0.0.1" = self.buildNodePackage {
-    name = "stream-to-buffer-0.0.1";
-    version = "0.0.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/stream-to-buffer/-/stream-to-buffer-0.0.1.tgz";
-      name = "stream-to-buffer-0.0.1.tgz";
-      sha1 = "ab483d59a1ca71832de379a255f465b665af45c1";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."string_decoder"."~0.10.x" =
-    self.by-version."string_decoder"."0.10.31";
-  by-version."string_decoder"."0.10.31" = self.buildNodePackage {
-    name = "string_decoder-0.10.31";
-    version = "0.10.31";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz";
-      name = "string_decoder-0.10.31.tgz";
-      sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."strip-bom"."^2.0.0" =
-    self.by-version."strip-bom"."2.0.0";
-  by-version."strip-bom"."2.0.0" = self.buildNodePackage {
-    name = "strip-bom-2.0.0";
-    version = "2.0.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz";
-      name = "strip-bom-2.0.0.tgz";
-      sha1 = "6219a85616520491f35788bdbf1447a99c7e6b0e";
-    };
-    deps = {
-      "is-utf8-0.2.0" = self.by-version."is-utf8"."0.2.0";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."strip-indent"."^1.0.1" =
-    self.by-version."strip-indent"."1.0.1";
-  by-version."strip-indent"."1.0.1" = self.buildNodePackage {
-    name = "strip-indent-1.0.1";
-    version = "1.0.1";
-    bin = true;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz";
-      name = "strip-indent-1.0.1.tgz";
-      sha1 = "0c7962a6adefa7bbd4ac366460a638552ae1a0a2";
-    };
-    deps = {
-      "get-stdin-4.0.1" = self.by-version."get-stdin"."4.0.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."through"."~2.3.1" =
-    self.by-version."through"."2.3.8";
-  by-version."through"."2.3.8" = self.buildNodePackage {
-    name = "through-2.3.8";
-    version = "2.3.8";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/through/-/through-2.3.8.tgz";
-      name = "through-2.3.8.tgz";
-      sha1 = "0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."trim-newlines"."^1.0.0" =
-    self.by-version."trim-newlines"."1.0.0";
-  by-version."trim-newlines"."1.0.0" = self.buildNodePackage {
-    name = "trim-newlines-1.0.0";
+{nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
+
+let
+  sources = {
+    "bcrypt-0.8.7" = {
+      name = "bcrypt";
+      packageName = "bcrypt";
+      version = "0.8.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bcrypt/-/bcrypt-0.8.7.tgz";
+        sha1 = "bc3875a9afd0a7b2cd231a6a7f218a5ce156b093";
+      };
+    };
+    "bunyan-1.8.1" = {
+      name = "bunyan";
+      packageName = "bunyan";
+      version = "1.8.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bunyan/-/bunyan-1.8.1.tgz";
+        sha1 = "68c6a4a502d5620bc9f72d6736810c1b1898097f";
+      };
+    };
+    "connect-2.30.2" = {
+      name = "connect";
+      packageName = "connect";
+      version = "2.30.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/connect/-/connect-2.30.2.tgz";
+        sha1 = "8da9bcbe8a054d3d318d74dfec903b5c39a1b609";
+      };
+    };
+    "connect-auth-0.6.1" = {
+      name = "connect-auth";
+      packageName = "connect-auth";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/connect-auth/-/connect-auth-0.6.1.tgz";
+        sha1 = "8d798153d6c8e78cb809de82a436f1de7c79868f";
+      };
+    };
+    "connect-databank-1.0.3" = {
+      name = "connect-databank";
+      packageName = "connect-databank";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/connect-databank/-/connect-databank-1.0.3.tgz";
+        sha1 = "dad24f08dc385d9c3a94f1a52730aec0c7d13b02";
+      };
+    };
+    "crypto-cacerts-0.1.0" = {
+      name = "crypto-cacerts";
+      packageName = "crypto-cacerts";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/crypto-cacerts/-/crypto-cacerts-0.1.0.tgz";
+        sha1 = "3499c6dff949ab005d4ad4a3f09c48ced6c88a41";
+      };
+    };
+    "databank-0.19.5" = {
+      name = "databank";
+      packageName = "databank";
+      version = "0.19.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/databank/-/databank-0.19.5.tgz";
+        sha1 = "edcbd954b84730c0c5d0de551e004b92f1f53119";
+      };
+    };
+    "dateformat-1.0.12" = {
+      name = "dateformat";
+      packageName = "dateformat";
+      version = "1.0.12";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz";
+        sha1 = "9f124b67594c937ff706932e4a642cca8dbbfee9";
+      };
+    };
+    "dialback-client-0.2.0" = {
+      name = "dialback-client";
+      packageName = "dialback-client";
+      version = "0.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dialback-client/-/dialback-client-0.2.0.tgz";
+        sha1 = "051806a88a6cc18ffb25adf13eda232e354ebcb6";
+      };
+    };
+    "dompurify-0.8.3" = {
+      name = "dompurify";
+      packageName = "dompurify";
+      version = "0.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dompurify/-/dompurify-0.8.3.tgz";
+        sha1 = "06bdc074b91306d09f7f150bfeb96a11e0be64c1";
+      };
+    };
+    "emailjs-1.0.8" = {
+      name = "emailjs";
+      packageName = "emailjs";
+      version = "1.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/emailjs/-/emailjs-1.0.8.tgz";
+        sha1 = "d4240db7670dc78aff97352092d8460edc130f66";
+      };
+    };
+    "express-2.5.11" = {
+      name = "express";
+      packageName = "express";
+      version = "2.5.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/express/-/express-2.5.11.tgz";
+        sha1 = "4ce8ea1f3635e69e49f0ebb497b6a4b0a51ce6f0";
+      };
+    };
+    "express-session-1.14.1" = {
+      name = "express-session";
+      packageName = "express-session";
+      version = "1.14.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/express-session/-/express-session-1.14.1.tgz";
+        sha1 = "600364f0f6bf5dce32649e006770bdeee80aec99";
+      };
+    };
+    "gm-1.23.0" = {
+      name = "gm";
+      packageName = "gm";
+      version = "1.23.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/gm/-/gm-1.23.0.tgz";
+        sha1 = "80a2fe9cbf131515024846444658461269f52661";
+      };
+    };
+    "helmet-2.2.0" = {
+      name = "helmet";
+      packageName = "helmet";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/helmet/-/helmet-2.2.0.tgz";
+        sha1 = "fa0737d113fba4bd29d1b39650ac679ad673b948";
+      };
+    };
+    "jankyqueue-0.1.1" = {
+      name = "jankyqueue";
+      packageName = "jankyqueue";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jankyqueue/-/jankyqueue-0.1.1.tgz";
+        sha1 = "4181b0318fb32e77aee8c54af73f97660f2e88d2";
+      };
+    };
+    "jsdom-7.2.2" = {
+      name = "jsdom";
+      packageName = "jsdom";
+      version = "7.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz";
+        sha1 = "40b402770c2bda23469096bee91ab675e3b1fc6e";
+      };
+    };
+    "mkdirp-0.5.1" = {
+      name = "mkdirp";
+      packageName = "mkdirp";
+      version = "0.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz";
+        sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
+      };
+    };
+    "node-uuid-1.4.7" = {
+      name = "node-uuid";
+      packageName = "node-uuid";
+      version = "1.4.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz";
+        sha1 = "6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f";
+      };
+    };
+    "oauth-evanp-0.9.10-evanp.2" = {
+      name = "oauth-evanp";
+      packageName = "oauth-evanp";
+      version = "0.9.10-evanp.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/oauth-evanp/-/oauth-evanp-0.9.10-evanp.2.tgz";
+        sha1 = "9b5fb3508cea584420855957d56531405cf53a02";
+      };
+    };
+    "optimist-0.6.1" = {
+      name = "optimist";
+      packageName = "optimist";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz";
+        sha1 = "da3ea74686fa21a19a111c326e90eb15a0196686";
+      };
+    };
+    "rimraf-2.5.4" = {
+      name = "rimraf";
+      packageName = "rimraf";
+      version = "2.5.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz";
+        sha1 = "96800093cbf1a0c86bd95b4625467535c29dfa04";
+      };
+    };
+    "sanitize-html-1.13.0" = {
+      name = "sanitize-html";
+      packageName = "sanitize-html";
+      version = "1.13.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.13.0.tgz";
+        sha1 = "4ee17cbec516bfe32f2ce6686a569d7e6b4f3631";
+      };
+    };
+    "schlock-0.2.1" = {
+      name = "schlock";
+      packageName = "schlock";
+      version = "0.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/schlock/-/schlock-0.2.1.tgz";
+        sha1 = "2a9aaeaa209a5422eadc5dfc005e2c2f15241f99";
+      };
+    };
+    "send-0.13.2" = {
+      name = "send";
+      packageName = "send";
+      version = "0.13.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/send/-/send-0.13.2.tgz";
+        sha1 = "765e7607c8055452bba6f0b052595350986036de";
+      };
+    };
+    "showdown-1.4.3" = {
+      name = "showdown";
+      packageName = "showdown";
+      version = "1.4.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/showdown/-/showdown-1.4.3.tgz";
+        sha1 = "91d29f4728dbdf76034b7555355e9b30974df447";
+      };
+    };
+    "sockjs-0.3.17" = {
+      name = "sockjs";
+      packageName = "sockjs";
+      version = "0.3.17";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sockjs/-/sockjs-0.3.17.tgz";
+        sha1 = "ef1b88f5d73e6278fad8e9476ac91064382f3b44";
+      };
+    };
+    "step-0.0.6" = {
+      name = "step";
+      packageName = "step";
+      version = "0.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/step/-/step-0.0.6.tgz";
+        sha1 = "143e7849a5d7d3f4a088fe29af94915216eeede2";
+      };
+    };
+    "ua-parser-js-0.7.10" = {
+      name = "ua-parser-js";
+      packageName = "ua-parser-js";
+      version = "0.7.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.10.tgz";
+        sha1 = "917559ddcce07cbc09ece7d80495e4c268f4ef9f";
+      };
+    };
+    "underscore-1.8.3" = {
+      name = "underscore";
+      packageName = "underscore";
+      version = "1.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz";
+        sha1 = "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022";
+      };
+    };
+    "underscore-contrib-0.3.0" = {
+      name = "underscore-contrib";
+      packageName = "underscore-contrib";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz";
+        sha1 = "665b66c24783f8fa2b18c9f8cbb0e2c7d48c26c7";
+      };
+    };
+    "utml-0.2.0" = {
+      name = "utml";
+      packageName = "utml";
+      version = "0.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/utml/-/utml-0.2.0.tgz";
+        sha1 = "6a546741823b2a9c17598a57e8eb4c08738dee48";
+      };
+    };
+    "validator-4.4.0" = {
+      name = "validator";
+      packageName = "validator";
+      version = "4.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/validator/-/validator-4.4.0.tgz";
+        sha1 = "35e29555dd5f7826f970a4eaecff9e6df6df3da6";
+      };
+    };
+    "webfinger-0.4.2" = {
+      name = "webfinger";
+      packageName = "webfinger";
+      version = "0.4.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/webfinger/-/webfinger-0.4.2.tgz";
+        sha1 = "3477a6d97799461896039fcffc650b73468ee76d";
+      };
+    };
+    "databank-mongodb-0.19.0" = {
+      name = "databank-mongodb";
+      packageName = "databank-mongodb";
+      version = "0.19.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/databank-mongodb/-/databank-mongodb-0.19.0.tgz";
+        sha1 = "66ffa32848986d0e138403396506d64895fefc45";
+      };
+    };
+    "databank-redis-0.19.6" = {
+      name = "databank-redis";
+      packageName = "databank-redis";
+      version = "0.19.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/databank-redis/-/databank-redis-0.19.6.tgz";
+        sha1 = "dd476b81b8200269ea0cc85f6b6decd05799bce9";
+      };
+    };
+    "databank-memcached-0.15.0" = {
+      name = "databank-memcached";
+      packageName = "databank-memcached";
+      version = "0.15.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/databank-memcached/-/databank-memcached-0.15.0.tgz";
+        sha1 = "0817452dfb2b09267cd1c8bbec95363ec14f14f2";
+      };
+    };
+    "databank-lrucache-0.1.2" = {
+      name = "databank-lrucache";
+      packageName = "databank-lrucache";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/databank-lrucache/-/databank-lrucache-0.1.2.tgz";
+        sha1 = "846d3bbc3d908ea2880baf9a611d86a28697c640";
+      };
+    };
+    "bindings-1.2.1" = {
+      name = "bindings";
+      packageName = "bindings";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz";
+        sha1 = "14ad6113812d2d37d72e67b4cacb4bb726505f11";
+      };
+    };
+    "nan-2.3.5" = {
+      name = "nan";
+      packageName = "nan";
+      version = "2.3.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nan/-/nan-2.3.5.tgz";
+        sha1 = "822a0dc266290ce4cd3a12282ca3e7e364668a08";
+      };
+    };
+    "dtrace-provider-0.6.0" = {
+      name = "dtrace-provider";
+      packageName = "dtrace-provider";
+      version = "0.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.6.0.tgz";
+        sha1 = "0b078d5517937d873101452d9146737557b75e51";
+      };
+    };
+    "mv-2.1.1" = {
+      name = "mv";
+      packageName = "mv";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz";
+        sha1 = "ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2";
+      };
+    };
+    "safe-json-stringify-1.0.3" = {
+      name = "safe-json-stringify";
+      packageName = "safe-json-stringify";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.3.tgz";
+        sha1 = "3cb6717660a086d07cb5bd9b7a6875bcf67bd05e";
+      };
+    };
+    "moment-2.15.0" = {
+      name = "moment";
+      packageName = "moment";
+      version = "2.15.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/moment/-/moment-2.15.0.tgz";
+        sha1 = "cc9e33958bf4a99dea7111d5e62ed3c13fc96440";
+      };
+    };
+    "nan-2.4.0" = {
+      name = "nan";
+      packageName = "nan";
+      version = "2.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nan/-/nan-2.4.0.tgz";
+        sha1 = "fb3c59d45fe4effe215f0b890f8adf6eb32d2232";
+      };
+    };
+    "ncp-2.0.0" = {
+      name = "ncp";
+      packageName = "ncp";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz";
+        sha1 = "195a21d6c46e361d2fb1281ba38b91e9df7bdbb3";
+      };
+    };
+    "rimraf-2.4.5" = {
+      name = "rimraf";
+      packageName = "rimraf";
+      version = "2.4.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz";
+        sha1 = "ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da";
+      };
+    };
+    "glob-6.0.4" = {
+      name = "glob";
+      packageName = "glob";
+      version = "6.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz";
+        sha1 = "0f08860f6a155127b2fadd4f9ce24b1aab6e4d22";
+      };
+    };
+    "inflight-1.0.5" = {
+      name = "inflight";
+      packageName = "inflight";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inflight/-/inflight-1.0.5.tgz";
+        sha1 = "db3204cd5a9de2e6cd890b85c6e2f66bcf4f620a";
+      };
+    };
+    "inherits-2.0.3" = {
+      name = "inherits";
+      packageName = "inherits";
+      version = "2.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz";
+        sha1 = "633c2c83e3da42a502f52466022480f4208261de";
+      };
+    };
+    "minimatch-3.0.3" = {
+      name = "minimatch";
+      packageName = "minimatch";
+      version = "3.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz";
+        sha1 = "2a4e4090b96b2db06a9d7df01055a62a77c9b774";
+      };
+    };
+    "once-1.4.0" = {
+      name = "once";
+      packageName = "once";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
+        sha1 = "583b1aa775961d4b113ac17d9c50baef9dd76bd1";
+      };
+    };
+    "path-is-absolute-1.0.0" = {
+      name = "path-is-absolute";
+      packageName = "path-is-absolute";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz";
+        sha1 = "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912";
+      };
+    };
+    "wrappy-1.0.2" = {
+      name = "wrappy";
+      packageName = "wrappy";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
+        sha1 = "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f";
+      };
+    };
+    "brace-expansion-1.1.6" = {
+      name = "brace-expansion";
+      packageName = "brace-expansion";
+      version = "1.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz";
+        sha1 = "7197d7eaa9b87e648390ea61fc66c84427420df9";
+      };
+    };
+    "balanced-match-0.4.2" = {
+      name = "balanced-match";
+      packageName = "balanced-match";
+      version = "0.4.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz";
+        sha1 = "cb3f3e3c732dc0f01ee70b403f302e61d7709838";
+      };
+    };
+    "concat-map-0.0.1" = {
+      name = "concat-map";
+      packageName = "concat-map";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
+        sha1 = "d8a96bd77fd68df7793a73036a3ba0d5405d477b";
+      };
+    };
+    "basic-auth-connect-1.0.0" = {
+      name = "basic-auth-connect";
+      packageName = "basic-auth-connect";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz";
+        sha1 = "fdb0b43962ca7b40456a7c2bb48fe173da2d2122";
+      };
+    };
+    "body-parser-1.13.3" = {
+      name = "body-parser";
+      packageName = "body-parser";
+      version = "1.13.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz";
+        sha1 = "c08cf330c3358e151016a05746f13f029c97fa97";
+      };
+    };
+    "bytes-2.1.0" = {
+      name = "bytes";
+      packageName = "bytes";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz";
+        sha1 = "ac93c410e2ffc9cc7cf4b464b38289067f5e47b4";
+      };
+    };
+    "cookie-0.1.3" = {
+      name = "cookie";
+      packageName = "cookie";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz";
+        sha1 = "e734a5c1417fce472d5aef82c381cabb64d1a435";
+      };
+    };
+    "cookie-parser-1.3.5" = {
+      name = "cookie-parser";
+      packageName = "cookie-parser";
+      version = "1.3.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.5.tgz";
+        sha1 = "9d755570fb5d17890771227a02314d9be7cf8356";
+      };
+    };
+    "cookie-signature-1.0.6" = {
+      name = "cookie-signature";
+      packageName = "cookie-signature";
+      version = "1.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz";
+        sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
+      };
+    };
+    "compression-1.5.2" = {
+      name = "compression";
+      packageName = "compression";
+      version = "1.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/compression/-/compression-1.5.2.tgz";
+        sha1 = "b03b8d86e6f8ad29683cba8df91ddc6ffc77b395";
+      };
+    };
+    "connect-timeout-1.6.2" = {
+      name = "connect-timeout";
+      packageName = "connect-timeout";
+      version = "1.6.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.6.2.tgz";
+        sha1 = "de9a5ec61e33a12b6edaab7b5f062e98c599b88e";
+      };
+    };
+    "content-type-1.0.2" = {
+      name = "content-type";
+      packageName = "content-type";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz";
+        sha1 = "b7d113aee7a8dd27bd21133c4dc2529df1721eed";
+      };
+    };
+    "csurf-1.8.3" = {
+      name = "csurf";
+      packageName = "csurf";
+      version = "1.8.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/csurf/-/csurf-1.8.3.tgz";
+        sha1 = "23f2a13bf1d8fce1d0c996588394442cba86a56a";
+      };
+    };
+    "debug-2.2.0" = {
+      name = "debug";
+      packageName = "debug";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz";
+        sha1 = "f87057e995b1a1f6ae6a4960664137bc56f039da";
+      };
+    };
+    "depd-1.0.1" = {
+      name = "depd";
+      packageName = "depd";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz";
+        sha1 = "80aec64c9d6d97e65cc2a9caa93c0aa6abf73aaa";
+      };
+    };
+    "errorhandler-1.4.3" = {
+      name = "errorhandler";
+      packageName = "errorhandler";
+      version = "1.4.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/errorhandler/-/errorhandler-1.4.3.tgz";
+        sha1 = "b7b70ed8f359e9db88092f2d20c0f831420ad83f";
+      };
+    };
+    "express-session-1.11.3" = {
+      name = "express-session";
+      packageName = "express-session";
+      version = "1.11.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/express-session/-/express-session-1.11.3.tgz";
+        sha1 = "5cc98f3f5ff84ed835f91cbf0aabd0c7107400af";
+      };
+    };
+    "finalhandler-0.4.0" = {
+      name = "finalhandler";
+      packageName = "finalhandler";
+      version = "0.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz";
+        sha1 = "965a52d9e8d05d2b857548541fb89b53a2497d9b";
+      };
+    };
+    "fresh-0.3.0" = {
+      name = "fresh";
+      packageName = "fresh";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz";
+        sha1 = "651f838e22424e7566de161d8358caa199f83d4f";
+      };
+    };
+    "http-errors-1.3.1" = {
+      name = "http-errors";
+      packageName = "http-errors";
+      version = "1.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz";
+        sha1 = "197e22cdebd4198585e8694ef6786197b91ed942";
+      };
+    };
+    "method-override-2.3.6" = {
+      name = "method-override";
+      packageName = "method-override";
+      version = "2.3.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/method-override/-/method-override-2.3.6.tgz";
+        sha1 = "209261cc588d45d9d5a022ff20d7d5eb8e92179e";
+      };
+    };
+    "morgan-1.6.1" = {
+      name = "morgan";
+      packageName = "morgan";
+      version = "1.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/morgan/-/morgan-1.6.1.tgz";
+        sha1 = "5fd818398c6819cba28a7cd6664f292fe1c0bbf2";
+      };
+    };
+    "multiparty-3.3.2" = {
+      name = "multiparty";
+      packageName = "multiparty";
+      version = "3.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/multiparty/-/multiparty-3.3.2.tgz";
+        sha1 = "35de6804dc19643e5249f3d3e3bdc6c8ce301d3f";
+      };
+    };
+    "on-headers-1.0.1" = {
+      name = "on-headers";
+      packageName = "on-headers";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz";
+        sha1 = "928f5d0f470d49342651ea6794b0857c100693f7";
+      };
+    };
+    "parseurl-1.3.1" = {
+      name = "parseurl";
+      packageName = "parseurl";
+      version = "1.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz";
+        sha1 = "c8ab8c9223ba34888aa64a297b28853bec18da56";
+      };
+    };
+    "pause-0.1.0" = {
+      name = "pause";
+      packageName = "pause";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pause/-/pause-0.1.0.tgz";
+        sha1 = "ebc8a4a8619ff0b8a81ac1513c3434ff469fdb74";
+      };
+    };
+    "qs-4.0.0" = {
+      name = "qs";
+      packageName = "qs";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz";
+        sha1 = "c31d9b74ec27df75e543a86c78728ed8d4623607";
+      };
+    };
+    "response-time-2.3.1" = {
+      name = "response-time";
+      packageName = "response-time";
+      version = "2.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/response-time/-/response-time-2.3.1.tgz";
+        sha1 = "2bde19181de6c81ab95e3207a28d61d965b31797";
+      };
+    };
+    "serve-favicon-2.3.0" = {
+      name = "serve-favicon";
+      packageName = "serve-favicon";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.3.0.tgz";
+        sha1 = "aed36cc6834069a6f189cc7222c6a1a811dc5b39";
+      };
+    };
+    "serve-index-1.7.3" = {
+      name = "serve-index";
+      packageName = "serve-index";
+      version = "1.7.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/serve-index/-/serve-index-1.7.3.tgz";
+        sha1 = "7a057fc6ee28dc63f64566e5fa57b111a86aecd2";
+      };
+    };
+    "serve-static-1.10.3" = {
+      name = "serve-static";
+      packageName = "serve-static";
+      version = "1.10.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/serve-static/-/serve-static-1.10.3.tgz";
+        sha1 = "ce5a6ecd3101fed5ec09827dac22a9c29bfb0535";
+      };
+    };
+    "type-is-1.6.13" = {
+      name = "type-is";
+      packageName = "type-is";
+      version = "1.6.13";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/type-is/-/type-is-1.6.13.tgz";
+        sha1 = "6e83ba7bc30cd33a7bb0b7fb00737a2085bf9d08";
+      };
+    };
+    "utils-merge-1.0.0" = {
+      name = "utils-merge";
+      packageName = "utils-merge";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz";
+        sha1 = "0294fb922bb9375153541c4f7096231f287c8af8";
+      };
+    };
+    "vhost-3.0.2" = {
+      name = "vhost";
+      packageName = "vhost";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vhost/-/vhost-3.0.2.tgz";
+        sha1 = "2fb1decd4c466aa88b0f9341af33dc1aff2478d5";
+      };
+    };
+    "iconv-lite-0.4.11" = {
+      name = "iconv-lite";
+      packageName = "iconv-lite";
+      version = "0.4.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz";
+        sha1 = "2ecb42fd294744922209a2e7c404dac8793d8ade";
+      };
+    };
+    "on-finished-2.3.0" = {
+      name = "on-finished";
+      packageName = "on-finished";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz";
+        sha1 = "20f1336481b083cd75337992a16971aa2d906947";
+      };
+    };
+    "raw-body-2.1.7" = {
+      name = "raw-body";
+      packageName = "raw-body";
+      version = "2.1.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz";
+        sha1 = "adfeace2e4fb3098058014d08c072dcc59758774";
+      };
+    };
+    "ee-first-1.1.1" = {
+      name = "ee-first";
+      packageName = "ee-first";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz";
+        sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
+      };
+    };
+    "bytes-2.4.0" = {
+      name = "bytes";
+      packageName = "bytes";
+      version = "2.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz";
+        sha1 = "7d97196f9d5baf7f6935e25985549edd2a6c2339";
+      };
+    };
+    "iconv-lite-0.4.13" = {
+      name = "iconv-lite";
+      packageName = "iconv-lite";
+      version = "0.4.13";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz";
+        sha1 = "1f88aba4ab0b1508e8312acc39345f36e992e2f2";
+      };
+    };
+    "unpipe-1.0.0" = {
+      name = "unpipe";
+      packageName = "unpipe";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz";
+        sha1 = "b2bf4ee8514aae6165b4817829d21b2ef49904ec";
+      };
+    };
+    "accepts-1.2.13" = {
+      name = "accepts";
+      packageName = "accepts";
+      version = "1.2.13";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz";
+        sha1 = "e5f1f3928c6d95fd96558c36ec3d9d0de4a6ecea";
+      };
+    };
+    "compressible-2.0.8" = {
+      name = "compressible";
+      packageName = "compressible";
+      version = "2.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/compressible/-/compressible-2.0.8.tgz";
+        sha1 = "7162e6c46d3b9d200ffb45cb4e4a0f7832732503";
+      };
+    };
+    "vary-1.0.1" = {
+      name = "vary";
+      packageName = "vary";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz";
+        sha1 = "99e4981566a286118dfb2b817357df7993376d10";
+      };
+    };
+    "mime-types-2.1.11" = {
+      name = "mime-types";
+      packageName = "mime-types";
+      version = "2.1.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz";
+        sha1 = "c259c471bda808a85d6cd193b430a5fae4473b3c";
+      };
+    };
+    "negotiator-0.5.3" = {
+      name = "negotiator";
+      packageName = "negotiator";
+      version = "0.5.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz";
+        sha1 = "269d5c476810ec92edbe7b6c2f28316384f9a7e8";
+      };
+    };
+    "mime-db-1.23.0" = {
+      name = "mime-db";
+      packageName = "mime-db";
+      version = "1.23.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz";
+        sha1 = "a31b4070adaea27d732ea333740a64d0ec9a6659";
+      };
+    };
+    "ms-0.7.1" = {
+      name = "ms";
+      packageName = "ms";
+      version = "0.7.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz";
+        sha1 = "9cd13c03adbff25b65effde7ce864ee952017098";
+      };
+    };
+    "csrf-3.0.3" = {
+      name = "csrf";
+      packageName = "csrf";
+      version = "3.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/csrf/-/csrf-3.0.3.tgz";
+        sha1 = "69d13220de95762808bb120f7533a994fc4293b5";
+      };
+    };
+    "base64-url-1.2.2" = {
+      name = "base64-url";
+      packageName = "base64-url";
+      version = "1.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/base64-url/-/base64-url-1.2.2.tgz";
+        sha1 = "90af26ef8b0b67bc801b05eccf943345649008b3";
+      };
+    };
+    "rndm-1.2.0" = {
+      name = "rndm";
+      packageName = "rndm";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz";
+        sha1 = "f33fe9cfb52bbfd520aa18323bc65db110a1b76c";
+      };
+    };
+    "tsscmp-1.0.5" = {
+      name = "tsscmp";
+      packageName = "tsscmp";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.5.tgz";
+        sha1 = "7dc4a33af71581ab4337da91d85ca5427ebd9a97";
+      };
+    };
+    "uid-safe-2.1.1" = {
+      name = "uid-safe";
+      packageName = "uid-safe";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.1.tgz";
+        sha1 = "3dbf9436b528be9f52882c05a6216c3763db3666";
+      };
+    };
+    "random-bytes-1.0.0" = {
+      name = "random-bytes";
+      packageName = "random-bytes";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz";
+        sha1 = "4f68a1dc0ae58bd3fb95848c30324db75d64360b";
+      };
+    };
+    "accepts-1.3.3" = {
+      name = "accepts";
+      packageName = "accepts";
+      version = "1.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz";
+        sha1 = "c3ca7434938648c3e0d9c1e328dd68b622c284ca";
+      };
+    };
+    "escape-html-1.0.3" = {
+      name = "escape-html";
+      packageName = "escape-html";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz";
+        sha1 = "0258eae4d3d0c0974de1c169188ef0051d1d1988";
+      };
+    };
+    "negotiator-0.6.1" = {
+      name = "negotiator";
+      packageName = "negotiator";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz";
+        sha1 = "2b327184e8992101177b28563fb5e7102acd0ca9";
+      };
+    };
+    "crc-3.3.0" = {
+      name = "crc";
+      packageName = "crc";
+      version = "3.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/crc/-/crc-3.3.0.tgz";
+        sha1 = "fa622e1bc388bf257309082d6b65200ce67090ba";
+      };
+    };
+    "uid-safe-2.0.0" = {
+      name = "uid-safe";
+      packageName = "uid-safe";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uid-safe/-/uid-safe-2.0.0.tgz";
+        sha1 = "a7f3c6ca64a1f6a5d04ec0ef3e4c3d5367317137";
+      };
+    };
+    "base64-url-1.2.1" = {
+      name = "base64-url";
+      packageName = "base64-url";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz";
+        sha1 = "199fd661702a0e7b7dcae6e0698bb089c52f6d78";
+      };
+    };
+    "escape-html-1.0.2" = {
+      name = "escape-html";
+      packageName = "escape-html";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz";
+        sha1 = "d77d32fa98e38c2f41ae85e9278e0e0e6ba1022c";
+      };
+    };
+    "statuses-1.3.0" = {
+      name = "statuses";
+      packageName = "statuses";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/statuses/-/statuses-1.3.0.tgz";
+        sha1 = "8e55758cb20e7682c1f4fce8dcab30bf01d1e07a";
+      };
+    };
+    "methods-1.1.2" = {
+      name = "methods";
+      packageName = "methods";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz";
+        sha1 = "5529a4d67654134edcc5266656835b0f851afcee";
+      };
+    };
+    "vary-1.1.0" = {
+      name = "vary";
+      packageName = "vary";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vary/-/vary-1.1.0.tgz";
+        sha1 = "e1e5affbbd16ae768dd2674394b9ad3022653140";
+      };
+    };
+    "basic-auth-1.0.4" = {
+      name = "basic-auth";
+      packageName = "basic-auth";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/basic-auth/-/basic-auth-1.0.4.tgz";
+        sha1 = "030935b01de7c9b94a824b29f3fccb750d3a5290";
+      };
+    };
+    "readable-stream-1.1.14" = {
+      name = "readable-stream";
+      packageName = "readable-stream";
+      version = "1.1.14";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz";
+        sha1 = "7cf4c54ef648e3813084c636dd2079e166c081d9";
+      };
+    };
+    "stream-counter-0.2.0" = {
+      name = "stream-counter";
+      packageName = "stream-counter";
+      version = "0.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/stream-counter/-/stream-counter-0.2.0.tgz";
+        sha1 = "ded266556319c8b0e222812b9cf3b26fa7d947de";
+      };
+    };
+    "core-util-is-1.0.2" = {
+      name = "core-util-is";
+      packageName = "core-util-is";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz";
+        sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+      };
+    };
+    "isarray-0.0.1" = {
+      name = "isarray";
+      packageName = "isarray";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
+        sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
+      };
+    };
+    "string_decoder-0.10.31" = {
+      name = "string_decoder";
+      packageName = "string_decoder";
+      version = "0.10.31";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz";
+        sha1 = "62e203bc41766c6c28c9fc84301dab1c5310fa94";
+      };
+    };
+    "etag-1.7.0" = {
+      name = "etag";
+      packageName = "etag";
+      version = "1.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz";
+        sha1 = "03d30b5f67dd6e632d2945d30d6652731a34d5d8";
+      };
+    };
+    "batch-0.5.3" = {
+      name = "batch";
+      packageName = "batch";
+      version = "0.5.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz";
+        sha1 = "3f3414f380321743bfc1042f9a83ff1d5824d464";
+      };
+    };
+    "media-typer-0.3.0" = {
+      name = "media-typer";
+      packageName = "media-typer";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz";
+        sha1 = "8710d7af0aa626f8fffa1ce00168545263255748";
+      };
+    };
+    "connect-2.7.11" = {
+      name = "connect";
+      packageName = "connect";
+      version = "2.7.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/connect/-/connect-2.7.11.tgz";
+        sha1 = "f561d5eef70b8d719c397f724d34ba4065c77a3e";
+      };
+    };
+    "oauth-0.9.10" = {
+      name = "oauth";
+      packageName = "oauth";
+      version = "0.9.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/oauth/-/oauth-0.9.10.tgz";
+        sha1 = "7d356af319a16d889e581fa80f86bbd5ab454646";
+      };
+    };
+    "openid-0.4.1" = {
+      name = "openid";
+      packageName = "openid";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/openid/-/openid-0.4.1.tgz";
+        sha1 = "de0eb5e381d34dc4aa5a77a98678bedafd11f387";
+      };
+    };
+    "qs-0.6.5" = {
+      name = "qs";
+      packageName = "qs";
+      version = "0.6.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/qs/-/qs-0.6.5.tgz";
+        sha1 = "294b268e4b0d4250f6dde19b3b8b34935dff14ef";
+      };
+    };
+    "formidable-1.0.14" = {
+      name = "formidable";
+      packageName = "formidable";
+      version = "1.0.14";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/formidable/-/formidable-1.0.14.tgz";
+        sha1 = "2b3f4c411cbb5fdd695c44843e2a23514a43231a";
+      };
+    };
+    "cookie-signature-1.0.1" = {
+      name = "cookie-signature";
+      packageName = "cookie-signature";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.1.tgz";
+        sha1 = "44e072148af01e6e8e24afbf12690d68ae698ecb";
+      };
+    };
+    "buffer-crc32-0.2.1" = {
+      name = "buffer-crc32";
+      packageName = "buffer-crc32";
+      version = "0.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.1.tgz";
+        sha1 = "be3e5382fc02b6d6324956ac1af98aa98b08534c";
+      };
+    };
+    "cookie-0.0.5" = {
+      name = "cookie";
+      packageName = "cookie";
+      version = "0.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie/-/cookie-0.0.5.tgz";
+        sha1 = "f9acf9db57eb7568c9fcc596256b7bb22e307c81";
+      };
+    };
+    "send-0.1.1" = {
+      name = "send";
+      packageName = "send";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/send/-/send-0.1.1.tgz";
+        sha1 = "0bcfcbd03def6e2d8612e1abf8f4895b450c60c8";
+      };
+    };
+    "bytes-0.2.0" = {
+      name = "bytes";
+      packageName = "bytes";
+      version = "0.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bytes/-/bytes-0.2.0.tgz";
+        sha1 = "aad33ec14e3dc2ca74e8e7d451f9ba053ad4f7a0";
+      };
+    };
+    "fresh-0.1.0" = {
+      name = "fresh";
+      packageName = "fresh";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fresh/-/fresh-0.1.0.tgz";
+        sha1 = "03e4b0178424e4c2d5d19a54d8814cdc97934850";
+      };
+    };
+    "pause-0.0.1" = {
+      name = "pause";
+      packageName = "pause";
+      version = "0.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz";
+        sha1 = "1d408b3fdb76923b9543d96fb4c9dfd535d9cb5d";
+      };
+    };
+    "mime-1.2.11" = {
+      name = "mime";
+      packageName = "mime";
+      version = "1.2.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz";
+        sha1 = "58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10";
+      };
+    };
+    "range-parser-0.0.4" = {
+      name = "range-parser";
+      packageName = "range-parser";
+      version = "0.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/range-parser/-/range-parser-0.0.4.tgz";
+        sha1 = "c0427ffef51c10acba0782a46c9602e744ff620b";
+      };
+    };
+    "async-1.5.2" = {
+      name = "async";
+      packageName = "async";
+      version = "1.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async/-/async-1.5.2.tgz";
+        sha1 = "ec6a61ae56480c0c3cb241c95618e20892f9672a";
+      };
+    };
+    "set-immediate-0.1.1" = {
+      name = "set-immediate";
+      packageName = "set-immediate";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/set-immediate/-/set-immediate-0.1.1.tgz";
+        sha1 = "8986e4a773bf8ec165f24d579107673bfac141de";
+      };
+    };
+    "vows-0.7.0" = {
+      name = "vows";
+      packageName = "vows";
+      version = "0.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/vows/-/vows-0.7.0.tgz";
+        sha1 = "dd0065f110ba0c0a6d63e844851c3208176d5867";
+      };
+    };
+    "setimmediate-1.0.5" = {
+      name = "setimmediate";
+      packageName = "setimmediate";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz";
+        sha1 = "290cbb232e306942d7d7ea9b83732ab7856f8285";
+      };
+    };
+    "eyes-0.1.8" = {
+      name = "eyes";
+      packageName = "eyes";
+      version = "0.1.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz";
+        sha1 = "62cf120234c683785d902348a800ef3e0cc20bc0";
+      };
+    };
+    "diff-1.0.8" = {
+      name = "diff";
+      packageName = "diff";
+      version = "1.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/diff/-/diff-1.0.8.tgz";
+        sha1 = "343276308ec991b7bc82267ed55bc1411f971666";
+      };
+    };
+    "get-stdin-4.0.1" = {
+      name = "get-stdin";
+      packageName = "get-stdin";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz";
+        sha1 = "b968c6b0a04384324902e8bf1a5df32579a450fe";
+      };
+    };
+    "meow-3.7.0" = {
+      name = "meow";
+      packageName = "meow";
+      version = "3.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz";
+        sha1 = "72cb668b425228290abbfa856892587308a801fb";
+      };
+    };
+    "camelcase-keys-2.1.0" = {
+      name = "camelcase-keys";
+      packageName = "camelcase-keys";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz";
+        sha1 = "308beeaffdf28119051efa1d932213c91b8f92e7";
+      };
+    };
+    "decamelize-1.2.0" = {
+      name = "decamelize";
+      packageName = "decamelize";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz";
+        sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
+      };
+    };
+    "loud-rejection-1.6.0" = {
+      name = "loud-rejection";
+      packageName = "loud-rejection";
+      version = "1.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz";
+        sha1 = "5b46f80147edee578870f086d04821cf998e551f";
+      };
+    };
+    "map-obj-1.0.1" = {
+      name = "map-obj";
+      packageName = "map-obj";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz";
+        sha1 = "d933ceb9205d82bdcf4886f6742bdc2b4dea146d";
+      };
+    };
+    "minimist-1.2.0" = {
+      name = "minimist";
+      packageName = "minimist";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz";
+        sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
+      };
+    };
+    "normalize-package-data-2.3.5" = {
+      name = "normalize-package-data";
+      packageName = "normalize-package-data";
+      version = "2.3.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz";
+        sha1 = "8d924f142960e1777e7ffe170543631cc7cb02df";
+      };
+    };
+    "object-assign-4.1.0" = {
+      name = "object-assign";
+      packageName = "object-assign";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz";
+        sha1 = "7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0";
+      };
+    };
+    "read-pkg-up-1.0.1" = {
+      name = "read-pkg-up";
+      packageName = "read-pkg-up";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz";
+        sha1 = "9d63c13276c065918d57f002a57f40a1b643fb02";
+      };
+    };
+    "redent-1.0.0" = {
+      name = "redent";
+      packageName = "redent";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz";
+        sha1 = "cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde";
+      };
+    };
+    "trim-newlines-1.0.0" = {
+      name = "trim-newlines";
+      packageName = "trim-newlines";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz";
+        sha1 = "5887966bb582a4503a41eb524f7d35011815a613";
+      };
+    };
+    "camelcase-2.1.1" = {
+      name = "camelcase";
+      packageName = "camelcase";
+      version = "2.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz";
+        sha1 = "7c1d16d679a1bbe59ca02cacecfb011e201f5a1f";
+      };
+    };
+    "currently-unhandled-0.4.1" = {
+      name = "currently-unhandled";
+      packageName = "currently-unhandled";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz";
+        sha1 = "988df33feab191ef799a61369dd76c17adf957ea";
+      };
+    };
+    "signal-exit-3.0.1" = {
+      name = "signal-exit";
+      packageName = "signal-exit";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.1.tgz";
+        sha1 = "5a4c884992b63a7acd9badb7894c3ee9cfccad81";
+      };
+    };
+    "array-find-index-1.0.1" = {
+      name = "array-find-index";
+      packageName = "array-find-index";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.1.tgz";
+        sha1 = "0bc25ddac941ec8a496ae258fd4ac188003ef3af";
+      };
+    };
+    "hosted-git-info-2.1.5" = {
+      name = "hosted-git-info";
+      packageName = "hosted-git-info";
+      version = "2.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.5.tgz";
+        sha1 = "0ba81d90da2e25ab34a332e6ec77936e1598118b";
+      };
+    };
+    "is-builtin-module-1.0.0" = {
+      name = "is-builtin-module";
+      packageName = "is-builtin-module";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz";
+        sha1 = "540572d34f7ac3119f8f76c30cbc1b1e037affbe";
+      };
+    };
+    "semver-5.3.0" = {
+      name = "semver";
+      packageName = "semver";
+      version = "5.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz";
+        sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f";
+      };
+    };
+    "validate-npm-package-license-3.0.1" = {
+      name = "validate-npm-package-license";
+      packageName = "validate-npm-package-license";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz";
+        sha1 = "2804babe712ad3379459acfbe24746ab2c303fbc";
+      };
+    };
+    "builtin-modules-1.1.1" = {
+      name = "builtin-modules";
+      packageName = "builtin-modules";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz";
+        sha1 = "270f076c5a72c02f5b65a47df94c5fe3a278892f";
+      };
+    };
+    "spdx-correct-1.0.2" = {
+      name = "spdx-correct";
+      packageName = "spdx-correct";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz";
+        sha1 = "4b3073d933ff51f3912f03ac5519498a4150db40";
+      };
+    };
+    "spdx-expression-parse-1.0.3" = {
+      name = "spdx-expression-parse";
+      packageName = "spdx-expression-parse";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.3.tgz";
+        sha1 = "ca3c3828c4fea8aa44997884b398fc5d67436442";
+      };
+    };
+    "spdx-license-ids-1.2.2" = {
+      name = "spdx-license-ids";
+      packageName = "spdx-license-ids";
+      version = "1.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz";
+        sha1 = "c9df7a3424594ade6bd11900d596696dc06bac57";
+      };
+    };
+    "find-up-1.1.2" = {
+      name = "find-up";
+      packageName = "find-up";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz";
+        sha1 = "6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f";
+      };
+    };
+    "read-pkg-1.1.0" = {
+      name = "read-pkg";
+      packageName = "read-pkg";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz";
+        sha1 = "f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28";
+      };
+    };
+    "path-exists-2.1.0" = {
+      name = "path-exists";
+      packageName = "path-exists";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz";
+        sha1 = "0feb6c64f0fc518d9a754dd5efb62c7022761f4b";
+      };
+    };
+    "pinkie-promise-2.0.1" = {
+      name = "pinkie-promise";
+      packageName = "pinkie-promise";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz";
+        sha1 = "2135d6dfa7a358c069ac9b178776288228450ffa";
+      };
+    };
+    "pinkie-2.0.4" = {
+      name = "pinkie";
+      packageName = "pinkie";
+      version = "2.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz";
+        sha1 = "72556b80cfa0d48a974e80e77248e80ed4f7f870";
+      };
+    };
+    "load-json-file-1.1.0" = {
+      name = "load-json-file";
+      packageName = "load-json-file";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz";
+        sha1 = "956905708d58b4bab4c2261b04f59f31c99374c0";
+      };
+    };
+    "path-type-1.1.0" = {
+      name = "path-type";
+      packageName = "path-type";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz";
+        sha1 = "59c44f7ee491da704da415da5a4070ba4f8fe441";
+      };
+    };
+    "graceful-fs-4.1.6" = {
+      name = "graceful-fs";
+      packageName = "graceful-fs";
+      version = "4.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.6.tgz";
+        sha1 = "514c38772b31bee2e08bedc21a0aeb3abf54c19e";
+      };
+    };
+    "parse-json-2.2.0" = {
+      name = "parse-json";
+      packageName = "parse-json";
+      version = "2.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz";
+        sha1 = "f480f40434ef80741f8469099f8dea18f55a4dc9";
+      };
+    };
+    "pify-2.3.0" = {
+      name = "pify";
+      packageName = "pify";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz";
+        sha1 = "ed141a6ac043a849ea588498e7dca8b15330e90c";
+      };
+    };
+    "strip-bom-2.0.0" = {
+      name = "strip-bom";
+      packageName = "strip-bom";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz";
+        sha1 = "6219a85616520491f35788bdbf1447a99c7e6b0e";
+      };
+    };
+    "error-ex-1.3.0" = {
+      name = "error-ex";
+      packageName = "error-ex";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/error-ex/-/error-ex-1.3.0.tgz";
+        sha1 = "e67b43f3e82c96ea3a584ffee0b9fc3325d802d9";
+      };
+    };
+    "is-arrayish-0.2.1" = {
+      name = "is-arrayish";
+      packageName = "is-arrayish";
+      version = "0.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz";
+        sha1 = "77c99840527aa8ecb1a8ba697b80645a7a926a9d";
+      };
+    };
+    "is-utf8-0.2.1" = {
+      name = "is-utf8";
+      packageName = "is-utf8";
+      version = "0.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz";
+        sha1 = "4b0da1442104d1b336340e80797e865cf39f7d72";
+      };
+    };
+    "indent-string-2.1.0" = {
+      name = "indent-string";
+      packageName = "indent-string";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz";
+        sha1 = "8e2d48348742121b4a8218b7a137e9a52049dc80";
+      };
+    };
+    "strip-indent-1.0.1" = {
+      name = "strip-indent";
+      packageName = "strip-indent";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz";
+        sha1 = "0c7962a6adefa7bbd4ac366460a638552ae1a0a2";
+      };
+    };
+    "repeating-2.0.1" = {
+      name = "repeating";
+      packageName = "repeating";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz";
+        sha1 = "5214c53a926d3552707527fbab415dbc08d06dda";
+      };
+    };
+    "is-finite-1.0.1" = {
+      name = "is-finite";
+      packageName = "is-finite";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz";
+        sha1 = "6438603eaebe2793948ff4a4262ec8db3d62597b";
+      };
+    };
+    "number-is-nan-1.0.0" = {
+      name = "number-is-nan";
+      packageName = "number-is-nan";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz";
+        sha1 = "c020f529c5282adfdd233d91d4b181c3d686dc4b";
+      };
+    };
+    "underscore-1.5.2" = {
+      name = "underscore";
+      packageName = "underscore";
+      version = "1.5.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/underscore/-/underscore-1.5.2.tgz";
+        sha1 = "1335c5e4f5e6d33bbb4b006ba8c86a00f556de08";
+      };
+    };
+    "addressparser-0.3.2" = {
+      name = "addressparser";
+      packageName = "addressparser";
+      version = "0.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/addressparser/-/addressparser-0.3.2.tgz";
+        sha1 = "59873f35e8fcf6c7361c10239261d76e15348bb2";
+      };
+    };
+    "mimelib-0.2.14" = {
+      name = "mimelib";
+      packageName = "mimelib";
+      version = "0.2.14";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz";
+        sha1 = "2a1aa724bd190b85bd526e6317ab6106edfd6831";
+      };
+    };
+    "moment-2.11.2" = {
+      name = "moment";
+      packageName = "moment";
+      version = "2.11.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/moment/-/moment-2.11.2.tgz";
+        sha1 = "87968e5f95ac038c2e42ac959c75819cd3f52901";
+      };
+    };
+    "starttls-1.0.1" = {
+      name = "starttls";
+      packageName = "starttls";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/starttls/-/starttls-1.0.1.tgz";
+        sha1 = "e6081c25de6b178f5a75f8f271c1487449183b42";
+      };
+    };
+    "bufferjs-1.1.0" = {
+      name = "bufferjs";
+      packageName = "bufferjs";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bufferjs/-/bufferjs-1.1.0.tgz";
+        sha1 = "095ffa39c5e6b40a2178a1169c9effc584a73201";
+      };
+    };
+    "encoding-0.1.12" = {
+      name = "encoding";
+      packageName = "encoding";
+      version = "0.1.12";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz";
+        sha1 = "538b66f3ee62cd1ab51ec323829d1f9480c74beb";
+      };
+    };
+    "addressparser-0.2.1" = {
+      name = "addressparser";
+      packageName = "addressparser";
+      version = "0.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz";
+        sha1 = "d11a5b2eeda04cfefebdf3196c10ae13db6cd607";
+      };
+    };
+    "connect-1.9.2" = {
+      name = "connect";
+      packageName = "connect";
+      version = "1.9.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/connect/-/connect-1.9.2.tgz";
+        sha1 = "42880a22e9438ae59a8add74e437f58ae8e52807";
+      };
+    };
+    "mime-1.2.4" = {
+      name = "mime";
+      packageName = "mime";
+      version = "1.2.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime/-/mime-1.2.4.tgz";
+        sha1 = "11b5fdaf29c2509255176b80ad520294f5de92b7";
+      };
+    };
+    "qs-0.4.2" = {
+      name = "qs";
+      packageName = "qs";
+      version = "0.4.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/qs/-/qs-0.4.2.tgz";
+        sha1 = "3cac4c861e371a8c9c4770ac23cda8de639b8e5f";
+      };
+    };
+    "mkdirp-0.3.0" = {
+      name = "mkdirp";
+      packageName = "mkdirp";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz";
+        sha1 = "1bbf5ab1ba827af23575143490426455f481fe1e";
+      };
+    };
+    "formidable-1.0.17" = {
+      name = "formidable";
+      packageName = "formidable";
+      version = "1.0.17";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/formidable/-/formidable-1.0.17.tgz";
+        sha1 = "ef5491490f9433b705faa77249c99029ae348559";
+      };
+    };
+    "cookie-0.3.1" = {
+      name = "cookie";
+      packageName = "cookie";
+      version = "0.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz";
+        sha1 = "e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb";
+      };
+    };
+    "crc-3.4.0" = {
+      name = "crc";
+      packageName = "crc";
+      version = "3.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/crc/-/crc-3.4.0.tgz";
+        sha1 = "4258e351613a74ef1153dfcb05e820c3e9715d7f";
+      };
+    };
+    "depd-1.1.0" = {
+      name = "depd";
+      packageName = "depd";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz";
+        sha1 = "e1bd82c6aab6ced965b97b88b17ed3e528ca18c3";
+      };
+    };
+    "uid-safe-2.1.2" = {
+      name = "uid-safe";
+      packageName = "uid-safe";
+      version = "2.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.2.tgz";
+        sha1 = "c934b3caead0fdcd0fb2cff3a8876d06fe0ee0fd";
+      };
+    };
+    "base64-url-1.3.2" = {
+      name = "base64-url";
+      packageName = "base64-url";
+      version = "1.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/base64-url/-/base64-url-1.3.2.tgz";
+        sha1 = "4b08113b49d23889f306be64372762d31412f7a8";
+      };
+    };
+    "array-parallel-0.1.3" = {
+      name = "array-parallel";
+      packageName = "array-parallel";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-parallel/-/array-parallel-0.1.3.tgz";
+        sha1 = "8f785308926ed5aa478c47e64d1b334b6c0c947d";
+      };
+    };
+    "array-series-0.1.5" = {
+      name = "array-series";
+      packageName = "array-series";
+      version = "0.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-series/-/array-series-0.1.5.tgz";
+        sha1 = "df5d37bfc5c2ef0755e2aa4f92feae7d4b5a972f";
+      };
+    };
+    "cross-spawn-4.0.0" = {
+      name = "cross-spawn";
+      packageName = "cross-spawn";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.0.tgz";
+        sha1 = "8254774ab4786b8c5b3cf4dfba66ce563932c252";
+      };
+    };
+    "lru-cache-4.0.1" = {
+      name = "lru-cache";
+      packageName = "lru-cache";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz";
+        sha1 = "1343955edaf2e37d9b9e7ee7241e27c4b9fb72be";
+      };
+    };
+    "which-1.2.11" = {
+      name = "which";
+      packageName = "which";
+      version = "1.2.11";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/which/-/which-1.2.11.tgz";
+        sha1 = "c8b2eeea6b8c1659fa7c1dd4fdaabe9533dc5e8b";
+      };
+    };
+    "pseudomap-1.0.2" = {
+      name = "pseudomap";
+      packageName = "pseudomap";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz";
+        sha1 = "f052a28da70e618917ef0a8ac34c1ae5a68286b3";
+      };
+    };
+    "yallist-2.0.0" = {
+      name = "yallist";
+      packageName = "yallist";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yallist/-/yallist-2.0.0.tgz";
+        sha1 = "306c543835f09ee1a4cb23b7bce9ab341c91cdd4";
+      };
+    };
+    "isexe-1.1.2" = {
+      name = "isexe";
+      packageName = "isexe";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz";
+        sha1 = "36f3e22e60750920f5e7241a476a8c6a42275ad0";
+      };
+    };
+    "connect-3.4.1" = {
+      name = "connect";
+      packageName = "connect";
+      version = "3.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/connect/-/connect-3.4.1.tgz";
+        sha1 = "a21361d3f4099ef761cda6dc4a973bb1ebb0a34d";
+      };
+    };
+    "dns-prefetch-control-0.1.0" = {
+      name = "dns-prefetch-control";
+      packageName = "dns-prefetch-control";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.1.0.tgz";
+        sha1 = "60ddb457774e178f1f9415f0cabb0e85b0b300b2";
+      };
+    };
+    "dont-sniff-mimetype-1.0.0" = {
+      name = "dont-sniff-mimetype";
+      packageName = "dont-sniff-mimetype";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dont-sniff-mimetype/-/dont-sniff-mimetype-1.0.0.tgz";
+        sha1 = "5932890dc9f4e2f19e5eb02a20026e5e5efc8f58";
+      };
+    };
+    "frameguard-2.0.0" = {
+      name = "frameguard";
+      packageName = "frameguard";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/frameguard/-/frameguard-2.0.0.tgz";
+        sha1 = "30c2c149e5e3505f9e156f9bc491a438420e487e";
+      };
+    };
+    "helmet-csp-1.2.2" = {
+      name = "helmet-csp";
+      packageName = "helmet-csp";
+      version = "1.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/helmet-csp/-/helmet-csp-1.2.2.tgz";
+        sha1 = "085c0307d57fc96cd97337f170ab8bfea99e5df7";
+      };
+    };
+    "hide-powered-by-1.0.0" = {
+      name = "hide-powered-by";
+      packageName = "hide-powered-by";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hide-powered-by/-/hide-powered-by-1.0.0.tgz";
+        sha1 = "4a85ad65881f62857fc70af7174a1184dccce32b";
+      };
+    };
+    "hpkp-1.1.0" = {
+      name = "hpkp";
+      packageName = "hpkp";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hpkp/-/hpkp-1.1.0.tgz";
+        sha1 = "77bdff1f331847fb9f40839d00a45032baed4df4";
+      };
+    };
+    "hsts-1.0.0" = {
+      name = "hsts";
+      packageName = "hsts";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hsts/-/hsts-1.0.0.tgz";
+        sha1 = "98e1039ef7aba554057b6b0e32584c0b1143a414";
+      };
+    };
+    "ienoopen-1.0.0" = {
+      name = "ienoopen";
+      packageName = "ienoopen";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ienoopen/-/ienoopen-1.0.0.tgz";
+        sha1 = "346a428f474aac8f50cf3784ea2d0f16f62bda6b";
+      };
+    };
+    "nocache-1.0.1" = {
+      name = "nocache";
+      packageName = "nocache";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nocache/-/nocache-1.0.1.tgz";
+        sha1 = "695c9f736926a7554f7365fa25e087941065bd36";
+      };
+    };
+    "referrer-policy-1.0.0" = {
+      name = "referrer-policy";
+      packageName = "referrer-policy";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.0.0.tgz";
+        sha1 = "f60eedc92f942b01a6118121ec932d66e8fd7e14";
+      };
+    };
+    "x-xss-protection-1.0.0" = {
+      name = "x-xss-protection";
+      packageName = "x-xss-protection";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/x-xss-protection/-/x-xss-protection-1.0.0.tgz";
+        sha1 = "898afb93869b24661cf9c52f9ee8db8ed0764dd9";
+      };
+    };
+    "finalhandler-0.4.1" = {
+      name = "finalhandler";
+      packageName = "finalhandler";
+      version = "0.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.1.tgz";
+        sha1 = "85a17c6c59a94717d262d61230d4b0ebe3d4a14d";
+      };
+    };
+    "camelize-1.0.0" = {
+      name = "camelize";
+      packageName = "camelize";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz";
+        sha1 = "164a5483e630fa4321e5af07020e531831b2609b";
+      };
+    };
+    "content-security-policy-builder-1.0.0" = {
+      name = "content-security-policy-builder";
+      packageName = "content-security-policy-builder";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/content-security-policy-builder/-/content-security-policy-builder-1.0.0.tgz";
+        sha1 = "11fd40c5cc298a6c725a35f9acf71e82ab5d3243";
+      };
+    };
+    "lodash.reduce-4.5.0" = {
+      name = "lodash.reduce";
+      packageName = "lodash.reduce";
+      version = "4.5.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.5.0.tgz";
+        sha1 = "af7d2ec621062441e77d5bf408a1e071ef86691c";
+      };
+    };
+    "platform-1.3.1" = {
+      name = "platform";
+      packageName = "platform";
+      version = "1.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/platform/-/platform-1.3.1.tgz";
+        sha1 = "492210892335bd3131c0a08dda2d93ec3543e423";
+      };
+    };
+    "dashify-0.2.2" = {
+      name = "dashify";
+      packageName = "dashify";
+      version = "0.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dashify/-/dashify-0.2.2.tgz";
+        sha1 = "6a07415a01c91faf4a32e38d9dfba71f61cb20fe";
+      };
+    };
+    "abab-1.0.3" = {
+      name = "abab";
+      packageName = "abab";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz";
+        sha1 = "b81de5f7274ec4e756d797cd834f303642724e5d";
+      };
+    };
+    "acorn-2.7.0" = {
+      name = "acorn";
+      packageName = "acorn";
+      version = "2.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz";
+        sha1 = "ab6e7d9d886aaca8b085bc3312b79a198433f0e7";
+      };
+    };
+    "acorn-globals-1.0.9" = {
+      name = "acorn-globals";
+      packageName = "acorn-globals";
+      version = "1.0.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz";
+        sha1 = "55bb5e98691507b74579d0513413217c380c54cf";
+      };
+    };
+    "cssom-0.3.1" = {
+      name = "cssom";
+      packageName = "cssom";
+      version = "0.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cssom/-/cssom-0.3.1.tgz";
+        sha1 = "c9e37ef2490e64f6d1baa10fda852257082c25d3";
+      };
+    };
+    "cssstyle-0.2.37" = {
+      name = "cssstyle";
+      packageName = "cssstyle";
+      version = "0.2.37";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz";
+        sha1 = "541097234cb2513c83ceed3acddc27ff27987d54";
+      };
+    };
+    "escodegen-1.8.1" = {
+      name = "escodegen";
+      packageName = "escodegen";
+      version = "1.8.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz";
+        sha1 = "5a5b53af4693110bebb0867aa3430dd3b70a1018";
+      };
+    };
+    "nwmatcher-1.3.8" = {
+      name = "nwmatcher";
+      packageName = "nwmatcher";
+      version = "1.3.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.3.8.tgz";
+        sha1 = "34edb93de1aa6cb4448b573c9f2a059300241157";
+      };
+    };
+    "parse5-1.5.1" = {
+      name = "parse5";
+      packageName = "parse5";
+      version = "1.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz";
+        sha1 = "9b7f3b0de32be78dc2401b17573ccaf0f6f59d94";
+      };
+    };
+    "request-2.74.0" = {
+      name = "request";
+      packageName = "request";
+      version = "2.74.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/request/-/request-2.74.0.tgz";
+        sha1 = "7693ca768bbb0ea5c8ce08c084a45efa05b892ab";
+      };
+    };
+    "sax-1.2.1" = {
+      name = "sax";
+      packageName = "sax";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz";
+        sha1 = "7b8e656190b228e81a66aea748480d828cd2d37a";
+      };
+    };
+    "symbol-tree-3.1.4" = {
+      name = "symbol-tree";
+      packageName = "symbol-tree";
+      version = "3.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.1.4.tgz";
+        sha1 = "02b279348d337debc39694c5c95f882d448a312a";
+      };
+    };
+    "tough-cookie-2.3.1" = {
+      name = "tough-cookie";
+      packageName = "tough-cookie";
+      version = "2.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz";
+        sha1 = "99c77dfbb7d804249e8a299d4cb0fd81fef083fd";
+      };
+    };
+    "webidl-conversions-2.0.1" = {
+      name = "webidl-conversions";
+      packageName = "webidl-conversions";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz";
+        sha1 = "3bf8258f7d318c7443c36f2e169402a1a6703506";
+      };
+    };
+    "whatwg-url-compat-0.6.5" = {
+      name = "whatwg-url-compat";
+      packageName = "whatwg-url-compat";
+      version = "0.6.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz";
+        sha1 = "00898111af689bb097541cd5a45ca6c8798445bf";
+      };
+    };
+    "xml-name-validator-2.0.1" = {
+      name = "xml-name-validator";
+      packageName = "xml-name-validator";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz";
+        sha1 = "4d8b8f1eccd3419aa362061becef515e1e559635";
+      };
+    };
+    "estraverse-1.9.3" = {
+      name = "estraverse";
+      packageName = "estraverse";
+      version = "1.9.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz";
+        sha1 = "af67f2dc922582415950926091a4005d29c9bb44";
+      };
+    };
+    "esutils-2.0.2" = {
+      name = "esutils";
+      packageName = "esutils";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz";
+        sha1 = "0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b";
+      };
+    };
+    "esprima-2.7.3" = {
+      name = "esprima";
+      packageName = "esprima";
+      version = "2.7.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz";
+        sha1 = "96e3b70d5779f6ad49cd032673d1c312767ba581";
+      };
+    };
+    "optionator-0.8.1" = {
+      name = "optionator";
+      packageName = "optionator";
+      version = "0.8.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/optionator/-/optionator-0.8.1.tgz";
+        sha1 = "e31b4932cdd5fb862a8b0d10bc63d3ee1ec7d78b";
+      };
+    };
+    "source-map-0.2.0" = {
+      name = "source-map";
+      packageName = "source-map";
+      version = "0.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz";
+        sha1 = "dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d";
+      };
+    };
+    "prelude-ls-1.1.2" = {
+      name = "prelude-ls";
+      packageName = "prelude-ls";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz";
+        sha1 = "21932a549f5e52ffd9a827f570e04be62a97da54";
+      };
+    };
+    "deep-is-0.1.3" = {
+      name = "deep-is";
+      packageName = "deep-is";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz";
+        sha1 = "b369d6fb5dbc13eecf524f91b070feedc357cf34";
+      };
+    };
+    "wordwrap-1.0.0" = {
+      name = "wordwrap";
+      packageName = "wordwrap";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz";
+        sha1 = "27584810891456a4171c8d0226441ade90cbcaeb";
+      };
+    };
+    "type-check-0.3.2" = {
+      name = "type-check";
+      packageName = "type-check";
+      version = "0.3.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz";
+        sha1 = "5884cab512cf1d355e3fb784f30804b2b520db72";
+      };
+    };
+    "levn-0.3.0" = {
+      name = "levn";
+      packageName = "levn";
+      version = "0.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz";
+        sha1 = "3b09924edf9f083c0490fdd4c0bc4421e04764ee";
+      };
+    };
+    "fast-levenshtein-1.1.4" = {
+      name = "fast-levenshtein";
+      packageName = "fast-levenshtein";
+      version = "1.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz";
+        sha1 = "e6a754cc8f15e58987aa9cbd27af66fd6f4e5af9";
+      };
+    };
+    "amdefine-1.0.0" = {
+      name = "amdefine";
+      packageName = "amdefine";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz";
+        sha1 = "fd17474700cb5cc9c2b709f0be9d23ce3c198c33";
+      };
+    };
+    "aws-sign2-0.6.0" = {
+      name = "aws-sign2";
+      packageName = "aws-sign2";
+      version = "0.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz";
+        sha1 = "14342dd38dbcc94d0e5b87d763cd63612c0e794f";
+      };
+    };
+    "aws4-1.4.1" = {
+      name = "aws4";
+      packageName = "aws4";
+      version = "1.4.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz";
+        sha1 = "fde7d5292466d230e5ee0f4e038d9dfaab08fc61";
+      };
+    };
+    "bl-1.1.2" = {
+      name = "bl";
+      packageName = "bl";
+      version = "1.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz";
+        sha1 = "fdca871a99713aa00d19e3bbba41c44787a65398";
+      };
+    };
+    "caseless-0.11.0" = {
+      name = "caseless";
+      packageName = "caseless";
+      version = "0.11.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz";
+        sha1 = "715b96ea9841593cc33067923f5ec60ebda4f7d7";
+      };
+    };
+    "combined-stream-1.0.5" = {
+      name = "combined-stream";
+      packageName = "combined-stream";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz";
+        sha1 = "938370a57b4a51dea2c77c15d5c5fdf895164009";
+      };
+    };
+    "extend-3.0.0" = {
+      name = "extend";
+      packageName = "extend";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz";
+        sha1 = "5a474353b9f3353ddd8176dfd37b91c83a46f1d4";
+      };
+    };
+    "forever-agent-0.6.1" = {
+      name = "forever-agent";
+      packageName = "forever-agent";
+      version = "0.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz";
+        sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+      };
+    };
+    "form-data-1.0.1" = {
+      name = "form-data";
+      packageName = "form-data";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz";
+        sha1 = "ae315db9a4907fa065502304a66d7733475ee37c";
+      };
+    };
+    "har-validator-2.0.6" = {
+      name = "har-validator";
+      packageName = "har-validator";
+      version = "2.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz";
+        sha1 = "cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d";
+      };
+    };
+    "hawk-3.1.3" = {
+      name = "hawk";
+      packageName = "hawk";
+      version = "3.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz";
+        sha1 = "078444bd7c1640b0fe540d2c9b73d59678e8e1c4";
+      };
+    };
+    "http-signature-1.1.1" = {
+      name = "http-signature";
+      packageName = "http-signature";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz";
+        sha1 = "df72e267066cd0ac67fb76adf8e134a8fbcf91bf";
+      };
+    };
+    "is-typedarray-1.0.0" = {
+      name = "is-typedarray";
+      packageName = "is-typedarray";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz";
+        sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+      };
+    };
+    "isstream-0.1.2" = {
+      name = "isstream";
+      packageName = "isstream";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz";
+        sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+      };
+    };
+    "json-stringify-safe-5.0.1" = {
+      name = "json-stringify-safe";
+      packageName = "json-stringify-safe";
+      version = "5.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+        sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+      };
+    };
+    "oauth-sign-0.8.2" = {
+      name = "oauth-sign";
+      packageName = "oauth-sign";
+      version = "0.8.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz";
+        sha1 = "46a6ab7f0aead8deae9ec0565780b7d4efeb9d43";
+      };
+    };
+    "qs-6.2.1" = {
+      name = "qs";
+      packageName = "qs";
+      version = "6.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz";
+        sha1 = "ce03c5ff0935bc1d9d69a9f14cbd18e568d67625";
+      };
+    };
+    "stringstream-0.0.5" = {
+      name = "stringstream";
+      packageName = "stringstream";
+      version = "0.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz";
+        sha1 = "4e484cd4de5a0bbbee18e46307710a8a81621878";
+      };
+    };
+    "tunnel-agent-0.4.3" = {
+      name = "tunnel-agent";
+      packageName = "tunnel-agent";
+      version = "0.4.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz";
+        sha1 = "6373db76909fe570e08d73583365ed828a74eeeb";
+      };
+    };
+    "readable-stream-2.0.6" = {
+      name = "readable-stream";
+      packageName = "readable-stream";
+      version = "2.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz";
+        sha1 = "8f90341e68a53ccc928788dacfcd11b36eb9b78e";
+      };
+    };
+    "isarray-1.0.0" = {
+      name = "isarray";
+      packageName = "isarray";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz";
+        sha1 = "bb935d48582cba168c06834957a54a3e07124f11";
+      };
+    };
+    "process-nextick-args-1.0.7" = {
+      name = "process-nextick-args";
+      packageName = "process-nextick-args";
+      version = "1.0.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz";
+        sha1 = "150e20b756590ad3f91093f25a4f2ad8bff30ba3";
+      };
+    };
+    "util-deprecate-1.0.2" = {
+      name = "util-deprecate";
+      packageName = "util-deprecate";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
+        sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
+      };
+    };
+    "delayed-stream-1.0.0" = {
+      name = "delayed-stream";
+      packageName = "delayed-stream";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz";
+        sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+      };
+    };
+    "async-2.0.1" = {
+      name = "async";
+      packageName = "async";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async/-/async-2.0.1.tgz";
+        sha1 = "b709cc0280a9c36f09f4536be823c838a9049e25";
+      };
+    };
+    "lodash-4.15.0" = {
+      name = "lodash";
+      packageName = "lodash";
+      version = "4.15.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz";
+        sha1 = "3162391d8f0140aa22cf8f6b3c34d6b7f63d3aa9";
+      };
+    };
+    "chalk-1.1.3" = {
+      name = "chalk";
+      packageName = "chalk";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz";
+        sha1 = "a8115c55e4a702fe4d150abd3872822a7e09fc98";
+      };
+    };
+    "commander-2.9.0" = {
+      name = "commander";
+      packageName = "commander";
+      version = "2.9.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz";
+        sha1 = "9c99094176e12240cb22d6c5146098400fe0f7d4";
+      };
+    };
+    "is-my-json-valid-2.13.1" = {
+      name = "is-my-json-valid";
+      packageName = "is-my-json-valid";
+      version = "2.13.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz";
+        sha1 = "d55778a82feb6b0963ff4be111d5d1684e890707";
+      };
+    };
+    "ansi-styles-2.2.1" = {
+      name = "ansi-styles";
+      packageName = "ansi-styles";
+      version = "2.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz";
+        sha1 = "b432dd3358b634cf75e1e4664368240533c1ddbe";
+      };
+    };
+    "escape-string-regexp-1.0.5" = {
+      name = "escape-string-regexp";
+      packageName = "escape-string-regexp";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz";
+        sha1 = "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4";
+      };
+    };
+    "has-ansi-2.0.0" = {
+      name = "has-ansi";
+      packageName = "has-ansi";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz";
+        sha1 = "34f5049ce1ecdf2b0649af3ef24e45ed35416d91";
+      };
+    };
+    "strip-ansi-3.0.1" = {
+      name = "strip-ansi";
+      packageName = "strip-ansi";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz";
+        sha1 = "6a385fb8853d952d5ff05d0e8aaf94278dc63dcf";
+      };
+    };
+    "supports-color-2.0.0" = {
+      name = "supports-color";
+      packageName = "supports-color";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz";
+        sha1 = "535d045ce6b6363fa40117084629995e9df324c7";
+      };
+    };
+    "ansi-regex-2.0.0" = {
+      name = "ansi-regex";
+      packageName = "ansi-regex";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz";
+        sha1 = "c5061b6e0ef8a81775e50f5d66151bf6bf371107";
+      };
+    };
+    "graceful-readlink-1.0.1" = {
+      name = "graceful-readlink";
+      packageName = "graceful-readlink";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz";
+        sha1 = "4cafad76bc62f02fa039b2f94e9a3dd3a391a725";
+      };
+    };
+    "generate-function-2.0.0" = {
+      name = "generate-function";
+      packageName = "generate-function";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz";
+        sha1 = "6858fe7c0969b7d4e9093337647ac79f60dfbe74";
+      };
+    };
+    "generate-object-property-1.2.0" = {
+      name = "generate-object-property";
+      packageName = "generate-object-property";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz";
+        sha1 = "9c0e1c40308ce804f4783618b937fa88f99d50d0";
+      };
+    };
+    "jsonpointer-2.0.0" = {
+      name = "jsonpointer";
+      packageName = "jsonpointer";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz";
+        sha1 = "3af1dd20fe85463910d469a385e33017d2a030d9";
+      };
+    };
+    "xtend-4.0.1" = {
+      name = "xtend";
+      packageName = "xtend";
+      version = "4.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz";
+        sha1 = "a5c6d532be656e23db820efb943a1f04998d63af";
+      };
+    };
+    "is-property-1.0.2" = {
+      name = "is-property";
+      packageName = "is-property";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz";
+        sha1 = "57fe1c4e48474edd65b09911f26b1cd4095dda84";
+      };
+    };
+    "hoek-2.16.3" = {
+      name = "hoek";
+      packageName = "hoek";
+      version = "2.16.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz";
+        sha1 = "20bb7403d3cea398e91dc4710a8ff1b8274a25ed";
+      };
+    };
+    "boom-2.10.1" = {
+      name = "boom";
+      packageName = "boom";
+      version = "2.10.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz";
+        sha1 = "39c8918ceff5799f83f9492a848f625add0c766f";
+      };
+    };
+    "cryptiles-2.0.5" = {
+      name = "cryptiles";
+      packageName = "cryptiles";
+      version = "2.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz";
+        sha1 = "3bdfecdc608147c1c67202fa291e7dca59eaa3b8";
+      };
+    };
+    "sntp-1.0.9" = {
+      name = "sntp";
+      packageName = "sntp";
+      version = "1.0.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz";
+        sha1 = "6541184cc90aeea6c6e7b35e2659082443c66198";
+      };
+    };
+    "assert-plus-0.2.0" = {
+      name = "assert-plus";
+      packageName = "assert-plus";
+      version = "0.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz";
+        sha1 = "d74e1b87e7affc0db8aadb7021f3fe48101ab234";
+      };
+    };
+    "jsprim-1.3.1" = {
+      name = "jsprim";
+      packageName = "jsprim";
+      version = "1.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz";
+        sha1 = "2a7256f70412a29ee3670aaca625994c4dcff252";
+      };
+    };
+    "sshpk-1.10.0" = {
+      name = "sshpk";
+      packageName = "sshpk";
+      version = "1.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/sshpk/-/sshpk-1.10.0.tgz";
+        sha1 = "104d6ba2afb2ac099ab9567c0d193977f29c6dfa";
+      };
+    };
+    "extsprintf-1.0.2" = {
+      name = "extsprintf";
+      packageName = "extsprintf";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz";
+        sha1 = "e1080e0658e300b06294990cc70e1502235fd550";
+      };
+    };
+    "json-schema-0.2.3" = {
+      name = "json-schema";
+      packageName = "json-schema";
+      version = "0.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz";
+        sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+      };
+    };
+    "verror-1.3.6" = {
+      name = "verror";
+      packageName = "verror";
+      version = "1.3.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz";
+        sha1 = "cff5df12946d297d2baaefaa2689e25be01c005c";
+      };
+    };
+    "asn1-0.2.3" = {
+      name = "asn1";
+      packageName = "asn1";
+      version = "0.2.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz";
+        sha1 = "dac8787713c9966849fc8180777ebe9c1ddf3b86";
+      };
+    };
+    "assert-plus-1.0.0" = {
+      name = "assert-plus";
+      packageName = "assert-plus";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz";
+        sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+      };
+    };
+    "dashdash-1.14.0" = {
+      name = "dashdash";
+      packageName = "dashdash";
+      version = "1.14.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dashdash/-/dashdash-1.14.0.tgz";
+        sha1 = "29e486c5418bf0f356034a993d51686a33e84141";
+      };
+    };
+    "getpass-0.1.6" = {
+      name = "getpass";
+      packageName = "getpass";
+      version = "0.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz";
+        sha1 = "283ffd9fc1256840875311c1b60e8c40187110e6";
+      };
+    };
+    "jsbn-0.1.0" = {
+      name = "jsbn";
+      packageName = "jsbn";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz";
+        sha1 = "650987da0dd74f4ebf5a11377a2aa2d273e97dfd";
+      };
+    };
+    "tweetnacl-0.13.3" = {
+      name = "tweetnacl";
+      packageName = "tweetnacl";
+      version = "0.13.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz";
+        sha1 = "d628b56f3bcc3d5ae74ba9d4c1a704def5ab4b56";
+      };
+    };
+    "jodid25519-1.0.2" = {
+      name = "jodid25519";
+      packageName = "jodid25519";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz";
+        sha1 = "06d4912255093419477d425633606e0e90782967";
+      };
+    };
+    "ecc-jsbn-0.1.1" = {
+      name = "ecc-jsbn";
+      packageName = "ecc-jsbn";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz";
+        sha1 = "0fc73a9ed5f0d53c38193398523ef7e543777505";
+      };
+    };
+    "bcrypt-pbkdf-1.0.0" = {
+      name = "bcrypt-pbkdf";
+      packageName = "bcrypt-pbkdf";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz";
+        sha1 = "3ca76b85241c7170bf7d9703e7b9aa74630040d4";
+      };
+    };
+    "tweetnacl-0.14.3" = {
+      name = "tweetnacl";
+      packageName = "tweetnacl";
+      version = "0.14.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz";
+        sha1 = "3da382f670f25ded78d7b3d1792119bca0b7132d";
+      };
+    };
+    "tr46-0.0.3" = {
+      name = "tr46";
+      packageName = "tr46";
+      version = "0.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz";
+        sha1 = "8184fd347dac9cdc185992f3a6622e14b9d9ab6a";
+      };
+    };
+    "minimist-0.0.8" = {
+      name = "minimist";
+      packageName = "minimist";
+      version = "0.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz";
+        sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
+      };
+    };
+    "wordwrap-0.0.3" = {
+      name = "wordwrap";
+      packageName = "wordwrap";
+      version = "0.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz";
+        sha1 = "a3d5da6cd5c0bc0008d37234bbaf1bed63059107";
+      };
+    };
+    "minimist-0.0.10" = {
+      name = "minimist";
+      packageName = "minimist";
+      version = "0.0.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz";
+        sha1 = "de3f98543dbf96082be48ad1a0c7cda836301dcf";
+      };
+    };
+    "glob-7.0.6" = {
+      name = "glob";
+      packageName = "glob";
+      version = "7.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz";
+        sha1 = "211bafaf49e525b8cd93260d14ab136152b3f57a";
+      };
+    };
+    "fs.realpath-1.0.0" = {
+      name = "fs.realpath";
+      packageName = "fs.realpath";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz";
+        sha1 = "1504ad2523158caa40db4a2787cb01411994ea4f";
+      };
+    };
+    "htmlparser2-3.9.1" = {
+      name = "htmlparser2";
+      packageName = "htmlparser2";
+      version = "3.9.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.1.tgz";
+        sha1 = "621b7a58bc9acd003f7af0a2c9a00aa67c8505d2";
+      };
+    };
+    "regexp-quote-0.0.0" = {
+      name = "regexp-quote";
+      packageName = "regexp-quote";
+      version = "0.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/regexp-quote/-/regexp-quote-0.0.0.tgz";
+        sha1 = "1e0f4650c862dcbfed54fd42b148e9bb1721fcf2";
+      };
+    };
+    "domelementtype-1.3.0" = {
+      name = "domelementtype";
+      packageName = "domelementtype";
+      version = "1.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz";
+        sha1 = "b17aed82e8ab59e52dd9c19b1756e0fc187204c2";
+      };
+    };
+    "domhandler-2.3.0" = {
+      name = "domhandler";
+      packageName = "domhandler";
+      version = "2.3.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz";
+        sha1 = "2de59a0822d5027fabff6f032c2b25a2a8abe738";
+      };
+    };
+    "domutils-1.5.1" = {
+      name = "domutils";
+      packageName = "domutils";
+      version = "1.5.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz";
+        sha1 = "dcd8488a26f563d61079e48c9f7b7e32373682cf";
+      };
+    };
+    "entities-1.1.1" = {
+      name = "entities";
+      packageName = "entities";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz";
+        sha1 = "6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0";
+      };
+    };
+    "readable-stream-2.1.5" = {
+      name = "readable-stream";
+      packageName = "readable-stream";
+      version = "2.1.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz";
+        sha1 = "66fa8b720e1438b364681f2ad1a63c618448c9d0";
+      };
+    };
+    "dom-serializer-0.1.0" = {
+      name = "dom-serializer";
+      packageName = "dom-serializer";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz";
+        sha1 = "073c697546ce0780ce23be4a28e293e40bc30c82";
+      };
+    };
+    "domelementtype-1.1.3" = {
+      name = "domelementtype";
+      packageName = "domelementtype";
+      version = "1.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz";
+        sha1 = "bd28773e2642881aec51544924299c5cd822185b";
+      };
+    };
+    "buffer-shims-1.0.0" = {
+      name = "buffer-shims";
+      packageName = "buffer-shims";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz";
+        sha1 = "9978ce317388c649ad8793028c3477ef044a8b51";
+      };
+    };
+    "destroy-1.0.4" = {
+      name = "destroy";
+      packageName = "destroy";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz";
+        sha1 = "978857442c44749e4206613e37946205826abd80";
+      };
+    };
+    "mime-1.3.4" = {
+      name = "mime";
+      packageName = "mime";
+      version = "1.3.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz";
+        sha1 = "115f9e3b6b3daf2959983cb38f149a2d40eb5d53";
+      };
+    };
+    "range-parser-1.0.3" = {
+      name = "range-parser";
+      packageName = "range-parser";
+      version = "1.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz";
+        sha1 = "6872823535c692e2c2a0103826afd82c2e0ff175";
+      };
+    };
+    "statuses-1.2.1" = {
+      name = "statuses";
+      packageName = "statuses";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz";
+        sha1 = "dded45cc18256d51ed40aec142489d5c61026d28";
+      };
+    };
+    "yargs-3.32.0" = {
+      name = "yargs";
+      packageName = "yargs";
+      version = "3.32.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz";
+        sha1 = "03088e9ebf9e756b69751611d2a5ef591482c995";
+      };
+    };
+    "cliui-3.2.0" = {
+      name = "cliui";
+      packageName = "cliui";
+      version = "3.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz";
+        sha1 = "120601537a916d29940f934da3b48d585a39213d";
+      };
+    };
+    "os-locale-1.4.0" = {
+      name = "os-locale";
+      packageName = "os-locale";
+      version = "1.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz";
+        sha1 = "20f9f17ae29ed345e8bde583b13d2009803c14d9";
+      };
+    };
+    "string-width-1.0.2" = {
+      name = "string-width";
+      packageName = "string-width";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz";
+        sha1 = "118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3";
+      };
+    };
+    "window-size-0.1.4" = {
+      name = "window-size";
+      packageName = "window-size";
+      version = "0.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz";
+        sha1 = "f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876";
+      };
+    };
+    "y18n-3.2.1" = {
+      name = "y18n";
+      packageName = "y18n";
+      version = "3.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz";
+        sha1 = "6d15fba884c08679c0d77e88e7759e811e07fa41";
+      };
+    };
+    "wrap-ansi-2.0.0" = {
+      name = "wrap-ansi";
+      packageName = "wrap-ansi";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.0.0.tgz";
+        sha1 = "7d30f8f873f9a5bbc3a64dabc8d177e071ae426f";
+      };
+    };
+    "lcid-1.0.0" = {
+      name = "lcid";
+      packageName = "lcid";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz";
+        sha1 = "308accafa0bc483a3867b4b6f2b9506251d1b835";
+      };
+    };
+    "invert-kv-1.0.0" = {
+      name = "invert-kv";
+      packageName = "invert-kv";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz";
+        sha1 = "104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6";
+      };
+    };
+    "code-point-at-1.0.0" = {
+      name = "code-point-at";
+      packageName = "code-point-at";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/code-point-at/-/code-point-at-1.0.0.tgz";
+        sha1 = "f69b192d3f7d91e382e4b71bddb77878619ab0c6";
+      };
+    };
+    "is-fullwidth-code-point-1.0.0" = {
+      name = "is-fullwidth-code-point";
+      packageName = "is-fullwidth-code-point";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz";
+        sha1 = "ef9e31386f031a7f0d643af82fde50c457ef00cb";
+      };
+    };
+    "faye-websocket-0.10.0" = {
+      name = "faye-websocket";
+      packageName = "faye-websocket";
+      version = "0.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz";
+        sha1 = "4e492f8d04dfb6f89003507f6edbf2d501e7c6f4";
+      };
+    };
+    "uuid-2.0.2" = {
+      name = "uuid";
+      packageName = "uuid";
+      version = "2.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uuid/-/uuid-2.0.2.tgz";
+        sha1 = "48bd5698f0677e3c7901a1c46ef15b1643794726";
+      };
+    };
+    "websocket-driver-0.6.5" = {
+      name = "websocket-driver";
+      packageName = "websocket-driver";
+      version = "0.6.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz";
+        sha1 = "5cb2556ceb85f4373c6d8238aa691c8454e13a36";
+      };
+    };
+    "websocket-extensions-0.1.1" = {
+      name = "websocket-extensions";
+      packageName = "websocket-extensions";
+      version = "0.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz";
+        sha1 = "76899499c184b6ef754377c2dbb0cd6cb55d29e7";
+      };
+    };
+    "underscore-1.6.0" = {
+      name = "underscore";
+      packageName = "underscore";
+      version = "1.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz";
+        sha1 = "8b38b10cacdef63337b8b24e4ff86d45aea529a8";
+      };
+    };
+    "xml2js-0.1.14" = {
+      name = "xml2js";
+      packageName = "xml2js";
+      version = "0.1.14";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/xml2js/-/xml2js-0.1.14.tgz";
+        sha1 = "5274e67f5a64c5f92974cd85139e0332adc6b90c";
+      };
+    };
+    "mongodb-2.2.10" = {
+      name = "mongodb";
+      packageName = "mongodb";
+      version = "2.2.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mongodb/-/mongodb-2.2.10.tgz";
+        sha1 = "d11273a5a53b08e17bcc4c8a295ded0f151ccae6";
+      };
+    };
+    "es6-promise-3.2.1" = {
+      name = "es6-promise";
+      packageName = "es6-promise";
+      version = "3.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/es6-promise/-/es6-promise-3.2.1.tgz";
+        sha1 = "ec56233868032909207170c39448e24449dd1fc4";
+      };
+    };
+    "mongodb-core-2.0.12" = {
+      name = "mongodb-core";
+      packageName = "mongodb-core";
+      version = "2.0.12";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mongodb-core/-/mongodb-core-2.0.12.tgz";
+        sha1 = "bb66aad550e252731f8ad49276815264a91c337c";
+      };
+    };
+    "bson-0.5.5" = {
+      name = "bson";
+      packageName = "bson";
+      version = "0.5.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bson/-/bson-0.5.5.tgz";
+        sha1 = "1d6725d400f0fbf0271bf6bafc8fa1126c29983b";
+      };
+    };
+    "require_optional-1.0.0" = {
+      name = "require_optional";
+      packageName = "require_optional";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/require_optional/-/require_optional-1.0.0.tgz";
+        sha1 = "52a86137a849728eb60a55533617f8f914f59abf";
+      };
+    };
+    "resolve-from-2.0.0" = {
+      name = "resolve-from";
+      packageName = "resolve-from";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz";
+        sha1 = "9480ab20e94ffa1d9e80a804c7ea147611966b57";
+      };
+    };
+    "async-0.9.2" = {
+      name = "async";
+      packageName = "async";
+      version = "0.9.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/async/-/async-0.9.2.tgz";
+        sha1 = "aea74d5e61c1f899613bf64bda66d4c78f2fd17d";
+      };
+    };
+    "redis-0.10.3" = {
+      name = "redis";
+      packageName = "redis";
+      version = "0.10.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/redis/-/redis-0.10.3.tgz";
+        sha1 = "8927fe2110ee39617bcf3fd37b89d8e123911bb6";
+      };
+    };
+    "memcached-0.2.8" = {
+      name = "memcached";
+      packageName = "memcached";
+      version = "0.2.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/memcached/-/memcached-0.2.8.tgz";
+        sha1 = "ffbf9498cbc30779625b77e77770bd50dc525212";
+      };
+    };
+    "databank-0.18.2" = {
+      name = "databank";
+      packageName = "databank";
+      version = "0.18.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/databank/-/databank-0.18.2.tgz";
+        sha1 = "b1f85bafa329cdb415589c0ee819a04c989a03ed";
+      };
+    };
+    "underscore-1.4.4" = {
+      name = "underscore";
+      packageName = "underscore";
+      version = "1.4.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz";
+        sha1 = "61a6a32010622afa07963bf325203cf12239d604";
+      };
+    };
+    "hashring-0.0.8" = {
+      name = "hashring";
+      packageName = "hashring";
+      version = "0.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/hashring/-/hashring-0.0.8.tgz";
+        sha1 = "203ab13c364119f10106526d2eaf7bd42b484c31";
+      };
+    };
+    "jackpot-0.0.6" = {
+      name = "jackpot";
+      packageName = "jackpot";
+      version = "0.0.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jackpot/-/jackpot-0.0.6.tgz";
+        sha1 = "3cff064285cbf66f4eab2593c90bce816a821849";
+      };
+    };
+    "bisection-0.0.3" = {
+      name = "bisection";
+      packageName = "bisection";
+      version = "0.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/bisection/-/bisection-0.0.3.tgz";
+        sha1 = "9891d506d86ec7d50910c5157bb592dbb03f33db";
+      };
+    };
+    "simple-lru-cache-0.0.2" = {
+      name = "simple-lru-cache";
+      packageName = "simple-lru-cache";
+      version = "0.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/simple-lru-cache/-/simple-lru-cache-0.0.2.tgz";
+        sha1 = "d59cc3a193c1a5d0320f84ee732f6e4713e511dd";
+      };
+    };
+    "retry-0.6.0" = {
+      name = "retry";
+      packageName = "retry";
+      version = "0.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/retry/-/retry-0.6.0.tgz";
+        sha1 = "1c010713279a6fd1e8def28af0c3ff1871caa537";
+      };
+    };
+    "lru-cache-2.3.1" = {
+      name = "lru-cache";
+      packageName = "lru-cache";
+      version = "2.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lru-cache/-/lru-cache-2.3.1.tgz";
+        sha1 = "b3adf6b3d856e954e2c390e6cef22081245a53d6";
+      };
+    };
+  };
+  args = {
+    name = "pump.io";
+    packageName = "pump.io";
     version = "1.0.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz";
-      name = "trim-newlines-1.0.0.tgz";
-      sha1 = "5887966bb582a4503a41eb524f7d35011815a613";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."underscore"."*" =
-    self.by-version."underscore"."1.8.3";
-  by-version."underscore"."1.8.3" = self.buildNodePackage {
-    name = "underscore-1.8.3";
-    version = "1.8.3";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz";
-      name = "underscore-1.8.3.tgz";
-      sha1 = "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."underscore"."1.4.x" =
-    self.by-version."underscore"."1.4.4";
-  by-version."underscore"."1.4.4" = self.buildNodePackage {
-    name = "underscore-1.4.4";
-    version = "1.4.4";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz";
-      name = "underscore-1.4.4.tgz";
-      sha1 = "61a6a32010622afa07963bf325203cf12239d604";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "underscore" = self.by-version."underscore"."1.4.4";
-  by-spec."underscore"."1.5.x" =
-    self.by-version."underscore"."1.5.2";
-  by-version."underscore"."1.5.2" = self.buildNodePackage {
-    name = "underscore-1.5.2";
-    version = "1.5.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/underscore/-/underscore-1.5.2.tgz";
-      name = "underscore-1.5.2.tgz";
-      sha1 = "1335c5e4f5e6d33bbb4b006ba8c86a00f556de08";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."underscore"."1.6.x" =
-    self.by-version."underscore"."1.6.0";
-  by-version."underscore"."1.6.0" = self.buildNodePackage {
-    name = "underscore-1.6.0";
-    version = "1.6.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz";
-      name = "underscore-1.6.0.tgz";
-      sha1 = "8b38b10cacdef63337b8b24e4ff86d45aea529a8";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."underscore".">=1.1.3" =
-    self.by-version."underscore"."1.8.3";
-  by-spec."underscore"."^1.8.3" =
-    self.by-version."underscore"."1.8.3";
-  by-spec."underscore-contrib"."0.1.x" =
-    self.by-version."underscore-contrib"."0.1.4";
-  by-version."underscore-contrib"."0.1.4" = self.buildNodePackage {
-    name = "underscore-contrib-0.1.4";
-    version = "0.1.4";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.1.4.tgz";
-      name = "underscore-contrib-0.1.4.tgz";
-      sha1 = "db40f37f2e66961d2e0326bf65fb76887a1ca1c6";
-    };
-    deps = {
-      "underscore-1.8.3" = self.by-version."underscore"."1.8.3";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "underscore-contrib" = self.by-version."underscore-contrib"."0.1.4";
-  by-spec."util-deprecate"."~1.0.1" =
-    self.by-version."util-deprecate"."1.0.2";
-  by-version."util-deprecate"."1.0.2" = self.buildNodePackage {
-    name = "util-deprecate-1.0.2";
-    version = "1.0.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz";
-      name = "util-deprecate-1.0.2.tgz";
-      sha1 = "450d4dc9fa70de732762fbd2d4a28981419a0ccf";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."utml"."0.2.x" =
-    self.by-version."utml"."0.2.0";
-  by-version."utml"."0.2.0" = self.buildNodePackage {
-    name = "utml-0.2.0";
-    version = "0.2.0";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/utml/-/utml-0.2.0.tgz";
-      name = "utml-0.2.0.tgz";
-      sha1 = "6a546741823b2a9c17598a57e8eb4c08738dee48";
-    };
-    deps = {
-      "underscore-1.8.3" = self.by-version."underscore"."1.8.3";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "utml" = self.by-version."utml"."0.2.0";
-  by-spec."validate-npm-package-license"."^3.0.1" =
-    self.by-version."validate-npm-package-license"."3.0.1";
-  by-version."validate-npm-package-license"."3.0.1" = self.buildNodePackage {
-    name = "validate-npm-package-license-3.0.1";
-    version = "3.0.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz";
-      name = "validate-npm-package-license-3.0.1.tgz";
-      sha1 = "2804babe712ad3379459acfbe24746ab2c303fbc";
-    };
-    deps = {
-      "spdx-correct-1.0.2" = self.by-version."spdx-correct"."1.0.2";
-      "spdx-expression-parse-1.0.2" = self.by-version."spdx-expression-parse"."1.0.2";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."validator"."0.4.x" =
-    self.by-version."validator"."0.4.28";
-  by-version."validator"."0.4.28" = self.buildNodePackage {
-    name = "validator-0.4.28";
-    version = "0.4.28";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/validator/-/validator-0.4.28.tgz";
-      name = "validator-0.4.28.tgz";
-      sha1 = "311d439ae6cf3fbe6f85da6ebaccd0c7007986f4";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "validator" = self.by-version."validator"."0.4.28";
-  by-spec."vows"."0.7.x" =
-    self.by-version."vows"."0.7.0";
-  by-version."vows"."0.7.0" = self.buildNodePackage {
-    name = "vows-0.7.0";
-    version = "0.7.0";
-    bin = true;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/vows/-/vows-0.7.0.tgz";
-      name = "vows-0.7.0.tgz";
-      sha1 = "dd0065f110ba0c0a6d63e844851c3208176d5867";
-    };
-    deps = {
-      "eyes-0.1.8" = self.by-version."eyes"."0.1.8";
-      "diff-1.0.8" = self.by-version."diff"."1.0.8";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."webfinger"."~0.4.2" =
-    self.by-version."webfinger"."0.4.2";
-  by-version."webfinger"."0.4.2" = self.buildNodePackage {
-    name = "webfinger-0.4.2";
-    version = "0.4.2";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/webfinger/-/webfinger-0.4.2.tgz";
-      name = "webfinger-0.4.2.tgz";
-      sha1 = "3477a6d97799461896039fcffc650b73468ee76d";
-    };
-    deps = {
-      "step-0.0.6" = self.by-version."step"."0.0.6";
-      "xml2js-0.1.14" = self.by-version."xml2js"."0.1.14";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  "webfinger" = self.by-version."webfinger"."0.4.2";
-  by-spec."websocket-driver".">=0.5.1" =
-    self.by-version."websocket-driver"."0.6.3";
-  by-version."websocket-driver"."0.6.3" = self.buildNodePackage {
-    name = "websocket-driver-0.6.3";
-    version = "0.6.3";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.3.tgz";
-      name = "websocket-driver-0.6.3.tgz";
-      sha1 = "fd21911bb46dee34ad85bdbc5676bf9024ed087b";
-    };
-    deps = {
-      "websocket-extensions-0.1.1" = self.by-version."websocket-extensions"."0.1.1";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."websocket-extensions".">=0.1.1" =
-    self.by-version."websocket-extensions"."0.1.1";
-  by-version."websocket-extensions"."0.1.1" = self.buildNodePackage {
-    name = "websocket-extensions-0.1.1";
-    version = "0.1.1";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz";
-      name = "websocket-extensions-0.1.1.tgz";
-      sha1 = "76899499c184b6ef754377c2dbb0cd6cb55d29e7";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."wordwrap"."~0.0.2" =
-    self.by-version."wordwrap"."0.0.3";
-  by-version."wordwrap"."0.0.3" = self.buildNodePackage {
-    name = "wordwrap-0.0.3";
-    version = "0.0.3";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz";
-      name = "wordwrap-0.0.3.tgz";
-      sha1 = "a3d5da6cd5c0bc0008d37234bbaf1bed63059107";
-    };
-    deps = {
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-  by-spec."xml2js"."0.1.x" =
-    self.by-version."xml2js"."0.1.14";
-  by-version."xml2js"."0.1.14" = self.buildNodePackage {
-    name = "xml2js-0.1.14";
-    version = "0.1.14";
-    bin = false;
-    src = fetchurl {
-      url = "http://registry.npmjs.org/xml2js/-/xml2js-0.1.14.tgz";
-      name = "xml2js-0.1.14.tgz";
-      sha1 = "5274e67f5a64c5f92974cd85139e0332adc6b90c";
-    };
-    deps = {
-      "sax-1.1.4" = self.by-version."sax"."1.1.4";
-    };
-    optionalDependencies = {
-    };
-    peerDependencies = [];
-    os = [ ];
-    cpu = [ ];
-  };
-}
+    src = fetchurl { url = "https://registry.npmjs.org/pump.io/-/pump.io-1.0.0.tgz"; sha1 = "404mzdqzknrv7pl9qasksi791cc00bbd"; };
+    dependencies = [
+      (sources."bcrypt-0.8.7" // {
+        dependencies = [
+          sources."bindings-1.2.1"
+          sources."nan-2.3.5"
+        ];
+      })
+      (sources."bunyan-1.8.1" // {
+        dependencies = [
+          (sources."dtrace-provider-0.6.0" // {
+            dependencies = [
+              sources."nan-2.4.0"
+            ];
+          })
+          (sources."mv-2.1.1" // {
+            dependencies = [
+              sources."ncp-2.0.0"
+              (sources."rimraf-2.4.5" // {
+                dependencies = [
+                  (sources."glob-6.0.4" // {
+                    dependencies = [
+                      (sources."inflight-1.0.5" // {
+                        dependencies = [
+                          sources."wrappy-1.0.2"
+                        ];
+                      })
+                      sources."inherits-2.0.3"
+                      (sources."minimatch-3.0.3" // {
+                        dependencies = [
+                          (sources."brace-expansion-1.1.6" // {
+                            dependencies = [
+                              sources."balanced-match-0.4.2"
+                              sources."concat-map-0.0.1"
+                            ];
+                          })
+                        ];
+                      })
+                      (sources."once-1.4.0" // {
+                        dependencies = [
+                          sources."wrappy-1.0.2"
+                        ];
+                      })
+                      sources."path-is-absolute-1.0.0"
+                    ];
+                  })
+                ];
+              })
+            ];
+          })
+          sources."safe-json-stringify-1.0.3"
+          sources."moment-2.15.0"
+        ];
+      })
+      (sources."connect-2.30.2" // {
+        dependencies = [
+          sources."basic-auth-connect-1.0.0"
+          (sources."body-parser-1.13.3" // {
+            dependencies = [
+              sources."iconv-lite-0.4.11"
+              (sources."on-finished-2.3.0" // {
+                dependencies = [
+                  sources."ee-first-1.1.1"
+                ];
+              })
+              (sources."raw-body-2.1.7" // {
+                dependencies = [
+                  sources."bytes-2.4.0"
+                  sources."iconv-lite-0.4.13"
+                  sources."unpipe-1.0.0"
+                ];
+              })
+            ];
+          })
+          sources."bytes-2.1.0"
+          sources."cookie-0.1.3"
+          sources."cookie-parser-1.3.5"
+          sources."cookie-signature-1.0.6"
+          (sources."compression-1.5.2" // {
+            dependencies = [
+              (sources."accepts-1.2.13" // {
+                dependencies = [
+                  (sources."mime-types-2.1.11" // {
+                    dependencies = [
+                      sources."mime-db-1.23.0"
+                    ];
+                  })
+                  sources."negotiator-0.5.3"
+                ];
+              })
+              (sources."compressible-2.0.8" // {
+                dependencies = [
+                  sources."mime-db-1.23.0"
+                ];
+              })
+              sources."vary-1.0.1"
+            ];
+          })
+          (sources."connect-timeout-1.6.2" // {
+            dependencies = [
+              sources."ms-0.7.1"
+            ];
+          })
+          sources."content-type-1.0.2"
+          (sources."csurf-1.8.3" // {
+            dependencies = [
+              (sources."csrf-3.0.3" // {
+                dependencies = [
+                  sources."base64-url-1.2.2"
+                  sources."rndm-1.2.0"
+                  sources."tsscmp-1.0.5"
+                  (sources."uid-safe-2.1.1" // {
+                    dependencies = [
+                      sources."random-bytes-1.0.0"
+                    ];
+                  })
+                ];
+              })
+            ];
+          })
+          (sources."debug-2.2.0" // {
+            dependencies = [
+              sources."ms-0.7.1"
+            ];
+          })
+          sources."depd-1.0.1"
+          (sources."errorhandler-1.4.3" // {
+            dependencies = [
+              (sources."accepts-1.3.3" // {
+                dependencies = [
+                  (sources."mime-types-2.1.11" // {
+                    dependencies = [
+                      sources."mime-db-1.23.0"
+                    ];
+                  })
+                  sources."negotiator-0.6.1"
+                ];
+              })
+              sources."escape-html-1.0.3"
+            ];
+          })
+          (sources."express-session-1.11.3" // {
+            dependencies = [
+              sources."crc-3.3.0"
+              (sources."uid-safe-2.0.0" // {
+                dependencies = [
+                  sources."base64-url-1.2.1"
+                ];
+              })
+            ];
+          })
+          (sources."finalhandler-0.4.0" // {
+            dependencies = [
+              sources."escape-html-1.0.2"
+              (sources."on-finished-2.3.0" // {
+                dependencies = [
+                  sources."ee-first-1.1.1"
+                ];
+              })
+              sources."unpipe-1.0.0"
+            ];
+          })
+          sources."fresh-0.3.0"
+          (sources."http-errors-1.3.1" // {
+            dependencies = [
+              sources."inherits-2.0.3"
+              sources."statuses-1.3.0"
+            ];
+          })
+          (sources."method-override-2.3.6" // {
+            dependencies = [
+              sources."methods-1.1.2"
+              sources."vary-1.1.0"
+            ];
+          })
+          (sources."morgan-1.6.1" // {
+            dependencies = [
+              sources."basic-auth-1.0.4"
+              (sources."on-finished-2.3.0" // {
+                dependencies = [
+                  sources."ee-first-1.1.1"
+                ];
+              })
+            ];
+          })
+          (sources."multiparty-3.3.2" // {
+            dependencies = [
+              (sources."readable-stream-1.1.14" // {
+                dependencies = [
+                  sources."core-util-is-1.0.2"
+                  sources."isarray-0.0.1"
+                  sources."string_decoder-0.10.31"
+                  sources."inherits-2.0.3"
+                ];
+              })
+              sources."stream-counter-0.2.0"
+            ];
+          })
+          sources."on-headers-1.0.1"
+          sources."parseurl-1.3.1"
+          sources."pause-0.1.0"
+          sources."qs-4.0.0"
+          sources."response-time-2.3.1"
+          (sources."serve-favicon-2.3.0" // {
+            dependencies = [
+              sources."etag-1.7.0"
+              sources."ms-0.7.1"
+            ];
+          })
+          (sources."serve-index-1.7.3" // {
+            dependencies = [
+              (sources."accepts-1.2.13" // {
+                dependencies = [
+                  sources."negotiator-0.5.3"
+                ];
+              })
+              sources."batch-0.5.3"
+              sources."escape-html-1.0.3"
+              (sources."mime-types-2.1.11" // {
+                dependencies = [
+                  sources."mime-db-1.23.0"
+                ];
+              })
+            ];
+          })
+          (sources."serve-static-1.10.3" // {
+            dependencies = [
+              sources."escape-html-1.0.3"
+            ];
+          })
+          (sources."type-is-1.6.13" // {
+            dependencies = [
+              sources."media-typer-0.3.0"
+              (sources."mime-types-2.1.11" // {
+                dependencies = [
+                  sources."mime-db-1.23.0"
+                ];
+              })
+            ];
+          })
+          sources."utils-merge-1.0.0"
+          sources."vhost-3.0.2"
+        ];
+      })
+      (sources."connect-auth-0.6.1" // {
+        dependencies = [
+          (sources."connect-2.7.11" // {
+            dependencies = [
+              sources."qs-0.6.5"
+              sources."formidable-1.0.14"
+              sources."cookie-signature-1.0.1"
+              sources."buffer-crc32-0.2.1"
+              sources."cookie-0.0.5"
+              (sources."send-0.1.1" // {
+                dependencies = [
+                  sources."mime-1.2.11"
+                  sources."range-parser-0.0.4"
+                ];
+              })
+              sources."bytes-0.2.0"
+              sources."fresh-0.1.0"
+              sources."pause-0.0.1"
+              (sources."debug-2.2.0" // {
+                dependencies = [
+                  sources."ms-0.7.1"
+                ];
+              })
+            ];
+          })
+          sources."oauth-0.9.10"
+          sources."openid-0.4.1"
+        ];
+      })
+      (sources."connect-databank-1.0.3" // {
+        dependencies = [
+          sources."async-1.5.2"
+          sources."set-immediate-0.1.1"
+        ];
+      })
+      sources."crypto-cacerts-0.1.0"
+      (sources."databank-0.19.5" // {
+        dependencies = [
+          (sources."vows-0.7.0" // {
+            dependencies = [
+              sources."eyes-0.1.8"
+              sources."diff-1.0.8"
+            ];
+          })
+          sources."setimmediate-1.0.5"
+        ];
+      })
+      (sources."dateformat-1.0.12" // {
+        dependencies = [
+          sources."get-stdin-4.0.1"
+          (sources."meow-3.7.0" // {
+            dependencies = [
+              (sources."camelcase-keys-2.1.0" // {
+                dependencies = [
+                  sources."camelcase-2.1.1"
+                ];
+              })
+              sources."decamelize-1.2.0"
+              (sources."loud-rejection-1.6.0" // {
+                dependencies = [
+                  (sources."currently-unhandled-0.4.1" // {
+                    dependencies = [
+                      sources."array-find-index-1.0.1"
+                    ];
+                  })
+                  sources."signal-exit-3.0.1"
+                ];
+              })
+              sources."map-obj-1.0.1"
+              sources."minimist-1.2.0"
+              (sources."normalize-package-data-2.3.5" // {
+                dependencies = [
+                  sources."hosted-git-info-2.1.5"
+                  (sources."is-builtin-module-1.0.0" // {
+                    dependencies = [
+                      sources."builtin-modules-1.1.1"
+                    ];
+                  })
+                  sources."semver-5.3.0"
+                  (sources."validate-npm-package-license-3.0.1" // {
+                    dependencies = [
+                      (sources."spdx-correct-1.0.2" // {
+                        dependencies = [
+                          sources."spdx-license-ids-1.2.2"
+                        ];
+                      })
+                      sources."spdx-expression-parse-1.0.3"
+                    ];
+                  })
+                ];
+              })
+              sources."object-assign-4.1.0"
+              (sources."read-pkg-up-1.0.1" // {
+                dependencies = [
+                  (sources."find-up-1.1.2" // {
+                    dependencies = [
+                      sources."path-exists-2.1.0"
+                      (sources."pinkie-promise-2.0.1" // {
+                        dependencies = [
+                          sources."pinkie-2.0.4"
+                        ];
+                      })
+                    ];
+                  })
+                  (sources."read-pkg-1.1.0" // {
+                    dependencies = [
+                      (sources."load-json-file-1.1.0" // {
+                        dependencies = [
+                          sources."graceful-fs-4.1.6"
+                          (sources."parse-json-2.2.0" // {
+                            dependencies = [
+                              (sources."error-ex-1.3.0" // {
+                                dependencies = [
+                                  sources."is-arrayish-0.2.1"
+                                ];
+                              })
+                            ];
+                          })
+                          sources."pify-2.3.0"
+                          (sources."pinkie-promise-2.0.1" // {
+                            dependencies = [
+                              sources."pinkie-2.0.4"
+                            ];
+                          })
+                          (sources."strip-bom-2.0.0" // {
+                            dependencies = [
+                              sources."is-utf8-0.2.1"
+                            ];
+                          })
+                        ];
+                      })
+                      (sources."path-type-1.1.0" // {
+                        dependencies = [
+                          sources."graceful-fs-4.1.6"
+                          sources."pify-2.3.0"
+                          (sources."pinkie-promise-2.0.1" // {
+                            dependencies = [
+                              sources."pinkie-2.0.4"
+                            ];
+                          })
+                        ];
+                      })
+                    ];
+                  })
+                ];
+              })
+              (sources."redent-1.0.0" // {
+                dependencies = [
+                  (sources."indent-string-2.1.0" // {
+                    dependencies = [
+                      (sources."repeating-2.0.1" // {
+                        dependencies = [
+                          (sources."is-finite-1.0.1" // {
+                            dependencies = [
+                              sources."number-is-nan-1.0.0"
+                            ];
+                          })
+                        ];
+                      })
+                    ];
+                  })
+                  sources."strip-indent-1.0.1"
+                ];
+              })
+              sources."trim-newlines-1.0.0"
+            ];
+          })
+        ];
+      })
+      (sources."dialback-client-0.2.0" // {
+        dependencies = [
+          sources."underscore-1.5.2"
+        ];
+      })
+      sources."dompurify-0.8.3"
+      (sources."emailjs-1.0.8" // {
+        dependencies = [
+          sources."addressparser-0.3.2"
+          (sources."mimelib-0.2.14" // {
+            dependencies = [
+              (sources."encoding-0.1.12" // {
+                dependencies = [
+                  sources."iconv-lite-0.4.13"
+                ];
+              })
+              sources."addressparser-0.2.1"
+            ];
+          })
+          sources."moment-2.11.2"
+          sources."starttls-1.0.1"
+          sources."bufferjs-1.1.0"
+        ];
+      })
+      (sources."express-2.5.11" // {
+        dependencies = [
+          (sources."connect-1.9.2" // {
+            dependencies = [
+              sources."formidable-1.0.17"
+            ];
+          })
+          sources."mime-1.2.4"
+          sources."qs-0.4.2"
+          sources."mkdirp-0.3.0"
+        ];
+      })
+      (sources."express-session-1.14.1" // {
+        dependencies = [
+          sources."cookie-0.3.1"
+          sources."cookie-signature-1.0.6"
+          sources."crc-3.4.0"
+          (sources."debug-2.2.0" // {
+            dependencies = [
+              sources."ms-0.7.1"
+            ];
+          })
+          sources."depd-1.1.0"
+          sources."on-headers-1.0.1"
+          sources."parseurl-1.3.1"
+          (sources."uid-safe-2.1.2" // {
+            dependencies = [
+              sources."base64-url-1.3.2"
+              sources."random-bytes-1.0.0"
+            ];
+          })
+          sources."utils-merge-1.0.0"
+        ];
+      })
+      (sources."gm-1.23.0" // {
+        dependencies = [
+          sources."array-parallel-0.1.3"
+          sources."array-series-0.1.5"
+          (sources."cross-spawn-4.0.0" // {
+            dependencies = [
+              (sources."lru-cache-4.0.1" // {
+                dependencies = [
+                  sources."pseudomap-1.0.2"
+                  sources."yallist-2.0.0"
+                ];
+              })
+              (sources."which-1.2.11" // {
+                dependencies = [
+                  sources."isexe-1.1.2"
+                ];
+              })
+            ];
+          })
+          (sources."debug-2.2.0" // {
+            dependencies = [
+              sources."ms-0.7.1"
+            ];
+          })
+        ];
+      })
+      (sources."helmet-2.2.0" // {
+        dependencies = [
+          (sources."connect-3.4.1" // {
+            dependencies = [
+              (sources."debug-2.2.0" // {
+                dependencies = [
+                  sources."ms-0.7.1"
+                ];
+              })
+              (sources."finalhandler-0.4.1" // {
+                dependencies = [
+                  sources."escape-html-1.0.3"
+                  (sources."on-finished-2.3.0" // {
+                    dependencies = [
+                      sources."ee-first-1.1.1"
+                    ];
+                  })
+                  sources."unpipe-1.0.0"
+                ];
+              })
+              sources."parseurl-1.3.1"
+              sources."utils-merge-1.0.0"
+            ];
+          })
+          sources."dns-prefetch-control-0.1.0"
+          sources."dont-sniff-mimetype-1.0.0"
+          sources."frameguard-2.0.0"
+          (sources."helmet-csp-1.2.2" // {
+            dependencies = [
+              sources."camelize-1.0.0"
+              (sources."content-security-policy-builder-1.0.0" // {
+                dependencies = [
+                  sources."dashify-0.2.2"
+                ];
+              })
+              sources."lodash.reduce-4.5.0"
+              sources."platform-1.3.1"
+            ];
+          })
+          sources."hide-powered-by-1.0.0"
+          sources."hpkp-1.1.0"
+          (sources."hsts-1.0.0" // {
+            dependencies = [
+              sources."core-util-is-1.0.2"
+            ];
+          })
+          sources."ienoopen-1.0.0"
+          (sources."nocache-1.0.1" // {
+            dependencies = [
+              sources."depd-1.1.0"
+            ];
+          })
+          sources."referrer-policy-1.0.0"
+          sources."x-xss-protection-1.0.0"
+        ];
+      })
+      sources."jankyqueue-0.1.1"
+      (sources."jsdom-7.2.2" // {
+        dependencies = [
+          sources."abab-1.0.3"
+          sources."acorn-2.7.0"
+          sources."acorn-globals-1.0.9"
+          sources."cssom-0.3.1"
+          sources."cssstyle-0.2.37"
+          (sources."escodegen-1.8.1" // {
+            dependencies = [
+              sources."estraverse-1.9.3"
+              sources."esutils-2.0.2"
+              sources."esprima-2.7.3"
+              (sources."optionator-0.8.1" // {
+                dependencies = [
+                  sources."prelude-ls-1.1.2"
+                  sources."deep-is-0.1.3"
+                  sources."wordwrap-1.0.0"
+                  sources."type-check-0.3.2"
+                  sources."levn-0.3.0"
+                  sources."fast-levenshtein-1.1.4"
+                ];
+              })
+              (sources."source-map-0.2.0" // {
+                dependencies = [
+                  sources."amdefine-1.0.0"
+                ];
+              })
+            ];
+          })
+          sources."nwmatcher-1.3.8"
+          sources."parse5-1.5.1"
+          (sources."request-2.74.0" // {
+            dependencies = [
+              sources."aws-sign2-0.6.0"
+              sources."aws4-1.4.1"
+              (sources."bl-1.1.2" // {
+                dependencies = [
+                  (sources."readable-stream-2.0.6" // {
+                    dependencies = [
+                      sources."core-util-is-1.0.2"
+                      sources."inherits-2.0.3"
+                      sources."isarray-1.0.0"
+                      sources."process-nextick-args-1.0.7"
+                      sources."string_decoder-0.10.31"
+                      sources."util-deprecate-1.0.2"
+                    ];
+                  })
+                ];
+              })
+              sources."caseless-0.11.0"
+              (sources."combined-stream-1.0.5" // {
+                dependencies = [
+                  sources."delayed-stream-1.0.0"
+                ];
+              })
+              sources."extend-3.0.0"
+              sources."forever-agent-0.6.1"
+              (sources."form-data-1.0.1" // {
+                dependencies = [
+                  (sources."async-2.0.1" // {
+                    dependencies = [
+                      sources."lodash-4.15.0"
+                    ];
+                  })
+                ];
+              })
+              (sources."har-validator-2.0.6" // {
+                dependencies = [
+                  (sources."chalk-1.1.3" // {
+                    dependencies = [
+                      sources."ansi-styles-2.2.1"
+                      sources."escape-string-regexp-1.0.5"
+                      (sources."has-ansi-2.0.0" // {
+                        dependencies = [
+                          sources."ansi-regex-2.0.0"
+                        ];
+                      })
+                      (sources."strip-ansi-3.0.1" // {
+                        dependencies = [
+                          sources."ansi-regex-2.0.0"
+                        ];
+                      })
+                      sources."supports-color-2.0.0"
+                    ];
+                  })
+                  (sources."commander-2.9.0" // {
+                    dependencies = [
+                      sources."graceful-readlink-1.0.1"
+                    ];
+                  })
+                  (sources."is-my-json-valid-2.13.1" // {
+                    dependencies = [
+                      sources."generate-function-2.0.0"
+                      (sources."generate-object-property-1.2.0" // {
+                        dependencies = [
+                          sources."is-property-1.0.2"
+                        ];
+                      })
+                      sources."jsonpointer-2.0.0"
+                      sources."xtend-4.0.1"
+                    ];
+                  })
+                  (sources."pinkie-promise-2.0.1" // {
+                    dependencies = [
+                      sources."pinkie-2.0.4"
+                    ];
+                  })
+                ];
+              })
+              (sources."hawk-3.1.3" // {
+                dependencies = [
+                  sources."hoek-2.16.3"
+                  sources."boom-2.10.1"
+                  sources."cryptiles-2.0.5"
+                  sources."sntp-1.0.9"
+                ];
+              })
+              (sources."http-signature-1.1.1" // {
+                dependencies = [
+                  sources."assert-plus-0.2.0"
+                  (sources."jsprim-1.3.1" // {
+                    dependencies = [
+                      sources."extsprintf-1.0.2"
+                      sources."json-schema-0.2.3"
+                      sources."verror-1.3.6"
+                    ];
+                  })
+                  (sources."sshpk-1.10.0" // {
+                    dependencies = [
+                      sources."asn1-0.2.3"
+                      sources."assert-plus-1.0.0"
+                      sources."dashdash-1.14.0"
+                      sources."getpass-0.1.6"
+                      sources."jsbn-0.1.0"
+                      sources."tweetnacl-0.13.3"
+                      sources."jodid25519-1.0.2"
+                      sources."ecc-jsbn-0.1.1"
+                      (sources."bcrypt-pbkdf-1.0.0" // {
+                        dependencies = [
+                          sources."tweetnacl-0.14.3"
+                        ];
+                      })
+                    ];
+                  })
+                ];
+              })
+              sources."is-typedarray-1.0.0"
+              sources."isstream-0.1.2"
+              sources."json-stringify-safe-5.0.1"
+              (sources."mime-types-2.1.11" // {
+                dependencies = [
+                  sources."mime-db-1.23.0"
+                ];
+              })
+              sources."oauth-sign-0.8.2"
+              sources."qs-6.2.1"
+              sources."stringstream-0.0.5"
+              sources."tunnel-agent-0.4.3"
+            ];
+          })
+          sources."sax-1.2.1"
+          sources."symbol-tree-3.1.4"
+          sources."tough-cookie-2.3.1"
+          sources."webidl-conversions-2.0.1"
+          (sources."whatwg-url-compat-0.6.5" // {
+            dependencies = [
+              sources."tr46-0.0.3"
+            ];
+          })
+          sources."xml-name-validator-2.0.1"
+        ];
+      })
+      (sources."mkdirp-0.5.1" // {
+        dependencies = [
+          sources."minimist-0.0.8"
+        ];
+      })
+      sources."node-uuid-1.4.7"
+      sources."oauth-evanp-0.9.10-evanp.2"
+      (sources."optimist-0.6.1" // {
+        dependencies = [
+          sources."wordwrap-0.0.3"
+          sources."minimist-0.0.10"
+        ];
+      })
+      (sources."rimraf-2.5.4" // {
+        dependencies = [
+          (sources."glob-7.0.6" // {
+            dependencies = [
+              sources."fs.realpath-1.0.0"
+              (sources."inflight-1.0.5" // {
+                dependencies = [
+                  sources."wrappy-1.0.2"
+                ];
+              })
+              sources."inherits-2.0.3"
+              (sources."minimatch-3.0.3" // {
+                dependencies = [
+                  (sources."brace-expansion-1.1.6" // {
+                    dependencies = [
+                      sources."balanced-match-0.4.2"
+                      sources."concat-map-0.0.1"
+                    ];
+                  })
+                ];
+              })
+              (sources."once-1.4.0" // {
+                dependencies = [
+                  sources."wrappy-1.0.2"
+                ];
+              })
+              sources."path-is-absolute-1.0.0"
+            ];
+          })
+        ];
+      })
+      (sources."sanitize-html-1.13.0" // {
+        dependencies = [
+          (sources."htmlparser2-3.9.1" // {
+            dependencies = [
+              sources."domelementtype-1.3.0"
+              sources."domhandler-2.3.0"
+              (sources."domutils-1.5.1" // {
+                dependencies = [
+                  (sources."dom-serializer-0.1.0" // {
+                    dependencies = [
+                      sources."domelementtype-1.1.3"
+                    ];
+                  })
+                ];
+              })
+              sources."entities-1.1.1"
+              sources."inherits-2.0.3"
+              (sources."readable-stream-2.1.5" // {
+                dependencies = [
+                  sources."buffer-shims-1.0.0"
+                  sources."core-util-is-1.0.2"
+                  sources."isarray-1.0.0"
+                  sources."process-nextick-args-1.0.7"
+                  sources."string_decoder-0.10.31"
+                  sources."util-deprecate-1.0.2"
+                ];
+              })
+            ];
+          })
+          sources."regexp-quote-0.0.0"
+          sources."xtend-4.0.1"
+        ];
+      })
+      sources."schlock-0.2.1"
+      (sources."send-0.13.2" // {
+        dependencies = [
+          sources."debug-2.2.0"
+          sources."depd-1.1.0"
+          sources."destroy-1.0.4"
+          sources."escape-html-1.0.3"
+          sources."etag-1.7.0"
+          sources."fresh-0.3.0"
+          (sources."http-errors-1.3.1" // {
+            dependencies = [
+              sources."inherits-2.0.3"
+            ];
+          })
+          sources."mime-1.3.4"
+          sources."ms-0.7.1"
+          (sources."on-finished-2.3.0" // {
+            dependencies = [
+              sources."ee-first-1.1.1"
+            ];
+          })
+          sources."range-parser-1.0.3"
+          sources."statuses-1.2.1"
+        ];
+      })
+      (sources."showdown-1.4.3" // {
+        dependencies = [
+          (sources."yargs-3.32.0" // {
+            dependencies = [
+              sources."camelcase-2.1.1"
+              (sources."cliui-3.2.0" // {
+                dependencies = [
+                  (sources."strip-ansi-3.0.1" // {
+                    dependencies = [
+                      sources."ansi-regex-2.0.0"
+                    ];
+                  })
+                  sources."wrap-ansi-2.0.0"
+                ];
+              })
+              sources."decamelize-1.2.0"
+              (sources."os-locale-1.4.0" // {
+                dependencies = [
+                  (sources."lcid-1.0.0" // {
+                    dependencies = [
+                      sources."invert-kv-1.0.0"
+                    ];
+                  })
+                ];
+              })
+              (sources."string-width-1.0.2" // {
+                dependencies = [
+                  (sources."code-point-at-1.0.0" // {
+                    dependencies = [
+                      sources."number-is-nan-1.0.0"
+                    ];
+                  })
+                  (sources."is-fullwidth-code-point-1.0.0" // {
+                    dependencies = [
+                      sources."number-is-nan-1.0.0"
+                    ];
+                  })
+                  (sources."strip-ansi-3.0.1" // {
+                    dependencies = [
+                      sources."ansi-regex-2.0.0"
+                    ];
+                  })
+                ];
+              })
+              sources."window-size-0.1.4"
+              sources."y18n-3.2.1"
+            ];
+          })
+        ];
+      })
+      (sources."sockjs-0.3.17" // {
+        dependencies = [
+          (sources."faye-websocket-0.10.0" // {
+            dependencies = [
+              (sources."websocket-driver-0.6.5" // {
+                dependencies = [
+                  sources."websocket-extensions-0.1.1"
+                ];
+              })
+            ];
+          })
+          sources."uuid-2.0.2"
+        ];
+      })
+      sources."step-0.0.6"
+      sources."ua-parser-js-0.7.10"
+      sources."underscore-1.8.3"
+      (sources."underscore-contrib-0.3.0" // {
+        dependencies = [
+          sources."underscore-1.6.0"
+        ];
+      })
+      sources."utml-0.2.0"
+      sources."validator-4.4.0"
+      (sources."webfinger-0.4.2" // {
+        dependencies = [
+          (sources."xml2js-0.1.14" // {
+            dependencies = [
+              sources."sax-1.2.1"
+            ];
+          })
+        ];
+      })
+      (sources."databank-mongodb-0.19.0" // {
+        dependencies = [
+          (sources."debug-2.2.0" // {
+            dependencies = [
+              sources."ms-0.7.1"
+            ];
+          })
+          (sources."mongodb-2.2.10" // {
+            dependencies = [
+              sources."es6-promise-3.2.1"
+              (sources."mongodb-core-2.0.12" // {
+                dependencies = [
+                  sources."bson-0.5.5"
+                  (sources."require_optional-1.0.0" // {
+                    dependencies = [
+                      sources."semver-5.3.0"
+                      sources."resolve-from-2.0.0"
+                    ];
+                  })
+                ];
+              })
+              (sources."readable-stream-2.1.5" // {
+                dependencies = [
+                  sources."buffer-shims-1.0.0"
+                  sources."core-util-is-1.0.2"
+                  sources."inherits-2.0.3"
+                  sources."isarray-1.0.0"
+                  sources."process-nextick-args-1.0.7"
+                  sources."string_decoder-0.10.31"
+                  sources."util-deprecate-1.0.2"
+                ];
+              })
+            ];
+          })
+        ];
+      })
+      (sources."databank-redis-0.19.6" // {
+        dependencies = [
+          sources."async-0.9.2"
+          sources."redis-0.10.3"
+          sources."underscore-1.6.0"
+        ];
+      })
+      (sources."databank-memcached-0.15.0" // {
+        dependencies = [
+          (sources."memcached-0.2.8" // {
+            dependencies = [
+              (sources."hashring-0.0.8" // {
+                dependencies = [
+                  sources."bisection-0.0.3"
+                  sources."simple-lru-cache-0.0.2"
+                ];
+              })
+              (sources."jackpot-0.0.6" // {
+                dependencies = [
+                  sources."retry-0.6.0"
+                ];
+              })
+            ];
+          })
+          (sources."databank-0.18.2" // {
+            dependencies = [
+              (sources."vows-0.7.0" // {
+                dependencies = [
+                  sources."eyes-0.1.8"
+                  sources."diff-1.0.8"
+                ];
+              })
+              sources."set-immediate-0.1.1"
+            ];
+          })
+          sources."underscore-1.4.4"
+        ];
+      })
+      (sources."databank-lrucache-0.1.2" // {
+        dependencies = [
+          sources."underscore-1.5.2"
+          sources."lru-cache-2.3.1"
+          sources."set-immediate-0.1.1"
+        ];
+      })
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      homepage = http://pump.io/;
+      license = "Apache-2.0";
+    };
+    production = true;
+  };
+in
+{
+  tarball = nodeEnv.buildNodeSourceDist args;
+  package = nodeEnv.buildNodePackage args;
+  shell = nodeEnv.buildNodeShell args;
+}
\ No newline at end of file
diff --git a/pkgs/shells/oh-my-zsh/default.nix b/pkgs/shells/oh-my-zsh/default.nix
index a7abd36618ad..fe0e2d3c4b66 100644
--- a/pkgs/shells/oh-my-zsh/default.nix
+++ b/pkgs/shells/oh-my-zsh/default.nix
@@ -6,13 +6,13 @@
 { stdenv, fetchgit }:
 
 stdenv.mkDerivation rec {
-  name = "oh-my-zsh-git-${version}";
-  version = "2016-09-24";
+  name = "oh-my-zsh-${version}";
+  version = "2016-10-08";
 
   src = fetchgit {
     url = "https://github.com/robbyrussell/oh-my-zsh";
-    rev = "57fcee0f1c520a7c5e3aa5e2bde974154cdaf0c3";
-    sha256 = "1zpmmfrf59almpr41b2q0ngc6rvqc0fs8dckfzd9by07rq6kp5kc";
+    rev = "cd37d19ddaf9cc5acbf443f93f88ca355f74090d";
+    sha256 = "1vqgxbd09jhysjhp0xq48673xxry0xcs8mq2wrx5zs7chhq1w2y3";
   };
 
   phases = "installPhase";
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   chmod -R +w templates
 
   # Change the path to oh-my-zsh dir and disable auto-updating.
-  sed -i -e "2c\\ZSH=$outdir/" \
+  sed -i -e "s#ZSH=\$HOME/.oh-my-zsh#ZSH=$outdir#" \
          -e 's/\# \(DISABLE_AUTO_UPDATE="true"\)/\1/' \
    $template
 
diff --git a/pkgs/shells/zsh-syntax-highlighting/default.nix b/pkgs/shells/zsh-syntax-highlighting/default.nix
index 301ad13fa738..792a8875db4d 100644
--- a/pkgs/shells/zsh-syntax-highlighting/default.nix
+++ b/pkgs/shells/zsh-syntax-highlighting/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
     description = "Fish shell like syntax highlighting for Zsh";
     homepage = "https://github.com/zsh-users/zsh-syntax-highlighting";
     license = licenses.bsd3;
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     maintainers = [ maintainers.loskutov ];
   };
 }
diff --git a/pkgs/tools/backup/bup/default.nix b/pkgs/tools/backup/bup/default.nix
index f1774507225e..075f1653adf8 100644
--- a/pkgs/tools/backup/bup/default.nix
+++ b/pkgs/tools/backup/bup/default.nix
@@ -22,12 +22,6 @@ stdenv.mkDerivation rec {
   buildInputs = [ git pythonPackages.python ];
   nativeBuildInputs = [ pandoc perl makeWrapper ];
 
-  patches = optional stdenv.isDarwin (fetchurl {
-    url = "https://github.com/bup/bup/commit/75d089e7cdb7a7eb4d69c352f56dad5ad3aa1f97.diff";
-    sha256 = "05kp47p30a45ip0fg090vijvzc7ijr0alc3y8kjl6bvv3gliails";
-    name = "darwin_10_10.patch";
-  });
-
   postPatch = ''
     patchShebangs .
     substituteInPlace Makefile --replace "-Werror" ""
@@ -49,7 +43,9 @@ stdenv.mkDerivation rec {
     wrapProgram $out/bin/bup \
       --prefix PATH : ${git}/bin \
       --prefix PYTHONPATH : ${concatStringsSep ":" (map (x: "$(toPythonPath ${x})")
-        (with pythonPackages; [ pyxattr pylibacl setuptools fuse tornado ]))}
+        (with pythonPackages;
+         [ setuptools tornado ]
+         ++ stdenv.lib.optionals (!stdenv.isDarwin) [ pyxattr pylibacl fuse ]))}
   '';
 
   meta = {
diff --git a/pkgs/tools/backup/rdup/default.nix b/pkgs/tools/backup/rdup/default.nix
index 8ca07e2c8235..33e3c77db887 100644
--- a/pkgs/tools/backup/rdup/default.nix
+++ b/pkgs/tools/backup/rdup/default.nix
@@ -19,6 +19,6 @@ stdenv.mkDerivation rec {
     homepage    = "https://github.com/miekg/rdup";
     license    = stdenv.lib.licenses.gpl3;
     platforms   = stdenv.lib.platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ lukasepple ];
+    maintainers = with stdenv.lib.maintainers; [ sternenseemann ];
   };
 }
diff --git a/pkgs/tools/compression/lhasa/default.nix b/pkgs/tools/compression/lhasa/default.nix
new file mode 100644
index 000000000000..f270d29a694f
--- /dev/null
+++ b/pkgs/tools/compression/lhasa/default.nix
@@ -0,0 +1,21 @@
+{stdenv, fetchurl}:
+
+stdenv.mkDerivation {
+  name = "lhasa-0.3.1";
+  src = fetchurl {
+    url = https://soulsphere.org/projects/lhasa/lhasa-0.3.1.tar.gz;
+    sha256 = "092zi9av18ma20c6h9448k0bapvx2plnp292741dvfd9hmgqxc1z";
+  };
+  meta = {
+    description = "Free Software replacement for the Unix LHA tool";
+    longDescription = ''
+      Lhasa is a Free Software replacement for the Unix LHA tool, for
+      decompressing .lzh (LHA / LHarc) and .lzs (LArc) archives. The backend for
+      the tool is a library, so that it can be reused for other purposes.
+    '';
+    license = stdenv.lib.licenses.isc;
+    homepage = http://fragglet.github.io/lhasa;
+    maintainers = with stdenv.lib; [ maintainers.sander ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/tools/filesystems/afpfs-ng/default.nix b/pkgs/tools/filesystems/afpfs-ng/default.nix
new file mode 100644
index 000000000000..bfa45c9930e4
--- /dev/null
+++ b/pkgs/tools/filesystems/afpfs-ng/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, fuse, readline, libgcrypt, gmp }:
+
+stdenv.mkDerivation rec {
+  name = "afpfs-ng-${version}";
+  version = "0.8.2";
+
+  src = fetchFromGitHub {
+    owner  = "simonvetter";
+    repo   = "afpfs-ng";
+    rev    = "f6e24eb73c9283732c3b5d9cb101a1e2e4fade3e";
+    sha256 = "125jx1rsqkiifcffyjb05b2s36rllckdgjaf1bay15k9gzhwwldz";
+  };
+
+  buildInputs = [ fuse readline libgcrypt gmp ];
+
+  meta = with stdenv.lib; {
+    homepage    = https://github.com/simonvetter/afpfs-ng;
+    description = "A client implementation of the Apple Filing Protocol";
+    license     = licenses.gpl2;
+    maintainers = with maintainers; [ rnhmjoj ];
+    platform    = platforms.linux;
+  };
+
+}
diff --git a/pkgs/tools/filesystems/f2fs-tools/default.nix b/pkgs/tools/filesystems/f2fs-tools/default.nix
index 3173c13dc574..acc3b5183fe1 100644
--- a/pkgs/tools/filesystems/f2fs-tools/default.nix
+++ b/pkgs/tools/filesystems/f2fs-tools/default.nix
@@ -1,16 +1,16 @@
-{ stdenv, fetchurl, autoreconfHook, libuuid, pkgconfig }:
+{ stdenv, fetchurl, autoreconfHook, libselinux, libuuid, pkgconfig }:
 
 stdenv.mkDerivation rec {
   name = "f2fs-tools-${version}";
-  version = "1.6.1";
+  version = "1.7.0";
 
   src = fetchurl {
     url = "http://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git/snapshot/${name}.tar.gz";
-    sha256 = "1fkq1iqr5kxs6ihhbmjk4i19q395azcl60mnslqwfrlbrd3p40gm";
+    sha256 = "1m6bn1ibq0p53m0n97il91xqgjgn2pzlz74lb5bfzassx7159m1k";
   };
 
   nativeBuildInputs = [ autoreconfHook ];
-  buildInputs = [ libuuid pkgconfig ];
+  buildInputs = [ libselinux libuuid pkgconfig ];
 
   meta = with stdenv.lib; {
     homepage = "http://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git/";
diff --git a/pkgs/tools/misc/geteltorito/default.nix b/pkgs/tools/misc/geteltorito/default.nix
index 9e936548050f..ec011aaa0079 100644
--- a/pkgs/tools/misc/geteltorito/default.nix
+++ b/pkgs/tools/misc/geteltorito/default.nix
@@ -1,14 +1,12 @@
-{ stdenv, perl, ronn, fetchFromGitHub }:
+{ stdenv, perl, ronn, fetchurl }:
 
 stdenv.mkDerivation rec {
   name = "geteltorito-${version}";
   version = "0.6";
 
-  src = fetchFromGitHub {
-      owner = "Profpatsch";
-      repo = "geteltorito";
-      rev = version;
-      sha256 = "05bcn3pam29xmsz1ykyqsdbkz8y23kcrvvhm987f65wd1g741f75";
+  src = fetchurl {
+    url = "https://userpages.uni-koblenz.de/~krienke/ftp/noarch/geteltorito/geteltorito-${version}.tar.gz";
+    sha256 = "1gkbm9ahj2mgqrkrfpibzclsriqgsbsvjh19fr815vpd9f6snkxv";
   };
 
   buildInputs = [ perl ronn ];
diff --git a/pkgs/tools/misc/lf/default.nix b/pkgs/tools/misc/lf/default.nix
new file mode 100644
index 000000000000..80b8457f07f4
--- /dev/null
+++ b/pkgs/tools/misc/lf/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "lf-unstable-${version}";
+  version = "2016-10-02";
+
+  goPackagePath = "github.com/gokcehan/lf";
+
+  src = fetchFromGitHub {
+    owner = "gokcehan";
+    repo = "lf";
+    rev = "7a851f6c720380a6b9f715542906a56334e7e98b"; # nightly
+    sha256 = "0hdxcibly3algz0hgy65xr3dxchf4aarpxdgxsgc67m1knizksjr";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "A terminal file manager written in Go and heavily inspired by ranger";
+    longDescription = ''
+      lf (as in "list files") is a terminal file manager written in Go. It is
+      heavily inspired by ranger with some missing and extra features. Some of
+      the missing features are deliberately omitted since it is better if they
+      are handled by external tools.
+    '';
+    homepage = "https://godoc.org/github.com/gokcehan/lf";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/pkgs/tools/misc/lf/deps.nix b/pkgs/tools/misc/lf/deps.nix
new file mode 100644
index 000000000000..ebd11853291e
--- /dev/null
+++ b/pkgs/tools/misc/lf/deps.nix
@@ -0,0 +1,20 @@
+[
+  {
+    goPackagePath = "github.com/nsf/termbox-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/nsf/termbox-go";
+      rev = "b6acae516ace002cb8105a89024544a1480655a5"; # master
+      sha256 = "0zf95qdd5bif9rw03hqk87x7d905p373bvsj0bl4gi16spqjbdil";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-runewidth";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-runewidth";
+      rev = "d6bea18f789704b5f83375793155289da36a3c7f"; # v0.0.1
+      sha256 = "1hnigpn7rjbwd1ircxkyx9hvi0xmxr32b2jdy2jzw6b3jmcnz1fs";
+    };
+  }
+]
diff --git a/pkgs/tools/misc/nixbot/default.nix b/pkgs/tools/misc/nixbot/default.nix
new file mode 100644
index 000000000000..6fb0b9c8201b
--- /dev/null
+++ b/pkgs/tools/misc/nixbot/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, python3Packages, fetchFromGitHub }:
+
+python3Packages.buildPythonApplication rec {
+  name = "nixbot-unstable-2016-10-09";
+
+  src = fetchFromGitHub {
+    owner = "domenkozar";
+    repo = "nixbot";
+    rev = "dc490e4954cb08f0eff97f74ad39dedb54670aa9";
+    sha256 = "1l8rlhd2b7x5m79vb2vgszachygasv0pk8drnwgxyvsn0k88xcan";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    pygit2 pyramid waitress github3_py
+  ];
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    desciption = "Github bot for reviewing/testing pull requests with the help of Hydra";
+    maintainers = with maintainers; [ domenkozar fpletz globin ];
+    license = licenses.asl20;
+    homepage = https://github.com/domenkozar/nixbot;
+  };
+}
diff --git a/pkgs/tools/misc/svtplay-dl/default.nix b/pkgs/tools/misc/svtplay-dl/default.nix
index 437be3a46808..5a5d8df26ce1 100644
--- a/pkgs/tools/misc/svtplay-dl/default.nix
+++ b/pkgs/tools/misc/svtplay-dl/default.nix
@@ -5,13 +5,13 @@ let
   inherit (pythonPackages) python nose pycrypto requests2 mock;
 in stdenv.mkDerivation rec {
   name = "svtplay-dl-${version}";
-  version = "1.5";
+  version = "1.6";
 
   src = fetchFromGitHub {
     owner = "spaam";
     repo = "svtplay-dl";
     rev = version;
-    sha256 = "1hmg49fhvdf7yjybxmky4ymy5s4mgbh9b8pbgyfnhm1i3s544bz2";
+    sha256 = "12r4yazsxk09sampiz9j1jqgzm3136h5fgbbdaiwg43b0y1sjg3d";
   };
 
   pythonPaths = [ pycrypto requests2 ];
diff --git a/pkgs/tools/misc/thin-provisioning-tools/default.nix b/pkgs/tools/misc/thin-provisioning-tools/default.nix
new file mode 100644
index 000000000000..5d43679b6fe6
--- /dev/null
+++ b/pkgs/tools/misc/thin-provisioning-tools/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, expat, libaio, boost }:
+
+stdenv.mkDerivation rec {
+  name = "thin-provisioning-tools-${version}";
+  version = "0.6.3";
+
+  src = fetchFromGitHub {
+    owner = "jthornber";
+    repo = "thin-provisioning-tools";
+    rev = "v${version}";
+    sha256 = "0glwhfzwj9afbqdv59ppgfqy7rik8m0vcap7279fpnvwpr1c2p5n";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+
+  buildInputs = [ expat libaio boost ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/jthornber/thin-provisioning-tools/;
+    description = "A suite of tools for manipulating the metadata of the dm-thin device-mapper target";
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ globin ];
+  };
+}
diff --git a/pkgs/tools/misc/umlet/default.nix b/pkgs/tools/misc/umlet/default.nix
index cc51af22f851..8ef357f65eb6 100644
--- a/pkgs/tools/misc/umlet/default.nix
+++ b/pkgs/tools/misc/umlet/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchurl, jre, unzip }:
 
 stdenv.mkDerivation rec {
-  major = "13";
-  minor = "3";
+  major = "14";
+  minor = "2";
   version = "${major}.${minor}";
   name = "umlet-${version}";
 
   src = fetchurl {
-    url = "http://www.umlet.com/umlet_${major}_${minor}/umlet_${version}.zip";
-    sha256 = "0fbr51xknk98qz576lcl25qz0s1snns2yb0j54d77xkw7pnxmvzr";
+    url = "http://www.umlet.com/umlet_${major}_${minor}/umlet-standalone-${version}.zip";
+    sha256 = "1fcc7ms92vcc4b8jh56bd3zrqdb0bwhbbzdxycc952fb0j6m62fw";
   };
 
   buildInputs = [ unzip ];
diff --git a/pkgs/tools/misc/vdirsyncer/default.nix b/pkgs/tools/misc/vdirsyncer/default.nix
index 51762006b623..998679e15eb8 100644
--- a/pkgs/tools/misc/vdirsyncer/default.nix
+++ b/pkgs/tools/misc/vdirsyncer/default.nix
@@ -1,14 +1,17 @@
-{ stdenv, fetchurl, pythonPackages, glibcLocales }:
+{ stdenv, fetchurl, python3Packages, glibcLocales }:
 
 # Packaging documentation at:
 # https://github.com/untitaker/vdirsyncer/blob/master/docs/packaging.rst
+let
+  pythonPackages = python3Packages;
+in
 pythonPackages.buildPythonApplication rec {
-  version = "0.11.3";
+  version = "0.13.1";
   name = "vdirsyncer-${version}";
 
   src = fetchurl {
     url = "mirror://pypi/v/vdirsyncer/${name}.tar.gz";
-    sha256 = "10majl58vdpxgbddjqgwblvl7akvvr4c2c8iaxnf3kgyh01jq6k9";
+    sha256 = "1c4kipcc7dx1rn5j1a1x7wckz09mm9ihwakf3ramwn1y78q5zanb";
   };
 
   propagatedBuildInputs = with pythonPackages; [
diff --git a/pkgs/tools/misc/xtitle/default.nix b/pkgs/tools/misc/xtitle/default.nix
index 600f40a67b7d..4be863993901 100644
--- a/pkgs/tools/misc/xtitle/default.nix
+++ b/pkgs/tools/misc/xtitle/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, libxcb, xcbutil, xcbutilwm, git }:
 
 stdenv.mkDerivation rec {
-   name = "xtitle-0.2";
+   name = "xtitle-0.3";
 
    src = fetchurl {
-     url = "https://github.com/baskerville/xtitle/archive/0.2.tar.gz";
-     sha256 = "1wyhfwbwqnq4rn6i789gydxlg25ylc37xjrkq758bp55sdgb8fk2";
+     url = "https://github.com/baskerville/xtitle/archive/0.3.tar.gz";
+     sha256 = "07r36f4ad1q0dpkx3ykd49xlmi24d8mjqwh40j228k81wsvzayl1";
    };
 
 
diff --git a/pkgs/tools/networking/gmvault/default.nix b/pkgs/tools/networking/gmvault/default.nix
index 47e1360df8f2..72efc703b108 100644
--- a/pkgs/tools/networking/gmvault/default.nix
+++ b/pkgs/tools/networking/gmvault/default.nix
@@ -1,19 +1,19 @@
 { pkgs, fetchurl, pythonPackages }:
 
 pythonPackages.buildPythonApplication rec {
-  version = "1.8.1-beta";
+  version = "1.9.1";
   name = "gmvault-${version}";
 
   src = fetchurl {
     url = "https://bitbucket.org/gaubert/gmvault-official-download/downloads/gmvault-v${version}-src.tar.gz";
     name = "${name}.tar.bz";
-    sha256 = "0b575cnrd6jzcpa05mbn2swzcy0r9ck09pkhs4ydj6d3ir52j80c";
+    sha256 = "0ffp8df3gdf6lf3pj75hzsmxmvmscppb6bjda58my1n4ppxp1rji";
   };
 
   doCheck = false;
 
   propagatedBuildInputs = with pythonPackages; [ gdata IMAPClient Logbook
-    argparse ];
+    argparse chardet ];
 
   startScript = ./gmvault.py;
 
diff --git a/pkgs/tools/networking/host/default.nix b/pkgs/tools/networking/host/default.nix
deleted file mode 100644
index 85f94ccba105..000000000000
--- a/pkgs/tools/networking/host/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ fetchurl, stdenv }:
-
-let version = "20000331"; in
-
-stdenv.mkDerivation {
-  name = "host-${version}";
-
-  src = fetchurl {
-    url = "mirror://debian/pool/main/h/host/host_${version}.orig.tar.gz";
-    sha256 = "1g352k80arhwyidsa95nk28xjvzyypmwv3kga2451m3g7fmdqki1";
-  };
-
-  preConfigure = ''
-    makeFlagsArray=(DESTBIN=$out/bin DESTMAN=$out/share/man OWNER=$(id -u) GROUP=$(id -g))
-    mkdir -p "$out/bin"
-    mkdir -p "$out/share/man/man1"
-  '';
-
-  installTargets = "install man";
-
-  meta = {
-    description = "DNS resolution utility";
-    license = "BSD-style";
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/tools/networking/httpstat/default.nix b/pkgs/tools/networking/httpstat/default.nix
new file mode 100644
index 000000000000..49f71f448051
--- /dev/null
+++ b/pkgs/tools/networking/httpstat/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, curl, python, pythonPackages, ... }:
+
+pythonPackages.buildPythonPackage rec {
+    name = "${pname}-${version}";
+    pname = "httpstat";
+    version = "1.2.0";
+    src = fetchFromGitHub {
+      owner = "reorx";
+      repo = pname;
+      rev = "${version}";
+      sha256 = "1zfbv3fz3g3wwvsgrcyrk2cp7pjhkpf7lmx57ry9b43c62gcd7yh";
+    };
+    doCheck = false;
+    propagatedBuildInputs = [ ];
+    runtimeDeps = [ curl ];
+
+    installPhase = ''
+      mkdir -p $out/${python.sitePackages}/
+      cp httpstat.py $out/${python.sitePackages}/
+      mkdir -p $out/bin
+      ln -s $out/${python.sitePackages}/httpstat.py $out/bin/httpstat
+      chmod +x $out/bin/httpstat
+    '';
+
+    meta = {
+      description = "curl statistics made simple";
+      homepage = https://github.com/reorx/httpstat;
+      license = stdenv.lib.licenses.mit;
+      maintainers = with stdenv.lib.maintainers; [ nequissimus ];
+    };
+  }
diff --git a/pkgs/tools/networking/modemmanager/default.nix b/pkgs/tools/networking/modemmanager/default.nix
index 77c71f38331c..9fe4b4421a7f 100644
--- a/pkgs/tools/networking/modemmanager/default.nix
+++ b/pkgs/tools/networking/modemmanager/default.nix
@@ -1,17 +1,18 @@
-{ stdenv, fetchurl, udev, libgudev, polkit, dbus_glib, ppp, intltool, pkgconfig, libmbim, libqmi }:
+{ stdenv, fetchurl, udev, libgudev, polkit, dbus_glib, ppp, intltool, pkgconfig
+, libmbim, libqmi, systemd }:
 
 stdenv.mkDerivation rec {
   name = "ModemManager-${version}";
-  version = "1.4.6";
+  version = "1.6.2";
 
   src = fetchurl {
     url = "http://www.freedesktop.org/software/ModemManager/${name}.tar.xz";
-    sha256 = "1kd5nn5rm88c8rgmzwy2fsf3cr7fai7r85mi61kcby0hcgsapv8c";
+    sha256 = "14v31j916h63z7af107rias1zbb2y94p3jg77zhzhrn1v6c46m74";
   };
 
   nativeBuildInputs = [ intltool pkgconfig ];
 
-  buildInputs = [ udev libgudev polkit dbus_glib ppp libmbim libqmi ];
+  buildInputs = [ udev libgudev polkit dbus_glib ppp libmbim libqmi systemd ];
 
   configureFlags = [
     "--with-polkit"
@@ -19,6 +20,7 @@ stdenv.mkDerivation rec {
     "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
     "--sysconfdir=/etc"
     "--localstatedir=/var"
+    "--with-suspend-resume=systemd"
   ];
 
   installFlags = [ "DESTDIR=\${out}" ];
diff --git a/pkgs/tools/networking/network-manager-applet/default.nix b/pkgs/tools/networking/network-manager-applet/default.nix
index 7f6620af4c95..0cb5c92abec8 100644
--- a/pkgs/tools/networking/network-manager-applet/default.nix
+++ b/pkgs/tools/networking/network-manager-applet/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, intltool, pkgconfig, libglade, networkmanager, gnome3
-, libnotify, libsecret, polkit, isocodes
+, libnotify, libsecret, polkit, isocodes, modemmanager
 , mobile_broadband_provider_info, glib_networking, gsettings_desktop_schemas
-, makeWrapper, udev, libgudev, hicolor_icon_theme }:
+, makeWrapper, udev, libgudev, hicolor_icon_theme, jansson }:
 
 stdenv.mkDerivation rec {
   name    = "${pname}-${version}";
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url    = "mirror://gnome/sources/${pname}/${networkmanager.major}/${name}.tar.xz";
-    sha256 = "02b42e7c17c9cd6c840563750da92ce58da1ec621df7f0c2402016026e727756";
+    sha256 = "431b7b4876638c6a537c8bf9c91a9250532b3d960b22b056df554695a81e4499";
   };
 
   configureFlags = [ "--sysconfdir=/etc" ];
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
   buildInputs = [
     gnome3.gtk libglade networkmanager libnotify libsecret gsettings_desktop_schemas
     polkit isocodes makeWrapper udev libgudev gnome3.gconf gnome3.libgnome_keyring
+    modemmanager jansson
   ];
 
   nativeBuildInputs = [ intltool pkgconfig ];
diff --git a/pkgs/tools/networking/network-manager/default.nix b/pkgs/tools/networking/network-manager/default.nix
index 57bf1a51a1ae..608b9ea17fe1 100644
--- a/pkgs/tools/networking/network-manager/default.nix
+++ b/pkgs/tools/networking/network-manager/default.nix
@@ -7,12 +7,12 @@
 stdenv.mkDerivation rec {
   name    = "network-manager-${version}";
   pname   = "NetworkManager";
-  major   = "1.2";
+  major   = "1.4";
   version = "${major}.2";
 
   src = fetchurl {
     url    = "mirror://gnome/sources/${pname}/${major}/${pname}-${version}.tar.xz";
-    sha256 = "41d8082e027f58bb5fa4181f93742606ab99c659794a18e2823eff22df0eecd9";
+    sha256 = "a864e347ddf6da8dabd40e0185b8c10a655d4a94b45cbaa2b3bb4b5e8360d204";
   };
 
   preConfigure = ''
diff --git a/pkgs/tools/networking/network-manager/openconnect.nix b/pkgs/tools/networking/network-manager/openconnect.nix
index b1b24bceb576..303ca70aace1 100644
--- a/pkgs/tools/networking/network-manager/openconnect.nix
+++ b/pkgs/tools/networking/network-manager/openconnect.nix
@@ -4,10 +4,11 @@
 stdenv.mkDerivation rec {
   name    = "${pname}${if withGnome then "-gnome" else ""}-${version}";
   pname   = "NetworkManager-openconnect";
-  version = networkmanager.version;
+  major   = "1.2";
+  version = "${major}.2";
 
   src = fetchurl {
-    url    = "mirror://gnome/sources/${pname}/${networkmanager.major}/${pname}-${version}.tar.xz";
+    url    = "mirror://gnome/sources/${pname}/${major}/${pname}-${version}.tar.xz";
     sha256 = "522979593e21b4e884112816708db9eb66148b3491580dacfad53472b94aafec";
   };
 
diff --git a/pkgs/tools/networking/network-manager/openvpn.nix b/pkgs/tools/networking/network-manager/openvpn.nix
index 6fd1a666f0e8..92dc45ac82c0 100644
--- a/pkgs/tools/networking/network-manager/openvpn.nix
+++ b/pkgs/tools/networking/network-manager/openvpn.nix
@@ -4,11 +4,12 @@
 stdenv.mkDerivation rec {
   name    = "${pname}${if withGnome then "-gnome" else ""}-${version}";
   pname   = "NetworkManager-openvpn";
-  version = networkmanager.version;
+  major   = "1.2";
+  version = "${major}.6";
 
   src = fetchurl {
-    url    = "mirror://gnome/sources/${pname}/${networkmanager.major}/${pname}-${version}.tar.xz";
-    sha256 = "47a6d219a781eff8491c7876b7fb95b12dcfb8f8a05f916f95afc65c7babddef";
+    url    = "mirror://gnome/sources/${pname}/${major}/${pname}-${version}.tar.xz";
+    sha256 = "2373e2bb0a8a876cb2997cd8b0e3d6e10012d9bef3705ea3ac21f6394b3f1fb0";
   };
 
   buildInputs = [ openvpn networkmanager libsecret ]
diff --git a/pkgs/tools/networking/network-manager/pptp.nix b/pkgs/tools/networking/network-manager/pptp.nix
index a9bee0c74811..6cc8107f2c89 100644
--- a/pkgs/tools/networking/network-manager/pptp.nix
+++ b/pkgs/tools/networking/network-manager/pptp.nix
@@ -4,11 +4,12 @@
 stdenv.mkDerivation rec {
   name    = "${pname}${if withGnome then "-gnome" else ""}-${version}";
   pname   = "NetworkManager-pptp";
-  version = networkmanager.version;
+  major   = "1.2";
+  version = "${major}.4";
 
   src = fetchurl {
-    url    = "mirror://gnome/sources/${pname}/${networkmanager.major}/${pname}-${version}.tar.xz";
-    sha256 = "a72cb88ecc0a9edec836e8042c592d68b8b290c0d78082e6b25cf08b46c6be5d";
+    url    = "mirror://gnome/sources/${pname}/${major}/${pname}-${version}.tar.xz";
+    sha256 = "bd97ce768c34cce6d5b5d43681149a8300bec754397a3f46a0d8d0aea7030c5e";
   };
 
   buildInputs = [ networkmanager pptp ppp libsecret ]
diff --git a/pkgs/tools/networking/network-manager/vpnc.nix b/pkgs/tools/networking/network-manager/vpnc.nix
index b760fe6e4f7d..44233b351290 100644
--- a/pkgs/tools/networking/network-manager/vpnc.nix
+++ b/pkgs/tools/networking/network-manager/vpnc.nix
@@ -4,11 +4,12 @@
 stdenv.mkDerivation rec {
   name    = "${pname}${if withGnome then "-gnome" else ""}-${version}";
   pname   = "NetworkManager-vpnc";
-  version = networkmanager.version;
+  major   = "1.2";
+  version = "${major}.4";
 
   src = fetchurl {
-    url    = "mirror://gnome/sources/${pname}/${networkmanager.major}/${pname}-${version}.tar.xz";
-    sha256 = "e900f6500026f8c3ee4feb92e1d0a0c0abbee9ba507dad915b47a8ab7df9e1f3";
+    url    = "mirror://gnome/sources/${pname}/${major}/${pname}-${version}.tar.xz";
+    sha256 = "39c7516418e90208cb534c19628ce40fd50eba0a08b2ebaef8da85720b10fb05";
   };
 
   buildInputs = [ vpnc networkmanager libsecret ]
diff --git a/pkgs/tools/networking/openvpn/default.nix b/pkgs/tools/networking/openvpn/default.nix
index 73d10014bbfc..13e1c68befda 100644
--- a/pkgs/tools/networking/openvpn/default.nix
+++ b/pkgs/tools/networking/openvpn/default.nix
@@ -24,7 +24,8 @@ stdenv.mkDerivation rec {
     "--enable-systemd"
     "--enable-iproute2"
     "IPROUTE=${iproute}/sbin/ip" ]
-    ++ optional pkcs11Support "--enable-pkcs11";
+    ++ optional pkcs11Support "--enable-pkcs11"
+    ++ optional stdenv.isDarwin "--disable-plugin-auth-pam";
 
   postInstall = ''
     mkdir -p $out/share/doc/openvpn/examples
@@ -40,6 +41,6 @@ stdenv.mkDerivation rec {
     homepage = http://openvpn.net/;
     license = stdenv.lib.licenses.gpl2;
     maintainers = [ stdenv.lib.maintainers.viric ];
-    platforms = stdenv.lib.platforms.linux;
+    platforms = stdenv.lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/tinc/default.nix b/pkgs/tools/networking/tinc/default.nix
index f7085e8f5c52..813290494e2e 100644
--- a/pkgs/tools/networking/tinc/default.nix
+++ b/pkgs/tools/networking/tinc/default.nix
@@ -1,12 +1,12 @@
 {stdenv, fetchurl, lzo, openssl, zlib}:
 
 stdenv.mkDerivation rec {
-  version = "1.0.28";
+  version = "1.0.29";
   name = "tinc-${version}";
 
   src = fetchurl {
     url = "http://www.tinc-vpn.org/packages/tinc-${version}.tar.gz";
-    sha256 = "0i5kx3hza359nclyhb60kxlzqyx0phmg175350hww28g6scjcl0b";
+    sha256 = "0y1alzxgds067m83qdkg12hsy6disa2ad3y2i0h1pgpvdxy02mq3";
   };
 
   buildInputs = [ lzo openssl zlib ];
diff --git a/pkgs/tools/security/enpass/data.json b/pkgs/tools/security/enpass/data.json
new file mode 100644
index 000000000000..4e245d1c80fc
--- /dev/null
+++ b/pkgs/tools/security/enpass/data.json
@@ -0,0 +1,12 @@
+{
+  "amd64": {
+    "path": "pool/main/e/enpass/enpass_5.3.0_amd64.deb", 
+    "sha256": "d9da061c6456281da836bdd78bdb7baeced4b7f1805bb2495e4f1d15038cf86b", 
+    "version": "5.3.0"
+  }, 
+  "i386": {
+    "path": "pool/main/e/enpass/enpass_5.3.0_i386.deb", 
+    "sha256": "58d9f3b83c2da477c13976e1826d112236eabd46a389de7e8767ee99ac41f469", 
+    "version": "5.3.0"
+  }
+}
\ No newline at end of file
diff --git a/pkgs/tools/security/enpass/default.nix b/pkgs/tools/security/enpass/default.nix
new file mode 100644
index 000000000000..b7f7282d2929
--- /dev/null
+++ b/pkgs/tools/security/enpass/default.nix
@@ -0,0 +1,106 @@
+{stdenv, system, fetchurl, dpkg, openssl, xorg
+, glib, mesa, libpulseaudio, zlib, dbus, fontconfig, freetype
+, gtk2, pango, atk, cairo, gdk_pixbuf, jasper, xkeyboardconfig
+, makeWrapper , makeDesktopItem, python, pythonPackages, lib}:
+assert system == "i686-linux" || system == "x86_64-linux";
+let
+  all_data = (with builtins; fromJSON (readFile ./data.json));
+  system_map = {
+    i686-linux = "i386";
+    x86_64-linux = "amd64";
+  };
+
+  data = (with builtins; getAttr (getAttr system system_map) all_data);
+
+  baseUrl = http://repo.sinew.in;
+  
+  # used of both wrappers and libpath
+  libPath = lib.makeLibraryPath (with xorg; [
+    openssl
+    mesa
+    fontconfig
+    freetype
+    libpulseaudio
+    zlib
+    dbus
+    libX11
+    libXi
+    libSM
+    libICE
+    libXext
+    libXrender
+    libXScrnSaver
+    glib
+    gtk2
+    pango
+    cairo
+    atk
+    gdk_pixbuf
+    jasper
+    stdenv.cc.cc
+  ]);
+  package = stdenv.mkDerivation rec {
+
+    inherit (data) version;
+    name = "enpass-${version}";
+
+    desktopItem = makeDesktopItem {
+      name = "Enpass";
+      exec = "$out/bin/Enpass";
+      #icon = "Enpass";
+      desktopName = "Enpass";
+      genericName = "Password manager";
+      categories = "Application;Security;";
+    };
+
+
+    src = fetchurl {
+      inherit (data) sha256;
+      url = "${baseUrl}/${data.path}";
+    };
+
+    meta = {
+      description = "a well known password manager";
+      homepage = https://www.enpass.io/;
+      maintainer = lib.maintainers.ronny;
+      license = lib.licenses.unfree;
+      platforms = lib.platforms.linux;
+    };
+
+    buildInputs = [makeWrapper dpkg];
+    phases = [ "unpackPhase" "installPhase" ];
+
+    unpackPhase = "dpkg -X $src .";
+    installPhase=''
+      mkdir $out
+      cp -r opt/Enpass/*  $out
+
+      # Make desktop item
+      mkdir -p "$out"/share/applications
+      cp "$desktopItem"/share/applications/* "$out"/share/applications/
+      mkdir -p "$out"/share/icons
+
+      patchelf  \
+        --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+        $out/bin/Enpass
+
+      wrapProgram $out/bin/Enpass \
+        --set LD_LIBRARY_PATH "${libPath}:$out/lib:$out/plugins/sqldrivers" \
+        --set QT_PLUGIN_PATH "$out/plugins" \
+        --set QT_QPA_PLATFORM_PLUGIN_PATH "$out/plugins/platforms" \
+        --set QT_XKB_CONFIG_ROOT "${xkeyboardconfig}/share/X11/xkb"
+    '';
+  };
+  updater = {
+    update = stdenv.mkDerivation rec {
+      name = "enpass-update-script";
+      SCRIPT =./update_script.py;
+      
+      buildInputs = with pythonPackages; [python requests pathlib2 six attrs ];
+      shellHook = ''
+      exec python $SCRIPT --target pkgs/tools/security/enpass/data.json --repo ${baseUrl}
+      '';
+
+    };
+  };
+in (package // {refresh = updater;}) 
diff --git a/pkgs/tools/security/enpass/update_script.py b/pkgs/tools/security/enpass/update_script.py
new file mode 100644
index 000000000000..f8ec715cb5e4
--- /dev/null
+++ b/pkgs/tools/security/enpass/update_script.py
@@ -0,0 +1,95 @@
+from __future__ import print_function
+
+
+import argparse
+import bz2
+import email
+import json
+import logging
+
+from itertools import product
+from operator import itemgetter
+
+import attr
+import pkg_resources
+
+from pathlib2 import Path
+from requests import Session
+from six.moves.urllib_parse import urljoin
+
+
+@attr.s
+class ReleaseElement(object):
+    sha256 = attr.ib(repr=False)
+    size = attr.ib(convert=int)
+    path = attr.ib()
+
+log = logging.getLogger('enpass.updater')
+
+
+parser = argparse.ArgumentParser()
+parser.add_argument('--repo')
+parser.add_argument('--target', type=Path)
+
+
+session = Session()
+
+
+def parse_bz2_msg(msg):
+    msg = bz2.decompress(msg)
+    if '\n\n' in msg:
+        parts = msg.split('\n\n')
+        return list(map(email.message_from_string, parts))
+    return email.message_from_string(msg)
+
+
+def fetch_meta(repo, name, parse=email.message_from_string, split=False):
+    url = urljoin(repo, 'dists/stable', name)
+    response = session.get("{repo}/dists/stable/{name}".format(**locals()))
+    return parse(response.content)
+
+
+def fetch_filehashes(repo, path):
+    meta = fetch_meta(repo, path, parse=parse_bz2_msg)
+    for item in meta:
+        yield {
+            'version': pkg_resources.parse_version(str(item['Version'])),
+            'path': item['Filename'],
+            'sha256': item['sha256'],
+        }
+
+
+def fetch_archs(repo):
+    m = fetch_meta(repo, 'Release')
+
+    architectures = m['Architectures'].split()
+    elements = [ReleaseElement(*x.split()) for x in m['SHA256'].splitlines()]
+    elements = [x for x in elements if x.path.endswith('bz2')]
+
+    for arch, elem in product(architectures, elements):
+        if arch in elem.path:
+            yield arch, max(fetch_filehashes(repo, elem.path),
+                            key=itemgetter('version'))
+
+
+class OurVersionEncoder(json.JSONEncoder):
+    def default(self, obj):
+        # the other way around to avoid issues with
+        # newer setuptools having strict/legacy versions
+        if not isinstance(obj, (dict, str)):
+            return str(obj)
+        return json.JSONEncoder.default(self, obj)
+
+
+def main(repo, target):
+    logging.basicConfig(level=logging.DEBUG)
+    with target.open(mode='wb') as fp:
+        json.dump(
+            dict(fetch_archs(repo)), fp,
+            cls=OurVersionEncoder,
+            indent=2,
+            sort_keys=True)
+
+
+opts = parser.parse_args()
+main(opts.repo, opts.target)
diff --git a/pkgs/tools/security/pgpdump/default.nix b/pkgs/tools/security/pgpdump/default.nix
new file mode 100644
index 000000000000..1e33c18753a6
--- /dev/null
+++ b/pkgs/tools/security/pgpdump/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "pgpdump-${version}";
+  version = "0.31";
+
+  src = fetchFromGitHub {
+    owner = "kazu-yamamoto";
+    repo = "pgpdump";
+    rev = "v${version}";
+    sha256 = "05ywdgxzq3976dsy95vgdx3nnhd9i9vypzyrkabpmnxphfnjfrb4";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A PGP packet visualizer";
+    longDescription = ''
+      pgpdump is a PGP packet visualizer which displays the packet format of
+      OpenPGP (RFC 4880) and PGP version 2 (RFC 1991).
+    '';
+    homepage = "http://www.mew.org/~kazu/proj/pgpdump/en/";
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
+
diff --git a/pkgs/tools/security/sslscan/default.nix b/pkgs/tools/security/sslscan/default.nix
index f6777a0e979f..6b205d845340 100644
--- a/pkgs/tools/security/sslscan/default.nix
+++ b/pkgs/tools/security/sslscan/default.nix
@@ -1,12 +1,14 @@
-{ stdenv, fetchurl, openssl }:
+{ stdenv, fetchFromGitHub, openssl }:
 
 stdenv.mkDerivation rec {
   name = "sslscan-${version}";
   version = "1.11.7";
 
-  src = fetchurl {
-    url = "https://github.com/rbsec/sslscan/archive/${version}-rbsec.tar.gz";
-    sha256 = "0wygz2gm9asvhpfy44333y4pkdja1sbr41hc6mhkxg7a4ys8f9qs";
+  src = fetchFromGitHub {
+    owner = "rbsec";
+    repo = "sslscan";
+    rev = "${version}-rbsec";
+    sha256 = "007lf3rxcn9nz6jrki3mavgd9sd2hmm9nzp2g13h0ri51yc3bkp0";
   };
 
   buildInputs = [ openssl ];
@@ -23,4 +25,3 @@ stdenv.mkDerivation rec {
     platforms = platforms.all;
   };
 }
-
diff --git a/pkgs/tools/security/sudolikeaboss/default.nix b/pkgs/tools/security/sudolikeaboss/default.nix
new file mode 100644
index 000000000000..6e2d6888f2e7
--- /dev/null
+++ b/pkgs/tools/security/sudolikeaboss/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, fixDarwinDylibNames, darwin }:
+buildGoPackage rec {
+  name = "sudolikeaboss-${version}";
+  version = "0.2.1";
+
+  goPackagePath = "github.com/ravenac95/sudolikeaboss";
+  src = fetchFromGitHub {
+    owner = "ravenac95";
+    repo = "sudolikeaboss";
+    rev = "v${version}";
+    sha256 = "1zsmy67d334nax76sq0g2sczp4zi19d94d3xfwgadzk7sxvw1z0m";
+  };
+  goDeps = ./deps.nix;
+
+  propagatedBuildInputs = with darwin.apple_sdk.frameworks; [
+    Cocoa
+    fixDarwinDylibNames
+  ];
+
+  postInstall = ''
+    install_name_tool -delete_rpath $out/lib -add_rpath $bin $bin/bin/sudolikeaboss
+  '';
+
+  meta = with stdenv.lib; {
+    inherit version;
+    inherit (src.meta) homepage;
+    description = "Get 1password access from iterm2";
+    license = licenses.mit;
+    maintainers = [ maintainers.grahamc ];
+    platforms = platforms.darwin;
+  };
+
+}
diff --git a/pkgs/tools/security/sudolikeaboss/deps.nix b/pkgs/tools/security/sudolikeaboss/deps.nix
new file mode 100644
index 000000000000..04f831675fac
--- /dev/null
+++ b/pkgs/tools/security/sudolikeaboss/deps.nix
@@ -0,0 +1,22 @@
+# This file was generated by go2nix: https://github.com/kamilchm/go2nix
+# v1.1.0 or 1.1.1, not 100% sure
+[
+  {
+    goPackagePath = "github.com/urfave/cli";
+    fetch = {
+      type = "git";
+      url = "https://github.com/urfave/cli";
+      rev = "55f715e28c46073d0e217e2ce8eb46b0b45e3db6";
+      sha256 = "0fvqxh1dx4f189y90fhrjapb4g51d7cp203jahxfb19k1k8c3942";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "2a824cf9226006580a06d9fa8f10901c17b49ed5";
+      sha256 = "19hc83dsa8k1zbzb16v9yc44grscl9r4fxlpwqi3f6zqfrv0qk4n";
+    };
+  }
+]
diff --git a/pkgs/tools/text/zimreader/default.nix b/pkgs/tools/text/zimreader/default.nix
index 2e51e7d7f9ea..449b1e9c3398 100644
--- a/pkgs/tools/text/zimreader/default.nix
+++ b/pkgs/tools/text/zimreader/default.nix
@@ -1,36 +1,27 @@
-{ stdenv, fetchgit, fetchurl, automake, autoconf, libtool
-, zlib, openssl, zip, zimlib
+{ stdenv, fetchFromGitHub, fetchpatch, automake, autoconf, libtool
+, zlib, openssl, zip, zimlib, cxxtools, tntnet
 }:
 
-let
-  cxxtools = stdenv.mkDerivation rec {
-    name = "cxxtools-${version}";
-    version = "2.1.1";
-    src = fetchurl {
-      url = "http://www.tntnet.org/download/cxxtools-${version}.tar.gz";
-      sha256 = "0jh5wrk9mviz4xrp1wv617gwgl4b5mc21h21wr2688kjmc0i1q4d";
-    };
-  };
-  tntnet = stdenv.mkDerivation rec {
-    name = "tntnet-${version}";
-    version = "2.1";
-    src = fetchurl {
-      url = "http://www.tntnet.org/download/tntnet-${version}.tar.gz";
-      sha256 = "1dhs10yhpmdqyykyh8jc67m5xgsgm1wrpd58fdps2cp5g1gjf8w6";
-    };
-    buildInputs = [ zlib cxxtools openssl zip ];
-  };
+stdenv.mkDerivation rec {
+  name = "zimreader-0.92";
 
-in stdenv.mkDerivation rec {
-  name = "zimreader-${version}";
-  version = "20150710";
-
-  src = fetchgit {
-    url = https://gerrit.wikimedia.org/r/p/openzim.git;
-    rev = "165eab3e154c60b5b6436d653dc7c90f56cf7456";
-    sha256 = "076ixsq4lis0rkk7p049g02bidc7bggl9kf2wzmgmsnx396mqymf";
+  src = fetchFromGitHub {
+    owner = "wikimedia";
+    repo = "openzim";
+    rev = "r1.3"; # there multiple tools with different version in the repo
+    sha256 = "0x529137rxy6ld64xqa6xmn93121ripxvkf3sc7hv3wg6km182sw";
   };
 
+  patchFlags = "-p2";
+  patches = [
+    (fetchpatch {
+      name = "zimreader_tntnet221.patch";
+      url = "https://github.com/wikimedia/openzim/compare/r1.3...juliendehos:3ee5f11eaa811284d340451e6f466529c00f6ef2.patch";
+      sha256 = "0rc5n20svyyndqh7hsynjyblfraphgi0f6khw6f5jq89w9i1j1hd";
+    })
+  ];
+
+  enableParallelBuilding = true;
   buildInputs = [ automake autoconf libtool zimlib cxxtools tntnet ];
   setSourceRoot = "cd openzim-*/zimreader; export sourceRoot=`pwd`";
   preConfigurePhases = [ "./autogen.sh" ];
@@ -38,7 +29,7 @@ in stdenv.mkDerivation rec {
   meta = {
     description = "A tool to serve ZIM files using HTTP";
     homepage = http://git.wikimedia.org/log/openzim;
-    maintainers = with stdenv.lib.maintainers; [ robbinch ];
+    maintainers = with stdenv.lib.maintainers; [ robbinch juliendehos ];
     platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 7a6088874314..35307c947f09 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -287,7 +287,7 @@ in
       inherit kernel rootModules allowMissing;
     };
 
-  nixBufferBuilders = import ../build-support/emacs/buffer.nix { inherit (pkgs) lib writeText; };
+  nixBufferBuilders = import ../build-support/emacs/buffer.nix { inherit (pkgs) lib writeText; inherit (emacsPackagesNg) inherit-local; };
 
   pathsFromGraph = ../build-support/kernel/paths-from-graph.pl;
 
@@ -377,6 +377,8 @@ in
 
   afl = callPackage ../tools/security/afl { };
 
+  afpfs-ng = callPackage ../tools/filesystems/afpfs-ng/default.nix { };
+
   aha = callPackage ../tools/text/aha { };
 
   ahcpd = callPackage ../tools/networking/ahcpd { };
@@ -499,6 +501,8 @@ in
 
   elvish = callPackage ../shells/elvish { };
 
+  enpass = callPackage ../tools/security/enpass { };
+
   genymotion = callPackage ../development/mobile/genymotion { };
 
   grc = callPackage ../tools/misc/grc { };
@@ -867,6 +871,8 @@ in
 
   heatseeker = callPackage ../tools/misc/heatseeker { };
 
+  hexio = callPackage ../development/tools/hexio { };
+
   interlock = callPackage ../servers/interlock {};
 
   kapacitor = callPackage ../servers/monitoring/kapacitor { };
@@ -2081,7 +2087,7 @@ in
 
   horst = callPackage ../tools/networking/horst { };
 
-  host = callPackage ../tools/networking/host { };
+  host = bind.host;
 
   hping = callPackage ../tools/networking/hping { };
 
@@ -2095,6 +2101,8 @@ in
 
   httpfs2 = callPackage ../tools/filesystems/httpfs { };
 
+  httpstat = callPackage ../tools/networking/httpstat { };
+
   httptunnel = callPackage ../tools/networking/httptunnel { };
 
   hubicfuse = callPackage ../tools/filesystems/hubicfuse { };
@@ -2296,6 +2304,10 @@ in
 
   less = callPackage ../tools/misc/less { };
 
+  lf = callPackage ../tools/misc/lf {};
+  
+  lhasa = callPackage ../tools/compression/lhasa {};
+
   libcpuid = callPackage ../tools/misc/libcpuid { };
 
   lesspipe = callPackage ../tools/misc/lesspipe { };
@@ -2863,6 +2875,8 @@ in
 
   nitrogen = callPackage ../tools/X11/nitrogen {};
 
+  nixbot = callPackage ../tools/misc/nixbot {};
+
   nkf = callPackage ../tools/text/nkf {};
 
   nlopt = callPackage ../development/libraries/nlopt {};
@@ -3040,6 +3054,8 @@ in
     nix = nixUnstable;
   };
 
+  pakcs = callPackage ../development/compilers/pakcs {};
+
   pal = callPackage ../tools/misc/pal { };
 
   pandoc = haskell.lib.overrideCabal haskellPackages.pandoc (drv: {
@@ -3686,7 +3702,9 @@ in
 
   sshpass = callPackage ../tools/networking/sshpass { };
 
-  sslscan = callPackage ../tools/security/sslscan { };
+  sslscan = callPackage ../tools/security/sslscan {
+    openssl = openssl_1_0_1;
+  };
 
   sslmate = callPackage ../development/tools/sslmate { };
 
@@ -3792,6 +3810,8 @@ in
 
   thc-hydra = callPackage ../tools/security/thc-hydra { };
 
+  thin-provisioning-tools = callPackage ../tools/misc/thin-provisioning-tools {  };
+
   tiled = qt5.callPackage ../applications/editors/tiled { };
 
   timemachine = callPackage ../applications/audio/timemachine { };
@@ -4882,6 +4902,7 @@ in
     else
       callPackage ../development/compilers/openjdk/8.nix {
         bootjdk = callPackage ../development/compilers/openjdk/bootstrap.nix { version = "8"; };
+        inherit (gnome2) GConf gnome_vfs;
       };
 
   openjdk = if stdenv.isDarwin then openjdk7 else openjdk8;
@@ -4895,6 +4916,11 @@ in
   jre8 = lib.setName "openjre-${lib.getVersion pkgs.openjdk8.jre}"
     (lib.addMetaAttrs { outputsToInstall = [ "jre" ]; }
       (openjdk8.jre // { outputs = [ "jre" ]; }));
+  jre8_headless =
+    if stdenv.isDarwin then jre8 else
+      lib.setName "openjre-${lib.getVersion pkgs.openjdk8.jre}-headless"
+        (lib.addMetaAttrs { outputsToInstall = [ "jre" ]; }
+          ((openjdk8.override { minimal = true; }).jre // { outputs = [ "jre" ]; }));
 
   jdk = if stdenv.isDarwin then jdk7 else jdk8;
   jre = if stdenv.isDarwin then jre7 else jre8;
@@ -5047,6 +5073,8 @@ in
 
   nvidia_cg_toolkit = callPackage ../development/compilers/nvidia-cg-toolkit { };
 
+  obliv-c = callPackage ../development/compilers/obliv-c {};
+
   ocaml-ng = callPackage ./ocaml-packages.nix { };
 
   ocamlPackages = recurseIntoAttrs ocaml-ng.ocamlPackages;
@@ -5180,6 +5208,8 @@ in
 
   vala_0_32 = callPackage ../development/compilers/vala/0.32.nix { };
 
+  valadoc = callPackage ../development/tools/valadoc { };
+
   vs90wrapper = callPackage ../development/compilers/vs90wrapper { };
 
   wla-dx = callPackage ../development/compilers/wla-dx { };
@@ -5694,6 +5724,8 @@ in
   apacheKafka_0_9 = callPackage ../servers/apache-kafka { majorVersion = "0.9"; };
   apacheKafka_0_10 = callPackage ../servers/apache-kafka { majorVersion = "0.10"; };
 
+  asn2quickder = callPackage ../development/tools/asn2quickder {};
+
   astyle = callPackage ../development/tools/misc/astyle { };
 
   electron = callPackage ../development/tools/electron { };
@@ -6628,6 +6660,7 @@ in
   cpp-hocon = callPackage ../development/libraries/cpp-hocon { };
 
   cpp-netlib = callPackage ../development/libraries/cpp-netlib { };
+  uri = callPackage ../development/libraries/uri { };
 
   cppcms = callPackage ../development/libraries/cppcms { };
 
@@ -7095,6 +7128,8 @@ in
     gnupg1 = gnupg1orig;
   };
 
+  pgpdump = callPackage ../tools/security/pgpdump { };
+
   gpgstats = callPackage ../tools/security/gpgstats { };
 
   gpshell = callPackage ../development/tools/misc/gpshell { };
@@ -7445,7 +7480,7 @@ in
   libburn = callPackage ../development/libraries/libburn { };
 
   libcaca = callPackage ../development/libraries/libcaca {
-    inherit (xlibs) libX11;
+    inherit (xlibs) libX11 libXext;
   };
 
   libcanberra_gtk3 = callPackage ../development/libraries/libcanberra {
@@ -7624,6 +7659,8 @@ in
 
   libgee_0_6 = callPackage ../development/libraries/libgee/0.6.nix { };
 
+  libgee_0_8 = callPackage ../development/libraries/libgee/0.8.nix { };
+
   libgig = callPackage ../development/libraries/libgig { };
 
   libgnome_keyring = callPackage ../development/libraries/libgnome-keyring { };
@@ -8622,7 +8659,7 @@ in
   pcl = callPackage ../development/libraries/pcl {
     vtk = vtkWithQt4;
     inherit (darwin) cf-private;
-    inherit (darwin.apple_sdk.frameworks) Cocoa AGL;
+    inherit (darwin.apple_sdk.frameworks) Cocoa AGL OpenGL;
   };
 
   pcre = callPackage ../development/libraries/pcre { };
@@ -8856,6 +8893,8 @@ in
 
   quesoglc = callPackage ../development/libraries/quesoglc { };
 
+  quickder = callPackage ../development/libraries/quickder {};
+
   quicksynergy = callPackage ../applications/misc/quicksynergy { };
 
   qwt = callPackage ../development/libraries/qwt {};
@@ -8995,6 +9034,8 @@ in
   silgraphite = callPackage ../development/libraries/silgraphite {};
   graphite2 = callPackage ../development/libraries/silgraphite/graphite2.nix {};
 
+  simavr = callPackage ../development/tools/simavr { };
+
   simgear = callPackage ../development/libraries/simgear { };
 
   simp_le = callPackage ../tools/admin/simp_le { };
@@ -9799,6 +9840,7 @@ in
   sabnzbd = callPackage ../servers/sabnzbd { };
 
   bind = callPackage ../servers/dns/bind { };
+  dnsutils = bind.dnsutils;
 
   bird = callPackage ../servers/bird { };
   bird6 = bird.override { enableIPv6 = true; };
@@ -11541,6 +11583,8 @@ in
 
   cabin = callPackage ../data/fonts/cabin { };
 
+  camingo-code = callPackage ../data/fonts/camingo-code { };
+
   dosis = callPackage ../data/fonts/dosis { };
 
   dosemu_fonts = callPackage ../data/fonts/dosemu-fonts { };
@@ -11599,6 +11643,8 @@ in
   inconsolata = callPackage ../data/fonts/inconsolata {};
   inconsolata-lgc = callPackage ../data/fonts/inconsolata/lgc.nix {};
 
+  input-fonts = callPackage ../data/fonts/input-fonts { };
+
   iosevka = callPackage ../data/fonts/iosevka { };
 
   ipafont = callPackage ../data/fonts/ipafont {};
@@ -11813,7 +11859,7 @@ in
 
   xlsx2csv = pythonPackages.xlsx2csv;
 
-  zeal = qt55.callPackage ../data/documentation/zeal { };
+  zeal = qt5.callPackage ../data/documentation/zeal { };
 
 
   ### APPLICATIONS
@@ -11908,14 +11954,19 @@ in
 
   ao = callPackage ../applications/graphics/ao {};
 
-  ardour = ardour4;
+  ardour = ardour5;
 
   ardour3 =  callPackage ../applications/audio/ardour/ardour3.nix {
     inherit (gnome2) libgnomecanvas libgnomecanvasmm;
     inherit (vamp) vampSDK;
   };
 
-  ardour4 =  callPackage ../applications/audio/ardour {
+  ardour4 =  callPackage ../applications/audio/ardour/ardour4.nix {
+    inherit (gnome2) libgnomecanvas libgnomecanvasmm;
+    inherit (vamp) vampSDK;
+  };
+
+  ardour5 =  callPackage ../applications/audio/ardour {
     inherit (gnome2) libgnomecanvas libgnomecanvasmm;
     inherit (vamp) vampSDK;
   };
@@ -12508,19 +12559,13 @@ in
 
     prologMode = callPackage ../applications/editors/emacs-modes/prolog { };
 
-    proofgeneral_4_2 = callPackage ../applications/editors/emacs-modes/proofgeneral/4.2.nix {
-      texinfo = texinfo4 ;
-      texLive = texlive.combine { inherit (texlive) scheme-basic cm-super ec; };
-    };
-    proofgeneral_4_3_pre = callPackage ../applications/editors/emacs-modes/proofgeneral/4.3pre.nix {
-      texinfo = texinfo4 ;
+    proofgeneral = callPackage ../applications/editors/emacs-modes/proofgeneral/4.4.nix {
       texLive = texlive.combine { inherit (texlive) scheme-basic cm-super ec; };
     };
     proofgeneral_HEAD = callPackage ../applications/editors/emacs-modes/proofgeneral/HEAD.nix {
       texinfo = texinfo4 ;
       texLive = texlive.combine { inherit (texlive) scheme-basic cm-super ec; };
     };
-    proofgeneral = self.proofgeneral_4_2;
 
     quack = callPackage ../applications/editors/emacs-modes/quack { };
 
@@ -13710,7 +13755,7 @@ in
 
   pcmanfm = callPackage ../applications/misc/pcmanfm { };
 
-  pcmanfm-qt = callPackage ../applications/misc/pcmanfm-qt { };
+  pcmanfm-qt = lxqt.pcmanfm-qt;
 
   pcmanx-gtk2 = callPackage ../applications/misc/pcmanx-gtk2 { };
 
@@ -13730,6 +13775,8 @@ in
 
   smtube = qt55.callPackage ../applications/video/smtube {};
 
+  sudolikeaboss = callPackage ../tools/security/sudolikeaboss { };
+
   sup = callPackage ../applications/networking/mailreaders/sup {
     ruby = ruby_2_3.override { cursesSupport = true; };
   };
@@ -13866,6 +13913,8 @@ in
 
   vivaldi = callPackage ../applications/networking/browsers/vivaldi {};
 
+  openmpt123 = callPackage ../applications/audio/openmpt123 {};
+
   opusfile = callPackage ../applications/audio/opusfile { };
 
   opusTools = callPackage ../applications/audio/opus-tools { };
@@ -14225,6 +14274,8 @@ in
   urxvt_font_size = callPackage ../applications/misc/rxvt_unicode-plugins/urxvt-font-size { };
   urxvt_theme_switch = callPackage ../applications/misc/rxvt_unicode-plugins/urxvt-theme-switch { };
 
+  uade123 = callPackage ../applications/audio/uade123 {};
+
   udevil = callPackage ../applications/misc/udevil {};
 
   udiskie = callPackage ../applications/misc/udiskie { };
@@ -14305,6 +14356,8 @@ in
 
   ssvnc = callPackage ../applications/networking/remote/ssvnc { };
 
+  styx = callPackage ../applications/misc/styx { };
+
   tecoc = callPackage ../applications/editors/tecoc { };
 
   viber = callPackage ../applications/networking/instant-messengers/viber { };
@@ -14684,7 +14737,7 @@ in
 
   vcprompt = callPackage ../applications/version-management/vcprompt { };
 
-  vdirsyncer = callPackage ../tools/misc/vdirsyncer { pythonPackages = python3Packages; };
+  vdirsyncer = callPackage ../tools/misc/vdirsyncer { };
 
   vdpauinfo = callPackage ../tools/X11/vdpauinfo { };
 
@@ -15309,7 +15362,6 @@ in
   crack_attack = callPackage ../games/crack-attack { };
 
   crafty = callPackage ../games/crafty { };
-  craftyFull = appendToName "full" (crafty.override { fullVariant = true; });
 
   crawlTiles = crawl.override {
     tileMode = true;
@@ -15508,6 +15560,8 @@ in
 
   openlierox = callPackage ../games/openlierox { };
 
+  openclonk = callPackage ../games/openclonk { };
+
   openmw = callPackage ../games/openmw { };
 
   openra = callPackage ../games/openra { lua = lua5_1; };
@@ -16060,6 +16114,8 @@ in
 
     in makeOverridable makePackages extra;
 
+  lxqt = recurseIntoAttrs (callPackage ../desktops/lxqt { });
+
   mate = recurseIntoAttrs (callPackage ../desktops/mate {
     callPackage = newScope pkgs.mate;
   });
@@ -16796,6 +16852,8 @@ in
 
   keynav = callPackage ../tools/X11/keynav { };
 
+  kops = callPackage ../applications/networking/cluster/kops { };
+
   lilypond = callPackage ../misc/lilypond { guile = guile_1_8; };
 
   mailcore2 = callPackage ../development/libraries/mailcore2 { };
diff --git a/pkgs/top-level/emacs-packages.nix b/pkgs/top-level/emacs-packages.nix
index 1e878e8b18cb..430da89fc22b 100644
--- a/pkgs/top-level/emacs-packages.nix
+++ b/pkgs/top-level/emacs-packages.nix
@@ -189,30 +189,6 @@ let
     };
   };
 
-  emacs-source-directory = stdenv.mkDerivation {
-    name = "emacs-source-directory-1.0.0";
-    src = emacs.src;
-
-    # We don't want accidentally start bulding emacs one more time
-    phases = "unpackPhase buildPhase";
-
-    buildPhase = ''
-     mkdir -p $out/share/emacs/site-lisp/elpa/emacs-source-directory
-     cp -a src $out/src
-     (cd $out/src && ${emacs}/bin/etags *.c *.h)
-     cat <<EOF > $out/share/emacs/site-lisp/elpa/emacs-source-directory/emacs-source-directory-autoloads.el
-     (setq source-directory "$out")
-     (setq find-function-C-source-directory (expand-file-name "src" source-directory))
-     EOF
-     cat <<EOF > $out/share/emacs/site-lisp/elpa/emacs-source-directory/emacs-source-directory-pkg.el
-     (define-package "emacs-source-directory" "1.0.0" "Make emacs C source code available inside emacs. To use with emacsWithPackages in NixOS" '())
-     EOF
-    '';
-    meta = {
-      description = "Make emacs C source code available inside emacs. To use with emacsWithPackages in NixOS";
-    };
-  };
-
   evil-jumper = melpaBuild rec {
     pname   = "evil-jumper";
     version = "20151017";
diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix
index 9a3167f4cdd8..bda35e9383f0 100644
--- a/pkgs/top-level/ocaml-packages.nix
+++ b/pkgs/top-level/ocaml-packages.nix
@@ -58,9 +58,7 @@ let
     camlidl = callPackage ../development/tools/ocaml/camlidl { };
 
     camlp4 =
-      if lib.versionOlder "4.03" ocaml.version
-      then callPackage ../development/tools/ocaml/camlp4/4_03.nix { }
-      else if lib.versionOlder "4.02" ocaml.version
+      if lib.versionOlder "4.02" ocaml.version
       then callPackage ../development/tools/ocaml/camlp4 { }
       else null;
 
@@ -707,7 +705,7 @@ in rec
 
   ocamlPackages_4_02 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.02.nix { }) (self: super: { });
 
-  ocamlPackages_4_03 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.02.nix { }) (self: super: { });
+  ocamlPackages_4_03 = mkOcamlPackages (callPackage ../development/compilers/ocaml/4.03.nix { }) (self: super: { });
 
   ocamlPackages_latest = ocamlPackages_4_03;
 
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 987f42f9184e..52531d62103a 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -1160,6 +1160,28 @@ in modules // {
     };
   };
 
+ asn1ate = buildPythonPackage rec {
+  pname = "asn1ate";
+  date = "20160810";
+  name = "${pname}-unstable-${date}";
+
+  src = pkgs.fetchFromGitHub {
+    sha256 = "04pddr1mh2v9qq8fg60czwvjny5qwh4nyxszr3qc4bipiiv2xk9w";
+    rev = "c56104e8912400135509b584d84423ee05a5af6b";
+    owner = "kimgr";
+    repo = pname;
+  };
+
+  propagatedBuildInputs = with self; [ pyparsing ];
+
+  meta = with stdenv.lib; {
+    description = "Python library for translating ASN.1 into other forms";
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ leenaars ];
+  };
+};
+
   atomiclong = buildPythonPackage rec {
     version = "0.1.1";
     name = "atomiclong-${version}";
@@ -2056,6 +2078,34 @@ in modules // {
     };
   };
 
+  biopython = buildPythonPackage rec {
+    name = "biopython-${version}";
+    version = "1.68";
+
+    src = pkgs.fetchurl {
+      url = "mirror://pypi/b/biopython/${name}.tar.gz";
+      sha256 = "07qc7nz0k77y8hf8s18rscvibvm91zw0kkq7ylrhisf8vp8hkp6i";
+    };
+
+    propagatedBuildInputs = with self; [ numpy ];
+    # Checks try to write to $HOME, which does not work with nix
+    doCheck = false;
+    meta = {
+      description = "Python library for bioinformatics";
+
+      longDescription = ''
+        Biopython is a set of freely available tools for biological computation
+        written in Python by an international team of developers. It is a
+        distributed collaborative effort to develop Python libraries and
+        applications which address the needs of current and future work in
+        bioinformatics.
+      '';
+
+      homepage = http://biopython.org/wiki/Documentation;
+      maintainers = with maintainers; [ luispedro ];
+    };
+  };
+
   bedup = buildPythonPackage rec {
     version = "0.10.1";
     name = "bedup-${version}";
@@ -6661,7 +6711,7 @@ in modules // {
       description = "High-level FTP client library (virtual file system and more)";
       homepage    = https://pypi.python.org/pypi/ftputil;
       platforms   = platforms.linux;
-      license     = licenses.bsd2; # "Modified BSD licence, says pypi"
+      license     = licenses.bsd2; # "Modified BSD license, says pypi"
     };
   };
 
@@ -7447,7 +7497,7 @@ in modules // {
     meta = {
       description = "Library to apply JSON Patches according to RFC 6902";
       homepage = "https://github.com/stefankoegl/python-json-patch";
-      license = stdenv.lib.licenses.bsd2; # "Modified BSD licence, says pypi"
+      license = stdenv.lib.licenses.bsd2; # "Modified BSD license, says pypi"
     };
   };
 
@@ -7462,7 +7512,28 @@ in modules // {
     meta = {
       description = "Resolve JSON Pointers in Python";
       homepage = "https://github.com/stefankoegl/python-json-pointer";
-      license = stdenv.lib.licenses.bsd2; # "Modified BSD licence, says pypi"
+      license = stdenv.lib.licenses.bsd2; # "Modified BSD license, says pypi"
+    };
+  };
+
+  jsonrpclib = buildPythonPackage rec {
+    name = "jsonrpclib-${version}";
+    version = "0.1.7";
+
+    disabled = !isPy27;
+
+    src = pkgs.fetchurl {
+      url = "mirror://pypi/j/jsonrpclib/${name}.tar.gz";
+      sha256 = "02vgirw2bcgvpcxhv5hf3yvvb4h5wzd1lpjx8na5psdmaffj6l3z";
+    };
+
+    propagatedBuildInputs = with self; [ cjson ];
+
+    meta = {
+      description = "JSON RPC client library";
+      homepage = https://pypi.python.org/pypi/jsonrpclib/;
+      license = stdenv.lib.licenses.asl20;
+      maintainers = [ stdenv.lib.maintainers.joachifm ];
     };
   };
 
@@ -11661,11 +11732,11 @@ in modules // {
 
   github3_py = buildPythonPackage rec {
     name = "github3.py-${version}";
-    version = "1.0.0a2";
+    version = "1.0.0a4";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/g/github3.py/${name}.tar.gz";
-      sha256 = "11xvwbzfy04vwbjnpc8wcrjjzghbrbdzffrdfk70v0zdnxqg8hc5";
+      sha256 = "0rhnrhb7qc60h82hkd4wnj1jh544yzrf4pjmn4rqacdi59p7f3jp";
     };
 
     buildInputs = with self; [ unittest2 pytest mock betamax betamax-matchers ];
@@ -13136,11 +13207,11 @@ in modules // {
   };
 
   libcloud = buildPythonPackage (rec {
-    name = "libcloud-0.18.0";
+    name = "libcloud-1.2.1";
 
     src = pkgs.fetchurl {
-      url = mirror://pypi/a/apache-libcloud/apache-libcloud-0.18.0.tar.bz2;
-      sha256 = "0ahdp14ddly074qg5cksxdhqaws0kj445xmhz1y7lzspsp6fk1xg";
+      url = "mirror://pypi/a/apache-libcloud/apache-${name}.tar.bz2";
+      sha256 = "0qlhyz5f32xg8i10biyzqscks8d28vklk63hvj45vzy1amw60kqz";
     };
 
     buildInputs = with self; [ mock ];
@@ -17970,7 +18041,7 @@ in modules // {
     meta = {
       description = "Meta-commands handler for Postgres Database";
       homepage = https://pypi.python.org/pypi/pgspecial;
-      licence = licenses.bsd3;
+      license = licenses.bsd3;
       maintainers = with maintainers; [ nckx ];
     };
   };
@@ -18062,8 +18133,14 @@ in modules // {
     buildInputs = with self; [ mock scripttest virtualenv pretend pytest ];
     # Pip wants pytest, but tests are not distributed
     doCheck = false;
-  };
 
+    meta = {
+      description = "The PyPA recommended tool for installing Python packages";
+      license = licenses.mit;
+      homepage = https://pip.pypa.io/;
+      priority = 10;
+    };
+  };
 
   pika = buildPythonPackage rec {
     name = "pika-${version}";
@@ -18627,6 +18704,23 @@ in modules // {
     };
   };
 
+  ptpython = buildPythonPackage rec {
+    name = "ptpython-0.35";
+    propagatedBuildInputs = with self;
+        [ wcwidth six prompt_toolkit docopt jedi pygments];
+    src = pkgs.fetchurl {
+      url = "mirror://pypi/p/ptpython/${name}.tar.gz";
+      sha256 = "e0d380fbccb03ed33a7f33d96988e66fbd286bc813c9ceea84a1b3b5615a5660";
+    };
+
+    meta = {
+      description = "An advanced Python REPL";
+      license = licenses.bsd3;
+      maintainers = with maintainers; [ mlieberman85 ];
+      platforms = platforms.all;
+    };
+  };
+
   publicsuffix = buildPythonPackage rec {
     name = "publicsuffix-${version}";
     version = "1.0.2";
@@ -22829,26 +22923,7 @@ in modules // {
     };
   };
 
-  sockjs-tornado = buildPythonPackage rec {
-    name = "sockjs-tornado-${version}";
-    version = "1.0.2";
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/s/sockjs-tornado/${name}.tar.gz";
-      sha256 = "15lcy40h2cm0l8aknbrk48p2sni5wzybsqjx1hxwpk9lfa1xryyv";
-    };
 
-    # This is needed for compatibility with OctoPrint
-    propagatedBuildInputs = with self; [ tornado_4_0_1 ];
-
-    meta = {
-      description = "SockJS python server implementation on top of Tornado framework";
-      homepage = http://github.com/mrjoes/sockjs-tornado/;
-      license = licenses.mit;
-      platforms = platforms.all;
-      maintainers = with maintainers; [ abbradar ];
-    };
-  };
 
   sopel = buildPythonPackage rec {
     name = "sopel-6.3.1";
@@ -24977,34 +25052,25 @@ in modules // {
     };
   };
 
-  twisted_11 = buildPythonPackage rec {
-    # NOTE: When updating please check if new versions still cause issues
-    # to packages like carbon (http://stackoverflow.com/questions/19894708/cant-start-carbon-12-04-python-error-importerror-cannot-import-name-daem)
-    disabled = isPy3k;
+  twine = buildPythonPackage rec {
+    name = "twine-${version}";
+    version = "1.8.1";
 
-    name = "Twisted-13.2.0";
     src = pkgs.fetchurl {
-      url = "mirror://pypi/T/Twisted/${name}.tar.bz2";
-      sha256 = "1wrcqv5lvgwk2aq83qb2s2ng2vx14hbjjk2gc30cg6h1iiipal89";
+      url    = "mirror://pypi/t/twine/${name}.tar.gz";
+      sha256 = "68b663691a947b844f92853c992d42bb68b6333bffc9ab7f661346b001c1da82";
     };
 
-    propagatedBuildInputs = with self; [ zope_interface ];
+    propagatedBuildInputs = with self; [ clint pkginfo requests2 requests_toolbelt ];
 
-    # Generate Twisted's plug-in cache.  Twited users must do it as well.  See
-    # http://twistedmatrix.com/documents/current/core/howto/plugin.html#auto3
-    # and http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=477103 for
-    # details.
-    postInstall = "$out/bin/twistd --help > /dev/null";
+    # Requires network
+    doCheck = false;
 
     meta = {
-      homepage = http://twistedmatrix.com/;
-      description = "Twisted, an event-driven networking engine written in Python";
-      longDescription = ''
-        Twisted is an event-driven networking engine written in Python
-        and licensed under the MIT license.
-      '';
-      license = licenses.mit;
-      maintainers = [ ];
+      description = "Collection of utilities for interacting with PyPI";
+      homepage = https://github.com/pypa/twine;
+      license = licenses.asl20;
+      maintainer = with maintainers; [ fridh ];
     };
   };
 
@@ -26767,18 +26833,6 @@ in modules // {
     };
   };
 
-  tornado_4_0_1 = buildPythonPackage rec {
-    name = "tornado-${version}";
-    version = "4.0.1";
-
-    propagatedBuildInputs = with self; [ backports_ssl_match_hostname_3_4_0_2 certifi ];
-
-    src = pkgs.fetchurl {
-      url = "mirror://pypi/t/tornado/${name}.tar.gz";
-      sha256 = "00crp5vnasxg7qyjv89qgssb69vd7qr13jfghdryrcbnn9l8c1df";
-    };
-  };
-
   tokenlib = buildPythonPackage rec {
     name = "tokenlib-${version}";
     version = "0.3.1";
@@ -27637,12 +27691,12 @@ in modules // {
 
   IMAPClient = buildPythonPackage rec {
     name = "IMAPClient-${version}";
-    version = "0.11";
+    version = "0.13";
     disabled = isPy34 || isPy35;
 
     src = pkgs.fetchurl {
       url = "http://freshfoo.com/projects/IMAPClient/${name}.tar.gz";
-      sha256 = "1w54h8gz25qf6ggazzp6xf7kvsyiadsjfkkk17gm0p6pmzvvccbn";
+      sha256 = "0v7kd1crdbff0rmh4ddm5qszkis6hpk9084qh94al8h7g4y9l3is";
     };
 
     buildInputs = with self; [ mock ];
@@ -29157,15 +29211,25 @@ in modules // {
 
   mps-youtube = buildPythonPackage rec {
     name = "mps-youtube-${version}";
-    version = "0.2.6";
+    version = "0.2.7.1";
 
     disabled = (!isPy3k);
 
+    # disabled due to error in loading unittest
+    # don't know how to make test from: <mps_youtube. ...>
+    doCheck = false;
+
+    # before check create a directory and redirect XDG_CONFIG_HOME to it
+    preCheck = ''
+      mkdir -p check-phase
+      export XDG_CONFIG_HOME=$(pwd)/check-phase
+    '';
+
     src = pkgs.fetchFromGitHub {
       owner = "mps-youtube";
       repo = "mps-youtube";
       rev = "v${version}";
-      sha256 = "1vbf60z2birbm7wc9irxy0jf5x3y32ncl8fw52v19xyx7fq10jrm";
+      sha256 = "16zn5gwb3568w95lr21b88zkqlay61p1541sa9c3x69zpi8v0pys";
     };
 
     propagatedBuildInputs = with self; [ pafy ];
@@ -29479,12 +29543,12 @@ in modules // {
   };
 
   hidapi = buildPythonPackage rec{
-    version = "0.7.99.post12";
+    version = "0.7.99.post15";
     name = "hidapi-${version}";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/h/hidapi/${name}.tar.gz";
-      sha256 = "1jaj0y5vn5yk033q01wacsz379mf3sy66d6gz072ycfr5rahcp59";
+      sha256 = "09wlr1d7mx80974bsq62j4pk80234jgl7ip4br0y43q6999dpcr0";
     };
 
     propagatedBuildInputs = with self; [ pkgs.libusb1 pkgs.udev cython ];
@@ -29526,15 +29590,15 @@ in modules // {
   };
 
   trezor = buildPythonPackage rec{
-    version = "0.6.11";
+    version = "0.7.4";
     name = "trezor-${version}";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/t/trezor/${name}.tar.gz";
-      sha256 = "0nqbjj0mvkp314hpq36px12hxbyidmhsdflq3121l4g9y3scfbnx";
+      sha256 = "18nr76jkdg24sb3r8cfbiq12b95gnh0amc0r1wx9mmg3pwq6jx6y";
     };
 
-    propagatedBuildInputs = with self; [ protobuf2_6 hidapi ];
+    propagatedBuildInputs = with self; [ protobuf3_0 hidapi ];
 
     buildInputs = with self; [ ecdsa mnemonic ];
 
@@ -29550,15 +29614,15 @@ in modules // {
   };
 
   keepkey = buildPythonPackage rec{
-    version = "0.7.0";
+    version = "0.7.3";
     name = "keepkey-${version}";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/k/keepkey/${name}.tar.gz";
-      sha256 = "1ikyp4jpydskznsrlwmxh9sn7b64aldwj2lf0phmb19r5kk06qmp";
+      sha256 = "14d2r8dlx997ypgma2k8by90acw7i3l7hfq4gar9lcka0lqfj714";
     };
 
-    propagatedBuildInputs = with self; [ protobuf2_6 hidapi ];
+    propagatedBuildInputs = with self; [ protobuf3_0 hidapi ];
 
     buildInputs = with self; [ ecdsa mnemonic ];
 
@@ -29608,12 +29672,12 @@ in modules // {
   };
 
   trezor_agent = buildPythonPackage rec{
-    version = "0.6.5";
+    version = "0.7.0";
     name = "trezor_agent-${version}";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/t/trezor_agent/${name}.tar.gz";
-      sha256 = "074vzy5qrx7fa2svqdwj1p6nbpxa8xmhfych9qa2kpcq32dg7a8s";
+      sha256 = "1x1gwih6w8kxhpgmcp0v1k7mpmfsqiikkjca291sd0v2if24x7q1";
     };
 
     propagatedBuildInputs = with self; [ trezor ecdsa ed25519 mnemonic keepkey semver ];
@@ -29673,7 +29737,7 @@ in modules // {
     meta = {
       description = "Python test runner";
       homepage = "https://github.com/CleanCut/green";
-      licence = licenses.mit;
+      license = licenses.mit;
     };
   };
 
diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix
index d3fb4e646c3b..a8f319bea601 100644
--- a/pkgs/top-level/release.nix
+++ b/pkgs/top-level/release.nix
@@ -24,13 +24,16 @@ let
   lib = pkgs.lib;
 
   jobs =
-    { tarball = import ./make-tarball.nix { inherit pkgs nixpkgs officialRelease; };
+    rec { tarball = import ./make-tarball.nix { inherit pkgs nixpkgs officialRelease; };
 
       metrics = import ./metrics.nix { inherit pkgs nixpkgs; };
 
       manual = import ../../doc;
       lib-tests = import ../../lib/tests/release.nix { inherit nixpkgs; };
 
+      # for consistency with NixOS tested job
+      tested = unstable;
+
       unstable = pkgs.releaseTools.aggregate
         { name = "nixpkgs-${jobs.tarball.version}";
           meta.description = "Release-critical builds for the Nixpkgs unstable channel";