summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.github/CODEOWNERS3
-rw-r--r--maintainers/maintainer-list.nix25
-rw-r--r--nixos/lib/make-ext4-fs.nix15
-rw-r--r--nixos/modules/hardware/onlykey.nix33
-rw-r--r--nixos/modules/hardware/onlykey.udev4
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--pkgs/applications/editors/android-studio/common.nix6
-rw-r--r--pkgs/applications/editors/android-studio/default.nix6
-rw-r--r--pkgs/applications/editors/ghostwriter/default.nix4
-rw-r--r--pkgs/applications/graphics/photoflow/default.nix55
-rw-r--r--pkgs/applications/kde/default.nix1
-rw-r--r--pkgs/applications/kde/kdebugsettings.nix20
-rw-r--r--pkgs/applications/networking/firehol/default.nix33
-rw-r--r--pkgs/applications/networking/testssl/default.nix12
-rw-r--r--pkgs/applications/networking/testssl/testssl.patch2
-rw-r--r--pkgs/applications/science/misc/sasview/default.nix60
-rw-r--r--pkgs/applications/science/misc/sasview/local_config.patch10
-rw-r--r--pkgs/applications/science/misc/sasview/pyparsing-fix.patch8
-rw-r--r--pkgs/applications/science/misc/sasview/xhtml2pdf.nix32
-rw-r--r--pkgs/applications/version-management/p4v/default.nix48
-rw-r--r--pkgs/applications/video/kodi/plugins.nix26
-rw-r--r--pkgs/applications/window-managers/i3/wk-switch.nix32
-rw-r--r--pkgs/build-support/docker/default.nix21
-rw-r--r--pkgs/development/compilers/ldc/default.nix26
-rw-r--r--pkgs/development/compilers/mono/generic-cmake.nix10
-rw-r--r--pkgs/development/compilers/opendylan/default.nix8
-rw-r--r--pkgs/development/compilers/rust/rustc.nix6
-rw-r--r--pkgs/development/haskell-modules/configuration-nix.nix5
-rw-r--r--pkgs/development/libraries/libetpan/default.nix4
-rw-r--r--pkgs/development/libraries/live555/default.nix4
-rw-r--r--pkgs/development/libraries/mailcore2/default.nix4
-rw-r--r--pkgs/development/libraries/openzwave/default.nix56
-rw-r--r--pkgs/development/libraries/tachyon/default.nix53
-rw-r--r--pkgs/development/libraries/tachyon/make-archs.patch37
-rw-r--r--pkgs/development/libraries/tachyon/no-absolute-paths.patch57
-rw-r--r--pkgs/development/libraries/xalanc/default.nix5
-rw-r--r--pkgs/development/python-modules/bumps/default.nix24
-rw-r--r--pkgs/development/python-modules/graph-tool/2.x.x.nix15
-rw-r--r--pkgs/development/python-modules/periodictable/default.nix20
-rw-r--r--pkgs/development/python-modules/python_openzwave/default.nix40
-rw-r--r--pkgs/development/python-modules/sasmodels/default.nix24
-rw-r--r--pkgs/development/python-modules/unittest-xml-reporting/default.nix23
-rw-r--r--pkgs/development/tools/build-managers/sbt/default.nix4
-rw-r--r--pkgs/development/tools/haskell/multi-ghc-travis/default.nix17
-rw-r--r--pkgs/misc/cups/drivers/hl1110/default.nix73
-rw-r--r--pkgs/misc/cups/drivers/hll2390dw-cups/default.nix71
-rw-r--r--pkgs/misc/vim-plugins/default.nix3
-rw-r--r--pkgs/os-specific/linux/mcelog/default.nix4
-rw-r--r--pkgs/os-specific/linux/spl/default.nix15
-rw-r--r--pkgs/os-specific/linux/spl/install_prefix-0.7.8.patch174
-rw-r--r--pkgs/os-specific/linux/spl/install_prefix.patch12
-rw-r--r--pkgs/os-specific/linux/zfs/default.nix10
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix8
-rw-r--r--pkgs/servers/home-assistant/default.nix2
-rwxr-xr-xpkgs/servers/home-assistant/parse-requirements.py9
-rw-r--r--pkgs/shells/zsh/default.nix6
-rw-r--r--pkgs/tools/audio/abcmidi/default.nix4
-rw-r--r--pkgs/tools/filesystems/f3/default.nix17
-rw-r--r--pkgs/tools/system/krakenx/default.nix23
-rw-r--r--pkgs/top-level/all-packages.nix21
-rw-r--r--pkgs/top-level/python-packages.nix16
61 files changed, 1226 insertions, 141 deletions
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 01a24d64988..4e508d739e6 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -64,6 +64,9 @@
 /pkgs/development/interpreters/ruby @zimbatm
 /pkgs/development/ruby-modules      @zimbatm
 
+# Rust
+/pkgs/development/compilers/rust @Mic92 @LnL7
+
 # Darwin-related
 /pkgs/stdenv/darwin         @NixOS/darwin-maintainers
 /pkgs/os-specific/darwin    @NixOS/darwin-maintainers
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 7ea5bb2d106..b9858de5b70 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -2520,6 +2520,11 @@
     github = "mt-caret";
     name = "Masayuki Takeda";
   };
+  MtP = {
+    email = "marko.nixos@poikonen.de";
+    github = "MtP76";
+    name = "Marko Poikonen";
+  };
   mtreskin = {
     email = "zerthurd@gmail.com";
     github = "Zert";
@@ -2615,6 +2620,11 @@
     github = "ninjatrappeur";
     name = "Félix Baylac-Jacqué";
   };
+  nioncode = {
+    email = "nioncode+github@gmail.com";
+    github = "nioncode";
+    name = "Nicolas Schneider";
+  };
   nipav = {
     email = "niko.pavlinek@gmail.com";
     github = "nipav";
@@ -3069,6 +3079,11 @@
     github = "risicle";
     name = "Robert Scott";
   };
+  rittelle = {
+    email = "rittelle@posteo.de";
+    github = "rittelle";
+    name = "Lennart Rittel";
+  };
   rlupton20 = {
     email = "richard.lupton@gmail.com";
     github = "rlupton20";
@@ -3129,6 +3144,11 @@
     github = "rongcuid";
     name = "Rongcui Dong";
   };
+  rprospero = {
+    email = "rprospero+nix@gmail.com";
+    github = "rprospero";
+    name = "Adam Washington";
+  };
   rszibele = {
     email = "richard@szibele.com";
     github = "rszibele";
@@ -3491,6 +3511,11 @@
     github = "symphorien";
     name = "Guillaume Girol";
   };
+  synthetica = {
+    email = "nix@hilhorst.be";
+    github = "Synthetica9";
+    name = "Patrick Hilhorst";
+  };
   szczyp = {
     email = "qb@szczyp.com";
     github = "szczyp";
diff --git a/nixos/lib/make-ext4-fs.nix b/nixos/lib/make-ext4-fs.nix
index 21c69ed560a..986d80ff1b9 100644
--- a/nixos/lib/make-ext4-fs.nix
+++ b/nixos/lib/make-ext4-fs.nix
@@ -7,23 +7,22 @@
 , volumeLabel
 }:
 
+let
+  sdClosureInfo = pkgs.closureInfo { rootPaths = storePaths; };
+in
+
 pkgs.stdenv.mkDerivation {
   name = "ext4-fs.img";
 
   nativeBuildInputs = with pkgs; [e2fsprogs libfaketime perl];
 
-  # For obtaining the closure of `storePaths'.
-  exportReferencesGraph =
-    map (x: [("closure-" + baseNameOf x) x]) storePaths;
-
   buildCommand =
     ''
       # Add the closures of the top-level store objects.
-      storePaths=$(perl ${pkgs.pathsFromGraph} closure-*)
+      storePaths=$(cat ${sdClosureInfo}/store-paths)
 
-      # Also include a manifest of the closures in a format suitable
-      # for nix-store --load-db.
-      printRegistration=1 perl ${pkgs.pathsFromGraph} closure-* > nix-path-registration
+      # Also include a manifest of the closures in a format suitable for nix-store --load-db.
+      cp ${sdClosureInfo}/registration nix-path-registration
 
       # Make a crude approximation of the size of the target image.
       # If the script starts failing, increase the fudge factors here.
diff --git a/nixos/modules/hardware/onlykey.nix b/nixos/modules/hardware/onlykey.nix
new file mode 100644
index 00000000000..b6820fe0191
--- /dev/null
+++ b/nixos/modules/hardware/onlykey.nix
@@ -0,0 +1,33 @@
+{ config, lib, ... }:
+
+with lib;
+
+{
+
+  ####### interface
+
+  options = {
+
+    hardware.onlykey = {
+      enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Enable OnlyKey device (https://crp.to/p/) support.
+        '';
+      };
+    };
+
+  };
+
+  ## As per OnlyKey's documentation piece (hhttps://docs.google.com/document/d/1Go_Rs218fKUx-j_JKhddbSVTqY6P0vQO831t2MKCJC8),
+  ## it is important to add udev rule for OnlyKey for it to work on Linux
+
+  ####### implementation
+
+  config = mkIf config.hardware.onlykey.enable {
+    services.udev.extraRules = builtin.readFile ./onlykey.udev;
+  };
+
+
+}
diff --git a/nixos/modules/hardware/onlykey.udev b/nixos/modules/hardware/onlykey.udev
new file mode 100644
index 00000000000..6583530e568
--- /dev/null
+++ b/nixos/modules/hardware/onlykey.udev
@@ -0,0 +1,4 @@
+ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789A]?", ENV{MTP_NO_PROBE}="1"
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789ABCD]?", GROUP+="plugdev"
+KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", GROUP+="plugdev"
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 2f9b1083ef1..63e463370d1 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -41,6 +41,7 @@
   ./hardware/pcmcia.nix
   ./hardware/raid/hpsa.nix
   ./hardware/usb-wwan.nix
+  ./hardware/onlykey.nix
   ./hardware/video/amdgpu.nix
   ./hardware/video/amdgpu-pro.nix
   ./hardware/video/ati.nix
diff --git a/pkgs/applications/editors/android-studio/common.nix b/pkgs/applications/editors/android-studio/common.nix
index f963fe378d5..a165fad370e 100644
--- a/pkgs/applications/editors/android-studio/common.nix
+++ b/pkgs/applications/editors/android-studio/common.nix
@@ -5,10 +5,13 @@
 , fetchurl
 , findutils
 , file
+, fontsConf
 , git
 , glxinfo
 , gnugrep
+, gnused
 , gnutar
+, gtk2, gnome_vfs, glib, GConf
 , gzip
 , fontconfig
 , freetype
@@ -29,8 +32,6 @@
 , writeTextFile
 , xkeyboard_config
 , zlib
-, gtk2, gnome_vfs, glib, GConf
-, fontsConf
 }:
 
 let
@@ -57,6 +58,7 @@ let
           findutils
           gnugrep
           which
+          gnused
 
           # For Android emulator
           file
diff --git a/pkgs/applications/editors/android-studio/default.nix b/pkgs/applications/editors/android-studio/default.nix
index 72794df5fde..d7baa7f7c71 100644
--- a/pkgs/applications/editors/android-studio/default.nix
+++ b/pkgs/applications/editors/android-studio/default.nix
@@ -8,9 +8,9 @@ let
     inherit (gnome2) GConf gnome_vfs;
   };
   latestVersion = {
-    version = "3.2.0.8"; # "Android Studio 3.2 Canary 9"
-    build = "173.4688006";
-    sha256Hash = "13kln5s45qzdi54gca0bvdiwl2mi6lg8zgp7f36a24zbmvdmnslv";
+    version = "3.2.0.9"; # "Android Studio 3.2 Canary 10"
+    build = "181.4705630";
+    sha256Hash = "07xf00f0wvrk576iaqn7qpcpgar432n6q3jlgpslhm4m1cww3sww";
   };
 in rec {
   # Old alias
diff --git a/pkgs/applications/editors/ghostwriter/default.nix b/pkgs/applications/editors/ghostwriter/default.nix
index 491fc0ca2a8..aeae711c1c0 100644
--- a/pkgs/applications/editors/ghostwriter/default.nix
+++ b/pkgs/applications/editors/ghostwriter/default.nix
@@ -2,14 +2,14 @@
 
 stdenv.mkDerivation rec {
   pname = "ghostwriter";
-  version = "1.5.0";
+  version = "1.6.1";
   name = "${pname}-${version}";
 
   src = fetchFromGitHub {
     owner = "wereturtle";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0ixw2w2526836lwj4pc0vp7prp1gls7iq37v8m9ql1508b33b9pq";
+    sha256 = "1ihdr4xk0j83q83xknbikxb7yf9qhlkgvc89w33lhj090cv376gd";
   };
 
   nativeBuildInputs = [ qmake pkgconfig ];
diff --git a/pkgs/applications/graphics/photoflow/default.nix b/pkgs/applications/graphics/photoflow/default.nix
new file mode 100644
index 00000000000..ffef558e84d
--- /dev/null
+++ b/pkgs/applications/graphics/photoflow/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchFromGitHub, gettext, glib, libxml2, pkgconfig, swig, automake, gobjectIntrospection, cmake, ninja, libtiff, libjpeg, fftw, exiv2, lensfun, gtkmm2, libraw, lcms2, libexif, vips, expat, pcre, pugixml }:
+
+stdenv.mkDerivation {
+  name = "photoflow-unstable-2018-03-06";
+
+  src = fetchFromGitHub {
+    owner = "aferrero2707";
+    repo = "PhotoFlow";
+    rev = "f9bbea183fa02412d1d17075955d2284eeaf8174";
+    sha256 = "1fsk7kdmlkd64wcswbxrl87aqwmzqak6p3s38ggxzx2h51fa7lmf";
+  };
+
+  nativeBuildInputs = [
+    gettext
+    glib
+    libxml2
+    pkgconfig
+    swig
+    automake
+    gobjectIntrospection
+    cmake
+    ninja
+  ];
+
+  buildInputs = [
+    libtiff
+    libjpeg
+    fftw
+    exiv2
+    lensfun
+    gtkmm2  # Could be build with gtk3 but proper UI theme is missing and therefore not very usable with gtk3
+            # See: https://discuss.pixls.us/t/help-needed-for-gtk3-theme/5803
+    libraw
+    lcms2
+    libexif
+    vips
+    expat
+    pcre
+    pugixml
+  ];
+
+  cmakeFlags = [
+    "-DBUNDLED_EXIV2=OFF"
+    "-DBUNDLED_LENSFUN=OFF"
+    "-DBUNDLED_GEXIV2=OFF"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "A fully non-destructive photo retouching program providing a complete RAW image editing workflow";
+    homepage = https://aferrero2707.github.io/PhotoFlow/;
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.MtP ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/applications/kde/default.nix b/pkgs/applications/kde/default.nix
index 2555fe409f2..0c080753f05 100644
--- a/pkgs/applications/kde/default.nix
+++ b/pkgs/applications/kde/default.nix
@@ -93,6 +93,7 @@ let
       kcolorchooser = callPackage ./kcolorchooser.nix {};
       kcontacts = callPackage ./kcontacts.nix {};
       kdav = callPackage ./kdav.nix {};
+      kdebugsettings = callPackage ./kdebugsettings.nix {};
       kdegraphics-mobipocket = callPackage ./kdegraphics-mobipocket.nix {};
       kdegraphics-thumbnailers = callPackage ./kdegraphics-thumbnailers.nix {};
       kdenetwork-filesharing = callPackage ./kdenetwork-filesharing.nix {};
diff --git a/pkgs/applications/kde/kdebugsettings.nix b/pkgs/applications/kde/kdebugsettings.nix
new file mode 100644
index 00000000000..a58e1b25a2e
--- /dev/null
+++ b/pkgs/applications/kde/kdebugsettings.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules, kdoctools,
+  gettext,
+  kcoreaddons, kconfig, kdbusaddons, kwidgetsaddons, kitemviews, kcompletion,
+  python
+}:
+
+mkDerivation {
+  name = "kdebugsettings";
+  meta = {
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = [ lib.maintainers.rittelle ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    gettext kcoreaddons kconfig kdbusaddons kwidgetsaddons kitemviews kcompletion python
+  ];
+  propagatedUserEnvPkgs = [ ];
+}
diff --git a/pkgs/applications/networking/firehol/default.nix b/pkgs/applications/networking/firehol/default.nix
index 8bbc0abba22..9efe20b3ee9 100644
--- a/pkgs/applications/networking/firehol/default.nix
+++ b/pkgs/applications/networking/firehol/default.nix
@@ -2,8 +2,8 @@
 , autoconf, automake, curl, iprange, iproute, ipset, iptables, iputils
 , kmod, nettools, procps, tcpdump, traceroute, utillinux, whois
 
-# Just install FireQOS without FireHOL
-, onlyQOS ? true
+# If true, just install FireQOS without FireHOL
+, onlyQOS ? false
 }:
 
 stdenv.mkDerivation rec {
@@ -52,6 +52,35 @@ stdenv.mkDerivation rec {
 
            AS_IF([test "x$ac_cv_ping_6_opt" = "xyes"],[
       '')
+
+    # put firehol config files in /etc/firehol (not $out/etc/firehol)
+    # to avoid error on startup, see #35114
+    (pkgs.writeText "firehol-sysconfdir.patch"
+      ''
+      --- a/sbin/install.config.in.in
+      +++ b/sbin/install.config.in.in
+      @@ -4 +4 @@
+      -SYSCONFDIR="@sysconfdir_POST@"
+      +SYSCONFDIR="/etc"
+      '')
+
+    # we must quote "$UNAME_CMD", or the dash in /nix/store/...-coreutils-.../bin/uname
+    # will be interpreted as IFS -> error. this might be considered an upstream bug
+    # but only appears when there are dashes in the command path
+    (pkgs.writeText "firehol-uname-command.patch"
+      ''
+      --- a/sbin/firehol
+      +++ b/sbin/firehol
+      @@ -10295,7 +10295,7 @@
+       	kmaj=$1
+       	kmin=$2
+       
+      -	set -- $($UNAME_CMD -r)
+      +	set -- $("$UNAME_CMD" -r)
+       	eval $kmaj=\$1 $kmin=\$2
+       }
+       kernel_maj_min KERNELMAJ KERNELMIN
+      '')
   ];
   
   nativeBuildInputs = [ autoconf automake ];
diff --git a/pkgs/applications/networking/testssl/default.nix b/pkgs/applications/networking/testssl/default.nix
index 24ffe61b5ab..97c05dfafdb 100644
--- a/pkgs/applications/networking/testssl/default.nix
+++ b/pkgs/applications/networking/testssl/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, pkgs }:
 
 let
-  version = "2.9.5-3";
+  version = "2.9.5-4";
   pwdBinPath = "${stdenv.lib.makeBinPath (with pkgs; [ coreutils ])}/pwd";
   opensslBinPath = "${stdenv.lib.makeBinPath (with pkgs; [ openssl ])}/openssl";
 
@@ -12,16 +12,16 @@ in stdenv.mkDerivation rec {
     owner = "drwetter";
     repo = "testssl.sh";
     rev = "v${version}";
-    sha256 = "07vlmf3gn2xa4wam2sql6c1s1hvj5adzd6l1fl12lq066v0k7r7n";
+    sha256 = "0pfp7r4jhvkh06vawqlvq7vp4imwp6dpq6jx8m0k3j85ywwp45pd";
   };
 
   patches = [ ./testssl.patch ];
 
   postPatch = ''
-    sed -i -e "s|/bin/pwd|${pwdBinPath}|g"                                     \
-           -e "s|TESTSSL_INSTALL_DIR:-\"\"|TESTSSL_INSTALL_DIR:-\"$out\"|g"    \
-           -e "s|OPENSSL:-\"\"|OPENSSL:-\"${opensslBinPath}\"|g" \
-           testssl.sh
+    substituteInPlace testssl.sh                                               \
+      --replace /bin/pwd                    ${pwdBinPath}                      \
+      --replace TESTSSL_INSTALL_DIR:-\"\"   TESTSSL_INSTALL_DIR:-\"$out\"      \
+      --replace @@openssl-path@@            ${opensslBinPath}
   '';
 
   installPhase = ''
diff --git a/pkgs/applications/networking/testssl/testssl.patch b/pkgs/applications/networking/testssl/testssl.patch
index d5269c73708..ffc9e4b1c16 100644
--- a/pkgs/applications/networking/testssl/testssl.patch
+++ b/pkgs/applications/networking/testssl/testssl.patch
@@ -4,7 +4,7 @@
  # following variables make use of $ENV, e.g. OPENSSL=<myprivate_path_to_openssl> ./testssl.sh <host>
  # 0 means (normally) true here. Some of the variables are also accessible with a command line switch, see --help
  declare -x OPENSSL OPENSSL_TIMEOUT
-+OPENSSL=${OPENSSL:-""}
++OPENSSL=${OPENSSL:-"@@openssl-path@@"}
  FAST_SOCKET=${FAST_SOCKET:-false}       # EXPERIMENTAL feature to accelerate sockets -- DO NOT USE it for production
  COLOR=${COLOR:-2}                       # 2: Full color, 1: b/w+positioning, 0: no ESC at all
  COLORBLIND=${COLORBLIND:-false}         # if true, swap blue and green in the output
diff --git a/pkgs/applications/science/misc/sasview/default.nix b/pkgs/applications/science/misc/sasview/default.nix
new file mode 100644
index 00000000000..d0a4f74924c
--- /dev/null
+++ b/pkgs/applications/science/misc/sasview/default.nix
@@ -0,0 +1,60 @@
+{lib, fetchgit, gcc, python}:
+
+let
+  xhtml2pdf = import ./xhtml2pdf.nix { inherit lib;
+    fetchPypi = python.pkgs.fetchPypi;
+    buildPythonPackage = python.pkgs.buildPythonPackage;
+    html5lib = python.pkgs.html5lib;
+    httplib2 = python.pkgs.httplib2;
+    nose = python.pkgs.nose;
+    pillow = python.pkgs.pillow;
+    pypdf2 = python.pkgs.pypdf2;
+    reportlab = python.pkgs.reportlab;
+};
+
+in
+
+python.pkgs.buildPythonApplication rec {
+  pname = "sasview";
+  version = "4.1.2";
+
+  buildInputs = with python.pkgs; [
+    pytest
+    unittest-xml-reporting];
+
+  propagatedBuildInputs = with python.pkgs; [
+    bumps
+    gcc
+    h5py
+    libxslt
+    lxml
+    matplotlib
+    numpy
+    pyparsing
+    periodictable
+    pillow
+    pylint
+    pyopencl
+    reportlab
+    sasmodels
+    scipy
+    six
+    sphinx
+    wxPython
+    xhtml2pdf];
+
+  src = fetchgit {
+    url = "https://github.com/SasView/sasview.git";
+    rev = "v${version}";
+    sha256 ="05la54wwzzlkhmj8vkr0bvzagyib6z6mgwqbddzjs5y1wd48vpcx";
+  };
+
+  patches = [./pyparsing-fix.patch ./local_config.patch];
+
+  meta = {
+    homepage = https://www.sasview.org;
+    description = "Fitting and data analysis for small angle scattering data";
+    maintainers = with lib.maintainers; [ rprospero ];
+    license = lib.licenses.bsd3;
+  };
+}
diff --git a/pkgs/applications/science/misc/sasview/local_config.patch b/pkgs/applications/science/misc/sasview/local_config.patch
new file mode 100644
index 00000000000..91972a913bc
--- /dev/null
+++ b/pkgs/applications/science/misc/sasview/local_config.patch
@@ -0,0 +1,10 @@
+--- a/src/sas/_config.py
++++ b/src/sas/_config.py
+@@ -70,2 +70,2 @@
+-        logger.critical("Error loading %s: %s", path, exc)
+-        sys.exit()
++        import sas.sasview.local_config
++        return sas.sasview.local_config
+-- 
+2.15.0
+
diff --git a/pkgs/applications/science/misc/sasview/pyparsing-fix.patch b/pkgs/applications/science/misc/sasview/pyparsing-fix.patch
new file mode 100644
index 00000000000..7729292cb34
--- /dev/null
+++ b/pkgs/applications/science/misc/sasview/pyparsing-fix.patch
@@ -0,0 +1,8 @@
+--- a/setup.py
++++ b/setup.py
+@@ -5,1 +5,1 @@
+-    'bumps>=0.7.5.9', 'periodictable>=1.5.0', 'pyparsing<2.0.0',
++    'bumps>=0.7.5.9', 'periodictable>=1.5.0',
+-- 
+2.15.0
+
diff --git a/pkgs/applications/science/misc/sasview/xhtml2pdf.nix b/pkgs/applications/science/misc/sasview/xhtml2pdf.nix
new file mode 100644
index 00000000000..0b3d438843d
--- /dev/null
+++ b/pkgs/applications/science/misc/sasview/xhtml2pdf.nix
@@ -0,0 +1,32 @@
+{lib, fetchPypi, buildPythonPackage, html5lib, httplib2, nose, pillow, pypdf2, reportlab}:
+
+let
+  #xhtml2pdf specifically requires version "1.0b10" of html5lib
+  html5 = html5lib.overrideAttrs( oldAttrs: rec{
+    version = "1.0b10";
+    src = oldAttrs.src.override {
+      inherit version;
+      sha256 = "1yd068a5c00wd0ajq0hqimv7fd82lhrw0w3s01vbhy9bbd6xapqd";
+    };
+  });
+in
+
+buildPythonPackage rec {
+  pname = "xhtml2pdf";
+  version = "0.2.1";
+
+  buildInputs = [html5];
+  propagatedBuildInputs = [httplib2 nose pillow pypdf2 reportlab html5];
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1n9r8zdk9gc2x539fq60bhszmd421ipj8g78zmsn3njvma1az9k1";
+  };
+
+  meta = {
+    description = "A pdf converter for the ReportLab Toolkit";
+    homepage = https://github.com/xhtml2pdf/xhtml2pdf;
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ rprospero ];
+  };
+}
diff --git a/pkgs/applications/version-management/p4v/default.nix b/pkgs/applications/version-management/p4v/default.nix
new file mode 100644
index 00000000000..27e029d39d1
--- /dev/null
+++ b/pkgs/applications/version-management/p4v/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchurl, lib, qtbase, qtmultimedia, qtscript, qtsensors, qtwebkit, openssl, xkeyboard_config, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "p4v-${version}";
+  version = "2017.3.1601999";
+
+  src = fetchurl {
+    url = "https://cdist2.perforce.com/perforce/r17.3/bin.linux26x86_64/p4v.tgz";
+    sha256 = "f317607f1bc8877db01ff020b8b0857c2d0f8600474d152749264aea0be66b21";
+  };
+
+  dontBuild = true;
+  nativeBuildInputs = [makeWrapper];
+
+  ldLibraryPath = lib.makeLibraryPath [
+      stdenv.cc.cc.lib
+      qtbase
+      qtmultimedia
+      qtscript
+      qtsensors
+      qtwebkit
+      openssl
+  ];
+
+  installPhase = ''
+    mkdir $out
+    cp -r bin $out
+    mkdir -p $out/lib/p4v
+    cp -r lib/p4v/P4VResources $out/lib/p4v
+
+    for f in $out/bin/*.bin ; do
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $f
+
+      wrapProgram $f \
+        --suffix LD_LIBRARY_PATH : ${ldLibraryPath} \
+        --suffix QT_XKB_CONFIG_ROOT : ${xkeyboard_config}/share/X11/xkb \
+        --suffix QT_PLUGIN_PATH : ${qtbase.bin}/${qtbase.qtPluginPrefix}
+    done
+  '';
+
+  meta = {
+    description = "Perforce Visual Client";
+    homepage = https://www.perforce.com;
+    license = stdenv.lib.licenses.unfreeRedistributable;
+    platforms = [ "x86_64-linux" ];
+    maintainers = [ stdenv.lib.maintainers.nioncode ];
+  };
+}
diff --git a/pkgs/applications/video/kodi/plugins.nix b/pkgs/applications/video/kodi/plugins.nix
index 6bcba1e927f..01e134afee6 100644
--- a/pkgs/applications/video/kodi/plugins.nix
+++ b/pkgs/applications/video/kodi/plugins.nix
@@ -1,5 +1,5 @@
 { stdenv, lib, callPackage, fetchurl, fetchFromGitHub, unzip
-, steam, libusb, pcre-cpp, jsoncpp, libhdhomerun }:
+, steam, libusb, pcre-cpp, jsoncpp, libhdhomerun, zlib }:
 
 with (callPackage ./commons.nix {});
 
@@ -314,4 +314,28 @@ rec {
     extraBuildInputs = [ jsoncpp libhdhomerun ];
 
   };
+
+  pvr-iptvsimple = mkKodiABIPlugin rec {
+
+    plugin = "pvr-iptvsimple";
+    namespace = "pvr.iptvsimple";
+    version = "2.4.14";
+
+    src = fetchFromGitHub {
+      owner = "kodi-pvr";
+      repo = "pvr.iptvsimple";
+      rev = "2a649d7e21b64c4fa4a8b14c2cc139261eebc7e8";
+      sha256 = "1f1im2gachrxnr3z96h5cg2c13vapgkvkdwvrbl4hxlnyp1a6jyz";
+    };
+
+    meta = with stdenv.lib; {
+      homepage = https://github.com/kodi-pvr/pvr.iptvsimple;
+      description = "Kodi's IPTV Simple client addon";
+      platforms = platforms.all;
+      maintainers = with maintainers; [ ];
+      license = licenses.gpl2Plus;
+    };
+
+    extraBuildInputs = [ zlib ];
+  };
 }
diff --git a/pkgs/applications/window-managers/i3/wk-switch.nix b/pkgs/applications/window-managers/i3/wk-switch.nix
new file mode 100644
index 00000000000..39bd62cd5aa
--- /dev/null
+++ b/pkgs/applications/window-managers/i3/wk-switch.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, python2Packages }:
+
+python2Packages.buildPythonApplication rec {
+  pname = "i3-wk-switch";
+  version = "2017-08-21";
+
+  # https://github.com/tmfink/i3-wk-switch/commit/484f840bc4c28ddc60fa3be81e2098f7689e78fb
+  src = fetchFromGitHub {
+    owner = "tmfink";
+    repo = pname;
+    rev = "484f840";
+    sha256 = "0nrc13ld5bx07wrgnpzgpbaixb4rpi93xiapvyb8srd49fj9pcmb";
+  };
+
+  propagatedBuildInputs = with python2Packages; [ i3-py ];
+
+  dontBuild = true;
+  doCheck = false;
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    cp i3-wk-switch.py "$out/bin/i3-wk-switch"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "XMonad-like workspace switching for i3";
+    maintainers = with maintainers; [ synthetica ];
+    platforms = platforms.linux;
+    license = licenses.mit;
+    homepage = https://travisf.net/i3-wk-switcher;
+  };
+}
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix
index f531f1349c6..b8eda3d0967 100644
--- a/pkgs/build-support/docker/default.nix
+++ b/pkgs/build-support/docker/default.nix
@@ -249,6 +249,10 @@ rec {
     baseJson,
     # Files to add to the layer.
     contents ? null,
+    # When copying the contents into the image, preserve symlinks to
+    # directories (see `rsync -K`).  Otherwise, transform those symlinks
+    # into directories.
+    keepContentsDirlinks ? false,
     # Additional commands to run on the layer before it is tar'd up.
     extraCommands ? "", uid ? 0, gid ? 0
   }:
@@ -262,7 +266,7 @@ rec {
         echo "Adding contents..."
         for item in $contents; do
           echo "Adding $item"
-          rsync -ak --chown=0:0 $item/ layer/
+          rsync -a${if keepContentsDirlinks then "K" else "k"} --chown=0:0 $item/ layer/
         done
       else
         echo "No contents to add to layer."
@@ -303,6 +307,10 @@ rec {
     runAsRoot,
     # Files to add to the layer. If null, an empty layer will be created.
     contents ? null,
+    # When copying the contents into the image, preserve symlinks to
+    # directories (see `rsync -K`).  Otherwise, transform those symlinks
+    # into directories.
+    keepContentsDirlinks ? false,
     # JSON containing configuration and metadata for this layer.
     baseJson,
     # Existing image onto which to append the new layer.
@@ -327,7 +335,7 @@ rec {
         echo "Adding contents..."
         for item in ${toString contents}; do
           echo "Adding $item..."
-          rsync -ak --chown=0:0 $item/ layer/
+          rsync -a${if keepContentsDirlinks then "K" else "k"} --chown=0:0 $item/ layer/
         done
 
         chmod ug+w layer
@@ -391,6 +399,10 @@ rec {
     fromImageTag ? null,
     # Files to put on the image (a nix store path or list of paths).
     contents ? null,
+    # When copying the contents into the image, preserve symlinks to
+    # directories (see `rsync -K`).  Otherwise, transform those symlinks
+    # into directories.
+    keepContentsDirlinks ? false,
     # Docker config; e.g. what command to run on the container.
     config ? null,
     # Optional bash script to run on the files prior to fixturizing the layer.
@@ -417,11 +429,12 @@ rec {
         if runAsRoot == null
         then mkPureLayer {
           name = baseName;
-          inherit baseJson contents extraCommands uid gid;
+          inherit baseJson contents keepContentsDirlinks extraCommands uid gid;
         } else mkRootLayer {
           name = baseName;
           inherit baseJson fromImage fromImageName fromImageTag
-                  contents runAsRoot diskSize extraCommands;
+                  contents keepContentsDirlinks runAsRoot diskSize
+                  extraCommands;
         };
       result = runCommand "docker-image-${baseName}.tar.gz" {
         buildInputs = [ jshon pigz coreutils findutils jq ];
diff --git a/pkgs/development/compilers/ldc/default.nix b/pkgs/development/compilers/ldc/default.nix
index bdb74680b13..1fd839180c5 100644
--- a/pkgs/development/compilers/ldc/default.nix
+++ b/pkgs/development/compilers/ldc/default.nix
@@ -2,8 +2,8 @@
 , python, libconfig, lit, gdb, unzip, darwin, bash
 , callPackage
 , bootstrapVersion ? false
-, version ? "1.7.0"
-, ldcSha256 ? "1g8qvmlzvsp030z2rw6lis4kclsd9mlmnbim5kas0k1yr9063m3w"
+, version ? "1.8.0"
+, ldcSha256 ? "0zswjlibj8zcdj06nn09jjhbd99chsa5f4kps8xifzgrpgsa28g4"
 }:
 
 let
@@ -29,16 +29,12 @@ let
       sha256 = ldcSha256;
     };
 
-    sourceRoot = ".";
-
     postUnpack = ''
-        cd ldc-${version}-src/
-
         patchShebangs .
 
         # Remove cppa test for now because it doesn't work.
-        rm tests/d2/dmd-testsuite/runnable/cppa.d
-        rm tests/d2/dmd-testsuite/runnable/extra-files/cppb.cpp
+        rm ldc-${version}-src/tests/d2/dmd-testsuite/runnable/cppa.d
+        rm ldc-${version}-src/tests/d2/dmd-testsuite/runnable/extra-files/cppb.cpp
     ''
 
     + stdenv.lib.optionalString (bootstrapVersion) ''
@@ -55,12 +51,15 @@ let
         #
         #==============================
         #Test failed: expected rc == 0, exited with rc == 1
-        rm tests/d2/dmd-testsuite/runnable/variadic.d
+        rm ldc-${version}-src/tests/d2/dmd-testsuite/runnable/variadic.d
     ''
 
     + stdenv.lib.optionalString (!bootstrapVersion) ''
 	    # http://forum.dlang.org/thread/xtbbqthxutdoyhnxjhxl@forum.dlang.org
-	    rm -r tests/dynamiccompile
+	    rm -r ldc-${version}-src/tests/dynamiccompile
+
+            # https://github.com/NixOS/nixpkgs/issues/34817
+	    rm -r ldc-${version}-src/tests/plugins/addFuncEntryCall
     '';
 
     ROOT_HOME_DIR = "$(echo ~root)";
@@ -190,8 +189,6 @@ let
 
     src = ldcBuild.src;
 
-    sourceRoot = ".";
-
     postUnpack = ldcBuild.postUnpack;
 
     postPatch = ldcBuild.postPatch;
@@ -212,7 +209,7 @@ let
                         "-DLDC_WITH_LLD=OFF"
                         # Xcode 9.0.1 fixes that bug according to ldc release notes
                         "-DRT_ARCHIVE_WITH_LDC=OFF"
-                        "-DD_COMPILER=${ldcBuild}/bin/ldmd2"
+                        "-DD_COMPILER=${ldcBuild.out}/bin/ldmd2"
                       )
     '';
 
@@ -223,7 +220,7 @@ let
     buildCmd = if bootstrapVersion then
       "ctest -V -R \"build-druntime-ldc-unittest|build-phobos2-ldc-unittest\""
     else
-      "make -j$NIX_BUILD_CORES DMD=${ldcBuild}/bin/ldc2 druntime-test-runner druntime-test-runner-debug phobos2-test-runner phobos2-test-runner-debug";
+      "make -j$NIX_BUILD_CORES DMD=${ldcBuild.out}/bin/ldc2 phobos2-test-runner phobos2-test-runner-debug";
 
     testCmd = if bootstrapVersion then
       "ctest -j$NIX_BUILD_CORES --output-on-failure -E \"dmd-testsuite|lit-tests|ldc2-unittest|llvm-ir-testsuite\""
@@ -232,6 +229,7 @@ let
 
     buildPhase = ''
         ${buildCmd}
+        ln -s ${ldcBuild.out}/bin/ldmd2 $PWD/bin/ldmd2
         ${testCmd}
     '';
 
diff --git a/pkgs/development/compilers/mono/generic-cmake.nix b/pkgs/development/compilers/mono/generic-cmake.nix
index 7621bd56d47..929d0049138 100644
--- a/pkgs/development/compilers/mono/generic-cmake.nix
+++ b/pkgs/development/compilers/mono/generic-cmake.nix
@@ -23,8 +23,6 @@ stdenv.mkDerivation rec {
   # To overcome the bug https://bugzilla.novell.com/show_bug.cgi?id=644723
   dontDisableStatic = true;
 
-  # In fact I think this line does not help at all to what I
-  # wanted to achieve: have mono to find libgdiplus automatically
   configureFlags = [
     "--x-includes=${libX11.dev}/include"
     "--x-libraries=${libX11.out}/lib"
@@ -38,7 +36,7 @@ stdenv.mkDerivation rec {
 
   configurePhase = ''
     patchShebangs ./
-    ./autogen.sh --prefix $out
+    ./autogen.sh --prefix $out $configureFlags
   '';
 
   # Attempt to fix this error when running "mcs --version":
@@ -58,13 +56,13 @@ stdenv.mkDerivation rec {
     substituteInPlace mono/mini/aot-compiler.c --replace "llvm_path = g_strdup (\"\")" "llvm_path = g_strdup (\"${llvm}/bin/\")"
   '';
 
-  # Fix mono DLLMap so it can find libX11 and gdiplus to run winforms apps
+  # Fix mono DLLMap so it can find libX11 to run winforms apps
+  # libgdiplus is correctly handled by the --with-libgdiplus configure flag
   # Other items in the DLLMap may need to be pointed to their store locations, I don't think this is exhaustive
   # http://www.mono-project.com/Config_DllMap
   postBuild = ''
     find . -name 'config' -type f | xargs \
-    sed -i -e "s@libX11.so.6@${libX11.out}/lib/libX11.so.6@g" \
-           -e 's#[^"]*libgdiplus[^"]*"#${libgdiplus}/lib/libgdiplus.so"#' \
+    sed -i -e "s@libX11.so.6@${libX11.out}/lib/libX11.so.6@g"
   '';
 
   # Without this, any Mono application attempting to open an SSL connection will throw with
diff --git a/pkgs/development/compilers/opendylan/default.nix b/pkgs/development/compilers/opendylan/default.nix
index 773ab9f473f..95f4dc5b215 100644
--- a/pkgs/development/compilers/opendylan/default.nix
+++ b/pkgs/development/compilers/opendylan/default.nix
@@ -2,18 +2,18 @@
 {stdenv, fetchgit, boehmgc, mps, gnused, opendylan-bootstrap, autoconf, automake, perl, makeWrapper, gcc }:
 
 stdenv.mkDerivation {
-  name = "opendylan-2013.2";
+  name = "opendylan-2016.1pre";
 
   src = fetchgit {
     url = https://github.com/dylan-lang/opendylan;
-    rev = "ce9b14dab6cb9ffedc69fae8c6df524c0c79abd3";
-    sha256 = "17jvhv0y63fj25ma05k70b7phcwgjyna5qkrirk48z3xapb8bknd";
+    rev = "cd9a8395586d33cc43a8611c1dc0513e69ee82dd";
+    sha256 = "00r1dm7mjy5p4hfm13vc4b6qryap40zinia3y15rhvalc3i2np4b";
     fetchSubmodules = true;
   };
 
   buildInputs = (if stdenv.system == "i686-linux" then [ mps ] else [ boehmgc ]) ++ [
     opendylan-bootstrap boehmgc gnused autoconf automake perl makeWrapper
-  ] ;
+  ];
 
   preConfigure = if stdenv.system == "i686-linux" then ''
     mkdir -p $TMPDIR/mps
diff --git a/pkgs/development/compilers/rust/rustc.nix b/pkgs/development/compilers/rust/rustc.nix
index f678286eade..bb0794aeb84 100644
--- a/pkgs/development/compilers/rust/rustc.nix
+++ b/pkgs/development/compilers/rust/rustc.nix
@@ -100,8 +100,10 @@ stdenv.mkDerivation {
 
     # Useful debugging parameter
     # export VERBOSE=1
-  ''
-  + optionalString stdenv.isDarwin ''
+  '' + optionalString stdenv.isAarch64 ''
+    # https://github.com/rust-lang/rust/issues/49807
+    rm -vr src/test/debuginfo/by-value-self-argument-in-trait-impl.rs
+  '' + optionalString stdenv.isDarwin ''
     # Disable all lldb tests.
     # error: Can't run LLDB test because LLDB's python path is not set
     rm -vr src/test/debuginfo/*
diff --git a/pkgs/development/haskell-modules/configuration-nix.nix b/pkgs/development/haskell-modules/configuration-nix.nix
index 6fb55d326b1..f336e8126f0 100644
--- a/pkgs/development/haskell-modules/configuration-nix.nix
+++ b/pkgs/development/haskell-modules/configuration-nix.nix
@@ -203,7 +203,7 @@ self: super: builtins.intersectAttrs super {
   # Tries to mess with extended POSIX attributes, but can't in our chroot environment.
   xattr = dontCheck super.xattr;
 
-   # Needs access to locale data, but looks for it in the wrong place.
+  # Needs access to locale data, but looks for it in the wrong place.
   scholdoc-citeproc = dontCheck super.scholdoc-citeproc;
 
   # Expect to find sendmail(1) in $PATH.
@@ -498,4 +498,7 @@ self: super: builtins.intersectAttrs super {
   LDAP = dontCheck (overrideCabal super.LDAP (drv: {
     librarySystemDepends = drv.librarySystemDepends or [] ++ [ pkgs.cyrus_sasl.dev ];
   }));
+
+  # Tests require a browser: https://github.com/ku-fpg/blank-canvas/issues/73
+  blank-canvas = dontCheck super.blank-canvas;
 }
diff --git a/pkgs/development/libraries/libetpan/default.nix b/pkgs/development/libraries/libetpan/default.nix
index 06363361943..b09c2dd0f47 100644
--- a/pkgs/development/libraries/libetpan/default.nix
+++ b/pkgs/development/libraries/libetpan/default.nix
@@ -1,6 +1,6 @@
 { autoconf, automake, fetchgit, libtool, stdenv, openssl }:
 
-let version = "1.6"; in
+let version = "1.8"; in
 
 stdenv.mkDerivation {
   name = "libetpan-${version}";
@@ -8,7 +8,7 @@ stdenv.mkDerivation {
   src = fetchgit {
     url = "git://github.com/dinhviethoa/libetpan";
     rev = "refs/tags/" + version;
-    sha256 = "13hv49271rr9yj7ifxqqmc0jfy1f26llivhp22s5wigick7qjxky";
+    sha256 = "09xqy1n18qn63x7idfrpwm59lfkvb1p5vxkyksywvy4f6mn4pyxk";
   };
 
   buildInputs = [ autoconf automake libtool openssl ];
diff --git a/pkgs/development/libraries/live555/default.nix b/pkgs/development/libraries/live555/default.nix
index 5d63dd77066..1479f7b6153 100644
--- a/pkgs/development/libraries/live555/default.nix
+++ b/pkgs/development/libraries/live555/default.nix
@@ -2,14 +2,14 @@
 
 # Based on https://projects.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD
 let
-  version = "2018.02.12";
+  version = "2018.02.28";
 in
 stdenv.mkDerivation {
   name = "live555-${version}";
 
   src = fetchurl { # the upstream doesn't provide a stable URL
     url = "mirror://sourceforge/slackbuildsdirectlinks/live.${version}.tar.gz";
-    sha256 = "08860q07hfiln44d6qaasmfalf4hb9na5jsfd4yps6jn4r54xxwx";
+    sha256 = "0zi47asv1qmb09g321m02q684i3c90vci0mgkdh1mlmx2rbg1d1d";
   };
 
   postPatch = "sed 's,/bin/rm,rm,g' -i genMakefiles"
diff --git a/pkgs/development/libraries/mailcore2/default.nix b/pkgs/development/libraries/mailcore2/default.nix
index 0a64c7c0429..3828ebcb7a7 100644
--- a/pkgs/development/libraries/mailcore2/default.nix
+++ b/pkgs/development/libraries/mailcore2/default.nix
@@ -5,13 +5,13 @@
 stdenv.mkDerivation rec {
   name = "mailcore2-${version}";
 
-  version = "0.5.1";
+  version = "0.6.2";
 
   src = fetchFromGitHub {
     owner  = "MailCore";
     repo   = "mailcore2";
     rev    = version;
-    sha256 = "1k0l59cdk8np4pff1my07dp7ivf3nchlhcpvm9xizp0my9rqgbxb";
+    sha256 = "1d0wmnkk9vnjqc28i79z3fwaaycdbprfspagik4mzdkgval5r5pm";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/development/libraries/openzwave/default.nix b/pkgs/development/libraries/openzwave/default.nix
new file mode 100644
index 00000000000..63c51996b22
--- /dev/null
+++ b/pkgs/development/libraries/openzwave/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchFromGitHub
+, doxygen, fontconfig, graphviz-nox, libxml2, pkgconfig, which
+, systemd }:
+
+let
+  version = "2018-04-04";
+
+in stdenv.mkDerivation rec {
+  name = "openzwave-${version}";
+
+  src = fetchFromGitHub {
+    owner = "OpenZWave";
+    repo = "open-zwave";
+    rev = "ab5fe966fee882bb9e8d78a91db892a60a1863d9";
+    sha256 = "0yby8ygzjn5zp5vhysxaadbzysqanwd2zakz379299qs454pr2h9";
+  };
+
+  nativeBuildInputs = [ doxygen fontconfig graphviz-nox libxml2 pkgconfig which ];
+
+  buildInputs = [ systemd ];
+
+  enableParallelBuilding = true;
+
+  installPhase = ''
+    runHook preInstall
+
+    DESTDIR=$out PREFIX= pkgconfigdir=lib/pkgconfig make install $installFlags
+
+    runHook postInstall
+  '';
+
+  FONTCONFIG_FILE="${fontconfig.out}/etc/fonts/fonts.conf";
+  FONTCONFIG_PATH="${fontconfig.out}/etc/fonts/";
+
+  postPatch = ''
+    substituteInPlace cpp/src/Options.cpp \
+      --replace /etc/openzwave $out/etc/openzwave
+  '';
+
+  fixupPhase = ''
+    substituteInPlace $out/lib/pkgconfig/libopenzwave.pc \
+      --replace prefix= prefix=$out \
+      --replace dir=    dir=$out
+
+    substituteInPlace $out/bin/ozw_config \
+      --replace pcfile=${pkgconfig} pcfile=$out
+  '';
+
+  meta = with stdenv.lib; {
+    description = "C++ library to control Z-Wave Networks via a USB Z-Wave Controller";
+    homepage = http://www.openzwave.net/;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ etu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/tachyon/default.nix b/pkgs/development/libraries/tachyon/default.nix
index e4a24279c9b..53e48eb8931 100644
--- a/pkgs/development/libraries/tachyon/default.nix
+++ b/pkgs/development/libraries/tachyon/default.nix
@@ -1,4 +1,17 @@
-{stdenv, fetchurl}:
+{ stdenv
+, fetchurl
+, fetchpatch
+, Carbon ? null
+, libjpeg ? null
+, libpng ? null
+, withJpegSupport ? true # support jpeg output
+, withPngSupport ? true # support png output
+}:
+
+assert withJpegSupport -> libjpeg != null;
+assert withPngSupport -> libpng != null;
+assert stdenv.isDarwin -> Carbon != null;
+
 stdenv.mkDerivation rec {
   name = "tachyon-${version}";
   version = "0.99b2";
@@ -6,12 +19,39 @@ stdenv.mkDerivation rec {
     url = "http://jedi.ks.uiuc.edu/~johns/tachyon/files/${version}/${name}.tar.gz";
     sha256 = "04m0bniszyg7ryknj8laj3rl5sspacw5nr45x59j2swcsxmdvn1v";
   };
-  buildInputs = [];
-  preBuild = "cd unix";
-  arch = if stdenv.system == "x86_64-linux" then "linux-64-thr" else
-         if stdenv.system == "i686-linux"   then "linux-thr"    else
+  buildInputs = stdenv.lib.optionals stdenv.isDarwin [
+    Carbon
+  ] ++ stdenv.lib.optionals withJpegSupport [
+    libjpeg
+  ] ++ stdenv.lib.optionals withPngSupport [
+    libpng
+  ];
+  preBuild = ''
+    cd unix
+  '' + stdenv.lib.optionalString withJpegSupport ''
+    export USEJPEG=" -DUSEJPEG"
+    export JPEGLIB=" -ljpeg"
+  '' + stdenv.lib.optionalString withPngSupport ''
+    export USEPNG=" -DUSEPNG"
+    export PNGLIB=" -lpng -lz"
+  '';
+  arch = if stdenv.system == "x86_64-linux"   then "linux-64-thr"  else
+         if stdenv.system == "i686-linux"     then "linux-thr"     else
+         if stdenv.system == "aarch64-linux"  then "linux-arm-thr" else
+         if stdenv.system == "x86_64-darwin"  then "macosx-thr"    else
+         if stdenv.system == "i686-darwin"    then "macosx-64-thr" else
+         if stdenv.system == "i686-cygwin"    then "win32"         else
+         if stdenv.system == "x86_64-freebsd" then "bsd"           else
+         if stdenv.system == "x686-freebsd"   then "bsd"           else
          throw "Don't know what arch to select for tachyon build";
   makeFlags = "${arch}";
+  patches = [
+    # Remove absolute paths in Make-config (and unset variables so they can be set in preBuild)
+    ./no-absolute-paths.patch
+    # Include new targets (like arm)
+    ./make-archs.patch
+  ];
+
   installPhase = ''
     cd ../compile/${arch}
     mkdir -p "$out"/{bin,lib,include,share/doc/tachyon,share/tachyon}
@@ -26,7 +66,8 @@ stdenv.mkDerivation rec {
     description = ''A Parallel / Multiprocessor Ray Tracing System'';
     license = stdenv.lib.licenses.bsd3;
     maintainers = [stdenv.lib.maintainers.raskin];
-    platforms = stdenv.lib.platforms.linux;
+    # darwin fails due to missing Carbon.h, even though Carbon is a build input
+    platforms = with stdenv.lib.platforms; linux ++ cygwin;
     homepage = http://jedi.ks.uiuc.edu/~johns/tachyon/;
   };
 }
diff --git a/pkgs/development/libraries/tachyon/make-archs.patch b/pkgs/development/libraries/tachyon/make-archs.patch
new file mode 100644
index 00000000000..cf83f8c8c31
--- /dev/null
+++ b/pkgs/development/libraries/tachyon/make-archs.patch
@@ -0,0 +1,37 @@
+diff --git a/unix/Make-arch b/unix/Make-arch
+index 08afb85..dbeb691 100644
+--- a/unix/Make-arch
++++ b/unix/Make-arch
+@@ -920,6 +920,15 @@ macosx:
+ 	"RANLIB = ranlib" \
+ 	"LIBS = -L. -ltachyon $(MISCLIB)"
+ 
++macosx-64:
++	$(MAKE) all \
++	"ARCH = macosx" \
++	"CFLAGS = -Os -m64 -ffast-math -DBsd $(MISCFLAGS)" \
++	"ARFLAGS = r" \
++	"STRIP = strip" \
++	"RANLIB = ranlib" \
++	"LIBS = -L. -ltachyon $(MISCLIB)"
++
+ macosx-thr:
+ 	$(MAKE) all \
+ 	"ARCH = macosx-thr" \
+@@ -1209,6 +1218,16 @@ linux-thr:
+ 	"RANLIB = ranlib" \
+ 	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread"
+ 
++# Linux Arm using gcc, with threads
++linux-arm-thr:
++	$(MAKE) all \
++	"ARCH = linux-arm-thr" \
++	"CFLAGS = -Wall -O3 -fomit-frame-pointer -ffast-math -DLinux -DTHR -D_REENTRANT $(MISCFLAGS)" \
++	"ARFLAGS = r" \
++	"STRIP = strip" \
++	"RANLIB = ranlib" \
++	"LIBS = -L. -ltachyon $(MISCLIB) -lm -lpthread"
++
+ # Linux x86 using gcc, threads, and OpenGL
+ linux-thr-ogl:
+ 	$(MAKE) all \
diff --git a/pkgs/development/libraries/tachyon/no-absolute-paths.patch b/pkgs/development/libraries/tachyon/no-absolute-paths.patch
new file mode 100644
index 00000000000..faa3810fb5c
--- /dev/null
+++ b/pkgs/development/libraries/tachyon/no-absolute-paths.patch
@@ -0,0 +1,57 @@
+diff --git a/unix/Make-config b/unix/Make-config
+index ee4f388..c1d51d4 100644
+--- a/unix/Make-config
++++ b/unix/Make-config
+@@ -18,7 +18,7 @@
+ # Bourne Shell Configuration:
+ #   set SHELL=/bin/sh or wherever your bourne shell is
+ ##########################################################################
+-SHELL=/bin/sh
++# SHELL=/bin/sh
+ 
+ 
+ 
+@@ -30,7 +30,7 @@ SHELL=/bin/sh
+ 
+ # The following line should be set to -Ixxx where xxx is your X11 include path
+ # Sun puts X11 in /usr/openwin/xxx
+-X11INC= -I/usr/openwin/include
++# X11INC= -I/usr/openwin/include
+ 
+ # Others typically use /usr/X11 or /usr/X11R6
+ #X11INC= -I/usr/X11
+@@ -57,7 +57,7 @@ X11LIB= -lX11
+ ##########################################################################
+ 
+ # Standard MPICH installation location
+-MPIDIR=/usr/local/mpi
++# MPIDIR=/usr/local/mpi
+ 
+ # UMR CS Dept
+ #MPIDIR=/software/all/mpi
+@@ -108,9 +108,9 @@ MBOX=
+ #   http://www.ijg.org/files/
+ ##########################################################################
+ # Uncomment the following lines to disable JPEG support
+-USEJPEG=
+-JPEGINC=
+-JPEGLIB=
++# USEJPEG=
++# JPEGINC=
++# JPEGLIB=
+ 
+ # Uncomment the following lines to enable JPEG support
+ #USEJPEG= -DUSEJPEG
+@@ -128,9 +128,9 @@ JPEGLIB=
+ #   http://www.libpng.org/
+ ##########################################################################
+ # Uncomment the following lines to disable PNG support
+-USEPNG=
+-PNGINC=
+-PNGLIB=
++# USEPNG=
++# PNGINC=
++# PNGLIB=
+ 
+ # Uncomment the following lines to enable PNG support
+ #USEPNG= -DUSEPNG
diff --git a/pkgs/development/libraries/xalanc/default.nix b/pkgs/development/libraries/xalanc/default.nix
index 28575f4c5d5..aeb741dbae7 100644
--- a/pkgs/development/libraries/xalanc/default.nix
+++ b/pkgs/development/libraries/xalanc/default.nix
@@ -13,12 +13,11 @@ in stdenv.mkDerivation rec {
     sha256 = "0a3a2b15vpacnqgpp6fiy1pwyc8q6ywzvyb5445f6wixfdspypjg";
   };
 
-  # TODO: should we really be putting outputs in $out/usr? I'd expect -P$out below
   configurePhase = ''
     export XALANCROOT=`pwd`/c
     cd `pwd`/c
-    mkdir -p $out/usr
-    ./runConfigure -p ${platform} -c cc -x c++ -P$out/usr
+    mkdir -p $out
+    ./runConfigure -p ${platform} -c cc -x c++ -P$out
   '';
 
   buildInputs = [ xercesc getopt ];
diff --git a/pkgs/development/python-modules/bumps/default.nix b/pkgs/development/python-modules/bumps/default.nix
new file mode 100644
index 00000000000..51d3d9e6833
--- /dev/null
+++ b/pkgs/development/python-modules/bumps/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildPythonPackage, fetchPypi, six}:
+
+buildPythonPackage rec {
+  pname = "bumps";
+  version = "0.7.6";
+
+  propagatedBuildInputs = [six];
+
+  # Bumps does not provide its own tests.py, so the test
+  # always fails
+  doCheck = false;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1ahzw8ls9wsz2ks668s15zskyykib52fhi07mg50hp7lw9avqb5k";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = http://www.reflectometry.org/danse/software.html;
+    description = "Data fitting with bayesian uncertainty analysis";
+    maintainers = with maintainers; [ rprospero ];
+    license = licenses.publicDomain;
+  };
+}
diff --git a/pkgs/development/python-modules/graph-tool/2.x.x.nix b/pkgs/development/python-modules/graph-tool/2.x.x.nix
index 8c61a6b278a..57567a203ea 100644
--- a/pkgs/development/python-modules/graph-tool/2.x.x.nix
+++ b/pkgs/development/python-modules/graph-tool/2.x.x.nix
@@ -1,9 +1,11 @@
 { stdenv, fetchurl, python, cairomm, sparsehash, pycairo, autoreconfHook,
 pkgconfig, boost, expat, scipy, numpy, cgal, gmp, mpfr, lndir,
-gobjectIntrospection, pygobject3, gtk3, matplotlib }:
+gobjectIntrospection, pygobject3, gtk3, matplotlib, ncurses,
+buildPythonPackage }:
 
-stdenv.mkDerivation rec {
-  version = "2.16";
+buildPythonPackage rec {
+  format = "other";
+  version = "2.26";
   name = "${python.libPrefix}-graph-tool-${version}";
 
   meta = with stdenv.lib; {
@@ -16,16 +18,19 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://downloads.skewed.de/graph-tool/graph-tool-${version}.tar.bz2";
-    sha256 = "03b1pmh2gvsgyq491gvskx8fwgqy9k942faymdnhwpbbbfhx911p";
+    sha256 = "0w7pd2h8ayr88kjl82c8fdshnk6f3xslc77gy7ma09zkbvf76qnz";
   };
 
   configureFlags = [
     "--with-python-module-path=$(out)/${python.sitePackages}"
+    "--with-boost-libdir=${boost}/lib"
+    "--with-expat=${expat}"
+    "--with-cgal=${cgal}"
     "--enable-openmp"
   ];
 
   nativeBuildInputs = [ autoreconfHook pkgconfig ];
-  buildInputs = [ ];
+  buildInputs = [ ncurses ];
 
   propagatedBuildInputs = [
     boost
diff --git a/pkgs/development/python-modules/periodictable/default.nix b/pkgs/development/python-modules/periodictable/default.nix
new file mode 100644
index 00000000000..e77c281e2c4
--- /dev/null
+++ b/pkgs/development/python-modules/periodictable/default.nix
@@ -0,0 +1,20 @@
+{lib, fetchPypi, buildPythonPackage, numpy, pyparsing}:
+
+buildPythonPackage rec{
+  pname = "periodictable";
+  version = "1.5.0";
+
+  propagatedBuildInputs = [numpy pyparsing];
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1cjk6aqcz41nxm4fpriz01vqdafd6g57cjk0wh1iklk5cx6c085h";
+  };
+
+  meta = {
+    homepage = http://www.reflectometry.org/danse/software.html;
+    description = "an extensible periodic table of the elements prepopulated with data important to neutron and x-ray scattering experiments";
+    license = lib.licenses.publicDomain;
+    maintainers = with lib.maintainers; [ rprospero ];
+  };
+}
diff --git a/pkgs/development/python-modules/python_openzwave/default.nix b/pkgs/development/python-modules/python_openzwave/default.nix
new file mode 100644
index 00000000000..d5cf709104f
--- /dev/null
+++ b/pkgs/development/python-modules/python_openzwave/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k
+, pkgconfig
+, systemd, libyaml, openzwave, cython
+, six, pydispatcher, urwid }:
+
+buildPythonPackage rec {
+  pname = "python_openzwave";
+  version = "0.4.4";
+
+  disabled = !isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "17wdgwg212agj1gxb2kih4cvhjb5bprir4x446s8qwx0mz03azk2";
+    extension = "zip";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ systemd libyaml openzwave cython ];
+  propagatedBuildInputs = [ six urwid pydispatcher ];
+
+  # primary location for the .xml files is in /etc/openzwave so we override the
+  # /usr/local/etc lookup instead as that allows us to dump new .xml files into
+  # /etc/openzwave if needed
+  postPatch = ''
+    substituteInPlace src-lib/libopenzwave/libopenzwave.pyx \
+      --replace /usr/local/etc/openzwave ${openzwave}/etc/openzwave
+  '';
+
+  # no tests available
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Python wrapper for the OpenZWave C++ library";
+    homepage = https://github.com/OpenZWave/python-openzwave;
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ etu ];
+    inherit (openzwave.meta) platforms;
+  };
+}
diff --git a/pkgs/development/python-modules/sasmodels/default.nix b/pkgs/development/python-modules/sasmodels/default.nix
new file mode 100644
index 00000000000..d33de9c2a73
--- /dev/null
+++ b/pkgs/development/python-modules/sasmodels/default.nix
@@ -0,0 +1,24 @@
+{lib, fetchgit, buildPythonPackage, pytest, numpy, scipy, matplotlib, docutils}:
+
+buildPythonPackage rec {
+  pname = "sasmodels";
+  version = "0.96";
+
+  buildInputs = [pytest];
+  propagatedBuildInputs = [docutils matplotlib numpy scipy];
+
+  preCheck = ''export HOME=$(mktemp -d)'';
+
+  src = fetchgit {
+    url = "https://github.com/SasView/sasmodels.git";
+    rev = "v${version}";
+    sha256 = "11qaaqdc23qzb75zs48fkypksmcb332vl0pkjqr5bijxxymgm7nw";
+  };
+
+  meta = {
+    description = "Library of small angle scattering models";
+    homepage = http://sasview.org;
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ rprospero ];
+  };
+}
diff --git a/pkgs/development/python-modules/unittest-xml-reporting/default.nix b/pkgs/development/python-modules/unittest-xml-reporting/default.nix
new file mode 100644
index 00000000000..129ad0ded6c
--- /dev/null
+++ b/pkgs/development/python-modules/unittest-xml-reporting/default.nix
@@ -0,0 +1,23 @@
+{lib, fetchPypi, buildPythonPackage, six}:
+
+buildPythonPackage rec {
+  name = "${pname}-${version}";
+  pname = "unittest-xml-reporting";
+  version = "2.1.1";
+
+  propagatedBuildInputs = [six];
+
+  # The tarball from Pypi doesn't actually contain the unit tests
+  doCheck = false;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1jwkqx5gfphkymp3xwqvlb94ng22gpbqh36vbbnsrpk1a0mammm6";
+  };
+  meta = with lib; {
+    homepage = https://github.com/xmlrunner/unittest-xml-reporting/tree/master/;
+    description = "A unittest runner that can save test results to XML files";
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ rprospero ];
+  };
+}
diff --git a/pkgs/development/tools/build-managers/sbt/default.nix b/pkgs/development/tools/build-managers/sbt/default.nix
index eedea46f076..04102e7e8f8 100644
--- a/pkgs/development/tools/build-managers/sbt/default.nix
+++ b/pkgs/development/tools/build-managers/sbt/default.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   name = "sbt-${version}";
-  version = "1.1.3";
+  version = "1.1.4";
 
   src = fetchurl {
     urls = [
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
       "https://github.com/sbt/sbt/releases/download/v${version}/sbt-${version}.tgz"
       "https://cocl.us/sbt-${version}.tgz"
     ];
-    sha256 = "1pqw70qghzp6k0wal9nzqrd6wis0ha23i06s04l6wrf6kkc77ski";
+    sha256 = "0hc361gb71psadx9gj78j0j60fw4sljjk8sl45hw6yzx3hmmkg9g";
   };
 
   patchPhase = ''
diff --git a/pkgs/development/tools/haskell/multi-ghc-travis/default.nix b/pkgs/development/tools/haskell/multi-ghc-travis/default.nix
index 7efe556ebde..781d3b096cf 100644
--- a/pkgs/development/tools/haskell/multi-ghc-travis/default.nix
+++ b/pkgs/development/tools/haskell/multi-ghc-travis/default.nix
@@ -1,17 +1,16 @@
-{ mkDerivation, base, bytestring, Cabal, containers, deepseq, Diff
-, directory, filepath, ShellCheck, stdenv, tasty, tasty-golden
-, transformers, fetchFromGitHub
+{ mkDerivation, ansi-terminal, base, bytestring, Cabal, containers
+, deepseq, Diff, directory, filepath, ShellCheck, stdenv, tasty
+, tasty-golden, transformers, fetchFromGitHub
 }:
 mkDerivation {
-  pname = "make-travis-yml";
+  pname = "haskell-ci";
   version = "0";
   src = fetchFromGitHub {
     owner = "haskell-CI";
     repo = "haskell-ci";
-    rev = "7ca5d751c35c6dc43392397b4641c4611ed55121";
-    sha256 = "04f9jcxqv1mn0rw31x23ns6xdhgqjv55blsksadwr25qn2521zxb";
+    rev = "848c2fe5c7d0d95b20312e86b360d5db8c95db75";
+    sha256 = "1n4y6j564sxxry19xs4x0ds7fg8h1q0svw9q45477czx82qzavym";
   };
-  jailbreak = true;
   isLibrary = true;
   isExecutable = true;
   libraryHaskellDepends = [
@@ -20,8 +19,8 @@ mkDerivation {
   ];
   executableHaskellDepends = [ base ];
   testHaskellDepends = [
-    base bytestring Diff directory filepath tasty tasty-golden
-    transformers
+    ansi-terminal base bytestring Diff directory filepath tasty
+    tasty-golden transformers
   ];
   homepage = "https://github.com/haskell-CI/haskell-ci";
   description = "Script generator for Travis-CI";
diff --git a/pkgs/misc/cups/drivers/hl1110/default.nix b/pkgs/misc/cups/drivers/hl1110/default.nix
new file mode 100644
index 00000000000..6f27985bdbf
--- /dev/null
+++ b/pkgs/misc/cups/drivers/hl1110/default.nix
@@ -0,0 +1,73 @@
+{stdenv, fetchurl, cups, dpkg, gnused, makeWrapper, ghostscript, file, a2ps, coreutils, gawk, patchelf}:
+
+let
+  version = "3.0.1-1";
+cupsdeb = fetchurl {
+  url = "http://download.brother.com/welcome/dlf100421/hl1110cupswrapper-${version}.i386.deb";
+  sha256 = "a87880f4ece764a724411b5b24d15d1b912f6ffc6ecbfd9fac4cd5eda13d2eb7";
+};
+srcdir = "hl1110cupswrapper-GPL_src-${version}";
+cupssrc = fetchurl {
+  url = "http://download.brother.com/welcome/dlf100422/${srcdir}.tar.gz";
+  sha256 = "be1dce6a4608cb253b0b382db30bf5885da46b010e8eb595b15c435e2487761c";
+};
+lprdeb = fetchurl {
+  url = "http://download.brother.com/welcome/dlf100419/hl1110lpr-${version}.i386.deb";
+  sha256 = "5af241782a0d500d7f47e06ea43d61127f4019b5b1c6e68b4c1cb4521a742c22";
+};
+  in
+stdenv.mkDerivation {
+  name = "cups-brother-hl1110";
+
+  srcs = [ lprdeb cupssrc cupsdeb ];
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ cups ghostscript dpkg a2ps ];
+  unpackPhase = ''
+    tar -xvf ${cupssrc}
+    '';
+  buildPhase = ''
+    gcc -Wall ${srcdir}/brcupsconfig/brcupsconfig.c -o brcupsconfig4
+    '';
+  installPhase = ''
+    # install lpr
+    dpkg-deb -x ${lprdeb} $out
+
+    substituteInPlace $out/opt/brother/Printers/HL1110/lpd/filter_HL1110 \
+    --replace /opt "$out/opt" \
+
+    sed -i '/GHOST_SCRIPT=/c\GHOST_SCRIPT=gs' $out/opt/brother/Printers/HL1110/lpd/psconvert2
+
+    patchelf --set-interpreter ${stdenv.glibc.out}/lib/ld-linux.so.2 $out/opt/brother/Printers/HL1110/lpd/brprintconflsr3
+    patchelf --set-interpreter ${stdenv.glibc.out}/lib/ld-linux.so.2 $out/opt/brother/Printers/HL1110/lpd/rawtobr3
+    patchelf --set-interpreter ${stdenv.glibc.out}/lib/ld-linux.so.2 $out/opt/brother/Printers/HL1110/inf/braddprinter
+
+    wrapProgram $out/opt/brother/Printers/HL1110/lpd/psconvert2 \
+    --prefix PATH ":" ${ stdenv.lib.makeBinPath [ gnused coreutils gawk ] }
+
+    wrapProgram $out/opt/brother/Printers/HL1110/lpd/filter_HL1110 \
+    --prefix PATH ":" ${ stdenv.lib.makeBinPath [ ghostscript a2ps file gnused coreutils ] }
+
+
+    dpkg-deb -x ${cupsdeb} $out
+
+    substituteInPlace $out/opt/brother/Printers/HL1110/cupswrapper/brother_lpdwrapper_HL1110 --replace /opt "$out/opt"
+
+    mkdir -p $out/lib/cups/filter
+    ln -s $out/opt/brother/Printers/HL1110/cupswrapper/brother_lpdwrapper_HL1110 $out/lib/cups/filter/brother_lpdwrapper_HL1110
+    ln -s $out/opt/brother/Printers/HL1110/cupswrapper/brother-HL1110-cups-en.ppd $out/lib/cups/filter/brother-HL1110-cups-en.ppd
+    cp brcupsconfig4 $out/opt/brother/Printers/HL1110/cupswrapper/
+    ln -s $out/opt/brother/Printers/HL1110/cupswrapper/brcupsconfig4 $out/lib/cups/filter/brcupsconfig4
+
+    wrapProgram $out/opt/brother/Printers/HL1110/cupswrapper/brother_lpdwrapper_HL1110 \
+    --prefix PATH ":" ${ stdenv.lib.makeBinPath [ gnused coreutils gawk ] }
+
+    '';
+
+  meta = {
+    homepage = http://www.brother.com/;
+    description = "Brother HL1110 printer driver";
+    license = stdenv.lib.licenses.unfree;
+    platforms = stdenv.lib.platforms.linux;
+    downloadPage = "http://support.brother.com/g/b/downloadlist.aspx?c=eu_ot&lang=en&prod=hl1110_us_eu_as&os=128#SelectLanguageType-561_0_1";
+  };
+}
diff --git a/pkgs/misc/cups/drivers/hll2390dw-cups/default.nix b/pkgs/misc/cups/drivers/hll2390dw-cups/default.nix
new file mode 100644
index 00000000000..cda4ed6304d
--- /dev/null
+++ b/pkgs/misc/cups/drivers/hll2390dw-cups/default.nix
@@ -0,0 +1,71 @@
+{ stdenv, fetchurl, makeWrapper
+, cups
+, dpkg
+, a2ps, ghostscript, gnugrep, gnused, coreutils, file, perl, which
+}:
+
+stdenv.mkDerivation rec {
+  name = "hll2390dw-cups-${version}";
+  version = "4.0.0-1";
+
+  src = fetchurl {
+    # The i386 part is a lie. There are x86, x86_64 and armv7l drivers.
+    # Though this builds only supports x86_64 for now.
+    url = "http://download.brother.com/welcome/dlf103579/hll2390dwpdrv-${version}.i386.deb";
+    sha256 = "0w8rxh1sa5amxr87qmzs4m2p06b1b36wn2q127mg427sbkh1rwni";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ cups ghostscript dpkg a2ps ];
+
+  unpackPhase = "true";
+
+  installPhase = ''
+    dpkg-deb -x $src $out
+
+    substituteInPlace $out/opt/brother/Printers/HLL2390DW/lpd/lpdfilter \
+      --replace /opt "$out/opt" \
+      --replace /usr/bin/perl ${perl}/bin/perl \
+      --replace "BR_PRT_PATH =~" "BR_PRT_PATH = \"$out\"; #" \
+      --replace "PRINTER =~" "PRINTER = \"HLL2390DW\"; #"
+
+    # FIXME : Allow i686 and armv7l variations to be setup instead.
+    _PLAT=x86_64
+    patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      $out/opt/brother/Printers/HLL2390DW/lpd/$_PLAT/brprintconflsr3
+    patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      $out/opt/brother/Printers/HLL2390DW/lpd/$_PLAT/rawtobr3
+    ln -s $out/opt/brother/Printers/HLL2390DW/lpd/$_PLAT/brprintconflsr3 $out/opt/brother/Printers/HLL2390DW/lpd/brprintconflsr3
+    ln -s $out/opt/brother/Printers/HLL2390DW/lpd/$_PLAT/rawtobr3 $out/opt/brother/Printers/HLL2390DW/lpd/rawtobr3
+
+    for f in \
+      $out/opt/brother/Printers/HLL2390DW/cupswrapper/lpdwrapper \
+      $out/opt/brother/Printers/HLL2390DW/cupswrapper/paperconfigml2 \
+    ; do
+      #substituteInPlace $f \
+      wrapProgram $f \
+        --prefix PATH : ${stdenv.lib.makeBinPath [
+          coreutils ghostscript gnugrep gnused
+        ]}
+    done
+
+    mkdir -p $out/lib/cups/filter/
+    ln -s $out/opt/brother/Printers/HLL2390DW/lpd/lpdfilter $out/lib/cups/filter/brother_lpdwrapper_HLL2390DW
+
+    mkdir -p $out/share/cups/model
+    ln -s $out/opt/brother/Printers/HLL2390DW/cupswrapper/brother-HLL2390DW-cups-en.ppd $out/share/cups/model/
+
+    wrapProgram $out/opt/brother/Printers/HLL2390DW/lpd/lpdfilter \
+      --prefix PATH ":" ${ stdenv.lib.makeBinPath [ ghostscript a2ps file gnused gnugrep coreutils which ] }
+    '';
+
+  meta = with stdenv.lib; {
+    homepage = http://www.brother.com/;
+    description = "Brother HL-L2390DW combined print driver";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    downloadPage = http://support.brother.com/g/b/downloadlist.aspx?c=us_ot&lang=en&prod=hll2390dw_us&os=128;
+    maintainers = [ maintainers.samueldr ];
+  };
+}
+
diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix
index a14a32bc026..3e8c6e9b257 100644
--- a/pkgs/misc/vim-plugins/default.nix
+++ b/pkgs/misc/vim-plugins/default.nix
@@ -59,6 +59,7 @@ rec {
   coffeeScript        = coffee-script; # backwards compat, added 2014-10-18
   Solarized           = vim-colors-solarized;
   solarized           = vim-colors-solarized;
+  colors-solarized    = vim-colors-solarized;
   caw                 = caw-vim;
   colorsamplerpack    = Colour_Sampler_Pack;
   Colour_Sampler_Pack = Colour-Sampler-Pack;
@@ -142,7 +143,7 @@ rec {
   tmuxNavigator       = tmux-navigator; # backwards compat, added 2014-10-18
   tslime              = tslime-vim;
   unite               = unite-vim;
-  Ultisnips           = ultisnips;
+  UltiSnips           = ultisnips;
   vim-grepper         = vim-grepper-git;
   vim-test            = vim-test-git;
   vimproc             = vimproc-vim;
diff --git a/pkgs/os-specific/linux/mcelog/default.nix b/pkgs/os-specific/linux/mcelog/default.nix
index ac176c7d3b3..30c2b05b8e1 100644
--- a/pkgs/os-specific/linux/mcelog/default.nix
+++ b/pkgs/os-specific/linux/mcelog/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "mcelog-${version}";
-  version = "154";
+  version = "156";
 
   src = fetchFromGitHub {
     owner  = "andikleen";
     repo   = "mcelog";
     rev    = "v${version}";
-    sha256 = "0vq7r3zknr62rmi9g0zd7mmxframm79vmrdw029pc7z6wrlv40cy";
+    sha256 = "0mv4sxcysl3m9wqybg6b363mawr9amzhc9v53775p4p2a47z774r";
   };
 
   postPatch = ''
diff --git a/pkgs/os-specific/linux/spl/default.nix b/pkgs/os-specific/linux/spl/default.nix
index e7139d17ace..2550e6d28f6 100644
--- a/pkgs/os-specific/linux/spl/default.nix
+++ b/pkgs/os-specific/linux/spl/default.nix
@@ -11,6 +11,7 @@ let
     , sha256
     , rev ? "spl-${version}"
     , broken ? false
+    , patches ? []
     } @ args : stdenv.mkDerivation rec {
       name = "spl-${version}-${kernel.version}";
 
@@ -20,7 +21,7 @@ let
         inherit rev sha256;
       };
 
-      patches = [ ./install_prefix.patch ];
+      inherit patches;
 
       nativeBuildInputs = [ autoreconfHook ] ++ kernel.moduleBuildDependencies;
 
@@ -61,14 +62,16 @@ in
   assert kernel != null;
 {
     splStable = common {
-      version = "0.7.7";
-      sha256 = "0mq7827x4173wdbpj361gvxvk8j9r96363gka75smzsc31i2wa5x";
+      version = "0.7.8";
+      sha256 = "0ypyy7ij280n7rly6ifrvna9k55gxwdx9a7lalf4r1ka714379fi";
+      patches = [ ./install_prefix-0.7.8.patch ];
     };
 
     splUnstable = common {
-      version = "2018-03-09";
-      rev = "43983eb2024ec6b3280e6e06a6fb621ee3bb2a41";
-      sha256 = "00h7z30hzxd09cfa44w7yv7zympvdwzdximfgjvpa1layzppjpsh";
+      version = "2018-04-10";
+      rev = "9125f8f5bdb36bfbd2d816d30b6b29b9f89ae3d8";
+      sha256 = "00zrbca906rzjd62m4khiw3sdv8x18dapcmvkyaawripwvzc4iri";
+      patches = [ ./install_prefix.patch ];
     };
 
     splLegacyCrypto = common {
diff --git a/pkgs/os-specific/linux/spl/install_prefix-0.7.8.patch b/pkgs/os-specific/linux/spl/install_prefix-0.7.8.patch
new file mode 100644
index 00000000000..dc91392bd2f
--- /dev/null
+++ b/pkgs/os-specific/linux/spl/install_prefix-0.7.8.patch
@@ -0,0 +1,174 @@
+diff --git a/Makefile.am b/Makefile.am
+index 4977448..ac17217 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -12,10 +12,10 @@ endif
+ if CONFIG_KERNEL
+ SUBDIRS += module
+ 
+-extradir = @prefix@/src/spl-$(VERSION)
++extradir = @prefix@/libexec/spl
+ extra_HEADERS = spl.release.in spl_config.h.in
+ 
+-kerneldir = @prefix@/src/spl-$(VERSION)/$(LINUX_VERSION)
++kerneldir = @prefix@/libexec/spl/$(LINUX_VERSION)
+ nodist_kernel_HEADERS = spl.release spl_config.h module/$(LINUX_SYMBOLS)
+ endif
+ 
+diff --git a/include/Makefile.am b/include/Makefile.am
+index 3200222..4a47aaa 100644
+--- a/include/Makefile.am
++++ b/include/Makefile.am
+@@ -13,6 +13,6 @@ USER_H =
+ EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
+ 
+ if CONFIG_KERNEL
+-kerneldir = @prefix@/src/spl-$(VERSION)/include
++kerneldir = @prefix@/libexec/spl/include
+ kernel_HEADERS = $(KERNEL_H)
+ endif
+diff --git a/include/fs/Makefile.am b/include/fs/Makefile.am
+index e0da4b3..d6d7af0 100644
+--- a/include/fs/Makefile.am
++++ b/include/fs/Makefile.am
+@@ -8,6 +8,6 @@ USER_H =
+ EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
+ 
+ if CONFIG_KERNEL
+-kerneldir = @prefix@/src/spl-$(VERSION)/include/fs
++kerneldir = @prefix@/libexec/spl/include/fs
+ kernel_HEADERS = $(KERNEL_H)
+ endif
+diff --git a/include/linux/Makefile.am b/include/linux/Makefile.am
+index 712e94e..4af9fb7 100644
+--- a/include/linux/Makefile.am
++++ b/include/linux/Makefile.am
+@@ -18,6 +18,6 @@ USER_H =
+ EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
+ 
+ if CONFIG_KERNEL
+-kerneldir = @prefix@/src/spl-$(VERSION)/include/linux
++kerneldir = @prefix@/libexec/spl/include/linux
+ kernel_HEADERS = $(KERNEL_H)
+ endif
+diff --git a/include/rpc/Makefile.am b/include/rpc/Makefile.am
+index cfc8246..4fbd33d 100644
+--- a/include/rpc/Makefile.am
++++ b/include/rpc/Makefile.am
+@@ -9,6 +9,6 @@ USER_H =
+ EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
+ 
+ if CONFIG_KERNEL
+-kerneldir = @prefix@/src/spl-$(VERSION)/include/rpc
++kerneldir = @prefix@/libexec/spl/include/rpc
+ kernel_HEADERS = $(KERNEL_H)
+ endif
+diff --git a/include/sharefs/Makefile.am b/include/sharefs/Makefile.am
+index 10e7093..febecdf 100644
+--- a/include/sharefs/Makefile.am
++++ b/include/sharefs/Makefile.am
+@@ -8,6 +8,6 @@ USER_H =
+ EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
+ 
+ if CONFIG_KERNEL
+-kerneldir = @prefix@/src/spl-$(VERSION)/include/sharefs
++kerneldir = @prefix@/libexec/spl/include/sharefs
+ kernel_HEADERS = $(KERNEL_H)
+ endif
+diff --git a/include/sys/Makefile.am b/include/sys/Makefile.am
+index 73c4a84..31a9f50 100644
+--- a/include/sys/Makefile.am
++++ b/include/sys/Makefile.am
+@@ -107,7 +107,7 @@ USER_H =
+ EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
+ 
+ if CONFIG_KERNEL
+-kerneldir = @prefix@/src/spl-$(VERSION)/include/sys
++kerneldir = @prefix@/libexec/spl/include/sys
+ kernel_HEADERS = $(KERNEL_H)
+ endif
+ 
+diff --git a/include/sys/fm/Makefile.am b/include/sys/fm/Makefile.am
+index 2821cbe..a84ce8e 100644
+--- a/include/sys/fm/Makefile.am
++++ b/include/sys/fm/Makefile.am
+@@ -9,6 +9,6 @@ USER_H =
+ EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
+ 
+ if CONFIG_KERNEL
+-kerneldir = @prefix@/src/spl-$(VERSION)/include/sys/fm
++kerneldir = @prefix@/libexec/spl/include/sys/fm
+ kernel_HEADERS = $(KERNEL_H)
+ endif
+diff --git a/include/sys/fs/Makefile.am b/include/sys/fs/Makefile.am
+index 581083e..0c35fb7 100644
+--- a/include/sys/fs/Makefile.am
++++ b/include/sys/fs/Makefile.am
+@@ -8,6 +8,6 @@ USER_H =
+ EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
+ 
+ if CONFIG_KERNEL
+-kerneldir = @prefix@/src/spl-$(VERSION)/include/sys/fs
++kerneldir = @prefix@/libexec/spl/include/sys/fs
+ kernel_HEADERS = $(KERNEL_H)
+ endif
+diff --git a/include/sys/sysevent/Makefile.am b/include/sys/sysevent/Makefile.am
+index 63d9af3..de1aa18 100644
+--- a/include/sys/sysevent/Makefile.am
++++ b/include/sys/sysevent/Makefile.am
+@@ -8,6 +8,6 @@ USER_H =
+ EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
+ 
+ if CONFIG_KERNEL
+-kerneldir = @prefix@/src/spl-$(VERSION)/include/sys/sysevent
++kerneldir = @prefix@/libexec/spl/include/sys/sysevent
+ kernel_HEADERS = $(KERNEL_H)
+ endif
+diff --git a/include/util/Makefile.am b/include/util/Makefile.am
+index e2bf09f..3f5d6ce 100644
+--- a/include/util/Makefile.am
++++ b/include/util/Makefile.am
+@@ -9,6 +9,6 @@ USER_H =
+ EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
+ 
+ if CONFIG_KERNEL
+-kerneldir = @prefix@/src/spl-$(VERSION)/include/util
++kerneldir = @prefix@/libexec/spl/include/util
+ kernel_HEADERS = $(KERNEL_H)
+ endif
+diff --git a/include/vm/Makefile.am b/include/vm/Makefile.am
+index 7faab0a..8148b3d 100644
+--- a/include/vm/Makefile.am
++++ b/include/vm/Makefile.am
+@@ -10,6 +10,6 @@ USER_H =
+ EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
+ 
+ if CONFIG_KERNEL
+-kerneldir = @prefix@/src/spl-$(VERSION)/include/vm
++kerneldir = @prefix@/libexec/spl/include/vm
+ kernel_HEADERS = $(KERNEL_H)
+ endif
+diff --git a/module/Makefile.in b/module/Makefile.in
+index d4e62e1..73fa01c 100644
+--- a/module/Makefile.in
++++ b/module/Makefile.in
+@@ -21,15 +21,15 @@ clean:
+ modules_install:
+ 	@# Install the kernel modules
+ 	$(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` $@ \
+-		INSTALL_MOD_PATH=$(DESTDIR)$(INSTALL_MOD_PATH) \
++		INSTALL_MOD_PATH=@prefix@/$(INSTALL_MOD_PATH) \
+ 		INSTALL_MOD_DIR=$(INSTALL_MOD_DIR) \
+ 		KERNELRELEASE=@LINUX_VERSION@
+ 	@# Remove extraneous build products when packaging
+-	kmoddir=$(DESTDIR)$(INSTALL_MOD_PATH)/lib/modules/@LINUX_VERSION@; \
+-	if [ -n "$(DESTDIR)" ]; then \
++	kmoddir=@prefix@/$(INSTALL_MOD_PATH)/lib/modules/@LINUX_VERSION@; \
++	if [ -n "@prefix@" ]; then \
+ 		find $$kmoddir -name 'modules.*' | xargs $(RM); \
+ 	fi
+-	sysmap=$(DESTDIR)$(INSTALL_MOD_PATH)/boot/System.map-@LINUX_VERSION@; \
++	sysmap=@prefix@/$(INSTALL_MOD_PATH)/boot/System.map-@LINUX_VERSION@; \
+ 	if [ -f $$sysmap ]; then \
+ 		depmod -ae -F $$sysmap @LINUX_VERSION@; \
+ 	fi
diff --git a/pkgs/os-specific/linux/spl/install_prefix.patch b/pkgs/os-specific/linux/spl/install_prefix.patch
index dc91392bd2f..114ca123147 100644
--- a/pkgs/os-specific/linux/spl/install_prefix.patch
+++ b/pkgs/os-specific/linux/spl/install_prefix.patch
@@ -112,18 +112,6 @@ index 581083e..0c35fb7 100644
 +kerneldir = @prefix@/libexec/spl/include/sys/fs
  kernel_HEADERS = $(KERNEL_H)
  endif
-diff --git a/include/sys/sysevent/Makefile.am b/include/sys/sysevent/Makefile.am
-index 63d9af3..de1aa18 100644
---- a/include/sys/sysevent/Makefile.am
-+++ b/include/sys/sysevent/Makefile.am
-@@ -8,6 +8,6 @@ USER_H =
- EXTRA_DIST = $(COMMON_H) $(KERNEL_H) $(USER_H)
- 
- if CONFIG_KERNEL
--kerneldir = @prefix@/src/spl-$(VERSION)/include/sys/sysevent
-+kerneldir = @prefix@/libexec/spl/include/sys/sysevent
- kernel_HEADERS = $(KERNEL_H)
- endif
 diff --git a/include/util/Makefile.am b/include/util/Makefile.am
 index e2bf09f..3f5d6ce 100644
 --- a/include/util/Makefile.am
diff --git a/pkgs/os-specific/linux/zfs/default.nix b/pkgs/os-specific/linux/zfs/default.nix
index 31b0cdfea8a..4cbe527de05 100644
--- a/pkgs/os-specific/linux/zfs/default.nix
+++ b/pkgs/os-specific/linux/zfs/default.nix
@@ -152,9 +152,9 @@ in {
     incompatibleKernelVersion = null;
 
     # this package should point to the latest release.
-    version = "0.7.7";
+    version = "0.7.8";
 
-    sha256 = "0lrzy27sh1cinkf04ki2vfjrgpgbiza2s59i2by45qdd8kmkcc5r";
+    sha256 = "0m7j5cpz81lqcfbh4w3wvqjjka07wickl27klgy1zplv6vr0baix";
 
     extraPatches = [
       (fetchpatch {
@@ -171,10 +171,10 @@ in {
     incompatibleKernelVersion = "4.16";
 
     # this package should point to a version / git revision compatible with the latest kernel release
-    version = "2018-04-04";
+    version = "2018-04-10";
 
-    rev = "1724eb62debfaa48f5861660615d49a994945d94";
-    sha256 = "1adnmpn7b8zi5rq9r71flwx237vbysss1wywbck8407mcnrfaxzf";
+    rev = "74df0c5e251a920a1966a011c16f960cd7ba562e";
+    sha256 = "1x3mipj3ryznnd7kx84r3n607hv6jqs66mb61g3zcdmvk6al4yq4";
     isUnstable = true;
 
     extraPatches = [
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index 5372b577e33..852b210ba15 100644
--- a/pkgs/servers/home-assistant/component-packages.nix
+++ b/pkgs/servers/home-assistant/component-packages.nix
@@ -112,8 +112,8 @@
     "hue" = ps: with ps; [  ];
     "ifttt" = ps: with ps; [  ];
     "ihc" = ps: with ps; [  ];
-    "image_processing.dlib_face_detect" = ps: with ps; [  ];
-    "image_processing.dlib_face_identify" = ps: with ps; [  ];
+    "image_processing.dlib_face_detect" = ps: with ps; [ face_recognition ];
+    "image_processing.dlib_face_identify" = ps: with ps; [ face_recognition ];
     "image_processing.opencv" = ps: with ps; [ numpy ];
     "influxdb" = ps: with ps; [ influxdb ];
     "insteon_local" = ps: with ps; [  ];
@@ -172,7 +172,7 @@
     "media_player.dunehd" = ps: with ps; [  ];
     "media_player.emby" = ps: with ps; [  ];
     "media_player.frontier_silicon" = ps: with ps; [  ];
-    "media_player.gpmdp" = ps: with ps; [  ];
+    "media_player.gpmdp" = ps: with ps; [ websocket_client ];
     "media_player.gstreamer" = ps: with ps; [  ];
     "media_player.kodi" = ps: with ps; [ jsonrpc-async jsonrpc-websocket ];
     "media_player.lg_netcast" = ps: with ps; [  ];
@@ -447,6 +447,6 @@
     "zeroconf" = ps: with ps; [ zeroconf ];
     "zha" = ps: with ps; [  ];
     "zigbee" = ps: with ps; [  ];
-    "zwave" = ps: with ps; [ pydispatcher ];
+    "zwave" = ps: with ps; [ pydispatcher python_openzwave ];
   };
 }
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index 6a8997aace3..389d572254f 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -52,7 +52,7 @@ let
 
   getPackages = component: builtins.getAttr component componentPackages.components;
 
-  componentBuildInputs = map (component: getPackages component py.pkgs) extraComponents;
+  componentBuildInputs = lib.concatMap (component: getPackages component py.pkgs) extraComponents;
 
   # Ensure that we are using a consistent package set
   extraBuildInputs = extraPackages py.pkgs;
diff --git a/pkgs/servers/home-assistant/parse-requirements.py b/pkgs/servers/home-assistant/parse-requirements.py
index 87ef65482ab..46e7acee178 100755
--- a/pkgs/servers/home-assistant/parse-requirements.py
+++ b/pkgs/servers/home-assistant/parse-requirements.py
@@ -1,5 +1,5 @@
 #! /usr/bin/env nix-shell
-#! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ setuptools ])"
+#! nix-shell -i python3 -p "python3.withPackages (ps: with ps; [ ])"
 #
 # This script downloads https://github.com/home-assistant/home-assistant/blob/master/requirements_all.txt.
 # This file contains lines of the form
@@ -20,7 +20,6 @@ import os
 import sys
 import json
 import re
-from pkg_resources import Requirement, RequirementParseError
 
 GENERAL_PREFIX = '# homeassistant.'
 COMPONENT_PREFIX = GENERAL_PREFIX + 'components.'
@@ -64,9 +63,11 @@ def name_to_attr_path(req):
     names = [req]
     # E.g. python-mpd2 is actually called python3.6-mpd2
     # instead of python-3.6-python-mpd2 inside Nixpkgs
-    if req.startswith('python-'):
+    if req.startswith('python-') or req.startswith('python_'):
         names.append(req[len('python-'):])
     for name in names:
+        # treat "-" and "_" equally
+        name = re.sub('[-_]', '[-_]', name)
         pattern = re.compile('^python\\d\\.\\d-{}-\\d'.format(name), re.I)
         for attr_path, package in packages.items():
             if pattern.match(package['name']):
@@ -86,7 +87,7 @@ for component, reqs in OrderedDict(sorted(requirements.items())).items():
     attr_paths = []
     for req in reqs:
         try:
-            name = Requirement.parse(req).project_name
+            name = req.split('==')[0]
             attr_path = name_to_attr_path(name)
             if attr_path is not None:
                 # Add attribute path without "python3Packages." prefix
diff --git a/pkgs/shells/zsh/default.nix b/pkgs/shells/zsh/default.nix
index 43b766fdaf2..c68a1bb2784 100644
--- a/pkgs/shells/zsh/default.nix
+++ b/pkgs/shells/zsh/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, ncurses, pcre }:
 
 let
-  version = "5.4.2";
+  version = "5.5";
 
   documentation = fetchurl {
     url = "mirror://sourceforge/zsh/zsh-${version}-doc.tar.gz";
-    sha256 = "1703g6vfz2vpb866wgl71nvg0ynjq0zvrjwkqbv7v6q3606jbmn3";
+    sha256 = "1k56ancx1xxniih8i1gmfhhmmk965jk8wfjdfkynnxfi4pkqy2gc";
   };
 
 in
@@ -15,7 +15,7 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "mirror://sourceforge/zsh/zsh-${version}.tar.gz";
-    sha256 = "1jdcfinzmki2w963msvsanv29vqqfmdfm4rncwpw0r3zqnrcsywm";
+    sha256 = "0nf1cwjgdncz9bln1fdz7m6rlgf8qjy2v01871ifhak78njhcmnh";
   };
 
   buildInputs = [ ncurses pcre ];
diff --git a/pkgs/tools/audio/abcmidi/default.nix b/pkgs/tools/audio/abcmidi/default.nix
index ab06a3b6983..6d8376b6035 100644
--- a/pkgs/tools/audio/abcmidi/default.nix
+++ b/pkgs/tools/audio/abcmidi/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "abcMIDI-${version}";
-  version = "2018.03.21";
+  version = "2018.04.01";
 
   src = fetchzip {
     url = "http://ifdo.ca/~seymour/runabc/${name}.zip";
-    sha256 = "0h34bjs5p3vkabg6c1dpwrwfxypki0xyd0m6jf4ys7xbs9qnal6l";
+    sha256 = "1ffr358q663qgcjzg2l50isp8hybxp60r99xma2qhhy7lvyv57x4";
   };
 
   # There is also a file called "makefile" which seems to be preferred by the standard build phase
diff --git a/pkgs/tools/filesystems/f3/default.nix b/pkgs/tools/filesystems/f3/default.nix
index 4af076e8f2c..61c6ab253cc 100644
--- a/pkgs/tools/filesystems/f3/default.nix
+++ b/pkgs/tools/filesystems/f3/default.nix
@@ -1,27 +1,26 @@
 { stdenv, fetchFromGitHub
 , parted, udev
 }:
-let
-  version = "6.0-2016.11.16-unstable";
-in
+
 stdenv.mkDerivation rec {
-  name = "f3-${version}";
+  name = "${pname}-${version}";
+  pname = "f3";
+  version = "7.0";
 
   enableParallelBuilding = true;
 
   src = fetchFromGitHub {
     owner = "AltraMayor";
-    repo = "f3";
-    rev = "eabf001f69a788e64912bc9e812c118a324077d5";
-    sha256 = "0ypqyqwqiy3ynssdd9gamk1jxywg6avb45ndlzhv3wxh2qcframm";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "195j2zd747ffbsl8p5rf7dyn1j5n05zfqy1s9fm4y6lz8yc1nr17";
   };
 
   buildInputs = [ parted udev ];
 
   patchPhase = "sed -i 's/-oroot -groot//' Makefile";
 
-  buildFlags   = [ "CFLAGS=-fgnu89-inline"  # HACK for weird gcc incompatibility with -O2
-                   "all"                    # f3read, f3write
+  buildFlags   = [ "all"                    # f3read, f3write
                    "extra"                  # f3brew, f3fix, f3probe
                  ];
 
diff --git a/pkgs/tools/system/krakenx/default.nix b/pkgs/tools/system/krakenx/default.nix
new file mode 100644
index 00000000000..db0987d7073
--- /dev/null
+++ b/pkgs/tools/system/krakenx/default.nix
@@ -0,0 +1,23 @@
+{ lib, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "krakenx";
+  version = "0.0.1";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "1vxyindph81srya0pfmb3n64n8h7ghp38ak86vc2zc5nyirf5zq8";
+  };
+
+  propagatedBuildInputs = lib.singleton python3Packages.pyusb;
+
+  doCheck = false; # there are no tests
+
+  meta = with lib; {
+    description = "Python script to control NZXT cooler Kraken X52/X62";
+    homepage = https://github.com/KsenijaS/krakenx;
+    license = licenses.gpl2;
+    maintainers = [ maintainers.willibutz ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 7fb8e467d42..5f2b341c7c1 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -3182,6 +3182,8 @@ with pkgs;
 
   kore = callPackage ../development/web/kore { };
 
+  krakenx = callPackage ../tools/system/krakenx { };
+
   partition-manager = libsForQt5.callPackage ../tools/misc/partition-manager { };
 
   kpcli = callPackage ../tools/security/kpcli { };
@@ -4727,6 +4729,8 @@ with pkgs;
 
   samplicator = callPackage ../tools/networking/samplicator { };
 
+  sasview = callPackage ../applications/science/misc/sasview {};
+
   scanbd = callPackage ../tools/graphics/scanbd { };
 
   screen = callPackage ../tools/misc/screen {
@@ -11511,7 +11515,9 @@ with pkgs;
 
   t1lib = callPackage ../development/libraries/t1lib { };
 
-  tachyon = callPackage ../development/libraries/tachyon {};
+  tachyon = callPackage ../development/libraries/tachyon {
+    inherit (darwin.apple_sdk.frameworks) Carbon;
+  };
 
   taglib = callPackage ../development/libraries/taglib { };
   taglib_1_9 = callPackage ../development/libraries/taglib/1.9.nix { };
@@ -16163,6 +16169,8 @@ with pkgs;
 
   i3status-rust = callPackage ../applications/window-managers/i3/status-rust.nix { };
 
+  i3-wk-switch = callPackage ../applications/window-managers/i3/wk-switch.nix { };
+
   i810switch = callPackage ../os-specific/linux/i810switch { };
 
   icewm = callPackage ../applications/window-managers/icewm {};
@@ -16898,6 +16906,8 @@ with pkgs;
 
   ostinato = callPackage ../applications/networking/ostinato { };
 
+  p4v = libsForQt5.callPackage ../applications/version-management/p4v { };
+
   panamax_api = callPackage ../applications/networking/cluster/panamax/api { };
   panamax_ui = callPackage ../applications/networking/cluster/panamax/ui { };
 
@@ -17175,6 +17185,8 @@ with pkgs;
 
   photoqt = libsForQt5.callPackage ../applications/graphics/photoqt { };
 
+  photoflow = callPackage ../applications/graphics/photoflow { };
+
   phototonic = libsForQt5.callPackage ../applications/graphics/phototonic { };
 
   phrasendrescher = callPackage ../tools/security/phrasendrescher { };
@@ -18443,6 +18455,7 @@ with pkgs;
       ++ optional (config.kodi.enableSteamLauncher or false) steam-launcher
       ++ optional (config.kodi.enablePVRHTS or false) pvr-hts
       ++ optional (config.kodi.enablePVRHDHomeRun or false) pvr-hdhomerun
+      ++ optional (config.kodi.enablePVRIPTVSimple or false) pvr-iptvsimple
       );
   };
 
@@ -20333,6 +20346,8 @@ with pkgs;
 
   cups-bjnp = callPackage ../misc/cups/drivers/cups-bjnp { };
 
+  cups-brother-hl1110 = callPackage_i686 ../misc/cups/drivers/hl1110 { };
+
   # this driver ships with pre-compiled 32-bit binary libraries
   cnijfilter_2_80 = callPackage_i686 ../misc/cups/drivers/cnijfilter_2_80 { };
 
@@ -20515,6 +20530,8 @@ with pkgs;
 
   moltengamepad = callPackage ../misc/drivers/moltengamepad { };
 
+  openzwave = callPackage ../development/libraries/openzwave { };
+
   mongoc = callPackage ../development/libraries/mongoc { };
 
   mupen64plus = callPackage ../misc/emulators/mupen64plus { };
@@ -20701,6 +20718,8 @@ with pkgs;
 
   canon-cups-ufr2 = callPackage ../misc/cups/drivers/canon { };
 
+  hll2390dw-cups = callPackage ../misc/cups/drivers/hll2390dw-cups { };
+
   mfcj470dw-cupswrapper = callPackage ../misc/cups/drivers/mfcj470dwcupswrapper { };
   mfcj470dwlpr = callPackage_i686 ../misc/cups/drivers/mfcj470dwlpr { };
 
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 6dde323e925..6ce9bde2c97 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -1075,6 +1075,8 @@ in {
     enablePython = true;
   });
 
+  bumps = callPackage ../development/python-modules/bumps {};
+
   buttersink = callPackage ../development/python-modules/buttersink {};
 
   cached-property = callPackage ../development/python-modules/cached-property { };
@@ -5663,9 +5665,7 @@ in {
     };
   };
 
-  # py3k disabled, see https://travis-ci.org/NixOS/nixpkgs/builds/48759067
-  graph-tool = if isPy3k then throw "graph-tool in Nix doesn't support py3k yet"
-    else callPackage ../development/python-modules/graph-tool/2.x.x.nix { boost = pkgs.boost159; };
+  graph-tool = callPackage ../development/python-modules/graph-tool/2.x.x.nix { };
 
   grappelli_safe = buildPythonPackage rec {
     version = "0.3.13";
@@ -7131,6 +7131,8 @@ in {
 
   python-oauth2 = callPackage ../development/python-modules/python-oauth2 { };
 
+  python_openzwave = callPackage ../development/python-modules/python_openzwave { };
+
   python-Levenshtein = buildPythonPackage rec {
     name = "python-Levenshtein-${version}";
     version = "0.12.0";
@@ -9917,6 +9919,8 @@ in {
     };
   };
 
+    periodictable = callPackage ../development/python-modules/periodictable { };
+
   pg8000 = buildPythonPackage rec {
     name = "pg8000-1.10.1";
 
@@ -12710,6 +12714,8 @@ in {
 
   sampledata = callPackage ../development/python-modules/sampledata { };
 
+  sasmodels = callPackage ../development/python-modules/sasmodels { };
+
   scapy = callPackage ../development/python-modules/scapy { };
 
   scipy = callPackage ../development/python-modules/scipy { };
@@ -14720,7 +14726,9 @@ in {
     };
   };
 
-  uritemplate_py = buildPythonPackage rec {
+    unittest-xml-reporting = callPackage ../development/python-modules/unittest-xml-reporting { };
+
+    uritemplate_py = buildPythonPackage rec {
     name = "uritemplate.py-${version}";
     version = "3.0.0";