about summary refs log tree commit diff
path: root/pkgs/applications
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications')
-rw-r--r--pkgs/applications/audio/sayonara/default.nix106
-rw-r--r--pkgs/applications/audio/strawberry/default.nix91
-rw-r--r--pkgs/applications/blockchains/go-ethereum.nix4
-rw-r--r--pkgs/applications/editors/vscode/vscode.nix6
-rw-r--r--pkgs/applications/editors/vscode/vscodium.nix6
-rw-r--r--pkgs/applications/graphics/azpainter/default.nix38
-rw-r--r--pkgs/applications/misc/calibre/default.nix8
-rw-r--r--pkgs/applications/misc/dbeaver/default.nix6
-rw-r--r--pkgs/applications/misc/evtest/default.nix7
-rw-r--r--pkgs/applications/misc/josm/default.nix4
-rw-r--r--pkgs/applications/misc/michabo/default.nix53
-rw-r--r--pkgs/applications/misc/taskell/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/links2/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/vivaldi/default.nix4
-rw-r--r--pkgs/applications/networking/cluster/kubernetes/default.nix14
-rwxr-xr-xpkgs/applications/networking/cluster/kubernetes/mk-docker-opts.sh113
-rw-r--r--pkgs/applications/networking/cluster/terraform/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/discord/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/signal-desktop/default.nix7
-rw-r--r--pkgs/applications/networking/irc/weechat/default.nix6
-rw-r--r--pkgs/applications/networking/irc/weechat/scripts/default.nix12
-rw-r--r--pkgs/applications/networking/irc/weechat/scripts/wee-slack/default.nix6
-rw-r--r--pkgs/applications/networking/irc/weechat/scripts/weechat-otr/default.nix64
-rw-r--r--pkgs/applications/networking/irc/weechat/scripts/weechat-otr/libpath.patch13
-rw-r--r--pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/default.nix36
-rw-r--r--pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/libpath.patch16
-rw-r--r--pkgs/applications/networking/irc/weechat/wrapper.nix6
-rw-r--r--pkgs/applications/science/biology/xenomapper/default.nix23
-rw-r--r--pkgs/applications/video/kodi/default.nix6
-rw-r--r--pkgs/applications/video/mkvtoolnix/default.nix4
-rw-r--r--pkgs/applications/virtualization/docker-compose/default.nix11
-rw-r--r--pkgs/applications/virtualization/virtualbox/default.nix22
-rw-r--r--pkgs/applications/virtualization/virtualbox/qt-env-vars.patch14
-rw-r--r--pkgs/applications/window-managers/i3/default.nix4
-rw-r--r--pkgs/applications/window-managers/i3/lock-fancy.nix2
-rw-r--r--pkgs/applications/window-managers/icewm/default.nix44
-rw-r--r--pkgs/applications/window-managers/icewm/fix-strlcat_strlcpy.patch236
-rw-r--r--pkgs/applications/window-managers/icewm/musl.patch23
38 files changed, 595 insertions, 438 deletions
diff --git a/pkgs/applications/audio/sayonara/default.nix b/pkgs/applications/audio/sayonara/default.nix
index 7776fa0c166e..c4258174500f 100644
--- a/pkgs/applications/audio/sayonara/default.nix
+++ b/pkgs/applications/audio/sayonara/default.nix
@@ -1,46 +1,82 @@
-{ stdenv, fetchurl, cmake, qt5, zlib, taglib, pkgconfig, pcre, gst_all_1 }:
+{ mkDerivation
+, cmake
+, fetchgit
+, gst_all_1
+, lib
+, libpulseaudio
+, ninja
+, pcre
+, pkgconfig
+, qtbase
+, qttools
+, taglib
+, zlib
+}:
 
-let
-  version = "1.1.1-git1-20180828";
-in
-stdenv.mkDerivation {
+mkDerivation rec {
   pname = "sayonara-player";
-  inherit version;
+  version = "1.5.1-stable5";
 
-  src = fetchurl {
-    url = "https://sayonara-player.com/sw/sayonara-player-${version}.tar.gz";
-    sha256 = "0rvy47qvavrp03zjdrw025dmq9fq5aaii3q1qq8b94byarl0c5kn";
+  src = fetchgit {
+    url = "https://git.sayonara-player.com/sayonara.git";
+    rev = version;
+    sha256 = "13l7r3gaszrkyf4z8rdijfzxvcnilax4ki2mcm30wqk8d4g4qdzj";
   };
 
-  nativeBuildInputs = [ cmake pkgconfig ];
-  buildInputs = with qt5; with gst_all_1;
-      [ gstreamer gst-plugins-base gst-plugins-good gst-plugins-ugly
-        pcre qtbase qttools taglib zlib
-      ];
-
-  # CMake Error at src/GUI/Resources/Icons/cmake_install.cmake:49 (file):
-  #   file cannot create directory: /usr/share/icons.  Maybe need administrative
-  #   privileges.
-  # Call Stack (most recent call first):
-  #   src/GUI/Resources/cmake_install.cmake:50 (include)
-  #   src/GUI/cmake_install.cmake:50 (include)
-  #   src/cmake_install.cmake:59 (include)
-  #   cmake_install.cmake:42 (include)
+  # all this can go with version 1.5.2
   postPatch = ''
-    substituteInPlace src/GUI/Resources/Icons/CMakeLists.txt \
-      --replace "/usr/share" "$out/share"
+    # if we don't delete this, sayonara will look here instead of the provided taglib
+    rm -r src/3rdParty/taglib
+
+    for f in \
+      src/DBus/DBusNotifications.cpp \
+      src/Gui/Resources/Icons/CMakeLists.txt \
+      src/Utils/Utils.cpp \
+      test/Util/FileHelperTest.cpp \
+      ; do
+
+      substituteInPlace $f --replace /usr $out
+    done
+
+    substituteInPlace src/Components/Shutdown/Shutdown.cpp \
+      --replace /usr/bin/systemctl systemctl
   '';
 
-  # [ 65%] Building CXX object src/Components/Engine/CMakeFiles/say_comp_engine.dir/AbstractPipeline.cpp.o
-  # /tmp/nix-build-sayonara-player-1.0.0-git5-20180115.drv-0/sayonara-player/src/Components/Engine/AbstractPipeline.cpp:28:32: fatal error: gst/app/gstappsink.h: No such file or directory
-  #  #include <gst/app/gstappsink.h>
+  nativeBuildInputs = [ cmake ninja pkgconfig qttools ];
+
+  buildInputs = [
+    libpulseaudio
+    pcre
+    qtbase
+    taglib
+    zlib
+  ]
+  ++ (with gst_all_1; [
+    gstreamer
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-bad
+    gst-plugins-ugly
+  ]);
+
+  # we carry the patched taglib 1.11.1 that doesn't break ogg but sayonara just
+  # checks for the version
+  cmakeFlags = [
+    "-DWITH_SYSTEM_TAGLIB=ON"
+  ];
+
+  # gstreamer cannot otherwise be found
   NIX_CFLAGS_COMPILE = "-I${gst_all_1.gst-plugins-base.dev}/include/gstreamer-1.0";
 
-  meta = with stdenv.lib;
-    { description = "Sayonara music player";
-      homepage = https://sayonara-player.com/;
-      license = licenses.gpl3;
-      platforms = platforms.linux;
-      maintainers = [ maintainers.deepfire ];
-    };
+  postInstall = ''
+    qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0")
+  '';
+
+  meta = with lib; {
+    description = "Sayonara music player";
+    homepage = "https://sayonara-player.com/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ deepfire ];
+    platforms = platforms.unix;
+  };
 }
diff --git a/pkgs/applications/audio/strawberry/default.nix b/pkgs/applications/audio/strawberry/default.nix
new file mode 100644
index 000000000000..60da75d3c7ed
--- /dev/null
+++ b/pkgs/applications/audio/strawberry/default.nix
@@ -0,0 +1,91 @@
+{ mkDerivation
+, stdenv
+, lib
+, fetchFromGitHub
+, cmake
+, pkgconfig
+, alsaLib
+, boost
+, chromaprint
+, fftw
+, gnutls
+, libcdio
+, libmtp
+, libpthreadstubs
+, libtasn1
+, libXdmcp
+, pcre
+, protobuf
+, sqlite
+, taglib
+, libpulseaudio ? null
+, libselinux ? null
+, libsepol ? null
+, p11_kit ? null
+, utillinux ? null
+, qtbase
+, qtx11extras
+, qttools
+, withGstreamer ? true
+, gst_all_1 ? null
+, withVlc ? true
+, vlc ? null
+}:
+
+mkDerivation rec {
+  pname = "strawberry";
+  version = "0.6.3";
+
+  src = fetchFromGitHub {
+    owner = "jonaski";
+    repo = pname;
+    rev = version;
+    sha256 = "01j5jzzicy895kg9sjy46lbcm5kvf3642d3q5wwb2fyvyq1fbcv0";
+  };
+
+  buildInputs = [
+    alsaLib
+    boost
+    chromaprint
+    fftw
+    gnutls
+    libcdio
+    libmtp
+    libpthreadstubs
+    libtasn1
+    libXdmcp
+    pcre
+    protobuf
+    sqlite
+    taglib
+    qtbase
+    qtx11extras
+  ]
+  ++ lib.optionals stdenv.isLinux [
+    libpulseaudio
+    libselinux
+    libsepol
+    p11_kit
+    utillinux
+  ]
+  ++ lib.optionals withGstreamer (with gst_all_1; [
+    gstreamer
+    gst-plugins-base
+    gst-plugins-good
+  ])
+  ++ lib.optional withVlc vlc;
+
+  nativeBuildInputs = [ cmake pkgconfig qttools ];
+
+  cmakeFlags = [
+    "-DUSE_SYSTEM_TAGLIB=ON"
+  ];
+
+  meta = with lib; {
+    description = "Music player and music collection organizer";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ peterhoeg ];
+    # upstream says darwin should work but they lack maintainers as of 0.6.3
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/blockchains/go-ethereum.nix b/pkgs/applications/blockchains/go-ethereum.nix
index 740ecfa228fd..5f347fe91e9c 100644
--- a/pkgs/applications/blockchains/go-ethereum.nix
+++ b/pkgs/applications/blockchains/go-ethereum.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   pname = "go-ethereum";
-  version = "1.9.2";
+  version = "1.9.3";
 
   goPackagePath = "github.com/ethereum/go-ethereum";
 
@@ -17,7 +17,7 @@ buildGoPackage rec {
     owner = "ethereum";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0lymwylh4j63fzj9jy7mcw676a2ksgpsj9mazif1r3d2q73h9m88";
+    sha256 = "0lv6gxp34j26hqazcvyr4c7rsl1vljm6cfzkcmlapsjdgym505bg";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/editors/vscode/vscode.nix b/pkgs/applications/editors/vscode/vscode.nix
index 369ed7728909..75abb563c5a7 100644
--- a/pkgs/applications/editors/vscode/vscode.nix
+++ b/pkgs/applications/editors/vscode/vscode.nix
@@ -11,13 +11,13 @@ let
   archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
 
   sha256 = {
-    "x86_64-linux" = "1np7j6xv0bxmq7762ml0h6pib8963s2vdmyvigi0fz2iik92zv8z";
-    "x86_64-darwin" = "0f87cv1sbcvix9f7hhw0vsypp0bf627xdyh4bmh0g41k17ls8wvc";
+    "x86_64-linux" = "1iz36nhkg78346g5407df6jv4d1ydb22hhgs8hiaxql3hq5z7x3q";
+    "x86_64-darwin" = "1iijk0kx90rax39iradbbafyvd3vwnzsgvyb3s13asy42pbhhkky";
   }.${system};
 in
   callPackage ./generic.nix rec {
 
-    version = "1.37.1";
+    version = "1.38.0";
     pname = "vscode";
 
     executableName = "code" + lib.optionalString isInsiders "-insiders";
diff --git a/pkgs/applications/editors/vscode/vscodium.nix b/pkgs/applications/editors/vscode/vscodium.nix
index 49472fde464b..f06cf18e4ec8 100644
--- a/pkgs/applications/editors/vscode/vscodium.nix
+++ b/pkgs/applications/editors/vscode/vscodium.nix
@@ -11,13 +11,13 @@ let
   archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
 
   sha256 = {
-    "x86_64-linux" = "0j6188gm66bwffyg0vn3ak8242vs2vb2cw92b9wfkiml6sfg555n";
-    "x86_64-darwin" = "0iblg0hn6jdds7d2hzp0icb5yh6hhw3fd5g4iim64ibi7lpwj2cj";
+    "x86_64-linux" = "09rq5jx7aicwp3qqi5pcv6bmyyp1rm5cfa96hvy3f4grhq1fi132";
+    "x86_64-darwin" = "1y1lbb3q5myaz7jg21x5sl0in8wr46brqj9zyrg3f16zahsagzr4";
   }.${system};
 in
   callPackage ./generic.nix rec {
 
-    version = "1.37.1";
+    version = "1.38.0";
     pname = "vscodium";
 
     executableName = "codium";
diff --git a/pkgs/applications/graphics/azpainter/default.nix b/pkgs/applications/graphics/azpainter/default.nix
new file mode 100644
index 000000000000..b2060f5db31e
--- /dev/null
+++ b/pkgs/applications/graphics/azpainter/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, autoreconfHook
+, libX11, libXext, libXi
+, freetype, fontconfig
+, libpng, libjpeg
+, zlib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "azpainter";
+  version = "2.1.4";
+
+  src = fetchFromGitHub {
+    owner = "Symbian9";
+    repo = pname;
+    rev = "refs/tags/v${version}";
+    sha256 = "1hrr9lhsbjyzar3nxvli6cazr7zhyzh0p8hwpg4g9ga6njs8vi8m";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+
+  buildInputs = [
+    libX11 libXext libXi
+    freetype fontconfig
+    libpng libjpeg
+    zlib
+  ];
+
+  configureFlags = [
+    "--with-freetype-dir=${stdenv.lib.getDev freetype}/include/freetype2"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Full color painting software for illustration drawing";
+    homepage = "https://osdn.net/projects/azpainter";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/pkgs/applications/misc/calibre/default.nix b/pkgs/applications/misc/calibre/default.nix
index b4c8bbb3f311..dd85156b3ef0 100644
--- a/pkgs/applications/misc/calibre/default.nix
+++ b/pkgs/applications/misc/calibre/default.nix
@@ -6,11 +6,11 @@
 
 mkDerivation rec {
   pname = "calibre";
-  version = "3.47.0";
+  version = "3.47.1";
 
   src = fetchurl {
     url = "https://download.calibre-ebook.com/${version}/${pname}-${version}.tar.xz";
-    sha256 = "0mjj47w9pa7ihycialijrfq2qk107dcxwcwriz3b2mg4lixlawy4";
+    sha256 = "17lz6rawlv268vv8i5kj59rswsipq3c14066adaz1paw54zr62dk";
   };
 
   patches = [
@@ -105,7 +105,7 @@ mkDerivation rec {
   disallowedReferences = [ podofo.dev ];
 
   calibreDesktopItem = makeDesktopItem {
-    name = "calibre";
+    name = "calibre-gui";
     desktopName = "calibre";
     exec = "@out@/bin/calibre --detach %F";
     genericName = "E-book library management";
@@ -151,7 +151,7 @@ mkDerivation rec {
   };
 
   ebookEditDesktopItem = makeDesktopItem {
-    name = "calibre-edit-ebook";
+    name = "calibre-edit-book";
     desktopName = "Edit E-book";
     genericName = "E-book Editor";
     comment = "Edit e-books";
diff --git a/pkgs/applications/misc/dbeaver/default.nix b/pkgs/applications/misc/dbeaver/default.nix
index d8cf86461acf..2e8217012160 100644
--- a/pkgs/applications/misc/dbeaver/default.nix
+++ b/pkgs/applications/misc/dbeaver/default.nix
@@ -7,7 +7,7 @@
 
 stdenv.mkDerivation rec {
   pname = "dbeaver-ce";
-  version = "6.1.4";
+  version = "6.1.5";
 
   desktopItem = makeDesktopItem {
     name = "dbeaver";
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz";
-    sha256 = "1l4skcannbzddhm773dm3hwv3a7b3xy569gydcfczgdlgzgmlfjq";
+    sha256 = "0lkycm1152wd56i1hjq7q3sd05h51fyz99qr2n65lwi33vz2qk9m";
   };
 
   installPhase = ''
@@ -65,6 +65,6 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.asl20;
     platforms = [ "x86_64-linux" ];
-    maintainers = [ maintainers.samueldr ];
+    maintainers = [ maintainers.jojosch ];
   };
 }
diff --git a/pkgs/applications/misc/evtest/default.nix b/pkgs/applications/misc/evtest/default.nix
index 3d715a1d16bd..d6d20367b060 100644
--- a/pkgs/applications/misc/evtest/default.nix
+++ b/pkgs/applications/misc/evtest/default.nix
@@ -1,14 +1,15 @@
 { stdenv, fetchgit, autoreconfHook, pkgconfig, libxml2 }:
 
 stdenv.mkDerivation rec {
-  name = "evtest-1.33";
+  pname = "evtest";
+  version = "1.34";
 
   nativeBuildInputs = [ autoreconfHook pkgconfig ];
   buildInputs = [ libxml2 ];
 
   src = fetchgit {
-    url = "git://anongit.freedesktop.org/evtest";
-    rev = "refs/tags/evtest-1.33";
+    url = "git://anongit.freedesktop.org/${pname}";
+    rev = "refs/tags/${pname}-${version}";
     sha256 = "168gdhzj11f4nk94a6z696sm8v1njzwww69bn6wr97l17897913g";
   };
 
diff --git a/pkgs/applications/misc/josm/default.nix b/pkgs/applications/misc/josm/default.nix
index 56b28dbc8db9..4b70530987f1 100644
--- a/pkgs/applications/misc/josm/default.nix
+++ b/pkgs/applications/misc/josm/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "josm";
-  version = "15238";
+  version = "15322";
 
   src = fetchurl {
     url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar";
-    sha256 = "0zh84glb4545av0s1qnccqqp8nrnfsr7rnwgbqpwwzvc2ngk91gv";
+    sha256 = "1i6cxs6rvqjwh7yfji5701xdzpnaxcv97gsd692fjrwasnsx1f1i";
   };
 
   buildInputs = [ jdk11 makeWrapper ];
diff --git a/pkgs/applications/misc/michabo/default.nix b/pkgs/applications/misc/michabo/default.nix
new file mode 100644
index 000000000000..015a326fdc9b
--- /dev/null
+++ b/pkgs/applications/misc/michabo/default.nix
@@ -0,0 +1,53 @@
+{ lib
+, mkDerivation
+, makeDesktopItem
+, fetchFromGitLab
+, qmake
+# qt
+, qtbase
+, qtwebsockets
+}:
+
+let
+  desktopItem = makeDesktopItem {
+    type = "Application";
+    name = "Michabo";
+    desktopName = "Michabo";
+    exec = "Michabo";
+  };
+
+in mkDerivation rec {
+  pname = "michabo";
+  version = "0.1";
+
+  src = fetchFromGitLab {
+    domain = "git.pleroma.social";
+    owner = "kaniini";
+    repo = "michabo";
+    rev = "v${version}";
+    sha256 = "0pl4ymdb36r0kwlclfjjp6b1qml3fm9ql7ag5inprny5y8vcjpzn";
+  };
+
+  nativeBuildInputs = [
+    qmake
+  ];
+  buildInputs = [
+    qtbase
+    qtwebsockets
+  ];
+
+  qmakeFlags = [ "michabo.pro" "DESTDIR=${placeholder "out"}/bin" ];
+
+  postInstall = ''
+    ln -s ${desktopItem}/share $out/share
+  '';
+
+  meta = with lib; {
+    description = "A native desktop app for Pleroma and Mastodon servers";
+    homepage = "https://git.pleroma.social/kaniini/michabo";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ fgaz ];
+    platforms = platforms.all;
+  };
+}
+
diff --git a/pkgs/applications/misc/taskell/default.nix b/pkgs/applications/misc/taskell/default.nix
index 00b96f459cb7..702c3124d8ab 100644
--- a/pkgs/applications/misc/taskell/default.nix
+++ b/pkgs/applications/misc/taskell/default.nix
@@ -1,8 +1,8 @@
 { lib, haskellPackages, fetchFromGitHub }:
 
 let
-  version = "1.6.0";
-  sha256  = "1yq7lbqg759i3hyxcskx3924b7xmw6i4ny6n8yq80k4hikw2k6mf";
+  version = "1.6.1";
+  sha256  = "047gvpq52pif9sfb4qcfdiwz50x3wlnjvsnnjzypm1qlwyl2rbz1";
 
 in (haskellPackages.mkDerivation {
   pname = "taskell";
diff --git a/pkgs/applications/networking/browsers/links2/default.nix b/pkgs/applications/networking/browsers/links2/default.nix
index f2cc277f3dac..7bb443e22c33 100644
--- a/pkgs/applications/networking/browsers/links2/default.nix
+++ b/pkgs/applications/networking/browsers/links2/default.nix
@@ -8,12 +8,12 @@
 }:
 
 stdenv.mkDerivation rec {
-  version = "2.19";
+  version = "2.20";
   pname = "links2";
 
   src = fetchurl {
     url = "${meta.homepage}/download/links-${version}.tar.bz2";
-    sha256 = "02ls11c02p7xvsdjyb43rrzr850i1yly003r812z0w5vv5yqqxbh";
+    sha256 = "0bchwqa87dc8cb55spyybkqpc456pp4x2n9aw587wr7pn96cvp9v";
   };
 
   buildInputs = with stdenv.lib;
diff --git a/pkgs/applications/networking/browsers/vivaldi/default.nix b/pkgs/applications/networking/browsers/vivaldi/default.nix
index 246c5e7e60dc..6483b6d03e30 100644
--- a/pkgs/applications/networking/browsers/vivaldi/default.nix
+++ b/pkgs/applications/networking/browsers/vivaldi/default.nix
@@ -17,11 +17,11 @@ let
   vivaldiName = if isSnapshot then "vivaldi-snapshot" else "vivaldi";
 in stdenv.mkDerivation rec {
   pname = "vivaldi";
-  version = "2.7.1628.30-1";
+  version = "2.7.1628.33-1";
 
   src = fetchurl {
     url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}_amd64.deb";
-    sha256 = "1lz8adwiwll8g246s5pa0ipfraph51s9f4lcfysdrp1s3s1qhw8x";
+    sha256 = "1km5ccxqyd5xgmzm42zca670jf7wd4j7c726fhyj4wjni71zar34";
   };
 
   unpackPhase = ''
diff --git a/pkgs/applications/networking/cluster/kubernetes/default.nix b/pkgs/applications/networking/cluster/kubernetes/default.nix
index e4adabd75813..d665693439f0 100644
--- a/pkgs/applications/networking/cluster/kubernetes/default.nix
+++ b/pkgs/applications/networking/cluster/kubernetes/default.nix
@@ -15,13 +15,13 @@ with lib;
 
 stdenv.mkDerivation rec {
   pname = "kubernetes";
-  version = "1.14.3";
+  version = "1.15.3";
 
   src = fetchFromGitHub {
     owner = "kubernetes";
     repo = "kubernetes";
     rev = "v${version}";
-    sha256 = "1r31ssf8bdbz8fdsprhkc34jqhz5rcs3ixlf0mbjcbq0xr7y651z";
+    sha256 = "0vamr7m8i5svmvb0z01cngv3sffdfjj0bky2zalm7cfnapib8vz1";
   };
 
   buildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ];
@@ -29,7 +29,10 @@ stdenv.mkDerivation rec {
   outputs = ["out" "man" "pause"];
 
   postPatch = ''
-    substituteInPlace "hack/lib/golang.sh" --replace "_cgo" ""
+    # go env breaks the sandbox
+    substituteInPlace "hack/lib/golang.sh" \
+      --replace 'echo "$(go env GOHOSTOS)/$(go env GOHOSTARCH)"' 'echo "${go.GOOS}/${go.GOARCH}"'
+
     substituteInPlace "hack/update-generated-docs.sh" --replace "make" "make SHELL=${stdenv.shell}"
     # hack/update-munge-docs.sh only performs some tests on the documentation.
     # They broke building k8s; disabled for now.
@@ -52,13 +55,12 @@ stdenv.mkDerivation rec {
     cp build/pause/pause "$pause/bin/pause"
     cp -R docs/man/man1 "$man/share/man"
 
-    cp cluster/addons/addon-manager/namespace.yaml $out/share
     cp cluster/addons/addon-manager/kube-addons.sh $out/bin/kube-addons
     patchShebangs $out/bin/kube-addons
-    substituteInPlace $out/bin/kube-addons \
-      --replace /opt/namespace.yaml $out/share/namespace.yaml
     wrapProgram $out/bin/kube-addons --set "KUBECTL_BIN" "$out/bin/kubectl"
 
+    cp ${./mk-docker-opts.sh} $out/bin/mk-docker-opts.sh
+
     $out/bin/kubectl completion bash > $out/share/bash-completion/completions/kubectl
     $out/bin/kubectl completion zsh > $out/share/zsh/site-functions/_kubectl
   '';
diff --git a/pkgs/applications/networking/cluster/kubernetes/mk-docker-opts.sh b/pkgs/applications/networking/cluster/kubernetes/mk-docker-opts.sh
new file mode 100755
index 000000000000..22a459f51349
--- /dev/null
+++ b/pkgs/applications/networking/cluster/kubernetes/mk-docker-opts.sh
@@ -0,0 +1,113 @@
+#!/usr/bin/env bash
+
+# Copyright 2014 The Kubernetes Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Generate Docker daemon options based on flannel env file.
+
+# exit on any error
+set -e
+
+usage() {
+  echo "$0 [-f FLANNEL-ENV-FILE] [-d DOCKER-ENV-FILE] [-i] [-c] [-m] [-k COMBINED-KEY]
+
+Generate Docker daemon options based on flannel env file
+OPTIONS:
+    -f  Path to flannel env file. Defaults to /run/flannel/subnet.env
+    -d  Path to Docker env file to write to. Defaults to /run/docker_opts.env
+    -i  Output each Docker option as individual var. e.g. DOCKER_OPT_MTU=1500
+    -c  Output combined Docker options into DOCKER_OPTS var
+    -k  Set the combined options key to this value (default DOCKER_OPTS=)
+    -m  Do not output --ip-masq (useful for older Docker version)
+" >/dev/stderr
+  exit 1
+}
+
+flannel_env="/run/flannel/subnet.env"
+docker_env="/run/docker_opts.env"
+combined_opts_key="DOCKER_OPTS"
+indiv_opts=false
+combined_opts=false
+ipmasq=true
+val=""
+
+while getopts "f:d:icmk:" opt; do
+  case $opt in
+    f)
+      flannel_env=$OPTARG
+      ;;
+    d)
+      docker_env=$OPTARG
+      ;;
+    i)
+      indiv_opts=true
+      ;;
+    c)
+      combined_opts=true
+      ;;
+    m)
+      ipmasq=false
+      ;;
+    k)
+      combined_opts_key=$OPTARG
+      ;;
+    \?)
+      usage
+      ;;
+  esac
+done
+
+if [[ $indiv_opts = false ]] && [[ $combined_opts = false ]]; then
+  indiv_opts=true
+  combined_opts=true
+fi
+
+if [[ -f "${flannel_env}" ]]; then
+  source "${flannel_env}"
+fi
+
+if [[ -n "$FLANNEL_SUBNET" ]]; then
+  # shellcheck disable=SC2034  # Variable name referenced in OPT_LOOP below
+  DOCKER_OPT_BIP="--bip=$FLANNEL_SUBNET"
+fi
+
+if [[ -n "$FLANNEL_MTU" ]]; then
+  # shellcheck disable=SC2034  # Variable name referenced in OPT_LOOP below
+  DOCKER_OPT_MTU="--mtu=$FLANNEL_MTU"
+fi
+
+if [[ "$FLANNEL_IPMASQ" = true ]] && [[ $ipmasq = true ]]; then
+  # shellcheck disable=SC2034  # Variable name referenced in OPT_LOOP below
+  DOCKER_OPT_IPMASQ="--ip-masq=false"
+fi
+
+eval docker_opts="\$${combined_opts_key}"
+docker_opts+=" "
+
+echo -n "" >"${docker_env}"
+
+# OPT_LOOP
+for opt in $(compgen -v DOCKER_OPT_); do
+  eval val=\$"${opt}"
+
+  if [[ "$indiv_opts" = true ]]; then
+    echo "$opt=\"$val\"" >>"${docker_env}"
+  fi
+
+  docker_opts+="$val "
+done
+
+if [[ "$combined_opts" = true ]]; then
+  echo "${combined_opts_key}=\"${docker_opts}\"" >>"${docker_env}"
+fi
diff --git a/pkgs/applications/networking/cluster/terraform/default.nix b/pkgs/applications/networking/cluster/terraform/default.nix
index de1e86fa0736..9c07760355ca 100644
--- a/pkgs/applications/networking/cluster/terraform/default.nix
+++ b/pkgs/applications/networking/cluster/terraform/default.nix
@@ -97,8 +97,8 @@ in rec {
   terraform_0_11-full = terraform_0_11.full;
 
   terraform_0_12 = pluggable (generic {
-    version = "0.12.7";
-    sha256 = "09zsak1a9z2mk88vb6xs9jaxfpazhs0p7x68mw62c9mm13m8kq02";
+    version = "0.12.8";
+    sha256 = "1qlhbn6xj2nd8gwr6aiyjsb62qmj4j9jnxab006xgdr1avvl2p67";
     patches = [ ./provider-path.patch ];
     passthru = { inherit plugins; };
   });
diff --git a/pkgs/applications/networking/instant-messengers/discord/default.nix b/pkgs/applications/networking/instant-messengers/discord/default.nix
index 1d9d645b0ed5..f5883875fcdc 100644
--- a/pkgs/applications/networking/instant-messengers/discord/default.nix
+++ b/pkgs/applications/networking/instant-messengers/discord/default.nix
@@ -27,10 +27,10 @@ in {
     pname = "discord-canary";
     binaryName = "DiscordCanary";
     desktopName = "Discord Canary";
-    version = "0.0.95";
+    version = "0.0.96";
     src = fetchurl {
-      url = "https://dl-canary.discordapp.net/apps/linux/0.0.95/discord-canary-0.0.95.tar.gz";
-      sha256 = "06qhm73kc88pq0lgbi7qjy4gx9ighkmx128fdm1dpzfv62fjdasw";
+      url = "https://dl-canary.discordapp.net/apps/linux/0.0.96/discord-canary-0.0.96.tar.gz";
+      sha256 = "1fxyh9v5xglwbgr5sidn0cv70qpzcd2q240wsv87k3nawhvfcwsp";
     };
   };
 }.${branch}
diff --git a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
index c97a908d33d9..f60e87affcfd 100644
--- a/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
+++ b/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
@@ -2,7 +2,7 @@
 , gnome2, gtk3, atk, at-spi2-atk, cairo, pango, gdk-pixbuf, glib, freetype, fontconfig
 , dbus, libX11, xorg, libXi, libXcursor, libXdamage, libXrandr, libXcomposite
 , libXext, libXfixes, libXrender, libXtst, libXScrnSaver, nss, nspr, alsaLib
-, cups, expat, udev, libnotify, libuuid
+, cups, expat, udev, libnotify, libuuid, at-spi2-core
 # Unfortunately this also overwrites the UI language (not just the spell
 # checking language!):
 , hunspellDicts, spellcheckerLanguage ? null # E.g. "de_DE"
@@ -25,6 +25,7 @@ let
     alsaLib
     atk
     at-spi2-atk
+    at-spi2-core
     cairo
     cups
     dbus
@@ -57,11 +58,11 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "signal-desktop";
-  version = "1.26.2";
+  version = "1.27.1";
 
   src = fetchurl {
     url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
-    sha256 = "08qx7k82x6ybqi3lln6ixzmdz4sr8yz8vfx0y408b85wjfc7ncjk";
+    sha256 = "16fg60c5r7zcjs8ya6jk33l5kz8m21y9a1si3i0a2dvyaclz4a3q";
   };
 
   phases = [ "unpackPhase" "installPhase" ];
diff --git a/pkgs/applications/networking/irc/weechat/default.nix b/pkgs/applications/networking/irc/weechat/default.nix
index 3f8ad762218c..31f2a7e6a276 100644
--- a/pkgs/applications/networking/irc/weechat/default.nix
+++ b/pkgs/applications/networking/irc/weechat/default.nix
@@ -6,21 +6,21 @@
 , guileSupport ? true, guile
 , luaSupport ? true, lua5
 , perlSupport ? true, perl
-, pythonSupport ? true, pythonPackages
+, pythonSupport ? true, python3Packages
 , rubySupport ? true, ruby
 , tclSupport ? true, tcl
 , extraBuildInputs ? []
 }:
 
 let
-  inherit (pythonPackages) python;
+  inherit (python3Packages) python;
   plugins = [
     { name = "perl"; enabled = perlSupport; cmakeFlag = "ENABLE_PERL"; buildInputs = [ perl ]; }
     { name = "tcl"; enabled = tclSupport; cmakeFlag = "ENABLE_TCL"; buildInputs = [ tcl ]; }
     { name = "ruby"; enabled = rubySupport; cmakeFlag = "ENABLE_RUBY"; buildInputs = [ ruby ]; }
     { name = "guile"; enabled = guileSupport; cmakeFlag = "ENABLE_GUILE"; buildInputs = [ guile ]; }
     { name = "lua"; enabled = luaSupport; cmakeFlag = "ENABLE_LUA"; buildInputs = [ lua5 ]; }
-    { name = "python"; enabled = pythonSupport; cmakeFlag = "ENABLE_PYTHON"; buildInputs = [ python ]; }
+    { name = "python"; enabled = pythonSupport; cmakeFlag = "ENABLE_PYTHON3"; buildInputs = [ python ]; }
   ];
   enabledPlugins = builtins.filter (p: p.enabled) plugins;
 
diff --git a/pkgs/applications/networking/irc/weechat/scripts/default.nix b/pkgs/applications/networking/irc/weechat/scripts/default.nix
index cd9ecbf43370..81ee484f3b30 100644
--- a/pkgs/applications/networking/irc/weechat/scripts/default.nix
+++ b/pkgs/applications/networking/irc/weechat/scripts/default.nix
@@ -1,17 +1,13 @@
-{ callPackage, luaPackages, pythonPackages }:
+{ callPackage, luaPackages }:
 
 {
-  weechat-xmpp = callPackage ./weechat-xmpp {
-    inherit (pythonPackages) pydns;
-  };
-
   weechat-matrix-bridge = callPackage ./weechat-matrix-bridge {
     inherit (luaPackages) cjson luaffi;
   };
 
-  wee-slack = callPackage ./wee-slack {
-    inherit pythonPackages;
-  };
+  wee-slack = callPackage ./wee-slack { };
 
   weechat-autosort = callPackage ./weechat-autosort { };
+
+  weechat-otr = callPackage ./weechat-otr { };
 }
diff --git a/pkgs/applications/networking/irc/weechat/scripts/wee-slack/default.nix b/pkgs/applications/networking/irc/weechat/scripts/wee-slack/default.nix
index 49616671507d..6811cb164e0e 100644
--- a/pkgs/applications/networking/irc/weechat/scripts/wee-slack/default.nix
+++ b/pkgs/applications/networking/irc/weechat/scripts/wee-slack/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, substituteAll, buildEnv, fetchFromGitHub, pythonPackages }:
+{ stdenv, substituteAll, buildEnv, fetchFromGitHub, python3Packages }:
 
 stdenv.mkDerivation rec {
   pname = "wee-slack";
@@ -16,8 +16,8 @@ stdenv.mkDerivation rec {
       src = ./libpath.patch;
       env = "${buildEnv {
         name = "wee-slack-env";
-        paths = with pythonPackages; [ websocket_client six ];
-      }}/${pythonPackages.python.sitePackages}";
+        paths = with python3Packages; [ websocket_client six ];
+      }}/${python3Packages.python.sitePackages}";
     })
   ];
 
diff --git a/pkgs/applications/networking/irc/weechat/scripts/weechat-otr/default.nix b/pkgs/applications/networking/irc/weechat/scripts/weechat-otr/default.nix
new file mode 100644
index 000000000000..9682aa3169ac
--- /dev/null
+++ b/pkgs/applications/networking/irc/weechat/scripts/weechat-otr/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, substituteAll, buildEnv, fetchgit, fetchFromGitHub, python3Packages, gmp }:
+
+let
+  # pure-python-otr (potr) requires an older version of pycrypto, which is
+  # not compatible with pycryptodome. Therefore, the latest patched version
+  # of pycrypto will be fetched from the Debian project.
+  # https://security-tracker.debian.org/tracker/source-package/python-crypto
+
+  pycrypto = python3Packages.buildPythonPackage rec {
+    pname = "pycrypto";
+    version = "2.6.1-10";
+
+    src = fetchgit {
+      url = "https://salsa.debian.org/sramacher/python-crypto.git";
+      rev = "debian/${version}";
+      sha256 = "10rgq8bmjfpiqqa1g1p1hh7pxlxs7x0nawvk6zip0pd6x2vsr661";
+    };
+
+    buildInputs = [ gmp ];
+
+    preConfigure = ''
+      sed -i 's,/usr/include,/no-such-dir,' configure
+      sed -i "s!,'/usr/include/'!!" setup.py
+    '';
+  };
+
+  potr = python3Packages.potr.overridePythonAttrs (oldAttrs: {
+    propagatedBuildInputs = [ pycrypto ];
+  });
+in stdenv.mkDerivation rec {
+  pname = "weechat-otr";
+  version = "1.9.2";
+
+  src = fetchFromGitHub {
+    repo = pname;
+    owner = "mmb";
+    rev = "v${version}";
+    sha256 = "1lngv98y6883vk8z2628cl4d5y8jxy39w8245gjdvshl8g18k5s2";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./libpath.patch;
+      env = "${buildEnv {
+        name = "weechat-otr-env";
+        paths = [ potr pycrypto ];
+      }}/${python3Packages.python.sitePackages}";
+    })
+  ];
+
+  passthru.scripts = [ "weechat_otr.py" ];
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp weechat_otr.py $out/share/weechat_otr.py
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/mmb/weechat-otr";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ geistesk ];
+    description = "WeeChat script for Off-the-Record messaging";
+  };
+}
diff --git a/pkgs/applications/networking/irc/weechat/scripts/weechat-otr/libpath.patch b/pkgs/applications/networking/irc/weechat/scripts/weechat-otr/libpath.patch
new file mode 100644
index 000000000000..a7b77ed9b602
--- /dev/null
+++ b/pkgs/applications/networking/irc/weechat/scripts/weechat-otr/libpath.patch
@@ -0,0 +1,13 @@
+diff --git a/weechat_otr.py b/weechat_otr.py
+index 0ccfb35..c42bebf 100644
+--- a/weechat_otr.py
++++ b/weechat_otr.py
+@@ -41,6 +41,8 @@ import shlex
+ import shutil
+ import sys
+ 
++sys.path.append('@env@')
++
+ import potr
+ import weechat
+ 
diff --git a/pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/default.nix b/pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/default.nix
deleted file mode 100644
index dad5b9c5e02a..000000000000
--- a/pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ stdenv, fetchFromGitHub, xmpppy, pydns, substituteAll, buildEnv }:
-
-stdenv.mkDerivation {
-  name = "weechat-jabber-2017-08-30";
-
-  src = fetchFromGitHub {
-    repo = "weechat-xmpp";
-    owner = "sleduc";
-    sha256 = "0s02xs0ynld9cxxzj07al364sfglyc5ir1i82133mq0s8cpphnxv";
-    rev = "8f6c21f5a160c9318c7a2d8fd5dcac7ab2e0d843";
-  };
-
-  installPhase = ''
-    mkdir -p $out/share
-    cp jabber.py $out/share/jabber.py
-  '';
-
-  patches = [
-    (substituteAll {
-      src = ./libpath.patch;
-      env = "${buildEnv {
-        name = "weechat-xmpp-env";
-        paths = [ pydns xmpppy ];
-      }}/lib/python2.7/site-packages";
-    })
-  ];
-
-  passthru.scripts = [ "jabber.py" ];
-
-  meta = with stdenv.lib; {
-    description = "A fork of the jabber plugin for weechat";
-    homepage = "https://github.com/sleduc/weechat-xmpp";
-    maintainers = with maintainers; [ ma27 ];
-    license = licenses.gpl3Plus;
-  };
-}
diff --git a/pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/libpath.patch b/pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/libpath.patch
deleted file mode 100644
index 372c83944a27..000000000000
--- a/pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/libpath.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/jabber.py b/jabber.py
-index 27006a3..e53c2c0 100644
---- a/jabber.py
-+++ b/jabber.py
-@@ -95,6 +95,11 @@ SCRIPT_COMMAND = SCRIPT_NAME
- import re
- import warnings
- 
-+import sys
-+
-+sys.path.append('@env@')
-+
-+
- import_ok = True
- 
- try:
diff --git a/pkgs/applications/networking/irc/weechat/wrapper.nix b/pkgs/applications/networking/irc/weechat/wrapper.nix
index e6fa95488e10..5c06bb8517a2 100644
--- a/pkgs/applications/networking/irc/weechat/wrapper.nix
+++ b/pkgs/applications/networking/irc/weechat/wrapper.nix
@@ -1,5 +1,5 @@
 { lib, runCommand, writeScriptBin, buildEnv
-, pythonPackages, perlPackages, runtimeShell
+, python3Packages, perlPackages, runtimeShell
 }:
 
 weechat:
@@ -17,11 +17,11 @@ let
       in rec {
         python = (simplePlugin "python") // {
           extraEnv = ''
-            export PATH="${pythonPackages.python}/bin:$PATH"
+            export PATH="${python3Packages.python}/bin:$PATH"
           '';
           withPackages = pkgsFun: (python // {
             extraEnv = ''
-              export PYTHONHOME="${pythonPackages.python.withPackages pkgsFun}"
+              export PYTHONHOME="${python3Packages.python.withPackages pkgsFun}"
             '';
           });
         };
diff --git a/pkgs/applications/science/biology/xenomapper/default.nix b/pkgs/applications/science/biology/xenomapper/default.nix
new file mode 100644
index 000000000000..cc235c4ca996
--- /dev/null
+++ b/pkgs/applications/science/biology/xenomapper/default.nix
@@ -0,0 +1,23 @@
+{buildPythonPackage, lib, fetchFromGitHub, statistics}:
+
+buildPythonPackage rec {
+  pname = "xenomapper";
+  version = "1.0.2";
+
+  src = fetchFromGitHub {
+    owner = "genomematt";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0mnmfzlq5mhih6z8dq5bkx95vb8whjycz9mdlqwbmlqjb3gb3zhr";
+  };
+
+  propagatedBuildInputs = [ statistics ];
+
+  meta = with lib; {
+    homepage = "http://github.com/genomematt/xenomapper";
+    description = "A utility for post processing mapped reads that have been aligned to a primary genome and a secondary genome and binning reads into species specific, multimapping in each species, unmapped and unassigned bins";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = [ maintainers.jbedo ];
+  };
+}
diff --git a/pkgs/applications/video/kodi/default.nix b/pkgs/applications/video/kodi/default.nix
index 73bcdadbc594..035572099751 100644
--- a/pkgs/applications/video/kodi/default.nix
+++ b/pkgs/applications/video/kodi/default.nix
@@ -43,15 +43,15 @@ assert vdpauSupport -> libvdpau != null;
 assert useWayland -> wayland != null && wayland-protocols != null && waylandpp != null && libxkbcommon != null;
 
 let
-  kodiReleaseDate = "20190627";
-  kodiVersion = "18.3";
+  kodiReleaseDate = "20190901";
+  kodiVersion = "18.4";
   rel = "Leia";
 
   kodi_src = fetchFromGitHub {
     owner  = "xbmc";
     repo   = "xbmc";
     rev    = "${kodiVersion}-${rel}";
-    sha256 = "18fbl5hs3aqccrn0m3x7hp95wlafjav0yvrwmb5q3gj24mwf6jld";
+    sha256 = "1m0295czxabdcqyqf5m94av9d88pzhnzjvyfs1q07xqq82h313p7";
   };
 
   cmakeProto = fetchurl {
diff --git a/pkgs/applications/video/mkvtoolnix/default.nix b/pkgs/applications/video/mkvtoolnix/default.nix
index 42b40ade271f..04ddbbb8c06a 100644
--- a/pkgs/applications/video/mkvtoolnix/default.nix
+++ b/pkgs/applications/video/mkvtoolnix/default.nix
@@ -13,13 +13,13 @@ with stdenv.lib;
 
 stdenv.mkDerivation rec {
   pname = "mkvtoolnix";
-  version = "36.0.0";
+  version = "37.0.0";
 
   src = fetchFromGitLab {
     owner  = "mbunkus";
     repo   = "mkvtoolnix";
     rev    = "release-${version}";
-    sha256 = "114j9n2m6dkh7vqzyhcsjzzffadr0lzyjmh31cbl4mvvkg9j5z6r";
+    sha256 = "0r1qzvqc6xx7rmv4v4fjc70cqy832h8v0fjf6c5ljbg1c6pgkl0l";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/virtualization/docker-compose/default.nix b/pkgs/applications/virtualization/docker-compose/default.nix
index 2d983d009f1d..b1c42b099b67 100644
--- a/pkgs/applications/virtualization/docker-compose/default.nix
+++ b/pkgs/applications/virtualization/docker-compose/default.nix
@@ -5,6 +5,7 @@
 , six, texttable, websocket_client, cached-property
 , enum34, functools32, paramiko
 }:
+
 buildPythonApplication rec {
   version = "1.24.1";
   pname = "docker-compose";
@@ -32,15 +33,17 @@ buildPythonApplication rec {
   '';
 
   postInstall = ''
-    mkdir -p $out/share/bash-completion/completions/
-    cp contrib/completion/bash/docker-compose $out/share/bash-completion/completions/docker-compose
+    install -D -m 0444 contrib/completion/bash/docker-compose \
+      $out/share/bash-completion/completions/docker-compose
+
+    install -D -m 0444 contrib/completion/zsh/_docker-compose \
+      $out/share/zsh-completion/zsh/site-functions/_docker-compose
   '';
 
   meta = with stdenv.lib; {
     homepage = https://docs.docker.com/compose/;
     description = "Multi-container orchestration for Docker";
     license = licenses.asl20;
-    maintainers = with maintainers; [
-    ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix
index 20930b865370..104fc8a89bf6 100644
--- a/pkgs/applications/virtualization/virtualbox/default.nix
+++ b/pkgs/applications/virtualization/virtualbox/default.nix
@@ -1,8 +1,8 @@
 { config, stdenv, fetchurl, lib, iasl, dev86, pam, libxslt, libxml2, wrapQtAppsHook
 , libX11, xorgproto, libXext, libXcursor, libXmu, libIDL, SDL, libcap, libGL
 , libpng, glib, lvm2, libXrandr, libXinerama, libopus, qtbase, qtx11extras
-, qttools, pkgconfig, which, docbook_xsl, docbook_xml_dtd_43
-, alsaLib, curl, libvpx, nettools, dbus
+, qttools, qtsvg, qtwayland, pkgconfig, which, docbook_xsl, docbook_xml_dtd_43
+, alsaLib, curl, libvpx, nettools, dbus, substituteAll
 , makeself, perl
 , javaBindings ? true, jdk ? null # Almost doesn't affect closure size
 , pythonBindings ? false, python3 ? null
@@ -37,7 +37,7 @@ in stdenv.mkDerivation {
   nativeBuildInputs = [ pkgconfig which docbook_xsl docbook_xml_dtd_43 patchelfUnstable ]
     ++ optional (!headless) wrapQtAppsHook;
 
-  # Wrap manually because we just need to wrap one executable
+  # Wrap manually because we wrap just a small number of executables.
   dontWrapQtApps = true;
 
   buildInputs =
@@ -79,6 +79,17 @@ in stdenv.mkDerivation {
 
   patches =
      optional enableHardening ./hardened.patch
+     # When hardening is enabled, we cannot use wrapQtApp to ensure that VirtualBoxVM sees
+     # the correct environment variables needed for Qt to work, specifically QT_PLUGIN_PATH.
+     # This is because VirtualBoxVM would detect that it is wrapped that and refuse to run,
+     # and also because it would unset QT_PLUGIN_PATH for security reasons. We work around
+     # these issues by patching the code to set QT_PLUGIN_PATH to the necessary paths,
+     # after the code that unsets it. Note that qtsvg is included so that SVG icons from
+     # the user's icon theme can be loaded.
+  ++ optional (!headless && enableHardening) (substituteAll {
+      src = ./qt-env-vars.patch;
+      qtPluginPath = "${qtbase.bin}/${qtbase.qtPluginPrefix}:${qtsvg.bin}/${qtbase.qtPluginPrefix}:${qtwayland.bin}/${qtbase.qtPluginPrefix}";
+    })
   ++ [
     ./qtx11extras.patch
   ];
@@ -184,6 +195,11 @@ in stdenv.mkDerivation {
 
   preFixup = optionalString (!headless) ''
     wrapQtApp $out/bin/VirtualBox
+  ''
+  # If hardening is disabled, wrap the VirtualBoxVM binary instead of patching
+  # the source code (see postPatch).
+  + optionalString (!headless && !enableHardening) ''
+    wrapQtApp $out/libexec/virtualbox/VirtualBoxVM
   '';
 
   passthru = {
diff --git a/pkgs/applications/virtualization/virtualbox/qt-env-vars.patch b/pkgs/applications/virtualization/virtualbox/qt-env-vars.patch
new file mode 100644
index 000000000000..ad1d1fd11f87
--- /dev/null
+++ b/pkgs/applications/virtualization/virtualbox/qt-env-vars.patch
@@ -0,0 +1,14 @@
+--- a/src/VBox/HostDrivers/Support/SUPR3HardenedMain.cpp
++++ b/src/VBox/HostDrivers/Support/SUPR3HardenedMain.cpp
+@@ -2131,6 +2131,11 @@ static void supR3HardenedMainPurgeEnvironment(char **envp)
+         /** @todo Call NT API to do the same. */
+ #endif
+     }
++
++    /*
++     * NixOS hack: Set QT_PLUGIN_PATH to make Qt find plugins.
++     */
++    setenv("QT_PLUGIN_PATH", "@qtPluginPath@", /*overwrite=*/ 1);
+ }
+ 
+ 
diff --git a/pkgs/applications/window-managers/i3/default.nix b/pkgs/applications/window-managers/i3/default.nix
index 31a96ba1788b..403d9939e134 100644
--- a/pkgs/applications/window-managers/i3/default.nix
+++ b/pkgs/applications/window-managers/i3/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "i3";
-  version = "4.17";
+  version = "4.17.1";
 
   src = fetchurl {
     url = "https://i3wm.org/downloads/${pname}-${version}.tar.bz2";
-    sha256 = "1z8qmkkq9dhqmqy8sjw3rnpnmnb8v7lr456bs0qzp23bgpj17gjf";
+    sha256 = "0iazv2i2rgmakzh95pgj6iapyzn7bdpcbcd35a79mhlml4ry33qy";
   };
 
   nativeBuildInputs = [ which pkgconfig makeWrapper ];
diff --git a/pkgs/applications/window-managers/i3/lock-fancy.nix b/pkgs/applications/window-managers/i3/lock-fancy.nix
index f6d797c98e1e..4ca69ce31b44 100644
--- a/pkgs/applications/window-managers/i3/lock-fancy.nix
+++ b/pkgs/applications/window-managers/i3/lock-fancy.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
     sed -i -e 's|icon="/usr/share/i3lock-fancy/icons/lock.png"|icon="'$out'/share/i3lock-fancy/icons/lock.png"|' i3lock-fancy
     sed -i -e "s|getopt |${getopt}/bin/getopt |" i3lock-fancy
     sed -i -e "s|fc-match |${fontconfig.bin}/bin/fc-match |" i3lock-fancy
-    sed -i -e "s|shot=(import -window root)|shot=(${scrot}/bin/scrot -z)|" i3lock-fancy
+    sed -i -e "s|shot=(import -window root)|shot=(${scrot}/bin/scrot -z -o)|" i3lock-fancy
     rm Makefile
   '';
   installPhase = ''
diff --git a/pkgs/applications/window-managers/icewm/default.nix b/pkgs/applications/window-managers/icewm/default.nix
index 71a4ec3549a7..f388c2d99db2 100644
--- a/pkgs/applications/window-managers/icewm/default.nix
+++ b/pkgs/applications/window-managers/icewm/default.nix
@@ -1,36 +1,40 @@
-{ stdenv, fetchurl, cmake, gettext
+{ stdenv, fetchFromGitHub, cmake, gettext, perl, asciidoc
 , libjpeg, libtiff, libungif, libpng, imlib, expat
 , freetype, fontconfig, pkgconfig, gdk-pixbuf
 , mkfontdir, libX11, libXft, libXext, libXinerama
 , libXrandr, libICE, libSM, libXpm, libXdmcp, libxcb
-, libpthreadstubs, pcre }:
+, libpthreadstubs, pcre, libXdamage, libXcomposite, libXfixes
+, libsndfile, fribidi }:
 
-with stdenv.lib;
 stdenv.mkDerivation rec {
   pname = "icewm";
-  version = "1.4.2";
+  version = "1.6.0";
 
-  buildInputs =
-  [ cmake gettext libjpeg libtiff libungif libpng imlib expat
-    freetype fontconfig pkgconfig gdk-pixbuf mkfontdir libX11
-    libXft libXext libXinerama libXrandr libICE libSM libXpm
-    libXdmcp libxcb libpthreadstubs pcre ];
-
-  src = fetchurl {
-    url = "https://github.com/bbidulock/icewm/archive/${version}.tar.gz";
-    sha256 = "05chzjjnb4n4j05ld2gmhhr07c887qb4j9inwg9izhvml51af1bw";
+  src = fetchFromGitHub {
+    owner  = "bbidulock";
+    repo   = "icewm";
+    rev    = version;
+    sha256 = "1l8hjmb19d7ds7z21cx207h86wkjcmmmamcnalgkwh4alvbawc2p";
   };
 
-  preConfigure = ''
-    export cmakeFlags="-DPREFIX=$out -DCFGDIR=/etc/icewm"
-  '';
+  nativeBuildInputs = [ cmake pkgconfig perl asciidoc ];
 
-  patches = [ ./fix-strlcat_strlcpy.patch ] ++
-    stdenv.lib.optional stdenv.hostPlatform.isMusl ./musl.patch;
+  buildInputs = [
+    gettext libjpeg libtiff libungif libpng imlib expat
+    freetype fontconfig gdk-pixbuf mkfontdir libX11
+    libXft libXext libXinerama libXrandr libICE libSM libXpm
+    libXdmcp libxcb libpthreadstubs pcre libsndfile fribidi
+    libXdamage libXcomposite libXfixes
+  ];
+
+  cmakeFlags = [ "-DPREFIX=$out" "-DCFGDIR=/etc/icewm" ];
 
-  patchFlags = [ "-p0" ];
+  # install legacy themes
+  postInstall = ''
+    cp -r ../lib/themes/{gtk2,Natural,nice,nice2,warp3,warp4,yellowmotif} $out/share/icewm/themes/
+  '';
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "A simple, lightweight X window manager";
     longDescription = ''
       IceWM is a window manager for the X Window System. The goal of
diff --git a/pkgs/applications/window-managers/icewm/fix-strlcat_strlcpy.patch b/pkgs/applications/window-managers/icewm/fix-strlcat_strlcpy.patch
deleted file mode 100644
index 9721e125b051..000000000000
--- a/pkgs/applications/window-managers/icewm/fix-strlcat_strlcpy.patch
+++ /dev/null
@@ -1,236 +0,0 @@
---- src/apppstatus.cc	2017-07-30 10:59:06.000000000 +0200
-+++ src/apppstatus.cc	2017-08-09 09:12:54.332052762 +0200
-@@ -366,7 +366,7 @@
-             sscanf(p, "%s %s %s %s %s", val[0], val[1], val[2], val[3], val[4]);
-             for (i = 0; i < 4; i++) {
-                 if (strncmp(val[i+1], "?", 1) != 0)
--                    strlcpy(phoneNumber, val[i+1], sizeof phoneNumber);
-+                    my_strlcpy(phoneNumber, val[i+1], sizeof phoneNumber);
-             }
-         }
- 
---- src/base.h	2017-07-30 10:59:06.000000000 +0200
-+++ src/base.h	2017-08-09 09:11:13.082025484 +0200
-@@ -44,9 +44,9 @@
- /*** String Functions *********************************************************/
- 
- /* Prefer this as a safer alternative over strcpy. Return strlen(from). */
--size_t strlcpy(char *dest, const char *from, size_t dest_size);
-+size_t my_strlcpy(char *dest, const char *from, size_t dest_size);
- /* Prefer this over strcat. Return strlen(dest) + strlen(from). */
--size_t strlcat(char *dest, const char *from, size_t dest_size);
-+size_t my_strlcat(char *dest, const char *from, size_t dest_size);
- 
- char *newstr(char const *str);
- char *newstr(char const *str, int len);
---- src/gnome2.cc	2017-07-30 10:59:06.000000000 +0200
-+++ src/gnome2.cc	2017-08-09 09:11:21.819027846 +0200
-@@ -158,8 +158,8 @@
-     const int plen = strlen(fPath);
- 
-     char tmp[256];
--    strlcpy(tmp, fPath, sizeof tmp);
--    strlcat(tmp, "/.directory", sizeof tmp);
-+    my_strlcpy(tmp, fPath, sizeof tmp);
-+    my_strlcat(tmp, "/.directory", sizeof tmp);
- 
-     if (isDir && !stat(tmp, &sb)) { // looks like kde/gnome1 style
- 
-@@ -279,8 +279,8 @@
- 
-             while ((file = readdir(dir)) != NULL) {
-                 char fullpath[256];
--                strlcpy(fullpath, dirname, sizeof fullpath);
--                strlcat(fullpath, file->d_name, sizeof fullpath);
-+                my_strlcpy(fullpath, dirname, sizeof fullpath);
-+                my_strlcat(fullpath, file->d_name, sizeof fullpath);
-                 GnomeDesktopItem *ditem =
-                     gnome_desktop_item_new_from_file(fullpath,
-                                                      (GnomeDesktopItemLoadFlags)0,
---- src/icehelp.cc	2017-07-30 10:59:06.000000000 +0200
-+++ src/icehelp.cc	2017-08-09 09:11:31.490030459 +0200
-@@ -1790,8 +1790,8 @@
-     const size_t size = 9 + strlen(cfmt) + strlen(cstr) + strlen(crea);
-     char *cbuf = (char *)malloc(size);
-     snprintf(cbuf, size, cfmt, cstr);
--    strlcat(cbuf, ":\n ", size);
--    strlcat(cbuf, crea, size);
-+    my_strlcat(cbuf, ":\n ", size);
-+    my_strlcat(cbuf, crea, size);
- 
-     node *root = new node(node::div);
-     flist<node> nodes(root);
---- src/icesm.cc	2017-07-30 10:59:06.000000000 +0200
-+++ src/icesm.cc	2017-08-09 09:13:12.946057758 +0200
-@@ -28,10 +28,10 @@
-         wordexp_t w;
-         if (wordexp(trim(buf), &w, 0) != 0 || w.we_wordc == 0)
-             return false;
--        size_t len = strlcpy(buf, trim(w.we_wordv[0]), bufsiz);
-+        size_t len = my_strlcpy(buf, trim(w.we_wordv[0]), bufsiz);
-         for (size_t k = 1; k < w.we_wordc && len < bufsiz; ++k) {
--            strlcat(buf, " ", bufsiz);
--            len = strlcat(buf, trim(w.we_wordv[k]), bufsiz);
-+            my_strlcat(buf, " ", bufsiz);
-+            len = my_strlcat(buf, trim(w.we_wordv[k]), bufsiz);
-         }
-         wordfree(&w);
-         if (len >= bufsiz)
-@@ -39,7 +39,7 @@
- #else
-         char *str = trim(buf);
-         if (str > buf)
--            strlcpy(buf, str, bufsiz);
-+            my_strlcpy(buf, str, bufsiz);
- #endif
-         if (buf[0] == '#' || buf[0] == '=')
-             buf[0] = 0;
---- src/icesound.cc	2017-07-30 10:59:06.000000000 +0200
-+++ src/icesound.cc	2017-08-09 09:11:26.686029161 +0200
-@@ -145,8 +145,8 @@
-     char * findSample(int sid)  {
-         char basefname[1024];
- 
--        strlcpy(basefname, gui_events[sid].name, sizeof basefname);
--        strlcat(basefname, ".wav", sizeof basefname);
-+        my_strlcpy(basefname, gui_events[sid].name, sizeof basefname);
-+        my_strlcat(basefname, ".wav", sizeof basefname);
- 
-         return findSample(basefname);
-     }
---- src/misc.cc	2017-07-30 10:59:06.000000000 +0200
-+++ src/misc.cc	2017-08-09 09:13:39.372064834 +0200
-@@ -448,7 +448,7 @@
- #endif
- 
- /* Prefer this as a safer alternative over strcpy. Return strlen(from). */
--size_t strlcpy(char *dest, const char *from, size_t dest_size)
-+size_t my_strlcpy(char *dest, const char *from, size_t dest_size)
- {
-     const char *in = from;
-     if (dest_size > 0) {
-@@ -463,12 +463,12 @@
- }
- 
- /* Prefer this over strcat. Return strlen(dest) + strlen(from). */
--size_t strlcat(char *dest, const char *from, size_t dest_size)
-+size_t my_strlcat(char *dest, const char *from, size_t dest_size)
- {
-     char *to = dest;
-     char *const stop = to + dest_size - 1;
-     while (to < stop && *to) ++to;
--    return to - dest + strlcpy(to, from, dest_size - (to - dest));
-+    return to - dest + my_strlcpy(to, from, dest_size - (to - dest));
- }
- 
- char *newstr(char const *str) {
---- src/strtest.cc	2017-07-30 10:59:06.000000000 +0200
-+++ src/strtest.cc	2017-08-09 09:13:24.395060823 +0200
-@@ -286,63 +286,63 @@
-     strtest tester("strlc");
-     char d[10] = "@";
-     size_t n;
--    n = strlcpy(d, "", 0);
-+    n = my_strlcpy(d, "", 0);
-     sequal(d, "@");
-     assert(d, n == 0);
- 
--    n = strlcpy(d, "a", 0);
-+    n = my_strlcpy(d, "a", 0);
-     sequal(d, "@");
-     assert(d, n == 1);
- 
--    n = strlcpy(d, "", 1);
-+    n = my_strlcpy(d, "", 1);
-     sequal(d, "");
-     assert(d, n == 0);
- 
--    n = strlcpy(d, "a", 1);
-+    n = my_strlcpy(d, "a", 1);
-     sequal(d, "");
-     assert(d, n == 1);
- 
--    n = strlcpy(d, "a", 2);
-+    n = my_strlcpy(d, "a", 2);
-     sequal(d, "a");
-     assert(d, n == 1);
- 
--    n = strlcpy(d, "ab", 2);
-+    n = my_strlcpy(d, "ab", 2);
-     sequal(d, "a");
-     assert(d, n == 2);
- 
--    n = strlcpy(d, "ab", 3);
-+    n = my_strlcpy(d, "ab", 3);
-     sequal(d, "ab");
-     assert(d, n == 2);
- 
--    n = strlcpy(d, "abc", sizeof d);
-+    n = my_strlcpy(d, "abc", sizeof d);
-     sequal(d, "abc");
-     assert(d, n == 3);
- 
--    n = strlcat(d, "def", 4);
-+    n = my_strlcat(d, "def", 4);
-     sequal(d, "abc");
-     assert(d, n == 6);
- 
--    n = strlcat(d, "def", sizeof d);
-+    n = my_strlcat(d, "def", sizeof d);
-     sequal(d, "abcdef");
-     assert(d, n == 6);
- 
--    n = strlcat(d, "ghijkl", sizeof d);
-+    n = my_strlcat(d, "ghijkl", sizeof d);
-     sequal(d, "abcdefghi");
-     assert(d, n == 12);
- 
--    n = strlcpy(d, "123", sizeof d);
-+    n = my_strlcpy(d, "123", sizeof d);
-     sequal(d, "123");
-     assert(d, n == 3);
- 
--    n = strlcpy(d, d + 1, sizeof d);
-+    n = my_strlcpy(d, d + 1, sizeof d);
-     sequal(d, "23");
-     assert(d, n == 2);
- 
--    n = strlcpy(d, d + 1, sizeof d);
-+    n = my_strlcpy(d, d + 1, sizeof d);
-     sequal(d, "3");
-     assert(d, n == 1);
- 
--    n = strlcpy(d, d + 1, sizeof d);
-+    n = my_strlcpy(d, d + 1, sizeof d);
-     sequal(d, "");
-     assert(d, n == 0);
- }
-@@ -418,7 +418,7 @@
-         while (a.next()) {
-             const char *e = a.entry();
-             assert(e, strcoll(buf, e) < 0);
--            strlcpy(buf, e, sizeof buf);
-+            my_strlcpy(buf, e, sizeof buf);
-         }
-         assert(buf, strcoll(buf, "~~~~~~~~~") < 0);
-     }
-@@ -437,7 +437,7 @@
-             cstring c(s.entry());
-             const char *e = c.c_str();
-             assert(e, strcoll(buf, e) < 0);
--            strlcpy(buf, e, sizeof buf);
-+            my_strlcpy(buf, e, sizeof buf);
-         }
-         assert(buf, strcoll(buf, "~~~~~~~~~") < 0);
-     }
---- src/udir.cc	2017-07-30 10:59:06.000000000 +0200
-+++ src/udir.cc	2017-08-09 09:13:28.346061883 +0200
-@@ -66,7 +66,7 @@
-     if (impl) {
-         DirPtr dirp(impl);
-         if (dirp.next()) {
--            strlcpy(fEntry, dirp.name(), sizeof fEntry);
-+            my_strlcpy(fEntry, dirp.name(), sizeof fEntry);
-             return true;
-         }
-     }
diff --git a/pkgs/applications/window-managers/icewm/musl.patch b/pkgs/applications/window-managers/icewm/musl.patch
deleted file mode 100644
index e7d18e312874..000000000000
--- a/pkgs/applications/window-managers/icewm/musl.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- src/ylocale.cc	2017-07-30 10:59:06.000000000 +0200
-+++ src/ylocale.cc	2017-08-09 08:15:50.938841549 +0200
-@@ -55,6 +55,8 @@
-     int const codesetItems[] = {
- #ifdef CONFIG_NL_CODESETS
- 	CONFIG_NL_CODESETS
-+#elif !defined(__GLIBC__)
-+	CODESET, 0
- #else
- 	CODESET, _NL_CTYPE_CODESET_NAME, 0
- #endif
---- src/globit.c	2017-07-30 10:59:06.000000000 +0200
-+++ src/globit.c	2017-08-09 08:17:18.691824584 +0200
-@@ -143,7 +143,9 @@
- 	} else if (*pattern == '~') {
- 		/* yes, tilde */
- 		is_absolute = 2;
-+#if defined(__GLIBC__)
- 		glob_flags |= GLOB_TILDE;
-+#endif
- 		/* any slash in the pattern? */
- 		while (*cp && *cp != '/')
- 			++cp;