summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/platforms.nix2
-rwxr-xr-xmaintainers/scripts/hydra-eval-failures.py89
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/monitoring/arbtt.nix2
-rw-r--r--pkgs/applications/graphics/scantailor/default.nix8
-rw-r--r--pkgs/applications/video/cinelerra/default.nix22
-rw-r--r--pkgs/applications/video/shotcut/default.nix13
-rw-r--r--pkgs/development/compilers/rust/nightlyBin.nix4
-rw-r--r--pkgs/development/haskell-modules/configuration-common.nix3
-rw-r--r--pkgs/development/haskell-modules/configuration-hackage2nix.yaml2
-rw-r--r--pkgs/development/interpreters/spidermonkey/17.nix1
-rw-r--r--pkgs/development/interpreters/spidermonkey/aarch64-48bit-va-fix.patch106
-rw-r--r--pkgs/development/libraries/libdrm/default.nix3
-rw-r--r--pkgs/development/libraries/libmsgpack/1.4.nix12
-rw-r--r--pkgs/development/libraries/libvpx/default.nix2
-rw-r--r--pkgs/development/libraries/mesa/default.nix27
-rw-r--r--pkgs/development/libraries/mlt/qt-5.nix12
-rw-r--r--pkgs/development/libraries/speexdsp/default.nix2
-rw-r--r--pkgs/development/ocaml-modules/dolmen/default.nix27
-rw-r--r--pkgs/os-specific/linux/kmscube/default.nix23
-rw-r--r--pkgs/servers/felix/default.nix11
-rw-r--r--pkgs/stdenv/linux/bootstrap-files/aarch64.nix6
-rw-r--r--pkgs/tools/networking/nuttcp/default.nix51
-rw-r--r--pkgs/tools/networking/openconnect/default.nix (renamed from pkgs/tools/networking/openconnect.nix)8
-rw-r--r--pkgs/tools/security/tor/torbrowser.nix11
-rw-r--r--pkgs/tools/security/vault/default.nix12
-rw-r--r--pkgs/top-level/all-packages.nix9
-rw-r--r--pkgs/top-level/ocaml-packages.nix2
-rw-r--r--pkgs/top-level/perl-packages.nix29
-rw-r--r--pkgs/top-level/python-packages.nix53
30 files changed, 473 insertions, 80 deletions
diff --git a/lib/platforms.nix b/lib/platforms.nix
index 0cd9485d4cc..6b56e1734ad 100644
--- a/lib/platforms.nix
+++ b/lib/platforms.nix
@@ -20,5 +20,5 @@ rec {
   openbsd = ["i686-openbsd" "x86_64-openbsd"];
   unix = linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos;
 
-  mesaPlatforms = ["i686-linux" "x86_64-linux" "x86_64-darwin" "armv5tel-linux" "armv6l-linux" "armv7l-linux"];
+  mesaPlatforms = ["i686-linux" "x86_64-linux" "x86_64-darwin" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux"];
 }
diff --git a/maintainers/scripts/hydra-eval-failures.py b/maintainers/scripts/hydra-eval-failures.py
new file mode 100755
index 00000000000..1b5df32c452
--- /dev/null
+++ b/maintainers/scripts/hydra-eval-failures.py
@@ -0,0 +1,89 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i python -p pythonFull pythonPackages.requests pythonPackages.pyquery pythonPackages.click
+
+# To use, just execute this script with --help to display help.
+
+import subprocess
+import json
+
+import click
+import requests
+from pyquery import PyQuery as pq
+
+
+maintainers_json = subprocess.check_output([
+    'nix-instantiate',
+    'lib/maintainers.nix',
+    '--eval',
+    '--json'])
+maintainers = json.loads(maintainers_json)
+MAINTAINERS = {v: k for k, v in maintainers.iteritems()}
+
+
+def get_response_text(url):
+    return pq(requests.get(url).text)  # IO
+
+EVAL_FILE = {
+    'nixos': 'nixos/release.nix',
+    'nixpkgs': 'pkgs/top-level/release.nix',
+}
+
+
+def get_maintainers(attr_name):
+    nixname = attr_name.split('.')
+    meta_json = subprocess.check_output([
+        'nix-instantiate',
+        '--eval',
+        '--strict',
+        '-A',
+        '.'.join(nixname[1:]) + '.meta',
+        EVAL_FILE[nixname[0]],
+        '--json'])
+    meta = json.loads(meta_json)
+    if meta.get('maintainers'):
+        return [MAINTAINERS[name] for name in meta['maintainers'] if MAINTAINERS.get(name)]
+
+
+@click.command()
+@click.option(
+    '--jobset',
+    default="nixos/release-16.09",
+    help='Hydra project like nixos/release-16.09')
+def cli(jobset):
+    """
+    Given a Hydra project, inspect latest evaluation
+    and print a summary of failed builds
+    """
+
+    url = "http://hydra.nixos.org/jobset/{}".format(jobset)
+
+    # get the last evaluation
+    click.echo(click.style(
+        'Getting latest evaluation for {}'.format(url), fg='green'))
+    d = get_response_text(url)
+    evaluations = d('#tabs-evaluations').find('a[class="row-link"]')
+    latest_eval_url = evaluations[0].get('href')
+
+    # parse last evaluation page
+    click.echo(click.style(
+        'Parsing evaluation {}'.format(latest_eval_url), fg='green'))
+    d = get_response_text(latest_eval_url + '?full=1')
+
+    # TODO: aborted evaluations
+    # TODO: dependency failed without propagated builds
+    for tr in d('img[alt="Failed"]').parents('tr'):
+        a = pq(tr)('a')[1]
+        print "- [ ] [{}]({})".format(a.text, a.get('href'))
+
+        maintainers = get_maintainers(a.text)
+        if maintainers:
+            print "  - maintainers: {}".format(", ".join(map(lambda u: '@' + u, maintainers)))
+        # TODO: print last three persons that touched this file
+        # TODO: pinpoint the diff that broke this build, or maybe it's transient or maybe it never worked?
+
+
+if __name__ == "__main__":
+    try:
+        cli()
+    except:
+        import pdb;pdb.post_mortem()
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 5cdcca29c89..ca61916173b 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -328,6 +328,7 @@
   ./services/monitoring/scollector.nix
   ./services/monitoring/smartd.nix
   ./services/monitoring/statsd.nix
+  ./services/monitoring/sysstat.nix
   ./services/monitoring/systemhealth.nix
   ./services/monitoring/teamviewer.nix
   ./services/monitoring/telegraf.nix
diff --git a/nixos/modules/services/monitoring/arbtt.nix b/nixos/modules/services/monitoring/arbtt.nix
index 27d59e367d5..1135c2c441c 100644
--- a/nixos/modules/services/monitoring/arbtt.nix
+++ b/nixos/modules/services/monitoring/arbtt.nix
@@ -49,7 +49,7 @@ in {
   config = mkIf cfg.enable {
     systemd.user.services.arbtt = {
       description = "arbtt statistics capture service";
-      wantedBy = [ "multi-user.target" ];
+      wantedBy = [ "default.target" ];
 
       serviceConfig = {
         Type = "simple";
diff --git a/pkgs/applications/graphics/scantailor/default.nix b/pkgs/applications/graphics/scantailor/default.nix
index 36f7545a053..ec7af882907 100644
--- a/pkgs/applications/graphics/scantailor/default.nix
+++ b/pkgs/applications/graphics/scantailor/default.nix
@@ -1,15 +1,17 @@
 {stdenv, fetchurl, qt4, cmake, libjpeg, libtiff, boost }:
 
 stdenv.mkDerivation rec {
-  name = "scantailor-0.9.11.1";
+  name = "scantailor-0.9.12.1";
 
   src = fetchurl {
-    url = "https://github.com/scantailor/scantailor/archive/RELEASE_0_9_11_1.tar.gz";
-    sha256 = "1z06yg228r317m8ab3mywg0wbpj0x2llqj187bh4g3k4xc2fcm8m";
+    url = "https://github.com/scantailor/scantailor/archive/RELEASE_0_9_12_1.tar.gz";
+    sha256 = "1pjx3a6hs16az6rki59bchy3biy7jndjx8r125q01aq7lbf5npgg";
   };
 
   buildInputs = [ qt4 cmake libjpeg libtiff boost ];
 
+  enableParallelBuilding = true;
+
   meta = {
     homepage = http://scantailor.org/;
     description = "Interactive post-processing tool for scanned pages";
diff --git a/pkgs/applications/video/cinelerra/default.nix b/pkgs/applications/video/cinelerra/default.nix
index b250f9496d6..e3d1e1b1bfd 100644
--- a/pkgs/applications/video/cinelerra/default.nix
+++ b/pkgs/applications/video/cinelerra/default.nix
@@ -2,8 +2,9 @@
 , pkgconfig, faad2, faac, a52dec, alsaLib, fftw, lame, libavc1394
 , libiec61883, libraw1394, libsndfile, libvorbis, libogg, libjpeg
 , libtiff, freetype, mjpegtools, x264, gettext, openexr
-, libXext, libXxf86vm, libXv, libXi, libX11, xextproto, libtheora, libpng
-, libdv, libuuid, file, nasm, perl }:
+, libXext, libXxf86vm, libXv, libXi, libX11, libXft, xextproto, libtheora, libpng
+, libdv, libuuid, file, nasm, perl
+, fontconfig, intltool }:
 
 stdenv.mkDerivation {
   name = "cinelerra-git";
@@ -15,8 +16,16 @@ stdenv.mkDerivation {
 
   src = fetchgit {
     url = "git://git.cinelerra-cv.org/j6t/cinelerra.git";
-    rev = "01dc4375a0fb65d10dd95151473d0e195239175f";
-    sha256 = "0grz644vrnajhxn96x05a3rlwrbd20yq40sw3y5yg7bvi96900gf";
+    # 2.3
+    #rev = "58ef118e63bf2fac8c99add372c584e93b008bae";
+    #sha256 = "1wx8c9rvh4y7fgg39lb02cy3sanms8a4fayr70jbhcb4rp691lph";
+    # master 22 nov 2016
+    #rev = "dbc22e0f35a9e8c274b06d4075b51dc9bace34aa";
+    #sha256 = "0c76j98ws1x2s5hzcdlykxm2bi7987d9nanka428xj62id0grla5";
+
+    # j6t/cinelerra.git
+    rev = "454be60e201c18c1fc3f1f253a6d2184fcfc94c4";
+    sha256 = "1n4kshqhgnr7aivsi8dgx48phyd2nzvv4szbc82mndklvs9jfb7r";
   };
 
   # touch config.rpath: work around bug in automake 1.10 ?
@@ -34,12 +43,15 @@ stdenv.mkDerivation {
       a52dec alsaLib   fftw lame libavc1394 libiec61883
       libraw1394 libsndfile libvorbis libogg libjpeg libtiff freetype
       mjpegtools x264 gettext openexr
-      libXext libXxf86vm libXv libXi libX11 xextproto
+      libXext libXxf86vm libXv libXi libX11 libXft xextproto
       libtheora libpng libdv libuuid
       nasm
       perl
+      fontconfig intltool
     ];
 
+  enableParallelBuilding = true;
+
   meta = {
     description = "Video Editor";
     homepage = http://www.cinelerra.org;
diff --git a/pkgs/applications/video/shotcut/default.nix b/pkgs/applications/video/shotcut/default.nix
index 34c5650e9f7..03d597cac58 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.10";
+  version = "17.01";
 
   src = fetchurl {
     url = "https://github.com/mltframework/shotcut/archive/v${version}.tar.gz";
-    sha256 = "0brskci86bwdj2ahjfvv3v254ligjn97bm0f6c8yg46r0jb8q5xw";
+    sha256 = "1f3276q58rvw1brxfnm9z3v99fx63wml6j02sgmpzazw3172lnpg";
   };
 
   buildInputs = [ SDL frei0r gettext mlt pkgconfig qtbase qtmultimedia qtwebkit
@@ -17,10 +17,17 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
+  prePatch = ''
+    sed 's_shotcutPath, "qmelt"_"${mlt}/bin/melt"_' -i src/jobs/meltjob.cpp
+    sed 's_shotcutPath, "ffmpeg"_"${mlt.ffmpeg}/bin/ffmpeg"_' -i src/jobs/ffmpegjob.cpp
+    NICE=$(type -P nice)
+    sed "s_/usr/bin/nice_''${NICE}_" -i src/jobs/meltjob.cpp src/jobs/ffmpegjob.cpp
+  '';
+
   postInstall = ''
     mkdir -p $out/share/shotcut
     cp -r src/qml $out/share/shotcut/
-    wrapQtProgram $out/bin/shotcut --prefix FREI0R_PATH : ${frei0r}/lib/frei0r-1 --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ jack1 SDL ]}
+    wrapQtProgram $out/bin/shotcut --prefix FREI0R_PATH : ${frei0r}/lib/frei0r-1 --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ jack1 SDL ]} --prefix PATH : ${mlt}/bin
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/compilers/rust/nightlyBin.nix b/pkgs/development/compilers/rust/nightlyBin.nix
index bac35c790d0..5f92e5c6d92 100644
--- a/pkgs/development/compilers/rust/nightlyBin.nix
+++ b/pkgs/development/compilers/rust/nightlyBin.nix
@@ -9,7 +9,7 @@ let
 
   bootstrapHash =
     if stdenv.system == "x86_64-linux"
-    then "05bppmc6hqgv2g4x76rj95xf40x2aikqmcnql5li27rqwliyxznj"
+    then "1v7jvwigb29m15wilzcrk5jmlpaccpzbkhlzf7z5qw08320gvc91"
     else throw "missing boostrap hash for platform ${stdenv.system}";
 
   needsPatchelf = stdenv.isLinux;
@@ -19,7 +19,7 @@ let
      sha256 = bootstrapHash;
   };
 
-  version = "2016-12-29";
+  version = "2017-01-26";
 in
 
 rec {
diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix
index a3082989855..5b8df262877 100644
--- a/pkgs/development/haskell-modules/configuration-common.nix
+++ b/pkgs/development/haskell-modules/configuration-common.nix
@@ -1190,6 +1190,9 @@ self: super: {
     optparse-applicative = self.optparse-applicative_0_13_0_0;
   });
 
+  # No upstream issue tracker
+  hspec-expectations-pretty-diff = dontCheck super.hspec-expectations-pretty-diff;
+
   lentil = super.lentil.overrideScope (self: super: {
     pipes = self.pipes_4_3_2;
     optparse-applicative = self.optparse-applicative_0_13_0_0;
diff --git a/pkgs/development/haskell-modules/configuration-hackage2nix.yaml b/pkgs/development/haskell-modules/configuration-hackage2nix.yaml
index 23e452baa78..bd4b212b52b 100644
--- a/pkgs/development/haskell-modules/configuration-hackage2nix.yaml
+++ b/pkgs/development/haskell-modules/configuration-hackage2nix.yaml
@@ -3060,7 +3060,6 @@ dont-distribute-packages:
   crypto-enigma:                                [ i686-linux, x86_64-linux, x86_64-darwin ]
   crypto-multihash:                             [ i686-linux, x86_64-linux, x86_64-darwin ]
   crypto-random-effect:                         [ i686-linux, x86_64-linux, x86_64-darwin ]
-  cryptonite-openssl:                           [ i686-linux, x86_64-linux, x86_64-darwin ]
   cryptsy-api:                                  [ i686-linux, x86_64-linux, x86_64-darwin ]
   crystalfontz:                                 [ i686-linux, x86_64-linux, x86_64-darwin ]
   cse-ghc-plugin:                               [ i686-linux, x86_64-linux, x86_64-darwin ]
@@ -4731,7 +4730,6 @@ dont-distribute-packages:
   hsparql:                                      [ i686-linux, x86_64-linux, x86_64-darwin ]
   hspear:                                       [ i686-linux, x86_64-linux, x86_64-darwin ]
   hspec-expectations-lifted:                    [ i686-linux, x86_64-linux, x86_64-darwin ]
-  hspec-expectations-pretty-diff:               [ i686-linux, x86_64-linux, x86_64-darwin ]
   hspec-expectations-pretty:                    [ i686-linux, x86_64-linux, x86_64-darwin ]
   hspec-experimental:                           [ i686-linux, x86_64-linux, x86_64-darwin ]
   hspec-golden-aeson:                           [ i686-linux, x86_64-linux, x86_64-darwin ]
diff --git a/pkgs/development/interpreters/spidermonkey/17.nix b/pkgs/development/interpreters/spidermonkey/17.nix
index 1b6eb98b49d..33acb792f76 100644
--- a/pkgs/development/interpreters/spidermonkey/17.nix
+++ b/pkgs/development/interpreters/spidermonkey/17.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
     sed -i 's/(defined\((@TEMPLATE_FILE)\))/\1/' config/milestone.pl
   '' + stdenv.lib.optionalString stdenv.isAarch64 ''
     patch -p1 -d ../.. < ${./aarch64-double-conversion.patch}
+    patch -p1 -d ../.. < ${./aarch64-48bit-va-fix.patch}
   '';
 
   preConfigure = ''
diff --git a/pkgs/development/interpreters/spidermonkey/aarch64-48bit-va-fix.patch b/pkgs/development/interpreters/spidermonkey/aarch64-48bit-va-fix.patch
new file mode 100644
index 00000000000..8258a46b174
--- /dev/null
+++ b/pkgs/development/interpreters/spidermonkey/aarch64-48bit-va-fix.patch
@@ -0,0 +1,106 @@
+From a0c0f32299419359b44ac0f880c1ea9073ae51e1 Mon Sep 17 00:00:00 2001
+From: Zheng Xu <zheng.xu@linaro.org>
+Date: Fri, 02 Sep 2016 17:40:05 +0800
+Subject: [PATCH] Bug 1143022 - Manually mmap on arm64 to ensure high 17 bits are clear. r=ehoogeveen
+
+There might be 48-bit VA on arm64 depending on kernel configuration.
+Manually mmap heap memory to align with the assumption made by JS engine.
+
+Change-Id: Ic5d2b2fe4b758b3c87cc0688348af7e71a991146
+---
+
+diff --git a/js/src/gc/Memory.cpp b/js/src/gc/Memory.cpp
+index 5b386a2..38101cf 100644
+--- a/js/src/gc/Memory.cpp
++++ b/js/src/gc/Memory.cpp
+@@ -309,6 +309,75 @@
+ #endif
+ }
+ 
++static inline void *
++MapMemory(size_t length, int prot, int flags, int fd, off_t offset)
++{
++#if defined(__ia64__)
++    /*
++     * The JS engine assumes that all allocated pointers have their high 17 bits clear,
++     * which ia64's mmap doesn't support directly. However, we can emulate it by passing
++     * mmap an "addr" parameter with those bits clear. The mmap will return that address,
++     * or the nearest available memory above that address, providing a near-guarantee
++     * that those bits are clear. If they are not, we return NULL below to indicate
++     * out-of-memory.
++     *
++     * The addr is chosen as 0x0000070000000000, which still allows about 120TB of virtual
++     * address space.
++     *
++     * See Bug 589735 for more information.
++     */
++    void *region = mmap((void*)0x0000070000000000, length, prot, flags, fd, offset);
++    if (region == MAP_FAILED)
++        return MAP_FAILED;
++    /*
++     * If the allocated memory doesn't have its upper 17 bits clear, consider it
++     * as out of memory.
++     */
++    if ((uintptr_t(region) + (length - 1)) & 0xffff800000000000) {
++        JS_ALWAYS_TRUE(0 == munmap(region, length));
++        return MAP_FAILED;
++    }
++    return region;
++#elif defined(__aarch64__)
++   /*
++    * There might be similar virtual address issue on arm64 which depends on
++    * hardware and kernel configurations. But the work around is slightly
++    * different due to the different mmap behavior.
++    *
++    * TODO: Merge with the above code block if this implementation works for
++    * ia64 and sparc64.
++    */
++    const uintptr_t start = (uintptr_t)(0x0000070000000000UL);
++    const uintptr_t end   = (uintptr_t)(0x0000800000000000UL);
++    const uintptr_t step  = ChunkSize;
++   /*
++    * Optimization options if there are too many retries in practice:
++    * 1. Examine /proc/self/maps to find an available address. This file is
++    *    not always available, however. In addition, even if we examine
++    *    /proc/self/maps, we may still need to retry several times due to
++    *    racing with other threads.
++    * 2. Use a global/static variable with lock to track the addresses we have
++    *    allocated or tried.
++    */
++    uintptr_t hint;
++    void* region = MAP_FAILED;
++    for (hint = start; region == MAP_FAILED && hint + length <= end; hint += step) {
++        region = mmap((void*)hint, length, prot, flags, fd, offset);
++        if (region != MAP_FAILED) {
++            if ((uintptr_t(region) + (length - 1)) & 0xffff800000000000) {
++                if (munmap(region, length)) {
++                    MOZ_ASSERT(errno == ENOMEM);
++                }
++                region = MAP_FAILED;
++            }
++        }
++    }
++    return region == MAP_FAILED ? NULL : region;
++#else
++    return mmap(NULL, length, prot, flags, fd, offset);
++#endif
++}
++
+ void *
+ MapAlignedPages(size_t size, size_t alignment)
+ {
+@@ -322,12 +391,12 @@
+ 
+     /* Special case: If we want page alignment, no further work is needed. */
+     if (alignment == PageSize) {
+-        return mmap(NULL, size, prot, flags, -1, 0);
++        return MapMemory(size, prot, flags, -1, 0);
+     }
+ 
+     /* Overallocate and unmap the region's edges. */
+     size_t reqSize = Min(size + 2 * alignment, 2 * size);
+-    void *region = mmap(NULL, reqSize, prot, flags, -1, 0);
++    void *region = MapMemory(reqSize, prot, flags, -1, 0);
+     if (region == MAP_FAILED)
+         return NULL;
+ 
diff --git a/pkgs/development/libraries/libdrm/default.nix b/pkgs/development/libraries/libdrm/default.nix
index 38d072bc450..3dddd138438 100644
--- a/pkgs/development/libraries/libdrm/default.nix
+++ b/pkgs/development/libraries/libdrm/default.nix
@@ -19,7 +19,8 @@ stdenv.mkDerivation rec {
   preConfigure = stdenv.lib.optionalString stdenv.isDarwin
     "echo : \\\${ac_cv_func_clock_gettime=\'yes\'} > config.cache";
 
-  configureFlags = [ "--enable-freedreno" "--disable-valgrind" ]
+  configureFlags = [ "--disable-valgrind" ]
+    ++ stdenv.lib.optionals (stdenv.isArm || stdenv.isAarch64) [ "--enable-tegra-experimental-api" "--enable-etnaviv-experimental-api" ]
     ++ stdenv.lib.optional stdenv.isDarwin "-C";
 
   crossAttrs.configureFlags = configureFlags ++ [ "--disable-intel" ];
diff --git a/pkgs/development/libraries/libmsgpack/1.4.nix b/pkgs/development/libraries/libmsgpack/1.4.nix
new file mode 100644
index 00000000000..2779162feb8
--- /dev/null
+++ b/pkgs/development/libraries/libmsgpack/1.4.nix
@@ -0,0 +1,12 @@
+{ callPackage, fetchFromGitHub, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "1.4.2";
+
+  src = fetchFromGitHub {
+    owner = "msgpack";
+    repo = "msgpack-c";
+    rev = "cpp-${version}";
+    sha256 = "0zlanifi5hmm303pzykpidq5jbapl891zwkwhkllfn8ab1jvzbaa";
+  };
+})
diff --git a/pkgs/development/libraries/libvpx/default.nix b/pkgs/development/libraries/libvpx/default.nix
index 7d37393d433..53feba1d191 100644
--- a/pkgs/development/libraries/libvpx/default.nix
+++ b/pkgs/development/libraries/libvpx/default.nix
@@ -44,8 +44,6 @@ let
   inherit (stdenv.lib) enableFeature optional optionals;
 in
 
-assert isi686 || isx86_64 || isArm || isMips; # Requires ARM with floating point support
-
 assert vp8DecoderSupport || vp8EncoderSupport || vp9DecoderSupport || vp9EncoderSupport;
 assert internalStatsSupport && (vp9DecoderSupport || vp9EncoderSupport) -> postprocSupport;
 /* If spatialResamplingSupport not enabled, build will fail with undeclared variable errors.
diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix
index 2fc1bfea084..e5cbe8977f0 100644
--- a/pkgs/development/libraries/mesa/default.nix
+++ b/pkgs/development/libraries/mesa/default.nix
@@ -67,13 +67,14 @@ stdenv.mkDerivation {
     "--with-dri-driverdir=$(drivers)/lib/dri"
     "--with-dri-searchpath=${driverLink}/lib/dri"
     "--with-egl-platforms=x11,wayland,drm"
-  ]
-    ++ optionals (stdenv.system != "armv7l-linux") [
-      "--with-gallium-drivers=svga,i915,ilo,r300,r600,radeonsi,nouveau,freedreno,swrast"
+  ] ++ (if stdenv.isArm || stdenv.isAarch64 then [
+      "--with-gallium-drivers=nouveau,freedreno,vc4,swrast"
+      "--with-dri-drivers=nouveau,swrast"
+  ] else [
+      "--with-gallium-drivers=svga,i915,ilo,r300,r600,radeonsi,nouveau,swrast"
       "--with-dri-drivers=i915,i965,nouveau,radeon,r200,swrast"
       "--with-vulkan-drivers=intel"
-  ]
-    ++ [
+  ]) ++ [
     (enableFeature enableTextureFloats "texture-float")
     (enableFeature grsecEnabled "glx-rts")
     (enableFeature stdenv.isLinux "dri3")
@@ -134,14 +135,6 @@ stdenv.mkDerivation {
       $out/lib/libxatracker* \
       $out/lib/libvulkan_*
 
-    # move share/vulkan/icd.d/
-    mv $out/share/ $drivers/
-    # Update search path used by Vulkan (it's pointing to $out but
-    # drivers are in $drivers)
-    for js in $drivers/share/vulkan/icd.d/*.json; do
-      substituteInPlace "$js" --replace "$out" "$drivers"
-    done
-
     mv $out/lib/dri/* $drivers/lib/dri # */
     rmdir "$out/lib/dri"
 
@@ -154,6 +147,14 @@ stdenv.mkDerivation {
 
     # set the default search path for DRI drivers; used e.g. by X server
     substituteInPlace "$dev/lib/pkgconfig/dri.pc" --replace '$(drivers)' "${driverLink}"
+  '' + optionalString (!(stdenv.isArm || stdenv.isAarch64)) ''
+    # move share/vulkan/icd.d/
+    mv $out/share/ $drivers/
+    # Update search path used by Vulkan (it's pointing to $out but
+    # drivers are in $drivers)
+    for js in $drivers/share/vulkan/icd.d/*.json; do
+      substituteInPlace "$js" --replace "$out" "$drivers"
+    done
   '';
 
   # TODO:
diff --git a/pkgs/development/libraries/mlt/qt-5.nix b/pkgs/development/libraries/mlt/qt-5.nix
index 7633008b4be..5b255bd2d2b 100644
--- a/pkgs/development/libraries/mlt/qt-5.nix
+++ b/pkgs/development/libraries/mlt/qt-5.nix
@@ -1,19 +1,21 @@
 { stdenv, fetchurl, SDL, ffmpeg, frei0r, libjack2, libdv, libsamplerate
 , libvorbis, libxml2, makeWrapper, movit, pkgconfig, sox, qtbase, qtsvg
+, fftw, vid-stab, opencv3, ladspa-sdk
 }:
 
 stdenv.mkDerivation rec {
   name = "mlt-${version}";
-  version = "6.2.0";
+  version = "6.4.1";
 
   src = fetchurl {
     url = "https://github.com/mltframework/mlt/archive/v${version}.tar.gz";
-    sha256 = "1zwzfgxrcbwkxnkiwv0a1rzxdnnaly90yyarl9wdw84nx11ffbnx";
+    sha256 = "10m3ry0b2pvqx3bk34qh5dq337nn8pkc2gzfyhsj4nv9abskln47";
   };
 
   buildInputs = [
     SDL ffmpeg frei0r libjack2 libdv libsamplerate libvorbis libxml2
-    makeWrapper movit pkgconfig qtbase qtsvg sox
+    makeWrapper movit pkgconfig qtbase qtsvg sox fftw vid-stab opencv3
+    ladspa-sdk
   ];
 
   # Mostly taken from:
@@ -31,6 +33,10 @@ stdenv.mkDerivation rec {
     wrapProgram $out/bin/melt --prefix FREI0R_PATH : ${frei0r}/lib/frei0r-1
   '';
 
+  passthru = {
+    inherit ffmpeg;
+  };
+
   meta = with stdenv.lib; {
     description = "Open source multimedia framework, designed for television broadcasting";
     homepage = http://www.mltframework.org/;
diff --git a/pkgs/development/libraries/speexdsp/default.nix b/pkgs/development/libraries/speexdsp/default.nix
index dc87c939278..9ec7d651ccb 100644
--- a/pkgs/development/libraries/speexdsp/default.nix
+++ b/pkgs/development/libraries/speexdsp/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
 
   configureFlags = [
     "--with-fft=gpl-fftw3"
-  ];
+  ] ++ stdenv.lib.optional stdenv.isAarch64 "--disable-neon";
 
   meta = with stdenv.lib; {
     hompage = http://www.speex.org/;
diff --git a/pkgs/development/ocaml-modules/dolmen/default.nix b/pkgs/development/ocaml-modules/dolmen/default.nix
new file mode 100644
index 00000000000..26876cad8c8
--- /dev/null
+++ b/pkgs/development/ocaml-modules/dolmen/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, ocaml, findlib, ocamlbuild, menhir }:
+
+stdenv.mkDerivation rec {
+	name = "ocaml${ocaml.version}-dolmen-${version}";
+	version = "0.2";
+	src = fetchFromGitHub {
+		owner = "Gbury";
+		repo = "dolmen";
+		rev = "v${version}";
+		sha256 = "1b9mf8p6mic0n76acx8x82hhgm2n40sdv0jri95im65l52223saf";
+	};
+
+	buildInputs = [ ocaml findlib ocamlbuild ];
+	propagatedBuildInputs = [ menhir ];
+
+	makeFlags = "-C src";
+
+	createFindlibDestdir = true;
+
+	meta = {
+		description = "An OCaml library providing clean and flexible parsers for input languages";
+		license = stdenv.lib.licenses.bsd2;
+		maintainers = [ stdenv.lib.maintainers.vbgl ];
+		inherit (src.meta) homepage;
+		inherit (ocaml.meta) platforms;
+	};
+}
diff --git a/pkgs/os-specific/linux/kmscube/default.nix b/pkgs/os-specific/linux/kmscube/default.nix
new file mode 100644
index 00000000000..0b707ef7239
--- /dev/null
+++ b/pkgs/os-specific/linux/kmscube/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, libdrm, libX11, mesa_noglu, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  name = "kmscube-2016-09-19";
+
+  src = fetchFromGitHub {
+    owner = "robclark";
+    repo = "kmscube";
+    rev = "8c6a20901f95e1b465bbca127f9d47fcfb8762e6";
+    sha256 = "045pf4q3g5b54cdbxppn1dxpcn81h630vmhrixz1d5bcl822nhwj";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ libdrm libX11 mesa_noglu ];
+
+  meta = with stdenv.lib; {
+    description = "Example OpenGL app using KMS/GBM";
+    homepage = "https://github.com/robclark/kmscube";
+    license = licenses.mit;
+    maintainers = with maintainers; [ dezgeg ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/servers/felix/default.nix b/pkgs/servers/felix/default.nix
index 17a50506fa9..5ce680e3646 100644
--- a/pkgs/servers/felix/default.nix
+++ b/pkgs/servers/felix/default.nix
@@ -1,10 +1,11 @@
 {stdenv, fetchurl}:
 
-stdenv.mkDerivation {
-  name = "apache-felix-2.0.5";
+stdenv.mkDerivation rec {
+  name = "apache-felix-${version}";
+  version = "5.6.1";
   src = fetchurl {
-    url = http://apache.xl-mirror.nl/felix/org.apache.felix.main.distribution-2.0.5.tar.gz;
-    sha256 = "14nva0q1b45kmmalcls5yx97syd4vn3vcp8gywck1098qhidi66g";
+    url = "mirror://apache/felix/org.apache.felix.main.distribution-${version}.tar.gz";
+    sha256 = "0kis26iajzdid162j4i7g558q09x4hn9z7pqqys6ipb0fj84hz1x";
   };
   buildCommand =
   ''
@@ -15,7 +16,7 @@ stdenv.mkDerivation {
   '';
   meta = with stdenv.lib; {
     description = "An OSGi gateway";
-    homepage = http://felix.apache.org;
+    homepage = https://felix.apache.org;
     license = licenses.asl20;
     maintainers = [ maintainers.sander ];
   };
diff --git a/pkgs/stdenv/linux/bootstrap-files/aarch64.nix b/pkgs/stdenv/linux/bootstrap-files/aarch64.nix
index 7f1acc83433..4e9c17da2d9 100644
--- a/pkgs/stdenv/linux/bootstrap-files/aarch64.nix
+++ b/pkgs/stdenv/linux/bootstrap-files/aarch64.nix
@@ -1,11 +1,11 @@
 {
   busybox = import <nix/fetchurl.nix> {
-    url = http://nixos-arm.dezgeg.me/bootstrap-aarch64-for-merge/busybox;
+    url = http://nixos-arm.dezgeg.me/bootstrap-aarch64-2017-01-27-264d42b9c/busybox;
     sha256 = "12qcml1l67skpjhfjwy7gr10nc86gqcwjmz9ggp7knss8gq8pv7f";
     executable = true;
   };
   bootstrapTools = import <nix/fetchurl.nix> {
-    url = http://nixos-arm.dezgeg.me/bootstrap-aarch64-for-merge/bootstrap-tools.tar.xz;
-    sha256 = "10sqgh0dchp1906h06jznxh8gfflnzbpfy27hng2mmc1l0c7irjr";
+    url = http://nixos-arm.dezgeg.me/bootstrap-aarch64-2017-01-27-264d42b9c/bootstrap-tools.tar.xz;
+    sha256 = "13h7lgkjyxrmfkx5k1w6rj3j4iqrk28pqagiwqcg8izrydy318bi";
   };
 }
diff --git a/pkgs/tools/networking/nuttcp/default.nix b/pkgs/tools/networking/nuttcp/default.nix
new file mode 100644
index 00000000000..70f3d7e9c70
--- /dev/null
+++ b/pkgs/tools/networking/nuttcp/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "nuttcp-${version}";
+  version = "8.1.4";
+
+  src = fetchurl {
+    urls = [
+      "http://nuttcp.net/nuttcp/latest/${name}.c"
+      "http://nuttcp.net/nuttcp/${name}/${name}.c"
+      "http://nuttcp.net/nuttcp/beta/${name}.c"
+    ];
+    sha256 = "1mygfhwxfi6xg0iycivx98ckak2abc3vwndq74278kpd8g0yyqyh";
+  };
+
+  man = fetchurl {
+    url = "http://nuttcp.net/nuttcp/${name}/nuttcp.8";
+    sha256 = "1yang94mcdqg362qbi85b63746hk6gczxrk619hyj91v5763n4vx";
+  };
+
+  unpackPhase = ":";
+
+  buildPhase = ''
+    gcc -O2 -o nuttcp $src
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp nuttcp $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Network performance measurement tool";
+    longDescription = ''
+      nuttcp is a network performance measurement tool intended for use by
+      network and system managers. Its most basic usage is to determine the raw
+      TCP (or UDP) network layer throughput by transferring memory buffers from
+      a source system across an interconnecting network to a destination
+      system, either transferring data for a specified time interval, or
+      alternatively transferring a specified number of bytes. In addition to
+      reporting the achieved network throughput in Mbps, nuttcp also provides
+      additional useful information related to the data transfer such as user,
+      system, and wall-clock time, transmitter and receiver CPU utilization,
+      and loss percentage (for UDP transfers).
+    '';
+    license = licenses.gpl2;
+    homepage = http://nuttcp.net/;
+    maintainers = with maintainers; [ viric ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/networking/openconnect.nix b/pkgs/tools/networking/openconnect/default.nix
index 2160bdda9e1..d9e3063f5c1 100644
--- a/pkgs/tools/networking/openconnect.nix
+++ b/pkgs/tools/networking/openconnect/default.nix
@@ -7,13 +7,13 @@ in
 assert xor (openssl != null) (gnutls != null);
 
 stdenv.mkDerivation rec {
-  name = "openconnect-7.06";
+  name = "openconnect-7.08";
 
   src = fetchurl {
     urls = [
       "ftp://ftp.infradead.org/pub/openconnect/${name}.tar.gz"
     ];
-    sha256 = "1wkhmgfxkdkhy2p9w9idrgipxmxij2z4f88flfk3fifwd19nkkzs";
+    sha256 = "00wacb79l2c45f94gxs63b9z25wlciarasvjrb8jb8566wgyqi0w";
   };
 
   preConfigure = ''
@@ -32,6 +32,10 @@ stdenv.mkDerivation rec {
   propagatedBuildInputs = [ vpnc openssl gnutls libxml2 zlib ];
 
   meta = {
+    description = "VPN Client for Cisco's AnyConnect SSL VPN";
+    homepage = http://www.infradead.org/openconnect/;
+    license = stdenv.lib.licenses.lgpl21;
+    maintainers = with stdenv.lib.maintainers; [ pradeepchhetri ];
     platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/security/tor/torbrowser.nix b/pkgs/tools/security/tor/torbrowser.nix
index 7661d42a5d6..490864ee2d5 100644
--- a/pkgs/tools/security/tor/torbrowser.nix
+++ b/pkgs/tools/security/tor/torbrowser.nix
@@ -3,16 +3,19 @@
 , atk, pango, freetype, fontconfig, gdk_pixbuf, cairo, zlib
 , gstreamer, gst_plugins_base, gst_plugins_good, gst_ffmpeg, gmp, ffmpeg
 , libpulseaudio
+, mediaSupport ? false
 }:
 
 let
-  libPath = stdenv.lib.makeLibraryPath [
+  libPath = stdenv.lib.makeLibraryPath ([
     stdenv.cc.cc zlib glib alsaLib dbus dbus_glib gtk2 atk pango freetype
     fontconfig gdk_pixbuf cairo libXrender libX11 libXext libXt
+  ] ++ stdenv.lib.optionals mediaSupport [
     gstreamer gst_plugins_base gmp ffmpeg
     libpulseaudio
-  ] ;
+  ]);
 
+  # Ignored if !mediaSupport
   gstPlugins = [ gstreamer gst_plugins_base gst_plugins_good gst_ffmpeg ];
 
   gstPluginsPath = stdenv.lib.concatMapStringsSep ":" (x:
@@ -77,7 +80,9 @@ stdenv.mkDerivation rec {
     fi
     export FONTCONFIG_PATH=\$HOME/Data/fontconfig
     export LD_LIBRARY_PATH=${libPath}:$out/share/tor-browser/Browser/TorBrowser/Tor
-    export GST_PLUGIN_SYSTEM_PATH=${gstPluginsPath}
+    ${stdenv.lib.optionalString mediaSupport ''
+      export GST_PLUGIN_SYSTEM_PATH=${gstPluginsPath}
+    ''}
     exec $out/share/tor-browser/Browser/firefox --class "Tor Browser" -no-remote -profile ~/Data/Browser/profile.default "\$@"
     EOF
     chmod +x $out/bin/tor-browser
diff --git a/pkgs/tools/security/vault/default.nix b/pkgs/tools/security/vault/default.nix
index 96bb4cd482e..1eea59b71f3 100644
--- a/pkgs/tools/security/vault/default.nix
+++ b/pkgs/tools/security/vault/default.nix
@@ -4,12 +4,12 @@ let
   vaultBashCompletions = fetchFromGitHub {
     owner = "iljaweis";
     repo = "vault-bash-completion";
-    rev = "62c142e20929f930c893ebe3366350d735e81fbd";
-    sha256 = "0nfv10ykjq9751ijdyq728gjlgldm1lxvrar8kf6nz6rdfnnl2n5";
+    rev = "e2f59b64be1fa5430fa05c91b6274284de4ea77c";
+    sha256 = "10m75rp3hy71wlmnd88grmpjhqy0pwb9m8wm19l0f463xla54frd";
   };
 in buildGoPackage rec {
   name = "vault-${version}";
-  version = "0.6.3";
+  version = "0.6.4";
 
   goPackagePath = "github.com/hashicorp/vault";
 
@@ -17,7 +17,7 @@ in buildGoPackage rec {
     owner = "hashicorp";
     repo = "vault";
     rev = "v${version}";
-    sha256 = "0cbaws106v5dxqjii1s9rmk55pm6y34jls35iggpx0pp1dd433xy";
+    sha256 = "0rrrzkza12zbbfc24q4q7ygfczq1j8ljsjagsa8vpp3375dflzdy";
   };
 
   buildFlagsArray = ''
@@ -26,7 +26,7 @@ in buildGoPackage rec {
   '';
 
   postInstall = ''
-    mkdir -p $bin/share/bash-completion/completions/ 
+    mkdir -p $bin/share/bash-completion/completions/
     cp ${vaultBashCompletions}/vault-bash-completion.sh $bin/share/bash-completion/completions/vault
   '';
 
@@ -34,6 +34,6 @@ in buildGoPackage rec {
     homepage = https://www.vaultproject.io;
     description = "A tool for managing secrets";
     license = licenses.mpl20;
-    maintainers = with maintainers; [ rushmorem offline ];
+    maintainers = with maintainers; [ rushmorem offline pradeepchhetri ];
   };
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index e08c8bd8849..86b45daecb2 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -3080,6 +3080,8 @@ with pkgs;
 
   numlockx = callPackage ../tools/X11/numlockx { };
 
+  nuttcp = callPackage ../tools/networking/nuttcp { };
+
   nssmdns = callPackage ../tools/networking/nss-mdns { };
 
   nwdiag = pythonPackages.nwdiag;
@@ -4202,11 +4204,11 @@ with pkgs;
 
   openconnect = openconnect_gnutls;
 
-  openconnect_openssl = callPackage ../tools/networking/openconnect.nix {
+  openconnect_openssl = callPackage ../tools/networking/openconnect {
     gnutls = null;
   };
 
-  openconnect_gnutls = callPackage ../tools/networking/openconnect.nix {
+  openconnect_gnutls = callPackage ../tools/networking/openconnect {
     openssl = null;
   };
 
@@ -8191,6 +8193,7 @@ with pkgs;
   libmtp = callPackage ../development/libraries/libmtp { };
 
   libmsgpack = callPackage ../development/libraries/libmsgpack { };
+  libmsgpack_1_4 = callPackage ../development/libraries/libmsgpack/1.4.nix { };
 
   libmysqlconnectorcpp = callPackage ../development/libraries/libmysqlconnectorcpp {
     mysql = mysql57;
@@ -11090,6 +11093,8 @@ with pkgs;
 
   kmscon = callPackage ../os-specific/linux/kmscon { };
 
+  kmscube = callPackage ../os-specific/linux/kmscube { };
+
   latencytop = callPackage ../os-specific/linux/latencytop { };
 
   ldm = callPackage ../os-specific/linux/ldm { };
diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix
index 40f4ba85745..4f2a635e6ff 100644
--- a/pkgs/top-level/ocaml-packages.nix
+++ b/pkgs/top-level/ocaml-packages.nix
@@ -146,6 +146,8 @@ let
 
     ctypes = callPackage ../development/ocaml-modules/ctypes { };
 
+    dolmen =  callPackage ../development/ocaml-modules/dolmen { };
+
     dolog = callPackage ../development/ocaml-modules/dolog { };
 
     easy-format = callPackage ../development/ocaml-modules/easy-format { };
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index 9d8bf693078..70d01fbc143 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -386,11 +386,17 @@ let self = _self // overrides; _self = with self; {
     buildInputs = [ TestNoWarnings Moo TypeTiny ];
   };
 
-  ListCompare = buildPerlPackage {
-    name = "List-Compare-1.18";
+  ListCompare = buildPerlPackage rec {
+    name = "List-Compare-0.53";
     src = fetchurl {
-      url = mirror://cpan/authors/id/J/JK/JKEENAN/List-Compare-0.39.tar.gz;
-      sha256 = "1v4gn176faanzf1kr9axdp1220da7nkvz0d66mnk34nd0skjjxcl";
+      url = "mirror://cpan/authors/id/J/JK/JKEENAN/${name}.tar.gz";
+      sha256 = "fdbf4ff67b3135d44475fef7fcac0cd4706407d5720d26dca914860eb10f8550";
+    };
+    buildInputs = [ IOCaptureOutput ];
+    meta = {
+      homepage = http://thenceforward.net/perl/modules/List-Compare/;
+      description = "Compare elements of two or more lists";
+      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6257,7 +6263,11 @@ let self = _self // overrides; _self = with self; {
     name = "HTML-Tiny-1.05";
     src = fetchurl {
       url = "mirror://cpan/authors/id/A/AN/ANDYA/${name}.tar.gz";
-      sha256 = "18zxg7z51f5daidnwl9vxsrs3lz0y6n5ddqhpb748bjyk3awkkfp";
+      sha256 = "d7cdc9d5985e2e44ceba10b756acf1e0d3a1b3ee3b516e5b54adb850fe79fda3";
+    };
+    meta = {
+      description = "Lightweight, dependency free HTML/XML generation";
+      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
@@ -6591,10 +6601,15 @@ let self = _self // overrides; _self = with self; {
   };
 
   IOCaptureOutput = buildPerlPackage rec {
-    name = "IO-CaptureOutput-1.1103";
+    name = "IO-CaptureOutput-1.1104";
     src = fetchurl {
       url = "mirror://cpan/authors/id/D/DA/DAGOLDEN/${name}.tar.gz";
-      sha256 = "1bcl7p87ysbzab6hssq19xn3djzc0yk9l4hk0a2mqbqb8hv6p0m5";
+      sha256 = "fcc732fcb438f97a72b30e8c7796484bef2562e374553b207028e2fbf73f8330";
+    };
+    meta = {
+      homepage = https://github.com/dagolden/IO-CaptureOutput;
+      description = "Capture STDOUT and STDERR from Perl code, subprocesses or XS";
+      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
 
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 8d54eef393a..aee320cea1f 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -3891,11 +3891,11 @@ in {
 
   cloudpickle = buildPythonPackage rec {
     name = "cloudpickle-${version}";
-    version = "0.2.1";
+    version = "0.2.2";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/c/cloudpickle/${name}.tar.gz";
-      sha256 = "0fsw28nmzrpk0g02y84d7pigkqr64a3x2jhhkfixplxfwravd97f";
+      sha256 = "0x4fbycipkhfax7lydaxcnc14g42g274qba17j51shr5gbq6m8lx";
     };
 
     buildInputs = with self; [ pytest mock ];
@@ -5430,11 +5430,11 @@ in {
 
   dask = buildPythonPackage rec {
     name = "dask-${version}";
-    version = "0.11.0";
+    version = "0.13.0";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/d/dask/${name}.tar.gz";
-      sha256 = "ef32490c0b156584a71576dccec4dfe550a0cd81a9c131a4ee2e43c241b601c3";
+      sha256 = "1f8r6jj9666cnvx3f8bilcx0017smmlw4i4v2p1nwxshs0k514hs";
     };
 
     buildInputs = with self; [ pytest ];
@@ -5493,13 +5493,14 @@ in {
   zict = buildPythonPackage rec {
 
     name = "zict-${version}";
-    version = "0.0.3";
+    version = "0.1.1";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/z/zict/${name}.tar.gz";
-      sha256 = "1xsrlzrih0qmxvxqhk2c5vhzxirf509fppzdfyardl50jpsllni6";
+      sha256 = "12h95vbkbar1hc6cr1kpr6zr486grj3mpx4lznvmnai0iy6pbqp4";
     };
 
+    buildInputs = with self; [ pytest ];
     propagatedBuildInputs = with self; [ heapdict ];
 
     meta = {
@@ -5513,17 +5514,17 @@ in {
   distributed = buildPythonPackage rec {
 
     name = "distributed-${version}";
-    version = "1.13.3";
+    version = "1.15.1";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/d/distributed/${name}.tar.gz";
-      sha256 = "0nka6hqz986j1fhvfmxffgvmnxh66giq9a3ml58jsaf0riq9mjrc";
+      sha256 = "037a07sdf2ch1d360nqwqz3b4ld8msydng7mw4i5s902v7xr05l6";
     };
 
     buildInputs = with self; [ pytest docutils ];
     propagatedBuildInputs = with self; [
       dask six boto3 s3fs tblib locket msgpack click cloudpickle tornado
-      psutil botocore zict lz4
+      psutil botocore zict lz4 sortedcollections sortedcontainers
     ] ++ (if !isPy3k then [ singledispatch ] else []);
 
     # py.test not picking up local config file, even when running
@@ -5624,11 +5625,11 @@ in {
 
   s3fs = buildPythonPackage rec {
     name = "s3fs-${version}";
-    version = "0.0.4";
+    version = "0.0.8";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/s/s3fs/${name}.tar.gz";
-      sha256 = "0gxs9zf0j97liby038i89k5njfrpvdgw0jw34ghzvlp1nzbwxwzl";
+      sha256 = "0zbdzqrim0zig94fk1hswg4vfdjplw6jpx3pdi42qc830h0nscn8";
     };
 
     buildInputs = with self; [ docutils ];
@@ -14610,6 +14611,26 @@ in {
     };
   };
 
+  sortedcollections = buildPythonPackage rec {
+    name = "sortedcollections-${version}";
+    version = "0.4.2";
+
+    src = pkgs.fetchurl {
+      url = "mirror://pypi/s/sortedcollections/${name}.tar.gz";
+      sha256 = "12dlzln9gyv8smsy2k6d6dmr0ywrpwyrr1cjy649ia5h1g7xdvwa";
+    };
+    buildInputs = [ self.sortedcontainers ];
+
+    # wants to test all python versions with tox:
+    doCheck = false;
+
+    meta = {
+      description = "Python Sorted Collections";
+      homepage = http://www.grantjenks.com/docs/sortedcollections/;
+      license = licenses.asl20;
+    };
+  };
+
   hyperframe = buildPythonPackage rec {
     name = "hyperframe-${version}";
     version = "4.0.1";
@@ -18063,11 +18084,11 @@ in {
 
   partd = buildPythonPackage rec {
     name = "partd-${version}";
-    version = "0.3.6";
+    version = "0.3.7";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/p/partd/${name}.tar.gz";
-      sha256 = "1wl8kifdljnpbz0ls7mbbc9j23fc5xzm639im7h88spyg02w68hm";
+      sha256 = "066d254d2dh9xcanffgkjgwxpz5v0059b063bij10fvzl2y49hzx";
     };
 
     buildInputs = with self; [ pytest ];
@@ -25636,16 +25657,18 @@ in {
 
   toolz = buildPythonPackage rec{
     name = "toolz-${version}";
-    version = "0.8.0";
+    version = "0.8.2";
 
     src = pkgs.fetchurl{
       url = "mirror://pypi/t/toolz/toolz-${version}.tar.gz";
-      sha256 = "e8451af61face57b7c5d09e71c0d27b8005f001ead56e9fdf470417e5cc6d479";
+      sha256 = "0l3czks4xy37i8099waxk2fdz5g0k1dwys2mkhlxc0b0886cj4sa";
     };
 
     buildInputs = with self; [ nose ];
 
     checkPhase = ''
+      # https://github.com/pytoolz/toolz/issues/357
+      rm toolz/tests/test_serialization.py
       nosetests toolz/tests
     '';