summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nixos/modules/services/continuous-integration/gitlab-runner.nix56
-rw-r--r--nixos/modules/services/web-servers/phpfpm/default.nix1
-rw-r--r--pkgs/applications/audio/mopidy-iris/default.nix4
-rw-r--r--pkgs/applications/audio/renoise/default.nix39
-rw-r--r--pkgs/applications/display-managers/sddm/default.nix8
-rw-r--r--pkgs/applications/kde/akonadi-calendar.nix20
-rw-r--r--pkgs/applications/kde/akonadi-contacts.nix16
-rw-r--r--pkgs/applications/kde/akonadi-mime.nix14
-rw-r--r--pkgs/applications/kde/akonadi-notes.nix18
-rw-r--r--pkgs/applications/kde/akonadi-search.nix20
-rw-r--r--pkgs/applications/kde/akonadi/akonadi-paths.patch20
-rw-r--r--pkgs/applications/kde/akonadi/default.nix22
-rw-r--r--pkgs/applications/kde/akonadiconsole.nix21
-rw-r--r--pkgs/applications/kde/akregator.nix30
-rw-r--r--pkgs/applications/kde/ark/default.nix4
-rw-r--r--pkgs/applications/kde/build-support/application.nix20
-rw-r--r--pkgs/applications/kde/calendarsupport.nix20
-rw-r--r--pkgs/applications/kde/default.nix78
-rw-r--r--pkgs/applications/kde/eventviews.nix18
-rw-r--r--pkgs/applications/kde/ffmpegthumbs.nix2
-rw-r--r--pkgs/applications/kde/grantleetheme/default.nix20
-rw-r--r--pkgs/applications/kde/grantleetheme/grantlee-merge-theme-dirs.patch166
-rw-r--r--pkgs/applications/kde/grantleetheme/grantleetheme_check_null.patch25
-rw-r--r--pkgs/applications/kde/grantleetheme/series2
-rw-r--r--pkgs/applications/kde/incidenceeditor.nix20
-rw-r--r--pkgs/applications/kde/k3b.nix2
-rw-r--r--pkgs/applications/kde/kaddressbook.nix22
-rw-r--r--pkgs/applications/kde/kalarmcal.nix19
-rw-r--r--pkgs/applications/kde/kcachegrind.nix6
-rw-r--r--pkgs/applications/kde/kcalc.nix8
-rw-r--r--pkgs/applications/kde/kcalcore.nix16
-rw-r--r--pkgs/applications/kde/kcalutils.nix20
-rw-r--r--pkgs/applications/kde/kcolorchooser.nix3
-rw-r--r--pkgs/applications/kde/kcontacts.nix5
-rw-r--r--pkgs/applications/kde/kdav.nix16
-rw-r--r--pkgs/applications/kde/kdegraphics-mobipocket.nix1
-rw-r--r--pkgs/applications/kde/kdegraphics-thumbnailers.nix2
-rw-r--r--pkgs/applications/kde/kdenetwork-filesharing.nix2
-rw-r--r--pkgs/applications/kde/kdepim-apps-libs/default.nix21
-rw-r--r--pkgs/applications/kde/kdepim-apps-libs/kdepim-apps-libs-grantlee-merge-theme-dirs.patch62
-rw-r--r--pkgs/applications/kde/kdepim-apps-libs/series1
-rw-r--r--pkgs/applications/kde/kdepim-runtime.nix25
-rw-r--r--pkgs/applications/kde/kdf.nix4
-rw-r--r--pkgs/applications/kde/kgpg.nix13
-rw-r--r--pkgs/applications/kde/khelpcenter.nix11
-rw-r--r--pkgs/applications/kde/kholidays.nix16
-rw-r--r--pkgs/applications/kde/kidentitymanagement.nix20
-rw-r--r--pkgs/applications/kde/kig.nix9
-rw-r--r--pkgs/applications/kde/kimap.nix17
-rw-r--r--pkgs/applications/kde/kio-extras.nix2
-rw-r--r--pkgs/applications/kde/kldap.nix17
-rw-r--r--pkgs/applications/kde/kleopatra.nix19
-rw-r--r--pkgs/applications/kde/kmail-account-wizard.nix21
-rw-r--r--pkgs/applications/kde/kmail.nix29
-rw-r--r--pkgs/applications/kde/kmailtransport.nix17
-rw-r--r--pkgs/applications/kde/kmbox.nix16
-rw-r--r--pkgs/applications/kde/kmime.nix5
-rw-r--r--pkgs/applications/kde/kmix.nix11
-rw-r--r--pkgs/applications/kde/kolourpaint.nix2
-rw-r--r--pkgs/applications/kde/kompare.nix7
-rw-r--r--pkgs/applications/kde/konsole.nix5
-rw-r--r--pkgs/applications/kde/kontact.nix23
-rw-r--r--pkgs/applications/kde/kontactinterface.nix17
-rw-r--r--pkgs/applications/kde/korganizer.nix29
-rw-r--r--pkgs/applications/kde/kpimtextedit.nix21
-rw-r--r--pkgs/applications/kde/kqtquickcharts.nix15
-rw-r--r--pkgs/applications/kde/ktnef.nix18
-rw-r--r--pkgs/applications/kde/libgravatar.nix18
-rw-r--r--pkgs/applications/kde/libkdcraw.nix1
-rw-r--r--pkgs/applications/kde/libkdepim.nix21
-rw-r--r--pkgs/applications/kde/libkexiv2.nix1
-rw-r--r--pkgs/applications/kde/libkipi.nix3
-rw-r--r--pkgs/applications/kde/libkleo.nix21
-rw-r--r--pkgs/applications/kde/libksieve.nix23
-rw-r--r--pkgs/applications/kde/mailcommon.nix22
-rw-r--r--pkgs/applications/kde/mailimporter.nix19
-rw-r--r--pkgs/applications/kde/mbox-importer.nix20
-rw-r--r--pkgs/applications/kde/messagelib.nix29
-rw-r--r--pkgs/applications/kde/okteta.nix14
-rw-r--r--pkgs/applications/kde/pim-sieve-editor.nix19
-rw-r--r--pkgs/applications/kde/pimcommon.nix26
-rw-r--r--pkgs/applications/kde/spectacle.nix7
-rw-r--r--pkgs/applications/kde/syndication.nix16
-rw-r--r--pkgs/applications/misc/kanboard/default.nix4
-rw-r--r--pkgs/build-support/cc-wrapper/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/3.22/core/libgnome-keyring/default.nix2
-rw-r--r--pkgs/desktops/plasma-5/default.nix2
-rw-r--r--pkgs/desktops/plasma-5/libkscreen/default.nix3
-rw-r--r--pkgs/development/haskell-modules/configuration-common.nix5
-rw-r--r--pkgs/development/libraries/aspell/aspell-with-dicts.nix2
-rw-r--r--pkgs/development/libraries/gpgme/default.nix7
-rw-r--r--pkgs/development/libraries/grantlee/5/default.nix (renamed from pkgs/development/libraries/grantlee/5.x.nix)22
-rw-r--r--pkgs/development/libraries/grantlee/5/grantlee-nix-profiles.patch19
-rw-r--r--pkgs/development/libraries/grantlee/5/grantlee-no-canonicalize-filepath.patch27
-rw-r--r--pkgs/development/libraries/grantlee/5/series2
-rw-r--r--pkgs/development/libraries/grantlee/5/setup-hook.sh23
-rw-r--r--pkgs/development/libraries/kde-frameworks/kcmutils/kcmutils-fix-plugin-path.patch13
-rw-r--r--pkgs/development/libraries/kde-frameworks/kcmutils/series1
-rw-r--r--pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix3
-rw-r--r--pkgs/development/libraries/kde-frameworks/kwallet.nix3
-rw-r--r--pkgs/development/libraries/kdiagram/default.nix21
-rw-r--r--pkgs/development/libraries/qt-5/5.6/qttools/default.nix1
-rw-r--r--pkgs/development/libraries/qt-5/5.9/qttools/default.nix1
-rw-r--r--pkgs/development/ocaml-modules/batteries/default.nix4
-rw-r--r--pkgs/development/ocaml-modules/qtest/default.nix9
-rw-r--r--pkgs/development/python-modules/pytorch/default.nix10
-rw-r--r--pkgs/development/python-modules/torchvision/default.nix30
-rw-r--r--pkgs/development/tools/database/liquibase/default.nix9
-rw-r--r--pkgs/os-specific/darwin/ios-cross/default.nix5
-rw-r--r--pkgs/os-specific/linux/busybox/default.nix7
-rw-r--r--pkgs/os-specific/linux/microcode/intel.nix6
-rw-r--r--pkgs/servers/http/nginx/generic.nix17
-rw-r--r--pkgs/servers/nosql/cassandra/generic.nix15
-rw-r--r--pkgs/stdenv/darwin/default.nix6
-rw-r--r--pkgs/stdenv/freebsd/default.nix14
-rw-r--r--pkgs/stdenv/linux/default.nix4
-rw-r--r--pkgs/stdenv/nix/default.nix8
-rw-r--r--pkgs/tools/misc/ostree/default.nix12
-rw-r--r--pkgs/tools/security/pinentry/default.nix11
-rw-r--r--pkgs/top-level/all-packages.nix18
-rw-r--r--pkgs/top-level/perl-packages.nix6
-rw-r--r--pkgs/top-level/python-packages.nix2
122 files changed, 1612 insertions, 265 deletions
diff --git a/nixos/modules/services/continuous-integration/gitlab-runner.nix b/nixos/modules/services/continuous-integration/gitlab-runner.nix
index b11bc031b3ffa..ce0583dad54d3 100644
--- a/nixos/modules/services/continuous-integration/gitlab-runner.nix
+++ b/nixos/modules/services/continuous-integration/gitlab-runner.nix
@@ -4,15 +4,65 @@ with lib;
 
 let
   cfg = config.services.gitlab-runner;
-  configFile = pkgs.writeText "config.toml" cfg.configText;
+  configFile =
+    if (cfg.configFile == null) then
+      (pkgs.runCommand "config.toml" {
+        buildInputs = [ pkgs.remarshal ];
+      } ''
+        remarshal -if json -of toml \
+          < ${pkgs.writeText "config.json" (builtins.toJSON cfg.configOptions)} \
+          > $out
+      '')
+    else
+      cfg.configFile;
   hasDocker = config.virtualisation.docker.enable;
 in
 {
   options.services.gitlab-runner = {
     enable = mkEnableOption "Gitlab Runner";
 
-    configText = mkOption {
-      description = "Verbatim config.toml to use";
+    configFile = mkOption {
+      default = null;
+      description = ''
+        Configuration file for gitlab-runner.
+        Use this option in favor of configOptions to avoid placing CI tokens in the nix store.
+
+        <option>configFile</option> takes precedence over <option>configOptions</option>.
+
+        Warning: Not using <option>configFile</option> will potentially result in secrets
+        leaking into the WORLD-READABLE nix store.
+      '';
+      type = types.nullOr types.path;
+    };
+
+    configOptions = mkOption {
+      description = ''
+        Configuration for gitlab-runner
+        <option>configFile</option> will take precedence over this option.
+
+        Warning: all Configuration, especially CI token, will be stored in a
+        WORLD-READABLE file in the Nix Store.
+
+        If you want to protect your CI token use <option>configFile</option> instead.
+      '';
+      type = types.attrs;
+      example = {
+        concurrent = 2;
+        runners = [{
+          name = "docker-nix-1.11";
+          url = "https://CI/";
+          token = "TOKEN";
+          executor = "docker";
+          builds_dir = "";
+          docker = {
+            host = "";
+            image = "nixos/nix:1.11";
+            privileged = true;
+            disable_cache = true;
+            cache_dir = "";
+          };
+        }];
+      };
     };
 
     gracefulTermination = mkOption {
diff --git a/nixos/modules/services/web-servers/phpfpm/default.nix b/nixos/modules/services/web-servers/phpfpm/default.nix
index 26f546022035b..f9febbfbacdf7 100644
--- a/nixos/modules/services/web-servers/phpfpm/default.nix
+++ b/nixos/modules/services/web-servers/phpfpm/default.nix
@@ -150,7 +150,6 @@ in {
           PrivateDevices = true;
           ProtectSystem = "full";
           ProtectHome = true;
-          NoNewPrivileges = true;
           RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
           Type = "notify";
           ExecStart = "${cfg.phpPackage}/bin/php-fpm -y ${cfgFile} -c ${phpIni}";
diff --git a/pkgs/applications/audio/mopidy-iris/default.nix b/pkgs/applications/audio/mopidy-iris/default.nix
index cca2e1730f3b6..32d7bf7873030 100644
--- a/pkgs/applications/audio/mopidy-iris/default.nix
+++ b/pkgs/applications/audio/mopidy-iris/default.nix
@@ -2,12 +2,12 @@
 
 pythonPackages.buildPythonApplication rec {
   name = "mopidy-iris-${version}";
-  version = "3.1.3";
+  version = "3.2.0";
 
   src = pythonPackages.fetchPypi {
     inherit version;
     pname = "Mopidy-Iris";
-    sha256 = "144q83cfgdwlj5gv9wyi902xfjybsaa9n7d5azs14jpbnmmbj61f";
+    sha256 = "cb97cb14b2d6836f3c28c5fd0ada44b4a33f2e74380f44bd5d03beffa5f67b30";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/applications/audio/renoise/default.nix b/pkgs/applications/audio/renoise/default.nix
index 91e8f1be6ecec..d02c551be8afb 100644
--- a/pkgs/applications/audio/renoise/default.nix
+++ b/pkgs/applications/audio/renoise/default.nix
@@ -1,36 +1,35 @@
-{ stdenv, lib, requireFile, demo, fetchurl, libX11, libXext, libXcursor, libXrandr, libjack2, alsaLib, ... }:
-
+{ stdenv, lib, fetchurl, libX11, libXext, libXcursor, libXrandr, libjack2, alsaLib, releasePath ? null }:
+
+# To use the full release version:
+# 1) Sign into https://backstage.renoise.com and download the appropriate (x86 or x86_64) version
+#    for your machine to some stable location.
+# 2) Override the releasePath attribute to point to the location of the newly downloaded bundle.
+# Note: Renoise creates an individual build for each license which screws somewhat with the
+# use of functions like requireFile as the hash will be different for every user.
+let fileversion = "3_1_0";
+in
 stdenv.mkDerivation rec {
   name = "renoise";
-
   buildInputs = [ libX11 libXext libXcursor libXrandr alsaLib libjack2 ];
 
   src =
     if stdenv.system == "x86_64-linux" then
-        if demo then
+        if builtins.isNull releasePath then
         fetchurl {
-            url = "http://files.renoise.com/demo/Renoise_3_0_1_Demo_x86_64.tar.bz2";
-            sha256 = "1q7f94wz2dbz659kpp53a3n1qyndsk0pkb29lxdff4pc3ddqwykg";
+            url = "http://files.renoise.com/demo/Renoise_${fileversion}_Demo_x86_64.tar.bz2";
+            sha256 = "0pan68fr22xbj7a930y29527vpry3f07q3i9ya4fp6g7aawffsga";
         }
         else
-        requireFile {
-            url = "http://backstage.renoise.com/frontend/app/index.html#/login";
-            name = "rns_3_0_1_linux_x86_64.tar.gz";
-            sha256 = "1yb5w5jrg9dk9fg5rfvfk6p0rxn4r4i32vxp2l9lzhbs02pv15wd";
-        }
+        releasePath
     else if stdenv.system == "i686-linux" then
-        if demo then
+        if builtins.isNull releasePath then
         fetchurl {
-            url = "http://files.renoise.com/demo/Renoise_3_0_1_Demo_x86.tar.bz2";
-            sha256 = "0dgqvib4xh2yhgh2wajj11wsb6xiiwgfkhyz32g8vnyaij5q8f58";
+            url = "http://files.renoise.com/demo/Renoise_${fileversion}_Demo_x86.tar.bz2";
+            sha256 = "1lccjj4k8hpqqxxham5v01v2rdwmx3c5kgy1p9lqvzqma88k4769";
         }
         else
-        requireFile {
-            url = "http://backstage.renoise.com/frontend/app/index.html#/login";
-            name = "rns_3_0_1_reg_x86.tar.gz";
-            sha256 = "1swax2jz0gswdpzz8alwjfd8rhigc2yfspj7p8wvdvylqrf7n8q7";
-        }
-    else throw "platform is not suppored by Renoise";
+        releasePath
+    else throw "Platform is not supported by Renoise";
 
   installPhase = ''
     cp -r Resources $out
diff --git a/pkgs/applications/display-managers/sddm/default.nix b/pkgs/applications/display-managers/sddm/default.nix
index dd9cae32ba4b5..920e5ba9abd29 100644
--- a/pkgs/applications/display-managers/sddm/default.nix
+++ b/pkgs/applications/display-managers/sddm/default.nix
@@ -14,7 +14,7 @@ let
   };
 
 in mkDerivation rec {
-  name = "sddm-unwrapped-${version}";
+  name = "sddm-${version}";
 
   src = fetchFromGitHub {
     owner = "sddm";
@@ -36,11 +36,7 @@ in mkDerivation rec {
   nativeBuildInputs = [ cmake extra-cmake-modules pkgconfig qttools ];
 
   buildInputs = [
-    libxcb libpthreadstubs libXdmcp libXau pam systemd
-  ];
-
-  propagatedBuildInputs = [
-    qtbase qtdeclarative
+    libxcb libpthreadstubs libXdmcp libXau pam qtbase qtdeclarative systemd
   ];
 
   cmakeFlags = [
diff --git a/pkgs/applications/kde/akonadi-calendar.nix b/pkgs/applications/kde/akonadi-calendar.nix
new file mode 100644
index 0000000000000..ce6b6f75f93cf
--- /dev/null
+++ b/pkgs/applications/kde/akonadi-calendar.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-contacts, kcalcore, kcalutils, kcontacts,
+  kidentitymanagement, kio, kmailtransport,
+}:
+
+mkDerivation {
+  name = "akonadi-calendar";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [
+    akonadi akonadi-contacts kcalcore kcalutils kcontacts kidentitymanagement
+    kio kmailtransport
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/akonadi-contacts.nix b/pkgs/applications/kde/akonadi-contacts.nix
index 3f410b7b8b914..b09058b60be95 100644
--- a/pkgs/applications/kde/akonadi-contacts.nix
+++ b/pkgs/applications/kde/akonadi-contacts.nix
@@ -1,20 +1,24 @@
 {
-  mkDerivation, lib,
+  mkDerivation, lib, kdepimTeam,
   extra-cmake-modules,
-  akonadi, akonadi-mime, grantlee, kcontacts, kdbusaddons, ki18n, kiconthemes,
-  kio, kitemmodels, kmime, ktextwidgets, qtwebengine,
+  qtwebengine,
+  grantlee,
+  kdbusaddons, ki18n, kiconthemes, kio, kitemmodels, ktextwidgets, prison,
+  akonadi, akonadi-mime, kcontacts, kmime,
 }:
 
 mkDerivation {
   name = "akonadi-contacts";
   meta = {
     license = with lib.licenses; [ gpl2 lgpl21 ];
-    maintainers = [ lib.maintainers.ttuegel ];
+    maintainers = kdepimTeam;
   };
   nativeBuildInputs = [ extra-cmake-modules ];
   buildInputs = [
-    akonadi-mime grantlee kcontacts kdbusaddons ki18n kiconthemes kio
-    kitemmodels kmime ktextwidgets qtwebengine
+    qtwebengine
+    grantlee
+    kdbusaddons ki18n kiconthemes kio kitemmodels ktextwidgets prison
+    akonadi-mime kcontacts kmime
   ];
   propagatedBuildInputs = [ akonadi ];
   outputs = [ "out" "dev" ];
diff --git a/pkgs/applications/kde/akonadi-mime.nix b/pkgs/applications/kde/akonadi-mime.nix
index 98a341da6b680..52a17f5cbeb94 100644
--- a/pkgs/applications/kde/akonadi-mime.nix
+++ b/pkgs/applications/kde/akonadi-mime.nix
@@ -1,18 +1,16 @@
 {
-  mkDerivation, lib,
-  extra-cmake-modules,
-  akonadi, kdbusaddons, ki18n, kio, kitemmodels, kmime,
-  shared_mime_info
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, shared_mime_info,
+  akonadi, kdbusaddons, ki18n, kio, kitemmodels, kmime
 }:
 
 mkDerivation {
   name = "akonadi-mime";
   meta = {
     license = with lib.licenses; [ gpl2 lgpl21 ];
-    maintainers = [ lib.maintainers.ttuegel ];
+    maintainers = kdepimTeam;
   };
-  nativeBuildInputs = [ extra-cmake-modules ];
-  buildInputs = [ akonadi shared_mime_info
-                  kdbusaddons ki18n kio kitemmodels kmime ];
+  nativeBuildInputs = [ extra-cmake-modules shared_mime_info ];
+  buildInputs = [ akonadi kdbusaddons ki18n kio kitemmodels kmime ];
   outputs = [ "out" "dev" ];
 }
diff --git a/pkgs/applications/kde/akonadi-notes.nix b/pkgs/applications/kde/akonadi-notes.nix
new file mode 100644
index 0000000000000..72c4d799239cf
--- /dev/null
+++ b/pkgs/applications/kde/akonadi-notes.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, kcompletion, ki18n, kitemmodels, kmime, kxmlgui
+}:
+
+mkDerivation {
+  name = "akonadi-notes";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi kcompletion ki18n kitemmodels kmime kxmlgui
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/akonadi-search.nix b/pkgs/applications/kde/akonadi-search.nix
new file mode 100644
index 0000000000000..617c086ad9c9a
--- /dev/null
+++ b/pkgs/applications/kde/akonadi-search.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-mime, kcalcore, kcmutils, kcontacts, kcoreaddons, kmime,
+  krunner, qtbase, xapian
+}:
+
+mkDerivation {
+  name = "akonadi-search";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kcmutils krunner xapian ];
+  propagatedBuildInputs = [
+    akonadi akonadi-mime kcalcore kcontacts kcoreaddons kmime qtbase
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/akonadi/akonadi-paths.patch b/pkgs/applications/kde/akonadi/akonadi-paths.patch
index f1ae1f23cc959..91fd934b1ecca 100644
--- a/pkgs/applications/kde/akonadi/akonadi-paths.patch
+++ b/pkgs/applications/kde/akonadi/akonadi-paths.patch
@@ -33,7 +33,7 @@ Index: akonadi-17.04.0/src/server/storage/dbconfigmysql.cpp
 -    }
  
 -    const QString mysqladminPath = XdgBaseDirs::findExecutableFile(QStringLiteral("mysqladmin"), mysqldSearchPath);
-+    const QString mysqladminPath = QStringLiteral(NIXPKGS_MYSQL_MYSQLADMIN);
++    const QString mysqladminPath = QLatin1String(NIXPKGS_MYSQL_MYSQLADMIN);
      if (!mysqladminPath.isEmpty()) {
  #ifndef Q_OS_WIN
          defaultCleanShutdownCommand = QStringLiteral("%1 --defaults-file=%2/mysql.conf --socket=%3/mysql.socket shutdown")
@@ -42,11 +42,11 @@ Index: akonadi-17.04.0/src/server/storage/dbconfigmysql.cpp
      }
  
 -    mMysqlInstallDbPath = XdgBaseDirs::findExecutableFile(QStringLiteral("mysql_install_db"), mysqldSearchPath);
-+    mMysqlInstallDbPath = QStringLiteral(NIXPKGS_MYSQL_MYSQL_INSTALL_DB);
++    mMysqlInstallDbPath = QLatin1String(NIXPKGS_MYSQL_MYSQL_INSTALL_DB);
      qCDebug(AKONADISERVER_LOG) << "Found mysql_install_db: " << mMysqlInstallDbPath;
  
 -    mMysqlCheckPath = XdgBaseDirs::findExecutableFile(QStringLiteral("mysqlcheck"), mysqldSearchPath);
-+    mMysqlCheckPath = QStringLiteral(NIXPKGS_MYSQL_MYSQLCHECK);
++    mMysqlCheckPath = QLatin1String(NIXPKGS_MYSQL_MYSQLCHECK);
      qCDebug(AKONADISERVER_LOG) << "Found mysqlcheck: " << mMysqlCheckPath;
  
      mInternalServer = settings.value(QStringLiteral("QMYSQL/StartServer"), defaultInternalServer).toBool();
@@ -55,7 +55,7 @@ Index: akonadi-17.04.0/src/server/storage/dbconfigmysql.cpp
      mPassword = settings.value(QStringLiteral("Password")).toString();
      mConnectionOptions = settings.value(QStringLiteral("Options"), defaultOptions).toString();
 -    mMysqldPath = settings.value(QStringLiteral("ServerPath"), defaultServerPath).toString();
-+    mMysqldPath = QStringLiteral(NIXPKGS_MYSQL_MYSQLD);
++    mMysqldPath = QLatin1String(NIXPKGS_MYSQL_MYSQLD);
      mCleanServerShutdownCommand = settings.value(QStringLiteral("CleanServerShutdownCommand"), defaultCleanShutdownCommand).toString();
      settings.endGroup();
  
@@ -84,7 +84,7 @@ Index: akonadi-17.04.0/src/server/storage/dbconfigmysql.cpp
  
      // generate config file
 -    const QString globalConfig = XdgBaseDirs::findResourceFile("config", QStringLiteral("akonadi/mysql-global.conf"));
-+    const QString globalConfig = QStringLiteral(NIX_OUT "/etc/xdg/akonadi/mysql-global.conf");
++    const QString globalConfig = QLatin1String(NIX_OUT "/etc/xdg/akonadi/mysql-global.conf");
      const QString localConfig  = XdgBaseDirs::findResourceFile("config", QStringLiteral("akonadi/mysql-local.conf"));
      const QString actualConfig = StandardDirs::saveDir("data") + QLatin1String("/mysql.conf");
      if (globalConfig.isEmpty()) {
@@ -133,7 +133,7 @@ Index: akonadi-17.04.0/src/server/storage/dbconfigpostgresql.cpp
 -
 -        defaultServerPath = XdgBaseDirs::findExecutableFile(QStringLiteral("pg_ctl"), postgresSearchPath);
 -        defaultInitDbPath = XdgBaseDirs::findExecutableFile(QStringLiteral("initdb"), postgresSearchPath);
-+        defaultInitDbPath = QStringLiteral(NIXPKGS_POSTGRES_INITDB);
++        defaultInitDbPath = QLatin1String(NIXPKGS_POSTGRES_INITDB);
          defaultHostName = Utils::preferredSocketDirectory(StandardDirs::saveDir("data", QStringLiteral("db_misc")));
          defaultPgData = StandardDirs::saveDir("data", QStringLiteral("db_data"));
      }
@@ -145,7 +145,7 @@ Index: akonadi-17.04.0/src/server/storage/dbconfigpostgresql.cpp
 -    if (mInternalServer && mServerPath.isEmpty()) {
 -        mServerPath = defaultServerPath;
 -    }
-+    mServerPath = QStringLiteral(NIXPKGS_POSTGRES_PG_CTL);
++    mServerPath = QLatin1String(NIXPKGS_POSTGRES_PG_CTL);
      qCDebug(AKONADISERVER_LOG) << "Found pg_ctl:" << mServerPath;
      mInitDbPath = settings.value(QStringLiteral("InitDbPath"), defaultInitDbPath).toString();
      if (mInternalServer && mInitDbPath.isEmpty()) {
@@ -166,7 +166,7 @@ Index: akonadi-17.04.0/src/akonadicontrol/agentprocessinstance.cpp
          Q_ASSERT(agentInfo.launchMethod == AgentType::Launcher);
          const QStringList arguments = QStringList() << executable << identifier();
 -        const QString agentLauncherExec = XdgBaseDirs::findExecutableFile(QStringLiteral("akonadi_agent_launcher"));
-+        const QString agentLauncherExec = QStringLiteral(NIX_OUT "/bin/akonadi_agent_launcher");
++        const QString agentLauncherExec = QLatin1String(NIX_OUT "/bin/akonadi_agent_launcher");
          mController->start(agentLauncherExec, arguments);
      }
      return true;
@@ -179,13 +179,13 @@ Index: akonadi-17.04.0/src/akonadicontrol/agentmanager.cpp
      mStorageController->setShutdownTimeout(15 * 1000);   // the server needs more time for shutdown if we are using an internal mysqld
      connect(mStorageController, &Akonadi::ProcessControl::unableToStart, this, &AgentManager::serverFailure);
 -    mStorageController->start(QStringLiteral("akonadiserver"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
-+    mStorageController->start(QStringLiteral(NIX_OUT "/bin/akonadiserver"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
++    mStorageController->start(QLatin1String(NIX_OUT "/bin/akonadiserver"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
  
      if (mAgentServerEnabled) {
          mAgentServer = new Akonadi::ProcessControl;
          connect(mAgentServer, &Akonadi::ProcessControl::unableToStart, this, &AgentManager::agentServerFailure);
 -        mAgentServer->start(QStringLiteral("akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
-+        mAgentServer->start(QStringLiteral(NIX_OUT "/bin/akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
++        mAgentServer->start(QLatin1String(NIX_OUT "/bin/akonadi_agent_server"), serviceArgs, Akonadi::ProcessControl::RestartOnCrash);
      }
  
  #ifndef QT_NO_DEBUG
diff --git a/pkgs/applications/kde/akonadi/default.nix b/pkgs/applications/kde/akonadi/default.nix
index c2e3442847422..bb7dac1b62a06 100644
--- a/pkgs/applications/kde/akonadi/default.nix
+++ b/pkgs/applications/kde/akonadi/default.nix
@@ -1,28 +1,24 @@
 {
-  mkDerivation, copyPathsToStore, lib,
-  extra-cmake-modules,
-  kcompletion, kconfigwidgets, kdbusaddons, kdesignerplugin, kiconthemes,
-  kwindowsystem, kcrash, kio,
-  boost, kitemmodels, shared_mime_info,
-  mysql
+  mkDerivation, copyPathsToStore, lib, kdepimTeam,
+  extra-cmake-modules, shared_mime_info,
+  boost, kcompletion, kconfigwidgets, kcrash, kdbusaddons, kdesignerplugin,
+  ki18n, kiconthemes, kio, kitemmodels, kwindowsystem, mysql, qttools,
 }:
 
 mkDerivation {
   name = "akonadi";
   meta = {
     license = [ lib.licenses.lgpl21 ];
-    maintainers = [ lib.maintainers.ttuegel ];
+    maintainers = kdepimTeam;
   };
   patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
-  nativeBuildInputs = [ extra-cmake-modules ];
+  nativeBuildInputs = [ extra-cmake-modules shared_mime_info ];
   buildInputs = [
-    kcompletion kconfigwidgets kdbusaddons kdesignerplugin kiconthemes kio
-    kwindowsystem kcrash shared_mime_info
+    kcompletion kconfigwidgets kcrash kdbusaddons kdesignerplugin ki18n
+    kiconthemes kio kwindowsystem qttools
   ];
   propagatedBuildInputs = [ boost kitemmodels ];
-  cmakeFlags = [
-    "-DMYSQLD_EXECUTABLE=${lib.getBin mysql}/bin/mysqld"
-  ];
+  outputs = [ "out" "dev" ];
   NIX_CFLAGS_COMPILE = [
     ''-DNIXPKGS_MYSQL_MYSQLD="${lib.getBin mysql}/bin/mysqld"''
     ''-DNIXPKGS_MYSQL_MYSQLADMIN="${lib.getBin mysql}/bin/mysqladmin"''
diff --git a/pkgs/applications/kde/akonadiconsole.nix b/pkgs/applications/kde/akonadiconsole.nix
new file mode 100644
index 0000000000000..844cbc7d17f2c
--- /dev/null
+++ b/pkgs/applications/kde/akonadiconsole.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-contacts, calendarsupport, kcalcore, kcompletion,
+  kconfigwidgets, kcontacts, kdbusaddons, kitemmodels, kpimtextedit,
+  ktextwidgets, kxmlgui, messagelib, qtbase,
+}:
+
+mkDerivation {
+  name = "akonadiconsole";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-contacts calendarsupport kcalcore kcompletion kconfigwidgets
+    kcontacts kdbusaddons kitemmodels kpimtextedit ktextwidgets kxmlgui
+    messagelib qtbase
+  ];
+}
diff --git a/pkgs/applications/kde/akregator.nix b/pkgs/applications/kde/akregator.nix
new file mode 100644
index 0000000000000..98d53bc808385
--- /dev/null
+++ b/pkgs/applications/kde/akregator.nix
@@ -0,0 +1,30 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  qtwebengine,
+  grantlee,
+  kcmutils, kcrash, kiconthemes, knotifyconfig, kparts, ktexteditor,
+  kwindowsystem,
+  akonadi, akonadi-mime, grantleetheme, kontactinterface, libkdepim, libkleo,
+  messagelib, syndication
+}:
+
+mkDerivation {
+  name = "akregator";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    qtwebengine
+
+    grantlee
+
+    kcmutils kcrash kiconthemes knotifyconfig kparts ktexteditor kwindowsystem
+
+    akonadi akonadi-mime grantleetheme kontactinterface libkdepim libkleo
+    messagelib syndication
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/ark/default.nix b/pkgs/applications/kde/ark/default.nix
index df15f6b0f188e..013e2e63f599c 100644
--- a/pkgs/applications/kde/ark/default.nix
+++ b/pkgs/applications/kde/ark/default.nix
@@ -7,7 +7,7 @@
   khtml, kio, kparts, kpty, kservice, kwidgetsaddons, libarchive,
 
   # Archive tools
-  p7zip, unzipNLS, zip,
+  p7zip, unzip, zip,
 
   # Unfree tools
   unfreeEnableUnrar ? false, unrar,
@@ -25,7 +25,7 @@ mkDerivation {
     let
       PATH =
         lib.makeBinPath
-        ([ p7zip unzipNLS zip ] ++ lib.optional unfreeEnableUnrar unrar);
+        ([ p7zip unzip zip ] ++ lib.optional unfreeEnableUnrar unrar);
     in ''
       wrapProgram "$out/bin/ark" --prefix PATH: "${PATH}"
     '';
diff --git a/pkgs/applications/kde/build-support/application.nix b/pkgs/applications/kde/build-support/application.nix
deleted file mode 100644
index 087f355b4fafc..0000000000000
--- a/pkgs/applications/kde/build-support/application.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ mkDerivation, lib, srcs }:
-
-args:
-
-let
-  inherit (args) name;
-  sname = args.sname or name;
-  inherit (srcs."${sname}") src version;
-in
-mkDerivation (args // {
-  name = "${name}-${version}";
-  inherit src;
-
-  outputs = args.outputs or [ "out" "dev" ];
-
-  meta = {
-    platforms = lib.platforms.linux;
-    homepage = http://www.kde.org;
-  } // (args.meta or {});
-})
diff --git a/pkgs/applications/kde/calendarsupport.nix b/pkgs/applications/kde/calendarsupport.nix
new file mode 100644
index 0000000000000..485397ec4aac3
--- /dev/null
+++ b/pkgs/applications/kde/calendarsupport.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-calendar, akonadi-mime, kcalutils, kdepim-apps-libs,
+  kholidays, kidentitymanagement, kmime, pimcommon, qttools,
+}:
+
+mkDerivation {
+  name = "calendarsupport";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-mime kcalutils kdepim-apps-libs kholidays pimcommon qttools
+  ];
+  propagatedBuildInputs = [ akonadi-calendar kidentitymanagement kmime ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/default.nix b/pkgs/applications/kde/default.nix
index 207228a65b0cf..24b73f415ad90 100644
--- a/pkgs/applications/kde/default.nix
+++ b/pkgs/applications/kde/default.nix
@@ -33,63 +33,121 @@ still shows most of the available features is in `./gwenview.nix`.
 let
   mirror = "mirror://kde";
   srcs = import ./srcs.nix { inherit fetchurl mirror; };
-in
 
-let
+  mkDerivation = args:
+    let
+      inherit (args) name;
+      sname = args.sname or name;
+      inherit (srcs."${sname}") src version;
+      mkDerivation =
+        libsForQt5.callPackage ({ mkDerivation }: mkDerivation) {};
+    in
+      mkDerivation (args // {
+        name = "${name}-${version}";
+        inherit src;
+
+        outputs = args.outputs or [ "out" ];
+
+        meta = {
+          platforms = lib.platforms.linux;
+          homepage = "http://www.kde.org";
+        } // (args.meta or {});
+      });
 
   packages = self: with self;
     let
       callPackage = self.newScope {
-        mkDerivation = import ./build-support/application.nix {
-          inherit lib;
-          inherit srcs;
-          mkDerivation = libsForQt5.callPackage ({ mkDerivation }: mkDerivation) {};
-        };
+        inherit mkDerivation;
+
+        # Team of maintainers assigned to the KDE PIM suite
+        kdepimTeam = with lib.maintainers; [ ttuegel vandenoever ];
       };
     in {
       kdelibs = callPackage ./kdelibs { inherit attica phonon; };
       akonadi = callPackage ./akonadi {};
+      akonadi-calendar = callPackage ./akonadi-calendar.nix {};
       akonadi-contacts = callPackage ./akonadi-contacts.nix {};
       akonadi-mime = callPackage ./akonadi-mime.nix {};
-      ark = callPackage ./ark/default.nix {};
+      akonadi-notes = callPackage ./akonadi-notes.nix {};
+      akonadi-search = callPackage ./akonadi-search.nix {};
+      akonadiconsole = callPackage ./akonadiconsole.nix {};
+      akregator = callPackage ./akregator.nix {};
+      ark = callPackage ./ark {};
       baloo-widgets = callPackage ./baloo-widgets.nix {};
+      calendarsupport = callPackage ./calendarsupport.nix {};
       dolphin = callPackage ./dolphin.nix {};
       dolphin-plugins = callPackage ./dolphin-plugins.nix {};
+      eventviews = callPackage ./eventviews.nix {};
       ffmpegthumbs = callPackage ./ffmpegthumbs.nix { };
       filelight = callPackage ./filelight.nix {};
+      grantleetheme = callPackage ./grantleetheme {};
       gwenview = callPackage ./gwenview.nix {};
+      incidenceeditor = callPackage ./incidenceeditor.nix {};
       k3b = callPackage ./k3b.nix {};
+      kaddressbook = callPackage ./kaddressbook.nix {};
+      kalarmcal = callPackage ./kalarmcal.nix {};
       kate = callPackage ./kate.nix {};
-      kdenlive = callPackage ./kdenlive.nix {};
-      kcalc = callPackage ./kcalc.nix {};
       kcachegrind = callPackage ./kcachegrind.nix {};
+      kcalc = callPackage ./kcalc.nix {};
+      kcalcore = callPackage ./kcalcore.nix {};
+      kcalutils = callPackage ./kcalutils.nix {};
       kcolorchooser = callPackage ./kcolorchooser.nix {};
       kcontacts = callPackage ./kcontacts.nix {};
+      kdav = callPackage ./kdav.nix {};
       kdegraphics-mobipocket = callPackage ./kdegraphics-mobipocket.nix {};
       kdegraphics-thumbnailers = callPackage ./kdegraphics-thumbnailers.nix {};
       kdenetwork-filesharing = callPackage ./kdenetwork-filesharing.nix {};
+      kdenlive = callPackage ./kdenlive.nix {};
+      kdepim-runtime = callPackage ./kdepim-runtime.nix {};
+      kdepim-apps-libs = callPackage ./kdepim-apps-libs {};
       kdf = callPackage ./kdf.nix {};
       kgpg = callPackage ./kgpg.nix {};
       khelpcenter = callPackage ./khelpcenter.nix {};
+      kholidays = callPackage ./kholidays.nix {};
+      kidentitymanagement = callPackage ./kidentitymanagement.nix {};
       kig = callPackage ./kig.nix {};
+      kimap = callPackage ./kimap.nix {};
       kio-extras = callPackage ./kio-extras.nix {};
+      kldap = callPackage ./kldap.nix {};
+      kleopatra = callPackage ./kleopatra.nix {};
+      kmail = callPackage ./kmail.nix {};
+      kmail-account-wizard = callPackage ./kmail-account-wizard.nix {};
+      kmailtransport = callPackage ./kmailtransport.nix {};
+      kmbox = callPackage ./kmbox.nix {};
       kmime = callPackage ./kmime.nix {};
       kmix = callPackage ./kmix.nix {};
       kolourpaint = callPackage ./kolourpaint.nix {};
       kompare = callPackage ./kompare.nix {};
       konsole = callPackage ./konsole.nix {};
+      kontact = callPackage ./kontact.nix {};
+      kontactinterface = callPackage ./kontactinterface.nix {};
+      korganizer = callPackage ./korganizer.nix {};
+      kpimtextedit = callPackage ./kpimtextedit.nix {};
+      kqtquickcharts = callPackage ./kqtquickcharts.nix {};
       krfb = callPackage ./krfb.nix {};
+      ktnef = callPackage ./ktnef.nix {};
       kwalletmanager = callPackage ./kwalletmanager.nix {};
+      libgravatar = callPackage ./libgravatar.nix {};
       libkcddb = callPackage ./libkcddb.nix {};
       libkdcraw = callPackage ./libkdcraw.nix {};
+      libkdepim = callPackage ./libkdepim.nix {};
       libkexiv2 = callPackage ./libkexiv2.nix {};
       libkipi = callPackage ./libkipi.nix {};
+      libkleo = callPackage ./libkleo.nix {};
       libkomparediff2 = callPackage ./libkomparediff2.nix {};
+      libksieve = callPackage ./libksieve.nix {};
+      mailcommon = callPackage ./mailcommon.nix {};
+      mailimporter = callPackage ./mailimporter.nix {};
       marble = callPackage ./marble.nix {};
+      mbox-importer = callPackage ./mbox-importer.nix {};
+      messagelib = callPackage ./messagelib.nix {};
       okteta = callPackage ./okteta.nix {};
       okular = callPackage ./okular.nix {};
+      pimcommon = callPackage ./pimcommon.nix {};
+      pim-sieve-editor = callPackage ./pim-sieve-editor.nix {};
       print-manager = callPackage ./print-manager.nix {};
       spectacle = callPackage ./spectacle.nix {};
+      syndication = callPackage ./syndication.nix {};
 
       l10n = recurseIntoAttrs (import ./l10n.nix { inherit callPackage lib recurseIntoAttrs; });
     };
diff --git a/pkgs/applications/kde/eventviews.nix b/pkgs/applications/kde/eventviews.nix
new file mode 100644
index 0000000000000..cc1e83f6581d6
--- /dev/null
+++ b/pkgs/applications/kde/eventviews.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, calendarsupport, kcalutils, kdiagram, libkdepim, qtbase, qttools,
+}:
+
+mkDerivation {
+  name = "eventviews";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi calendarsupport kcalutils kdiagram libkdepim qtbase qttools
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/ffmpegthumbs.nix b/pkgs/applications/kde/ffmpegthumbs.nix
index 4e915422d1474..aa03425f36a0a 100644
--- a/pkgs/applications/kde/ffmpegthumbs.nix
+++ b/pkgs/applications/kde/ffmpegthumbs.nix
@@ -11,5 +11,5 @@ mkDerivation {
     maintainers = [ lib.maintainers.ttuegel ];
   };
   nativeBuildInputs = [ extra-cmake-modules ];
-  propagatedBuildInputs = [ ffmpeg kio ];
+  buildInputs = [ ffmpeg kio ];
 }
diff --git a/pkgs/applications/kde/grantleetheme/default.nix b/pkgs/applications/kde/grantleetheme/default.nix
new file mode 100644
index 0000000000000..5035685c64fb5
--- /dev/null
+++ b/pkgs/applications/kde/grantleetheme/default.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, copyPathsToStore, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  grantlee5, ki18n, kiconthemes, knewstuff, kservice, kxmlgui, qtbase,
+}:
+
+mkDerivation {
+  name = "grantleetheme";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  output = [ "out" "dev" ];
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    grantlee5 ki18n kiconthemes knewstuff kservice kxmlgui qtbase
+  ];
+  propagatedBuildInputs = [ grantlee5 kiconthemes knewstuff ];
+}
diff --git a/pkgs/applications/kde/grantleetheme/grantlee-merge-theme-dirs.patch b/pkgs/applications/kde/grantleetheme/grantlee-merge-theme-dirs.patch
new file mode 100644
index 0000000000000..76b65a4447527
--- /dev/null
+++ b/pkgs/applications/kde/grantleetheme/grantlee-merge-theme-dirs.patch
@@ -0,0 +1,166 @@
+Index: grantleetheme-17.04.0/src/grantleetheme_p.h
+===================================================================
+--- grantleetheme-17.04.0.orig/src/grantleetheme_p.h
++++ grantleetheme-17.04.0/src/grantleetheme_p.h
+@@ -47,7 +47,7 @@ public:
+     QString description;
+     QString name;
+     QString dirName;
+-    QString absolutePath;
++    QStringList absolutePaths;
+     QString author;
+     QString email;
+ 
+Index: grantleetheme-17.04.0/src/grantleetheme.cpp
+===================================================================
+--- grantleetheme-17.04.0.orig/src/grantleetheme.cpp
++++ grantleetheme-17.04.0/src/grantleetheme.cpp
+@@ -45,7 +45,7 @@ ThemePrivate::ThemePrivate(const ThemePr
+     , description(other.description)
+     , name(other.name)
+     , dirName(other.dirName)
+-    , absolutePath(other.absolutePath)
++    , absolutePaths(other.absolutePaths)
+     , author(other.author)
+     , email(other.email)
+     , loader(other.loader)
+@@ -63,12 +63,15 @@ void ThemePrivate::setupEngine()
+ 
+ void ThemePrivate::setupLoader()
+ {
+-    // Get the parent dir with themes, we set the theme directory separately
+-    QDir dir(absolutePath);
+-    dir.cdUp();
++    QStringList templateDirs;
++    for (const QString& path : absolutePaths) {
++        QDir dir(path);
++        dir.cdUp();
++        templateDirs << dir.absolutePath();
++    }
+ 
+     loader = QSharedPointer<Grantlee::FileSystemTemplateLoader>::create();
+-    loader->setTemplateDirs({ dir.absolutePath() });
++    loader->setTemplateDirs(templateDirs);
+     loader->setTheme(dirName);
+ 
+     if (!sEngine) {
+@@ -102,9 +105,7 @@ QString ThemePrivate::errorTemplate(cons
+     Grantlee::Context ctx = createContext();
+     ctx.insert(QStringLiteral("error"), reason);
+     ctx.insert(QStringLiteral("templateName"), origTemplateName);
+-    const QString errorString = failedTemplate
+-            ? failedTemplate->errorString()
+-            : QStringLiteral("(null template)");
++    const QString errorString = failedTemplate->errorString();
+     ctx.insert(QStringLiteral("errorMessage"), errorString);
+     return tpl->render(&ctx);
+ }
+@@ -122,7 +123,7 @@ Theme::Theme(const QString &themePath, c
+     KConfigGroup group(&config, QStringLiteral("Desktop Entry"));
+     if (group.isValid()) {
+         d->dirName = dirName;
+-        d->absolutePath = themePath;
++        d->absolutePaths = QStringList(themePath);
+         d->name = group.readEntry("Name", QString());
+         d->description = group.readEntry("Description", QString());
+         d->themeFileName = group.readEntry("FileName", QString());
+@@ -141,7 +142,7 @@ Theme::~Theme()
+ 
+ bool Theme::operator==(const Theme &other) const
+ {
+-    return isValid() && other.isValid() && d->absolutePath == other.absolutePath();
++    return isValid() && other.isValid() && d->absolutePaths == other.absolutePaths();
+ }
+ 
+ Theme &Theme::operator=(const Theme &other)
+@@ -185,7 +186,12 @@ QString Theme::dirName() const
+ 
+ QString Theme::absolutePath() const
+ {
+-    return d->absolutePath;
++    return d->absolutePaths.first();
++}
++
++QStringList Theme::absolutePaths() const
++{
++    return d->absolutePaths;
+ }
+ 
+ QString Theme::author() const
+@@ -224,6 +230,13 @@ QString Theme::render(const QString &tem
+     return result;
+ }
+ 
++void Theme::addThemeDir(const QString& path)
++{
++    QDir dir(path);
++    dir.cdUp();
++    d->absolutePaths << dir.absolutePath();
++}
++
+ void Theme::addPluginPath(const QString &path)
+ {
+     if (!ThemePrivate::sEngine) {
+Index: grantleetheme-17.04.0/src/grantleetheme.h
+===================================================================
+--- grantleetheme-17.04.0.orig/src/grantleetheme.h
++++ grantleetheme-17.04.0/src/grantleetheme.h
+@@ -50,11 +50,14 @@ public:
+     QStringList displayExtraVariables() const;
+     QString dirName() const;
+     QString absolutePath() const;
++    QStringList absolutePaths() const;
+     QString author() const;
+     QString authorEmail() const;
+ 
+     QString render(const QString &templateName, const QVariantHash &data, const QByteArray &applicationDomain = QByteArray());
+ 
++    void addThemeDir(const QString&);
++
+     static void addPluginPath(const QString &path);
+ 
+ private:
+Index: grantleetheme-17.04.0/src/grantleethememanager.cpp
+===================================================================
+--- grantleetheme-17.04.0.orig/src/grantleethememanager.cpp
++++ grantleetheme-17.04.0/src/grantleethememanager.cpp
+@@ -142,25 +142,18 @@ public:
+ 
+         for (const QString &directory : qAsConst(themesDirectories)) {
+             QDirIterator dirIt(directory, QStringList(), QDir::AllDirs | QDir::NoDotAndDotDot);
+-            QStringList alreadyLoadedThemeName;
+             while (dirIt.hasNext()) {
+                 dirIt.next();
+                 const QString dirName = dirIt.fileName();
+                 GrantleeTheme::Theme theme = q->loadTheme(dirIt.filePath(), dirName, defaultDesktopFileName);
+                 if (theme.isValid()) {
+                     QString themeName = theme.name();
+-                    if (alreadyLoadedThemeName.contains(themeName)) {
+-                        int i = 2;
+-                        const QString originalName(theme.name());
+-                        while (alreadyLoadedThemeName.contains(themeName)) {
+-                            themeName = originalName + QStringLiteral(" (%1)").arg(i);
+-                            ++i;
+-                        }
+-                        theme.d->name = themeName;
++                    QMap<QString, GrantleeTheme::Theme>::iterator i = themes.find(dirName);
++                    if (i != themes.end()) {
++                        i.value().addThemeDir(dirIt.filePath());
++                    } else {
++                        themes.insert(dirName, theme);
+                     }
+-                    alreadyLoadedThemeName << themeName;
+-                    themes.insert(dirName, theme);
+-                    //qDebug()<<" theme.name()"<<theme.name();
+                 }
+             }
+             watch->addDir(directory);
+@@ -374,7 +367,7 @@ QString ThemeManager::pathFromThemes(con
+                 GrantleeTheme::Theme theme = loadTheme(dirIt.filePath(), dirName, defaultDesktopFileName);
+                 if (theme.isValid()) {
+                     if (dirName == themeName) {
+-                        return theme.absolutePath();
++                        return theme.absolutePaths().first();
+                     }
+                 }
+             }
diff --git a/pkgs/applications/kde/grantleetheme/grantleetheme_check_null.patch b/pkgs/applications/kde/grantleetheme/grantleetheme_check_null.patch
new file mode 100644
index 0000000000000..730d5b0fe2612
--- /dev/null
+++ b/pkgs/applications/kde/grantleetheme/grantleetheme_check_null.patch
@@ -0,0 +1,25 @@
+diff --git a/src/grantleetheme.cpp b/src/grantleetheme.cpp
+index b86fc3a..8af72f4 100644
+--- a/src/grantleetheme.cpp
++++ b/src/grantleetheme.cpp
+@@ -102,7 +102,10 @@ QString ThemePrivate::errorTemplate(const QString &reason,
+     Grantlee::Context ctx = createContext();
+     ctx.insert(QStringLiteral("error"), reason);
+     ctx.insert(QStringLiteral("templateName"), origTemplateName);
+-    ctx.insert(QStringLiteral("errorMessage"), failedTemplate->errorString());
++    const QString errorString = failedTemplate
++            ? failedTemplate->errorString()
++            : QStringLiteral("(null template)");
++    ctx.insert(QStringLiteral("errorMessage"), errorString);
+     return tpl->render(&ctx);
+ }
+ 
+@@ -208,7 +211,7 @@ QString Theme::render(const QString &templateName, const QVariantHash &data, con
+     }
+ 
+     Grantlee::Template tpl = d->loader->loadByName(templateName, ThemePrivate::sEngine);
+-    if (tpl->error()) {
++    if (!tpl || tpl->error()) {
+         return d->errorTemplate(i18n("Template parsing error"), templateName, tpl);
+     }
+ 
diff --git a/pkgs/applications/kde/grantleetheme/series b/pkgs/applications/kde/grantleetheme/series
new file mode 100644
index 0000000000000..5c38848de7134
--- /dev/null
+++ b/pkgs/applications/kde/grantleetheme/series
@@ -0,0 +1,2 @@
+grantleetheme_check_null.patch
+grantlee-merge-theme-dirs.patch
diff --git a/pkgs/applications/kde/incidenceeditor.nix b/pkgs/applications/kde/incidenceeditor.nix
new file mode 100644
index 0000000000000..8224b98253b66
--- /dev/null
+++ b/pkgs/applications/kde/incidenceeditor.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-mime, calendarsupport, eventviews, kdepim-apps-libs,
+  kdiagram, kldap, kmime, qtbase,
+}:
+
+mkDerivation {
+  name = "incidenceeditor";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-mime calendarsupport eventviews kdepim-apps-libs kdiagram
+    kldap kmime qtbase
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/k3b.nix b/pkgs/applications/kde/k3b.nix
index cfe7327ac72a1..c70c3ea877b97 100644
--- a/pkgs/applications/kde/k3b.nix
+++ b/pkgs/applications/kde/k3b.nix
@@ -15,7 +15,7 @@ mkDerivation {
     maintainers = with maintainers; [ sander phreedom ];
     platforms = platforms.linux;
   };
-  nativeBuildInputs = [ extra-cmake-modules kdoctools makeWrapper ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools makeWrapper shared_mime_info ];
   propagatedBuildInputs = [
     # qt
     qtwebkit
diff --git a/pkgs/applications/kde/kaddressbook.nix b/pkgs/applications/kde/kaddressbook.nix
new file mode 100644
index 0000000000000..b4b0450e78bf0
--- /dev/null
+++ b/pkgs/applications/kde/kaddressbook.nix
@@ -0,0 +1,22 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-search, grantlee, grantleetheme, kcmutils, kcompletion,
+  kcrash, kdbusaddons, kdepim-apps-libs, ki18n, kontactinterface, kparts,
+  kpimtextedit, kxmlgui, libkdepim, libkleo, mailcommon, pimcommon, prison,
+  qgpgme, qtbase,
+}:
+
+mkDerivation {
+  name = "kaddressbook";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-search grantlee grantleetheme kcmutils kcompletion kcrash
+    kdbusaddons kdepim-apps-libs ki18n kontactinterface kparts kpimtextedit
+    kxmlgui libkdepim libkleo mailcommon pimcommon prison qgpgme qtbase
+  ];
+}
diff --git a/pkgs/applications/kde/kalarmcal.nix b/pkgs/applications/kde/kalarmcal.nix
new file mode 100644
index 0000000000000..f2fb6f4d8bbd1
--- /dev/null
+++ b/pkgs/applications/kde/kalarmcal.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, kcalcore, kdelibs4support, kholidays, kidentitymanagement,
+  kpimtextedit,
+}:
+
+mkDerivation {
+  name = "kalarmcal";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [
+    akonadi kcalcore kdelibs4support kholidays kidentitymanagement kpimtextedit
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/kcachegrind.nix b/pkgs/applications/kde/kcachegrind.nix
index 19e01aeebe9ef..91faaef623a44 100644
--- a/pkgs/applications/kde/kcachegrind.nix
+++ b/pkgs/applications/kde/kcachegrind.nix
@@ -1,8 +1,7 @@
 {
   mkDerivation, lib,
   extra-cmake-modules, kdoctools,
-  kio, ki18n, karchive, qttools,
-  perl, python, php
+  karchive, ki18n, kio, perl, python, php, qttools,
 }:
 
 mkDerivation {
@@ -12,6 +11,5 @@ mkDerivation {
     maintainers = with lib.maintainers; [ orivej ];
   };
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
-  propagatedBuildInputs = [ kio ];
-  buildInputs = [ perl python php ki18n karchive qttools ];
+  buildInputs = [ karchive ki18n kio perl python php qttools ];
 }
diff --git a/pkgs/applications/kde/kcalc.nix b/pkgs/applications/kde/kcalc.nix
index 856da42c835a2..2d902c220afcc 100644
--- a/pkgs/applications/kde/kcalc.nix
+++ b/pkgs/applications/kde/kcalc.nix
@@ -1,7 +1,8 @@
 {
   mkDerivation, lib,
   extra-cmake-modules, kdoctools,
-  kconfig, kconfigwidgets, kguiaddons, kinit, knotifications, gmp
+  gmp, kconfig, kconfigwidgets, kguiaddons, ki18n, kinit, knotifications,
+  kxmlgui,
 }:
 
 mkDerivation {
@@ -11,8 +12,7 @@ mkDerivation {
     maintainers = [ lib.maintainers.fridh ];
   };
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
-  buildInputs = [ gmp ];
-  propagatedBuildInputs = [
-    kconfig kconfigwidgets kguiaddons kinit knotifications
+  buildInputs = [
+    gmp kconfig kconfigwidgets kguiaddons ki18n kinit knotifications kxmlgui
   ];
 }
diff --git a/pkgs/applications/kde/kcalcore.nix b/pkgs/applications/kde/kcalcore.nix
new file mode 100644
index 0000000000000..4ac9c9b925afe
--- /dev/null
+++ b/pkgs/applications/kde/kcalcore.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kdelibs4support, libical
+}:
+
+mkDerivation {
+  name = "kcalcore";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [ kdelibs4support libical ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/kcalutils.nix b/pkgs/applications/kde/kcalutils.nix
new file mode 100644
index 0000000000000..3f6821e08eaec
--- /dev/null
+++ b/pkgs/applications/kde/kcalutils.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  grantlee5, kcalcore, kconfig, kontactinterface, kcoreaddons, kdelibs4support,
+  kidentitymanagement, kpimtextedit,
+}:
+
+mkDerivation {
+  name = "kcalutils";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    grantlee5 kcalcore kconfig kontactinterface kcoreaddons kdelibs4support
+    kidentitymanagement kpimtextedit
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/kcolorchooser.nix b/pkgs/applications/kde/kcolorchooser.nix
index 186505a050c3d..45b32fbe832c6 100644
--- a/pkgs/applications/kde/kcolorchooser.nix
+++ b/pkgs/applications/kde/kcolorchooser.nix
@@ -11,6 +11,5 @@ mkDerivation {
     maintainers = [ lib.maintainers.ttuegel ];
   };
   nativeBuildInputs = [ extra-cmake-modules ];
-  buildInputs = [ ki18n ];
-  propagatedBuildInputs = [ kwidgetsaddons kxmlgui ];
+  buildInputs = [ ki18n kwidgetsaddons kxmlgui ];
 }
diff --git a/pkgs/applications/kde/kcontacts.nix b/pkgs/applications/kde/kcontacts.nix
index 96828af9d170c..12b3198a26b29 100644
--- a/pkgs/applications/kde/kcontacts.nix
+++ b/pkgs/applications/kde/kcontacts.nix
@@ -1,5 +1,5 @@
 {
-  mkDerivation, lib,
+  mkDerivation, lib, kdepimTeam,
   extra-cmake-modules,
   kcoreaddons, kconfig, kcodecs, ki18n, qtbase,
 }:
@@ -8,8 +8,9 @@ mkDerivation {
   name = "kcontacts";
   meta = {
     license = [ lib.licenses.lgpl21 ];
-    maintainers = [ lib.maintainers.ttuegel ];
+    maintainers = kdepimTeam;
   };
   nativeBuildInputs = [ extra-cmake-modules ];
   buildInputs = [ kcoreaddons kconfig kcodecs ki18n qtbase ];
+  outputs = [ "out" "dev" ];
 }
diff --git a/pkgs/applications/kde/kdav.nix b/pkgs/applications/kde/kdav.nix
new file mode 100644
index 0000000000000..800c92511de21
--- /dev/null
+++ b/pkgs/applications/kde/kdav.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kcoreaddons, kio, qtxmlpatterns,
+}:
+
+mkDerivation {
+  name = "kdav";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kcoreaddons kio qtxmlpatterns ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/kdegraphics-mobipocket.nix b/pkgs/applications/kde/kdegraphics-mobipocket.nix
index 09f761df8517a..e5f5b88ec440f 100644
--- a/pkgs/applications/kde/kdegraphics-mobipocket.nix
+++ b/pkgs/applications/kde/kdegraphics-mobipocket.nix
@@ -12,4 +12,5 @@ mkDerivation {
   };
   nativeBuildInputs = [ extra-cmake-modules ];
   buildInputs = [ kio ];
+  outputs = [ "out" "dev" ];
 }
diff --git a/pkgs/applications/kde/kdegraphics-thumbnailers.nix b/pkgs/applications/kde/kdegraphics-thumbnailers.nix
index 3302681bd8520..2e43e946d7ff0 100644
--- a/pkgs/applications/kde/kdegraphics-thumbnailers.nix
+++ b/pkgs/applications/kde/kdegraphics-thumbnailers.nix
@@ -10,5 +10,5 @@ mkDerivation {
     maintainers = [ lib.maintainers.ttuegel ];
   };
   nativeBuildInputs = [ extra-cmake-modules ];
-  propagatedBuildInputs = [ kio libkexiv2 libkdcraw ];
+  buildInputs = [ kio libkexiv2 libkdcraw ];
 }
diff --git a/pkgs/applications/kde/kdenetwork-filesharing.nix b/pkgs/applications/kde/kdenetwork-filesharing.nix
index 62176f3f3bbd1..d251eb74f274a 100644
--- a/pkgs/applications/kde/kdenetwork-filesharing.nix
+++ b/pkgs/applications/kde/kdenetwork-filesharing.nix
@@ -11,5 +11,5 @@ mkDerivation {
     maintainers = [ lib.maintainers.ttuegel ];
   };
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
-  propagatedBuildInputs = [ kcoreaddons ki18n kio kwidgetsaddons samba ];
+  buildInputs = [ kcoreaddons ki18n kio kwidgetsaddons samba ];
 }
diff --git a/pkgs/applications/kde/kdepim-apps-libs/default.nix b/pkgs/applications/kde/kdepim-apps-libs/default.nix
new file mode 100644
index 0000000000000..6189e8706db0a
--- /dev/null
+++ b/pkgs/applications/kde/kdepim-apps-libs/default.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, copyPathsToStore, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-contacts, grantlee, grantleetheme, kconfig, kconfigwidgets,
+  kcontacts, ki18n, kiconthemes, kio, libkleo, pimcommon, prison,
+}:
+
+mkDerivation {
+  name = "kdepim-apps-libs";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-contacts grantlee grantleetheme kconfig kconfigwidgets
+    kcontacts ki18n kiconthemes kio libkleo pimcommon prison
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/kdepim-apps-libs/kdepim-apps-libs-grantlee-merge-theme-dirs.patch b/pkgs/applications/kde/kdepim-apps-libs/kdepim-apps-libs-grantlee-merge-theme-dirs.patch
new file mode 100644
index 0000000000000..02c369cc4ee84
--- /dev/null
+++ b/pkgs/applications/kde/kdepim-apps-libs/kdepim-apps-libs-grantlee-merge-theme-dirs.patch
@@ -0,0 +1,62 @@
+Index: kdepim-apps-libs-17.04.0/kaddressbookgrantlee/src/formatter/grantleecontactgroupformatter.cpp
+===================================================================
+--- kdepim-apps-libs-17.04.0.orig/kaddressbookgrantlee/src/formatter/grantleecontactgroupformatter.cpp
++++ kdepim-apps-libs-17.04.0/kaddressbookgrantlee/src/formatter/grantleecontactgroupformatter.cpp
+@@ -50,9 +50,9 @@ public:
+         mTemplateLoader.clear();
+     }
+ 
+-    void changeGrantleePath(const QString &path)
++    void changeGrantleePath(const QStringList &paths)
+     {
+-        mTemplateLoader->setTemplateDirs(QStringList() << path);
++        mTemplateLoader->setTemplateDirs(paths);
+         mEngine->addTemplateLoader(mTemplateLoader);
+ 
+         mSelfcontainedTemplate = mEngine->loadByName(QStringLiteral("contactgroup.html"));
+@@ -86,12 +86,12 @@ GrantleeContactGroupFormatter::~Grantlee
+ 
+ void GrantleeContactGroupFormatter::setAbsoluteThemePath(const QString &path)
+ {
+-    d->changeGrantleePath(path);
++    d->changeGrantleePath(QStringList(path));
+ }
+ 
+ void GrantleeContactGroupFormatter::setGrantleeTheme(const GrantleeTheme::Theme &theme)
+ {
+-    d->changeGrantleePath(theme.absolutePath());
++    d->changeGrantleePath(theme.absolutePaths());
+ }
+ 
+ inline static void setHashField(QVariantHash &hash, const QString &name, const QString &value)
+Index: kdepim-apps-libs-17.04.0/kaddressbookgrantlee/src/formatter/grantleecontactformatter.cpp
+===================================================================
+--- kdepim-apps-libs-17.04.0.orig/kaddressbookgrantlee/src/formatter/grantleecontactformatter.cpp
++++ kdepim-apps-libs-17.04.0/kaddressbookgrantlee/src/formatter/grantleecontactformatter.cpp
+@@ -74,9 +74,9 @@ public:
+         mTemplateLoader.clear();
+     }
+ 
+-    void changeGrantleePath(const QString &path)
++    void changeGrantleePath(const QStringList &paths)
+     {
+-        mTemplateLoader->setTemplateDirs(QStringList() << path);
++        mTemplateLoader->setTemplateDirs(paths);
+         mEngine->addTemplateLoader(mTemplateLoader);
+ 
+         mSelfcontainedTemplate = mEngine->loadByName(QStringLiteral("contact.html"));
+@@ -112,12 +112,12 @@ GrantleeContactFormatter::~GrantleeConta
+ 
+ void GrantleeContactFormatter::setAbsoluteThemePath(const QString &path)
+ {
+-    d->changeGrantleePath(path);
++    d->changeGrantleePath(QStringList(path));
+ }
+ 
+ void GrantleeContactFormatter::setGrantleeTheme(const GrantleeTheme::Theme &theme)
+ {
+-    d->changeGrantleePath(theme.absolutePath());
++    d->changeGrantleePath(theme.absolutePaths());
+ }
+ 
+ void GrantleeContactFormatter::setForceDisableQRCode(bool b)
diff --git a/pkgs/applications/kde/kdepim-apps-libs/series b/pkgs/applications/kde/kdepim-apps-libs/series
new file mode 100644
index 0000000000000..1e8a52b55e964
--- /dev/null
+++ b/pkgs/applications/kde/kdepim-apps-libs/series
@@ -0,0 +1 @@
+kdepim-apps-libs-grantlee-merge-theme-dirs.patch
diff --git a/pkgs/applications/kde/kdepim-runtime.nix b/pkgs/applications/kde/kdepim-runtime.nix
new file mode 100644
index 0000000000000..01683a6315c1e
--- /dev/null
+++ b/pkgs/applications/kde/kdepim-runtime.nix
@@ -0,0 +1,25 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  shared_mime_info,
+  akonadi, akonadi-calendar, akonadi-contacts, akonadi-mime, akonadi-notes,
+  kalarmcal, kcalutils, kcontacts, kdav, kdelibs4support, kidentitymanagement,
+  kimap, kmailtransport, kmbox, kmime, knotifications, knotifyconfig,
+  qtwebengine,
+}:
+
+mkDerivation {
+  name = "kdepim-runtime";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools shared_mime_info ];
+  buildInputs = [
+    akonadi akonadi-calendar akonadi-contacts akonadi-mime akonadi-notes
+    kalarmcal kcalutils kcontacts kdav kdelibs4support kidentitymanagement kimap
+    kmailtransport kmbox kmime knotifications knotifyconfig qtwebengine
+  ];
+  # Attempts to build some files before dependencies have been generated
+  enableParallelBuilding = false;
+}
diff --git a/pkgs/applications/kde/kdf.nix b/pkgs/applications/kde/kdf.nix
index 333fea3df53ee..eef94fd5eb240 100644
--- a/pkgs/applications/kde/kdf.nix
+++ b/pkgs/applications/kde/kdf.nix
@@ -1,7 +1,7 @@
 {
   mkDerivation, lib,
   extra-cmake-modules, kdoctools,
-  kcmutils
+  kcmutils, ki18n, kiconthemes, kio, knotifications, kxmlgui,
 }:
 
 mkDerivation {
@@ -11,5 +11,5 @@ mkDerivation {
     maintainers = [ lib.maintainers.peterhoeg ];
   };
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
-  propagatedBuildInputs = [ kcmutils ];
+  buildInputs = [ kcmutils ki18n kiconthemes kio knotifications kxmlgui ];
 }
diff --git a/pkgs/applications/kde/kgpg.nix b/pkgs/applications/kde/kgpg.nix
index ca495a1ae2690..33813f376a549 100644
--- a/pkgs/applications/kde/kgpg.nix
+++ b/pkgs/applications/kde/kgpg.nix
@@ -1,19 +1,18 @@
 {
   mkDerivation, lib,
   extra-cmake-modules, kdoctools, ki18n, makeWrapper,
-  akonadi-contacts, gnupg1, gpgme, karchive, kcodecs, kcontacts, kcoreaddons,
+  akonadi-contacts, gnupg1, karchive, kcodecs, kcontacts, kcoreaddons,
   kcrash, kdbusaddons, kiconthemes, kjobwidgets, kio, knotifications, kservice,
-  ktextwidgets, kxmlgui, kwidgetsaddons, kwindowsystem
+  ktextwidgets, kxmlgui, kwidgetsaddons, kwindowsystem, qgpgme,
 }:
 
 mkDerivation {
   name = "kgpg";
   nativeBuildInputs = [ extra-cmake-modules kdoctools makeWrapper ];
-  buildInputs = [ gnupg1 gpgme ki18n ];
-  propagatedBuildInputs = [
-    akonadi-contacts karchive kcodecs kcontacts kcoreaddons kcrash kdbusaddons
-    kiconthemes kjobwidgets kio knotifications kservice ktextwidgets kxmlgui
-    kwidgetsaddons kwindowsystem
+  buildInputs = [
+    akonadi-contacts gnupg1 karchive kcodecs kcontacts kcoreaddons kcrash
+    kdbusaddons ki18n kiconthemes kjobwidgets kio knotifications kservice
+    ktextwidgets kxmlgui kwidgetsaddons kwindowsystem qgpgme
   ];
   postFixup = ''
     wrapProgram "$out/bin/kgpg" --prefix PATH : "${lib.makeBinPath [ gnupg1 ]}"
diff --git a/pkgs/applications/kde/khelpcenter.nix b/pkgs/applications/kde/khelpcenter.nix
index db68cec976e3e..69b629bbeb90f 100644
--- a/pkgs/applications/kde/khelpcenter.nix
+++ b/pkgs/applications/kde/khelpcenter.nix
@@ -1,16 +1,15 @@
 {
   mkDerivation,
   extra-cmake-modules, kdoctools,
-  grantlee, kconfig, kcoreaddons, kdbusaddons, ki18n, kinit, kcmutils,
-  kdelibs4support, khtml, kservice, xapian
+  grantlee, kcmutils, kconfig, kcoreaddons, kdbusaddons, kdelibs4support, ki18n,
+  kinit, khtml, kservice, xapian
 }:
 
 mkDerivation {
   name = "khelpcenter";
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
-  buildInputs = [ ki18n xapian ];
-  propagatedBuildInputs = [
-    grantlee kdelibs4support khtml kconfig kcoreaddons kdbusaddons
-    kinit kcmutils kservice
+  buildInputs = [
+    grantlee kcmutils kconfig kcoreaddons kdbusaddons kdelibs4support khtml
+    ki18n kinit kservice xapian
   ];
 }
diff --git a/pkgs/applications/kde/kholidays.nix b/pkgs/applications/kde/kholidays.nix
new file mode 100644
index 0000000000000..352bec094922c
--- /dev/null
+++ b/pkgs/applications/kde/kholidays.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  qtbase, qtdeclarative, qttools,
+}:
+
+mkDerivation {
+  name = "kholidays";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ qtbase qtdeclarative qttools ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/kidentitymanagement.nix b/pkgs/applications/kde/kidentitymanagement.nix
new file mode 100644
index 0000000000000..92fcc23877978
--- /dev/null
+++ b/pkgs/applications/kde/kidentitymanagement.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kcompletion, kcoreaddons, kemoticons, kiconthemes, kio, kpimtextedit,
+  ktextwidgets, kxmlgui
+}:
+
+mkDerivation {
+  name = "kidentitymanagement";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kcompletion kemoticons kiconthemes kio ktextwidgets kxmlgui
+  ];
+  propagatedBuildInputs = [ kcoreaddons kpimtextedit ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/kig.nix b/pkgs/applications/kde/kig.nix
index 34b328962090c..7b85890779521 100644
--- a/pkgs/applications/kde/kig.nix
+++ b/pkgs/applications/kde/kig.nix
@@ -1,8 +1,8 @@
 {
   mkDerivation, lib,
   extra-cmake-modules, kdoctools,
-  kparts, qtsvg, qtxmlpatterns, ktexteditor, boost,
-  karchive, kcrash
+  boost, karchive, kcrash, kiconthemes, kparts, ktexteditor, qtsvg,
+  qtxmlpatterns,
 }:
 
 mkDerivation {
@@ -12,9 +12,8 @@ mkDerivation {
     maintainers = with lib.maintainers; [ raskin ];
   };
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
-  buildInputs = [ boost ];
-  propagatedBuildInputs = [
-    kparts qtsvg qtxmlpatterns ktexteditor karchive kcrash
+  buildInputs = [
+    boost karchive kcrash kiconthemes kparts ktexteditor qtsvg qtxmlpatterns
   ];
 }
 
diff --git a/pkgs/applications/kde/kimap.nix b/pkgs/applications/kde/kimap.nix
new file mode 100644
index 0000000000000..9e42c5710583f
--- /dev/null
+++ b/pkgs/applications/kde/kimap.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  cyrus_sasl, kcoreaddons, ki18n, kio, kmime
+}:
+
+mkDerivation {
+  name = "kimap";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ ki18n kio ];
+  propagatedBuildInputs = [ cyrus_sasl kcoreaddons kmime ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/kio-extras.nix b/pkgs/applications/kde/kio-extras.nix
index 50709a7ddef7a..a78da6f48ca2d 100644
--- a/pkgs/applications/kde/kio-extras.nix
+++ b/pkgs/applications/kde/kio-extras.nix
@@ -13,7 +13,7 @@ mkDerivation {
     maintainers = [ lib.maintainers.ttuegel ];
   };
   nativeBuildInputs = [ extra-cmake-modules kdoctools shared_mime_info ];
-  propagatedBuildInputs = [
+  buildInputs = [
     exiv2 kactivities karchive kbookmarks kconfig kconfigwidgets kcoreaddons
     kdbusaddons kguiaddons kdnssd kiconthemes ki18n kio khtml kdelibs4support
     kpty libmtp libssh openexr openslp phonon qtsvg samba solid
diff --git a/pkgs/applications/kde/kldap.nix b/pkgs/applications/kde/kldap.nix
new file mode 100644
index 0000000000000..14a8aea5e67ae
--- /dev/null
+++ b/pkgs/applications/kde/kldap.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  cyrus_sasl, ki18n, kio, kmbox, openldap
+}:
+
+mkDerivation {
+  name = "kldap";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ ki18n kio kmbox ];
+  propagatedBuildInputs = [ cyrus_sasl openldap ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/kleopatra.nix b/pkgs/applications/kde/kleopatra.nix
new file mode 100644
index 0000000000000..a19fef9c9edb7
--- /dev/null
+++ b/pkgs/applications/kde/kleopatra.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  boost, gpgme, kcmutils, kdbusaddons, kiconthemes, kitemmodels, kmime,
+  knotifications, kwindowsystem, kxmlgui, libkleo
+}:
+
+mkDerivation {
+  name = "kleopatra";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    boost gpgme kcmutils kdbusaddons kiconthemes kitemmodels kmime
+    knotifications kwindowsystem kxmlgui libkleo
+  ];
+}
diff --git a/pkgs/applications/kde/kmail-account-wizard.nix b/pkgs/applications/kde/kmail-account-wizard.nix
new file mode 100644
index 0000000000000..9f3d5e2ea0190
--- /dev/null
+++ b/pkgs/applications/kde/kmail-account-wizard.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools, shared_mime_info,
+  akonadi, kcmutils, kcrash, kdbusaddons, kidentitymanagement, kldap,
+  kmailtransport, knewstuff, knotifications, knotifyconfig, kparts, kross, ktexteditor,
+  kwallet, libkdepim, libkleo, pimcommon, qttools,
+}:
+
+mkDerivation {
+  name = "kmail-account-wizard";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools shared_mime_info ];
+  buildInputs = [
+    akonadi kcmutils kcrash kdbusaddons kidentitymanagement kldap kmailtransport
+    knewstuff knotifications knotifyconfig kparts kross ktexteditor kwallet libkdepim
+    libkleo pimcommon qttools
+  ];
+}
diff --git a/pkgs/applications/kde/kmail.nix b/pkgs/applications/kde/kmail.nix
new file mode 100644
index 0000000000000..ec8c989277954
--- /dev/null
+++ b/pkgs/applications/kde/kmail.nix
@@ -0,0 +1,29 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi-search, kbookmarks, kcalutils, kcmutils, kcompletion, kconfig,
+  kconfigwidgets, kcoreaddons, kdelibs4support, kdepim-apps-libs,
+  kdepim-runtime, kguiaddons, ki18n, kiconthemes, kinit, kio, kldap,
+  kmail-account-wizard, kmailtransport, knotifications, knotifyconfig,
+  kontactinterface, kparts, kpty, kservice, ktextwidgets, ktnef, kwallet,
+  kwidgetsaddons, kwindowsystem, kxmlgui, libgravatar, libksieve, mailcommon,
+  messagelib, pim-sieve-editor, qtscript, qtwebengine,
+}:
+
+mkDerivation {
+  name = "kmail";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi-search kbookmarks kcalutils kcmutils kcompletion kconfig
+    kconfigwidgets kcoreaddons kdelibs4support kdepim-apps-libs kguiaddons ki18n
+    kiconthemes kinit kio kldap kmail-account-wizard kmailtransport
+    knotifications knotifyconfig kontactinterface kparts kpty kservice
+    ktextwidgets ktnef kwidgetsaddons kwindowsystem kxmlgui libgravatar
+    libksieve mailcommon messagelib pim-sieve-editor qtscript qtwebengine
+  ];
+  propagatedUserEnvPkgs = [ kdepim-runtime kwallet ];
+}
diff --git a/pkgs/applications/kde/kmailtransport.nix b/pkgs/applications/kde/kmailtransport.nix
new file mode 100644
index 0000000000000..19ce2ba94f30a
--- /dev/null
+++ b/pkgs/applications/kde/kmailtransport.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-mime, cyrus_sasl, kcmutils, ki18n, kio, kmime, kwallet,
+}:
+
+mkDerivation {
+  name = "kmailtransport";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ akonadi kcmutils ki18n kio ];
+  propagatedBuildInputs = [ akonadi-mime cyrus_sasl kmime kwallet ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/kmbox.nix b/pkgs/applications/kde/kmbox.nix
new file mode 100644
index 0000000000000..4b6b72a373442
--- /dev/null
+++ b/pkgs/applications/kde/kmbox.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kmime, qtbase,
+}:
+
+mkDerivation {
+  name = "kmbox";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kmime qtbase ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/kmime.nix b/pkgs/applications/kde/kmime.nix
index b14e0abcc3f12..b18a3f7fdc1e4 100644
--- a/pkgs/applications/kde/kmime.nix
+++ b/pkgs/applications/kde/kmime.nix
@@ -1,5 +1,5 @@
 {
-  mkDerivation, lib,
+  mkDerivation, lib, kdepimTeam,
   extra-cmake-modules, ki18n,
   kcodecs, qtbase,
 }:
@@ -8,8 +8,9 @@ mkDerivation {
   name = "kmime";
   meta = {
     license = [ lib.licenses.lgpl21 ];
-    maintainers = [ lib.maintainers.ttuegel ];
+    maintainers = kdepimTeam;
   };
   nativeBuildInputs = [ extra-cmake-modules ki18n ];
   buildInputs = [ kcodecs qtbase ];
+  outputs = [ "out" "dev" ];
 }
diff --git a/pkgs/applications/kde/kmix.nix b/pkgs/applications/kde/kmix.nix
index 058fd8178c4ac..8010c57d92783 100644
--- a/pkgs/applications/kde/kmix.nix
+++ b/pkgs/applications/kde/kmix.nix
@@ -12,12 +12,9 @@ mkDerivation {
     maintainers = [ lib.maintainers.rongcuid ];
   };
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
-  buildInputs = [ libpulseaudio alsaLib libcanberra_kde ];
-  propagatedBuildInputs = [
-    kglobalaccel kxmlgui kcoreaddons kdelibs4support
-    plasma-framework
-  ];
-  cmakeFlags = [
-    "-DKMIX_KF5_BUILD=1"
+  buildInputs = [
+    alsaLib kglobalaccel kxmlgui kcoreaddons kdelibs4support
+    libcanberra_kde libpulseaudio plasma-framework
   ];
+  cmakeFlags = [ "-DKMIX_KF5_BUILD=1" ];
 }
diff --git a/pkgs/applications/kde/kolourpaint.nix b/pkgs/applications/kde/kolourpaint.nix
index db4cb75cc35c7..4501324a87178 100644
--- a/pkgs/applications/kde/kolourpaint.nix
+++ b/pkgs/applications/kde/kolourpaint.nix
@@ -9,7 +9,7 @@
 mkDerivation {
   name = "kolourpaint";
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
-  propagatedBuildInputs = [ kdelibs4support libkexiv2 ];
+  buildInputs = [ kdelibs4support libkexiv2 ];
   meta = {
     maintainers = [ lib.maintainers.fridh ];
     license = with lib.licenses; [ gpl2 ];
diff --git a/pkgs/applications/kde/kompare.nix b/pkgs/applications/kde/kompare.nix
index cf2fa2e6a10f7..bbaad3a02f83b 100644
--- a/pkgs/applications/kde/kompare.nix
+++ b/pkgs/applications/kde/kompare.nix
@@ -1,14 +1,15 @@
 {
   mkDerivation, lib,
   extra-cmake-modules, kdoctools,
-  kparts, ktexteditor, kwidgetsaddons, libkomparediff2
+  kiconthemes, kparts, ktexteditor, kwidgetsaddons, libkomparediff2
 }:
 
 mkDerivation {
   name = "kompare";
   meta = { license = with lib.licenses; [ gpl2 ]; };
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
-  propagatedBuildInputs = [
-    kparts ktexteditor kwidgetsaddons libkomparediff2
+  buildInputs = [
+    kiconthemes kparts ktexteditor kwidgetsaddons libkomparediff2
   ];
+  outputs = [ "out" "dev" ];
 }
diff --git a/pkgs/applications/kde/konsole.nix b/pkgs/applications/kde/konsole.nix
index d2d60adda2c54..5269941fa113b 100644
--- a/pkgs/applications/kde/konsole.nix
+++ b/pkgs/applications/kde/konsole.nix
@@ -14,10 +14,9 @@ mkDerivation {
     maintainers = [ lib.maintainers.ttuegel ];
   };
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
-  buildInputs = [ ki18n ];
-  propagatedBuildInputs = [
+  buildInputs = [
     kbookmarks kcompletion kconfig kconfigwidgets kcoreaddons kdelibs4support
-    kguiaddons kiconthemes kinit kio knotifications knotifyconfig kparts kpty
+    kguiaddons ki18n kiconthemes kinit kio knotifications knotifyconfig kparts kpty
     kservice ktextwidgets kwidgetsaddons kwindowsystem kxmlgui qtscript
   ];
   propagatedUserEnvPkgs = [ (lib.getBin kinit) ];
diff --git a/pkgs/applications/kde/kontact.nix b/pkgs/applications/kde/kontact.nix
new file mode 100644
index 0000000000000..4bbee9c3ffa61
--- /dev/null
+++ b/pkgs/applications/kde/kontact.nix
@@ -0,0 +1,23 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  qtwebengine,
+  kcmutils, kcrash, kdbusaddons, kwindowsystem,
+  akonadi, grantleetheme, kdepim-apps-libs, kontactinterface, kpimtextedit,
+  mailcommon,
+}:
+
+mkDerivation {
+  name = "kontact";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    qtwebengine
+    kcmutils kcrash kdbusaddons kwindowsystem
+    akonadi grantleetheme kdepim-apps-libs kontactinterface kpimtextedit
+    mailcommon
+  ];
+}
diff --git a/pkgs/applications/kde/kontactinterface.nix b/pkgs/applications/kde/kontactinterface.nix
new file mode 100644
index 0000000000000..f2df628f30187
--- /dev/null
+++ b/pkgs/applications/kde/kontactinterface.nix
@@ -0,0 +1,17 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kiconthemes, kparts, kwindowsystem, kxmlgui
+}:
+
+mkDerivation {
+  name = "kontactinterface";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kiconthemes kparts kwindowsystem kxmlgui
+  ];
+}
diff --git a/pkgs/applications/kde/korganizer.nix b/pkgs/applications/kde/korganizer.nix
new file mode 100644
index 0000000000000..2f37a1bac0fd7
--- /dev/null
+++ b/pkgs/applications/kde/korganizer.nix
@@ -0,0 +1,29 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  qtbase, qttools,
+  phonon,
+  knewstuff,
+  akonadi-calendar, akonadi-contacts, akonadi-notes, akonadi-search,
+  calendarsupport, eventviews, incidenceeditor, kcalutils, kdepim-apps-libs,
+  kholidays, kidentitymanagement, kldap, kmailtransport, kontactinterface,
+  kpimtextedit, pimcommon,
+}:
+
+mkDerivation {
+  name = "korganizer";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [
+    qtbase qttools
+    phonon
+    knewstuff
+    akonadi-calendar akonadi-contacts akonadi-notes akonadi-search
+    calendarsupport eventviews incidenceeditor kcalutils kdepim-apps-libs
+    kholidays kidentitymanagement kldap kmailtransport kontactinterface
+    kpimtextedit pimcommon
+  ];
+}
diff --git a/pkgs/applications/kde/kpimtextedit.nix b/pkgs/applications/kde/kpimtextedit.nix
new file mode 100644
index 0000000000000..17c960d176268
--- /dev/null
+++ b/pkgs/applications/kde/kpimtextedit.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  grantlee5, kcodecs, kconfigwidgets, kemoticons, ki18n, kiconthemes, kio,
+  kdesignerplugin, ktextwidgets, sonnet, syntax-highlighting, qttools,
+}:
+
+mkDerivation {
+  name = "kpimtextedit";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    grantlee5 kcodecs kconfigwidgets kemoticons ki18n kiconthemes kio kdesignerplugin
+    sonnet syntax-highlighting qttools
+  ];
+  propagatedBuildInputs = [ ktextwidgets ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/kqtquickcharts.nix b/pkgs/applications/kde/kqtquickcharts.nix
new file mode 100644
index 0000000000000..2b3dc5313d9a8
--- /dev/null
+++ b/pkgs/applications/kde/kqtquickcharts.nix
@@ -0,0 +1,15 @@
+{
+  mkDerivation, lib,
+  extra-cmake-modules,
+  qtbase, qtdeclarative,
+}:
+
+mkDerivation {
+  name = "kqtquickcharts";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+  nativeBuildInputs = [ extra-cmake-modules ];
+  propagatedBuildInputs = [ qtbase qtdeclarative ];
+}
diff --git a/pkgs/applications/kde/ktnef.nix b/pkgs/applications/kde/ktnef.nix
new file mode 100644
index 0000000000000..b5a3834869db3
--- /dev/null
+++ b/pkgs/applications/kde/ktnef.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kcalcore, kcalutils, kcontacts, kdelibs4support
+}:
+
+mkDerivation {
+  name = "ktnef";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [
+    kcalcore kcalutils kcontacts kdelibs4support
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/libgravatar.nix b/pkgs/applications/kde/libgravatar.nix
new file mode 100644
index 0000000000000..69a1b9e99cbbf
--- /dev/null
+++ b/pkgs/applications/kde/libgravatar.nix
@@ -0,0 +1,18 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kconfig, kio, ktextwidgets, kwidgetsaddons, pimcommon
+}:
+
+mkDerivation {
+  name = "libgravatar";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [
+    kconfig kio ktextwidgets kwidgetsaddons pimcommon
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/libkdcraw.nix b/pkgs/applications/kde/libkdcraw.nix
index 383bd3b67037a..70e3cb0e19565 100644
--- a/pkgs/applications/kde/libkdcraw.nix
+++ b/pkgs/applications/kde/libkdcraw.nix
@@ -9,4 +9,5 @@ mkDerivation {
   nativeBuildInputs = [ extra-cmake-modules ];
   buildInputs = [ qtbase ];
   propagatedBuildInputs = [ libraw ];
+  outputs = [ "out" "dev" ];
 }
diff --git a/pkgs/applications/kde/libkdepim.nix b/pkgs/applications/kde/libkdepim.nix
new file mode 100644
index 0000000000000..92716e40a34f3
--- /dev/null
+++ b/pkgs/applications/kde/libkdepim.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-contacts, akonadi-search, kcmutils, kcodecs, kcompletion,
+  kconfigwidgets, kcontacts, ki18n, kiconthemes, kio, kitemviews, kjobwidgets,
+  kldap, kwallet,
+}:
+
+mkDerivation {
+  name = "libkdepim";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-contacts akonadi-search kcmutils kcodecs kcompletion
+    kconfigwidgets kcontacts ki18n kiconthemes kio kitemviews kjobwidgets kldap
+    kwallet
+  ];
+}
diff --git a/pkgs/applications/kde/libkexiv2.nix b/pkgs/applications/kde/libkexiv2.nix
index 816d4168967c7..8c8d244d6f6e6 100644
--- a/pkgs/applications/kde/libkexiv2.nix
+++ b/pkgs/applications/kde/libkexiv2.nix
@@ -9,4 +9,5 @@ mkDerivation {
   nativeBuildInputs = [ extra-cmake-modules ];
   buildInputs = [ qtbase ];
   propagatedBuildInputs = [ exiv2 ];
+  outputs = [ "out" "dev" ];
 }
diff --git a/pkgs/applications/kde/libkipi.nix b/pkgs/applications/kde/libkipi.nix
index 3a28d8c2e8c3e..c70d8407fc74f 100644
--- a/pkgs/applications/kde/libkipi.nix
+++ b/pkgs/applications/kde/libkipi.nix
@@ -7,5 +7,6 @@ mkDerivation {
     maintainers = [ lib.maintainers.ttuegel ];
   };
   nativeBuildInputs = [ extra-cmake-modules ];
-  propagatedBuildInputs = [ kconfig ki18n kservice kxmlgui ];
+  buildInputs = [ kconfig ki18n kservice kxmlgui ];
+  outputs = [ "out" "dev" ];
 }
diff --git a/pkgs/applications/kde/libkleo.nix b/pkgs/applications/kde/libkleo.nix
new file mode 100644
index 0000000000000..0958a0e605f7d
--- /dev/null
+++ b/pkgs/applications/kde/libkleo.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  boost, qgpgme, kcodecs, kcompletion, kconfig, kcoreaddons, ki18n, kitemmodels,
+  kpimtextedit, kwidgetsaddons, kwindowsystem
+}:
+
+mkDerivation {
+  name = "libkleo";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    boost kcodecs kcompletion kconfig kcoreaddons ki18n kitemmodels
+    kpimtextedit kwidgetsaddons kwindowsystem
+  ];
+  propagatedBuildInputs = [ qgpgme ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/libksieve.nix b/pkgs/applications/kde/libksieve.nix
new file mode 100644
index 0000000000000..dd33f759c3135
--- /dev/null
+++ b/pkgs/applications/kde/libksieve.nix
@@ -0,0 +1,23 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, karchive, kcompletion, kiconthemes, kidentitymanagement, kio,
+  kmailtransport, knewstuff, kwindowsystem, kxmlgui, libkdepim, pimcommon,
+  qtwebengine, syntax-highlighting,
+}:
+
+mkDerivation {
+  name = "libksieve";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  outputs = [ "out" "dev" ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi karchive kcompletion kiconthemes kidentitymanagement kio
+    kmailtransport knewstuff kwindowsystem kxmlgui libkdepim pimcommon
+    qtwebengine
+  ];
+  propagatedBuildInputs = [ syntax-highlighting ];
+}
diff --git a/pkgs/applications/kde/mailcommon.nix b/pkgs/applications/kde/mailcommon.nix
new file mode 100644
index 0000000000000..ee958d701b34e
--- /dev/null
+++ b/pkgs/applications/kde/mailcommon.nix
@@ -0,0 +1,22 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-mime, karchive, kcodecs, kcompletion, kconfigwidgets,
+  kdbusaddons, kdesignerplugin, kiconthemes, kio, kitemmodels, kldap,
+  kmailtransport, kwindowsystem, mailimporter, messagelib, phonon,
+}:
+
+mkDerivation {
+  name = "mailcommon";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-mime karchive kcodecs kcompletion kconfigwidgets kdbusaddons
+    kdesignerplugin kiconthemes kio kitemmodels kldap kmailtransport
+    kwindowsystem mailimporter messagelib phonon
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/mailimporter.nix b/pkgs/applications/kde/mailimporter.nix
new file mode 100644
index 0000000000000..f002ff0f34032
--- /dev/null
+++ b/pkgs/applications/kde/mailimporter.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-mime, karchive, kcompletion, kconfig, kcoreaddons, ki18n,
+  kmime, kxmlgui, libkdepim
+}:
+
+mkDerivation {
+  name = "mailimporter";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-mime karchive kcompletion kconfig kcoreaddons ki18n kmime
+    kxmlgui libkdepim
+  ];
+}
diff --git a/pkgs/applications/kde/mbox-importer.nix b/pkgs/applications/kde/mbox-importer.nix
new file mode 100644
index 0000000000000..aa637d440bd9d
--- /dev/null
+++ b/pkgs/applications/kde/mbox-importer.nix
@@ -0,0 +1,20 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-search, kconfig, kservice, kio, mailcommon, mailimporter, messagelib
+}:
+
+mkDerivation {
+  name = "mbox-importer";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi akonadi-search kconfig kservice kio mailcommon mailimporter messagelib
+  ];
+  preHook = ''
+    set -x
+  '';
+}
diff --git a/pkgs/applications/kde/messagelib.nix b/pkgs/applications/kde/messagelib.nix
new file mode 100644
index 0000000000000..f12158a1f71e5
--- /dev/null
+++ b/pkgs/applications/kde/messagelib.nix
@@ -0,0 +1,29 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-mime, akonadi-notes, akonadi-search, gpgme, grantlee5,
+  grantleetheme, karchive, kcodecs, kconfig, kconfigwidgets, kcontacts,
+  kdepim-apps-libs, kiconthemes, kidentitymanagement, kio, kjobwidgets, kldap,
+  kmailtransport, kmbox, kmime, kwindowsystem, libgravatar, libkdepim, libkleo,
+  pimcommon, qtwebengine, qtwebkit, syntax-highlighting
+}:
+
+mkDerivation {
+  name = "messagelib";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi-notes akonadi-search gpgme grantlee5 grantleetheme karchive kcodecs
+    kconfig kconfigwidgets kdepim-apps-libs kiconthemes kio kjobwidgets kldap
+    kmailtransport kmbox kmime kwindowsystem libgravatar libkdepim qtwebkit
+    syntax-highlighting
+  ];
+  propagatedBuildInputs = [
+    akonadi akonadi-mime kcontacts kidentitymanagement kmime libkleo pimcommon
+    qtwebengine
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/okteta.nix b/pkgs/applications/kde/okteta.nix
index 1d44bb27fa3e2..b985d7170d9ef 100644
--- a/pkgs/applications/kde/okteta.nix
+++ b/pkgs/applications/kde/okteta.nix
@@ -1,9 +1,7 @@
 {
   mkDerivation, lib,
-  extra-cmake-modules, kdoctools,
-  qtscript, kconfig, kinit, karchive,
-  kcmutils, kconfigwidgets, knewstuff, kparts, qca-qt5,
-  shared_mime_info
+  extra-cmake-modules, kdoctools, shared_mime_info,
+  kconfig, kinit, kcmutils, kconfigwidgets, knewstuff, kparts, qca-qt5, qtscript
 }:
 
 mkDerivation {
@@ -12,10 +10,8 @@ mkDerivation {
     license = with lib.licenses; [ gpl2 ];
     maintainers = with lib.maintainers; [ peterhoeg ];
   };
-  nativeBuildInputs = [ qtscript extra-cmake-modules kdoctools ];
-  buildInputs = [ shared_mime_info ];
-  propagatedBuildInputs = [
-    kconfig kinit kcmutils kconfigwidgets knewstuff kparts qca-qt5
-    karchive
+  nativeBuildInputs = [ extra-cmake-modules kdoctools shared_mime_info ];
+  buildInputs = [
+    kconfig kinit kcmutils kconfigwidgets knewstuff kparts qca-qt5 qtscript
   ];
 }
diff --git a/pkgs/applications/kde/pim-sieve-editor.nix b/pkgs/applications/kde/pim-sieve-editor.nix
new file mode 100644
index 0000000000000..c83df2e0e4988
--- /dev/null
+++ b/pkgs/applications/kde/pim-sieve-editor.nix
@@ -0,0 +1,19 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kdbusaddons, kcrash, kbookmarks, kiconthemes, kio, kpimtextedit,
+  kmailtransport, pimcommon, libksieve
+}:
+
+mkDerivation {
+  name = "pim-sieve-editor";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    kdbusaddons kcrash kbookmarks kiconthemes kio kpimtextedit kmailtransport
+    pimcommon libksieve
+  ];
+}
diff --git a/pkgs/applications/kde/pimcommon.nix b/pkgs/applications/kde/pimcommon.nix
new file mode 100644
index 0000000000000..02e9a47274b4e
--- /dev/null
+++ b/pkgs/applications/kde/pimcommon.nix
@@ -0,0 +1,26 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  akonadi, akonadi-contacts, akonadi-mime, grantlee, karchive, kcodecs,
+  kcompletion, kconfig, kconfigwidgets, kcontacts, kdbusaddons, kdesignerplugin,
+  kiconthemes, kimap, kio, kitemmodels, kjobwidgets, knewstuff, kpimtextedit,
+  kwallet, kwindowsystem, libkdepim, qtwebengine
+}:
+
+mkDerivation {
+  name = "pimcommon";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [
+    akonadi-mime grantlee karchive kcodecs kcompletion kconfigwidgets
+    kdbusaddons kiconthemes kio kitemmodels kjobwidgets knewstuff kpimtextedit
+    kwallet kwindowsystem libkdepim qtwebengine
+  ];
+  propagatedBuildInputs = [
+    akonadi akonadi-contacts kconfig kcontacts kimap
+  ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/kde/spectacle.nix b/pkgs/applications/kde/spectacle.nix
index 1be07fe6fe86f..6deec6aaabb4a 100644
--- a/pkgs/applications/kde/spectacle.nix
+++ b/pkgs/applications/kde/spectacle.nix
@@ -11,10 +11,9 @@ mkDerivation {
   name = "spectacle";
   meta = with lib; { maintainers = with maintainers; [ ttuegel ]; };
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
-  buildInputs = [ ki18n xcb-util-cursor ];
-  propagatedBuildInputs = [
-    kconfig kcoreaddons kdbusaddons kdeclarative kio knotifications
-    kscreen kwidgetsaddons kwindowsystem kxmlgui libkipi qtx11extras
+  buildInputs = [
+    kconfig kcoreaddons kdbusaddons kdeclarative ki18n kio knotifications
+    kscreen kwidgetsaddons kwindowsystem kxmlgui libkipi qtx11extras xcb-util-cursor
   ];
   propagatedUserEnvPkgs = [ kipi-plugins libkipi ];
 }
diff --git a/pkgs/applications/kde/syndication.nix b/pkgs/applications/kde/syndication.nix
new file mode 100644
index 0000000000000..42782d449d586
--- /dev/null
+++ b/pkgs/applications/kde/syndication.nix
@@ -0,0 +1,16 @@
+{
+  mkDerivation, lib, kdepimTeam,
+  extra-cmake-modules, kdoctools,
+  kio
+}:
+
+mkDerivation {
+  name = "syndication";
+  meta = {
+    license = with lib.licenses; [ gpl2 lgpl21 fdl12 ];
+    maintainers = kdepimTeam;
+  };
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  propagatedBuildInputs = [ kio ];
+  outputs = [ "out" "dev" ];
+}
diff --git a/pkgs/applications/misc/kanboard/default.nix b/pkgs/applications/misc/kanboard/default.nix
index 9c86b96f4c070..b37d12c362f5e 100644
--- a/pkgs/applications/misc/kanboard/default.nix
+++ b/pkgs/applications/misc/kanboard/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "kanboard-${version}";
-  version = "1.0.44";
+  version = "1.0.46";
 
   src = fetchzip {
     url = "https://kanboard.net/${name}.zip";
-    sha256 = "1cwk9gcwddwbbw6hz2iqmkmy90rwddy79b9vi6fj9cl03zswypgn";
+    sha256 = "00fzzijibj7x8pz8xwc601fcrzvdwz5fv45f2zzmbygl86khp82a";
   };
 
   dontBuild = true;
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index 502362514ebcc..b3971808a2b4c 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -8,10 +8,8 @@
 { name ? "", stdenv, nativeTools, noLibc ? false, nativeLibc, nativePrefix ? ""
 , cc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? stdenv.shell
 , zlib ? null, extraPackages ? [], extraBuildCommands ? ""
-, dyld ? null # TODO: should this be a setup-hook on dyld?
 , isGNU ? false, isClang ? cc.isClang or false, gnugrep ? null
-, buildPackages ? {}, hostPlatform, targetPlatform
-, runCommand ? null
+, buildPackages ? {}
 , useMacosReexportHack ? false
 }:
 
diff --git a/pkgs/desktops/gnome-3/3.22/core/libgnome-keyring/default.nix b/pkgs/desktops/gnome-3/3.22/core/libgnome-keyring/default.nix
index c6c9323c010a3..689ece9ad788d 100644
--- a/pkgs/desktops/gnome-3/3.22/core/libgnome-keyring/default.nix
+++ b/pkgs/desktops/gnome-3/3.22/core/libgnome-keyring/default.nix
@@ -8,6 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "c4c178fbb05f72acc484d22ddb0568f7532c409b0a13e06513ff54b91e947783";
   };
 
+  outputs = [ "out" "dev" ];
+
   propagatedBuildInputs = [ glib gobjectIntrospection dbus_libs libgcrypt ];
   nativeBuildInputs = [ pkgconfig intltool ];
 
diff --git a/pkgs/desktops/plasma-5/default.nix b/pkgs/desktops/plasma-5/default.nix
index e386f3a319a13..a962d3054f81c 100644
--- a/pkgs/desktops/plasma-5/default.nix
+++ b/pkgs/desktops/plasma-5/default.nix
@@ -71,6 +71,8 @@ let
       propagateBin = propagate "bin";
 
       callPackage = self.newScope {
+        inherit propagate propagateBin;
+
         mkDerivation = args:
           let
             inherit (args) name;
diff --git a/pkgs/desktops/plasma-5/libkscreen/default.nix b/pkgs/desktops/plasma-5/libkscreen/default.nix
index b81755ed75793..5625aa656ceb4 100644
--- a/pkgs/desktops/plasma-5/libkscreen/default.nix
+++ b/pkgs/desktops/plasma-5/libkscreen/default.nix
@@ -1,5 +1,5 @@
 {
-  mkDerivation, lib, copyPathsToStore,
+  mkDerivation, lib, copyPathsToStore, propagate,
   extra-cmake-modules,
   kwayland, libXrandr, qtx11extras
 }:
@@ -13,4 +13,5 @@ mkDerivation {
   preConfigure = ''
     NIX_CFLAGS_COMPILE+=" -DNIXPKGS_LIBKSCREEN_BACKENDS=\"''${!outputBin}/$qtPluginPrefix/kf5/kscreen\""
   '';
+  setupHook = propagate "out";
 }
diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix
index 8ab751166c5e3..69be69fd9183b 100644
--- a/pkgs/development/haskell-modules/configuration-common.nix
+++ b/pkgs/development/haskell-modules/configuration-common.nix
@@ -727,9 +727,8 @@ self: super: {
       '';
     });
 
-
-  # https://github.com/plow-technologies/servant-auth/issues/20
-  servant-auth = dontCheck super.servant-auth;
+  # Glob == 0.7.x
+  servant-auth = doJailbreak super.servant-auth;
 
   # https://github.com/pontarius/pontarius-xmpp/issues/105
   pontarius-xmpp = dontCheck super.pontarius-xmpp;
diff --git a/pkgs/development/libraries/aspell/aspell-with-dicts.nix b/pkgs/development/libraries/aspell/aspell-with-dicts.nix
index eb96070f4fd77..96acfe6c2a884 100644
--- a/pkgs/development/libraries/aspell/aspell-with-dicts.nix
+++ b/pkgs/development/libraries/aspell/aspell-with-dicts.nix
@@ -28,7 +28,7 @@ in runCommand "aspell-env" {
   pushd "${aspell}/bin"
   for prg in *; do
     if [ -f "$prg" ]; then
-      makeWrapper "${aspell}/bin/$prg" "$out/bin/$prg" --set ASPELL_CONF "data-dir ${dictEnv}/lib/aspell"
+      makeWrapper "${aspell}/bin/$prg" "$out/bin/$prg" --set ASPELL_CONF "dict-dir ${dictEnv}/lib/aspell"
     fi
   done
   popd
diff --git a/pkgs/development/libraries/gpgme/default.nix b/pkgs/development/libraries/gpgme/default.nix
index aae2458730236..9773ef8b896e8 100644
--- a/pkgs/development/libraries/gpgme/default.nix
+++ b/pkgs/development/libraries/gpgme/default.nix
@@ -32,9 +32,12 @@ stdenv.mkDerivation rec {
     "--enable-fixed-path=${gnupg}/bin"
   ];
 
-  # https://www.gnupg.org/documentation/manuals/gpgme/Largefile-Support-_0028LFS_0029.html
   NIX_CFLAGS_COMPILE =
-    lib.optional (system == "i686-linux") "-D_FILE_OFFSET_BITS=64";
+    # qgpgme uses Q_ASSERT which retains build inputs at runtime unless
+    # debugging is disabled
+    lib.optional (qtbase != null) "-DQT_NO_DEBUG"
+    # https://www.gnupg.org/documentation/manuals/gpgme/Largefile-Support-_0028LFS_0029.html
+    ++ lib.optional (system == "i686-linux") "-D_FILE_OFFSET_BITS=64";
 
   meta = with stdenv.lib; {
     homepage = https://gnupg.org/software/gpgme/index.html;
diff --git a/pkgs/development/libraries/grantlee/5.x.nix b/pkgs/development/libraries/grantlee/5/default.nix
index fb6af9c895d38..6fae90a8d8903 100644
--- a/pkgs/development/libraries/grantlee/5.x.nix
+++ b/pkgs/development/libraries/grantlee/5/default.nix
@@ -1,8 +1,10 @@
-{ stdenv, fetchurl, qtbase, qtscript, cmake }:
+{ mkDerivation, lib, copyPathsToStore, fetchurl, qtbase, qtscript, cmake }:
 
-stdenv.mkDerivation rec {
+mkDerivation rec {
   name = "grantlee-${version}";
   version = "5.1.0";
+  grantleeCompatVersion = "5.1";
+  grantleePluginPrefix = "lib/grantlee/${grantleeCompatVersion}";
 
   src = fetchurl {
     url = "https://github.com/steveire/grantlee/archive/v${version}.tar.gz";
@@ -13,7 +15,19 @@ stdenv.mkDerivation rec {
   buildInputs = [ qtbase qtscript ];
   nativeBuildInputs = [ cmake ];
 
-  meta = {
+  patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
+
+  outputs = [ "out" "dev" ];
+  postFixup =
+    # Disabuse CMake of the notion that libraries are in $dev
+    ''
+      sed -i $dev/lib/cmake/Grantlee5/GrantleeTargets-release.cmake \
+          -e "s|\''${_IMPORT_PREFIX}|$out|"
+    '';
+
+  setupHook = ./setup-hook.sh;
+
+  meta = with lib; {
     description = "Qt5 port of Django template system";
     longDescription = ''
       Grantlee is a plugin based String Template system written using the Qt
@@ -25,7 +39,7 @@ stdenv.mkDerivation rec {
       and the design of Django is reused in Grantlee.'';
 
     homepage = http://gitorious.org/grantlee;
-    maintainers = [ ];
+    maintainers = [ maintainers.ttuegel ];
     inherit (qtbase.meta) platforms;
   };
 }
diff --git a/pkgs/development/libraries/grantlee/5/grantlee-nix-profiles.patch b/pkgs/development/libraries/grantlee/5/grantlee-nix-profiles.patch
new file mode 100644
index 0000000000000..f6c13dbd6d558
--- /dev/null
+++ b/pkgs/development/libraries/grantlee/5/grantlee-nix-profiles.patch
@@ -0,0 +1,19 @@
+Index: grantlee-5.1.0/templates/lib/engine.cpp
+===================================================================
+--- grantlee-5.1.0.orig/templates/lib/engine.cpp
++++ grantlee-5.1.0/templates/lib/engine.cpp
+@@ -48,6 +48,14 @@ Engine::Engine(QObject *parent)
+ 
+   d_ptr->m_pluginDirs = QCoreApplication::instance()->libraryPaths();
+   d_ptr->m_pluginDirs << QString::fromLocal8Bit(GRANTLEE_PLUGIN_PATH);
++
++  // Add library paths derived from NIX_PROFILES.
++  const QByteArrayList profiles = qgetenv("NIX_PROFILES").split(' ');
++  for (const QByteArray &profile: profiles) {
++    if (!profile.isEmpty()) {
++      d_ptr->m_pluginDirs << (QFile::decodeName(profile) + QStringLiteral("/lib"));
++    }
++  }
+ }
+ 
+ Engine::~Engine()
diff --git a/pkgs/development/libraries/grantlee/5/grantlee-no-canonicalize-filepath.patch b/pkgs/development/libraries/grantlee/5/grantlee-no-canonicalize-filepath.patch
new file mode 100644
index 0000000000000..d78ef74ce3520
--- /dev/null
+++ b/pkgs/development/libraries/grantlee/5/grantlee-no-canonicalize-filepath.patch
@@ -0,0 +1,27 @@
+Index: grantlee-5.1.0/templates/lib/templateloader.cpp
+===================================================================
+--- grantlee-5.1.0.orig/templates/lib/templateloader.cpp
++++ grantlee-5.1.0/templates/lib/templateloader.cpp
+@@ -141,10 +141,6 @@ Template FileSystemTemplateLoader::loadB
+                      + QLatin1Char('/') + fileName);
+     const QFileInfo fi(file);
+ 
+-    if (file.exists()
+-        && !fi.canonicalFilePath().contains(
+-               QDir(d->m_templateDirs.at(i)).canonicalPath()))
+-      return Template();
+     ++i;
+   }
+ 
+@@ -173,11 +169,6 @@ FileSystemTemplateLoader::getMediaUri(co
+                      + QLatin1Char('/') + fileName);
+ 
+     const QFileInfo fi(file);
+-    if (!fi.canonicalFilePath().contains(
+-            QDir(d->m_templateDirs.at(i)).canonicalPath())) {
+-      ++i;
+-      continue;
+-    }
+ 
+     if (file.exists()) {
+       auto path = fi.absoluteFilePath();
diff --git a/pkgs/development/libraries/grantlee/5/series b/pkgs/development/libraries/grantlee/5/series
new file mode 100644
index 0000000000000..9c4015a1c1979
--- /dev/null
+++ b/pkgs/development/libraries/grantlee/5/series
@@ -0,0 +1,2 @@
+grantlee-nix-profiles.patch
+grantlee-no-canonicalize-filepath.patch
diff --git a/pkgs/development/libraries/grantlee/5/setup-hook.sh b/pkgs/development/libraries/grantlee/5/setup-hook.sh
new file mode 100644
index 0000000000000..d11ef5883a1fd
--- /dev/null
+++ b/pkgs/development/libraries/grantlee/5/setup-hook.sh
@@ -0,0 +1,23 @@
+grantleePluginPrefix=@grantleePluginPrefix@
+
+providesGrantleeRuntime() {
+    [ -d "$1/$grantleePluginPrefix" ]
+}
+
+_grantleeCrossEnvHook() {
+    if providesQtRuntime "$1"; then
+        propagatedBuildInputs+=" $1"
+        propagatedUserEnvPkgs+=" $1"
+    fi
+}
+crossEnvHooks+=(_grantleeCrossEnvHook)
+
+_grantleeEnvHook() {
+    if providesGrantleeRuntime "$1"; then
+        propagatedNativeBuildInputs+=" $1"
+        if [ -z "$crossConfig" ]; then
+        propagatedUserEnvPkgs+=" $1"
+        fi
+    fi
+}
+envHooks+=(_grantleeEnvHook)
diff --git a/pkgs/development/libraries/kde-frameworks/kcmutils/kcmutils-fix-plugin-path.patch b/pkgs/development/libraries/kde-frameworks/kcmutils/kcmutils-fix-plugin-path.patch
deleted file mode 100644
index e82ce7d592c87..0000000000000
--- a/pkgs/development/libraries/kde-frameworks/kcmutils/kcmutils-fix-plugin-path.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: kcmutils-5.33.0/src/kcmoduleloader.cpp
-===================================================================
---- kcmutils-5.33.0.orig/src/kcmoduleloader.cpp
-+++ kcmutils-5.33.0/src/kcmoduleloader.cpp
-@@ -93,7 +93,7 @@ KCModule *KCModuleLoader::loadModule(con
-         if (module) {
-             return module;
-         } else {
--            KPluginLoader loader(KPluginLoader::findPlugin(QLatin1String("kcms/") + mod.service()->library()));
-+            KPluginLoader loader(KPluginLoader::findPlugin(mod.service()->library()));
-             KPluginFactory* factory = loader.factory();
-             if (!factory) {
-                 qWarning() << "Error loading KCM plugin" << mod.service()->library() << loader.errorString();
diff --git a/pkgs/development/libraries/kde-frameworks/kcmutils/series b/pkgs/development/libraries/kde-frameworks/kcmutils/series
index 6fbc4ca656358..f2c22554a4554 100644
--- a/pkgs/development/libraries/kde-frameworks/kcmutils/series
+++ b/pkgs/development/libraries/kde-frameworks/kcmutils/series
@@ -1,3 +1,2 @@
 kcmutils-follow-symlinks.patch
 kcmutils-debug-module-loader.patch
-kcmutils-fix-plugin-path.patch
diff --git a/pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix b/pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix
index 91b596cc4d385..8418863eabb51 100644
--- a/pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix
+++ b/pkgs/development/libraries/kde-frameworks/kdesignerplugin.nix
@@ -11,6 +11,7 @@ mkDerivation {
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   buildInputs = [
     kcompletion kconfig kconfigwidgets kcoreaddons kiconthemes kio kitemviews
-    kplotting ktextwidgets kwidgetsaddons kxmlgui qttools sonnet
+    kplotting ktextwidgets kwidgetsaddons kxmlgui sonnet
   ];
+  propagatedBuildInputs = [ qttools ];
 }
diff --git a/pkgs/development/libraries/kde-frameworks/kwallet.nix b/pkgs/development/libraries/kde-frameworks/kwallet.nix
index ece915071ad0d..66c8301215b4b 100644
--- a/pkgs/development/libraries/kde-frameworks/kwallet.nix
+++ b/pkgs/development/libraries/kde-frameworks/kwallet.nix
@@ -16,4 +16,7 @@ mkDerivation {
   ];
   propagatedBuildInputs = [ qtbase ];
   patches = [ ./kwallet-dbus.patch ];
+  postFixup = ''
+    rm "''${!outputBin}/share/dbus-1/services/org.kde.kwalletd.service"
+  '';
 }
diff --git a/pkgs/development/libraries/kdiagram/default.nix b/pkgs/development/libraries/kdiagram/default.nix
new file mode 100644
index 0000000000000..853f02f566a0f
--- /dev/null
+++ b/pkgs/development/libraries/kdiagram/default.nix
@@ -0,0 +1,21 @@
+{
+  mkDerivation, fetchurl, lib,
+  extra-cmake-modules, qttools,
+  qtbase, qtsvg,
+}:
+
+mkDerivation {
+  name = "kdiagram-2.6.0";
+  src = fetchurl {
+    url = "https://download.kde.org/stable/kdiagram/2.6.0/src/kdiagram-2.6.0.tar.xz";
+    sha256 = "10hqk12wwgbiq4q5145s8v7v96j621ckq1yil9s4pihmgsnqsy02";
+  };
+  nativeBuildInputs = [ extra-cmake-modules qttools ];
+  propagatedBuildInputs = [ qtbase qtsvg ];
+  meta = {
+    shortDescription = "Libraries for creating business diagrams";
+    license = lib.licenses.gpl2;
+    platforms = qtbase.meta.platforms;
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/qt-5/5.6/qttools/default.nix b/pkgs/development/libraries/qt-5/5.6/qttools/default.nix
index d72d7b6c64cb5..57b1b46a9c5dc 100644
--- a/pkgs/development/libraries/qt-5/5.6/qttools/default.nix
+++ b/pkgs/development/libraries/qt-5/5.6/qttools/default.nix
@@ -6,6 +6,7 @@ qtSubmodule {
   patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
   postFixup = ''
     moveToOutput "bin/qdbus" "$out"
+    moveToOutput "bin/qdbusviewer" "$out"
     moveToOutput "bin/qtpaths" "$out"
   '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.9/qttools/default.nix b/pkgs/development/libraries/qt-5/5.9/qttools/default.nix
index 8c231271607cd..012e8bca75d36 100644
--- a/pkgs/development/libraries/qt-5/5.9/qttools/default.nix
+++ b/pkgs/development/libraries/qt-5/5.9/qttools/default.nix
@@ -10,6 +10,7 @@ qtSubmodule {
   # qmake moves all binaries to $dev in preFixup
   postFixup = ''
     moveToOutput "bin/qdbus" "$bin"
+    moveToOutput "bin/qdbusviewer" "$bin"
     moveToOutput "bin/qtpaths" "$bin"
   '';
 }
diff --git a/pkgs/development/ocaml-modules/batteries/default.nix b/pkgs/development/ocaml-modules/batteries/default.nix
index b3e657842f886..7c8dc08c4888b 100644
--- a/pkgs/development/ocaml-modules/batteries/default.nix
+++ b/pkgs/development/ocaml-modules/batteries/default.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchzip, ocaml, findlib, ocamlbuild, qtest }:
 
-let version = "2.6.0"; in
+let version = "2.7.0"; in
 
 stdenv.mkDerivation {
   name = "ocaml-batteries-${version}";
 
   src = fetchzip {
     url = "https://github.com/ocaml-batteries-team/batteries-included/archive/v${version}.tar.gz";
-    sha256 = "1nnypfxm3zkahjkzll5qn4ngpqvbxlwg9qdp8qdqvq2vl76w0672";
+    sha256 = "02rgfylz6x4y2030cclf9zwk2i8xqsydn1y9hjkja2qsk895bwfb";
   };
 
   buildInputs = [ ocaml findlib ocamlbuild qtest ];
diff --git a/pkgs/development/ocaml-modules/qtest/default.nix b/pkgs/development/ocaml-modules/qtest/default.nix
index 4d3ab0ddb4f2a..eb65384fc975a 100644
--- a/pkgs/development/ocaml-modules/qtest/default.nix
+++ b/pkgs/development/ocaml-modules/qtest/default.nix
@@ -1,22 +1,21 @@
-{ stdenv, fetchzip, ocaml, findlib, ocamlbuild, ounit }:
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild, qcheck, ounit }:
 
 if !stdenv.lib.versionAtLeast ocaml.version "4"
 then throw "qtest is not available for OCaml ${ocaml.version}"
 else
 
-let version = "2.2"; in
+let version = "2.6"; in
 
 stdenv.mkDerivation {
   name = "ocaml-qtest-${version}";
   src = fetchzip {
     url = "https://github.com/vincent-hugot/iTeML/archive/v${version}.tar.gz";
-    sha256 = "1k68z8kby1f9s5j9xbn9bz8yhk59aalffz8gj5d1y5zhyalifrlz";
+    sha256 = "1v5c1n5p8rhnisn606fs05q8764lqwgw08w66y5dm8wgmxgmsb3k";
   };
 
   buildInputs = [ ocaml findlib ocamlbuild ];
-  propagatedBuildInputs = [ ounit ];
+  propagatedBuildInputs = [ qcheck ounit ];
 
-  createFindlibDestdir = true;
   installFlags = [ "BIN=$(out)/bin" ];
   preInstall = "mkdir -p $out/bin";
 
diff --git a/pkgs/development/python-modules/pytorch/default.nix b/pkgs/development/python-modules/pytorch/default.nix
index 2088b2e0b103f..64175ea6d6db8 100644
--- a/pkgs/development/python-modules/pytorch/default.nix
+++ b/pkgs/development/python-modules/pytorch/default.nix
@@ -2,15 +2,15 @@
   git, stdenv }:
 
 buildPythonPackage rec {
-  version = "0.1.12";
+  version = "0.2.0";
   pname = "pytorch";
   name = "${pname}-${version}";
 
   src = fetchFromGitHub {
-    owner = "pytorch";
-    repo = "pytorch";
-    rev = "v${version}";
-    sha256 = "0r8mf4xya76gz83y5z3hfxh0rydkydafhipl8g7d0bfrgw961jy9";
+    owner  = "pytorch";
+    repo   = "pytorch";
+    rev    = "v${version}";
+    sha256 = "112mp3r70d8f15dhxm6k7912b5i6c2q8hv9462s808y84grr2jdm";
   };
 
   checkPhase = ''
diff --git a/pkgs/development/python-modules/torchvision/default.nix b/pkgs/development/python-modules/torchvision/default.nix
new file mode 100644
index 0000000000000..ebda3a92fc459
--- /dev/null
+++ b/pkgs/development/python-modules/torchvision/default.nix
@@ -0,0 +1,30 @@
+{ buildPythonPackage
+, fetchPypi
+, six
+, numpy
+, pillow
+, pytorch
+, lib }:
+
+buildPythonPackage rec {
+  version = "0.1.9";
+  pname   = "torchvision";
+  name    = "${pname}-${version}";
+
+  format = "wheel";
+
+  src = fetchPypi {
+    inherit pname version;
+    format = "wheel";
+    sha256 = "016rjfh9w1x4xpw15ryxsvq3j2li17nd3a7qslnf3241hc6vdcwf";
+  };
+
+  propagatedBuildInputs = [ six numpy pillow pytorch ];
+
+  meta = {
+    description = "PyTorch vision library";
+    homepage    = http://pytorch.org/;
+    license     = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ ericsagnes ];
+  };
+}
diff --git a/pkgs/development/tools/database/liquibase/default.nix b/pkgs/development/tools/database/liquibase/default.nix
index 22b83a7569e3a..11932965af491 100644
--- a/pkgs/development/tools/database/liquibase/default.nix
+++ b/pkgs/development/tools/database/liquibase/default.nix
@@ -35,6 +35,15 @@ stdenv.mkDerivation rec {
       mkdir -p $out/{bin,lib,sdk}
       mv ./* $out/
 
+      # Clean up documentation.
+      mkdir -p $out/share/doc/${name}
+      mv $out/LICENSE.txt \
+         $out/README.txt \
+         $out/share/doc/${name}
+
+      # Remove silly files.
+      rm $out/liquibase.bat $out/liquibase.spec
+
       # we provide our own script
       rm $out/liquibase
 
diff --git a/pkgs/os-specific/darwin/ios-cross/default.nix b/pkgs/os-specific/darwin/ios-cross/default.nix
index f56c8148317da..175e9738ef9e8 100644
--- a/pkgs/os-specific/darwin/ios-cross/default.nix
+++ b/pkgs/os-specific/darwin/ios-cross/default.nix
@@ -18,6 +18,11 @@
  * x86_64-apple-darwin14  | x86_64 | true
  */
 
+# Apple uses somewhat non-standard names for this. We could fall back on
+# `targetPlatform.parsed.cpu.name`, but that would be a more standard one and
+# likely to fail. Better just to require something manual.
+assert targetPlatform ? arch;
+
 let
 
   prefix = targetPlatform.config;
diff --git a/pkgs/os-specific/linux/busybox/default.nix b/pkgs/os-specific/linux/busybox/default.nix
index bab8c5502de12..ee897fc37813a 100644
--- a/pkgs/os-specific/linux/busybox/default.nix
+++ b/pkgs/os-specific/linux/busybox/default.nix
@@ -27,11 +27,14 @@ let
 in
 
 stdenv.mkDerivation rec {
-  name = "busybox-1.27.1";
+  name = "busybox-1.27.2";
 
+  # Note to whoever is updating busybox: please verify that:
+  # nix-build pkgs/stdenv/linux/make-bootstrap-tools.nix -A test
+  # still builds after the update.
   src = fetchurl {
     url = "http://busybox.net/downloads/${name}.tar.bz2";
-    sha256 = "0dprylmcignrp29g41nkwr1b30v7i5x21lwymp3b93i1zd9sr468";
+    sha256 = "1pv3vs2w4l2wnw5qb0rkbpvjjdd1fwjv87miavqq0r0ynqbfajwx";
   };
 
   hardeningDisable = [ "format" ] ++ lib.optional enableStatic [ "fortify" ];
diff --git a/pkgs/os-specific/linux/microcode/intel.nix b/pkgs/os-specific/linux/microcode/intel.nix
index facab71282613..19425f810d0a5 100644
--- a/pkgs/os-specific/linux/microcode/intel.nix
+++ b/pkgs/os-specific/linux/microcode/intel.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "microcode-intel-${version}";
-  version = "20170511";
+  version = "20170707";
 
   src = fetchurl {
-    url = "http://downloadmirror.intel.com/26798/eng/microcode-${version}.tgz";
-    sha256 = "18w1ysklvkf4l9xgnl1wvhbgr3wbdaiphv56056pafs0hwnzsxrg";
+    url = "https://downloadmirror.intel.com/26925/eng/microcode-${version}.tgz";
+    sha256 = "14zf7fbhg0msa3bm0kl139pclmkfm83s6l86x48sr9sjpxllgm2g";
   };
 
   buildInputs = [ libarchive ];
diff --git a/pkgs/servers/http/nginx/generic.nix b/pkgs/servers/http/nginx/generic.nix
index dfde204527233..c79bbc989bc83 100644
--- a/pkgs/servers/http/nginx/generic.nix
+++ b/pkgs/servers/http/nginx/generic.nix
@@ -1,6 +1,7 @@
 { stdenv, fetchurl, fetchFromGitHub, openssl, zlib, pcre, libxml2, libxslt, expat
 , gd, geoip
-, withStream ? false
+, withStream ? true
+, withMail ? false
 , modules ? []
 , hardening ? true
 , version, sha256, ...
@@ -39,10 +40,20 @@ stdenv.mkDerivation {
     "--with-http_secure_link_module"
     "--with-http_degradation_module"
     "--with-http_stub_status_module"
-    "--with-ipv6"
+    "--with-threads"
+    "--with-pcre-jit"
     # Install destination problems
     # "--with-http_perl_module"
-  ] ++ optional withStream "--with-stream"
+  ] ++ optional withStream [
+    "--with-stream"
+    "--with-stream_geoip_module"
+    "--with-stream_realip_module"
+    "--with-stream_ssl_module"
+    "--with-stream_ssl_preread_module"
+  ] ++ optional withMail [
+    "--with-mail"
+    "--with-mail_ssl_module"
+  ]
     ++ optional (gd != null) "--with-http_image_filter_module"
     ++ optional (elem stdenv.system (with platforms; linux ++ freebsd)) "--with-file-aio"
     ++ map (mod: "--add-module=${mod.src}") modules;
diff --git a/pkgs/servers/nosql/cassandra/generic.nix b/pkgs/servers/nosql/cassandra/generic.nix
index 7541f76b40e1f..848d181867edd 100644
--- a/pkgs/servers/nosql/cassandra/generic.nix
+++ b/pkgs/servers/nosql/cassandra/generic.nix
@@ -26,6 +26,21 @@ stdenv.mkDerivation rec {
   installPhase = ''
     mkdir $out
     mv * $out
+
+    # Clean up documentation.
+    mkdir -p $out/share/doc/${name}
+    mv $out/CHANGES.txt \
+       $out/LICENSE.txt \
+       $out/NEWS.txt \
+       $out/NOTICE.txt \
+       $out/javadoc \
+       $out/share/doc/${name}
+
+    if [[ -d $out/doc ]]; then
+      mv "$out/doc/"* $out/share/doc/${name}
+      rmdir $out/doc
+    fi
+
     for cmd in bin/cassandra bin/nodetool bin/sstablekeys \
       bin/sstableloader bin/sstableupgrade \
       tools/bin/cassandra-stress tools/bin/cassandra-stressd \
diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix
index d5d156137f2f2..61b7df1954347 100644
--- a/pkgs/stdenv/darwin/default.nix
+++ b/pkgs/stdenv/darwin/default.nix
@@ -78,7 +78,6 @@ in rec {
         cc = if isNull last then "/dev/null" else import ../../build-support/cc-wrapper {
           inherit shell;
           inherit (last) stdenv;
-          inherit (last.pkgs.darwin) dyld;
 
           nativeTools  = true;
           nativePrefix = bootstrapTools;
@@ -86,8 +85,6 @@ in rec {
           buildPackages = lib.optionalAttrs (last ? stdenv) {
             inherit (last) stdenv;
           };
-          hostPlatform = localSystem;
-          targetPlatform = localSystem;
           libc         = last.pkgs.darwin.Libsystem;
           isClang      = true;
           cc           = { name = "clang-9.9.9"; outPath = bootstrapTools; };
@@ -320,10 +317,7 @@ in rec {
       buildPackages = {
         inherit (prevStage) stdenv;
       };
-      hostPlatform = localSystem;
-      targetPlatform = localSystem;
       inherit (pkgs) coreutils binutils gnugrep;
-      inherit (pkgs.darwin) dyld;
       cc   = pkgs.llvmPackages.clang-unwrapped;
       libc = pkgs.darwin.Libsystem;
     };
diff --git a/pkgs/stdenv/freebsd/default.nix b/pkgs/stdenv/freebsd/default.nix
index d15afe761894e..c10d1515a3d57 100644
--- a/pkgs/stdenv/freebsd/default.nix
+++ b/pkgs/stdenv/freebsd/default.nix
@@ -40,8 +40,6 @@ let inherit (localSystem) system; in
       targetPlatform = localSystem;
       inherit config;
       initialPath = [ "/" "/usr" ];
-      hostPlatform = localSystem;
-      targetPlatform = localSystem;
       shell = "${bootstrapTools}/bin/bash";
       fetchurlBoot = null;
       cc = null;
@@ -55,13 +53,11 @@ let inherit (localSystem) system; in
 
     stdenv = import ../generic {
       name = "stdenv-freebsd-boot-0";
-      buildPlatform = localSystem;
-      hostPlatform = localSystem;
-      targetPlatform = localSystem;
       inherit config;
       initialPath = [ prevStage.bootstrapTools ];
       inherit (prevStage.stdenv)
-        hostPlatform targetPlatform shell;
+        buildPlatform hostPlatform targetPlatform
+        shell;
       fetchurlBoot = prevStage.fetchurl;
       cc = null;
     };
@@ -71,13 +67,11 @@ let inherit (localSystem) system; in
     inherit config overlays;
     stdenv = import ../generic {
       name = "stdenv-freebsd-boot-3";
-      buildPlatform = localSystem;
-      hostPlatform = localSystem;
-      targetPlatform = localSystem;
       inherit config;
 
       inherit (prevStage.stdenv)
-        hostPlatform targetPlatform initialPath shell fetchurlBoot;
+        buildPlatform hostPlatform targetPlatform
+        initialPath shell fetchurlBoot;
 
       cc = import ../../build-support/cc-wrapper {
         nativeTools  = true;
diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix
index 0167e51f2fddf..5c03d83d5f7b9 100644
--- a/pkgs/stdenv/linux/default.nix
+++ b/pkgs/stdenv/linux/default.nix
@@ -79,8 +79,6 @@ let
           buildPackages = lib.optionalAttrs (prevStage ? stdenv) {
             inherit (prevStage) stdenv;
           };
-          hostPlatform = localSystem;
-          targetPlatform = localSystem;
           cc = prevStage.gcc-unwrapped;
           isGNU = true;
           libc = prevStage.glibc;
@@ -244,8 +242,6 @@ in
         buildPackages = {
           inherit (prevStage) stdenv;
         };
-        hostPlatform = localSystem;
-        targetPlatform = localSystem;
         cc = prevStage.gcc-unwrapped;
         libc = self.glibc;
         inherit (self) stdenv binutils coreutils gnugrep;
diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix
index aaf6c523ea4a5..c736442dc0a49 100644
--- a/pkgs/stdenv/nix/default.nix
+++ b/pkgs/stdenv/nix/default.nix
@@ -13,12 +13,10 @@ bootStages ++ [
     inherit config overlays;
 
     stdenv = import ../generic rec {
-      buildPlatform = localSystem;
-      hostPlatform = localSystem;
-      targetPlatform = localSystem;
-
       inherit config;
 
+      inherit (prevStage.stdenv) buildPlatform hostPlatform targetPlatform;
+
       preHook = ''
         export NIX_ENFORCE_PURITY="''${NIX_ENFORCE_PURITY-1}"
         export NIX_ENFORCE_NO_NATIVE="''${NIX_ENFORCE_NO_NATIVE-1}"
@@ -27,8 +25,6 @@ bootStages ++ [
 
       initialPath = (import ../common-path.nix) { pkgs = prevStage; };
 
-      inherit (prevStage.stdenv) hostPlatform targetPlatform;
-
       cc = import ../../build-support/cc-wrapper {
         nativeTools = false;
         nativePrefix = stdenv.lib.optionalString hostPlatform.isSunOS "/usr";
diff --git a/pkgs/tools/misc/ostree/default.nix b/pkgs/tools/misc/ostree/default.nix
index 4655331dbc179..82abb5c9bbcf4 100644
--- a/pkgs/tools/misc/ostree/default.nix
+++ b/pkgs/tools/misc/ostree/default.nix
@@ -7,18 +7,18 @@ let
   libglnx-src = fetchFromGitHub {
     owner  = "GNOME";
     repo   = "libglnx";
-    rev    = "36396b49ad6636c9959f3dfac5e04d41584b1a92";
-    sha256 = "146flrpzybm2s12wg05rnglnfd2f2jx3xzvns2pq28kvg09bgcfn";
+    rev    = "50a0feaba03ffa5a1980d3a14487276b8f49f8a6";
+    sha256 = "1rn5jdh84y1yfpqmvidx82lkm0jr7scjzdrps57r37ksxvrk3ibs";
   };
 
   bsdiff-src = fetchFromGitHub {
     owner  = "mendsley";
     repo   = "bsdiff";
-    rev    = "1edf9f656850c0c64dae260960fabd8249ea9c60";
-    sha256 = "1h71d2h2d3anp4msvpaff445rnzdxii3id2yglqk7af9i43kdsn1";
+    rev    = "7d70d8f4ff48345bc76e314c9d98da91f78873fa";
+    sha256 = "0ai2kykj8i4bqcy3gry36r3n4ax0fldncfhksl5b293nf2fihnws";
   };
 
-  version = "2016.11";
+  version = "2017.9";
 in stdenv.mkDerivation {
   name = "ostree-${version}";
 
@@ -26,7 +26,7 @@ in stdenv.mkDerivation {
     rev    = "v${version}";
     owner  = "ostreedev";
     repo   = "ostree";
-    sha256 = "19xmg01mxdykx74r9ra11hc15qd1fjqbxdn23jrn2pcvz8dw9zgc";
+    sha256 = "1040xcw8qcs6xq8x4wg47hha3915qzb6lndb38wjyn6wzl1680q3";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/security/pinentry/default.nix b/pkgs/tools/security/pinentry/default.nix
index 67b0b8aa2e241..667831373c558 100644
--- a/pkgs/tools/security/pinentry/default.nix
+++ b/pkgs/tools/security/pinentry/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, pkgconfig
+{ fetchurl, fetchpatch, stdenv, lib, pkgconfig
 , libgpgerror, libassuan, libcap ? null, ncurses ? null, gtk2 ? null, qt4 ? null
 }:
 
@@ -23,6 +23,15 @@ stdenv.mkDerivation rec {
     substituteInPlace pinentry/pinentry-curses.c --replace ncursesw ncurses
   '';
 
+  patches = lib.optionals (gtk2 != null) [
+    (fetchpatch {
+       url = https://anonscm.debian.org/cgit/pkg-gnupg/pinentry.git/plain/debian/patches/0006-gtk2-Fix-a-problem-with-fvwm.patch;
+       sha256 = "1w3y4brqp74hy3fbfxqnqp6jf985bd6667ivy1crz50r3z9zsy09";
+  })(fetchpatch {
+       url = https://anonscm.debian.org/cgit/pkg-gnupg/pinentry.git/plain/debian/patches/0007-gtk2-When-X11-input-grabbing-fails-try-again-over-0..patch;
+       sha256 = "046jy7k0n7fj74s5w1h6sq1ljg8y77i0xwi301kv53bhsp0xsirx";
+  })];
+
   # configure cannot find moc on its own
   preConfigure = stdenv.lib.optionalString (qt4 != null) ''
     export QTDIR="${qt4}"
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 1cf76d498ccdd..5809c436dbbce 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6065,7 +6065,6 @@ with pkgs;
     nativeLibc = stdenv.cc.nativeLibc or false;
     nativePrefix = stdenv.cc.nativePrefix or "";
     cc = baseCC;
-    dyld = if stdenv.isDarwin then darwin.dyld else null;
     isGNU = baseCC.isGNU or false;
     isClang = baseCC.isClang or false;
     inherit libc extraBuildCommands;
@@ -6091,7 +6090,6 @@ with pkgs;
       nativeLibc = false;
       noLibc = (libc == null);
 
-      dyld = if stdenv.isDarwin then darwin.dyld else null;
       isGNU = cc.isGNU or false;
       isClang = cc.isClang or false;
 
@@ -9971,7 +9969,7 @@ with pkgs;
     ### KDE APPLICATIONS
 
     inherit (kdeApplications.override { libsForQt5 = self; })
-      libkdcraw libkexiv2 libkipi libkomparediff2;
+      kholidays libkdcraw libkexiv2 libkipi libkomparediff2;
 
     ### LIBRARIES
 
@@ -9981,12 +9979,14 @@ with pkgs;
 
     qgpgme = callPackage ../development/libraries/gpgme { };
 
-    grantlee = callPackage ../development/libraries/grantlee/5.x.nix { };
+    grantlee = callPackage ../development/libraries/grantlee/5 { };
 
     inherit (callPackage ../development/libraries/kirigami { })
       kirigami_1
       kirigami_2;
 
+    kdiagram = callPackage ../development/libraries/kdiagram { };
+
     kirigami = kirigami_1;
 
     libcommuni = callPackage ../development/libraries/libcommuni { };
@@ -11775,7 +11775,7 @@ with pkgs;
 
   darwin = let
     apple-source-releases = callPackage ../os-specific/darwin/apple-source-releases { };
-  in recurseIntoAttrs (apple-source-releases // rec {
+  in (apple-source-releases // rec {
     cctools = callPackage ../os-specific/darwin/cctools/port.nix {
       inherit libobjc;
       stdenv = if stdenv.isDarwin then stdenv else libcxxStdenv;
@@ -14843,8 +14843,8 @@ with pkgs;
 
   inherit (kdeApplications)
     akonadi ark dolphin ffmpegthumbs filelight gwenview kate kdenlive
-    kcachegrind kcalc kcolorchooser kcontacts kdf kgpg khelpcenter kig kmix
-    kolourpaint kompare konsole krfb kwalletmanager marble okteta okular
+    kcachegrind kcalc kcolorchooser kcontacts kdf kgpg khelpcenter kig kmail
+    kmix kolourpaint kompare konsole krfb kwalletmanager marble okteta okular
     spectacle;
 
   kdeconnect = libsForQt5.callPackage ../applications/misc/kdeconnect { };
@@ -15827,9 +15827,7 @@ with pkgs;
     rancher-compose
     rancher-compose_0_10;
 
-  renoise = callPackage ../applications/audio/renoise {
-    demo = false;
-  };
+  renoise = callPackage ../applications/audio/renoise {};
 
   rapcad = libsForQt56.callPackage ../applications/graphics/rapcad { boost = boost159; };
 
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index f23ed5a9b5cc7..b570e6d22deab 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -7241,11 +7241,11 @@ let self = _self // overrides; _self = with self; {
 
   ImageExifTool = buildPerlPackage rec {
     name = "Image-ExifTool-${version}";
-    version = "10.55";
+    version = "10.60";
 
     src = fetchurl {
       url = "http://www.sno.phy.queensu.ca/~phil/exiftool/${name}.tar.gz";
-      sha256 = "0z8zwjjfvyllnhsafhddbybywpgqv0pl1dbn1g034cs27yj836q2";
+      sha256 = "1ymcnxf8miw0c1nadpxmvzabmaz837afrwp1k5khhv0s1vv8h2fz";
     };
 
     meta = with stdenv.lib; {
@@ -7266,7 +7266,7 @@ let self = _self // overrides; _self = with self; {
 
       license = with licenses; [ gpl1Plus /* or */ artistic2 ];
 
-      maintainers = [ ];
+      maintainers = [ maintainers.kiloreux ];
       platforms = platforms.unix;
     };
   };
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 6c4bcfb041faf..713756c232e41 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -27068,6 +27068,8 @@ EOF
     };
   };
 
+  torchvision = callPackage ../development/python-modules/torchvision { };
+
   jenkinsapi = buildPythonPackage rec {
     name = "jenkinsapi-${version}";
     version = "0.2.32";