about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMathäus Sander <mathaeussander@outlook.de>2017-04-23 22:24:15 +0200
committerMathäus Sander <mathaeussander@outlook.de>2017-05-07 08:02:50 +0200
commit15b98cb63421106ab285d1970b6b672ae2c7ff65 (patch)
treeaa423c6a39b10d22ad1ce12d328aef8d92dcb54a
parentbbf114cf228bab9eaca7bf0d1562b4f04a76c5ed (diff)
parent77e6529953f0846f892fe9a393e12272fa9ead90 (diff)
downloadnixlib-15b98cb63421106ab285d1970b6b672ae2c7ff65.tar
nixlib-15b98cb63421106ab285d1970b6b672ae2c7ff65.tar.gz
nixlib-15b98cb63421106ab285d1970b6b672ae2c7ff65.tar.bz2
nixlib-15b98cb63421106ab285d1970b6b672ae2c7ff65.tar.lz
nixlib-15b98cb63421106ab285d1970b6b672ae2c7ff65.tar.xz
nixlib-15b98cb63421106ab285d1970b6b672ae2c7ff65.tar.zst
nixlib-15b98cb63421106ab285d1970b6b672ae2c7ff65.zip
quakespasm: init at 0.92.1
-rw-r--r--doc/cross-compilation.xml5
-rw-r--r--doc/languages-frameworks/ruby.xml3
-rw-r--r--lib/maintainers.nix1
-rw-r--r--nixos/modules/module-list.nix2
-rw-r--r--nixos/modules/profiles/hardened.nix35
-rw-r--r--nixos/modules/programs/zsh/oh-my-zsh.nix66
-rw-r--r--nixos/modules/programs/zsh/zsh-syntax-highlighting.nix43
-rw-r--r--nixos/modules/programs/zsh/zsh.nix16
-rw-r--r--nixos/modules/rename.nix3
-rw-r--r--nixos/modules/services/scheduling/fcron.nix2
-rw-r--r--nixos/modules/services/x11/display-managers/default.nix10
-rw-r--r--nixos/modules/services/x11/display-managers/slim.nix7
-rw-r--r--nixos/release-combined.nix1
-rw-r--r--nixos/release.nix1
-rw-r--r--nixos/tests/misc.nix2
-rw-r--r--nixos/tests/slim.nix66
-rw-r--r--pkgs/applications/display-managers/slim/default.nix4
-rw-r--r--pkgs/applications/display-managers/slim/no-logfile.patch80
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/default.nix26
-rw-r--r--pkgs/applications/networking/browsers/firefox/default.nix10
-rw-r--r--pkgs/applications/networking/instant-messengers/franz/default.nix32
-rw-r--r--pkgs/applications/networking/instant-messengers/rambox/default.nix31
-rw-r--r--pkgs/applications/networking/ipfs/default.nix8
-rw-r--r--pkgs/applications/networking/irc/weechat/default.nix4
-rw-r--r--pkgs/applications/networking/mailreaders/thunderbird/default.nix63
-rw-r--r--pkgs/applications/office/mytetra/default.nix34
-rw-r--r--pkgs/applications/science/electronics/fritzing/default.nix41
-rw-r--r--pkgs/applications/virtualization/OVMF/default.nix3
-rw-r--r--pkgs/applications/virtualization/qemu/default.nix94
-rw-r--r--pkgs/applications/virtualization/qemu/no-etc-install.patch9
-rw-r--r--pkgs/data/fonts/emacs-all-the-icons-fonts/default.nix37
-rw-r--r--pkgs/development/libraries/hunspell/default.nix13
-rw-r--r--pkgs/development/libraries/qtstyleplugins/default.nix7
-rw-r--r--pkgs/development/libraries/qtwebkit-plugins/default.nix2
-rw-r--r--pkgs/development/node-packages/README.md2
-rw-r--r--pkgs/development/python-modules/pyspread/default.nix57
-rw-r--r--pkgs/development/python-modules/wxPython/3.0.nix11
-rw-r--r--pkgs/development/ruby-modules/bundix/default.nix4
-rw-r--r--pkgs/development/tools/continuous-integration/gitlab-runner/default.nix8
-rw-r--r--pkgs/development/tools/continuous-integration/gitlab-runner/v1.nix8
-rw-r--r--pkgs/games/mudlet/libs.patch2
-rw-r--r--pkgs/games/quakespasm/default.nix9
-rw-r--r--pkgs/misc/emulators/wine/sources.nix3
-rw-r--r--pkgs/misc/vim-plugins/default.nix553
-rw-r--r--pkgs/misc/vim-plugins/vim-plugin-names2
-rw-r--r--pkgs/os-specific/linux/zfs/default.nix2
-rw-r--r--pkgs/servers/etcd/default.nix12
-rw-r--r--pkgs/servers/etcd/deps.nix335
-rw-r--r--pkgs/servers/rt/default.nix88
-rw-r--r--pkgs/shells/mksh/default.nix23
-rw-r--r--pkgs/stdenv/booter.nix41
-rw-r--r--pkgs/tools/misc/asciinema/default.nix9
-rw-r--r--pkgs/tools/misc/system-config-printer/default.nix52
-rw-r--r--pkgs/tools/system/runit/default.nix6
-rw-r--r--pkgs/tools/text/kdiff3/default.nix2
-rw-r--r--pkgs/tools/text/patchutils/default.nix6
-rw-r--r--pkgs/tools/text/patchutils/drop-comments.patch84
-rw-r--r--pkgs/tools/text/ripgrep/default.nix6
-rw-r--r--pkgs/top-level/all-packages.nix4
-rw-r--r--pkgs/top-level/perl-packages.nix120
-rw-r--r--pkgs/top-level/python-packages.nix2
-rw-r--r--pkgs/top-level/splice.nix6
-rw-r--r--pkgs/top-level/stage.nix13
63 files changed, 1311 insertions, 920 deletions
diff --git a/doc/cross-compilation.xml b/doc/cross-compilation.xml
index 06a8919c2a19..728616a9f263 100644
--- a/doc/cross-compilation.xml
+++ b/doc/cross-compilation.xml
@@ -167,6 +167,11 @@
       Because of this, a best-of-both-worlds solution is in the works with no splicing or explicit access of <varname>buildPackages</varname> needed.
       For now, feel free to use either method.
     </para>
+    <note><para>
+      There is also a "backlink" <varname>__targetPackages</varname>, yielding a package set whose <varname>buildPackages</varname> is the current package set.
+      This is a hack, though, to accommodate compilers with lousy build systems.
+      Please do not use this unless you are absolutely sure you are packaging such a compiler and there is no other way.
+    </para></note>
   </section>
 
 </section>
diff --git a/doc/languages-frameworks/ruby.xml b/doc/languages-frameworks/ruby.xml
index b52361212f3a..3c6e4f5e01a4 100644
--- a/doc/languages-frameworks/ruby.xml
+++ b/doc/languages-frameworks/ruby.xml
@@ -16,8 +16,7 @@ $ cd sensu
 $ cat > Gemfile
 source 'https://rubygems.org'
 gem 'sensu'
-$ nix-shell -p bundler --command "bundler package --path /tmp/vendor/bundle"
-$ $(nix-build '<nixpkgs>' -A bundix)/bin/bundix
+$ $(nix-build '<nixpkgs>' -A bundix)/bin/bundix --magic
 $ cat > default.nix
 { lib, bundlerEnv, ruby }:
 
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index bb8ca565dfd2..1b80a9468492 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -293,6 +293,7 @@
   luispedro = "Luis Pedro Coelho <luis@luispedro.org>";
   lukego = "Luke Gorrie <luke@snabb.co>";
   lw = "Sergey Sofeychuk <lw@fmap.me>";
+  m3tti = "Mathaeus Sander <mathaeus.peter.sander@gmail.com>";
   ma27 = "Maximilian Bosch <maximilian@mbosch.me>";
   madjar = "Georges Dubus <georges.dubus@compiletoi.net>";
   magnetophon = "Bart Brouns <bart@magnetophon.nl>";
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 530ae1d1cf03..4ff069f48ab4 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -102,7 +102,9 @@
   ./programs/wvdial.nix
   ./programs/xfs_quota.nix
   ./programs/xonsh.nix
+  ./programs/zsh/oh-my-zsh.nix
   ./programs/zsh/zsh.nix
+  ./programs/zsh/zsh-syntax-highlighting.nix
   ./rename.nix
   ./security/acme.nix
   ./security/apparmor.nix
diff --git a/nixos/modules/profiles/hardened.nix b/nixos/modules/profiles/hardened.nix
new file mode 100644
index 000000000000..9933f8b25f5e
--- /dev/null
+++ b/nixos/modules/profiles/hardened.nix
@@ -0,0 +1,35 @@
+# A profile with most (vanilla) hardening options enabled by default,
+# potentially at the cost of features and performance.
+
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+{
+  security.hideProcessInformation = mkDefault true;
+
+  security.apparmor.enable = mkDefault true;
+
+  # Restrict ptrace() usage to processes with a pre-defined relationship
+  # (e.g., parent/child)
+  boot.kernel.sysctl."kernel.yama.ptrace_scope" = mkOverride 500 1;
+
+  # Prevent replacing the running kernel image w/o reboot
+  boot.kernel.sysctl."kernel.kexec_load_disabled" = mkDefault true;
+
+  # Restrict access to kernel ring buffer (information leaks)
+  boot.kernel.sysctl."kernel.dmesg_restrict" = mkDefault true;
+
+  # Hide kptrs even for processes with CAP_SYSLOG
+  boot.kernel.sysctl."kernel.kptr_restrict" = mkOverride 500 2;
+
+  # Unprivileged access to bpf() has been used for privilege escalation in
+  # the past
+  boot.kernel.sysctl."kernel.unprivileged_bpf_disabled" = mkDefault true;
+
+  # Disable bpf() JIT (to eliminate spray attacks)
+  boot.kernel.sysctl."net.core.bpf_jit_enable" = mkDefault false;
+
+  # ... or at least apply some hardening to it
+  boot.kernel.sysctl."net.core.bpf_jit_harden" = mkDefault true;
+}
diff --git a/nixos/modules/programs/zsh/oh-my-zsh.nix b/nixos/modules/programs/zsh/oh-my-zsh.nix
new file mode 100644
index 000000000000..335f596ca80f
--- /dev/null
+++ b/nixos/modules/programs/zsh/oh-my-zsh.nix
@@ -0,0 +1,66 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.programs.zsh.oh-my-zsh;
+in
+  {
+    options = {
+      programs.zsh.oh-my-zsh = {
+        enable = mkOption {
+          default = false;
+          description = ''
+            Enable oh-my-zsh.
+          '';
+        };
+
+        plugins = mkOption {
+          default = [];
+          type = types.listOf(types.str);
+          description = ''
+            List of oh-my-zsh plugins
+          '';
+        };
+
+        custom = mkOption {
+          default = "";
+          type = types.str;
+          description = ''
+            Path to a custom oh-my-zsh package to override config of oh-my-zsh.
+          '';
+        };
+
+        theme = mkOption {
+          default = "";
+          type = types.str;
+          description = ''
+            Name of the theme to be used by oh-my-zsh.
+          '';
+        };
+      };
+    };
+
+    config = mkIf cfg.enable {
+      environment.systemPackages = with pkgs; [ oh-my-zsh ];
+
+      programs.zsh.interactiveShellInit = with pkgs; with builtins; ''
+        # oh-my-zsh configuration generated by NixOS
+        export ZSH=${oh-my-zsh}/share/oh-my-zsh
+
+        ${optionalString (length(cfg.plugins) > 0)
+          "plugins=(${concatStringsSep " " cfg.plugins})"
+        }
+
+        ${optionalString (stringLength(cfg.custom) > 0)
+          "ZSH_CUSTOM=\"${cfg.custom}\""
+        }
+
+        ${optionalString (stringLength(cfg.theme) > 0)
+          "ZSH_THEME=\"${cfg.theme}\""
+        }
+
+        source $ZSH/oh-my-zsh.sh
+      '';
+    };
+  }
diff --git a/nixos/modules/programs/zsh/zsh-syntax-highlighting.nix b/nixos/modules/programs/zsh/zsh-syntax-highlighting.nix
new file mode 100644
index 000000000000..962c1f920a86
--- /dev/null
+++ b/nixos/modules/programs/zsh/zsh-syntax-highlighting.nix
@@ -0,0 +1,43 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.programs.zsh.syntax-highlighting;
+in
+  {
+    options = {
+      programs.zsh.syntax-highlighting = {
+        enable = mkOption {
+          default = false;
+          type = types.bool;
+          description = ''
+            Enable zsh-syntax-highlighting.
+          '';
+        };
+
+        highlighters = mkOption {
+          default = [ "main" ];
+          type = types.listOf(types.str);
+          description = ''
+            Specifies the highlighters to be used by zsh-syntax-highlighting.
+
+            The following defined options can be found here:
+            https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters.md
+          '';
+        };
+      };
+    };
+
+    config = mkIf cfg.enable {
+      environment.systemPackages = with pkgs; [ zsh-syntax-highlighting ];
+
+      programs.zsh.interactiveShellInit = with pkgs; with builtins; ''
+        source ${zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
+
+        ${optionalString (length(cfg.highlighters) > 0)
+          "ZSH_HIGHLIGHT_HIGHLIGHTERS=(${concatStringsSep " " cfg.highlighters})"
+        }
+      '';
+    };
+  }
diff --git a/nixos/modules/programs/zsh/zsh.nix b/nixos/modules/programs/zsh/zsh.nix
index 990e6648e82b..acb3e987aee6 100644
--- a/nixos/modules/programs/zsh/zsh.nix
+++ b/nixos/modules/programs/zsh/zsh.nix
@@ -84,14 +84,6 @@ in
         type = types.bool;
       };
 
-      enableSyntaxHighlighting = mkOption {
-        default = false;
-        description = ''
-          Enable zsh-syntax-highlighting
-        '';
-        type = types.bool;
-      };
-      
       enableAutosuggestions = mkOption {
         default = false;
         description = ''
@@ -130,10 +122,6 @@ in
 
         ${if cfg.enableCompletion then "autoload -U compinit && compinit" else ""}
 
-        ${optionalString (cfg.enableSyntaxHighlighting)
-          "source ${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
-        }
-
         ${optionalString (cfg.enableAutosuggestions)
           "source ${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh"
         }
@@ -143,7 +131,6 @@ in
 
         ${cfge.interactiveShellInit}
 
-
         HELPDIR="${pkgs.zsh}/share/zsh/$ZSH_VERSION/help"
       '';
 
@@ -206,8 +193,7 @@ in
     environment.etc."zinputrc".source = ./zinputrc;
 
     environment.systemPackages = [ pkgs.zsh ]
-      ++ optional cfg.enableCompletion pkgs.nix-zsh-completions
-      ++ optional cfg.enableSyntaxHighlighting pkgs.zsh-syntax-highlighting;
+      ++ optional cfg.enableCompletion pkgs.nix-zsh-completions;
 
     environment.pathsToLink = optional cfg.enableCompletion "/share/zsh";
 
diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix
index 0174fe544e35..8a313f6c7fca 100644
--- a/nixos/modules/rename.nix
+++ b/nixos/modules/rename.nix
@@ -204,5 +204,8 @@ with lib;
       "Set the option `services.xserver.displayManager.sddm.package' instead.")
     (mkRemovedOptionModule [ "fonts" "fontconfig" "forceAutohint" ] "")
     (mkRemovedOptionModule [ "fonts" "fontconfig" "renderMonoTTFAsBitmap" ] "")
+
+    # ZSH
+    (mkRenamedOptionModule [ "programs" "zsh" "enableSyntaxHighlighting" ] [ "programs" "zsh" "syntax-highlighting" "enable" ])
   ];
 }
diff --git a/nixos/modules/services/scheduling/fcron.nix b/nixos/modules/services/scheduling/fcron.nix
index bc631bdd0447..af4f9f41fd04 100644
--- a/nixos/modules/services/scheduling/fcron.nix
+++ b/nixos/modules/services/scheduling/fcron.nix
@@ -149,7 +149,7 @@ in
           --group fcron \
           --directory /var/spool/fcron
         # load system crontab file
-        #${pkgs.fcron}/bin/fcrontab -u systab ${pkgs.writeText "systab" cfg.systab}
+        /run/wrappers/bin/fcrontab -u systab ${pkgs.writeText "systab" cfg.systab}
       '';
 
       serviceConfig = {
diff --git a/nixos/modules/services/x11/display-managers/default.nix b/nixos/modules/services/x11/display-managers/default.nix
index 543fd9399147..4e2c0e01ca03 100644
--- a/nixos/modules/services/x11/display-managers/default.nix
+++ b/nixos/modules/services/x11/display-managers/default.nix
@@ -32,14 +32,8 @@ let
     ''
       #! ${pkgs.bash}/bin/bash
 
-      # SDDM splits "Exec" line in .desktop file by whitespace and pass script path as $1
-      if [[ "$0" = "$1" ]]; then
-        # remove superfluous $1 again
-        shift
-        # join arguments again and evaluate them in a shell context
-        # to interpret shell quoting
-        eval exec "$0" "$@"
-      fi
+      # Handle being called by SDDM.
+      if test "''${1:0:1}" = / ; then eval exec $1 $2 ; fi
 
       ${optionalString cfg.displayManager.logToJournal ''
         if [ -z "$_DID_SYSTEMD_CAT" ]; then
diff --git a/nixos/modules/services/x11/display-managers/slim.nix b/nixos/modules/services/x11/display-managers/slim.nix
index 05b979eef47f..0c4dd1973b53 100644
--- a/nixos/modules/services/x11/display-managers/slim.nix
+++ b/nixos/modules/services/x11/display-managers/slim.nix
@@ -17,6 +17,7 @@ let
       login_cmd exec ${pkgs.stdenv.shell} ${dmcfg.session.script} "%session"
       halt_cmd ${config.systemd.package}/sbin/shutdown -h now
       reboot_cmd ${config.systemd.package}/sbin/shutdown -r now
+      logfile /dev/stderr
       ${optionalString (cfg.defaultUser != null) ("default_user " + cfg.defaultUser)}
       ${optionalString (cfg.defaultUser != null) ("focus_password yes")}
       ${optionalString cfg.autoLogin "auto_login yes"}
@@ -128,11 +129,7 @@ in
   config = mkIf cfg.enable {
 
     services.xserver.displayManager.job =
-      { preStart =
-          ''
-            rm -f /var/log/slim.log
-          '';
-        environment =
+      { environment =
           { SLIM_CFGFILE = slimConfig;
             SLIM_THEMESDIR = slimThemesDir;
           };
diff --git a/nixos/release-combined.nix b/nixos/release-combined.nix
index 5c1112a1c6d6..4217f5940ec6 100644
--- a/nixos/release-combined.nix
+++ b/nixos/release-combined.nix
@@ -94,6 +94,7 @@ in rec {
         (all nixos.tests.proxy)
         (all nixos.tests.sddm.default)
         (all nixos.tests.simple)
+        (all nixos.tests.slim)
         (all nixos.tests.udisks2)
         (all nixos.tests.xfce)
 
diff --git a/nixos/release.nix b/nixos/release.nix
index 95b284cb7056..0fec97b9c27e 100644
--- a/nixos/release.nix
+++ b/nixos/release.nix
@@ -299,6 +299,7 @@ in rec {
   tests.samba = callTest tests/samba.nix {};
   tests.sddm = callSubTests tests/sddm.nix {};
   tests.simple = callTest tests/simple.nix {};
+  tests.slim = callTest tests/slim.nix {};
   tests.smokeping = callTest tests/smokeping.nix {};
   tests.taskserver = callTest tests/taskserver.nix {};
   tests.tomcat = callTest tests/tomcat.nix {};
diff --git a/nixos/tests/misc.nix b/nixos/tests/misc.nix
index cd4086cb8f62..0efa72823688 100644
--- a/nixos/tests/misc.nix
+++ b/nixos/tests/misc.nix
@@ -122,7 +122,7 @@ import ./make-test.nix ({ pkgs, ...} : {
 
       # Test hidepid
       subtest "hidepid", sub {
-          $machine->succeed("grep -Fq hidepid=2 /etc/mtab");
+          $machine->succeed("grep -Fq hidepid=2 /proc/mounts");
           $machine->succeed("[ `su - sybil -c 'pgrep -c -u root'` = 0 ]");
           $machine->succeed("[ `su - alice -c 'pgrep -c -u root'` != 0 ]");
       };
diff --git a/nixos/tests/slim.nix b/nixos/tests/slim.nix
new file mode 100644
index 000000000000..7b939d836381
--- /dev/null
+++ b/nixos/tests/slim.nix
@@ -0,0 +1,66 @@
+import ./make-test.nix ({ pkgs, ...} : {
+  name = "slim";
+
+  meta = with pkgs.stdenv.lib.maintainers; {
+    maintainers = [ aszlig ];
+  };
+
+  machine = { pkgs, lib, ... }: {
+    imports = [ ./common/user-account.nix ];
+    services.xserver.enable = true;
+    services.xserver.windowManager.default = "icewm";
+    services.xserver.windowManager.icewm.enable = true;
+    services.xserver.desktopManager.default = "none";
+    services.xserver.displayManager.slim = {
+      enable = true;
+
+      # Use a custom theme in order to get best OCR results
+      theme = pkgs.runCommand "slim-theme-ocr" {
+        nativeBuildInputs = [ pkgs.imagemagick ];
+      } ''
+        mkdir "$out"
+        convert -size 1x1 xc:white "$out/background.jpg"
+        convert -size 200x100 xc:white "$out/panel.jpg"
+        cat > "$out/slim.theme" <<EOF
+        background_color #ffffff
+        background_style tile
+
+        input_fgcolor #000000
+        msg_color #000000
+
+        session_color #000000
+        session_font Verdana:size=16:bold
+
+        username_msg Username:
+        username_font Verdana:size=16:bold
+        username_color #000000
+        username_x 50%
+        username_y 40%
+
+        password_msg Password:
+        password_x 50%
+        password_y 40%
+        EOF
+      '';
+    };
+  };
+
+  enableOCR = true;
+
+  testScript = { nodes, ... }: let
+    user = nodes.machine.config.users.extraUsers.alice;
+  in ''
+    startAll;
+    $machine->waitForText(qr/Username:/);
+    $machine->sendChars("${user.name}\n");
+    $machine->waitForText(qr/Password:/);
+    $machine->sendChars("${user.password}\n");
+
+    $machine->waitForFile('${user.home}/.Xauthority');
+    $machine->succeed('xauth merge ${user.home}/.Xauthority');
+    $machine->waitForWindow('^IceWM ');
+
+    # Make sure SLiM doesn't create a log file
+    $machine->fail('test -e /var/log/slim.log');
+  '';
+})
diff --git a/pkgs/applications/display-managers/slim/default.nix b/pkgs/applications/display-managers/slim/default.nix
index fca84199e511..c75a8976b3fa 100644
--- a/pkgs/applications/display-managers/slim/default.nix
+++ b/pkgs/applications/display-managers/slim/default.nix
@@ -22,6 +22,10 @@ stdenv.mkDerivation rec {
       # Ensure that sessions appear in sort order, rather than in
       # directory order.
       ./sort-sessions.patch
+
+      # Allow to set logfile to a special "/dev/stderr" in order to continue
+      # logging to stderr and thus to the journal.
+      ./no-logfile.patch
     ];
 
   preConfigure = "substituteInPlace CMakeLists.txt --replace /lib $out/lib";
diff --git a/pkgs/applications/display-managers/slim/no-logfile.patch b/pkgs/applications/display-managers/slim/no-logfile.patch
new file mode 100644
index 000000000000..f2f5f1549930
--- /dev/null
+++ b/pkgs/applications/display-managers/slim/no-logfile.patch
@@ -0,0 +1,80 @@
+diff --git a/log.cpp b/log.cpp
+index b44677a..7c89dda 100644
+--- a/log.cpp
++++ b/log.cpp
+@@ -1,23 +1,31 @@
+ #include "log.h"
+ #include <iostream>
++#include <cstring>
+ 
+ bool
+ LogUnit::openLog(const char * filename)
+ {
+-	if (logFile.is_open()) {
++	if (isFile && logFile.is_open()) {
+ 		cerr << APPNAME
+ 			<< ": opening a new Log file, while another is already open"
+ 			<< endl;
+-		logFile.close();
++		closeLog();
+ 	}
+-	logFile.open(filename, ios_base::app);
+ 
+-	return !(logFile.fail());
++	if (strcmp(filename, "/dev/stderr") == 0) {
++		isFile = false;
++		return true;
++	} else {
++		logFile.open(filename, ios_base::app);
++		isFile = true;
++		return !(logFile.fail());
++	}
+ }
+ 
+ void
+ LogUnit::closeLog()
+ {
++	if (!isFile) return;
+ 	if (logFile.is_open())
+ 		logFile.close();
+ }
+diff --git a/log.h b/log.h
+index b7810be..ad548a2 100644
+--- a/log.h
++++ b/log.h
+@@ -9,11 +9,14 @@
+ #endif
+ #include "const.h"
+ #include <fstream>
++#include <iostream>
+ 
+ using namespace std;
+ 
+ static class LogUnit {
+ 	ofstream logFile;
++	bool isFile;
++	inline ostream &getStream() { return isFile ? logFile : cerr; }
+ public:
+ 	bool openLog(const char * filename);
+ 	void closeLog();
+@@ -22,17 +25,17 @@ public:
+ 
+ 	template<typename Type>
+ 	LogUnit & operator<<(const Type & text) {
+-		logFile << text; logFile.flush();
++		getStream() << text; getStream().flush();
+ 		return *this;
+ 	}
+ 
+ 	LogUnit & operator<<(ostream & (*fp)(ostream&)) {
+-		logFile << fp; logFile.flush();
++		getStream() << fp; getStream().flush();
+ 		return *this;
+ 	}
+ 
+ 	LogUnit & operator<<(ios_base & (*fp)(ios_base&)) {
+-		logFile << fp; logFile.flush();
++		getStream() << fp; getStream().flush();
+ 		return *this;
+ 	}
+ } logStream;
diff --git a/pkgs/applications/networking/browsers/firefox-bin/default.nix b/pkgs/applications/networking/browsers/firefox-bin/default.nix
index 5bd275ba31d5..b6e8ac10fc9c 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/default.nix
+++ b/pkgs/applications/networking/browsers/firefox-bin/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, config, makeWrapper
+{ stdenv, fetchurl, config, wrapGAppsHook
 , alsaLib
 , atk
 , cairo
@@ -77,7 +77,7 @@ stdenv.mkDerivation {
 
   src = fetchurl { inherit (source) url sha512; };
 
-  phases = "unpackPhase installPhase";
+  phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
 
   libPath = stdenv.lib.makeLibraryPath
     [ stdenv.cc.cc
@@ -124,11 +124,12 @@ stdenv.mkDerivation {
       stdenv.cc.cc
     ];
 
-  buildInputs = [ makeWrapper gtk3 defaultIconTheme ];
+  buildInputs = [ wrapGAppsHook gtk3 defaultIconTheme ];
 
   # "strip" after "patchelf" may break binaries.
   # See: https://github.com/NixOS/patchelf/issues/10
-  dontStrip = 1;
+  dontStrip = true;
+  dontPatchELF = true;
 
   installPhase =
     ''
@@ -155,22 +156,7 @@ stdenv.mkDerivation {
       # wrapFirefox expects "$out/lib" instead of "$out/usr/lib"
       ln -s "$out/usr/lib" "$out/lib"
 
-      # Create a desktop item.
-      mkdir -p $out/share/applications
-      cat > $out/share/applications/firefox.desktop <<EOF
-      [Desktop Entry]
-      Type=Application
-      Exec=$out/bin/firefox
-      Icon=$out/usr/lib/firefox-bin-${version}/browser/icons/mozicon128.png
-      Name=Firefox
-      GenericName=Web Browser
-      Categories=Application;Network;
-      EOF
-
-      wrapProgram "$out/bin/firefox" \
-        --argv0 "$out/bin/.firefox-wrapped" \
-        --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:" \
-        --suffix XDG_DATA_DIRS : "$XDG_ICON_DIRS"
+      gappsWrapperArgs+=(--argv0 "$out/bin/.firefox-wrapped")
     '';
 
   passthru.ffmpegSupport = true;
diff --git a/pkgs/applications/networking/browsers/firefox/default.nix b/pkgs/applications/networking/browsers/firefox/default.nix
index 8e7b6ae198fe..3193490b639f 100644
--- a/pkgs/applications/networking/browsers/firefox/default.nix
+++ b/pkgs/applications/networking/browsers/firefox/default.nix
@@ -4,7 +4,7 @@
 , yasm, mesa, sqlite, unzip, makeWrapper
 , hunspell, libevent, libstartup_notification, libvpx
 , cairo, gstreamer, gst-plugins-base, icu, libpng, jemalloc, libpulseaudio
-, autoconf213, which
+, autoconf213, which, cargo, rustc
 , writeScript, xidel, common-updater-scripts, coreutils, gnused, gnugrep, curl
 , enableGTK3 ? false, gtk3, wrapGAppsHook
 , debugBuild ? false
@@ -48,7 +48,9 @@ common = { pname, version, sha512, updateScript }: stdenv.mkDerivation rec {
     ++ lib.optional enableGTK3 gtk3
     ++ lib.optionals (!passthru.ffmpegSupport) [ gstreamer gst-plugins-base ];
 
-  nativeBuildInputs = [ autoconf213 which gnused pkgconfig perl python ] ++ lib.optional enableGTK3 wrapGAppsHook;
+  nativeBuildInputs =
+    [ autoconf213 which gnused pkgconfig perl python cargo rustc ]
+    ++ lib.optional enableGTK3 wrapGAppsHook;
 
   configureFlags =
     [ "--enable-application=browser"
@@ -151,8 +153,8 @@ in {
 
   firefox-unwrapped = common {
     pname = "firefox";
-    version = "52.0.2";
-    sha512 = "15668625d212acf874b560d0adf738faf3e0df532c549ab94e1d91944542e13bf16265f08fca1eded42820f9b7ad3f0ff70a8b5bc9adde0a79d11e022bb1158e";
+    version = "53.0";
+    sha512 = "36ec810bab58e3d99478455a38427a5efbc74d6dd7d4bb93b700fd7429b9b89250efd0abe4609091483991802090c6373c8434dfc9ba64c79a778e51fd2a2886";
     updateScript = import ./update.nix {
       attrPath = "firefox-unwrapped";
       inherit writeScript lib common-updater-scripts xidel coreutils gnused gnugrep curl;
diff --git a/pkgs/applications/networking/instant-messengers/franz/default.nix b/pkgs/applications/networking/instant-messengers/franz/default.nix
index ef84f6402b52..d5ef754e173a 100644
--- a/pkgs/applications/networking/instant-messengers/franz/default.nix
+++ b/pkgs/applications/networking/instant-messengers/franz/default.nix
@@ -25,15 +25,18 @@ in stdenv.mkDerivation rec {
       "16l9jma2hiwzl9l41yhrwribcgmxca271rq0cfbbm9701mmmciyy";
   };
 
-  phases = [ "unpackPhase" "installPhase" "postFixup" ];
+  # don't remove runtime deps
+  dontPatchELF = true;
 
-  deps = with xorg; [
-   gtk2 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus
-   libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes
-   libXrender libX11 libXtst libXScrnSaver gnome2.GConf nss nspr alsaLib
-   cups expat stdenv.cc.cc
-
-   udev libnotify
+  deps = (with xorg; [
+    libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes
+    libXrender libX11 libXtst libXScrnSaver
+  ]) ++ [
+    gtk2 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus
+    gnome2.GConf nss nspr alsaLib cups expat stdenv.cc.cc
+  # runtime deps
+  ] ++ [
+    udev libnotify
   ];
 
   unpackPhase = ''
@@ -42,19 +45,20 @@ in stdenv.mkDerivation rec {
 
   installPhase = ''
     patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" Franz
-    patchelf --set-rpath "$out/share/franz:${stdenv.lib.makeLibraryPath deps}" Franz
+    patchelf --set-rpath "$out/opt/franz:${stdenv.lib.makeLibraryPath deps}" Franz
 
-    mkdir -p $out/bin $out/share/franz
-    cp -r * $out/share/franz
-    ln -s $out/share/franz/Franz $out/bin
+    mkdir -p $out/bin $out/opt/franz
+    cp -r * $out/opt/franz
+    ln -s $out/opt/franz/Franz $out/bin
 
+    # provide desktop item and icon
     mkdir -p $out/share/applications $out/share/pixmaps
     ln -s ${desktopItem}/share/applications/* $out/share/applications
-    ln -s $out/share/franz/resources/app.asar.unpacked/assets/franz.png $out/share/pixmaps
+    ln -s $out/opt/franz/resources/app.asar.unpacked/assets/franz.png $out/share/pixmaps
   '';
 
   postFixup = ''
-    paxmark m $out/share/franz/Franz
+    paxmark m $out/opt/franz/Franz
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/networking/instant-messengers/rambox/default.nix b/pkgs/applications/networking/instant-messengers/rambox/default.nix
index 15df03ac90d9..f3212ea9b77c 100644
--- a/pkgs/applications/networking/instant-messengers/rambox/default.nix
+++ b/pkgs/applications/networking/instant-messengers/rambox/default.nix
@@ -12,7 +12,6 @@ let
     url = "https://raw.githubusercontent.com/saenzramiro/rambox/9e4444e6297dd35743b79fe23f8d451a104028d5/resources/Icon.png";
     sha256 = "0r00l4r5mlbgn689i3rp6ks11fgs4h2flvrlggvm2qdd974d1x0b";
   };
-
   desktopItem = makeDesktopItem rec {
     name = "Rambox";
     exec = "rambox";
@@ -30,31 +29,35 @@ in stdenv.mkDerivation rec {
       "13xmljsdahffdzndg30qxh8mj7bgd9jwkxknrvlh3l6w35pbj085";
   };
 
-  phases = [ "unpackPhase" "installPhase" "postFixup" ];
-
-  deps = with xorg; [
-   gtk2 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus
-   libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes
-   libXrender libX11 libXtst libXScrnSaver gnome2.GConf nss nspr alsaLib
-   cups expat stdenv.cc.cc
+  # don't remove runtime deps
+  dontPatchELF = true;
 
-   udev libnotify
+  deps = (with xorg; [
+    libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes
+    libXrender libX11 libXtst libXScrnSaver
+  ]) ++ [
+    gtk2 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus
+    gnome2.GConf nss nspr alsaLib cups expat stdenv.cc.cc
+  # runtime deps
+  ] ++ [
+    udev libnotify
   ];
 
   installPhase = ''
     patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" rambox
-    patchelf --set-rpath "$out/share/rambox:${stdenv.lib.makeLibraryPath deps}" rambox
+    patchelf --set-rpath "$out/opt/rambox:${stdenv.lib.makeLibraryPath deps}" rambox
 
-    mkdir -p $out/bin $out/share/rambox
-    cp -r * $out/share/rambox
-    ln -s $out/share/rambox/rambox $out/bin
+    mkdir -p $out/bin $out/opt/rambox
+    cp -r * $out/opt/rambox
+    ln -s $out/opt/rambox/rambox $out/bin
 
+    # provide desktop item
     mkdir -p $out/share/applications
     ln -s ${desktopItem}/share/applications/* $out/share/applications
   '';
 
   postFixup = ''
-    paxmark m $out/share/rambox/rambox
+    paxmark m $out/opt/rambox/rambox
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/networking/ipfs/default.nix b/pkgs/applications/networking/ipfs/default.nix
index 2be39df61472..a00aebef2969 100644
--- a/pkgs/applications/networking/ipfs/default.nix
+++ b/pkgs/applications/networking/ipfs/default.nix
@@ -2,15 +2,15 @@
 
 buildGoPackage rec {
   name = "ipfs-${version}";
-  version = "0.4.8";
-  rev = "8e7484ed794d1aecb3e773e9003ae64c7b78bb87";
+  version = "0.4.6";
+  rev = "ed729423ce548785834cdcaa21aab11ebc3a1b1a";
 
   goPackagePath = "github.com/ipfs/go-ipfs";
 
   extraSrcPaths = [
     (fetchgx {
       inherit name src;
-      sha256 = "1h4n74n65z4sw3fqz8nfcrwisbvvwwfq69909w3kgrjsxs7505s5";
+      sha256 = "1wwzbps3ry3vlrr0iqhvxd44x0wi99dcp5hlxvh79dc0g9r7myfk";
     })
   ];
 
@@ -18,7 +18,7 @@ buildGoPackage rec {
     owner = "ipfs";
     repo = "go-ipfs";
     inherit rev;
-    sha256 = "15jcg0wbm7g82fsmhc1vxrsszbxcghls3rsyv35n1hv5k5r5d5nh";
+    sha256 = "1b262k1lhb1g68l8hghly4pdrxx1c6wbv6ij6dg399zdwqzczl13";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/networking/irc/weechat/default.nix b/pkgs/applications/networking/irc/weechat/default.nix
index 877eb91624cd..00d1c8d9bc91 100644
--- a/pkgs/applications/networking/irc/weechat/default.nix
+++ b/pkgs/applications/networking/irc/weechat/default.nix
@@ -21,12 +21,12 @@ let
 in
 
 stdenv.mkDerivation rec {
-  version = "1.7";
+  version = "1.7.1";
   name = "weechat-${version}";
 
   src = fetchurl {
     url = "http://weechat.org/files/src/weechat-${version}.tar.bz2";
-    sha256 = "1l34rgr83nf2h71mwzhv5c0x03msrwv3kzx3cwzczx72xrih12n7";
+    sha256 = "1020m1lsm8lg9n0dlxgp2wbn9b0r11g8r0namnzi2x6gvxn7iyf0";
   };
 
   outputs = [ "out" "doc" ];
diff --git a/pkgs/applications/networking/mailreaders/thunderbird/default.nix b/pkgs/applications/networking/mailreaders/thunderbird/default.nix
index bb82cac0e84d..3e3b43aedb4f 100644
--- a/pkgs/applications/networking/mailreaders/thunderbird/default.nix
+++ b/pkgs/applications/networking/mailreaders/thunderbird/default.nix
@@ -6,7 +6,7 @@
 , cairo, gstreamer, gst-plugins-base, icu, libpng, jemalloc
 , autoconf213, which, m4
 , writeScript, xidel, common-updater-scripts, coreutils, gnused, gnugrep, curl
-, enableGTK3 ? false, gtk3, wrapGAppsHook
+, enableGTK3 ? false, gtk3, wrapGAppsHook, makeWrapper
 , enableCalendar ? true
 , debugBuild ? false
 , # If you want the resulting program to call itself "Thunderbird" instead
@@ -15,9 +15,12 @@
   # Mozilla Foundation, see
   # http://www.mozilla.org/foundation/trademarks/.
   enableOfficialBranding ? false
+, makeDesktopItem
 }:
 
-stdenv.mkDerivation rec {
+let
+  wrapperTool = if enableGTK3 then wrapGAppsHook else makeWrapper;
+in stdenv.mkDerivation rec {
   name = "thunderbird-${version}";
   version = "52.0.1";
 
@@ -46,8 +49,8 @@ stdenv.mkDerivation rec {
     ]
     ++ lib.optional enableGTK3 gtk3;
 
-  # from firefox + m4
-  nativeBuildInputs = [ m4 autoconf213 which gnused pkgconfig perl python ] ++ lib.optional enableGTK3 wrapGAppsHook;
+  # from firefox + m4 + wrapperTool
+  nativeBuildInputs = [ m4 autoconf213 which gnused pkgconfig perl python wrapperTool ];
 
   configureFlags =
     [ # from firefox, but without sound libraries (alsa, libvpx, pulseaudio)
@@ -100,13 +103,61 @@ stdenv.mkDerivation rec {
       paxmark m ../objdir/dist/bin/xpcshell
     '';
 
+  dontWrapGApps = true; # we do it ourselves
   postInstall =
     ''
       # For grsecurity kernels
       paxmark m $out/lib/thunderbird-[0-9]*/thunderbird
 
-      # Needed to find Mozilla runtime
-      gappsWrapperArgs+=(--argv0 "$out/bin/.thunderbird-wrapped")
+      # TODO: Move to a dev output?
+      rm -rf $out/include $out/lib/thunderbird-devel-* $out/share/idl
+
+      # $binary is a symlink to $target.
+      # We wrap $target by replacing the $binary symlink.
+      local target="$out/lib/thunderbird-${version}/thunderbird"
+      local binary="$out/bin/thunderbird"
+
+      # Wrap correctly, this is needed to
+      # 1) find Mozilla runtime, because argv0 must be the real thing,
+      #    or a symlink thereto. It cannot be the wrapper itself
+      # 2) detect itself as the default mailreader across builds
+      gappsWrapperArgs+=(
+        --argv0 "$target"
+        --set MOZ_APP_LAUNCHER thunderbird
+      )
+      ${
+        # We wrap manually because wrapGAppsHook does not detect the symlink
+        # To mimic wrapGAppsHook, we run it with dontWrapGApps, so
+        # gappsWrapperArgs gets defined correctly
+        lib.optionalString enableGTK3 "wrapGAppsHook"
+      }
+
+      # "$binary" is a symlink, replace it by the wrapper
+      rm "$binary"
+      makeWrapper "$target" "$binary" "''${gappsWrapperArgs[@]}"
+
+      ${ let desktopItem = makeDesktopItem {
+          name = "thunderbird";
+          exec = "thunderbird %U";
+          desktopName = "Thunderbird";
+          icon = "$out/lib/thunderbird-${version}/chrome/icons/default/default256.png";
+          genericName = "Main Reader";
+          categories = "Application;Network";
+          mimeType = stdenv.lib.concatStringsSep ";" [
+            # Email
+            "x-scheme-handler/mailto"
+            "message/rfc822"
+            # Newsgroup
+            "x-scheme-handler/news"
+            "x-scheme-handler/snews"
+            "x-scheme-handler/nntp"
+            # Feed
+            "x-scheme-handler/feed"
+            "application/rss+xml"
+            "application/x-extension-rss"
+          ];
+        }; in desktopItem.buildCommand
+      }
     '';
 
   postFixup =
diff --git a/pkgs/applications/office/mytetra/default.nix b/pkgs/applications/office/mytetra/default.nix
new file mode 100644
index 000000000000..b35e60cf2d61
--- /dev/null
+++ b/pkgs/applications/office/mytetra/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, qmakeHook, makeQtWrapper, qtsvg }:
+
+let
+  version = "1.42.2";
+in stdenv.mkDerivation rec {
+  name = "mytetra-${version}";
+  src = fetchurl {
+    url = "https://github.com/xintrea/mytetra_dev/archive/v.${version}.tar.gz";
+    sha256 = "1ah44nf4ksxkh01a2zmgvvby4pwczhyq5vcp270rf6visp8v9804";
+  };
+
+  buildInputs = [ qmakeHook makeQtWrapper qtsvg ];
+
+  hardeningDisable = [ "format" ];
+
+  preBuild = ''
+    substituteInPlace mytetra.pro \
+      --replace /usr/local/bin $out/bin \
+      --replace /usr/share $out/share
+
+    substituteInPlace src/views/mainWindow/MainWindow.cpp \
+      --replace ":/resource/pic/logo.svg" "$out/share/icons/hicolor/48x48/apps/mytetra.png"
+  '';
+
+  postInstall = "wrapQtProgram $out/bin/mytetra";
+
+  meta = with stdenv.lib; {
+    description = "Smart manager for information collecting";
+    homepage = http://webhamster.ru/site/page/index/articles/projectcode/138;
+    license = licenses.gpl3;
+    maintainers = [ maintainers.gnidorah ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/science/electronics/fritzing/default.nix b/pkgs/applications/science/electronics/fritzing/default.nix
index 0f817a71a701..838697f1394f 100644
--- a/pkgs/applications/science/electronics/fritzing/default.nix
+++ b/pkgs/applications/science/electronics/fritzing/default.nix
@@ -1,24 +1,45 @@
-{ stdenv, fetchurl, qtbase, qtsvg, qmakeHook, boost }:
+{ stdenv, fetchpatch, fetchFromGitHub, makeQtWrapper, qmakeHook, pkgconfig
+, qtbase, qtsvg, qtserialport, boost, libgit2
+}:
 
 stdenv.mkDerivation rec {
-  version = "0.9.0b";
   name = "fritzing-${version}";
+  version = "0.9.3b";
 
-  src = fetchurl {
-    url = "http://fritzing.org/download/${version}/source-tarball/fritzing-${version}.source.tar_1.bz2";
-    sha256 = "181qnknq1j5x075icpw2qk0sc4wcj9f2hym533vs936is0wxp2gk";
+  src = fetchFromGitHub {
+    owner = "fritzing";
+    repo = "fritzing-app";
+    rev = version;
+    sha256 = "0hpyc550xfhr6gmnc85nq60w00rm0ljm0y744dp0z88ikl04f4s3";
   };
 
-  unpackPhase = ''
-    tar xjf ${src}
-  '';
+  parts = fetchFromGitHub {
+    owner = "fritzing";
+    repo = "fritzing-parts";
+    rev = version;
+    sha256 = "1d2v8k7p176j0lczx4vx9n9gbg3vw09n2c4b6w0wj5wqmifywhc1";
+  };
+
+  patches = [(fetchpatch {
+    name = "0001-Squashed-commit-of-the-following.patch";
+    url = "https://aur.archlinux.org/cgit/aur.git/plain/0001-Squashed-commit-of-the-following.patch?h=fritzing";
+    sha256 = "1cv6myidxhy28i8m8v13ghzkvx5978p9dcd8v7885y0l1h3108mf";
+  })];
+
+  buildInputs = [ qtbase qtsvg qtserialport boost libgit2 ];
 
-  buildInputs = [ qtbase qtsvg boost qmakeHook ];
+  nativeBuildInputs = [ qmakeHook makeQtWrapper pkgconfig ];
 
   qmakeFlags = [ "phoenix.pro" ];
 
+  enableParallelBuilding = true;
+
   preConfigure = ''
-    cd fritzing-${version}.source
+    ln -s "$parts" parts
+  '';
+
+  postInstall = ''
+    wrapQtProgram $out/bin/Fritzing
   '';
 
   meta = {
diff --git a/pkgs/applications/virtualization/OVMF/default.nix b/pkgs/applications/virtualization/OVMF/default.nix
index fc3c679d414d..608ae594a2e9 100644
--- a/pkgs/applications/virtualization/OVMF/default.nix
+++ b/pkgs/applications/virtualization/OVMF/default.nix
@@ -9,10 +9,11 @@ let
   else
     throw "Unsupported architecture";
 
+  version = (builtins.parseDrvName edk2.name).version;
 in
 
 stdenv.mkDerivation (edk2.setup "OvmfPkg/OvmfPkg${targetArch}.dsc" {
-  name = "OVMF-2014-12-10";
+  name = "OVMF-${version}";
 
   # TODO: properly include openssl for secureBoot
   buildInputs = [nasm iasl] ++ stdenv.lib.optionals (secureBoot == true) [ openssl ];
diff --git a/pkgs/applications/virtualization/qemu/default.nix b/pkgs/applications/virtualization/qemu/default.nix
index e5620b6ce456..d09926da7cdb 100644
--- a/pkgs/applications/virtualization/qemu/default.nix
+++ b/pkgs/applications/virtualization/qemu/default.nix
@@ -18,7 +18,7 @@
 
 with stdenv.lib;
 let
-  version = "2.8.0";
+  version = "2.9.0";
   audio = optionalString (hasSuffix "linux" stdenv.system) "alsa,"
     + optionalString pulseSupport "pa,"
     + optionalString sdlSupport "sdl,";
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "http://wiki.qemu.org/download/qemu-${version}.tar.bz2";
-    sha256 = "0qjy3rcrn89n42y5iz60kgr0rrl29hpnj8mq2yvbc1wrcizmvzfs";
+    sha256 = "053c7ivp3li7cdagzkp2wdc5myybzjf826r6qfkcf0xvn4bv5gq0";
   };
 
   buildInputs =
@@ -54,94 +54,8 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  patches = let
-    upstreamPatch = name: commit: sha256: fetchurl {
-      name = "${name}.patch";
-      url = "http://git.qemu-project.org/?p=qemu.git;a=patch;h=${commit}";
-      inherit sha256;
-    };
-  in [
-    ./no-etc-install.patch
-
-    # bugfixes
-    (fetchurl {
-      name = "qemu-vnc-do-not-disconnect-on-EAGAIN.patch";
-      url = "https://anonscm.debian.org/cgit/pkg-qemu/qemu.git/plain/debian/patches/vnc-do-not-disconnect-on-EAGAIN.patch?h=debian/qemu_2.8%2bdfsg-3";
-      sha256 = "1nqhfgfw1pzhid094pk204qy36r6n7w1yilsiwabgcsyxs5bymnh";
-    })
-
-    (upstreamPatch "qemu-fix-win7-xhci" "7da76e12cc5cc902dda4c168d8d608fd4e61cbc5"
-      "0m1ggbxziy7vqz9007ypzg23cni8cc4db36wlnhxz0kdpq70c6x0")
-
-    (upstreamPatch "qemu-xhci-free-completed-transfers" "f94d18d6c6df388fde196d3ab252f57e33843a8b"
-      "0lk19qss6ky7cqnvis54742cr2z0vl8c64chhch0kp6n83hray9x")
-
-    # security fixes from debian
-    (fetchurl {
-      name = "CVE-2016-9602.patch";
-      url = "https://anonscm.debian.org/cgit/pkg-qemu/qemu.git/plain/debian/patches/9pfs-symlink-attack-fixes-CVE-2016-9602.patch?h=debian/qemu_2.8%2bdfsg-3";
-      sha256 = "0f7m1k3hbw9v0dwqn53ds36s7s334vlidvbn0682s9r2sq0sjlkv";
-    })
-
-    (fetchurl {
-      name = "CVE-2017-2630.patch";
-      url = "https://anonscm.debian.org/cgit/pkg-qemu/qemu.git/plain/debian/patches/nbd_client-fix-drop_sync-CVE-2017-2630.patch?h=debian/qemu_2.8%2bdfsg-3";
-      sha256 = "1gdxaari53iwgj3gyczz30rhg8lj6xqycxym4snw9z5vmkyj1bbq";
-    })
-
-    (fetchurl {
-      name = "CVE-2017-6058.patch";
-      url = "https://anonscm.debian.org/cgit/pkg-qemu/qemu.git/plain/debian/patches/vmxnet3-fix-memory-corruption-on-vlan-header-stripping-CVE-2017-6058.patch?h=debian/qemu_2.8%2bdfsg-3";
-      sha256 = "0w8az2cr116mnijxjd4aprl8dvfdj76gm7ddajmngdslxiax601f";
-    })
-
-    # security fixes from upstream
-    (upstreamPatch "CVE-2016-7907" "81f17e0d435c3db3a3e67e0d32ebf9c98973211f"
-      "0dzghbm3jmnyw34kd40a6akrr1cpizd9hdzqmhlc2ljab7pr1rcb")
-
-    (upstreamPatch "CVE-2016-10155" "eb7a20a3616085d46aa6b4b4224e15587ec67e6e"
-      "1xk00fyls0hdza11dyfrnzcn6gibmmcrwy7sxgp6iizp6wgzi3vw")
-
-    (upstreamPatch "CVE-2017-2615" "62d4c6bd5263bb8413a06c80144fc678df6dfb64"
-      "0miph2x4d474issa44hmc542zxmkc7lsr4ncb7pwarq6j7v52l8h")
-
-    (upstreamPatch "CVE-2017-2620" "92f2b88cea48c6aeba8de568a45f2ed958f3c298"
-      "1kz12qmvfccy7xilsrxahbs67jycv4zjfbijxivadvx9klxs1n58")
-
-    (upstreamPatch "CVE-2017-5525" "12351a91da97b414eec8cdb09f1d9f41e535a401"
-      "190b4aqr35p4lb3rjarknfi1ip1c9zizliqp1dd6frx4364y5yp2")
-
-    (upstreamPatch "CVE-2017-5526" "069eb7b2b8fc47c7cb52e5a4af23ea98d939e3da"
-      "05xgzd3zldk3x2vqpjag9z5ilhdkpkyh633fb5kvnz8scns6v86f")
-
-    (upstreamPatch "CVE-2017-5579" "8409dc884a201bf74b30a9d232b6bbdd00cb7e2b"
-      "0lbcyhif1kdcy8my0bv8aqr2f421kmljcch3plrjzj9pgcm4sv83")
-
-    (upstreamPatch "CVE-2017-5667" "42922105beb14c2fc58185ea022b9f72fb5465e9"
-      "049vq70is3fj9bf4ysfj3s44iz93qhyqn6xijck32w1x6yyzqyx4")
-
-    (upstreamPatch "CVE-2017-5667-fix" "913a87885f589d263e682c2eb6637c6e14538061"
-      "0nm1k2r9n6r86dvjr16hxak2vcsinj7ijlqw5i6f4y5h2sh37wr5")
-
-    (upstreamPatch "CVE-2017-5856" "765a707000e838c30b18d712fe6cb3dd8e0435f3"
-      "03pjkn8l8rp9ip5h5rm1dp0nrwd43nmgpwamz4z1vy3rli1z3yjw")
-
-    (upstreamPatch "CVE-2017-5857" "5e8e3c4c75c199aa1017db816fca02be2a9f8798"
-      "1kz14rmxf049zl5m27apzpbvy8dk0g47n9gnwy0nm70g65rl1dh8")
-
-    (upstreamPatch "CVE-2017-5898" "c7dfbf322595ded4e70b626bf83158a9f3807c6a"
-      "1y2j0qw04s8fl0cs8i619y08kj75lxn3c0y19g710fzpk3rq8dvn")
-
-    (upstreamPatch "CVE-2017-5931" "a08aaff811fb194950f79711d2afe5a892ae03a4"
-      "0hlih9jhbb1mb174hvxs7pf7lgcs7s9g705ri9rliw7wrhqdpja5")
-
-    (upstreamPatch "CVE-2017-5973" "f89b60f6e5fee3923bedf80e82b4e5efc1bb156b"
-      "06niyighjxb4p5z2as3mqfmrwrzn4sq47j7raipbq9gnda7x9sw6")
-
-    (upstreamPatch "CVE-2017-5987" "6e86d90352adf6cb08295255220295cf23c4286e"
-      "09yfxf93cisx8rhm0h48ib1ibwfs420k5pqpz8dnz33nci9567jm")
-
-  ] ++ optional nixosTestRunner ./force-uid0-on-9p.patch;
+  patches = [ ./no-etc-install.patch ]
+    ++ optional nixosTestRunner ./force-uid0-on-9p.patch;
 
   hardeningDisable = [ "stackprotector" ];
 
diff --git a/pkgs/applications/virtualization/qemu/no-etc-install.patch b/pkgs/applications/virtualization/qemu/no-etc-install.patch
index 833f030bed35..47b4b3176dc8 100644
--- a/pkgs/applications/virtualization/qemu/no-etc-install.patch
+++ b/pkgs/applications/virtualization/qemu/no-etc-install.patch
@@ -1,11 +1,10 @@
 --- a/Makefile
 +++ b/Makefile
-@@ -418,7 +418,7 @@
+@@ -597,7 +597,7 @@
  
  
- install: all $(if $(BUILD_DOCS),install-doc) \
--install-datadir install-localstatedir
-+install-datadir
+-install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-localstatedir
++install: all $(if $(BUILD_DOCS),install-doc) install-datadir
  ifneq ($(TOOLS),)
- 	$(call install-prog,$(TOOLS),$(DESTDIR)$(bindir))
+	$(call install-prog,$(subst qemu-ga,qemu-ga$(EXESUF),$(TOOLS)),$(DESTDIR)$(bindir))
  endif
diff --git a/pkgs/data/fonts/emacs-all-the-icons-fonts/default.nix b/pkgs/data/fonts/emacs-all-the-icons-fonts/default.nix
new file mode 100644
index 000000000000..0e895339f24c
--- /dev/null
+++ b/pkgs/data/fonts/emacs-all-the-icons-fonts/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "emacs-all-the-icons-fonts-${version}";
+  version = "2.50";
+
+  src = fetchFromGitHub {
+    owner = "domtronn";
+    repo = "all-the-icons.el";
+    rev = "2.5.0";
+    sha256 = "125qw96rzbkv39skxk5511jrcx9hxm0fqcmny6213wzswgdn37z3";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/all-the-icons
+    for font in $src/fonts/*.ttf; do cp $font $out/share/fonts/all-the-icons; done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Icon fonts for emacs all-the-icons";
+    longDescription = ''
+      The emacs package all-the-icons provides icons to improve
+      presentation of information in emacs. This package provides
+      the fonts needed to make the package work properly.
+    '';
+    homepage = https://github.com/domtronn/all-the-icons.el;
+
+    /*
+    The fonts come under a mixture of licenses - the MIT license,
+    SIL OFL license, and Apache license v2.0. See the GitHub page
+    for further information.
+    */
+    license = licenses.free;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ rlupton20 ];
+  };
+}
diff --git a/pkgs/development/libraries/hunspell/default.nix b/pkgs/development/libraries/hunspell/default.nix
index c33434d202f5..952050f0e8f7 100644
--- a/pkgs/development/libraries/hunspell/default.nix
+++ b/pkgs/development/libraries/hunspell/default.nix
@@ -1,16 +1,21 @@
-{ stdenv, fetchurl, ncurses, readline }:
+{ stdenv, fetchurl, ncurses, readline, autoreconfHook }:
 
 stdenv.mkDerivation rec {
-  name = "hunspell-1.3.3";
+  version = "1.6.1";
+  name = "hunspell-${version}";
 
   src = fetchurl {
-    url = "mirror://sourceforge/hunspell/${name}.tar.gz";
-    sha256 = "0v14ff9s37vkh45diaddndcrj0hmn67arh8xh8k79q9c1vgc1cm7";
+    url = "https://github.com/hunspell/hunspell/archive/v${version}.tar.gz";
+    sha256 = "0j9c20sj7bgd6f77193g1ihy8w905byk2gdhdc0r9dsh7irr7x9h";
   };
 
   outputs = [ "bin" "dev" "out" "man" ];
 
   buildInputs = [ ncurses readline ];
+  nativeBuildInputs = [ autoreconfHook ];
+
+  autoreconfFlags = "-vfi";
+
   configureFlags = [ "--with-ui" "--with-readline" ];
 
   hardeningDisable = [ "format" ];
diff --git a/pkgs/development/libraries/qtstyleplugins/default.nix b/pkgs/development/libraries/qtstyleplugins/default.nix
index 215a038adbe1..dc27e2034f1c 100644
--- a/pkgs/development/libraries/qtstyleplugins/default.nix
+++ b/pkgs/development/libraries/qtstyleplugins/default.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchFromGitHub, qmakeHook, qtbase, pkgconfig, gtk2 }:
 
 stdenv.mkDerivation rec {
-  name = "qtstyleplugins-2016-12-01";
+  name = "qtstyleplugins-2017-03-11";
 
   src = fetchFromGitHub {
     owner = "qt";
     repo = "qtstyleplugins";
-    rev = "7aa47640c202cc4a9c16aa7df98191236743c8ba";
-    sha256 = "0pysgn5yhbh85rv7syvf2w9g1gj1z1nwspjri39dc95vj108lin5";
+    rev = "335dbece103e2cbf6c7cf819ab6672c2956b17b3";
+    sha256 = "085wyn85nrmzr8nv5zv7fi2kqf8rp1gnd30h72s30j55xvhmxvmy";
   };
 
   buildInputs = [ qmakeHook pkgconfig gtk2 ];
@@ -23,6 +23,5 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl21;
     maintainers = [ maintainers.gnidorah ];
     platforms = platforms.linux;
-    broken = builtins.compareVersions qtbase.version "5.7.0" > 0;
   };
 }
diff --git a/pkgs/development/libraries/qtwebkit-plugins/default.nix b/pkgs/development/libraries/qtwebkit-plugins/default.nix
index fbb2ffdd83b8..73e629451135 100644
--- a/pkgs/development/libraries/qtwebkit-plugins/default.nix
+++ b/pkgs/development/libraries/qtwebkit-plugins/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation {
   buildInputs = [ qtwebkit hunspell ];
 
   postPatch = ''
-    sed -i "s,-lhunspell,-lhunspell-1.3," src/spellcheck/spellcheck.pri
+    sed -i "s,-lhunspell,-lhunspell-1.6," src/spellcheck/spellcheck.pri
     sed -i "s,\$\$\[QT_INSTALL_PLUGINS\],$out/lib/qt5/plugins," src/src.pro
   '';
 
diff --git a/pkgs/development/node-packages/README.md b/pkgs/development/node-packages/README.md
index 138d1475c2fe..c1ed650f2324 100644
--- a/pkgs/development/node-packages/README.md
+++ b/pkgs/development/node-packages/README.md
@@ -2,7 +2,7 @@ Node.js packages
 ===============
 To add a package from [NPM](https://www.npmjs.com/) to nixpkgs:
 
- 1. Install node2nix: `nix-env -f '<nixpkgs>' -iA node2nix`.
+ 1. Install node2nix: `nix-env -f '<nixpkgs>' -iA nodePackages.node2nix`.
  2. Modify `pkgs/development/node-packages/node-packages.json`, to add, update,
     or remove package entries.
  3. Run the script: `cd pkgs/development/node-packages && sh generate.sh`.
diff --git a/pkgs/development/python-modules/pyspread/default.nix b/pkgs/development/python-modules/pyspread/default.nix
new file mode 100644
index 000000000000..2f275005c199
--- /dev/null
+++ b/pkgs/development/python-modules/pyspread/default.nix
@@ -0,0 +1,57 @@
+{ buildPythonPackage
+, fetchPypi
+, isPy3k
+, stdenv
+, numpy
+, wxPython
+, matplotlib
+, pycairo
+, python-gnupg
+, xlrd
+, xlwt
+, jedi
+, pyenchant
+, basemap
+, pygtk
+, makeDesktopItem
+}:
+
+buildPythonPackage rec {
+  name = "${pname}-${version}";
+  pname = "pyspread";
+  version = "1.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0m1a4zvzrfrnc42j8mrbm7747w03nzyl9z02wjagccmlhi6nd9hx";
+  };
+
+  propagatedBuildInputs = [ numpy wxPython matplotlib pycairo python-gnupg xlrd xlwt jedi pyenchant basemap pygtk ];
+  # Could also (optionally) add pyrsvg and python bindings for libvlc
+
+  # Tests try to access X Display
+  doCheck = false;
+
+  disabled = isPy3k;
+
+  desktopItem = makeDesktopItem rec {
+    name = pname;
+    exec = name;
+    icon = name;
+    desktopName = "Pyspread";
+    genericName = "Spreadsheet";
+    comment = meta.description;
+    categories = "Development;Spreadsheet;";
+  };
+
+  postInstall = ''
+    mkdir -p $out/share/applications
+    cp $desktopItem/share/applications/* $out/share/applications
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Pyspread is a non-traditional spreadsheet application that is based on and written in the programming language Python";
+    homepage = https://manns.github.io/pyspread/;
+    license = licenses.gpl3;
+  };
+}
diff --git a/pkgs/development/python-modules/wxPython/3.0.nix b/pkgs/development/python-modules/wxPython/3.0.nix
index defdc920d6e5..14f6f802ba2a 100644
--- a/pkgs/development/python-modules/wxPython/3.0.nix
+++ b/pkgs/development/python-modules/wxPython/3.0.nix
@@ -12,6 +12,8 @@
 , isPy3k
 , isPyPy
 , python
+, cairo
+, pango
 }:
 
 assert wxGTK.unicode;
@@ -43,6 +45,15 @@ buildPythonPackage rec {
     # this check is supposed to only return false on older systems running non-framework python
     substituteInPlace src/osx_cocoa/_core_wrap.cpp \
       --replace "return wxPyTestDisplayAvailable();" "return true;"
+  '' + lib.optionalString (!stdenv.isDarwin) ''
+    substituteInPlace wx/lib/wxcairo.py \
+      --replace 'cairoLib = None' 'cairoLib = ctypes.CDLL("${cairo}/lib/libcairo.so")'
+    substituteInPlace wx/lib/wxcairo.py \
+      --replace '_dlls = dict()' '_dlls = {k: ctypes.CDLL(v) for k, v in [
+        ("gdk",        "${wxGTK.gtk}/lib/libgtk-x11-2.0.so"),
+        ("pangocairo", "${pango.out}/lib/libpangocairo-1.0.so"),
+        ("appsvc",     None)
+      ]}'
   '';
 
   NIX_LDFLAGS = lib.optionalString (!stdenv.isDarwin) "-lX11 -lgdk-x11-2.0";
diff --git a/pkgs/development/ruby-modules/bundix/default.nix b/pkgs/development/ruby-modules/bundix/default.nix
index 378f148ca6ac..42d6ee04b59d 100644
--- a/pkgs/development/ruby-modules/bundix/default.nix
+++ b/pkgs/development/ruby-modules/bundix/default.nix
@@ -5,9 +5,9 @@ buildRubyGem rec {
 
   name = "${gemName}-${version}";
   gemName = "bundix";
-  version = "2.0.8";
+  version = "2.1.0";
 
-  sha256 = "0ikpf2g01izadjpdnc4k2rb9v4g11f1jk2y5alxc7n7rxjkwdc66";
+  sha256 = "5a073c59dfc7e2367c47e6513fc8914d27e11c08f82bc1103c4793dfb2837bef";
 
   buildInputs = [bundler];
 
diff --git a/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix b/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix
index 97e195f592e9..d7f13de1d26b 100644
--- a/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix
+++ b/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix
@@ -1,16 +1,16 @@
 { lib, buildGoPackage, fetchFromGitLab, fetchurl, go-bindata }:
 
 let
-  version = "9.0.0";
+  version = "9.1.0";
   # Gitlab runner embeds some docker images these are prebuilt for arm and x86_64
   docker_x86_64 = fetchurl {
     url = "https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v${version}/docker/prebuilt-x86_64.tar.xz";
-    sha256 = "1f170akb7j7imgr18m32fy6v3rk98inrjl5a4xymfpivwwqyv9p8";
+    sha256 = "1mdcw755fygnf30v0gr13mx20zjqmxg5w2kj3k2jgcsh3gyrvymr";
   };
 
   docker_arm = fetchurl {
     url = "https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v${version}/docker/prebuilt-arm.tar.xz";
-    sha256 = "15mlix8j7bqjg5y07c439d7s197c16zxffknx42z1i3qxcz2mpa4";
+    sha256 = "1m5p6mlhy3xf0chrjlfpdyp24pv32b61s8iryh6a617i91vpzjg6";
   };
 in
 buildGoPackage rec {
@@ -29,7 +29,7 @@ buildGoPackage rec {
     owner = "gitlab-org";
     repo = "gitlab-ci-multi-runner";
     rev = "v${version}";
-    sha256 = "1csha30lcwm1mk6hqbh0j8bb25apyni23szw79l8xjhmiw2ch619";
+    sha256 = "0n8hcj2b1pb95x4bd7fb9ri43vgc4h2dj2v3iiziw2imqjyphfx4";
   };
 
   buildInputs = [ go-bindata ];
diff --git a/pkgs/development/tools/continuous-integration/gitlab-runner/v1.nix b/pkgs/development/tools/continuous-integration/gitlab-runner/v1.nix
index d49221d6e6aa..cfc952395c2f 100644
--- a/pkgs/development/tools/continuous-integration/gitlab-runner/v1.nix
+++ b/pkgs/development/tools/continuous-integration/gitlab-runner/v1.nix
@@ -1,16 +1,16 @@
 { lib, buildGoPackage, fetchFromGitLab, fetchurl, go-bindata }:
 
 let
-  version = "1.11.1";
+  version = "1.11.2";
   # Gitlab runner embeds some docker images these are prebuilt for arm and x86_64
   docker_x86_64 = fetchurl {
     url = "https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v${version}/docker/prebuilt-x86_64.tar.xz";
-    sha256 = "1fahwvwdli6glxsljrd030x15y18jwk72lg1xmrgms409r9y308m";
+    sha256 = "08lacd2p7915y7yjnwkj2k0b0x4qj9kc53p7qgvmq8kdi31xnh4z";
   };
 
   docker_arm = fetchurl {
     url = "https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v${version}/docker/prebuilt-arm.tar.xz";
-    sha256 = "0nqda27qcb6r1p2xc2973g08fwb8cnmyc9rswy6776r8ypagn2zw";
+    sha256 = "0lzvx3jfy8493q8zkbs7kgm5a3jgsi3f2x25jwg4lx7agcwwsygw";
   };
 in
 buildGoPackage rec {
@@ -29,7 +29,7 @@ buildGoPackage rec {
     owner = "gitlab-org";
     repo = "gitlab-ci-multi-runner";
     rev = "v${version}";
-    sha256 = "0ix00p9f01fg8m6p3b1c20hqrcv7pivh6hq92pb9qyiyzmcfap47";
+    sha256 = "1sjvlb5981ykc8hr4kp1ibh9jw2wdjjp9zs2nqs9lpsav4nda5fr";
   };
 
   buildInputs = [ go-bindata ];
diff --git a/pkgs/games/mudlet/libs.patch b/pkgs/games/mudlet/libs.patch
index 3943c16e0eab..45b693828ff2 100644
--- a/pkgs/games/mudlet/libs.patch
+++ b/pkgs/games/mudlet/libs.patch
@@ -7,7 +7,7 @@
 -        -llua5.1 \
 -        -lhunspell \
 +        -llua \
-+        -lhunspell-1.3 \
++        -lhunspell-1.6 \
          -L/usr/local/lib/ \
          -lyajl \
          -lGLU \
diff --git a/pkgs/games/quakespasm/default.nix b/pkgs/games/quakespasm/default.nix
index 4a90e57853ed..cd7787604c2e 100644
--- a/pkgs/games/quakespasm/default.nix
+++ b/pkgs/games/quakespasm/default.nix
@@ -3,7 +3,6 @@ stdenv.mkDerivation rec {
   name = "quakespasm-${version}";
   majorVersion = "0.92";
   version = "${majorVersion}.1";
-  platform = "amd64";
 
   src = fetchurl {
     url = "mirror://sourceforge/quakespasm/quakespasm-${version}.tgz";
@@ -20,11 +19,9 @@ stdenv.mkDerivation rec {
     mkdir -p "$out/bin"
     substituteInPlace Makefile --replace "/usr/local/games" "$out/bin"
   '';
-  
+
   enableParallelBuilding = true;
   
-  platforms = ["x86_64-linux"];
-
   meta = {
     description = "An engine for iD software's Quake";
     homepage = "http://quakespasm.sourceforge.net/";
@@ -36,6 +33,8 @@ stdenv.mkDerivation rec {
       works best for you. SDL is probably less buggy, but SDL2 has nicer features 
       and smoother mouse input - though no CD support.
     '';
-    platforms = platforms.linux;
+  
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.m3tti ];
   };
 }
diff --git a/pkgs/misc/emulators/wine/sources.nix b/pkgs/misc/emulators/wine/sources.nix
index 42d99a39eee8..8c04b4fc433c 100644
--- a/pkgs/misc/emulators/wine/sources.nix
+++ b/pkgs/misc/emulators/wine/sources.nix
@@ -31,6 +31,7 @@ in rec {
   };
 
   unstable = fetchurl rec {
+    # NOTE: Don't forget to change the SHA256 for staging as well.
     version = "2.6";
     url = "https://dl.winehq.org/wine/source/2.x/wine-${version}.tar.xz";
     sha256 = "1h5ajw50fax2pg9p4wch6824zxdd85g2gh9nkbllfxj3ixsn9zz6";
@@ -39,7 +40,7 @@ in rec {
 
   staging = fetchFromGitHub rec {
     inherit (unstable) version;
-    sha256 = "1l0sjbsajr4m7w3ar2ljwr3ffmwyv57g85a068ard3v8fv4nil22";
+    sha256 = "1j1fsq7pb7rxi7ppagrk93gmg5wk3anr9js0civxiqd3h8d4lsz2";
     owner = "wine-compholio";
     repo = "wine-staging";
     rev = "v${version}";
diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix
index f818962b8ae0..05080bd932f5 100644
--- a/pkgs/misc/vim-plugins/default.nix
+++ b/pkgs/misc/vim-plugins/default.nix
@@ -125,11 +125,11 @@ rec {
   };
 
   CheckAttach = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "CheckAttach-2017-02-26";
+    name = "CheckAttach-2017-03-15";
     src = fetchgit {
       url = "git://github.com/chrisbra/CheckAttach";
-      rev = "4e841a854e8ee3fd24849e972a3c3f5456ef6be3";
-      sha256 = "0dvqrca1sa8r29kg2k6qhpp3mbsbk29p81zpa7gzw8h73kqfwph1";
+      rev = "b583efd45e03902438a55299623390a0f9253513";
+      sha256 = "0j1nx8ryrlixisd8z2d24k1xk2yrqk4i0ar8m4vq3jlr74309a34";
     };
     dependencies = [];
 
@@ -180,11 +180,11 @@ rec {
   };
 
   Syntastic = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "Syntastic-2017-02-28";
+    name = "Syntastic-2017-04-18";
     src = fetchgit {
       url = "git://github.com/scrooloose/syntastic";
-      rev = "48e8b0e9d2721f608fd1d1157c9388b2626cbddf";
-      sha256 = "0q52iqnbqm1h5iy8wr4l03y8w9yamgk48sd495p255pmxn8dryc5";
+      rev = "0bfac45565efa4e94364818b3b0cb2ee46826a0f";
+      sha256 = "1s798kjdms8piq2yf6c8sxmvpp13ddp5d1ghq6fcvwfh5s5k7b2n";
     };
     dependencies = [];
 
@@ -213,22 +213,22 @@ rec {
   };
 
   The_NERD_Commenter = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "The_NERD_Commenter-2017-02-28";
+    name = "The_NERD_Commenter-2017-04-07";
     src = fetchgit {
       url = "git://github.com/scrooloose/nerdcommenter";
-      rev = "41e686824a5b77ba5afe9c5dabdc045aac922c5a";
-      sha256 = "1c9zhlljbnskmgn8ycckznbh05cf3ldbq902gg8rn0n0433dy7wc";
+      rev = "285902752f7ab2052ac700a6d29b263dd5788afb";
+      sha256 = "1hd5ibpvxra8asr4zp0l68wc4djjgfbvh7kzmxc1r7jqr70wj8dl";
     };
     dependencies = [];
 
   };
 
   The_NERD_tree = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "The_NERD_tree-2017-02-25";
+    name = "The_NERD_tree-2017-04-12";
     src = fetchgit {
       url = "git://github.com/scrooloose/nerdtree";
-      rev = "e671e403dd1ec1da59f70605c73aaedb6cb0e637";
-      sha256 = "0g3bdwbg6hyh83qn4ad1hjk3pvq049fjqwj6viwa668zyvq4vwm4";
+      rev = "45f4d61f04e7ef33360f7735931da9ea2ebc05e0";
+      sha256 = "1wcfz94q8lv304pdr2721gsalhvns3g9ya4lq1agp2r3m6hfsrw6";
     };
     dependencies = [];
 
@@ -257,11 +257,11 @@ rec {
   };
 
   WebAPI = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "WebAPI-2016-07-06";
+    name = "WebAPI-2017-03-13";
     src = fetchgit {
       url = "git://github.com/mattn/webapi-vim";
-      rev = "e3fa93f29a3a0754204002775e140d8a9acfd7fd";
-      sha256 = "0z6s3cnipcww4q33d4dcp0p8jw29izghcrj75fxy6dmy1yw2fbcr";
+      rev = "54b0c168dfbd3fd4a7d876a3cead1bdaf7810b0a";
+      sha256 = "1mjj87f1sb9kmpkclv9qpbmsf6j6nr536636867k1bis39rahkdg";
     };
     dependencies = [];
 
@@ -298,11 +298,11 @@ rec {
   };
 
   commentary = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "commentary-2016-03-10";
+    name = "commentary-2017-03-12";
     src = fetchgit {
       url = "git://github.com/tpope/vim-commentary";
-      rev = "73e0d9a9d1f51b6cc9dc965f62669194ae851cb1";
-      sha256 = "1z409hpdk22v2ccx2y3sgcjf4fmnq7pyjfnk72srpqydfivxsl13";
+      rev = "be79030b3e8c0ee3c5f45b4333919e4830531e80";
+      sha256 = "1msbmbz96wa88ymjvcrbr07mxdrsjy1w2hl7z4pihf318ryq98cm";
     };
     dependencies = [];
 
@@ -345,18 +345,6 @@ rec {
 
   };
 
-  ensime-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "ensime-vim-2017-02-06";
-    src = fetchgit {
-      url = "git://github.com/ensime/ensime-vim";
-      rev = "7b5f79c67a078c6e1e5f8c906d4227ce86d33df8";
-      sha256 = "04knizaa4gc1z22gxj41qybjl4ysqpv15rwi28h10l7gk9fb1b41";
-    };
-    dependencies = ["vimproc" "vimshell" "self" "forms"];
-
-    pythonDependencies = with pythonPackages; [ sexpdata websocket_client ];
-  };
-
   extradite = buildVimPluginFrom2Nix { # created by nix#NixDerivation
     name = "extradite-2015-09-22";
     src = fetchgit {
@@ -368,23 +356,12 @@ rec {
 
   };
 
-  forms = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "forms-2012-11-28";
-    src = fetchgit {
-      url = "git://github.com/megaannum/forms";
-      rev = "b601e03fe0a3b8a43766231f4a6217e4492b4f75";
-      sha256 = "19kp1i5c6jmnpbsap9giayqbzlv7vh02mp4mjvicqj9n0nfyay74";
-    };
-    dependencies = ["self"];
-
-  };
-
   fugitive = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "fugitive-2017-02-25";
+    name = "fugitive-2017-04-11";
     src = fetchgit {
       url = "git://github.com/tpope/vim-fugitive";
-      rev = "87c1bda4d5573185a1f79c42a919c4b62bc34c42";
-      sha256 = "1zfq28sawq5x6y55w5m248r5vhs2g0llhs2xpihys9kg7jgj49zq";
+      rev = "b2665cc65002c3ebf3aa771bb1b65ea8ef6b57d6";
+      sha256 = "113j1l6hhf37kmja99bqx8jif2b5f04q063arqb0a8fs1sg42mxh";
     };
     dependencies = [];
 
@@ -402,22 +379,22 @@ rec {
   };
 
   vim-auto-save = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-auto-save-2017-01-16";
+    name = "vim-auto-save-2017-03-10";
     src = fetchgit {
       url = "https://github.com/907th/vim-auto-save";
-      rev = "8301d9a7bb60151f8b07b3be1a9b66a7c8aa81c5";
-      sha256 = "1yp117kfgrg5hsgm48k9ahh6pgirl1nx2z9k36ixpg80cj2wyj2y";
+      rev = "a81dea26d2a62dbe1a0f89aba5834aee40a89512";
+      sha256 = "16ljzp2rww9c13pl2ci2pqri1774qp3yhhh042n7vqxcwy80kjjc";
     };
     dependencies = [];
 
   };
 
   vim-autoformat = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-autoformat-2017-02-19";
+    name = "vim-autoformat-2017-04-12";
     src = fetchgit {
       url = "https://github.com/Chiel92/vim-autoformat";
-      rev = "42adced2500134017180ec37d10a8ffcde48e825";
-      sha256 = "0yabhdnarrb0iiv51lxjvlicmlh6ga9n51iwrriv03p43s9h5hg1";
+      rev = "c449c413a9fda26572f614ab8e369c46c065f7ac";
+      sha256 = "0llxgixv14sjajsk4lw41sn7dzjli0z96bl58515m66dld41vqxj";
     };
     dependencies = [];
 
@@ -435,44 +412,44 @@ rec {
   };
 
   tsuquyomi = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "tsuquyomi-2017-02-16";
+    name = "tsuquyomi-2017-04-17";
     src = fetchgit {
       url = "https://github.com/Quramy/tsuquyomi";
-      rev = "043f8e0a008853bfe4c6a56a04930defe8494984";
-      sha256 = "0jzkg2wrs46g6ycidh54z0rdhvjfm1syaf6sf17cl9m7h6wprsy8";
+      rev = "3610fcded0de1b739e351c02edb2aa26d6946139";
+      sha256 = "1flgd6al8h3wvavp4wy280dxgd2a8pzfwgpkmlvl866mqgam6566";
     };
     dependencies = [];
 
   };
 
   deoplete-nvim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "deoplete-nvim-2017-03-02";
+    name = "deoplete-nvim-2017-04-20";
     src = fetchgit {
       url = "https://github.com/Shougo/deoplete.nvim";
-      rev = "b9774f4a320838288670fd215901115b06b4a600";
-      sha256 = "1r91lnbjqhvpzszygkl4s1m9wc1qh4pg2pd43r66akpnddmgil0k";
+      rev = "bda6d16700d8d728ebd5d422d4936a5977c40273";
+      sha256 = "12yq8wh5hcriyzfdxip3jn5l820yd0l58h15axg7fxd0r29jfnks";
     };
     dependencies = [];
 
   };
 
   Spacegray-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "Spacegray-vim-2016-10-30";
+    name = "Spacegray-vim-2017-04-21";
     src = fetchgit {
       url = "https://github.com/ajh17/Spacegray.vim";
-      rev = "79936a4434bf57b64c2d73320e62b4e67d84af74";
-      sha256 = "0dg037aw99yjdirw6f8v6da1lyf5ba2c6bni2wnka6bmzqx0k53r";
+      rev = "c9e63f8a73a9def97d3b9a6f0a38be488b516ce0";
+      sha256 = "1sdyn5qr7ylfmx4dyvbvndmd34xmi50rh8n5hi50nxmsqxc1mgij";
     };
     dependencies = [];
 
   };
 
   vim-closetag = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-closetag-2016-07-19";
+    name = "vim-closetag-2017-04-12";
     src = fetchgit {
       url = "https://github.com/alvan/vim-closetag";
-      rev = "e7e6cb99b9abb2aaa4711b9b2a98ad029169253b";
-      sha256 = "0827yrgawfjf82z37lndf58ikyh6s8g9qhxvnbfxvz8cc4a6r21v";
+      rev = "6cfc98911d904cfcdf1f1eb231d28fbe01c0e02f";
+      sha256 = "0fwly5li52fi1i7qlilinm52d28vmcfwz5di18v369xjjnz1vd47";
     };
     dependencies = [];
 
@@ -490,11 +467,11 @@ rec {
   };
 
   clighter8 = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "clighter8-2017-03-04";
+    name = "clighter8-2017-04-19";
     src = fetchgit {
       url = "https://github.com/bbchung/clighter8";
-      rev = "229012f8f8181417e0f43b4f19c4273dd7d5233a";
-      sha256 = "0hx9l1mr7im9zrwhwf6n2lyc5azna7b2lkz4v1y9f93gv78b1vv5";
+      rev = "3ee6c2ed576a381619707e20173fa52e34cc2712";
+      sha256 = "1kmlwz7pjxqhvv72bvd8ip70ds2c2bc8c70912lskyz18gx132bw";
     };
     dependencies = [];
     preFixup = ''
@@ -504,22 +481,33 @@ rec {
   };
 
   neomake = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "neomake-2017-03-03";
+    name = "neomake-2017-04-21";
     src = fetchgit {
       url = "https://github.com/benekastah/neomake";
-      rev = "4cd4dbb68f4f5c365e213552642c7e8a8b954f83";
-      sha256 = "1h03cxdbbzghigrya2xy7a4rri5fjm8vma4bya7xfndc0sg9wlhz";
+      rev = "c4ef3148796b349b0a85840b887957e22b2b0163";
+      sha256 = "00s34nrnd8zv7rzyr9ka3gig51mk42nc7c8n4bhvyb33xfy50zsj";
     };
     dependencies = [];
 
   };
 
   vim-hdevtools = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-hdevtools-2012-12-29";
+    name = "vim-hdevtools-2017-03-11";
     src = fetchgit {
       url = "https://github.com/bitc/vim-hdevtools";
-      rev = "474947c52ff9c93dd36f3c49de90bd9a78f0baa1";
-      sha256 = "1wwjb9m2l9q75d408jzq9bwv5i376bfgs6vc3ihwwlawcrmhjpxz";
+      rev = "4ffdace7002915cb10d663a2c56386286c5b8e37";
+      sha256 = "0s7qd72962sc56j8xzpzikjs9k5s89d5p0j541abl8zm0mavmyka";
+    };
+    dependencies = [];
+
+  };
+
+  vim-trailing-whitespace = buildVimPluginFrom2Nix { # created by nix#NixDerivation
+    name = "vim-trailing-whitespace-2016-03-27";
+    src = fetchgit {
+      url = "https://github.com/bronson/vim-trailing-whitespace";
+      rev = "733fb64337b6da4a51c85a43450cd620d8b617b5";
+      sha256 = "1469bd744lf8vk1nnw7kyq4ahpw84crp614mkpq88cs6rhvjhcyw";
     };
     dependencies = [];
 
@@ -548,33 +536,33 @@ rec {
   };
 
   spacevim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "spacevim-2017-01-22";
+    name = "spacevim-2017-03-31";
     src = fetchgit {
       url = "https://github.com/ctjhoa/spacevim";
-      rev = "bd6ebf63a9a6742823d3d090f992fabe500240c5";
-      sha256 = "10rwqsnd9k255anppj27xjqlcfj91k8jy7c377jk7hqbn5h7dmzn";
+      rev = "f4cd52c1746021bb3278c6a085e8d07f1c1a9258";
+      sha256 = "0y146z0w1cbqwzw84k479a5hxs1phg1s11fqfvszn8928fsm8c4d";
     };
     dependencies = [];
 
   };
 
   ctrlp-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "ctrlp-vim-2017-01-13";
+    name = "ctrlp-vim-2017-04-09";
     src = fetchgit {
       url = "https://github.com/ctrlpvim/ctrlp.vim";
-      rev = "7fa89fec125ce60a341f7c37dd769a8a31c49359";
-      sha256 = "12x1bkipvqbz2jczl80rj6yd61hq18g3g2cx2r1yk19f6n8nfjvc";
+      rev = "1baa289a06dab659eae593910ef05c7d209526be";
+      sha256 = "1sml3hy2agb73rjjxkf8kkb5gkwlpvjn28ihipr12lsvi0ffrs5v";
     };
     dependencies = [];
 
   };
 
   agda-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "agda-vim-2016-10-22";
+    name = "agda-vim-2017-03-18";
     src = fetchgit {
       url = "https://github.com/derekelkins/agda-vim";
-      rev = "5c698a0dcc4881ea8fbe672e60aaca70d4c8b6f4";
-      sha256 = "0ii9gmwnc97zjis7d0a230gbh4pqvx4ja83aypmpmy67s3sxhwvf";
+      rev = "7f00093e485f07aa1daafa71e85306397c059402";
+      sha256 = "1yc1lhzir440jmv5aivhvn3bgxncz7p0vydla6mrf14gw6fqbp12";
     };
     dependencies = [];
 
@@ -592,11 +580,22 @@ rec {
   };
 
   vim-jade = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-jade-2017-02-15";
+    name = "vim-jade-2017-04-07";
     src = fetchgit {
       url = "https://github.com/digitaltoad/vim-jade";
-      rev = "20e41fc7ca0f1f1023c64548918e2b8155bb44ea";
-      sha256 = "1smqwpzsllmwc7kafyj65fkmh8p87b14dzgldnh4cnrhkcbnddav";
+      rev = "ddc5592f8c36bf4bd915c16b38b8c76292c2b975";
+      sha256 = "069pha18g1nlzg44k742vjxm4zwjd1qjzhfllkr35qaiflvjm84y";
+    };
+    dependencies = [];
+
+  };
+
+  pony-vim-syntax = buildVimPluginFrom2Nix { # created by nix#NixDerivation
+    name = "pony-vim-syntax-2016-01-23";
+    src = fetchgit {
+      url = "https://github.com/dleonard0/pony-vim-syntax";
+      rev = "a0ab2e14d5a3796ebec01ce196392dc1de349cb3";
+      sha256 = "1wraray7870hq75jqxyilxb125flhcgk9ysz437qbg75c495znl0";
     };
     dependencies = [];
 
@@ -625,11 +624,11 @@ rec {
   };
 
   editorconfig-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "editorconfig-vim-2016-07-16";
+    name = "editorconfig-vim-2017-04-18";
     src = fetchgit {
       url = "https://github.com/editorconfig/editorconfig-vim";
-      rev = "a459b8cfef00100da40fd69c8ae92c4d1e63e1d2";
-      sha256 = "03slzk7jgr348f59pxghmd9giwla63lxmwvripg99zrlgl0pvp5g";
+      rev = "6bd7d2b3f80c73de66644e203ea10f9197c9f88b";
+      sha256 = "0y0rr3mg3s7jrl97z3wjc0q8pjfs6lgnqphkcn8r3xgskyklvy2b";
     };
     dependencies = [];
 
@@ -647,7 +646,7 @@ rec {
   };
 
   vim-elixir = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-elixir-2017-04-13";
+    name = "vim-elixir-2017-04-12";
     src = fetchgit {
       url = "https://github.com/elixir-lang/vim-elixir";
       rev = "8781ff7c675d0cbfb4859f91698365c2eecf3205";
@@ -669,11 +668,11 @@ rec {
   };
 
   vim-localvimrc = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-localvimrc-2017-03-01";
+    name = "vim-localvimrc-2017-03-09";
     src = fetchgit {
       url = "https://github.com/embear/vim-localvimrc";
-      rev = "aaea27fe897edbfb0c5f71ef0ac02489f4bcfefa";
-      sha256 = "1lp947x9q9746r8zfssnn2xylbvzyyzxh7s7rshqglslwd74hhz8";
+      rev = "78ade3384ece2365878dff902399e6e049296957";
+      sha256 = "0msagnpy1d65nk7a6i0fv4xchlrfbzj5lfvlbfqss825z30kysdh";
     };
     dependencies = [];
 
@@ -690,6 +689,17 @@ rec {
 
   };
 
+  ensime-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
+    name = "ensime-vim-2017-04-06";
+    src = fetchgit {
+      url = "https://github.com/ensime/ensime-vim";
+      rev = "4fd7886b169388e07261c525826c0e453094e446";
+      sha256 = "194qwj3glw3l9yxvd26vn10kl06v1sykqx2cznskqa3vj3z8jb01";
+    };
+    dependencies = ["vimproc" "vimshell" "self" "forms"];
+
+  };
+
   YUNOcommit-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
     name = "YUNOcommit-vim-2014-11-26";
     src = fetchgit {
@@ -702,11 +712,11 @@ rec {
   };
 
   vim-go = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-go-1.12";
+    name = "vim-go-2017-04-02";
     src = fetchgit {
       url = "https://github.com/fatih/vim-go";
-      rev = "26362e4bfcd7601da5b8fcf0041744962766ef0c";
-      sha256 = "19073xxam34vkwdsrqv170f6f6vc9yy8m4034r1l8m9lf67zqla9";
+      rev = "b4936d89bd1480a864382108b49ebf5d2d16728a";
+      sha256 = "1mfsxdnipfigqmmy9l6md98f1ww9b0663a95xa4l713v66sy60cw";
     };
     dependencies = [];
 
@@ -735,22 +745,22 @@ rec {
   };
 
   psc-ide-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "psc-ide-vim-2017-03-03";
+    name = "psc-ide-vim-2017-04-17";
     src = fetchgit {
       url = "https://github.com/frigoeu/psc-ide-vim";
-      rev = "cfd4228ff907be6124953d4ff41951ce3eca28ce";
-      sha256 = "1dvdrj06l65xflq7f5k2c4awrc7hh03qr48h9i39q8lg4xc0qc1p";
+      rev = "deec92002a5a187ff8be3ae6060e202aa859d4cb";
+      sha256 = "0yjlp3rnlai2633slrhxr2g9sqqp1j9pqcm7h03gfgw6rh4kai9k";
     };
     dependencies = [];
 
   };
 
   vim-jsonnet = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-jsonnet-2016-12-16";
+    name = "vim-jsonnet-2017-04-06";
     src = fetchgit {
       url = "https://github.com/google/vim-jsonnet";
-      rev = "ff255a3ac45dcd8bcda04728a8140243adde9c57";
-      sha256 = "16ica7n8dcb3kq40dx3sd8lwvdrz7bzks1cranw2vxh4riv1i251";
+      rev = "2637e273713322befc476760809d46500e6088f3";
+      sha256 = "0fxmqasznb3ra49r4j3fmksik7narnd3b6j1j4najp4l61x27ip2";
     };
     dependencies = [];
 
@@ -768,11 +778,11 @@ rec {
   };
 
   vim-leader-guide = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-leader-guide-2017-02-12";
+    name = "vim-leader-guide-2017-03-18";
     src = fetchgit {
       url = "https://github.com/hecal3/vim-leader-guide";
-      rev = "b545f700ae13e5b6c3e8c1d6e9796305690ba2da";
-      sha256 = "0d1d8w1kp0h4j5hgh2ighvn6l00rq714fwxbswx07l5r931prwy1";
+      rev = "6ac8c663e65c9c0ded70417b84f66ee59457893e";
+      sha256 = "1hqha3ig40ls15bnb10xpbl91swn0gxqnhmz5frkvvdzj4wq55fw";
     };
     dependencies = [];
 
@@ -790,33 +800,33 @@ rec {
   };
 
   calendar-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "calendar-vim-2017-02-09";
+    name = "calendar-vim-2017-04-21";
     src = fetchgit {
       url = "https://github.com/itchyny/calendar.vim";
-      rev = "e6fef6c6f7bdab98026cd2fa1a3900ce2bd0b852";
-      sha256 = "0330vjkd54mx22qyxbgrxnz2k2ybm6izvi5wl6qm5p39dkqwg8ip";
+      rev = "0d86fb4b3ec4954c160b23ec14f461e28c9483a8";
+      sha256 = "0133yn9f5wvnph8c03fi22phawp6ahfwwvnml98p2ijwlfdjh99f";
     };
     dependencies = [];
 
   };
 
   lightline-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "lightline-vim-2017-02-12";
+    name = "lightline-vim-2017-04-21";
     src = fetchgit {
       url = "https://github.com/itchyny/lightline.vim";
-      rev = "a63a00d548fd20457a4f31d31fb9c8fe8a7ebc2a";
-      sha256 = "13fpf1rdaswz5c3wgpc1jjrzw47jhm896q5z0dc82lrfwsggp5a5";
+      rev = "6034e639e871cb33a436508a6c6ccbe3e236de4c";
+      sha256 = "0w37l1i8bfpcs6wx0h98c5b2f4kgi6b4357c0lhfmwprajh4pw7n";
     };
     dependencies = [];
 
   };
 
   thumbnail-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "thumbnail-vim-2016-12-25";
+    name = "thumbnail-vim-2017-04-22";
     src = fetchgit {
       url = "https://github.com/itchyny/thumbnail.vim";
-      rev = "f911ebd0dfe08dd83a55dd0d0e4804195079b13c";
-      sha256 = "1pa0c34v2mah97i41hg1vyppf44sfmvdpji30bq54yv7gza36plz";
+      rev = "c124c1f0b79bbcbd4a215abc3f20e162f1ccb7d2";
+      sha256 = "0pqg6albjp4gbdaqr0g1ns78iys7qilfkjglfipfzqsig3wa65wb";
     };
     dependencies = [];
 
@@ -845,11 +855,11 @@ rec {
   };
 
   vim-orgmode = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-orgmode-2017-01-31";
+    name = "vim-orgmode-2017-04-19";
     src = fetchgit {
       url = "https://github.com/jceb/vim-orgmode";
-      rev = "37fc5db4d167ca0def23febcb06d984ab72015be";
-      sha256 = "19cyd7l7xf9yhrx2k735hksd40hxy8izj30l1bl3a8v01lwv088x";
+      rev = "8a5cb51fbb8d89b0151833a6deb654929818a964";
+      sha256 = "0siqzwblads3n69chqsifpgglcda2iz2k40q76llf78fw5ylqd16";
     };
     dependencies = [];
 
@@ -878,11 +888,11 @@ rec {
   };
 
   auto-pairs = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "auto-pairs-2017-01-26";
+    name = "auto-pairs-2017-03-22";
     src = fetchgit {
       url = "https://github.com/jiangmiao/auto-pairs";
-      rev = "e915d857fe927309ef0090e830f892204b750c43";
-      sha256 = "11scssclvrri1lix3bbx2xrrznjihvd2g4c5d5xqv1ab14yrs6q4";
+      rev = "20ec5b043f82ffa11a079f545438e6544ef112ed";
+      sha256 = "14pypb2kfrylhn73gx964hls040zaqnpl1am6f0yi01h524xz0xf";
     };
     dependencies = [];
 
@@ -933,11 +943,11 @@ rec {
   };
 
   fzf-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "fzf-vim-2017-03-03";
+    name = "fzf-vim-2017-03-18";
     src = fetchgit {
       url = "https://github.com/junegunn/fzf.vim";
-      rev = "87a910a127623db9ba2eae9ec9548db1a5142a0a";
-      sha256 = "05b4slg10h9v19bvb6n8hn706w4zyyz0h8akyzzmjkrm0sv92x6r";
+      rev = "605d9da5128d551bf57603203a0fed0e8f7d5e57";
+      sha256 = "15dd3a9kypbcxgj7ick2x2dmcal6s5yj1rr98pza7ra0xqwz6pmq";
     };
     dependencies = [];
 
@@ -955,11 +965,11 @@ rec {
   };
 
   vim-peekaboo = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-peekaboo-2017-01-13";
+    name = "vim-peekaboo-2017-03-20";
     src = fetchgit {
       url = "https://github.com/junegunn/vim-peekaboo";
-      rev = "9de6fd70ad20cbf568664c06d673c69e2f622287";
-      sha256 = "0b5bfvwzy5l8g8s5z1h60c0y3phw2x0gyh1516sdlaq0nmvg2dky";
+      rev = "a7c940b15b008afdcea096d3fc4d25e3e431eb49";
+      sha256 = "1rc4hr6vwj2mmrgz8lifxf9rvcw1rb5dahq649yn8ccw03x8zn6m";
     };
     dependencies = [];
 
@@ -988,11 +998,11 @@ rec {
   };
 
   typescript-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "typescript-vim-2017-03-02";
+    name = "typescript-vim-2017-03-15";
     src = fetchgit {
       url = "https://github.com/leafgarland/typescript-vim";
-      rev = "48f92032a446daf2aea64ac5912b26328c3df1ef";
-      sha256 = "1lpqqjl3im96zy8w0iwyvmzcwdijfgji0czbsmi84hx299dpn8n4";
+      rev = "4dc79bd1b0c43c16cae146bee065f2acc6d2b789";
+      sha256 = "1hm7cpkx7na106xpivzi5cqb322nanpa0sdjmvnkhgll244q5vy4";
     };
     dependencies = [];
 
@@ -1010,22 +1020,22 @@ rec {
   };
 
   vimtex = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vimtex-2017-03-02";
+    name = "vimtex-2017-04-22";
     src = fetchgit {
       url = "https://github.com/lervag/vimtex";
-      rev = "75c4ac90f2d254741bad326536d03f382266a150";
-      sha256 = "1l89skr6ifpavximggzyzaw11973ci5gyh48cni07a2m0z26sy07";
+      rev = "60daab3d8bf74fa27322a8ae3e408402c6dbe114";
+      sha256 = "07s6fx0g0c4q3vk2yflzx7haqcakipjqnz7dypnj0qb18712l8lg";
     };
     dependencies = [];
 
   };
 
   vim-easymotion = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-easymotion-2017-03-04";
+    name = "vim-easymotion-2017-04-11";
     src = fetchgit {
       url = "https://github.com/lokaltog/vim-easymotion";
-      rev = "19d00afefe5a1b8f6d891ce0b73dcde38c718fdd";
-      sha256 = "1fdfg8i1xllpgjfk52r58ar8pmbcw3gjdzj712d2n0j7mjmphdgs";
+      rev = "f916d602a17dbcb6847ad071f85342c97c93bd80";
+      sha256 = "1w093421k65aw56cb2ifnf1pf8hvx181jd776spssbybms9sdm9l";
     };
     dependencies = [];
 
@@ -1043,22 +1053,22 @@ rec {
   };
 
   rainbow = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "rainbow-2016-10-28";
+    name = "rainbow-2017-04-21";
     src = fetchgit {
       url = "https://github.com/luochen1990/rainbow";
-      rev = "906094f73a46ab4636806541b50c5d4182fa09e1";
-      sha256 = "1za2pwv24yiap2655wagyg4yd69g1xqwayazablwj7x1wvqdvd5p";
+      rev = "1c45e0f81324641b23d4c21edda4eabeacba031b";
+      sha256 = "143bkawg4sy1vbizfwb6p9alizyr80sr6incxrz179l9dp9r8frf";
     };
     dependencies = [];
 
   };
 
   vim-xkbswitch = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-xkbswitch-2017-02-21";
+    name = "vim-xkbswitch-2017-03-27";
     src = fetchgit {
       url = "https://github.com/lyokha/vim-xkbswitch";
-      rev = "0d88988f33b5b100fa14ab8ce93f3950ce6069e5";
-      sha256 = "0bglqbdhgrq9c3dzl6031ar6wzz733ym1af1sahb6h6zky30ij7n";
+      rev = "a85ebddb9038e6b05138c48868a319a9e13d1868";
+      sha256 = "0v0wckkvsj3pd3a5lj35dqwlvgr1kfz0x6rpnx28mzrcg05p19fr";
     };
     dependencies = [];
     patchPhase = ''
@@ -1069,44 +1079,44 @@ rec {
   };
 
   vim-highlightedyank = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-highlightedyank-2017-02-22";
+    name = "vim-highlightedyank-2017-03-25";
     src = fetchgit {
       url = "https://github.com/machakann/vim-highlightedyank";
-      rev = "db9b1e89af6dcbc56f84db980009915cac303fb8";
-      sha256 = "05l7q7l3zbk2lssgs52srk65b53frmxw0rpnv5dma7c2mjxcn9gn";
+      rev = "d656e1e62d2b4e1abd66c5f3a13a2be31a5a80ed";
+      sha256 = "0rcd2q8f49iyv93s5g95brml7sng7lr8k9s5m4mxq3y0m9yf68fd";
     };
     dependencies = [];
 
   };
 
   vim-startify = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-startify-2017-02-26";
+    name = "vim-startify-2017-04-22";
     src = fetchgit {
       url = "https://github.com/mhinz/vim-startify";
-      rev = "a16e94e6879d8cb5443ebd79ec53883489f46b55";
-      sha256 = "14c179wrh9aw4lwr2b88y6cjxj7x6jyl8kk4fqwzv1h5zqh48fk6";
+      rev = "664ed502ed405e611019d86154cb4d4a6c230c1d";
+      sha256 = "1g276jpv4yw410y9ycx118n9crzdwzvxacw1vswv507xs1fm7ch7";
     };
     dependencies = [];
 
   };
 
   vim-indent-object = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-indent-object-2015-08-11";
+    name = "vim-indent-object-2017-03-23";
     src = fetchgit {
       url = "https://github.com/michaeljsmith/vim-indent-object";
-      rev = "1d3e4aac0117d57c3e1aaaa7e5a99f1d7553e01b";
-      sha256 = "1xxl5pwbz56qjfxw6l686m1qc4a3q0r7afa9r5gjhgd1jy67z7d7";
+      rev = "41d700f14b3decccdde421fbfe49e95a084a2f89";
+      sha256 = "12mi4n5abfxx7xjl46aw400acgrjf1fxjgzak763l874y0whf5v2";
     };
     dependencies = [];
 
   };
 
   lushtags = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "lushtags-2016-10-12";
+    name = "lushtags-2017-04-19";
     src = fetchgit {
       url = "https://github.com/mkasa/lushtags";
-      rev = "ef6410cd66c6729e6f4795222bdc0e406251f27a";
-      sha256 = "094cl57zfqjq7gpv4151zxipb6kd1czwx4nv6x8wsl3n0z4p3jkx";
+      rev = "fd7fa5a0162d9aa159559880d5ba4731e180eeaf";
+      sha256 = "1si5n07k4r8kji4whglav9q59ksv6bi5v58xbpc2l5bavlk8kn6n";
     };
     dependencies = [];
 
@@ -1146,11 +1156,11 @@ rec {
   };
 
   haskell-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "haskell-vim-2017-02-26";
+    name = "haskell-vim-2017-04-03";
     src = fetchgit {
       url = "https://github.com/neovimhaskell/haskell-vim";
-      rev = "5009c37a0f005aee164f8aaf2e99c57abf7a3402";
-      sha256 = "1i2ahm0sikdybhkhmijwcmcsq86bf29jpac6mh3jh0iimimrgwi7";
+      rev = "9811f3803317c4f39c868e71b3202b5559735aef";
+      sha256 = "02f87lfpr5lslh57cqimg91llflra8934jzy0g32l5zcm7fdljdk";
     };
     dependencies = [];
 
@@ -1178,17 +1188,6 @@ rec {
     '';
   };
 
-  self = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "self-2014-05-28";
-    src = fetchgit {
-      url = "git://github.com/megaannum/self";
-      rev = "2ed666b547eddee6ae1fcc63babca4ba0b66a59f";
-      sha256 = "1gcwn6i5i3msg7hrlzsnv1bs6pm4jz9cff8ppaz2xdj8xv9qy6fn";
-    };
-    dependencies = [];
-
-  };
-
   shabadou-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
     name = "shabadou-vim-2016-07-19";
     src = fetchgit {
@@ -1212,33 +1211,33 @@ rec {
   };
 
   vim-markdown = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-markdown-2017-02-02";
+    name = "vim-markdown-2017-03-16";
     src = fetchgit {
       url = "https://github.com/plasticboy/vim-markdown";
-      rev = "d6d59eef6f604b6430fd6adade9e18364666232b";
-      sha256 = "1p2ygvlg9abi4v52v9jh0aj76ll490w5d0gfsds33gy88hzl4js6";
+      rev = "2cd50d2ca657091c6aa787a3847284fb4cceff49";
+      sha256 = "0ivrb7462dglrzmpi3a8na16bhv9bx11bdpa32k34xnypn6ghvy9";
     };
     dependencies = [];
 
   };
 
   python-mode = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "python-mode-2017-02-06";
+    name = "python-mode-2017-03-09";
     src = fetchgit {
       url = "https://github.com/python-mode/python-mode";
-      rev = "d113cffc3f7a48564aeb568e1c7a6f5312ff09f5";
-      sha256 = "1gn74cj629q00ar3z0c1dlngn31jr4lv04bwi2npzinn7rpf8nj6";
+      rev = "73620c44c4cd036a8133f77e2f56ca8995640cff";
+      sha256 = "0d2f8lcpjsrj3i21yinsncm9aigp024vi7mfy2hxhii7jcdmh8q5";
     };
     dependencies = [];
 
   };
 
   vim-racer = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-racer-2017-02-08";
+    name = "vim-racer-2017-04-18";
     src = fetchgit {
       url = "https://github.com/racer-rust/vim-racer";
-      rev = "34f806e26fcd9271b0de5d34aab7f4e8ac13050e";
-      sha256 = "07wmf40f7wvcb4wqdx6qqwhvbgaaawa2vxb6y1b28njzc05b01cd";
+      rev = "34b7f2a261f1a7147cd87aff564acb17d0172c02";
+      sha256 = "13xcbw7mw3y4jwrjszjyvil9fdhqisf8awah4cx0zs8narlajzqm";
     };
     dependencies = [];
 
@@ -1256,11 +1255,11 @@ rec {
   };
 
   vim-grammarous = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-grammarous-2017-02-24";
+    name = "vim-grammarous-2017-04-10";
     src = fetchgit {
       url = "https://github.com/rhysd/vim-grammarous";
-      rev = "74a88d233056ac63ef65b3dd6766494ec33e6f2e";
-      sha256 = "0av6j1i0kf1gdvj19n9mdaxkxhb6dkbl7yia81sw6j2mkdzka3jc";
+      rev = "b002d67616f959120c9fb0d05783fa7f8a59df8a";
+      sha256 = "0h7jp75a467xggg8yc31q6vqmlpcpw46ch7nj5fx81dls3vb0bbx";
     };
     dependencies = [];
 
@@ -1278,33 +1277,33 @@ rec {
   };
 
   neoformat = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "neoformat-2017-03-01";
+    name = "neoformat-2017-04-22";
     src = fetchgit {
       url = "https://github.com/sbdchd/neoformat";
-      rev = "c59748c706b15cfae891772c4e17a31f396c8ffb";
-      sha256 = "0awb1f7ham13rwsg88q356lczblb23kxq194j8h19jmjjbb1lv7p";
+      rev = "e65c803f36f08a933b6af0d01b6756e6f71df247";
+      sha256 = "151nyg42zl7qz2nfj9dh71fgmlkfd80hzhdjadl9q8zx7xkhq0dy";
     };
     dependencies = [];
 
   };
 
   vim-polyglot = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-polyglot-2017-02-02";
+    name = "vim-polyglot-2017-03-24";
     src = fetchgit {
       url = "https://github.com/sheerun/vim-polyglot";
-      rev = "fbeb019a8516939bd904983ddc341e65c2ea19cb";
-      sha256 = "1b645k07spg95lm6x7dq222v86lxsgnsvdcgy1srh9vx11lhvyny";
+      rev = "ef369d45a505403587ea0bae30ce6768ba51398c";
+      sha256 = "1wd6ksvvbak8vncazh49a2jmxq59w1mmrm0jvm47y8wrv300fhk9";
     };
     dependencies = [];
 
   };
 
   neco-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "neco-vim-2017-01-16";
+    name = "neco-vim-2017-04-06";
     src = fetchgit {
       url = "https://github.com/shougo/neco-vim";
-      rev = "d28e1ea78f90d72636895dbd758de6b35aae2dfa";
-      sha256 = "1qsyicxykl350zz86j7k6k9rflcf5nwrc5jbk9135zs5i8g1lqf3";
+      rev = "c58ce68df75af8928ce9d4c19dab3b3ff7de3fb2";
+      sha256 = "1w56s75891y8p2ng1mgmir58hlckk7ad6mz87xms2kkkx0xbqzl9";
     };
     dependencies = [];
 
@@ -1322,22 +1321,22 @@ rec {
   };
 
   neosnippet-snippets = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "neosnippet-snippets-2017-01-24";
+    name = "neosnippet-snippets-2017-03-29";
     src = fetchgit {
       url = "https://github.com/shougo/neosnippet-snippets";
-      rev = "8e2b1c0cab9ed9a832b3743dbb65e9966a64331a";
-      sha256 = "151wpvbj6jb9jdkbhj3b77f5sq7y328spvwfbqyj1y32rg4ifmc6";
+      rev = "2a9487bacb924d8e870612b6b0a2afb34deea0ae";
+      sha256 = "0917zlh7fin2172jmlbzkszb1dqafx6l0sgxf1nm1b0k083c9bjz";
     };
     dependencies = [];
 
   };
 
   neosnippet-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "neosnippet-vim-2017-02-13";
+    name = "neosnippet-vim-2017-04-20";
     src = fetchgit {
       url = "https://github.com/shougo/neosnippet.vim";
-      rev = "1bd7e23c79b73da16eb0c9469b25c376d3594583";
-      sha256 = "0k80syscmpnj38ks1fq02ds59g0r4jlg9ll7z4qc048mgi35alw5";
+      rev = "c91ac0b67f0f21548aaed093cbd5186b0e106907";
+      sha256 = "0llsars9dyzaqkqk9rs41q9nj0h0gy35gqgbifqll66jnm89wlni";
     };
     dependencies = [];
 
@@ -1381,7 +1380,6 @@ rec {
       sha256 = "13szswi1n04w66c4h701y47xblrba8ysxjwvmnfxb0pyd1x3gzgz";
     };
     dependencies = [ "vimproc-vim" ];
-
   };
 
   gundo-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
@@ -1396,22 +1394,22 @@ rec {
   };
 
   alchemist-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "alchemist-vim-2017-02-24";
+    name = "alchemist-vim-2017-04-21";
     src = fetchgit {
       url = "https://github.com/slashmili/alchemist.vim";
-      rev = "31c13df87ed13428f8070718cea8a3ade4c37c99";
-      sha256 = "0c485zgrg997waf7jrw1qyzw8903yc4p5y5d7skn2irn66dl0388";
+      rev = "12d9d8b9a8875d0edb75c3d91d4f8f04f3558fb7";
+      sha256 = "0xg1yixs8p4f2sghbh204p8b10m1zb3xxi4jwiqrrw4jhprh8g4f";
     };
     dependencies = [];
 
   };
 
   vim-hardtime = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-hardtime-2016-12-19";
+    name = "vim-hardtime-2017-03-31";
     src = fetchgit {
       url = "https://github.com/takac/vim-hardtime";
-      rev = "0551f0836d311fae408fb1dc73e0c09cdfa3661b";
-      sha256 = "1izyx3dnds1hdhjk16578cdda72mnhbsrdz2klm0dygfvfq9h7x4";
+      rev = "d9128568afa62947b7ac8f12c22d88e3de526a6b";
+      sha256 = "097wzfh4n4fnsq2gx4hbmyr731ciky8qcai5aiyh2baybvwshmr5";
     };
     dependencies = [];
 
@@ -1440,11 +1438,11 @@ rec {
   };
 
   vim-quickrun = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-quickrun-2017-01-22";
+    name = "vim-quickrun-2017-03-21";
     src = fetchgit {
       url = "https://github.com/thinca/vim-quickrun";
-      rev = "95da1f83c4a1988a3808492e2b2e169ed408d3e2";
-      sha256 = "0j3jg06flspb36v5hj7pljaljncv5160zw01s3v1605d1q8b43mv";
+      rev = "98889e1fc0f7136262c4dd7c312b82879df16486";
+      sha256 = "1drv53fwp24z0yb79lj2nyapyndw1yirg202hg7px9jvxjr4k8a0";
     };
     dependencies = [];
 
@@ -1462,33 +1460,33 @@ rec {
   };
 
   vim-dispatch = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-dispatch-2016-08-30";
+    name = "vim-dispatch-2017-04-17";
     src = fetchgit {
       url = "https://github.com/tpope/vim-dispatch";
-      rev = "a54f2c5e18b8c2aad8c6f8ba474760e70fdaaca3";
-      sha256 = "18z1hkr3qrgj9j0kr0q3i5vq27dpkjhsm3mqyssi6k5v0iyw49dk";
+      rev = "2ede8329962893ee4bcf512e0bee1b2eeab73618";
+      sha256 = "0ahpcn2la7aalybqs7sza0hqh47lyzzpxgmr1rk5rd4z10rwql70";
     };
     dependencies = [];
 
   };
 
   vim-eunuch = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-eunuch-2016-09-07";
+    name = "vim-eunuch-2017-03-08";
     src = fetchgit {
       url = "https://github.com/tpope/vim-eunuch";
-      rev = "7eeb681ff3caedc1c01e50966bc293951f7b3e21";
-      sha256 = "0hk4p1qjmplddmwrpp6b2x776z1298pkcgp855kgigib53w5srmc";
+      rev = "dcd29a00eb708be211d856afd3fddfbff7bc6208";
+      sha256 = "1vq1qwhm27zmnp8xda1z27fhx835kni6ifcyix644shpd8mq8bi4";
     };
     dependencies = [];
 
   };
 
   vim-repeat = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-repeat-2015-05-09";
+    name = "vim-repeat-2017-04-21";
     src = fetchgit {
       url = "https://github.com/tpope/vim-repeat";
-      rev = "7a6675f092842c8f81e71d5345bd7cdbf3759415";
-      sha256 = "0p8g5y3vyl1765lj1r8jpc06l465f9bagivq6k8ndajbg049brl7";
+      rev = "070ee903245999b2b79f7386631ffd29ce9b8e9f";
+      sha256 = "1grsaaar2ng1049gc3r8wbbp5imp31z1lcg399vhh3k36y34q213";
     };
     dependencies = [];
 
@@ -1528,11 +1526,11 @@ rec {
   };
 
   youcompleteme = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "youcompleteme-2017-03-28";
+    name = "youcompleteme-2017-04-12";
     src = fetchgit {
       url = "https://github.com/valloric/youcompleteme";
-      rev = "03ba8a80cd04e2e051bb85eacaea802ca3c4d025";
-      sha256 = "1f44bxl4phk79p4n19p0qx5506hkhms77zi4x0sh0gh389xwxmv5";
+      rev = "5198fd9a09960b9a1919ef2400007f9bfab33a65";
+      sha256 = "0xawkixjskdb7w9kbbbk6yhqjkglyshir11s5b5bz52nzs2dy9mx";
     };
     dependencies = [];
     buildPhase = ''
@@ -1554,22 +1552,22 @@ rec {
   };
 
   vim-airline-themes = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-airline-themes-2017-02-26";
+    name = "vim-airline-themes-2017-03-27";
     src = fetchgit {
       url = "https://github.com/vim-airline/vim-airline-themes";
-      rev = "205f6964be55d17c908baaf89066928090b02729";
-      sha256 = "0cz39gxmrsnv9r72ymyzjwlgdi2x0dxxibwvlwp6zwdwws4l3fw8";
+      rev = "66c2839bb1126c71a0a2d1da9804161ccd3b78b6";
+      sha256 = "01czd1al7ni88q7mwszlayax6d92bkzr5a5pxssn2080xpv7vqbk";
     };
     dependencies = [];
 
   };
 
   vim-pandoc = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-pandoc-2017-02-20";
+    name = "vim-pandoc-2017-04-14";
     src = fetchgit {
       url = "https://github.com/vim-pandoc/vim-pandoc";
-      rev = "15873af56c3c15ebd5431983741c399097fb61de";
-      sha256 = "08h1bmrjv8bjywz1fj2rjnmmwrlpdl1lv1gz5msdy817n5lf1xh2";
+      rev = "455565fb9cfae5ac3ae21c9e8ddf60c9db1e9a61";
+      sha256 = "0vg9z2vnifq52x85pn9nhd7hmwklssbq1cglkbb64adcn4a151k8";
     };
     dependencies = [];
 
@@ -1587,11 +1585,11 @@ rec {
   };
 
   vim-pandoc-syntax = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-pandoc-syntax-2017-02-22";
+    name = "vim-pandoc-syntax-2017-04-13";
     src = fetchgit {
       url = "https://github.com/vim-pandoc/vim-pandoc-syntax";
-      rev = "2e7420ba617da6aa6acc221c41fbea44783eb585";
-      sha256 = "0k964jsr9v8nz1w2d8qy6rv66110ga6hllbp5zcrfw7j62cgmvn7";
+      rev = "56e8e41ef863a0a7d33d85c3c0c895aa6e9e62d3";
+      sha256 = "19ll4zrw5yd0frgsbi7pg9b68lmy4bfiwbnwgzii7inifrqsykfw";
     };
     dependencies = [];
 
@@ -1708,11 +1706,11 @@ rec {
   };
 
   vim-wakatime = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-wakatime-2017-03-01";
+    name = "vim-wakatime-2017-04-22";
     src = fetchgit {
       url = "https://github.com/wakatime/vim-wakatime";
-      rev = "a7be16c948bc4975d83c07c7bf25206953b79b22";
-      sha256 = "0lnng566bw4462xg3i4qjbqvnkxmg2m33368nllapb1yj0x735c9";
+      rev = "8d3988ce97802a4061417100ee8592c0570e9f93";
+      sha256 = "05i8y586nasxmk8szi309q49543z7wqz3s9xpf16hv16rmv3kj4j";
     };
     dependencies = [];
     buildInputs = [ python ];
@@ -1758,14 +1756,14 @@ rec {
   };
 
   deoplete-go = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "deoplete-go-2017-02-13";
+    name = "deoplete-go-2017-03-21";
     src = fetchgit {
       url = "https://github.com/zchee/deoplete-go";
-      rev = "9c2d57710f022ea5fe3b0428e6635a3de77bcf9e";
-      sha256 = "0rl211rmnzwribzpqxfg99lsyln2x1i8ygyz8b9jy804fm5i24f3";
+      rev = "7990da5c8c89a47e0ccd3b7e60a836a6f115641a";
+      sha256 = "0ybd9sg4x8pczvl0hz5azzs2sn4nyc7la9890xh373dv3lyb6gk7";
     };
     dependencies = [];
-    buildInputs = [ python3 ]; 
+    buildInputs = [ python3 ];
     buildPhase = ''
       pushd ./rplugin/python3/deoplete/ujson
       python3 setup.py build --build-base=$PWD/build --build-lib=$PWD/build
@@ -1775,22 +1773,22 @@ rec {
   };
 
   deoplete-jedi = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "deoplete-jedi-2017-02-17";
+    name = "deoplete-jedi-2017-04-11";
     src = fetchgit {
       url = "https://github.com/zchee/deoplete-jedi";
-      rev = "a4dd511535a6fe06717a7bd2d680b9b87ade595d";
-      sha256 = "03wwqk4r2rm5yjxqw2f4302lknb9a10yfpw4b0vyr40zch6jascr";
+      rev = "e59fe25c4e09d4a26cca640a42af58178c67c9ff";
+      sha256 = "1dhphmr0q9xfyz61zy0bzm6bh21p7d5q79km7lxq8k3khgdp4xsi";
     };
     dependencies = [];
 
   };
 
   goyo = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "goyo-2017-01-03";
+    name = "goyo-2017-04-02";
     src = fetchgit {
       url = "git://github.com/junegunn/goyo.vim";
-      rev = "ebdd67fd6160b7f95ac8fe50b382694c9961d6b8";
-      sha256 = "08kx7dsa00amwgjdq1grhapjsa8mk2z11pwgn6xc342zkvrlf0fn";
+      rev = "64e750f726d8758c493931938a17c50f75e6f823";
+      sha256 = "0g1kark21kljrk7i0ig8gfdh5kva8vj80cvi4jbph4rmrbxwjc7x";
     };
     dependencies = [];
 
@@ -1863,33 +1861,33 @@ rec {
   };
 
   sensible = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "sensible-2016-09-05";
+    name = "sensible-2017-04-02";
     src = fetchgit {
       url = "git://github.com/tpope/vim-sensible";
-      rev = "4b7535921819a5b2e39be68f81109ea684232503";
-      sha256 = "0ghds721dawm8mcd8cp23hfqpgiznh811z73zxlqrm1sg2fmdq1s";
+      rev = "e57222db3b3236782dc33b7cdbb648528b7377d9";
+      sha256 = "0ww55dcl5n02dla02wr7sq524v1njhm1gch8xxn2v5r4n1x43p8n";
     };
     dependencies = [];
 
   };
 
   sleuth = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "sleuth-2016-11-06";
+    name = "sleuth-2017-04-09";
     src = fetchgit {
       url = "git://github.com/tpope/vim-sleuth";
-      rev = "62c4f261874dd44e6cdc6788b4a6bc59f9dfe746";
-      sha256 = "13w4gv2k91ahdc25vhi0ilqphlnix1q5gddcihi8k7fapx990a9k";
+      rev = "b6347df73719dea0fb14695eae4d3506ebc4a36c";
+      sha256 = "0i55mpdiia8lbkvn9hxmzm2as2jc6crcv34f29pdkqppmwrvvx87";
     };
     dependencies = [];
 
   };
 
   snipmate = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "snipmate-2016-11-14";
+    name = "snipmate-2017-04-20";
     src = fetchgit {
       url = "git://github.com/garbas/vim-snipmate";
-      rev = "2d70860ba49afc83cb5902acb99174e3cf08538d";
-      sha256 = "015h8narda721svapf17963r3r48cz63477pmb3fhy2rp8lvvif4";
+      rev = "a9802f2351910f64b70fb10b63651e6ff6b8125e";
+      sha256 = "1l7sc6lf66pkiy18aq9s3wk1dmvvvsy1063cc0bxich9xa8m34bj";
     };
     dependencies = ["vim-addon-mw-utils" "tlib"];
 
@@ -1918,11 +1916,11 @@ rec {
   };
 
   table-mode = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "table-mode-2017-01-05";
+    name = "table-mode-2017-04-20";
     src = fetchgit {
       url = "git://github.com/dhruvasagar/vim-table-mode";
-      rev = "30a3eba81628fdd099adc6dfdec8aa627c4783f7";
-      sha256 = "0pw3mvrx3iyyj5xz05gixhvnrqxpl274cv04449mxm50q32zvmhr";
+      rev = "4e41af8e5f0bf53326d1b83c2feb1eff89fe90d4";
+      sha256 = "0l83j3963lzkmn54vcagkwm2rhk96cl9v42l5r7zcgjign28cfzw";
     };
     dependencies = [];
 
@@ -1950,22 +1948,22 @@ rec {
   };
 
   tlib = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "tlib-2017-03-03";
+    name = "tlib-2017-04-12";
     src = fetchgit {
       url = "git://github.com/tomtom/tlib_vim";
-      rev = "b80c8f0f932ffaf9078f6998fe422cfbc7b95178";
-      sha256 = "177phwdhfckhc4bm4xv1db8lxrvsi8lvv7n3c1j03w2r8f9h8pj8";
+      rev = "c0a480a3e1208fe73c7551397d79de025b8ac60b";
+      sha256 = "1rf8vrbw0pbg4vdbk4ihfwv246pwa82xa4m061znw0b14zqij84f";
     };
     dependencies = [];
 
   };
 
   undotree = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "undotree-2016-07-19";
+    name = "undotree-2017-03-24";
     src = fetchgit {
       url = "git://github.com/mbbill/undotree";
-      rev = "17dfeb6aeacc40036567d29c691898ac57b09182";
-      sha256 = "0xmc95h5nbmjx6hvfd9lvkz8hdp8fw5xm5c7wcyy5f0rg7b6l68x";
+      rev = "ad08a88df70c1865b8c9ef6eeac5cdb051d2a18a";
+      sha256 = "1i1sss8vzsym44amq19rfy95wm7143ks5h9imm7z7rah7xkcqv9l";
     };
     dependencies = [];
 
@@ -1983,11 +1981,11 @@ rec {
   };
 
   vim-addon-async = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-addon-async-2016-07-12";
+    name = "vim-addon-async-2017-03-20";
     src = fetchgit {
       url = "git://github.com/MarcWeber/vim-addon-async";
-      rev = "b14414215b394a0ef887ea301085ae4b80012e38";
-      sha256 = "1gr0rjn1vwqv4p51yb0s65gnpy1r0533lfy5nqbg20j4687yxls5";
+      rev = "eca316a4480f68c2cb62128f3187dc7b2002afde";
+      sha256 = "1lk8ma51dd0syi73vq5r4qk9cpy6cq3llizvh94hmxblfjpvrs7q";
     };
     dependencies = ["vim-addon-signs"];
 
@@ -2181,22 +2179,22 @@ rec {
   };
 
   vim-airline = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-airline-2017-02-28";
+    name = "vim-airline-2017-04-21";
     src = fetchgit {
       url = "git://github.com/vim-airline/vim-airline";
-      rev = "fbd791e7f0431e18b987a2a8937a4c3d34dd2125";
-      sha256 = "15m4wdvx4x8m43x5z08sbw74i1l7vwj0qljsgs7jn36yc9453sn7";
+      rev = "13bd4701ed8ef57150f2d4f56122cd11ecf39345";
+      sha256 = "1z2ymvqpqzhz35vrcavn52dwzw03jb9vgjvcwqf775v3kpvvd7z4";
     };
     dependencies = [];
 
   };
 
   vim-coffee-script = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-coffee-script-2017-03-02";
+    name = "vim-coffee-script-2017-03-03";
     src = fetchgit {
       url = "git://github.com/kchmck/vim-coffee-script";
-      rev = "1eddf182ba28d4e695fe1dbcae5b5b029218cb44";
-      sha256 = "1s9idnbj3613ldgrysp4iscd1xnrfdcgdhygfzhhsv0a0lrm40xa";
+      rev = "aace5c23d812a205c93e87ff79df72d9366928df";
+      sha256 = "1saz5m3c329m2vk8ffhvxw4virz70k2qrjncwhvjpkik27jf75yy";
     };
     dependencies = [];
 
@@ -2225,11 +2223,11 @@ rec {
   };
 
   vim-gitgutter = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-gitgutter-2017-02-22";
+    name = "vim-gitgutter-2017-04-20";
     src = fetchgit {
       url = "git://github.com/airblade/vim-gitgutter";
-      rev = "1c034be0d31168c8f4770ef7b69adb67d00d6f3d";
-      sha256 = "1wj084frahj80h1nkllmpf0qj06d96a5m5qclnd3fc2aqclcimx0";
+      rev = "f16cf539a23fc980af1293bebdae61a595baa90c";
+      sha256 = "08dy5va4cz8xiy08klbifxlz4khdqg05v8dvvlr5l774qnqlpaqj";
     };
     dependencies = [];
 
@@ -2280,22 +2278,22 @@ rec {
   };
 
   vim-signify = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-signify-2017-03-02";
+    name = "vim-signify-2017-04-21";
     src = fetchgit {
       url = "git://github.com/mhinz/vim-signify";
-      rev = "b4c516cd63f04c08bfc6a8eb27a971702d849f33";
-      sha256 = "108vlkrv00b6ldj4r972k3z2a3dfcs1z4788dhnx81k25rax42k4";
+      rev = "6e8c4b190078030f9cb979ce26274a79c0ac313c";
+      sha256 = "1wch8pas15z5afw71i814z4cxl8l411kdizhwljx69ghvbwkmkpg";
     };
     dependencies = [];
 
   };
 
   vim-snippets = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-snippets-2017-03-01";
+    name = "vim-snippets-2017-04-19";
     src = fetchgit {
       url = "git://github.com/honza/vim-snippets";
-      rev = "9a2379be7698ff83985eebb394b7a9f99560a77f";
-      sha256 = "0c7gicl9m05m7wb846vbd1i7ginkm5k4rvcvcvhc9x7krn5qg64q";
+      rev = "7b02b74edf5de3d4864b7601fbd83ccc2671d0ba";
+      sha256 = "098yw0a13f09gmhpzzcsvvn6dk0pi6qg5ja6vd3qa0aal68bck8i";
     };
     dependencies = [];
 
@@ -2324,11 +2322,11 @@ rec {
   };
 
   vimwiki = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vimwiki-2017-03-01";
+    name = "vimwiki-2017-04-15";
     src = fetchgit {
       url = "git://github.com/vimwiki/vimwiki";
-      rev = "56cb06e73e9850e60b6eb53bad8bb98ded1ab872";
-      sha256 = "1s9nppmgkr5v6ljc918qivlyzp491vnyn3cc4k3cqd1ly2ymxv48";
+      rev = "8cdc1c15388cc7f4edb827ff15dbc31d592a79af";
+      sha256 = "0hzmssyz7y7hv3mv67zkqwxc13crkpwv0plm7z701943h2zxj08h";
     };
     dependencies = [];
 
@@ -2346,14 +2344,13 @@ rec {
   };
 
   vundle = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vundle-2017-02-24";
+    name = "vundle-2017-04-02";
     src = fetchgit {
       url = "git://github.com/gmarik/vundle";
-      rev = "f6cc06238d5ac888ddfc514f80392f44cb2e21ac";
-      sha256 = "00qd5nalac7q83dx779547s6dwn952adj2w3j1sgdgaybjwmsrl2";
+      rev = "6497e37694cd2134ccc3e2526818447ee8f20f92";
+      sha256 = "0mphybh0mwh5km2q0awmn8hdgvq3g45yyqpjird7kxybri6aw0kn";
     };
     dependencies = [];
 
   };
-
 }
diff --git a/pkgs/misc/vim-plugins/vim-plugin-names b/pkgs/misc/vim-plugins/vim-plugin-names
index 1427f4fafa08..0241bf015455 100644
--- a/pkgs/misc/vim-plugins/vim-plugin-names
+++ b/pkgs/misc/vim-plugins/vim-plugin-names
@@ -33,6 +33,7 @@
 "github:bbchung/clighter8"
 "github:benekastah/neomake"
 "github:bitc/vim-hdevtools"
+"github:bronson/vim-trailing-whitespace"
 "github:christoomey/vim-sort-motion"
 "github:christoomey/vim-tmux-navigator"
 "github:ctjhoa/spacevim"
@@ -40,6 +41,7 @@
 "github:derekelkins/agda-vim"
 "github:derekwyatt/vim-scala"
 "github:digitaltoad/vim-jade"
+"github:dleonard0/pony-vim-syntax"
 "github:dracula/vim"
 "github:eagletmt/neco-ghc"
 "github:eikenb/acp"
diff --git a/pkgs/os-specific/linux/zfs/default.nix b/pkgs/os-specific/linux/zfs/default.nix
index 602031bab732..5c178f47b506 100644
--- a/pkgs/os-specific/linux/zfs/default.nix
+++ b/pkgs/os-specific/linux/zfs/default.nix
@@ -123,7 +123,7 @@ in
     # to be adapted
     zfsStable = common {
       # comment/uncomment if breaking kernel versions are known
-      incompatibleKernelVersion = "4.10";
+      incompatibleKernelVersion = "4.11";
 
       version = "0.6.5.9";
 
diff --git a/pkgs/servers/etcd/default.nix b/pkgs/servers/etcd/default.nix
index 16189fb47234..15ea30aa16cb 100644
--- a/pkgs/servers/etcd/default.nix
+++ b/pkgs/servers/etcd/default.nix
@@ -4,7 +4,7 @@ with lib;
 
 buildGoPackage rec {
   name = "etcd-${version}";
-  version = "3.0.6"; # After updating check that nixos tests pass
+  version = "3.1.6"; # After updating check that nixos tests pass
   rev = "v${version}";
 
   goPackagePath = "github.com/coreos/etcd";
@@ -13,10 +13,16 @@ buildGoPackage rec {
     inherit rev;
     owner = "coreos";
     repo = "etcd";
-    sha256 = "163qji360y21nr1wnl16nbvvgdgqgbny4c3v3igp87q9p78sdf75";
+    sha256 = "1qgi6zxnijzr644w2da2gbn3gw2qwk6a3z3qmdln0r2rjnm70sx0";
   };
 
-  goDeps = ./deps.nix;
+  subPackages = [
+    "cmd/etcd"
+    "cmd/etcdctl"
+    "cmd/tools/benchmark"
+    "cmd/tools/etcd-dump-db"
+    "cmd/tools/etcd-dump-logs"
+  ];
 
   buildInputs = [ libpcap ];
 
diff --git a/pkgs/servers/etcd/deps.nix b/pkgs/servers/etcd/deps.nix
deleted file mode 100644
index 2c07817a980f..000000000000
--- a/pkgs/servers/etcd/deps.nix
+++ /dev/null
@@ -1,335 +0,0 @@
-[
-{
-  goPackagePath = "github.com/beorn7/perks";
-  fetch = {
-    type = "git";
-    url = "https://github.com/beorn7/perks";
-    rev = "4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9";
-    sha256 = "1hrybsql68xw57brzj805xx2mghydpdiysv3gbhr7f5wlxj2514y";
-  };
-}
-{
-  goPackagePath = "github.com/boltdb/bolt";
-  fetch = {
-    type = "git";
-    url = "https://github.com/boltdb/bolt";
-    rev = "583e8937c61f1af6513608ccc75c97b6abdf4ff9";
-    sha256 = "0cp5v9iypg9ysiq40k3h3lg7aisxplnmxshha7nama6b170izyay";
-  };
-}
-{
-  goPackagePath = "github.com/cloudfoundry-incubator/candiedyaml";
-  fetch = {
-    type = "git";
-    url = "https://github.com/cloudfoundry-incubator/candiedyaml";
-    rev = "99c3df83b51532e3615f851d8c2dbb638f5313bf";
-    sha256 = "106nibg7423642gbkg88c5x2jxfz6nmxbribhwb8cr1rn9vpjaxs";
-  };
-}
-{
-  goPackagePath = "github.com/cockroachdb/cmux";
-  fetch = {
-    type = "git";
-    url = "https://github.com/cockroachdb/cmux";
-    rev = "b64f5908f4945f4b11ed4a0a9d3cc1e23350866d";
-    sha256 = "1by4f3x7j3r3z1sdx1v04r494hn6jaag7lc03prrgx455j8i0jlh";
-  };
-}
-{
-  goPackagePath = "github.com/coreos/etcd";
-  fetch = {
-    type = "git";
-    url = "https://github.com/coreos/etcd.git";
-    rev = "9efa00d1030d4bf62eb8e5ec130023aeb1b8e2d0";
-    sha256 = "163qji360y21nr1wnl16nbvvgdgqgbny4c3v3igp87q9p78sdf75";
-  };
-}
-{
-  goPackagePath = "github.com/coreos/go-semver";
-  fetch = {
-    type = "git";
-    url = "https://github.com/coreos/go-semver";
-    rev = "8ab6407b697782a06568d4b7f1db25550ec2e4c6";
-    sha256 = "1gghi5bnqj50hfxhqc1cxmynqmh2yk9ii7ab9gsm75y5cp94ymk0";
-  };
-}
-{
-  goPackagePath = "github.com/coreos/go-systemd";
-  fetch = {
-    type = "git";
-    url = "https://github.com/coreos/go-systemd";
-    rev = "5c49e4850c879a0ddc061e8f4adcf307de8a8bc2";
-    sha256 = "1w16bnrgfjb5rwha7g8rdjhpgjf8bzmlzhrda5bfvc9ymj3qjibk";
-  };
-}
-{
-  goPackagePath = "github.com/coreos/pkg";
-  fetch = {
-    type = "git";
-    url = "https://github.com/coreos/pkg";
-    rev = "3ac0863d7acf3bc44daf49afef8919af12f704ef";
-    sha256 = "0l5ans1ls2gknkrnhymgc0zbgg5nqjbjbqc51r611adcr0m6gg8l";
-  };
-}
-{
-  goPackagePath = "github.com/ghodss/yaml";
-  fetch = {
-    type = "git";
-    url = "https://github.com/ghodss/yaml";
-    rev = "aa0c862057666179de291b67d9f093d12b5a8473";
-    sha256 = "0cbc78n8l7h1gdzhrvahplcvr4v7n8v23vkgskfp843rcx5h6isr";
-  };
-}
-{
-  goPackagePath = "github.com/gogo/protobuf";
-  fetch = {
-    type = "git";
-    url = "https://github.com/gogo/protobuf";
-    rev = "f20a1444730c7d9949b880a0309e737d007def25";
-    sha256 = "12wa3r2cb2v1m65phbkh692ldlklk459z4x6avpc6im0zkr6r73c";
-  };
-}
-{
-  goPackagePath = "github.com/golang/protobuf";
-  fetch = {
-    type = "git";
-    url = "https://github.com/golang/protobuf";
-    rev = "f592bd283e9ef86337a432eb50e592278c3d534d";
-    sha256 = "01gxhzn9m6jz6ihwxfycnx39zf5pmkan61l278cnynsb8mibdpvb";
-  };
-}
-{
-  goPackagePath = "github.com/google/btree";
-  fetch = {
-    type = "git";
-    url = "https://github.com/google/btree";
-    rev = "7d79101e329e5a3adf994758c578dab82b90c017";
-    sha256 = "1c1hsy5s2pfawg3l9954jmqmy4yc2zp3f7i87m00km2yqgb8xpd0";
-  };
-}
-{
-  goPackagePath = "github.com/grpc-ecosystem/grpc-gateway";
-  fetch = {
-    type = "git";
-    url = "https://github.com/grpc-ecosystem/grpc-gateway";
-    rev = "5e0e028ba0a015710eaebf6e47af18812c9f2767";
-    sha256 = "00s4wxzs6lz5al7y2hxi6r4bxhx5b0ajk5rwxrnb4a4mhlaii8pk";
-  };
-}
-{
-  goPackagePath = "github.com/jonboulle/clockwork";
-  fetch = {
-    type = "git";
-    url = "https://github.com/jonboulle/clockwork";
-    rev = "e3653ace2d63753697e0e5b07b9393971c0bba9d";
-    sha256 = "1avzqhks12a8x2yzpvjsf3k0gv9cy7zx2z88hn0scacnxkphisvc";
-  };
-}
-{
-  goPackagePath = "github.com/matttproud/golang_protobuf_extensions";
-  fetch = {
-    type = "git";
-    url = "https://github.com/matttproud/golang_protobuf_extensions";
-    rev = "c12348ce28de40eed0136aa2b644d0ee0650e56c";
-    sha256 = "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya";
-  };
-}
-{
-  goPackagePath = "github.com/prometheus/client_golang";
-  fetch = {
-    type = "git";
-    url = "https://github.com/prometheus/client_golang";
-    rev = "c5b7fccd204277076155f10851dad72b76a49317";
-    sha256 = "1xqny3147g12n4j03kxm8s9mvdbs3ln6i56c655mybrn9jjy48kd";
-  };
-}
-{
-  goPackagePath = "github.com/prometheus/client_model";
-  fetch = {
-    type = "git";
-    url = "https://github.com/prometheus/client_model";
-    rev = "fa8ad6fec33561be4280a8f0514318c79d7f6cb6";
-    sha256 = "11a7v1fjzhhwsl128znjcf5v7v6129xjgkdpym2lial4lac1dhm9";
-  };
-}
-{
-  goPackagePath = "github.com/prometheus/common";
-  fetch = {
-    type = "git";
-    url = "https://github.com/prometheus/common";
-    rev = "ebdfc6da46522d58825777cf1f90490a5b1ef1d8";
-    sha256 = "0js62pj8600773wx6labpd772yyhz5ivim7dnl7b862wblbmc8mq";
-  };
-}
-{
-  goPackagePath = "github.com/prometheus/procfs";
-  fetch = {
-    type = "git";
-    url = "https://github.com/prometheus/procfs";
-    rev = "abf152e5f3e97f2fafac028d2cc06c1feb87ffa5";
-    sha256 = "0cp8lznv1b4zhi3wnbjkfxwzhkqd3wbmiy6mwgjanip8l9l3ykws";
-  };
-}
-{
-  goPackagePath = "github.com/spf13/cobra";
-  fetch = {
-    type = "git";
-    url = "https://github.com/spf13/cobra";
-    rev = "7c674d9e72017ed25f6d2b5e497a1368086b6a6f";
-    sha256 = "0an935r7lc11a744mvdrsy56rs2w0ah3gdclvr4gzd5iqr9ap3dr";
-  };
-}
-{
-  goPackagePath = "github.com/spf13/pflag";
-  fetch = {
-    type = "git";
-    url = "https://github.com/spf13/pflag";
-    rev = "6454a84b6da0ea8b628d5d8a26759f62c6c161b4";
-    sha256 = "06rfi73jhkncn8gxy6klgmba5947k9gpwdswipdpz680yxczcwna";
-  };
-}
-{
-  goPackagePath = "github.com/ugorji/go";
-  fetch = {
-    type = "git";
-    url = "https://github.com/ugorji/go";
-    rev = "4a1cb5252a6951f715a85d0e4be334c2a2dbf2a2";
-    sha256 = "0izpijk3piihl4fnqg8ncnp5ivbq41pg3xf7iagg4fbg5id4pxbx";
-  };
-}
-{
-  goPackagePath = "github.com/xiang90/probing";
-  fetch = {
-    type = "git";
-    url = "https://github.com/xiang90/probing";
-    rev = "07dd2e8dfe18522e9c447ba95f2fe95262f63bb2";
-    sha256 = "0r8rq27yigz72mk8z7p61yjfan8id021dnp1v421ln9byzpvabn2";
-  };
-}
-{
-  goPackagePath = "golang.org/x/crypto";
-  fetch = {
-    type = "git";
-    url = "https://go.googlesource.com/crypto";
-    rev = "88d0005bf4c3ec17306ecaca4281a8d8efd73e91";
-    sha256 = "1d3x0rwfd4cml06ka8gy74wxrw94m2z7qgz6ky0rgmxcr7p5iikz";
-  };
-}
-{
-  goPackagePath = "golang.org/x/net";
-  fetch = {
-    type = "git";
-    url = "https://go.googlesource.com/net";
-    rev = "7394c112eae4dba7e96bfcfe738e6373d61772b4";
-    sha256 = "1p8wsxnbsp2lq6hbza2n0zgv4sgpxzzjjlrmcngkhxj47kp3hin7";
-  };
-}
-{
-  goPackagePath = "google.golang.org/grpc";
-  fetch = {
-    type = "git";
-    url = "https://github.com/grpc/grpc-go";
-    rev = "0032a855ba5c8a3c8e0d71c2deef354b70af1584";
-    sha256 = "0qkynp65jwk6jk932k7kwxs5v6fzlfsb1fay71a00dwr36f44s67";
-  };
-}
-{
-  goPackagePath = "github.com/urfave/cli";
-  fetch = {
-    type = "git";
-    url = "https://github.com/urfave/cli";
-    rev = "168c95418e66e019fe17b8f4f5c45aa62ff80e23";
-    sha256 = "1gdvvim2f1zigcmbpcgypgn7nvpnlr87grbg7lw13fbpy6fnlw2n";
-  };
-}
-{
-  goPackagePath = "github.com/mattn/go-runewidth";
-  fetch = {
-    type = "git";
-    url = "https://github.com/mattn/go-runewidth";
-    rev = "d6bea18f789704b5f83375793155289da36a3c7f";
-    sha256 = "1hnigpn7rjbwd1ircxkyx9hvi0xmxr32b2jdy2jzw6b3jmcnz1fs";
-  };
-}
-{
-  goPackagePath = "github.com/olekukonko/tablewriter";
-  fetch = {
-    type = "git";
-    url = "https://github.com/olekukonko/tablewriter";
-    rev = "daf2955e742cf123959884fdff4685aa79b63135";
-    sha256 = "1fvl251ms7qmzfbi853kdgghqkrmyy6n1605mfy50nhgvw03z203";
-  };
-}
-{
-  goPackagePath = "github.com/dustin/go-humanize";
-  fetch = {
-    type = "git";
-    url = "https://github.com/dustin/go-humanize";
-    rev = "2fcb5204cdc65b4bec9fd0a87606bb0d0e3c54e8";
-    sha256 = "1m2qgn5vh5m66ggmclgikvwc05np2r7sxgpvlj2jip5d61x29j5k";
-  };
-}
-{
-  goPackagePath = "github.com/bgentry/speakeasy";
-  fetch = {
-    type = "git";
-    url = "https://github.com/bgentry/speakeasy";
-    rev = "a1ccbf2c40dfc8ce514b5c5c6e6d1429ea6880da";
-    sha256 = "0xqpc1qhdcs5blp1mkrppfb1x0rcv4a445mj0yzdwshbzkw5di01";
-  };
-}
-{
-  goPackagePath = "github.com/kr/pty";
-  fetch = {
-    type = "git";
-    url = "https://github.com/kr/pty";
-    rev = "ce7fa45920dc37a92de8377972e52bc55ffa8d57";
-    sha256 = "0mdlr2mmwjznw2id0l4200xjajq9dh1kxn3z7d3ksn0b5fwinzmk";
-  };
-}
-{
-  goPackagePath = "github.com/golang/groupcache";
-  fetch = {
-    type = "git";
-    url = "https://github.com/golang/groupcache";
-    rev = "a6b377e3400b08991b80d6805d627f347f983866";
-    sha256 = "125a6zdaxj916yp2rlrkg8xw00vjf5ga9xwdg4clby8wj4fysma2";
-  };
-}
-{
-  goPackagePath = "gopkg.in/cheggaaa/pb.v1";
-  fetch = {
-    type = "git";
-    url = "https://gopkg.in/cheggaaa/pb.v1";
-    rev = "9453b2db37f4d8bc63751daca63bbe7049eb5e74";
-    sha256 = "0py7dxvm3ydxcw260x7r7xbjww1vkil3rhyy3f9njmjydyb303rb";
-  };
-}
-{
-  goPackagePath = "github.com/golang/glog";
-  fetch = {
-    type = "git";
-    url = "https://github.com/golang/glog";
-    rev = "23def4e6c14b4da8ac2ed8007337bc5eb5007998";
-    sha256 = "0jb2834rw5sykfr937fxi8hxi2zy80sj2bdn9b3jb4b26ksqng30";
-  };
-}
-{
-  goPackagePath = "github.com/spacejam/loghisto";
-  fetch = {
-    type = "git";
-    url = "https://github.com/spacejam/loghisto";
-    rev = "9d1d8c1fd2a4ac852bf2e312f2379f553345fda7";
-    sha256 = "0r31y4ci35pp11wqdyarimdq5a703byk3cf6d67adsa4nw0ysfm1";
-  };
-}
-{
-  goPackagePath = "github.com/akrennmair/gopcap";
-  fetch = {
-    type = "git";
-    url = "https://github.com/akrennmair/gopcap";
-    rev = "00e11033259acb75598ba416495bb708d864a010";
-    sha256 = "0xfw7x5a36w0g76imjvgk055360xg0nva42qhmflfvll7ldxq96a";
-  };
-}
-]
diff --git a/pkgs/servers/rt/default.nix b/pkgs/servers/rt/default.nix
index deec6589dbb2..82818037072a 100644
--- a/pkgs/servers/rt/default.nix
+++ b/pkgs/servers/rt/default.nix
@@ -1,5 +1,35 @@
-{ stdenv, fetchurl, perl }:
+{ stdenv, buildEnv, fetchurl, perl, perlPackages, makeWrapper }:
 
+# This package isn't extremely useful as it is, but is getting close.
+# After running:
+#
+#   nix-build . -A rt
+#
+# I created a config file named myconfig.pm with:
+#
+#   use utf8;
+#   Set($rtname, '127.0.0.1');
+#   # These dirs need to be pre-created:
+#   Set($MasonSessionDir, '/home/grahamc/foo/sessiondir/');
+#   Set($MasonDataDir, '/home/grahamc/foo/localstate/');
+#   Set($WebPort, 8080);
+#
+#   Set($DatabaseType, "SQLite");
+#   Set( $DatabaseName, '/home/grahamc/projects/foo/my.db' );
+#
+#   1;
+#
+# and ran
+#
+#  RT_SITE_CONFIG=$(pwd)/myconfig.pm ./result/bin/rt-setup-database --action init
+#
+# Then:
+#
+#   RT_SITE_CONFIG=$(pwd)/myconfig.pm ./result/bin/rt-server
+#
+# Make sure to check out result/etc/RT_Config.pm
+#
+# Good luck.
 stdenv.mkDerivation rec {
   name = "rt-${version}";
 
@@ -12,14 +42,58 @@ stdenv.mkDerivation rec {
 
   patches = [ ./override-generated.patch ];
 
-  buildInputs = [ perl ];
+  buildInputs = [
+    makeWrapper
+    perl
+    (buildEnv {
+      name = "rt-perl-deps";
+      paths = (with perlPackages; [
+        ApacheSession BusinessHours CGIEmulatePSGI CGIPSGI
+        CSSMinifierXP CSSSquish ConvertColor CryptEksblowfish
+        CryptSSLeay DBDSQLite DBDmysql DBIxSearchBuilder DataGUID
+        DataICal DataPagePageset DateExtract DateManip
+        DateTimeFormatNatural DevelGlobalDestruction EmailAddress
+        EmailAddressList FCGI FCGIProcManager FileShareDir FileWhich
+        GD GDGraph GnuPGInterface GraphViz HTMLFormatTextWithLinks
+        HTMLFormatTextWithLinksAndTables HTMLMason
+        HTMLMasonPSGIHandler HTMLQuoted HTMLRewriteAttributes
+        HTMLScrubber IPCRun IPCRun3 JSON JavaScriptMinifierXS LWP
+        LWPProtocolHttps LocaleMaketextFuzzy LocaleMaketextLexicon
+        LogDispatch MIMETools MIMETypes MailTools ModuleRefresh
+        ModuleVersionsReport MozillaCA NetCIDR NetIP PerlIOeol Plack
+        RegexpCommon RegexpCommonnetCIDR RegexpIPv6 RoleBasic
+        ScopeUpper Starlet SymbolGlobalName TermReadKey
+        TextPasswordPronounceable TextQuoted TextTemplate
+        TextWikiFormat TextWrapper TimeParseDate TreeSimple
+        UNIVERSALrequire XMLRSS
+      ]);
+    })
+  ];
 
-  dontBuild = true;
+  preConfigure = ''
+    configureFlags="$configureFlags --with-web-user=$UID"
+    configureFlags="$configureFlags --with-web-group=$(id -g)"
+    configureFlags="$configureFlags --with-rt-group=$(id -g)"
+    configureFlags="$configureFlags --with-bin-owner=$UID"
+    configureFlags="$configureFlags --with-libs-owner=$UID"
+    configureFlags="$configureFlags --with-libs-group=$(id -g)"
+  '';
+  configureFlags = [
+    "--enable-graphviz"
+    "--enable-gd"
+    "--enable-gpg"
+    "--with-db-type=SQLite"
+  ];
+
+  buildPhase = ''
+    make testdeps | grep -i missing | sort
+  '';
 
-  installPhase = ''
-    mkdir $out
-    cp -a {bin,docs,etc,lib,sbin,share} $out
-    find $out -name '*.in' -exec rm '{}' \;
+  preFixup = ''
+    for i in $(find $out/bin -type f; find $out/sbin -type f); do
+      wrapProgram $i \
+          --prefix PERL5LIB ':' $PERL5LIB
+    done
   '';
 
   meta = {
diff --git a/pkgs/shells/mksh/default.nix b/pkgs/shells/mksh/default.nix
index edb44e09b1fa..e21c97c297ca 100644
--- a/pkgs/shells/mksh/default.nix
+++ b/pkgs/shells/mksh/default.nix
@@ -1,33 +1,22 @@
-{ stdenv, fetchurl, groff }:
+{ stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   name = "mksh-${version}";
-  version = "52c";
+  version = "55";
 
   src = fetchurl {
     urls = [
       "http://www.mirbsd.org/MirOS/dist/mir/mksh/mksh-R${version}.tgz"
       "http://pub.allbsd.org/MirOS/dist/mir/mksh/mksh-R${version}.tgz"
     ];
-    sha256 = "19ivsic15903hv3ipzk0kvkaxardw7b99s8l5iw3y415lz71ld66";
+    sha256 = "0mssqd2wp3cs9x01v6g66iy3ymdxagbyw2c0v597vnc1l6s2rm6f";
   };
 
-  buildInputs = [ groff ];
-
-  hardeningDisable = [ "format" ];
-
-  buildPhase = ''
-    mkdir build-dir/
-    cp mksh.1 dot.mkshrc build-dir/
-    cd build-dir/
-    sh ../Build.sh -c lto
-  '';
+  buildPhase = ''sh ./Build.sh -r -c lto'';
 
   installPhase = ''
-    mkdir -p $out/bin $out/share/man/man1 $out/share/mksh $out/bin
     install -D -m 755 mksh $out/bin/mksh
     install -D -m 644 mksh.1 $out/share/man/man1/mksh.1
-    install -D -m 644 mksh.cat1 $out/share/mksh/mksh.cat1
     install -D -m 644 dot.mkshrc $out/share/mksh/mkshrc
   '';
 
@@ -41,8 +30,8 @@ stdenv.mkDerivation rec {
       systems.
     '';
     homepage = "https://www.mirbsd.org/mksh.htm";
-    license = licenses.free;
-    maintainers = with maintainers; [ AndersonTorres nckx ];
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ AndersonTorres nckx joachifm ];
     platforms = platforms.unix;
   };
 
diff --git a/pkgs/stdenv/booter.nix b/pkgs/stdenv/booter.nix
index 2c82d12da95d..d459deb6ab54 100644
--- a/pkgs/stdenv/booter.nix
+++ b/pkgs/stdenv/booter.nix
@@ -41,6 +41,35 @@
 # other words, this does a foldr not foldl.
 stageFuns: let
 
+  /* "dfold" a ternary function `op' between successive elements of `list' as if
+     it was a doubly-linked list with `lnul' and `rnul` base cases at either
+     end. In precise terms, `fold op lnul rnul [x_0 x_1 x_2 ... x_n-1]` is the
+     same as
+
+       let
+         f_-1  = lnul;
+         f_0   = op f_-1   x_0  f_1;
+         f_1   = op f_0    x_1  f_2;
+         f_2   = op f_1    x_2  f_3;
+         ...
+         f_n   = op f_n-1  x_n  f_n+1;
+         f_n+1 = rnul;
+       in
+         f_0
+  */
+  dfold = op: lnul: rnul: list:
+    let
+      len = builtins.length list;
+      go = pred: n:
+        if n == len
+        then rnul
+        else let
+          # Note the cycle -- call-by-need ensures finite fold.
+          cur  = op pred (builtins.elemAt list n) succ;
+          succ = go cur (n + 1);
+        in cur;
+    in go lnul 0;
+
   # Take the list and disallow custom overrides in all but the final stage,
   # and allow it in the final flag. Only defaults this boolean field if it
   # isn't already set.
@@ -55,19 +84,21 @@ stageFuns: let
 
   # Adds the stdenv to the arguments, and sticks in it the previous stage for
   # debugging purposes.
-  folder = stageFun: finalSoFar: let
-    args = stageFun finalSoFar;
+  folder = nextStage: stageFun: prevStage: let
+    args = stageFun prevStage;
     args' = args // {
       stdenv = args.stdenv // {
         # For debugging
-        __bootPackages = finalSoFar;
+        __bootPackages = prevStage;
+        __hatPackages = nextStage;
       };
     };
   in
     if args.__raw or false
     then args'
     else allPackages ((builtins.removeAttrs args' ["selfBuild"]) // {
-      buildPackages = if args.selfBuild or true then null else finalSoFar;
+      buildPackages = if args.selfBuild or true then null else prevStage;
+      __targetPackages = if args.selfBuild or true then null else nextStage;
     });
 
-in lib.lists.fold folder {} withAllowCustomOverrides
+in dfold folder {} {} withAllowCustomOverrides
diff --git a/pkgs/tools/misc/asciinema/default.nix b/pkgs/tools/misc/asciinema/default.nix
index da96bde2fd52..4b228efee9e1 100644
--- a/pkgs/tools/misc/asciinema/default.nix
+++ b/pkgs/tools/misc/asciinema/default.nix
@@ -4,7 +4,7 @@ let
   pythonPackages = python3Packages;
 in pythonPackages.buildPythonApplication rec {
   name = "asciinema-${version}";
-  version = "1.3.0";
+  version = "1.4.0";
 
   buildInputs = with pythonPackages; [ nose ];
   propagatedBuildInputs = with pythonPackages; [ requests2 ];
@@ -13,9 +13,14 @@ in pythonPackages.buildPythonApplication rec {
     owner = "asciinema";
     repo = "asciinema";
     rev = "v${version}";
-    sha256 = "1hx7xipyy9w72iwlawldlif9qk3f7b8jx8c1wcx114pqbjz5d347";
+    sha256 = "1m2gjqxb5gqyz19lvp7jmwp7cxjc6nb0b2rrlsg3z2bl6vmi1xn2";
   };
 
+  patchPhase = ''
+    # disable one test which is failing with -> OSError: out of pty devices
+    rm tests/pty_recorder_test.py
+  '';
+
   checkPhase = ''
     nosetests
   '';
diff --git a/pkgs/tools/misc/system-config-printer/default.nix b/pkgs/tools/misc/system-config-printer/default.nix
index f1a9c4b4640a..0d66ef66b485 100644
--- a/pkgs/tools/misc/system-config-printer/default.nix
+++ b/pkgs/tools/misc/system-config-printer/default.nix
@@ -1,19 +1,19 @@
-{ stdenv, fetchurl, udev, intltool, pkgconfig, glib, xmlto
+{ stdenv, fetchurl, udev, intltool, pkgconfig, glib, xmlto, wrapGAppsHook
 , makeWrapper, gtk3, docbook_xml_dtd_412, docbook_xsl
 , libxml2, desktop_file_utils, libusb1, cups, gdk_pixbuf, pango, atk, libnotify
+, gobjectIntrospection, libgnome_keyring3
 , cups-filters
 , pythonPackages
 , withGUI ? true
 }:
 
-let majorVersion = "1.5";
-
-in stdenv.mkDerivation rec {
-  name = "system-config-printer-${majorVersion}.7";
+stdenv.mkDerivation rec {
+  name = "system-config-printer-${version}";
+  version = "1.5.9";
 
   src = fetchurl {
-    url = "http://cyberelk.net/tim/data/system-config-printer/${majorVersion}/${name}.tar.xz";
-    sha256 = "1vxczk22f58nbikvj47s2x1gzh6q4mbgwnf091p00h3b6nxppdgn";
+    url = "https://github.com/zdohnal/system-config-printer/releases/download/v${version}/${name}.tar.gz";
+    sha256 = "03bwlpsiqpxzcwd78a7rmwiww4jnqd7kl7il4kx78l1r57lasd2r";
   };
 
   patches = [ ./detect_serverbindir.patch ];
@@ -22,8 +22,12 @@ in stdenv.mkDerivation rec {
     [ intltool pkgconfig glib udev libusb1 cups xmlto
       libxml2 docbook_xml_dtd_412 docbook_xsl desktop_file_utils
       pythonPackages.python pythonPackages.wrapPython
+      libnotify gobjectIntrospection gdk_pixbuf pango atk
+      libgnome_keyring3
     ];
 
+  nativeBuildInputs = [ wrapGAppsHook ];
+
   pythonPath = with pythonPackages;
     [ pycups pycurl dbus-python pygobject3 requests2 pycairo pythonPackages.pycurl ];
 
@@ -33,36 +37,22 @@ in stdenv.mkDerivation rec {
       "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
     ];
 
-  stripDebugList = "bin lib etc/udev";
+  stripDebugList = [ "bin" "lib" "etc/udev" ];
 
   postInstall =
-    let
-      giTypelibPath = stdenv.lib.makeSearchPath "lib/girepository-1.0" [ gdk_pixbuf.out gtk3.out pango.out atk.out libnotify.out ];
-    in
     ''
-      export makeWrapperArgs="--set prefix $out \
-          --set GI_TYPELIB_PATH ${giTypelibPath} \
-          --set CUPS_DATADIR ${cups-filters}/share/cups"
-      wrapPythonPrograms
-
-      # The program imports itself, so we need to move shell wrappers to a proper place.
-      fixupWrapper() {
-        mv "$out/share/system-config-printer/$2.py" \
-           "$out/bin/$1"
-        sed -i "s/.$2.py-wrapped/$2.py/g" "$out/bin/$1"
-        mv "$out/share/system-config-printer/.$2.py-wrapped" \
-           "$out/share/system-config-printer/$2.py"
-      }
-      fixupWrapper scp-dbus-service scp-dbus-service
-      fixupWrapper system-config-printer system-config-printer
-      fixupWrapper system-config-printer-applet applet
-      # This __init__.py is both executed and imported.
-      ( cd $out/share/system-config-printer/troubleshoot
-        mv .__init__.py-wrapped __init__.py
+      buildPythonPath "$out $pythonPath"
+      gappsWrapperArgs+=(
+        --prefix PATH "$program_PATH"
+        --set CUPS_DATADIR "${cups-filters}/share/cups"
       )
 
+      find $out/share/system-config-printer -name \*.py -type f -perm -0100 -print0 | while read -d "" f; do
+        patchPythonScript "$f"
+      done
+
       # The below line will be unneeded when the next upstream release arrives.
-      sed -i -e "s|/usr/bin|$out/bin|" "$out/share/dbus-1/services/org.fedoraproject.Config.Printing.service"
+      sed -i -e "s|/usr/local/bin|$out/bin|" "$out/share/dbus-1/services/org.fedoraproject.Config.Printing.service"
 
       # Manually expand literal "$(out)", which have failed to expand
       sed -e "s|ExecStart=\$(out)|ExecStart=$out|" \
diff --git a/pkgs/tools/system/runit/default.nix b/pkgs/tools/system/runit/default.nix
index 54899cb14df5..03da7bc657f6 100644
--- a/pkgs/tools/system/runit/default.nix
+++ b/pkgs/tools/system/runit/default.nix
@@ -1,4 +1,6 @@
 { stdenv, fetchurl
+
+# Build runit-init as a static binary
 , static ? false
 }:
 
@@ -19,7 +21,9 @@ stdenv.mkDerivation rec {
 
   buildInputs = stdenv.lib.optionals static [ stdenv.cc.libc stdenv.cc.libc.static ];
 
-  postPatch = stdenv.lib.optionalString (!static) ''
+  postPatch = ''
+    sed -i "s,\(#define RUNIT\) .*,\1 \"$out/bin/runit\"," src/runit.h
+  '' + stdenv.lib.optionalString (!static) ''
     sed -i 's,-static,,g' src/Makefile
   '';
 
diff --git a/pkgs/tools/text/kdiff3/default.nix b/pkgs/tools/text/kdiff3/default.nix
index e199d77e2265..bd76b89ccf74 100644
--- a/pkgs/tools/text/kdiff3/default.nix
+++ b/pkgs/tools/text/kdiff3/default.nix
@@ -22,7 +22,7 @@ let
       (fetchpatch {
         name = "git-mergetool.diff"; # see https://gitlab.com/tfischer/kdiff3/merge_requests/2
         url = "https://gitlab.com/vcunat/kdiff3/commit/6106126216.patch";
-        sha256 = "0v638rk05wz51qcqnc6blcp2v74f04wn8ifgzw7qi5vr0yfh775r";
+        sha256 = "16xqc24y8bg8gzkdbwapiwi68rzqnkpz4hgn586mi01ngig2fd7y";
       })
     ];
     patchFlags = "-p 2";
diff --git a/pkgs/tools/text/patchutils/default.nix b/pkgs/tools/text/patchutils/default.nix
index 8a066864d220..75922a6c830c 100644
--- a/pkgs/tools/text/patchutils/default.nix
+++ b/pkgs/tools/text/patchutils/default.nix
@@ -1,13 +1,15 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "patchutils-0.3.4";
+  name = "patchutils-0.3.3";
 
   src = fetchurl {
     url = "http://cyberelk.net/tim/data/patchutils/stable/${name}.tar.xz";
-    sha256 = "0xp8mcfyi5nmb5a2zi5ibmyshxkb1zv1dgmnyn413m7ahgdx8mfg";
+    sha256 = "0g5df00cj4nczrmr4k791l7la0sq2wnf8rn981fsrz1f3d2yix4i";
   };
 
+  patches = [ ./drop-comments.patch ]; # we would get into a cycle when using fetchpatch on this one
+
   hardeningDisable = [ "format" ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/tools/text/patchutils/drop-comments.patch b/pkgs/tools/text/patchutils/drop-comments.patch
new file mode 100644
index 000000000000..e02693a5683d
--- /dev/null
+++ b/pkgs/tools/text/patchutils/drop-comments.patch
@@ -0,0 +1,84 @@
+From 58987954647f51dc42fb13b7759923c6170dd905 Mon Sep 17 00:00:00 2001
+From: Tim Waugh <twaugh@redhat.com>
+Date: Fri, 9 May 2014 16:23:27 +0100
+Subject: Make --clean drop comments after '@@' lines as well (trac #29).
+
+
+diff --git a/Makefile.am b/Makefile.am
+index 99ad2a3..f3c6dbc 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -198,6 +198,7 @@ TESTS = tests/newline1/run-test \
+ 	tests/convert1/run-test \
+ 	tests/convert2/run-test \
+ 	tests/clean1/run-test \
++	tests/clean2/run-test \
+ 	tests/stdin/run-test
+ 
+ # These ones don't work yet.
+diff --git a/src/filterdiff.c b/src/filterdiff.c
+index 383e72b..6ca2316 100644
+--- a/src/filterdiff.c
++++ b/src/filterdiff.c
+@@ -2,7 +2,7 @@
+  * filterdiff - extract (or exclude) a diff from a diff file
+  * lsdiff - show which files are modified by a patch
+  * grepdiff - show files modified by a patch containing a regexp
+- * Copyright (C) 2001, 2002, 2003, 2004, 2008, 2009, 2011 Tim Waugh <twaugh@redhat.com>
++ * Copyright (C) 2001, 2002, 2003, 2004, 2008, 2009, 2011, 2013, 2014 Tim Waugh <twaugh@redhat.com>
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License as published by
+@@ -408,7 +408,8 @@ do_unified (FILE *f, char *header[2], int match, char **line,
+ 							 " Hunk #%lu, %s",
+ 							 hunknum, bestname);
+ 
+-					fputs (trailing, output_to);
++					fputs (clean_comments ? "\n" : trailing,
++					       output_to);
+ 					break;
+ 				case Before:
+ 					// Note the initial line number
+diff --git a/tests/clean2/run-test b/tests/clean2/run-test
+new file mode 100755
+index 0000000..42320df
+--- /dev/null
++++ b/tests/clean2/run-test
+@@ -0,0 +1,34 @@
++#!/bin/sh
++
++# This is a filterdiff(1) testcase.
++# Test: Make sure --clean removes hunk-level comments.
++
++
++. ${top_srcdir-.}/tests/common.sh
++
++cat << EOF > diff
++non-diff line
++--- a/file1
+++++ b/file1
++@@ -0,0 +1 @@ this is a hunk-level comment
+++a
++EOF
++
++${FILTERDIFF} --clean diff 2>errors >filtered || exit 1
++[ -s errors ] && exit 1
++
++cat << EOF | cmp - filtered || exit 1
++--- a/file1
+++++ b/file1
++@@ -0,0 +1 @@
+++a
++EOF
++
++${FILTERDIFF} --clean -x file1 diff 2>errors >filtered || exit 1
++[ -s errors ] && exit 1
++cat << EOF | cmp - filtered || exit 1
++--- a/file1
+++++ b/file1
++@@ -0,0 +1 @@
+++a
++EOF
+-- 
+cgit v0.10.1
+
diff --git a/pkgs/tools/text/ripgrep/default.nix b/pkgs/tools/text/ripgrep/default.nix
index bc8b02ca2a8d..abcd616aef9d 100644
--- a/pkgs/tools/text/ripgrep/default.nix
+++ b/pkgs/tools/text/ripgrep/default.nix
@@ -4,16 +4,16 @@ with rustPlatform;
 
 buildRustPackage rec {
   name = "ripgrep-${version}";
-  version = "0.5.0";
+  version = "0.5.1";
 
   src = fetchFromGitHub {
     owner = "BurntSushi";
     repo = "ripgrep";
     rev = "${version}";
-    sha256 = "13mg624867hqxp9pzpq1gn9kqkvbaqcphdjia3bz5wvff1cbxkfy";
+    sha256 = "1fbvc419gh1rix8v3bh9a63r993kvfizp49p5ps6y22wggpy0k77";
   };
 
-  depsSha256 = "0glw8xk77w2h1xg6c451fg8cmwx3vz7dyzdrbf0i8d84yq8sh0i1";
+  depsSha256 = "0vyrcgcmlf3lbp15nip2cm8xv4n6qldfbl0iwy3jb69i2mazi6nm";
 
   preFixup = ''
     mkdir -p "$out/man/man1"
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index bd26cbbc53d3..d00695e171e3 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -3063,6 +3063,8 @@ with pkgs;
 
   mysqltuner = callPackage ../tools/misc/mysqltuner { };
 
+  mytetra = libsForQt5.callPackage ../applications/office/mytetra { };
+
   nabi = callPackage ../tools/inputmethods/nabi { };
 
   namazu = callPackage ../tools/text/namazu { };
@@ -12481,6 +12483,8 @@ with pkgs;
 
   faba-mono-icons = callPackage ../data/icons/faba-mono-icons { };
 
+  emacs-all-the-icons-fonts = callPackage ../data/fonts/emacs-all-the-icons-fonts { };
+
   emojione = callPackage ../data/fonts/emojione {
     inherit (nodePackages) svgo;
     inherit (pythonPackages) scfbuild;
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index 0e9efde834db..bd28201bb66a 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -734,6 +734,19 @@ let self = _self // overrides; _self = with self; {
     ];
   };
 
+  BusinessHours = buildPerlPackage rec {
+    name = "Business-Hours-0.12";
+    src = fetchurl {
+      url = "https://cpan.metacpan.org/authors/id/R/RU/RUZ/Business-Hours-0.12.tar.gz";
+      sha256 = "15c5g278m1x121blspf4bymxp89vysizr3z6s1g3sbpfdkrn4gyv";
+    };
+    buildInputs = [ TestPod TestPodCoverage ];
+    propagatedBuildInputs = [ SetIntSpan TimeLocal ];
+    meta = {
+      description = "Calculate business hours in a time period";
+    };
+  };
+
   BusinessISBN = buildPerlPackage rec {
     name = "Business-ISBN-2.09";
     src = fetchurl {
@@ -2777,6 +2790,18 @@ let self = _self // overrides; _self = with self; {
     buildInputs = [ Clone ];
   };
 
+  CSSMinifierXP = buildPerlPackage rec {
+    name = "CSS-Minifier-XS-0.09";
+    src = fetchurl {
+      url = "https://cpan.metacpan.org/authors/id/G/GT/GTERMARS/CSS-Minifier-XS-0.09.tar.gz";
+      sha256 = "1myswrmh0sqp5xjpp03x45z8arfmgkjx0srl3r6kjsyzl1zrk9l8";
+    };
+    meta = {
+      description = "XS based CSS minifier";
+      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
   CSSSquish = buildPerlPackage {
     name = "CSS-Squish-0.10";
     src = fetchurl {
@@ -2997,6 +3022,20 @@ let self = _self // overrides; _self = with self; {
     propagatedBuildInputs = [TestException ClassAccessorChained];
   };
 
+  DataPagePageset = buildPerlPackage rec {
+    name = "Data-Page-Pageset-1.02";
+    src = fetchurl {
+      url = "https://cpan.metacpan.org/authors/id/C/CH/CHUNZI/Data-Page-Pageset-1.02.tar.gz";
+      sha256 = "142isi8la383dbjxj7lfgcbmmrpzwckcc4wma6rdl8ryajsipb6f";
+    };
+    buildInputs = [ TestPod TestPodCoverage ];
+    propagatedBuildInputs = [ DataPage ];
+    meta = {
+      description = "change long page list to be shorter and well navigate";
+      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
   DataPassword = buildPerlPackage {
     name = "Data-Password-1.12";
     src = fetchurl {
@@ -5694,6 +5733,20 @@ let self = _self // overrides; _self = with self; {
     makeMakerFlags = "--lib_png_path=${pkgs.libpng.out} --lib_jpeg_path=${pkgs.libjpeg.out} --lib_zlib_path=${pkgs.zlib.out} --lib_ft_path=${pkgs.freetype.out} --lib_fontconfig_path=${pkgs.fontconfig.lib} --lib_xpm_path=${pkgs.xorg.libXpm.out}";
   };
 
+  GDGraph = buildPerlPackage rec {
+    name = "GDGraph-1.54";
+    src = fetchurl {
+      url = "https://cpan.metacpan.org/authors/id/R/RU/RUZ/GDGraph-1.54.tar.gz";
+      sha256 = "0kzsdc07ycxjainmz0dnsclb15w2j1y7g8b5mcb7vhannq85qvxr";
+    };
+    propagatedBuildInputs = [ GD GDText ];
+    buildInputs = [ TestException CaptureTiny ];
+    meta = {
+      description = "Graph Plotting Module for Perl 5";
+      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
   GDSecurityImage = buildPerlPackage {
     name = "GD-SecurityImage-1.72";
     src = fetchurl {
@@ -5707,6 +5760,18 @@ let self = _self // overrides; _self = with self; {
     };
   };
 
+  GDText = buildPerlPackage rec {
+    name = "GDTextUtil-0.86";
+    src = fetchurl {
+      url = "https://cpan.metacpan.org/authors/id/M/MV/MVERB/GDTextUtil-0.86.tar.gz";
+      sha256 = "1g0nc7fz4d672ag7brlrrcz7ibm98x49qs75bq9z957ybkwcnvl8";
+    };
+    propagatedBuildInputs = [ GD ];
+    meta = {
+      description = "Text utilities for use with GD";
+    };
+  };
+
   GeoIP = buildPerlPackage rec {
     name = "Geo-IP-1.45";
     src = fetchurl {
@@ -6832,7 +6897,7 @@ let self = _self // overrides; _self = with self; {
       sha256 = "74d22c44b5ad2e7190e2786e8a17d74bbf4cef89b4d1157ba33598b5a2720dad";
     };
   };
-  
+
   IOPager = buildPerlPackage {
     name = "IO-Pager-0.06";
     src = fetchurl {
@@ -7136,6 +7201,20 @@ let self = _self // overrides; _self = with self; {
     };
   };
 
+  JavaScriptMinifierXS = buildPerlPackage rec {
+    name = "JavaScript-Minifier-XS-0.11";
+    src = fetchurl {
+      url = "https://cpan.metacpan.org/authors/id/G/GT/GTERMARS/JavaScript-Minifier-XS-0.11.tar.gz";
+      sha256 = "1vlyhckpjbrg2v4dy9szsxxl0q44n0y1xl763mg2y2ym9g5144hm";
+    };
+    propagatedBuildInputs = [ ];
+    meta = {
+      description = "XS based JavaScript minifier";
+      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
+
   JSON = buildPerlPackage {
     name = "JSON-2.90";
     src = fetchurl {
@@ -8225,6 +8304,29 @@ let self = _self // overrides; _self = with self; {
     buildInputs = [ ProcWaitStat ];
   };
 
+  MIMETools = buildPerlPackage rec {
+    name = "MIME-tools-5.509";
+    src = fetchurl {
+      url = "https://cpan.metacpan.org/authors/id/D/DS/DSKOLL/MIME-tools-5.509.tar.gz";
+      sha256 = "0wv9rzx5j1wjm01c3dg48qk9wlbm6iyf91j536idk09xj869ymv4";
+    };
+    propagatedBuildInputs = [
+      MailTools
+      FilePath
+      FileTemp
+      MIMEBase64
+    ];
+    buildInputs = [
+      TestDeep
+      TestPod
+      TestPodCoverage
+    ];
+    meta = {
+      description = "class for parsed-and-decoded MIME message";
+      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
   MIMELite = buildPerlPackage rec {
     name = "MIME-Lite-3.030";
     src = fetchurl {
@@ -11468,6 +11570,18 @@ let self = _self // overrides; _self = with self; {
     };
   };
 
+  SetIntSpan = buildPerlPackage rec {
+    name = "Set-IntSpan-1.19";
+    src = fetchurl {
+      url = "https://cpan.metacpan.org/authors/id/S/SW/SWMCD/Set-IntSpan-1.19.tar.gz";
+      sha256 = "1l6znd40ylzvfwl02rlqzvakv602rmvwgm2xd768fpgc2fdm9dqi";
+    };
+
+    meta = {
+      description = "Manages sets of integers";
+    };
+  };
+
   SetObject = buildPerlPackage {
     name = "Set-Object-1.34";
     src = fetchurl {
@@ -12319,7 +12433,7 @@ let self = _self // overrides; _self = with self; {
       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
- 
+
   TaskFreecellSolverTesting = buildPerlModule rec {
     name = "Task-FreecellSolver-Testing-v0.0.10";
     src = fetchurl {
@@ -13541,7 +13655,7 @@ let self = _self // overrides; _self = with self; {
       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
     };
   };
- 
+
   TestTrailingSpace = buildPerlPackage rec {
     name = "Test-TrailingSpace-0.0301";
     src = fetchurl {
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index e2a615e7a0fb..355d470ca5d3 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -20558,6 +20558,8 @@ in {
     };
   };
 
+  pyspread = callPackage ../development/python-modules/pyspread { };
+
   pyx = buildPythonPackage rec {
     name = "pyx-${version}";
     version = "0.14.1";
diff --git a/pkgs/top-level/splice.nix b/pkgs/top-level/splice.nix
index a22587d5b576..43951100de3d 100644
--- a/pkgs/top-level/splice.nix
+++ b/pkgs/top-level/splice.nix
@@ -64,7 +64,11 @@ let
 
   splicedPackages =
     if actuallySplice
-    then splicer defaultBuildScope defaultRunScope
+    then splicer defaultBuildScope defaultRunScope // {
+      # These should never be spliced under any circumstances
+      inherit (pkgs) pkgs buildPackages __targetPackages
+        buildPlatform targetPlatform hostPlatform;
+    }
     else pkgs // pkgs.xorg;
 
 in
diff --git a/pkgs/top-level/stage.nix b/pkgs/top-level/stage.nix
index 6febedb79f3d..d8e190cfd4be 100644
--- a/pkgs/top-level/stage.nix
+++ b/pkgs/top-level/stage.nix
@@ -46,9 +46,18 @@
   ##
 
 , # The package set used at build-time. If null, `buildPackages` will
-  # be defined internally as the produced package set as itself.
+  # be defined internally as the final produced package set itself. This allows
+  # us to avoid expensive splicing.
   buildPackages
 
+, # The package set used in the next stage. If null, `__targetPackages` will be
+  # defined internally as the final produced package set itself, just like with
+  # `buildPackages` and for the same reasons.
+  #
+  # THIS IS A HACK for compilers that don't think critically about cross-
+  # compilation. Please do *not* use unless you really know what you are doing.
+  __targetPackages
+
 , # The standard environment to use for building packages.
   stdenv
 
@@ -87,6 +96,8 @@ let
   stdenvBootstappingAndPlatforms = self: super: {
     buildPackages = (if buildPackages == null then self else buildPackages)
       // { recurseForDerivations = false; };
+    __targetPackages = (if __targetPackages == null then self else __targetPackages)
+      // { recurseForDerivations = false; };
     inherit stdenv
       buildPlatform hostPlatform targetPlatform;
   };