about summary refs log tree commit diff
path: root/pkgs/tools/misc
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2015-10-03 13:33:13 +0200
committerVladimír Čunát <vcunat@gmail.com>2015-10-03 13:33:37 +0200
commit5227fb1dd53fcb5918b9342dff4868f4ad68427e (patch)
treed6cd521e3f67944031216a27f740f28f22b73b41 /pkgs/tools/misc
parentd6dd3b8bd1eaeeb21dfdb5051cd4732c748ce5d7 (diff)
parent33373d939a19f465228ddede6d38ce9032b5916b (diff)
Merge commit staging+systemd into closure-size
Many non-conflict problems weren't (fully) resolved in this commit yet.
Diffstat (limited to 'pkgs/tools/misc')
-rw-r--r--pkgs/tools/misc/antimicro/default.nix22
-rw-r--r--pkgs/tools/misc/bandwidth/default.nix3
-rw-r--r--pkgs/tools/misc/bdf2psf/default.nix32
-rw-r--r--pkgs/tools/misc/bmon/default.nix4
-rw-r--r--pkgs/tools/misc/brltty/default.nix33
-rw-r--r--pkgs/tools/misc/byobu/default.nix4
-rw-r--r--pkgs/tools/misc/calamares/default.nix55
-rw-r--r--pkgs/tools/misc/clex/default.nix2
-rw-r--r--pkgs/tools/misc/cloc/default.nix4
-rw-r--r--pkgs/tools/misc/colord-kde/default.nix8
-rw-r--r--pkgs/tools/misc/colord/default.nix15
-rw-r--r--pkgs/tools/misc/coreutils/coreutils-8.23-4.cygwin.patch1259
-rw-r--r--pkgs/tools/misc/coreutils/default.nix11
-rw-r--r--pkgs/tools/misc/cpulimit/default.nix2
-rw-r--r--pkgs/tools/misc/cpuminer/default.nix11
-rw-r--r--pkgs/tools/misc/debian-devscripts/default.nix46
-rw-r--r--pkgs/tools/misc/debootstrap/default.nix10
-rw-r--r--pkgs/tools/misc/detox/default.nix8
-rw-r--r--pkgs/tools/misc/diffoscope/default.nix56
-rw-r--r--pkgs/tools/misc/direnv/default.nix4
-rw-r--r--pkgs/tools/misc/dtach/default.nix2
-rw-r--r--pkgs/tools/misc/dtach/fix-CVE-2012-3368.patch49
-rw-r--r--pkgs/tools/misc/ent/default.nix2
-rw-r--r--pkgs/tools/misc/entr/default.nix32
-rw-r--r--pkgs/tools/misc/escoger/default.nix33
-rw-r--r--pkgs/tools/misc/ethtool/default.nix4
-rw-r--r--pkgs/tools/misc/execline/default.nix5
-rw-r--r--pkgs/tools/misc/expect/default.nix28
-rw-r--r--pkgs/tools/misc/fasd/default.nix11
-rw-r--r--pkgs/tools/misc/fdupes/default.nix27
-rw-r--r--pkgs/tools/misc/file/default.nix9
-rw-r--r--pkgs/tools/misc/file/python.patch11
-rw-r--r--pkgs/tools/misc/findutils/default.nix6
-rw-r--r--pkgs/tools/misc/findutils/disable-test-canonicalize.patch12
-rw-r--r--pkgs/tools/misc/fluentd/default.nix2
-rw-r--r--pkgs/tools/misc/gnokii/default.nix6
-rw-r--r--pkgs/tools/misc/gparted/default.nix18
-rw-r--r--pkgs/tools/misc/grub/2.0x.nix6
-rw-r--r--pkgs/tools/misc/grub/trusted.nix100
-rw-r--r--pkgs/tools/misc/gummiboot/default.nix8
-rw-r--r--pkgs/tools/misc/i3minator/default.nix17
-rw-r--r--pkgs/tools/misc/ipad_charge/default.nix42
-rw-r--r--pkgs/tools/misc/kde-gtk-config/default.nix20
-rw-r--r--pkgs/tools/misc/keychain/default.nix22
-rw-r--r--pkgs/tools/misc/less/default.nix2
-rw-r--r--pkgs/tools/misc/logstash-forwarder/default.nix24
-rw-r--r--pkgs/tools/misc/logstash/default.nix37
-rw-r--r--pkgs/tools/misc/lolcat/Gemfile2
-rw-r--r--pkgs/tools/misc/lolcat/Gemfile.lock14
-rw-r--r--pkgs/tools/misc/lolcat/default.nix18
-rw-r--r--pkgs/tools/misc/lolcat/gemset.nix27
-rw-r--r--pkgs/tools/misc/man-db/default.nix4
-rw-r--r--pkgs/tools/misc/memtest86+/default.nix2
-rw-r--r--pkgs/tools/misc/mmv/default.nix4
-rw-r--r--pkgs/tools/misc/moreutils/default.nix8
-rw-r--r--pkgs/tools/misc/multitail/default.nix6
-rw-r--r--pkgs/tools/misc/ncdu/default.nix11
-rw-r--r--pkgs/tools/misc/ngrok/default.nix43
-rw-r--r--pkgs/tools/misc/ocz-ssd-guru/default.nix12
-rw-r--r--pkgs/tools/misc/opentsdb/default.nix7
-rw-r--r--pkgs/tools/misc/pal/default.nix4
-rw-r--r--pkgs/tools/misc/parallel/default.nix26
-rw-r--r--pkgs/tools/misc/picocom/default.nix19
-rw-r--r--pkgs/tools/misc/pipelight/default.nix43
-rw-r--r--pkgs/tools/misc/pipelight/pipelight.patch4
-rw-r--r--pkgs/tools/misc/plowshare/default.nix12
-rw-r--r--pkgs/tools/misc/profile-cleaner/default.nix4
-rw-r--r--pkgs/tools/misc/progress/default.nix (renamed from pkgs/tools/misc/cv/default.nix)10
-rw-r--r--pkgs/tools/misc/pv/default.nix2
-rw-r--r--pkgs/tools/misc/qjoypad/default.nix2
-rw-r--r--pkgs/tools/misc/remind/default.nix6
-rw-r--r--pkgs/tools/misc/riemann-c-client/default.nix15
-rw-r--r--pkgs/tools/misc/riemann-tools/Gemfile3
-rw-r--r--pkgs/tools/misc/riemann-tools/Gemfile.lock142
-rw-r--r--pkgs/tools/misc/riemann-tools/default.nix8
-rw-r--r--pkgs/tools/misc/riemann-tools/gemset.nix444
-rw-r--r--pkgs/tools/misc/rmlint/default.nix6
-rw-r--r--pkgs/tools/misc/rmlint/fix-scons.patch22
-rw-r--r--pkgs/tools/misc/rockbox-utility/default.nix2
-rw-r--r--pkgs/tools/misc/rrdtool/default.nix4
-rw-r--r--pkgs/tools/misc/s6-portable-utils/default.nix5
-rw-r--r--pkgs/tools/misc/scanmem/default.nix23
-rw-r--r--pkgs/tools/misc/screen/default.nix6
-rw-r--r--pkgs/tools/misc/screenfetch/default.nix33
-rw-r--r--pkgs/tools/misc/sdl-jstest/default.nix21
-rw-r--r--pkgs/tools/misc/sl/default.nix22
-rw-r--r--pkgs/tools/misc/slop/default.nix24
-rw-r--r--pkgs/tools/misc/stow/default.nix4
-rw-r--r--pkgs/tools/misc/stow/precedence-issue.patch15
-rw-r--r--pkgs/tools/misc/svtplay-dl/default.nix16
-rw-r--r--pkgs/tools/misc/t/default.nix2
-rw-r--r--pkgs/tools/misc/t1utils/default.nix4
-rw-r--r--pkgs/tools/misc/timidity/default.nix6
-rw-r--r--pkgs/tools/misc/tlp/default.nix4
-rw-r--r--pkgs/tools/misc/tmate/default.nix27
-rw-r--r--pkgs/tools/misc/tmux/default.nix29
-rw-r--r--pkgs/tools/misc/tmuxinator/default.nix2
-rw-r--r--pkgs/tools/misc/toilet/default.nix20
-rw-r--r--pkgs/tools/misc/ttylog/default.nix23
-rw-r--r--pkgs/tools/misc/umlet/default.nix4
-rw-r--r--pkgs/tools/misc/unclutter/default.nix4
-rw-r--r--pkgs/tools/misc/urjtag/default.nix40
-rw-r--r--pkgs/tools/misc/vdirsyncer/default.nix22
-rw-r--r--pkgs/tools/misc/vfdecrypt/default.nix3
-rw-r--r--pkgs/tools/misc/w3c-css-validator/default.nix77
-rw-r--r--pkgs/tools/misc/wyrd/default.nix4
-rw-r--r--pkgs/tools/misc/xclip/default.nix4
-rw-r--r--pkgs/tools/misc/xdaliclock/default.nix63
-rw-r--r--pkgs/tools/misc/xflux/default.nix2
-rw-r--r--pkgs/tools/misc/xsel/default.nix4
-rw-r--r--pkgs/tools/misc/youtube-dl/default.nix36
-rw-r--r--pkgs/tools/misc/yubico-piv-tool/default.nix4
-rw-r--r--pkgs/tools/misc/yubikey-personalization-gui/default.nix7
-rw-r--r--pkgs/tools/misc/yubikey-personalization/default.nix7
-rw-r--r--pkgs/tools/misc/zsh-navigation-tools/default.nix27
115 files changed, 2998 insertions, 656 deletions
diff --git a/pkgs/tools/misc/antimicro/default.nix b/pkgs/tools/misc/antimicro/default.nix
new file mode 100644
index 0000000000000..a2eed91393064
--- /dev/null
+++ b/pkgs/tools/misc/antimicro/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, cmake, pkgconfig, SDL2, qt5, xorg, fetchzip }:
+
+stdenv.mkDerivation rec {
+  name = "antimicro-${version}";
+  version = "2.18";
+
+  src = fetchzip {
+    url    = "https://github.com/Ryochan7/antimicro/archive/${version}.tar.gz";
+    sha256 = "0kyl4xl2am50v2xscgy2irpcdj78f7flgfhljyjck4ynf8d40vb7";
+  };
+
+  buildInputs = [
+    cmake pkgconfig SDL2 qt5.base qt5.tools xorg.libXtst
+  ];
+
+  meta = with stdenv.lib; {
+    description = "GUI for mapping keyboard and mouse controls to a gamepad";
+    homepage = "https://github.com/Ryochan7/antimicro";
+    maintainers = with maintainers; [ jb55 ];
+    license = licenses.gpl3;
+  };
+}
diff --git a/pkgs/tools/misc/bandwidth/default.nix b/pkgs/tools/misc/bandwidth/default.nix
index 35b13448b59d0..ff5e47336d3cb 100644
--- a/pkgs/tools/misc/bandwidth/default.nix
+++ b/pkgs/tools/misc/bandwidth/default.nix
@@ -19,7 +19,8 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ nasm ];
 
-  buildFlags = [ arch ];
+  buildFlags = [ arch ]
+    ++ stdenv.lib.optionals stdenv.cc.isClang [ "CC=clang" "LD=clang" ];
 
   installPhase = ''
     mkdir -p $out/bin
diff --git a/pkgs/tools/misc/bdf2psf/default.nix b/pkgs/tools/misc/bdf2psf/default.nix
new file mode 100644
index 0000000000000..342c014faaaef
--- /dev/null
+++ b/pkgs/tools/misc/bdf2psf/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, perl, dpkg }:
+
+stdenv.mkDerivation rec {
+  name = "bdf2psf-${version}";
+  version = "1.132";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/c/console-setup/bdf2psf_${version}_all.deb";
+    sha256 = "01r8v6qi6klsgi66ld86c78cdz308mywrm9j101d73nsxgx6qhzz";
+  };
+
+  buildInputs = [ dpkg ];
+
+  dontConfigure = true;
+  dontBuild = true;
+
+  unpackPhase = "dpkg-deb -x $src .";
+  installPhase = "
+    substituteInPlace usr/bin/bdf2psf --replace /usr/bin/perl ${perl}/bin/perl
+    mv usr/bin .
+    cp -r . $out
+  ";
+
+  meta = {
+    description = "BDF to PSF converter";
+    homepage = https://packages.debian.org/sid/bdf2psf;
+    longDescription = ''
+      Font converter to generate console fonts from BDF source fonts
+    '';
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
\ No newline at end of file
diff --git a/pkgs/tools/misc/bmon/default.nix b/pkgs/tools/misc/bmon/default.nix
index 1a24ba700513b..1bbabcf5523f8 100644
--- a/pkgs/tools/misc/bmon/default.nix
+++ b/pkgs/tools/misc/bmon/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   name = "bmon-${version}";
-  version = "3.6";
+  version = "3.8";
 
   src = fetchFromGitHub {
     owner = "tgraf";
     repo = "bmon";
     rev = "v${version}";
-    sha256 = "16qwazays2j448kmfckv6wvh4rhmhc9q4vp1s75hm9z02cmhvk8q";
+    sha256 = "19jv14r9j9n54bqhidw3z11z3wys1v2cagqpsxn0kjga1gkg87xs";
   };
 
   buildInputs = [ autoconf automake pkgconfig ncurses confuse libnl ];
diff --git a/pkgs/tools/misc/brltty/default.nix b/pkgs/tools/misc/brltty/default.nix
new file mode 100644
index 0000000000000..4201fb25f98ab
--- /dev/null
+++ b/pkgs/tools/misc/brltty/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, pkgconfig, alsaSupport, alsaLib ? null, bluez }:
+
+assert alsaSupport -> alsaLib != null;
+
+stdenv.mkDerivation rec {
+  name = "brltty-5.2";
+  
+  src = fetchurl {
+    url = "http://brltty.com/archive/${name}.tar.gz";
+    sha256 = "1zaab5pxkqrv081n23p3am445d30gk0km4azqdirvcpw9z15q0cz";
+  };
+  
+  buildInputs = [ pkgconfig alsaLib bluez ]
+    ++ stdenv.lib.optional alsaSupport alsaLib;
+  
+  meta = {
+    description = "Access software for a blind person using a braille display";
+    longDescription = ''
+      BRLTTY is a background process (daemon) which provides access to the Linux/Unix
+      console (when in text mode) for a blind person using a refreshable braille display.
+      It drives the braille display, and provides complete screen review functionality.
+      Some speech capability has also been incorporated. 
+    '';
+    homepage = http://www.brltty.com/;
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.bramd ];
+    platforms = stdenv.lib.platforms.all;
+  };
+  
+  patchPhase = ''
+    substituteInPlace configure --replace /sbin/ldconfig ldconfig
+  '';
+}
diff --git a/pkgs/tools/misc/byobu/default.nix b/pkgs/tools/misc/byobu/default.nix
index ca9a9453dbfc7..4491905de4fcb 100644
--- a/pkgs/tools/misc/byobu/default.nix
+++ b/pkgs/tools/misc/byobu/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ncurses }:
+{ stdenv, fetchurl, ncurses, python, perl }:
 
 stdenv.mkDerivation rec {
   name = "byobu-5.87";
@@ -10,6 +10,8 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
+  buildInputs = [ python perl ];
+
   meta = {
     homepage = https://launchpad.net/byobu/;
     description = "Text-based window manager and terminal multiplexer";
diff --git a/pkgs/tools/misc/calamares/default.nix b/pkgs/tools/misc/calamares/default.nix
new file mode 100644
index 0000000000000..e2b8c70c6e278
--- /dev/null
+++ b/pkgs/tools/misc/calamares/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchgit, cmake, qt5, polkit_qt5, libyamlcpp, python, boost, parted
+, extra-cmake-modules, kconfig, ki18n, kcoreaddons, solid, utillinux, libatasmart
+, ckbcomp, glibc, tzdata, xkeyboard_config }:
+
+stdenv.mkDerivation rec {
+  name = "calamares-${version}";
+  version = "1.0";
+
+  src = fetchgit {
+    url = "https://github.com/calamares/calamares.git";
+    rev = "dabfb68a68cb012a90cd7b94a22e1ea08f7dd8ad";
+    sha256 = "2851ce487aaac61d2df342a47f91ec87fe52ff036227ef697caa7056fe5f188c";
+  };
+
+  buildInputs = [
+    cmake qt5.base qt5.tools libyamlcpp python boost polkit_qt5 parted
+    extra-cmake-modules kconfig ki18n kcoreaddons solid utillinux libatasmart
+  ];
+
+  cmakeFlags = [
+    "-DPYTHON_LIBRARY=${python}/lib/libpython${python.majorVersion}m.so"
+    "-DPYTHON_INCLUDE_DIR=${python}/include/python${python.majorVersion}m"
+    "-DWITH_PARTITIONMANAGER=1"
+  ];
+
+  patchPhase = ''
+      sed -e "s,/usr/bin/calamares,$out/bin/calamares," \
+          -i calamares.desktop \
+          -i com.github.calamares.calamares.policy
+
+      sed -e 's,/usr/share/zoneinfo,${tzdata}/share/zoneinfo,' \
+          -i src/modules/locale/timezonewidget/localeconst.h \
+          -i src/modules/locale/SetTimezoneJob.cpp
+
+      sed -e 's,/usr/share/i18n/locales,${glibc}/share/i18n/locales,' \
+          -i src/modules/locale/timezonewidget/localeconst.h
+
+      sed -e 's,/usr/share/X11/xkb/rules/base.lst,${xkeyboard_config}/share/X11/xkb/rules/base.lst,' \
+          -i src/modules/keyboard/keyboardwidget/keyboardglobal.h
+
+      sed -e 's,"ckbcomp","${ckbcomp}/bin/ckbcomp",' \
+          -i src/modules/keyboard/keyboardwidget/keyboardpreview.cpp
+  '';
+
+  preInstall = ''
+    substituteInPlace cmake_install.cmake --replace "${polkit_qt5}" "$out"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Distribution-independent installer framework";
+    license = licenses.gpl3;
+    maintainers = with stdenv.lib.maintainers; [ tstrobel ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/misc/clex/default.nix b/pkgs/tools/misc/clex/default.nix
index 9c32d3c546674..47eacd9bdb095 100644
--- a/pkgs/tools/misc/clex/default.nix
+++ b/pkgs/tools/misc/clex/default.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
       add-on to your favorite shell.
     '';
     homepage = http://www.clex.sk;
-    license = with licenses; gpl2Plus;
+    license = licenses.gpl2Plus;
     platforms = with platforms; linux;
     maintainers = with maintainers; [ nckx ];
   };
diff --git a/pkgs/tools/misc/cloc/default.nix b/pkgs/tools/misc/cloc/default.nix
index 8d7ba0c70c82a..bb278dbe1b199 100644
--- a/pkgs/tools/misc/cloc/default.nix
+++ b/pkgs/tools/misc/cloc/default.nix
@@ -4,11 +4,11 @@ stdenv.mkDerivation rec {
 
   name = "cloc-${version}";
 
-  version = "1.62";
+  version = "1.64";
 
   src = fetchurl {
     url = "mirror://sourceforge/cloc/cloc-${version}.tar.gz";
-    sha256 = "1cxc663dccd0sc2m0aj5lxdbnbzrys6rh9n8q122h74bfvsiw4f4";
+    sha256 = "1w3mz69h2i7pscvi9q7yp7wimds8g38c5ph78cj5pvjl5wa035rh";
   };
 
   buildInputs = [ perl AlgorithmDiff RegexpCommon ];
diff --git a/pkgs/tools/misc/colord-kde/default.nix b/pkgs/tools/misc/colord-kde/default.nix
index 55260b269c6d9..606595f46057e 100644
--- a/pkgs/tools/misc/colord-kde/default.nix
+++ b/pkgs/tools/misc/colord-kde/default.nix
@@ -1,4 +1,6 @@
-{ stdenv, fetchurl, cmake, colord, libX11, libXrandr, lcms2, pkgconfig, kdelibs}:
+{ stdenv, fetchurl, automoc4, cmake, perl, pkgconfig
+, colord, libX11, libXrandr, lcms2, kdelibs
+}:
 
 stdenv.mkDerivation {
   name = "colord-kde-0.3.0";
@@ -8,7 +10,9 @@ stdenv.mkDerivation {
     sha256 = "ab3cdb7c8c98aa2ee8de32a92f87770e1fbd58eade6471f3f24d932b50b4cf09";
   };
 
-  buildInputs = [ cmake colord libX11 libXrandr lcms2 pkgconfig kdelibs ];
+  nativeBuildInputs = [ automoc4 cmake perl pkgconfig ];
+
+  buildInputs = [ colord libX11 libXrandr lcms2 kdelibs ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/tools/misc/colord/default.nix b/pkgs/tools/misc/colord/default.nix
index 9f91a1acc608b..40c9ddf8c946c 100644
--- a/pkgs/tools/misc/colord/default.nix
+++ b/pkgs/tools/misc/colord/default.nix
@@ -1,13 +1,14 @@
-{ stdenv, fetchurl, fetchgit, bashCompletion
+{ stdenv, fetchzip, fetchgit, bashCompletion
 , glib, polkit, pkgconfig, intltool, gusb, libusb1, lcms2, sqlite, systemd, dbus
-, automake, autoconf, libtool, gtk_doc, which, gobjectIntrospection }:
+, automake, autoconf, libtool, gtk_doc, which, gobjectIntrospection, argyllcms
+, libgudev }:
 
 stdenv.mkDerivation rec {
-  name = "colord-1.2.3";
+  name = "colord-1.2.12";
 
-  src = fetchurl {
+  src = fetchzip {
     url = "http://www.freedesktop.org/software/colord/releases/${name}.tar.xz";
-    sha256 = "1z3l6hb3b08fixfra6m887a2j3lvhib6vp798ik16jfh375gr490";
+    sha256 = "0rvvbpxd5x479v4p6pck317mlf3j29s154i1n8hlx8n4znhwrb0k";
   };
 
   enableParallelBuilding = true;
@@ -19,7 +20,7 @@ stdenv.mkDerivation rec {
   ];
 
   buildInputs = [ glib polkit pkgconfig intltool gusb libusb1 lcms2 sqlite systemd dbus gobjectIntrospection
-                  bashCompletion ];
+                  bashCompletion argyllcms automake autoconf libgudev ];
 
   postInstall = ''
     rm -fr $out/var/lib/colord
@@ -28,7 +29,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "system service that makes it easy to manage, install and generate color profiles to accurately color manage input and output devices";
+    description = "System service to manage, install and generate color profiles to accurately color manage input and output devices";
     homepage = http://www.freedesktop.org/software/colord/intro.html;
     license = stdenv.lib.licenses.lgpl2Plus;
     maintainers = [stdenv.lib.maintainers.marcweber];
diff --git a/pkgs/tools/misc/coreutils/coreutils-8.23-4.cygwin.patch b/pkgs/tools/misc/coreutils/coreutils-8.23-4.cygwin.patch
new file mode 100644
index 0000000000000..2f69347ffabdb
--- /dev/null
+++ b/pkgs/tools/misc/coreutils/coreutils-8.23-4.cygwin.patch
@@ -0,0 +1,1259 @@
+--- coreutils-8.23/ChangeLog	2014-07-18 15:22:24.000000000 -0700
++++ coreutils-8.23/ChangeLog	2014-10-13 08:56:50.775188900 -0700
+@@ -1,3 +1,220 @@
++2014-10-13  U-WIN-RSJ0SJPBR3E\Administrator  <Administrator@WIN-KQ1OCEBI2E8>
++
++	Cygwin release 8.23-4
++	* copy.c (copy_internal): Fix typo that broke recursive copy
++	when dealing with directories.
++
++2014-09-24  Eric Blake  <eblake@redhat.com>
++
++	Cygwin release 8.23-3
++	* lib/cygwin.c (cygwin_spelling): Skip .exe magic if .exe is
++	already present.  Also honor .exe magic on symlinks.
++	* lib/same.c (same_name): Treat files as same if only difference
++	is .exe magic.
++	* copy.c (copy): Move symlink special casing here.
++	* install.c (strip): Update caller.
++	* ls.c (gobble_file): Likewise.
++	* stat.c (do_statfs, do_stat): Likewise.
++
++2014-08-12  Eric Blake  <eblake@redhat.com>
++
++	Cygwin release 8.23-2.
++	Drop hostname.
++
++2014-08-01  Eric Blake  <eblake@redhat.com>
++
++	Cygwin release 8.23-1.
++	* configure.ac: Disable stdbuf.
++	* lib/local.mk: Upstream switched to flat make, impacting how
++	we build local cygwin.c code.
++	* lib/canonicalize.c: Accepted upstream.
++	* lib/file-has-acl.c: Likewise.
++	* realpath.c: Likewise.
++	* su.c: Upstream dropped su.
++	* Makefile.am: Drop su changes.
++	* chroot.c: Adapt to new upstream code.
++
++2012-02-04  Eric Blake  <eblake@redhat.com>
++
++	Cygwin release 8.15-1.
++	* lib/fts.c: Early gnulib fix is now upstream.
++	* lib/canonicalize.c: Backport gnulib fix for /// -> /.
++	* realpath.c: Backport gnulib fix for --relative-to.
++
++2011-10-27  Eric Blake  <eblake@redhat.com>
++
++	Cygwin release 8.14-1.
++	* lib/ftc.c: Backport gnulib fix to make rm close before rmdir.
++	* lib/cygwin.c (cygwin_spelling): Fix logic when 'f' and 'f.exe'
++	exist but are different files.
++	* stat.c: Fix --append-exe.
++
++2011-02-04  Eric Blake  <eblake@redhat.com>
++
++	Cygwin release 8.10-1.
++
++2010-12-24  Eric Blake  <eblake@redhat.com>
++
++	Cygwin release 8.8-1.
++	* lib/mountlist.c (ME_REMOTE): Restore previous cygwin hack to
++	determine remote drives, lost since 6.11-1.
++
++2010-04-29  Eric Blake  <eblake@redhat.com>
++
++	Cygwin release 8.5-1.
++
++2010-03-11  Eric Blake  <eblake@redhat.com>
++
++	Cygwin release 8.4-1.
++	* lib/xfreopen.c (xfreopen): Consolidate workaround for broken
++	freopen usage into one place.
++	* copy.c (copy): Reinstate .exe magic handling when copying
++	files with implicit .exe.
++
++2008-12-13  Eric Blake  <ebb9@byu.net>
++
++	Cygwin release 7.0-1.
++
++2008-06-02  Eric Blake  <ebb9@byu.net>
++
++	Cygwin release 6.12-1.
++
++2008-05-12  Eric Blake  <ebb9@byu.net>
++
++	Cygwin release 6.11-1, requires cygwin 1.7.0.
++	* lib/cygwin.h (CYGWIN_APPEND_EXE): Accomodate new PATH_MAX.
++	* lib/cygwin.c (cygwin_spelling): Accomodate new trailing
++	`.' semantics.
++	* lib/same.c (same_name): Accomodate new PATH_MAX.
++
++2008-01-24  Eric Blake  <ebb9@byu.net>
++
++	Cygwin release 6.10-1.
++	* lib/hash-triple.c (triple_hash): Hash case-insensitively.
++	* lib/hash-pjw.h (hash_pjw_case): New interface.
++	* lib/hash-pjw.c (hash_pjw_case): New function.
++	* chcon.c (main): Support my root_dev_ino tweaks.
++
++2007-08-21  Eric Blake  <ebb9@byu.net>
++
++	Cygwin release 6.9-5.
++	* same.c (same_name): Detect same file differing only by case.
++	* copy.c (same_file_ok): Add parameter to detect when case
++	change is being attempted.
++	(triple_hash): Hash names case-insensitively.
++	(copy_internal): Accommodate case-change attempts.
++	* mv.c (do_move): Allow 'mv foo/ Foo/' as shorthand for
++	'mv -T foo/ Foo/'.
++
++2007-07-23  Eric Blake  <ebb9@byu.net>
++
++	Cygwin release 6.9-4.
++	* dd.c (main): Fix typo in earlier cygwin patch.
++
++2007-05-29  Eric Blake  <ebb9@byu.net>
++
++	Cygwin release 6.9-3.
++	* cksum.c (main): Don't lose append mode.
++	* md5sum.c (main): Likewise.
++	* cat.c (main): Likewise.
++	* head.c (main): Likewise.
++	* tac.c (main): Likewise.
++	* tail.c (main): Likewise.
++	* tee.c (main): Likewise.
++	* tr.c (main): Likewise.
++
++2006-11-24  Eric Blake  <ebb9@byu.net>
++
++	Cygwin release 6.6-2.
++	* lib/cygwin.c (cygwin_spelling): Work even with old-style
++	symlinks, which lacked .lnk suffix.
++
++2006-04-14  Eric Blake  <ebb9@byu.net>
++
++	Cygwin release 5.94-5. Experimental only, depends on cygwin
++	snapshot 20060329 or later.
++	* dd.c (main): Default to binary mode.
++	* system.h (rpl_freopen): Remove this hack, now that cygwin
++	freopen(NULL) works.
++	* lib/quotearg.c (quote_eight_bit): New variable, so I can...
++	(quotearg_buffer_restyled): treat 8-bit	characters as printable
++	when outputting to a terminal.
++	* lib/quote.c (quote_n): Use it.
++
++2006-02-28  Eric Blake  <ebb9@byu.net>
++
++	Cygwin release 5.94-4. Experimental only, depends on cygwin
++	snapshot 20060227 or later.
++	* lib/root-dev-ino.h (struct root_dev_ino): New struct.
++	(ROOT_DEV_INO_CHECK, ROOT_DEV_INO_WARN): Also track //.
++	* lib/root-dev-ino.c (get_root_dev_ino): Also track //.
++	* chmod.c (root_dev_ino): Use new type.
++	(main): Ditto.
++	* chown-core.h (struct Chown_option): Ditto.
++	* chown.c (main): Ditto.
++	* remove.h (struct rm_options): Ditto.
++	* rm.c (main): Ditto.
++	* pwd.c (robust_getcwd): Ditto.  Also fix bug when in / or //.
++
++2006-01-24  Eric Blake  <ebb9@byu.net>
++
++	Cygwin release 5.93-3, depends on cygwin-1.5.19-1 or later.
++	* cksum.c (main): Always output binary files.
++	* md5sum.c (main): Likewise.
++	* su.c (correct_password): On NT machines, attempt
++	passwordless login first, and give better error message if
++	password check fails.  I still don't know how to distinguish
++	between insufficient privileges vs. incorrect password.
++	* dircolors.c (main): Silence warning from tcsh 6.14.00.
++
++2005-10-15  Eric Blake  <ebb9@byu.net>
++
++	Cygwin release 5.90-3, depends on snapshot 20051003 or later (will
++	become cygwin 1.5.19).
++	* doc/coreutils.texi (ls invocation, stat invocation): Document
++	--append-exe.
++	* ls.c (usage): Ditto.
++	(gobble_file): Append .exe as needed when requested.
++	* stat.c (usage): Document --append-exe.
++	(do_stat, do_statfs): Append .exe as needed when requested.
++
++2005-10-08  Eric Blake  <ebb9@byu.net>
++
++	Cygwin release 5.90-2, depends on snapshot 20051003 or later (will
++	become cygwin 1.5.19).
++	* lib/mkdir-p.c (make_dir_parents): Fix bug in last patch.
++	* lib/cygwin.h (CYGWIN_APPEND_EXE): Factor into common macro.
++	* copy.c (copy): Use new macro.
++	* install.c (strip): Ditto.
++	* ln.c (do_link): Ditto.
++
++2005-07-13  Eric Blake  <ebb9@byu.net>
++
++	* doc/coreutils.texi (ln invocation): Document --disable-exe-magic.
++	* ln.c (usage): Likewise.
++	(do_link): Skip .exe magic when requested.
++
++2005-07-12  Eric Blake  <ebb9@byu.net>
++
++	* lib/cygwin.c (cygwin_spelling): Don't append .exe to directories.
++	Make sure .exe exists before returning 1, because otherwise
++	virtual directories such as /cygdrive have problems.
++
++2005-07-07  Eric Blake  <ebb9@byu.net>
++
++	* lib/cygwin.h: New file, defining cygwin_spelling.
++	* lib/cygwin.c: New file.
++	* lib/Makefile.am: Compile it.
++	* copy.c (copy_internal, copy): Use new cygwin_spelling() to
++	undo .exe magic.
++	* link.c (do_link): Likewise.
++	* install.c (strip): Likewise.
++
++2005-01-03  Corinna Vinschen  <corinna@vinschen.de>
++
++	* install.c (strip): Check for .exe here since strip doesn't.
++
++
+ 2014-07-18  Pádraig Brady  <P@draigBrady.com>
+ 
+ 	version 8.23
+--- coreutils-8.23/configure.ac	2014-07-17 18:40:57.000000000 -0700
++++ coreutils-8.23/configure.ac	2014-10-13 08:30:37.165262300 -0700
+@@ -473,7 +473,7 @@ AC_COMPILE_IFELSE(
+   [stdbuf_supported=yes],
+   [stdbuf_supported=no])
+ AC_MSG_RESULT([$stdbuf_supported])
+-if test "$stdbuf_supported" = "yes"; then
++if test "$stdbuf_supported" = "yes" && test -z "$EXEEXT"; then
+   gl_ADD_PROG([optional_bin_progs], [stdbuf])
+ fi
+ 
+--- coreutils-8.23/doc/coreutils.texi	2014-07-13 15:09:52.000000000 -0700
++++ coreutils-8.23/doc/coreutils.texi	2014-10-13 08:30:37.180881200 -0700
+@@ -7838,6 +7838,14 @@ These options change how file names them
+ 
+ @table @samp
+ 
++@item --append-exe
++@opindex --append-exe
++@cindex appending exe on cygwin
++Cygwin only: Cygwin normally performs @samp{.exe} magic, where a
++command line argument typed without an .exe extension transparently
++refers to the existing file with an extension.  Specifying this option
++will make the .exe show if cygwin magic was involved.
++
+ @item -b
+ @itemx --escape
+ @itemx --quoting-style=escape
+@@ -11799,6 +11807,14 @@ With this option, @command{stat} acts on
+ by each symbolic link argument.
+ Without it, @command{stat} acts on any symbolic link argument directly.
+ 
++@item --append-exe
++@opindex --append-exe
++@cindex appending exe on cygwin
++Cygwin only: Cygwin normally performs .exe magic, where a command line
++argument typed without an .exe extension transparently refers to the
++existing file with an extension.  Specifying this option will make
++the .exe show if cygwin magic was involved.
++
+ @item -f
+ @itemx --file-system
+ @opindex -f
+--- coreutils-8.23/lib/cygwin.c	1969-12-31 16:00:00.000000000 -0800
++++ coreutils-8.23/lib/cygwin.c	2014-10-13 08:30:37.180881200 -0700
+@@ -0,0 +1,67 @@
++/* cygwin.c - helper functions unique to Cygwin
++
++   Copyright (C) 2005, 2006, 2008, 2011 Free Software Foundation, Inc.
++
++   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
++   the Free Software Foundation; either version 3, or (at your option)
++   any later version.
++
++   This program is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++   GNU General Public License for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with this program; if not, write to the Free Software Foundation,
++   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++
++   Written by Eric Blake.  */
++
++#include <config.h>
++
++#include "cygwin.h"
++
++#include <errno.h>
++#include <limits.h>
++#include <string.h>
++#include <unistd.h>
++
++/* Return -1 if PATH is not found, 0 if PATH will not have .exe
++   appended (it is possible that a PATH that does not exist still
++   returns 0 instead of -1, or fails for a PATH that exists but cannot
++   be stat'ed), and positive if PATH has ".exe" automatically appended
++   by cygwin (1 if PATH is a symlink, 2 otherwise).  Won't change errno.  */
++
++int
++cygwin_spelling (char const *path)
++{
++  int saved_errno = errno;
++  int result = 0; /* Start with assumption that PATH is okay.  */
++  int len;
++  struct stat st1;
++  struct stat st2;
++  char *path_exe;
++
++  if (! path || ! *path || len > PATH_MAX)
++    /* PATH will cause EINVAL or ENAMETOOLONG, treat it as non-existing.  */
++    return -1;
++  len = strlen (path);
++  if (path[len - 1] == '/'
++      || (len > 4 && !strcasecmp (&path[len - 4], ".exe")))
++    /* Don't change spelling if there is a trailing `/' or '.exe'.  */
++    return 0;
++  if (lstat (path, &st1) < 0 || S_ISDIR(st1.st_mode))
++    {
++      errno = saved_errno;
++      return -1;
++    }
++  path_exe = malloca (len + 5); /* adding ".exe" and NUL.  */
++  strcat (stpcpy (path_exe, path), ".exe");
++  if (lstat (path_exe, &st2) == 0 && st1.st_ino == st2.st_ino)
++    result = 1 + !S_ISLNK(st1.st_mode);
++  freea (path_exe);
++
++  errno = saved_errno;
++  return result;
++}
+--- coreutils-8.23/lib/cygwin.h	1969-12-31 16:00:00.000000000 -0800
++++ coreutils-8.23/lib/cygwin.h	2014-10-13 08:30:37.180881200 -0700
+@@ -0,0 +1,38 @@
++/* cygwin.h - helper functions unique to Cygwin
++
++   Copyright (C) 2005, 2006, 2008, 2010, 2011 Free Software Foundation, Inc.
++
++   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
++   the Free Software Foundation; either version 3, or (at your option)
++   any later version.
++
++   This program is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++   GNU General Public License for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with this program; if not, write to the Free Software Foundation,
++   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++
++   Written by Eric Blake.  */
++
++#ifndef CYGWIN_H
++# define CYGWIN_H 1
++
++#include "malloca.h"
++
++int cygwin_spelling (char const *);
++
++/* Append ".exe" to char *__NAME_ORIG, where __NAME is either NULL or
++   between __NAME_ORIG and the nul terminator.  Both params will be
++   evaluated more than once and assigned the new value.  The user must
++   later call freea(__NAME).  */
++#define CYGWIN_APPEND_EXE(__name, __name_orig)                          \
++  __name_orig = __name =                                                \
++    strcat (strcpy (malloca (strchr (__name ? __name : __name_orig, '\0') \
++                             - (__name_orig) + 5),                      \
++                    __name_orig), ".exe")
++
++#endif /* CYGWIN_H */
+--- coreutils-8.23/lib/hash-pjw.c	2014-05-29 05:05:50.000000000 -0700
++++ coreutils-8.23/lib/hash-pjw.c	2014-10-13 08:30:37.180881200 -0700
+@@ -19,6 +19,7 @@
+ 
+ #include "hash-pjw.h"
+ 
++#include <ctype.h>
+ #include <limits.h>
+ 
+ #define SIZE_BITS (sizeof (size_t) * CHAR_BIT)
+@@ -38,3 +39,16 @@ hash_pjw (const void *x, size_t tablesiz
+ 
+   return h % tablesize;
+ }
++
++/* Likewise, but case-insensitive.  */
++size_t
++hash_pjw_case (const void *x, size_t tablesize)
++{
++  const unsigned char *s;
++  size_t h = 0;
++
++  for (s = x; *s; s++)
++    h = tolower (*s) + ((h << 9) | (h >> (SIZE_BITS - 9)));
++
++  return h % tablesize;
++}
+--- coreutils-8.23/lib/hash-pjw.h	2014-05-29 05:05:50.000000000 -0700
++++ coreutils-8.23/lib/hash-pjw.h	2014-10-13 08:30:37.180881200 -0700
+@@ -21,3 +21,4 @@
+    The result is platform dependent: it depends on the size of the 'size_t'
+    type and on the signedness of the 'char' type.  */
+ extern size_t hash_pjw (void const *x, size_t tablesize) _GL_ATTRIBUTE_PURE;
++extern size_t hash_pjw_case (void const *x, size_t tablesize) _GL_ATTRIBUTE_PURE;
+--- coreutils-8.23/lib/hash-triple.c	2014-05-29 05:05:50.000000000 -0700
++++ coreutils-8.23/lib/hash-triple.c	2014-10-13 08:30:37.180881200 -0700
+@@ -34,7 +34,13 @@ size_t
+ triple_hash (void const *x, size_t table_size)
+ {
+   struct F_triple const *p = x;
++#if !__CYGWIN__
+   size_t tmp = hash_pjw (p->name, table_size);
++#else // cygwin
++  /* Hash case-insensitively, to force collisions on names that differ by
++     case; copy.c can then account for case-insensitive renames. */
++  size_t tmp = hash_pjw_case (p->name, table_size);
++#endif
+ 
+   /* Ignoring the device number here should be fine.  */
+   return (tmp ^ p->st_ino) % table_size;
+--- coreutils-8.23/lib/local.mk	2013-12-04 06:48:30.000000000 -0800
++++ coreutils-8.23/lib/local.mk	2014-10-13 08:30:37.180881200 -0700
+@@ -3,3 +3,6 @@ include lib/gnulib.mk
+ # Allow "make distdir" to succeed before "make all" has run.
+ dist-hook: $(noinst_LIBRARIES)
+ .PHONY: dist-hook
++
++# Hook in cygwin helper
++lib_libcoreutils_a_SOURCES += lib/cygwin.c lib/cygwin.h
+--- coreutils-8.23/lib/root-dev-ino.c	2014-07-11 04:00:07.000000000 -0700
++++ coreutils-8.23/lib/root-dev-ino.c	2014-10-13 08:30:37.180881200 -0700
+@@ -25,13 +25,17 @@
+ /* Call lstat to get the device and inode numbers for '/'.
+    Upon failure, return NULL.  Otherwise, set the members of
+    *ROOT_D_I accordingly and return ROOT_D_I.  */
+-struct dev_ino *
+-get_root_dev_ino (struct dev_ino *root_d_i)
++struct root_dev_ino *
++get_root_dev_ino (struct root_dev_ino *root_d_i)
+ {
+   struct stat statbuf;
+   if (lstat ("/", &statbuf))
+     return NULL;
+-  root_d_i->st_ino = statbuf.st_ino;
+-  root_d_i->st_dev = statbuf.st_dev;
++  root_d_i->single_slash.st_ino = statbuf.st_ino;
++  root_d_i->single_slash.st_dev = statbuf.st_dev;
++  if (lstat ("//", &statbuf))
++    return NULL;
++  root_d_i->double_slash.st_ino = statbuf.st_ino;
++  root_d_i->double_slash.st_dev = statbuf.st_dev;
+   return root_d_i;
+ }
+--- coreutils-8.23/lib/root-dev-ino.h	2014-07-11 04:00:07.000000000 -0700
++++ coreutils-8.23/lib/root-dev-ino.h	2014-10-13 08:30:37.180881200 -0700
+@@ -21,19 +21,26 @@
+ # include "dev-ino.h"
+ # include "same-inode.h"
+ 
+-struct dev_ino *
+-get_root_dev_ino (struct dev_ino *root_d_i);
++struct root_dev_ino
++{
++  struct dev_ino single_slash;
++  struct dev_ino double_slash;
++};
++
++struct root_dev_ino *
++get_root_dev_ino (struct root_dev_ino *root_d_i);
+ 
+ /* These macros are common to the programs that support the
+    --preserve-root and --no-preserve-root options.  */
+ 
+ # define ROOT_DEV_INO_CHECK(Root_dev_ino, Dir_statbuf) \
+-    (Root_dev_ino && SAME_INODE (*Dir_statbuf, *Root_dev_ino))
++  (Root_dev_ino && (SAME_INODE (*Dir_statbuf, (Root_dev_ino)->single_slash) \
++                    || SAME_INODE (*Dir_statbuf, (Root_dev_ino)->double_slash)))
+ 
+ # define ROOT_DEV_INO_WARN(Dirname)					\
+   do									\
+     {									\
+-      if (STREQ (Dirname, "/"))						\
++      if (STREQ (Dirname, "/") || STREQ (Dirname, "//"))                \
+         error (0, 0, _("it is dangerous to operate recursively on %s"),	\
+                quote (Dirname));					\
+       else								\
+--- coreutils-8.23/lib/same.c	2014-05-29 05:05:50.000000000 -0700
++++ coreutils-8.23/lib/same.c	2014-10-13 08:30:37.180881200 -0700
+@@ -40,6 +40,13 @@
+ #include "error.h"
+ #include "same-inode.h"
+ 
++#if __CYGWIN__
++# include <sys/cygwin.h>
++# include "cygwin.h"
++# include "malloca.h"
++# include "memcasecmp.h"
++#endif
++
+ #ifndef MIN
+ # define MIN(a, b) ((a) < (b) ? (a) : (b))
+ #endif
+@@ -59,6 +66,45 @@ same_name (const char *source, const cha
+     (source_baselen == dest_baselen
+      && memcmp (source_basename, dest_basename, dest_baselen) == 0);
+   bool compare_dirs = identical_basenames;
++#if __CYGWIN__
++  /* If two names differ case-insensitively by only an '.exe' suffix,
++     do some sleuthing to see if .exe magic matters on the shorter
++     name.  Swapping the longer name to dest avoids duplication.  */
++  if (source_baselen == dest_baselen + 4)
++    {
++      char const *tmp_basename = source_basename;
++      size_t tmp_baselen = source_baselen;
++      source_basename = dest_basename;
++      source_baselen = dest_baselen;
++      dest_basename = tmp_basename;
++      dest_baselen = tmp_baselen;
++    }
++  if (source_baselen + 4 == dest_baselen
++      && !memcasecmp (dest_basename - 4, ".exe", 4)
++      && !memcasecmp (source_basename, dest_basename, source_baselen)
++      && 0 < cygwin_spelling(source))
++    dest_baselen -= 4;
++  /* Some, but not all, files are case-insensitive (depending on mount
++     options, CYGWIN=case settings, and virtual file systems).  Do
++     some sleuthing to decide whether case-insensitivity matters.  */
++  if (! compare_dirs && source_baselen == dest_baselen)
++    {
++      ssize_t wsrclen = cygwin_conv_path (CCP_POSIX_TO_WIN_W,
++                                          source, NULL, 0);
++      ssize_t wdstlen = cygwin_conv_path (CCP_POSIX_TO_WIN_W,
++                                          dest, NULL, 0);
++      char *wsrc = malloca (wsrclen);
++      char *wdst = malloca (wdstlen);
++      if (cygwin_conv_path (CCP_POSIX_TO_WIN_W, source, wsrc, wsrclen))
++        error (EXIT_FAILURE, errno, "unable to convert path name %s", source);
++      if (cygwin_conv_path (CCP_POSIX_TO_WIN_W, dest, wdst, wdstlen))
++        error (EXIT_FAILURE, errno, "unable to convert path name %s", dest);
++      if (wsrclen == wdstlen && memcasecmp (wsrc, wdst, wsrclen) == 0)
++        compare_dirs = true;
++      freea (wsrc);
++      freea (wdst);
++    }
++#endif /* __CYGWIN__ */
+   bool same = false;
+ 
+ #if ! _POSIX_NO_TRUNC && HAVE_PATHCONF && defined _PC_NAME_MAX
+--- coreutils-8.23/lib/xfreopen.c	2014-05-29 05:05:50.000000000 -0700
++++ coreutils-8.23/lib/xfreopen.c	2014-10-13 08:30:37.180881200 -0700
+@@ -18,6 +18,7 @@
+ #include "xfreopen.h"
+ 
+ #include <errno.h>
++#include <fcntl.h>
+ #include "error.h"
+ #include "exitfail.h"
+ #include "quote.h"
+@@ -26,9 +27,17 @@
+ #include "gettext.h"
+ #define _(msgid) gettext (msgid)
+ 
++#define STREQ(s1, s2) (strcmp (s1, s2) == 0)
++
+ void
+ xfreopen (char const *filename, char const *mode, FILE *fp)
+ {
++  if (!filename && STREQ (mode, "wb"))
++    {
++      int flag = fcntl (fileno (fp), F_GETFL);
++      if (0 <= flag && (flag & O_APPEND))
++        mode = "ab";
++    }
+   if (!freopen (filename, mode, fp))
+     {
+       char const *f = (filename ? filename
+--- coreutils-8.23/chcon.c	2014-07-13 15:09:52.000000000 -0700
++++ coreutils-8.23/src/chcon.c	2014-10-13 08:30:37.180881200 -0700
+@@ -48,7 +48,7 @@ static bool verbose;
+ 
+ /* Pointer to the device and inode numbers of '/', when --recursive.
+    Otherwise NULL.  */
+-static struct dev_ino *root_dev_ino;
++static struct root_dev_ino *root_dev_ino;
+ 
+ /* The name of the context file is being given. */
+ static char const *specified_context;
+@@ -569,7 +569,7 @@ main (int argc, char **argv)
+ 
+   if (recurse && preserve_root)
+     {
+-      static struct dev_ino dev_ino_buf;
++      static struct root_dev_ino dev_ino_buf;
+       root_dev_ino = get_root_dev_ino (&dev_ino_buf);
+       if (root_dev_ino == NULL)
+         error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
+--- coreutils-8.23/chgrp.c	2014-07-11 04:00:07.000000000 -0700
++++ coreutils-8.23/src/chgrp.c	2014-10-13 08:30:37.180881200 -0700
+@@ -299,7 +299,7 @@ main (int argc, char **argv)
+ 
+   if (chopt.recurse && preserve_root)
+     {
+-      static struct dev_ino dev_ino_buf;
++      static struct root_dev_ino dev_ino_buf;
+       chopt.root_dev_ino = get_root_dev_ino (&dev_ino_buf);
+       if (chopt.root_dev_ino == NULL)
+         error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
+--- coreutils-8.23/chmod.c	2014-07-11 04:00:07.000000000 -0700
++++ coreutils-8.23/src/chmod.c	2014-10-13 08:30:37.180881200 -0700
+@@ -81,7 +81,7 @@ static enum Verbosity verbosity = V_off;
+ 
+ /* Pointer to the device and inode numbers of '/', when --recursive.
+    Otherwise NULL.  */
+-static struct dev_ino *root_dev_ino;
++static struct root_dev_ino *root_dev_ino;
+ 
+ /* For long options that have no equivalent short option, use a
+    non-character as a pseudo short option, starting with CHAR_MAX + 1.  */
+@@ -552,7 +552,7 @@ main (int argc, char **argv)
+ 
+   if (recurse && preserve_root)
+     {
+-      static struct dev_ino dev_ino_buf;
++      static struct root_dev_ino dev_ino_buf;
+       root_dev_ino = get_root_dev_ino (&dev_ino_buf);
+       if (root_dev_ino == NULL)
+         error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
+--- coreutils-8.23/chown-core.h	2014-07-11 04:00:07.000000000 -0700
++++ coreutils-8.23/src/chown-core.h	2014-10-13 08:30:37.196451900 -0700
+@@ -50,7 +50,7 @@ struct Chown_option
+ 
+   /* Pointer to the device and inode numbers of '/', when --recursive.
+      Need not be freed.  Otherwise NULL.  */
+-  struct dev_ino *root_dev_ino;
++  struct root_dev_ino *root_dev_ino;
+ 
+   /* This corresponds to the --dereference (opposite of -h) option.  */
+   bool affect_symlink_referent;
+--- coreutils-8.23/chown.c	2014-07-11 04:00:07.000000000 -0700
++++ coreutils-8.23/src/chown.c	2014-10-13 08:30:37.196451900 -0700
+@@ -312,7 +312,7 @@ main (int argc, char **argv)
+ 
+   if (chopt.recurse && preserve_root)
+     {
+-      static struct dev_ino dev_ino_buf;
++      static struct root_dev_ino dev_ino_buf;
+       chopt.root_dev_ino = get_root_dev_ino (&dev_ino_buf);
+       if (chopt.root_dev_ino == NULL)
+         error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
+--- coreutils-8.23/chroot.c	2014-07-13 16:59:20.000000000 -0700
++++ coreutils-8.23/src/chroot.c	2014-10-13 08:30:37.196451900 -0700
+@@ -163,7 +163,7 @@ parse_additional_groups (char const *gro
+ static bool
+ is_root (const char* dir)
+ {
+-  struct dev_ino root_ino;
++  struct root_dev_ino root_ino;
+   if (! get_root_dev_ino (&root_ino))
+     error (EXIT_CANCELED, errno, _("failed to get attributes of %s"),
+            quote ("/"));
+@@ -173,7 +173,7 @@ is_root (const char* dir)
+     error (EXIT_CANCELED, errno, _("failed to get attributes of %s"),
+            quote (dir));
+ 
+-  return SAME_INODE (root_ino, arg_st);
++  return ROOT_DEV_INO_CHECK (&root_ino, &arg_st);
+ }
+ 
+ void
+--- coreutils-8.23/cksum.c	2014-07-11 04:00:07.000000000 -0700
++++ coreutils-8.23/src/cksum.c	2014-10-13 08:30:37.196451900 -0700
+@@ -301,6 +301,9 @@ main (int argc, char **argv)
+ 
+   have_read_stdin = false;
+ 
++  if (O_BINARY)
++    xfreopen (NULL, "wb", stdout);
++
+   if (optind == argc)
+     ok = cksum ("-", false);
+   else
+--- coreutils-8.23/copy.c	2014-07-13 15:09:52.000000000 -0700
++++ coreutils-8.23/src/copy.c	2014-10-13 08:49:30.450181800 -0700
+@@ -70,6 +70,10 @@
+ # include "verror.h"
+ #endif
+ 
++#if __CYGWIN__
++# include "cygwin.h"
++#endif
++
+ #ifndef HAVE_FCHOWN
+ # define HAVE_FCHOWN false
+ # define fchown(fd, uid, gid) (-1)
+@@ -1313,7 +1317,11 @@ close_src_desc:
+ static bool
+ same_file_ok (char const *src_name, struct stat const *src_sb,
+               char const *dst_name, struct stat const *dst_sb,
+-              const struct cp_options *x, bool *return_now, bool *unlink_src)
++              const struct cp_options *x, bool *return_now, bool *unlink_src
++#if __CYGWIN__
++	      , bool *case_change
++#endif
++	      )
+ {
+   const struct stat *src_sb_link;
+   const struct stat *dst_sb_link;
+@@ -1461,6 +1469,18 @@ same_file_ok (char const *src_name, stru
+       if (S_ISLNK (dst_sb_link->st_mode))
+         return true;
+ 
++#if __CYGWIN__
++      /* If the files have the same name, but differ in case, then let
++        rename() change the case.  */
++      if (same_link && x->move_mode && same_name (src_name, dst_name)
++         && memcmp (last_component (src_name), last_component (dst_name),
++                    base_len (src_name)) != 0)
++       {
++         *case_change = true;
++         return true;
++       }
++#endif /* __CYGWIN__ */
++
+       if (same_link
+           && 1 < dst_sb_link->st_nlink
+           && ! same_name (src_name, dst_name))
+@@ -1813,10 +1833,20 @@ copy_internal (char const *src_name, cha
+          && ! (x->move_mode || x->symbolic_link || x->hard_link
+                || x->backup_type != no_backups
+                || x->unlink_dest_before_opening));
+-      if ((use_stat
+-           ? stat (dst_name, &dst_sb)
+-           : lstat (dst_name, &dst_sb))
+-          != 0)
++      int res = (use_stat
++                 ? stat (dst_name, &dst_sb)
++                 : lstat (dst_name, &dst_sb));
++#if __CYGWIN__
++      /* stat("a") succeeds even if it was really "a.exe".  */
++      if (! res && 0 < cygwin_spelling (dst_name))
++        {
++          /* Only DST_NAME.exe exists, but we want the non-existant
++             DST_NAME.  */
++          res = -1;
++          errno = ENOENT;
++        }
++#endif /* __CYGWIN__ */
++      if (res != 0)
+         {
+           if (errno != ENOENT)
+             {
+@@ -1833,10 +1863,17 @@ copy_internal (char const *src_name, cha
+              that it is stat'able or lstat'able.  */
+           bool return_now;
+           bool unlink_src;
++#if __CYGWIN__
++          bool case_change = false;
++#endif /* __CYGWIN__ */
+ 
+           have_dst_lstat = !use_stat;
+           if (! same_file_ok (src_name, &src_sb, dst_name, &dst_sb,
+-                              x, &return_now, &unlink_src))
++                              x, &return_now, &unlink_src
++#if __CYGWIN__
++                              , &case_change
++#endif
++))
+             {
+               error (0, 0, _("%s and %s are the same file"),
+                      quote_n (0, src_name), quote_n (1, dst_name));
+@@ -1895,6 +1932,9 @@ copy_internal (char const *src_name, cha
+              cp and mv treat -i and -f differently.  */
+           if (x->move_mode)
+             {
++#if __CYGWIN__
++              if (!case_change)
++#endif /* __CYGWIN__ */
+               if (abandon_move (x, dst_name, &dst_sb)
+                   || (unlink_src && unlink (src_name) == 0))
+                 {
+@@ -2058,7 +2098,11 @@ copy_internal (char const *src_name, cha
+                    /* Never unlink dst_name when in move mode.  */
+                    && ! x->move_mode
+                    && (x->unlink_dest_before_opening
+-                       || (x->preserve_links && 1 < dst_sb.st_nlink)
++                       || (x->preserve_links && 1 < dst_sb.st_nlink
++#if __CYGWIN__
++                           && !case_change
++#endif /* __CYGWIN__ */
++			   )
+                        || (x->dereference == DEREF_NEVER
+                            && ! S_ISREG (src_sb.st_mode))
+                        ))
+@@ -2816,6 +2860,21 @@ copy (char const *src_name, char const *
+ {
+   assert (valid_options (options));
+ 
++#if __CYGWIN__
++  /* .exe magic - if src exists with an implicit .exe suffix and is
++     not a symlink, but dst does not exist and was also specified
++     without a suffix, then append .exe to dst.  */
++  int cygwin = cygwin_spelling (src_name);
++  char *p;
++  if (cygwin == 2
++      && ((p = strchr (dst_name, '\0') - 4) <= dst_name
++          || strcasecmp (p, ".exe") != 0))
++    {
++      cygwin = 3;
++      CYGWIN_APPEND_EXE (p, dst_name);
++    }
++#endif /* __CYGWIN__ */
++
+   /* Record the file names: they're used in case of error, when copying
+      a directory into itself.  I don't like to make these tools do *any*
+      extra work in the common case when that work is solely to handle
+@@ -2827,10 +2886,15 @@ copy (char const *src_name, char const *
+   top_level_dst_name = dst_name;
+ 
+   bool first_dir_created_per_command_line_arg = false;
+-  return copy_internal (src_name, dst_name, nonexistent_dst, NULL, NULL,
++  bool result = copy_internal (src_name, dst_name, nonexistent_dst, NULL, NULL,
+                         options, true,
+                         &first_dir_created_per_command_line_arg,
+                         copy_into_self, rename_succeeded);
++#if __CYGWIN__
++  if (cygwin == 3)
++    freea ((char *) dst_name);
++#endif /* __CYGWIN__ */
++  return result;
+ }
+ 
+ /* Set *X to the default options for a value of type struct cp_options.  */
+--- coreutils-8.23/dd.c	2014-07-11 04:00:07.000000000 -0700
++++ coreutils-8.23/src/dd.c	2014-10-13 08:30:37.196451900 -0700
+@@ -37,6 +37,10 @@
+ #include "xstrtol.h"
+ #include "xtime.h"
+ 
++#if __CYGWIN__
++# include <io.h>
++#endif
++
+ /* The official name of this program (e.g., no 'g' prefix).  */
+ #define PROGRAM_NAME "dd"
+ 
+@@ -1862,6 +1866,13 @@ copy_with_unblock (char const *buf, size
+ static void
+ set_fd_flags (int fd, int add_flags, char const *name)
+ {
++#if __CYGWIN__
++  /* Cygwin does not allow fcntl to set the mode.  */
++  int mode_flags = add_flags & (O_BINARY | O_TEXT);
++  add_flags &= ~(O_BINARY | O_TEXT);
++  if (mode_flags && setmode (fd, mode_flags) == -1)
++    error (EXIT_FAILURE, errno, _("setting flags for %s"), quote (name));
++#endif /* __CYGWIN__ */
+   /* Ignore file creation flags that are no-ops on file descriptors.  */
+   add_flags &= ~ (O_NOCTTY | O_NOFOLLOW);
+ 
+@@ -2242,6 +2253,8 @@ main (int argc, char **argv)
+     }
+   else
+     {
++      if ((input_flags & (O_BINARY | O_TEXT)) == 0)
++	input_flags |= O_BINARY;
+       if (fd_reopen (STDIN_FILENO, input_file, O_RDONLY | input_flags, 0) < 0)
+         error (EXIT_FAILURE, errno, _("failed to open %s"), quote (input_file));
+     }
+@@ -2264,6 +2277,8 @@ main (int argc, char **argv)
+            | (conversions_mask & C_NOCREAT ? 0 : O_CREAT)
+            | (conversions_mask & C_EXCL ? O_EXCL : 0)
+            | (seek_records || (conversions_mask & C_NOTRUNC) ? 0 : O_TRUNC));
++      if ((opts & (O_BINARY | O_TEXT)) == 0)
++        opts |= O_BINARY;
+ 
+       /* Open the output file with *read* access only if we might
+          need to read to satisfy a 'seek=' request.  If we can't read
+--- coreutils-8.23/dircolors.c	2014-07-11 04:00:07.000000000 -0700
++++ coreutils-8.23/src/dircolors.c	2014-10-13 08:30:37.196451900 -0700
+@@ -494,8 +494,12 @@ main (int argc, char **argv)
+             }
+           else
+             {
++              /* tcsh treats LS_COLORS as a magic shell variable for its
++                 builtin ls-F, but does not recognize all the categories
++                 that coreutils ls does.  Therefore, silence stderr to
++                 avoid messages like "Unknown colorls variable `su'.".  */
+               prefix = "setenv LS_COLORS '";
+-              suffix = "'\n";
++              suffix = "' >&/dev/null\n";
+             }
+           fputs (prefix, stdout);
+           fwrite (s, 1, len, stdout);
+--- coreutils-8.23/install.c	2014-07-13 15:09:52.000000000 -0700
++++ coreutils-8.23/src/install.c	2014-10-13 08:30:37.196451900 -0700
+@@ -44,6 +44,10 @@
+ #include "utimens.h"
+ #include "xstrtol.h"
+ 
++#if __CYGWIN__
++# include "cygwin.h"
++#endif
++
+ /* The official name of this program (e.g., no 'g' prefix).  */
+ #define PROGRAM_NAME "install"
+ 
+@@ -531,6 +535,16 @@ strip (char const *name)
+       error (0, errno, _("fork system call failed"));
+       break;
+     case 0:			/* Child. */
++#if __CYGWIN__
++      {
++	/* Check for .exe here, since strip doesn't.  */
++	char *p;
++	if (((p = strchr (name, '\0') - 4) <= name
++	     || strcasecmp (p, ".exe") != 0)
++	    && 0 < cygwin_spelling (name))
++          CYGWIN_APPEND_EXE (p, name);
++      }
++#endif /* __CYGWIN__ */
+       execlp (strip_program, strip_program, name, NULL);
+       error (EXIT_FAILURE, errno, _("cannot run %s"), strip_program);
+       break;
+--- coreutils-8.23/ls.c	2014-07-13 15:09:52.000000000 -0700
++++ coreutils-8.23/src/ls.c	2014-10-13 08:30:37.196451900 -0700
+@@ -117,6 +117,10 @@
+ # include <sys/capability.h>
+ #endif
+ 
++#if __CYGWIN__
++# include "cygwin.h"
++#endif
++
+ #define PROGRAM_NAME (ls_mode == LS_LS ? "ls" \
+                       : (ls_mode == LS_MULTI_COL \
+                          ? "dir" : "vdir"))
+@@ -747,6 +751,11 @@ static char const *long_time_format[2] =
+     N_("%b %e %H:%M")
+   };
+ 
++#if __CYGWIN__
++/* Whether .exe should be appended to command-line args as needed.  */
++static bool append_exe;
++#endif /* __CYGWIN__ */
++
+ /* The set of signals that are caught.  */
+ 
+ static sigset_t caught_signals;
+@@ -782,6 +791,9 @@ enum
+ enum
+ {
+   AUTHOR_OPTION = CHAR_MAX + 1,
++#if __CYGWIN__
++  APPEND_EXE_OPTION,
++#endif /* __CYGWIN__ */
+   BLOCK_SIZE_OPTION,
+   COLOR_OPTION,
+   DEREFERENCE_COMMAND_LINE_SYMLINK_TO_DIR_OPTION,
+@@ -843,6 +855,9 @@ static struct option const long_options[
+   {"block-size", required_argument, NULL, BLOCK_SIZE_OPTION},
+   {"context", no_argument, 0, 'Z'},
+   {"author", no_argument, NULL, AUTHOR_OPTION},
++#if __CYGWIN__
++  {"append-exe", no_argument, NULL, APPEND_EXE_OPTION},
++#endif /* __CYGWIN__ */
+   {GETOPT_HELP_OPTION_DECL},
+   {GETOPT_VERSION_OPTION_DECL},
+   {NULL, 0, NULL, 0}
+@@ -1954,6 +1969,12 @@ decode_switches (int argc, char **argv)
+           print_scontext = true;
+           break;
+ 
++#if __CYGWIN__
++        case APPEND_EXE_OPTION:
++          append_exe = true;
++          break;
++#endif /* __CYGWIN__ */
++
+         case_GETOPT_HELP_CHAR;
+ 
+         case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
+@@ -2924,6 +2945,12 @@ gobble_file (char const *name, enum file
+   uintmax_t blocks = 0;
+   struct fileinfo *f;
+ 
++#if __CYGWIN__
++  char *name_alt = NULL;
++  if (command_line_arg && append_exe && 0 < cygwin_spelling (name))
++    CYGWIN_APPEND_EXE (name_alt, name);
++#endif /* __CYGWIN__ */
++
+   /* An inode value prior to gobble_file necessarily came from readdir,
+      which is not used for command line arguments.  */
+   assert (! command_line_arg || inode == NOT_AN_INODE_NUMBER);
+@@ -3035,11 +3062,19 @@ gobble_file (char const *name, enum file
+           file_failure (command_line_arg,
+                         _("cannot access %s"), absolute_name);
+           if (command_line_arg)
+-            return 0;
++            {
++#if __CYGWIN__
++              freea (name_alt);
++#endif /* __CYGWIN__ */
++              return 0;
++            }
+ 
+           f->name = xstrdup (name);
+           cwd_n_used++;
+ 
++#if __CYGWIN__
++          freea (name_alt);
++#endif /* __CYGWIN__ */
+           return 0;
+         }
+ 
+@@ -3223,6 +3258,9 @@ gobble_file (char const *name, enum file
+   f->name = xstrdup (name);
+   cwd_n_used++;
+ 
++#if __CYGWIN__
++  freea (name_alt);
++#endif /* __CYGWIN__ */
+   return blocks;
+ }
+ 
+@@ -4923,6 +4961,11 @@ Sort entries alphabetically if none of -
+   -Z, --context              print any security context of each file\n\
+   -1                         list one file per line\n\
+ "), stdout);
++#if __CYGWIN__
++      fputs (_("\
++      --append-exe           append .exe if cygwin magic was needed\n\
++"), stdout);
++#endif /* __CYGWIN__ */
+       fputs (HELP_OPTION_DESCRIPTION, stdout);
+       fputs (VERSION_OPTION_DESCRIPTION, stdout);
+       emit_size_note ();
+--- coreutils-8.23/md5sum.c	2014-07-11 04:00:07.000000000 -0700
++++ coreutils-8.23/src/md5sum.c	2014-10-13 08:30:37.212072800 -0700
+@@ -813,6 +813,9 @@ main (int argc, char **argv)
+   if (optind == argc)
+     argv[argc++] = bad_cast ("-");
+ 
++  if (O_BINARY)
++    xfreopen (NULL, "wb", stdout);
++
+   for (; optind < argc; ++optind)
+     {
+       char *file = argv[optind];
+--- coreutils-8.23/mv.c	2014-07-11 04:00:07.000000000 -0700
++++ coreutils-8.23/src/mv.c	2014-10-13 08:30:37.212072800 -0700
+@@ -92,7 +92,7 @@ rm_option_init (struct rm_options *x)
+   x->require_restore_cwd = true;
+ 
+   {
+-    static struct dev_ino dev_ino_buf;
++    static struct root_dev_ino dev_ino_buf;
+     x->root_dev_ino = get_root_dev_ino (&dev_ino_buf);
+     if (x->root_dev_ino == NULL)
+       error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
+@@ -467,6 +467,16 @@ main (int argc, char **argv)
+   else if (!target_directory)
+     {
+       assert (2 <= n_files);
++#if __CYGWIN__
++      struct stat s1, s2;
++      if (2 == n_files
++	  && lstat (file[0], &s1) == 0 && lstat (file[1], &s2) == 0
++	  && s1.st_ino == s2.st_ino)
++	{
++	  /* Allow 'mv foo Foo' to change case of the directory foo.  */
++	}
++      else
++#endif /* __CYGWIN__ */
+       if (target_directory_operand (file[n_files - 1]))
+         target_directory = file[--n_files];
+       else if (2 < n_files)
+--- coreutils-8.23/pwd.c	2014-07-13 15:09:52.000000000 -0700
++++ coreutils-8.23/src/pwd.c	2014-10-13 08:30:37.212072800 -0700
+@@ -268,8 +268,8 @@ static void
+ robust_getcwd (struct file_name *file_name)
+ {
+   size_t height = 1;
+-  struct dev_ino dev_ino_buf;
+-  struct dev_ino *root_dev_ino = get_root_dev_ino (&dev_ino_buf);
++  struct root_dev_ino dev_ino_buf;
++  struct root_dev_ino *root_dev_ino = get_root_dev_ino (&dev_ino_buf);
+   struct stat dot_sb;
+ 
+   if (root_dev_ino == NULL)
+@@ -282,7 +282,7 @@ robust_getcwd (struct file_name *file_na
+   while (1)
+     {
+       /* If we've reached the root, we're done.  */
+-      if (SAME_INODE (dot_sb, *root_dev_ino))
++      if (ROOT_DEV_INO_CHECK (root_dev_ino, &dot_sb))
+         break;
+ 
+       find_dir_entry (&dot_sb, file_name, height++);
+@@ -291,6 +291,9 @@ robust_getcwd (struct file_name *file_na
+   /* See if a leading slash is needed; file_name_prepend adds one.  */
+   if (file_name->start[0] == '\0')
+     file_name_prepend (file_name, "", 0);
++  /* If we aren't in `/', we must be in `//'.  */
++  if (! SAME_INODE (root_dev_ino->single_slash, dot_sb))
++    file_name_prepend (file_name, "", 0);
+ }
+ 
+ 
+--- coreutils-8.23/remove.h	2014-07-11 04:00:07.000000000 -0700
++++ coreutils-8.23/src/remove.h	2014-10-13 08:30:37.212072800 -0700
+@@ -54,7 +54,7 @@ struct rm_options
+ 
+   /* Pointer to the device and inode numbers of '/', when --recursive
+      and preserving '/'.  Otherwise NULL.  */
+-  struct dev_ino *root_dev_ino;
++  struct root_dev_ino *root_dev_ino;
+ 
+   /* If nonzero, stdin is a tty.  */
+   bool stdin_tty;
+--- coreutils-8.23/rm.c	2014-07-11 04:00:07.000000000 -0700
++++ coreutils-8.23/src/rm.c	2014-10-13 08:30:37.212072800 -0700
+@@ -325,7 +325,7 @@ main (int argc, char **argv)
+ 
+   if (x.recursive && preserve_root)
+     {
+-      static struct dev_ino dev_ino_buf;
++      static struct root_dev_ino dev_ino_buf;
+       x.root_dev_ino = get_root_dev_ino (&dev_ino_buf);
+       if (x.root_dev_ino == NULL)
+         error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),
+--- coreutils-8.23/stat.c	2014-07-11 04:00:07.000000000 -0700
++++ coreutils-8.23/src/stat.c	2014-10-13 08:30:37.212072800 -0700
+@@ -73,6 +73,13 @@
+ #include "find-mount-point.h"
+ #include "xvasprintf.h"
+ 
++#if __CYGWIN__
++# include "cygwin.h"
++/* Whether .exe should be appended to command-line args as needed.  */
++static bool append_exe;
++# define APPEND_EXE_OPTION 10000
++#endif
++
+ #if USE_STATVFS
+ # define STRUCT_STATVFS struct statvfs
+ # define STRUCT_STATXFS_F_FSID_IS_INTEGER STRUCT_STATVFS_F_FSID_IS_INTEGER
+@@ -189,6 +196,9 @@ static struct option const long_options[
+   {"format", required_argument, NULL, 'c'},
+   {"printf", required_argument, NULL, PRINTF_OPTION},
+   {"terse", no_argument, NULL, 't'},
++#if __CYGWIN__
++  {"append-exe", no_argument, NULL, APPEND_EXE_OPTION},
++#endif /* __CYGWIN__ */
+   {GETOPT_HELP_OPTION_DECL},
+   {GETOPT_VERSION_OPTION_DECL},
+   {NULL, 0, NULL, 0}
+@@ -1264,14 +1274,26 @@ do_statfs (char const *filename, char co
+       return false;
+     }
+ 
++#if __CYGWIN__
++  char *name_alt = NULL;
++  if (append_exe && 0 < cygwin_spelling (filename))
++    CYGWIN_APPEND_EXE (name_alt, filename);
++#endif /* __CYGWIN__ */
++
+   if (STATFS (filename, &statfsbuf) != 0)
+     {
+       error (0, errno, _("cannot read file system information for %s"),
+              quote (filename));
++#if __CYGWIN__
++      freea (name_alt);
++#endif /* __CYGWIN__ */
+       return false;
+     }
+ 
+   bool fail = print_it (format, -1, filename, print_statfs, &statfsbuf);
++#if __CYGWIN__
++  freea (name_alt);
++#endif /* __CYGWIN__ */
+   return ! fail;
+ }
+ 
+@@ -1282,6 +1304,7 @@ do_stat (char const *filename, char cons
+ {
+   int fd = STREQ (filename, "-") ? 0 : -1;
+   struct stat statbuf;
++  char *name_alt = NULL;
+ 
+   if (0 <= fd)
+     {
+@@ -1294,18 +1317,29 @@ do_stat (char const *filename, char cons
+   /* We can't use the shorter
+      (follow_links?stat:lstat) (filename, &statbug)
+      since stat might be a function-like macro.  */
+-  else if ((follow_links
+-            ? stat (filename, &statbuf)
+-            : lstat (filename, &statbuf)) != 0)
++  else
+     {
+-      error (0, errno, _("cannot stat %s"), quote (filename));
+-      return false;
++      if ((follow_links
++	   ? stat (filename, &statbuf)
++	   : lstat (filename, &statbuf)) != 0)
++	{
++	  error (0, errno, _("cannot stat %s"), quote (filename));
++	  return false;
++	}
++
++#if __CYGWIN__
++      if (append_exe && 0 < cygwin_spelling (filename))
++        CYGWIN_APPEND_EXE (name_alt, filename);
++#endif /* __CYGWIN__ */
+     }
+ 
+   if (S_ISBLK (statbuf.st_mode) || S_ISCHR (statbuf.st_mode))
+     format = format2;
+ 
+   bool fail = print_it (format, fd, filename, print_stat, &statbuf);
++#if __CYGWIN__
++  freea (name_alt);
++#endif /* __CYGWIN__ */
+   return ! fail;
+ }
+ 
+@@ -1427,6 +1461,11 @@ Display file or file system status.\n\
+                           if you want a newline, include \\n in FORMAT\n\
+   -t, --terse           print the information in terse form\n\
+ "), stdout);
++#if __CYGWIN__
++      fputs (_("\
++      --append-exe      append .exe if cygwin magic was needed\n\
++"), stdout);
++#endif /* __CYGWIN__ */
+       fputs (HELP_OPTION_DESCRIPTION, stdout);
+       fputs (VERSION_OPTION_DESCRIPTION, stdout);
+ 
+@@ -1547,6 +1586,12 @@ main (int argc, char *argv[])
+           terse = true;
+           break;
+ 
++#if __CYGWIN__
++        case APPEND_EXE_OPTION:
++          append_exe = true;
++          break;
++#endif /* __CYGWIN__ */
++
+         case_GETOPT_HELP_CHAR;
+ 
+         case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);
diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix
index 64bfd08d93a1b..8e5ccdd243dbd 100644
--- a/pkgs/tools/misc/coreutils/default.nix
+++ b/pkgs/tools/misc/coreutils/default.nix
@@ -1,6 +1,7 @@
 { stdenv, fetchurl, perl, xz, gmp ? null
 , aclSupport ? false, acl ? null
 , selinuxSupport? false, libselinux ? null, libsepol ? null
+, autoconf, automake114x, texinfo
 }:
 
 assert aclSupport -> acl != null;
@@ -11,16 +12,19 @@ with { inherit (stdenv.lib) optional optionals optionalString optionalAttrs; };
 
 let
   self = stdenv.mkDerivation rec {
-    name = "coreutils-8.23";
+    name = "coreutils-8.24";
 
     src = fetchurl {
       url = "mirror://gnu/coreutils/${name}.tar.xz";
-      sha256 = "0bdq6yggyl7nkc2pbl6pxhhyx15nyqhz3ds6rfn448n6rxdwlhzc";
+      sha256 = "0w11jw3fb5sslf0f72kxy7llxgk1ia3a6bcw0c9kmvxrlj355mx2";
     };
 
+    patches = if stdenv.isCygwin then [ ./coreutils-8.23-4.cygwin.patch ] else null;
+
     # The test tends to fail on btrfs and maybe other unusual filesystems.
     postPatch = stdenv.lib.optionalString (!stdenv.isDarwin) ''
       sed '2i echo Skipping dd sparse test && exit 0' -i ./tests/dd/sparse.sh
+      sed '2i echo Skipping cp sparse test && exit 0' -i ./tests/cp/sparse.sh
     '';
 
     outputs = [ "out" "info" ];
@@ -28,10 +32,11 @@ let
     nativeBuildInputs = [ perl xz.bin ];
     buildInputs = [ gmp ]
       ++ optional aclSupport acl
+      ++ optionals stdenv.isCygwin [ autoconf automake114x texinfo ]   # due to patch
       ++ optionals selinuxSupport [ libselinux libsepol ];
 
     crossAttrs = {
-      buildInputs = [ gmp ]
+      buildInputs = [ gmp.crossDrv ]
         ++ optional aclSupport acl.crossDrv
         ++ optionals selinuxSupport [ libselinux.crossDrv libsepol.crossDrv ]
         ++ optional (stdenv.ccCross.libc ? libiconv)
diff --git a/pkgs/tools/misc/cpulimit/default.nix b/pkgs/tools/misc/cpulimit/default.nix
index 8ae137bbd8999..72656d2969de3 100644
--- a/pkgs/tools/misc/cpulimit/default.nix
+++ b/pkgs/tools/misc/cpulimit/default.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = "http://limitcpu.sourceforge.net/";
     description = "A tool to throttle the CPU usage of programs";
-    platforms = with platforms; linux ++ freebsd ++ darwin;
+    platforms = with platforms; linux ++ freebsd;
     license = licenses.gpl2;
     maintainer = [maintainers.rycee];
   };
diff --git a/pkgs/tools/misc/cpuminer/default.nix b/pkgs/tools/misc/cpuminer/default.nix
index 0ca95127f11fa..713c0a92329fd 100644
--- a/pkgs/tools/misc/cpuminer/default.nix
+++ b/pkgs/tools/misc/cpuminer/default.nix
@@ -2,21 +2,22 @@
 
 stdenv.mkDerivation rec {
   name = "cpuminer-${version}";
-  version = "2.4.1";
+  version = "2.4.2";
 
   src = fetchurl {
     url = "mirror://sourceforge/cpuminer/pooler-${name}.tar.gz";
-    sha256 = "0grj0swh1q3c3bj3yxji80yhxb09yz62x1n5h8z7c3azq4rrv2w1";
+    sha256 = "1ds5yfxf25pd8y5z5gh689qb80m4dqw2dy3yx87hibnprlaiym0n";
   };
 
   buildInputs = [ curl jansson ];
 
   configureFlags = [ "CFLAGS=-O3" ];
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = https://github.com/pooler/cpuminer;
     description = "CPU miner for Litecoin and Bitcoin";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.all;
+    license = licenses.gpl2;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ pSub ];
   };
 }
diff --git a/pkgs/tools/misc/debian-devscripts/default.nix b/pkgs/tools/misc/debian-devscripts/default.nix
index a6e383df91a18..b6158ab644546 100644
--- a/pkgs/tools/misc/debian-devscripts/default.nix
+++ b/pkgs/tools/misc/debian-devscripts/default.nix
@@ -1,27 +1,50 @@
 {stdenv, fetchurl, perl, CryptSSLeay, LWP, unzip, xz, dpkg, TimeDate, DBFile
 , FileDesktopEntry, libxslt, docbook_xsl, python3, setuptools, makeWrapper
-, perlPackages
+, perlPackages, curl, gnupg, diffutils
+, sendmailPath ? "/var/setuid-wrappers/sendmail"
 }:
+
 stdenv.mkDerivation rec {
-  version = "2.15.3";
+  version = "2.15.8";
   name = "debian-devscripts-${version}";
+
   src = fetchurl {
     url = "mirror://debian/pool/main/d/devscripts/devscripts_${version}.tar.xz";
-    sha256 = "f589e2e02c5e9a46a77b2516155631ac3ddfd8a39bcfc16c920862583850bc7d";
+    sha256 = "1zw7phaigncblxb3jp4m8pk165hylk1f088k51nhj9d7z5iz6bbx";
   };
+
   buildInputs = [ perl CryptSSLeay LWP unzip xz dpkg TimeDate DBFile 
     FileDesktopEntry libxslt python3 setuptools makeWrapper
-    perlPackages.ParseDebControl ];
+    perlPackages.ParseDebControl perlPackages.LWPProtocolHttps
+    curl gnupg diffutils ];
+
   preConfigure = ''
     export PERL5LIB="$PERL5LIB''${PERL5LIB:+:}${dpkg}";
-    sed -e "s@/usr/share/sgml/[^ ]*/manpages/docbook.xsl@${docbook_xsl}/xml/xsl/docbook/manpages/docbook.xsl@" -i scripts/Makefile
-    sed -e 's/ translated_manpages//; s/--install-layout=deb//; s@--root="[^ ]*"@--prefix="'"$out"'"@' -i Makefile */Makefile
     tgtpy="$out/lib/${python3.libPrefix}/site-packages"
     mkdir -p "$tgtpy"
     export PYTHONPATH="$PYTHONPATH''${PYTHONPATH:+:}$tgtpy"
-    sed -re "s@/usr( |$|/)@$out\\1@" -i Makefile* */Makefile*
-    sed -re "s@/etc( |$|/)@$out/etc\\1@" -i Makefile* */Makefile*
+    find po4a scripts -type f -exec sed -r \
+      -e "s@/usr/bin/gpg(2|)@${gnupg}/bin/gpg2@g" \
+      -e "s@/usr/(s|)bin/sendmail@${sendmailPath}@g" \
+      -e "s@/usr/bin/diff@${diffutils}/bin/diff@g" \
+      -e "s@/usr/bin/gpgv(2|)@${gnupg}/bin/gpgv2@g" \
+      -e "s@(command -v|/usr/bin/)curl@${curl}/bin/curl@g" \
+      -i {} +
+    sed -e "s@/usr/share/sgml/[^ ]*/manpages/docbook.xsl@${docbook_xsl}/xml/xsl/docbook/manpages/docbook.xsl@" -i scripts/Makefile
+    sed -r \
+      -e "s@/usr( |$|/)@$out\\1@g" \
+      -e "s@/etc( |$|/)@$out/etc\\1@g" \
+      -e 's/ translated_manpages//; s/--install-layout=deb//; s@--root="[^ ]*"@--prefix="'"$out"'"@' \
+      -i Makefile* */Makefile*
   '';
+
+  makeFlags = [
+    "DESTDIR=$(out)"
+    "PREFIX="
+    "COMPL_DIR=/share/bash-completion/completions"
+    "PERLMOD_DIR=/share/devscripts"
+  ];
+
   postInstall = ''
     sed -re 's@(^|[ !`"])/bin/bash@\1${stdenv.shell}@g' -i "$out/bin"/*
     for i in "$out/bin"/*; do
@@ -31,9 +54,10 @@ stdenv.mkDerivation rec {
         --prefix PYTHONPATH : "$out/lib/python3.4/site-packages"
     done
   '';
-  meta = {
+
+  meta = with stdenv.lib; {
     description = ''Debian package maintenance scripts'';
-    license = "GPL (various)"; # Mix of public domain, Artistic+GPL, GPL1+, GPL2+, GPL3+, and GPL2-only... TODO
-    maintainers = with stdenv.lib.maintainers; [raskin];
+    license = licenses.free; # Mix of public domain, Artistic+GPL, GPL1+, GPL2+, GPL3+, and GPL2-only... TODO
+    maintainers = with maintainers; [raskin];
   };
 }
diff --git a/pkgs/tools/misc/debootstrap/default.nix b/pkgs/tools/misc/debootstrap/default.nix
index 3b14e46d0d378..9b6c35f41a471 100644
--- a/pkgs/tools/misc/debootstrap/default.nix
+++ b/pkgs/tools/misc/debootstrap/default.nix
@@ -14,8 +14,8 @@ let
     };
     patches = [
       (fetchurl {
-       url = "mirror://debian/pool/main/m/makedev/makedev_2.3.1-89.diff.gz";
-       sha256 = "1zbifw2jkq6471fb67y893nq4lq009xbfbi57jbjwxnhqmrppcy9";
+       url = "mirror://debian/pool/main/m/makedev/makedev_2.3.1-93.diff.gz";
+       sha256 = "08328779mc0b20xkj76ilpf9c8bw6zkz5xiw5l2kwm690dxp9nvw";
        })
     ];
     # TODO install man
@@ -32,13 +32,13 @@ in
 
 stdenv.mkDerivation {
 
-  name = "debootstrap-1.0.66";
+  name = "debootstrap-1.0.67";
 
   src = fetchurl {
     # git clone git://git.debian.org/d-i/debootstrap.git
     # I'd like to use the source. However it's lacking the lanny script ? (still true?)
-    url = mirror://debian/pool/main/d/debootstrap/debootstrap_1.0.66.tar.gz;
-    sha256 = "15gh6pvk7f0fib8ggz2zx53pg2jzqk4x0s8ihkpqxqdf4rlns91k";
+    url = mirror://debian/pool/main/d/debootstrap/debootstrap_1.0.67.tar.gz;
+    sha256 = "06x5zw6fskw37qh62hvqx006319l4wgnnw8sf53ms67zpfif04ha";
   };
 
   buildInputs = [ dpkg gettext gawk perl ];
diff --git a/pkgs/tools/misc/detox/default.nix b/pkgs/tools/misc/detox/default.nix
index 65a0047738bca..bdc018aec34a5 100644
--- a/pkgs/tools/misc/detox/default.nix
+++ b/pkgs/tools/misc/detox/default.nix
@@ -10,7 +10,8 @@ stdenv.mkDerivation {
 
   buildInputs = [flex];
 
-  meta = {
+  meta = with stdenv.lib; {
+    homepage = http://detox.sourceforge.net/;
     description = "Utility designed to clean up filenames";
     longDescription = ''
       Detox is a utility designed to clean up filenames. It replaces
@@ -18,7 +19,8 @@ stdenv.mkDerivation {
       equivalents. It will also clean up filenames with UTF-8 or Latin-1
       (or CP-1252) characters in them.
     '';
-    homepage = "http://detox.sourceforge.net/";
-    license = stdenv.lib.licenses.bsd3;
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ jgeerds ];
   };
 }
diff --git a/pkgs/tools/misc/diffoscope/default.nix b/pkgs/tools/misc/diffoscope/default.nix
new file mode 100644
index 0000000000000..e6c672d83441d
--- /dev/null
+++ b/pkgs/tools/misc/diffoscope/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchgit, pythonPackages, docutils
+, acl, binutils, bzip2, cdrkit, cpio, diffutils, e2fsprogs, file, gettext
+, gnupg, gzip, pdftk, poppler_utils, rpm, sqlite, squashfsTools, unzip, vim, xz
+}:
+
+pythonPackages.buildPythonPackage rec {
+  name = "diffoscope-${version}";
+  version = "29";
+
+  namePrefix = "";
+
+  src = fetchgit {
+    url = "git://anonscm.debian.org/reproducible/diffoscope.git";
+    rev = "refs/tags/${version}";
+    sha256 = "0q7hx2wm9gvzl1f7iilr9pjwpv8i2anscqan7cgk80v90s2pakrf";
+  };
+
+  postPatch = ''
+    # Different pkg name in debian
+    sed -i setup.py -e "s@'magic'@'Magic-file-extensions'@"
+
+    # Upstream doesn't provide a PKG-INFO file
+    sed -i setup.py -e "/'rpm',/d"
+  '';
+
+  # Still missing these tools: ghc javap showttf sng
+  propagatedBuildInputs = (with pythonPackages; [ debian libarchive-c magic ssdeep ]) ++
+    [ acl binutils bzip2 cdrkit cpio diffutils e2fsprogs file gettext gnupg
+      gzip pdftk poppler_utils rpm sqlite squashfsTools unzip vim xz ];
+
+  doCheck = false; # Calls 'mknod' in squashfs tests, which needs root
+
+  postInstall = ''
+    mv $out/bin/diffoscope.py $out/bin/diffoscope
+    mkdir -p $out/share/man/man1
+    ${docutils}/bin/rst2man.py debian/diffoscope.1.rst $out/share/man/man1/diffoscope.1
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Perform in-depth comparison of files, archives, and directories";
+    longDescription = ''
+      diffoscope will try to get to the bottom of what makes files or directories
+      different. It will recursively unpack archives of many kinds and transform
+      various binary formats into more human readable form to compare them. It can
+      compare two tarballs, ISO images, or PDF just as easily. The differences can
+      be shown in a text or HTML report.
+
+      diffoscope is developed as part of the "reproducible builds" Debian
+      project and was formerly known as "debbindiff".
+    '';
+    homepage = https://wiki.debian.org/ReproducibleBuilds;
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers.dezgeg ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/misc/direnv/default.nix b/pkgs/tools/misc/direnv/default.nix
index f21b879d5e56d..e05889fdb4b22 100644
--- a/pkgs/tools/misc/direnv/default.nix
+++ b/pkgs/tools/misc/direnv/default.nix
@@ -1,14 +1,14 @@
 { fetchurl, stdenv, go }:
 
 let
-  version = "2.6.0";
+  version = "2.7.0";
 in
 stdenv.mkDerivation {
   name = "direnv-${version}";
   src = fetchurl {
     url = "http://github.com/zimbatm/direnv/archive/v${version}.tar.gz";
     name = "direnv-${version}.tar.gz";
-    sha256 = "b85aac4d6a4ddf2daf193aabb3b2faf89e56507d33d763ab74cc7eb0b524ac03";
+    sha256 = "3cfa8f41e740c0dc09d854f3833058caec0ea0d67d19e950f97eee61106b0daf";
   };
 
   buildInputs = [ go ];
diff --git a/pkgs/tools/misc/dtach/default.nix b/pkgs/tools/misc/dtach/default.nix
index 7ceecc3690ab9..000f6cd0f93f6 100644
--- a/pkgs/tools/misc/dtach/default.nix
+++ b/pkgs/tools/misc/dtach/default.nix
@@ -8,6 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "16614ebddf8ab2811d3dc0e7f329c7de88929ac6a9632d4cb4aef7fe11b8f2a9";
   };
 
+  patches = [ ./fix-CVE-2012-3368.patch ];
+
   installPhase = ''
     mkdir -p $out/bin
     cp dtach $out/bin/dtach
diff --git a/pkgs/tools/misc/dtach/fix-CVE-2012-3368.patch b/pkgs/tools/misc/dtach/fix-CVE-2012-3368.patch
new file mode 100644
index 0000000000000..9e556d9325fb0
--- /dev/null
+++ b/pkgs/tools/misc/dtach/fix-CVE-2012-3368.patch
@@ -0,0 +1,49 @@
+Fix error handling for read from stdin in attach.c
+
+attach.c did not correctly handle a read from stdin when read returned
+an error. The code assigned the return value of read to pkt.len (an
+unsigned char) before checking the value. This prevented the error check
+from working correctly, since an unsigned integer can never be < 0.
+
+A packet with an invalid length was then sent to the master, which then
+sent 255 bytes of garbage to the program.
+
+Fix the bug in attach.c and the unchecked packet length bug in master.c.
+
+Report and initial patch by Enrico Scholz.
+
+--- a/master.c	2012/07/01 21:26:10	1.14
++++ b/master.c	2012/07/01 21:44:34	1.15
+@@ -351,7 +351,10 @@
+ 
+ 	/* Push out data to the program. */
+ 	if (pkt.type == MSG_PUSH)
+-		write(the_pty.fd, pkt.u.buf, pkt.len);
++	{
++		if (pkt.len <= sizeof(pkt.u.buf))
++			write(the_pty.fd, pkt.u.buf, pkt.len);
++	}
+ 
+ 	/* Attach or detach from the program. */
+ 	else if (pkt.type == MSG_ATTACH)
+--- a/attach.c	2012/07/01 21:26:10	1.12
++++ b/attach.c	2012/07/01 21:44:34	1.13
+@@ -237,12 +237,16 @@
+ 		/* stdin activity */
+ 		if (n > 0 && FD_ISSET(0, &readfds))
+ 		{
++			ssize_t len;
++
+ 			pkt.type = MSG_PUSH;
+ 			memset(pkt.u.buf, 0, sizeof(pkt.u.buf));
+-			pkt.len = read(0, pkt.u.buf, sizeof(pkt.u.buf));
++			len = read(0, pkt.u.buf, sizeof(pkt.u.buf));
+ 
+-			if (pkt.len <= 0)
++			if (len <= 0)
+ 				exit(1);
++
++			pkt.len = len;
+ 			process_kbd(s, &pkt);
+ 			n--;
+ 		}
diff --git a/pkgs/tools/misc/ent/default.nix b/pkgs/tools/misc/ent/default.nix
index d6ad7f1d26b06..71b4ec338df3d 100644
--- a/pkgs/tools/misc/ent/default.nix
+++ b/pkgs/tools/misc/ent/default.nix
@@ -14,6 +14,8 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ unzip ];
 
+  buildFlags = if stdenv.cc.isClang then [ "CC=clang" ] else null;
+
   installPhase = ''
     mkdir -p $out/bin
     cp ent $out/bin/
diff --git a/pkgs/tools/misc/entr/default.nix b/pkgs/tools/misc/entr/default.nix
new file mode 100644
index 0000000000000..8770a5858875b
--- /dev/null
+++ b/pkgs/tools/misc/entr/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, coreutils, ncurses }:
+
+stdenv.mkDerivation rec {
+  name = "entr-${version}";
+  version = "3.2";
+
+  src = fetchurl {
+    url = "http://entrproject.org/code/${name}.tar.gz";
+    sha256 = "0ikigpfzyjmr8j6snwlvxzqamrjbhlv78m8w1h0h7kzczc5f1vmi";
+  };
+
+  postPatch = ''
+    substituteInPlace Makefile.bsd --replace /bin/echo echo
+    substituteInPlace entr.c --replace /bin/cat ${coreutils}/bin/cat
+    substituteInPlace entr.c --replace /usr/bin/clear ${ncurses}/bin/clear
+    substituteInPlace entr.1 --replace /bin/cat cat
+    substituteInPlace entr.1 --replace /usr/bin/clear clear
+  '';
+  dontAddPrefix = true;
+  doCheck = true;
+  checkTarget = "test";
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = {
+    homepage = http://entrproject.org/;
+    description = "Run arbitrary commands when files change.";
+
+    license = stdenv.lib.licenses.isc;
+
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/pkgs/tools/misc/escoger/default.nix b/pkgs/tools/misc/escoger/default.nix
deleted file mode 100644
index 2fe67f1b97f43..0000000000000
--- a/pkgs/tools/misc/escoger/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ cabal, dataDefault, fetchFromGitHub, HUnit, mtl, parallel
-, QuickCheck, testFramework, testFrameworkHunit
-, testFrameworkQuickcheck2, vector, vectorAlgorithms, vty
-}:
-
-let
-  rv = "b6b11c51846a9283ef4ee7c839b99ded9f6c3bc8";
-in
-cabal.mkDerivation (self: {
-  pname = "escoger";
-  version = "0.1.0.0-${rv}";
-  src = fetchFromGitHub {
-    owner = "tstat";
-    repo = "escoger";
-    rev = rv;
-    sha256 = "0n6mvg5cm50ym20bz74b7q1afkljp0fc9pxhqk0ai82a71xxbxy3";
-  };
-  isLibrary = false;
-  isExecutable = true;
-  buildDepends = [
-    dataDefault mtl parallel vector vectorAlgorithms vty
-  ];
-  testDepends = [
-    dataDefault HUnit mtl parallel QuickCheck testFramework
-    testFrameworkHunit testFrameworkQuickcheck2 vector vectorAlgorithms
-    vty
-  ];
-  meta = {
-    description = "A multithreaded terminal fuzzy selector";
-    license = self.stdenv.lib.licenses.mit;
-    platforms = self.ghc.meta.platforms;
-  };
-})
diff --git a/pkgs/tools/misc/ethtool/default.nix b/pkgs/tools/misc/ethtool/default.nix
index e29c5effbdb69..16af347e55100 100644
--- a/pkgs/tools/misc/ethtool/default.nix
+++ b/pkgs/tools/misc/ethtool/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "ethtool-3.18";
+  name = "ethtool-4.0";
 
   src = fetchurl {
     url = "mirror://kernel/software/network/ethtool/${name}.tar.xz";
-    sha256 = "1xj20fr44dk01hghyy5sq962sbiywc88ni3qqliv8bfxzmczwgw1";
+    sha256 = "1zzcwn6pk8qfasalqkxg8vrhacksfa50xsq4xifw7yfjqyn8fj4h";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/tools/misc/execline/default.nix b/pkgs/tools/misc/execline/default.nix
index a2edb1f842ed9..7478b1e33eea0 100644
--- a/pkgs/tools/misc/execline/default.nix
+++ b/pkgs/tools/misc/execline/default.nix
@@ -2,7 +2,7 @@
 
 let
 
-  version = "2.1.1.0";
+  version = "2.1.4.0";
 
 in stdenv.mkDerivation rec {
 
@@ -11,7 +11,7 @@ in stdenv.mkDerivation rec {
   src = fetchgit {
     url = "git://git.skarnet.org/execline";
     rev = "refs/tags/v${version}";
-    sha256 = "0yhxyih8p6p9135nifi655qk4gnhdarjzfp1lb4pxx9ar9ay5q7w";
+    sha256 = "1ih0mmkra3aa697nz7haaifq2hfy3wjj39npxzg9zr37m7yw67yz";
   };
 
   dontDisableStatic = true;
@@ -32,6 +32,7 @@ in stdenv.mkDerivation rec {
     description = "A small scripting language, to be used in place of a shell in non-interactive scripts";
     platforms = stdenv.lib.platforms.all;
     license = stdenv.lib.licenses.isc;
+    maintainers = with stdenv.lib.maintainers; [ pmahoney ];
   };
 
 }
diff --git a/pkgs/tools/misc/expect/default.nix b/pkgs/tools/misc/expect/default.nix
index bfb369933889e..a50717d539926 100644
--- a/pkgs/tools/misc/expect/default.nix
+++ b/pkgs/tools/misc/expect/default.nix
@@ -1,8 +1,7 @@
 { stdenv, fetchurl, tcl, makeWrapper }:
 
-let version = "5.45";
-in
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
+  version = "5.45";
   name = "expect-${version}";
 
   src = fetchurl {
@@ -13,37 +12,30 @@ stdenv.mkDerivation {
   buildInputs = [ tcl ];
   nativeBuildInputs = [ makeWrapper ];
 
-  #NIX_CFLAGS_COMPILE = "-DHAVE_UNISTD_H";
-
-  # http://wiki.linuxfromscratch.org/lfs/ticket/2126
-  #preBuild = ''
-  #  substituteInPlace exp_inter.c --replace tcl.h tclInt.h
-  #'';
-
   patchPhase = ''
-    substituteInPlace configure --replace /bin/stty "$(type -tP stty)"
-    sed -e '1i\#include <tclInt.h>' -i exp_inter.c
-    export NIX_LDFLAGS="-rpath $out/lib $NIX_LDFLAGS"
-  '' + stdenv.lib.optionalString stdenv.isFreeBSD ''
-    ln -s libexpect.so.1 libexpect545.so
+    sed -i "s,/bin/stty,$(type -p stty),g" configure
   '';
 
   configureFlags = [
     "--with-tcl=${tcl}/lib"
     "--with-tclinclude=${tcl}/include"
-    "--exec-prefix=$(out)"
+    "--exec-prefix=\${out}"
   ];
 
   postInstall = ''
     for i in $out/bin/*; do
       wrapProgram $i \
         --prefix PATH : "${tcl}/bin" \
-        --prefix TCLLIBPATH ' ' $out/lib/*
+        --prefix TCLLIBPATH ' ' $out/lib/* \
+        ${stdenv.lib.optionalString stdenv.isDarwin "--prefix DYLD_LIBRARY_PATH : $out/lib/expect${version}"}
     done
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "A tool for automating interactive applications";
     homepage = http://expect.nist.gov/;
+    license = "Expect";
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ wkennington ];
   };
 }
diff --git a/pkgs/tools/misc/fasd/default.nix b/pkgs/tools/misc/fasd/default.nix
index f34ce44633f3f..aa1fa8f3c6c95 100644
--- a/pkgs/tools/misc/fasd/default.nix
+++ b/pkgs/tools/misc/fasd/default.nix
@@ -1,21 +1,18 @@
-{ stdenv, fetchgit, pandoc } :
+{ stdenv, fetchgit } :
 
 let
-  rev = "287af2b80e0829b08dc6329b4fe8d8e5594d64b0";
+  rev = "61ce53be996189e1c325916e45a7dc0aa89660e3";
 in
 stdenv.mkDerivation {
 
-  name = "fasd-1.0.1";
+  name = "fasd-git-2015-03-29";
 
   src = fetchgit {
     url = "https://github.com/clvv/fasd.git";
     inherit rev;
-    sha256 = "0kv9iyfdf916x0gab9fzs4vmsnkaqmb6kh4xna485nqij89xzkgs";
+    sha256 = "1fd36ff065ae73de2d6b1bae2131c18c8c4dea98ca63d96b0396e8b291072b5e";
   };
 
-  # seems to be needed non-deterministically (timestamps?)
-  nativeBuildInputs = [ pandoc ];
-
   installPhase = ''
     PREFIX=$out make install
   '';
diff --git a/pkgs/tools/misc/fdupes/default.nix b/pkgs/tools/misc/fdupes/default.nix
index 64a45b975b0f6..0ab97a7e6715f 100644
--- a/pkgs/tools/misc/fdupes/default.nix
+++ b/pkgs/tools/misc/fdupes/default.nix
@@ -1,24 +1,27 @@
-{stdenv, fetchurl}:
+{stdenv, fetchFromGitHub}:
 
-stdenv.mkDerivation {
-  name = "fdupes-1.51";
-  src = fetchurl {
-    url = https://github.com/adrianlopezroche/fdupes/archive/fdupes-1.51.tar.gz;
-    sha256 = "11j96vxl9vg3jsnxqxskrv3gad6dh7hz2zpyc8n31xzyxka1c7kn";
-  };
+stdenv.mkDerivation rec {
+  name = "fdupes-20150902";
 
-  # workaround: otherwise make install fails (should be fixed in trunk)
-  preInstall = "mkdir -p $out/bin $out/man/man1";
+  src = fetchFromGitHub {
+    owner = "jbruchon";
+    repo  = "fdupes-jody";
+    rev   = "414b1fd64c0a739d4c52228eb72487782855b939";
+    sha256 = "1q6jcj79pljm1f24fqgk8x53xz2x0p1986znw75iljxqyzbvw0ap";
+  };
 
   makeFlags = "PREFIX=\${out}";
 
   meta = {
     description = "Identifies duplicate files residing within specified directories";
     longDescription = ''
-      FDUPES uses md5sums and then a byte by byte comparison to finde duplicate
-      files within a set of directories.
+      FDUPES compares inodes' stats, hash sums, and byte by byte file
+      contents to find duplicate files within a set of directories and
+      then applies various actions to those sets, e.g.:
+      * remove some of the duplicates,
+      * turn all the files in a set into hardlinks.
     '';
-    homepage = http://code.google.com/p/fdupes/;
+    homepage = src.meta.homepage;
     license = stdenv.lib.licenses.mit;
     platforms = stdenv.lib.platforms.all;
     maintainers = [
diff --git a/pkgs/tools/misc/file/default.nix b/pkgs/tools/misc/file/default.nix
index 2cf8d50bbe546..749bf59fde96b 100644
--- a/pkgs/tools/misc/file/default.nix
+++ b/pkgs/tools/misc/file/default.nix
@@ -1,13 +1,16 @@
 { stdenv, fetchurl, zlib }:
 
 stdenv.mkDerivation rec {
-  name = "file-5.22";
+  name = "file-5.25";
 
   buildInputs = [ zlib ];
 
   src = fetchurl {
-    url = "ftp://ftp.astron.com/pub/file/${name}.tar.gz";
-    sha256 = "02zw14hw3gqlw91w2f2snbirvyrp7r83irvnnkjcb25q9kjaiqy4";
+    urls = [
+      "ftp://ftp.astron.com/pub/file/${name}.tar.gz"
+      "http://distfiles.macports.org/file/${name}.tar.gz"
+    ];
+    sha256 = "1jhfi5mivdnqvry5la5q919l503ahwdwbf3hjhiv97znccakhd9p";
   };
 
   meta = {
diff --git a/pkgs/tools/misc/file/python.patch b/pkgs/tools/misc/file/python.patch
deleted file mode 100644
index 8ecbc9a81fdc7..0000000000000
--- a/pkgs/tools/misc/file/python.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- file-5.11/python/magic.py	2011-09-22 18:57:41.000000000 +0200
-+++ file-5.11/python/magic.py.1	2012-04-30 15:00:31.750213810 +0200
-@@ -13,7 +13,7 @@
-     Loads the shared library through ctypes and returns a library
-     L{ctypes.CDLL} instance 
-     """
--    return ctypes.cdll.LoadLibrary(find_library('magic'))
-+    return ctypes.CDLL('libmagic.so')
- 
- _libraries = {}
- _libraries['magic'] = _init()
diff --git a/pkgs/tools/misc/findutils/default.nix b/pkgs/tools/misc/findutils/default.nix
index 6b2069ae7bda9..c59283fb7c39c 100644
--- a/pkgs/tools/misc/findutils/default.nix
+++ b/pkgs/tools/misc/findutils/default.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [coreutils];
 
-  patches = [ ./findutils-path.patch ./change_echo_path.patch ];
+  patches = [ ./findutils-path.patch ./change_echo_path.patch ./disable-test-canonicalize.patch ];
 
   outputs = [ "out" "info" ];
 
@@ -21,6 +21,10 @@ stdenv.mkDerivation rec {
     configureFlags = [ "gl_cv_func_wcwidth_works=yes" ];
   };
 
+  preConfigure = if stdenv.isCygwin then ''
+    sed -i gnulib/lib/fpending.h -e '/include <stdio_ext.h>/d'
+  '' else null;
+
   meta = {
     homepage = http://www.gnu.org/software/findutils/;
     description = "GNU Find Utilities, the basic directory searching utilities of the GNU operating system";
diff --git a/pkgs/tools/misc/findutils/disable-test-canonicalize.patch b/pkgs/tools/misc/findutils/disable-test-canonicalize.patch
new file mode 100644
index 0000000000000..3a8d42eb5607a
--- /dev/null
+++ b/pkgs/tools/misc/findutils/disable-test-canonicalize.patch
@@ -0,0 +1,12 @@
+diff -ruN findutils-4.4.2/tests/test-canonicalize.sh findutils-4.4.2_edited/tests/test-canonicalize.sh
+--- findutils-4.4.2/tests/test-canonicalize.sh	2008-12-23 12:50:15.000000000 +0000
++++ findutils-4.4.2_edited/tests/test-canonicalize.sh	2015-06-14 10:51:19.000000000 +0000
+@@ -1,5 +1,8 @@
+ #!/bin/sh
+ 
++# skipped because user might not have directory listing permission for all parents of TMPDIR
++exit 77
++
+ tmpfiles=""
+ trap 'rm -fr $tmpfiles' 1 2 3 15
+ 
diff --git a/pkgs/tools/misc/fluentd/default.nix b/pkgs/tools/misc/fluentd/default.nix
index cfc1e9ab5647b..800e1c6f67a13 100644
--- a/pkgs/tools/misc/fluentd/default.nix
+++ b/pkgs/tools/misc/fluentd/default.nix
@@ -13,7 +13,7 @@ bundlerEnv {
   meta = with lib; {
     description = "A data collector";
     homepage    = http://www.fluentd.org/;
-    license     = with licenses; asl20;
+    license     = licenses.asl20;
     maintainers = with maintainers; [ offline ];
     platforms   = platforms.unix;
   };
diff --git a/pkgs/tools/misc/gnokii/default.nix b/pkgs/tools/misc/gnokii/default.nix
index d0354a7bb6eda..c0593e5c01778 100644
--- a/pkgs/tools/misc/gnokii/default.nix
+++ b/pkgs/tools/misc/gnokii/default.nix
@@ -1,8 +1,8 @@
-a :  
-let 
+a @ { intltool, perl, gettext, libusb, pkgconfig, bluez, readline, pcsclite, libical, gtk, glib, libXpm, ... } :
+let
   fetchurl = a.fetchurl;
 
-  s = import ./src-for-default.nix; 
+  s = import ./src-for-default.nix;
   buildInputs = with a; [
     perl intltool gettext libusb
     glib gtk pkgconfig bluez readline
diff --git a/pkgs/tools/misc/gparted/default.nix b/pkgs/tools/misc/gparted/default.nix
index e5c814faa4aa0..2b9c2297af283 100644
--- a/pkgs/tools/misc/gparted/default.nix
+++ b/pkgs/tools/misc/gparted/default.nix
@@ -1,19 +1,19 @@
 { stdenv, fetchurl, parted, gtk, glib, intltool, gettext, libuuid
-, pkgconfig, gtkmm, libxml2 }:
+, pkgconfig, gtkmm, libxml2, hicolor_icon_theme
+}:
 
 stdenv.mkDerivation rec {
-  name = "gparted-0.22.0";
+  name = "gparted-0.23.0";
 
   src = fetchurl {
-    sha256 = "09vg5lxvh81x54ps5ayfjd4jl84wprn42i1wifnfmj44dqd5wxda";
+    sha256 = "0m57bni3nkbbqq920ydzvasy2qc5j6w6bdssyn12jk4157gxvlbz";
     url = "mirror://sourceforge/gparted/${name}.tar.bz2";
   };
 
   configureFlags = "--disable-doc";
 
-  buildInputs = [
-    parted gtk glib intltool gettext libuuid pkgconfig gtkmm libxml2
-  ];
+  buildInputs = [ parted gtk glib libuuid gtkmm libxml2 hicolor_icon_theme ];
+  nativeBuildInputs = [ intltool gettext pkgconfig ];
 
   meta = with stdenv.lib; {
     description = "Graphical disk partitioning tool";
@@ -22,9 +22,9 @@ stdenv.mkDerivation rec {
       partitions. GParted enables you to change the partition organization
       while preserving the partition contents.
     '';
-    homepage = http://gparted.sourceforge.net;
-    license = with licenses; gpl2Plus;
-    platforms = with platforms; linux;
+    homepage = http://gparted.org;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
     maintainers = with maintainers; [ nckx ];
   };
 }
diff --git a/pkgs/tools/misc/grub/2.0x.nix b/pkgs/tools/misc/grub/2.0x.nix
index 501c6820df23a..2880666e8db25 100644
--- a/pkgs/tools/misc/grub/2.0x.nix
+++ b/pkgs/tools/misc/grub/2.0x.nix
@@ -20,7 +20,7 @@ let
   canEfi = any (system: stdenv.system == system) (mapAttrsToList (name: _: name) efiSystems);
   inPCSystems = any (system: stdenv.system == system) (mapAttrsToList (name: _: name) pcSystems);
 
-  version = "2.02-git-2015-04-24";
+  version = "2.x-2015-07-27";
 
   unifont_bdf = fetchurl {
     url = "http://unifoundry.com/unifont-5.1.20080820.bdf.gz";
@@ -43,8 +43,8 @@ stdenv.mkDerivation rec {
 
   src = fetchFromSavannah {
     repo = "grub";
-    rev = "70b002de55abbfd6b2d2f2ea4408078d93c9e0de";
-    sha256 = "1bhm1yxjmckzn45v70lzmz0qpj5prhb4iyiyqqw8rvyykcixw5qk";
+    rev = "72fc110d95129410443b898e931ff7a1db75312e";
+    sha256 = "0l2hws8h1jhww5s0m8pkwdggacpqb7fvz2jx83syg7ynczpgzbxs";
   };
 
   nativeBuildInputs = [ autogen flex bison python autoconf automake ];
diff --git a/pkgs/tools/misc/grub/trusted.nix b/pkgs/tools/misc/grub/trusted.nix
index 9f897d7e93a2e..315c7145cbe34 100644
--- a/pkgs/tools/misc/grub/trusted.nix
+++ b/pkgs/tools/misc/grub/trusted.nix
@@ -1,26 +1,92 @@
-{stdenv, fetchgit, autoconf, automake, buggyBiosCDSupport ? true}:
+{ stdenv, fetchurl, fetchgit, autogen, flex, bison, python, autoconf, automake
+, gettext, ncurses, libusb, freetype, qemu, devicemapper
+}:
 
-stdenv.mkDerivation {
-  name = "trustedGRUB-1.1.5";
+with stdenv.lib;
+let
+  pcSystems = {
+    "i686-linux".target = "i386";
+    "x86_64-linux".target = "i386";
+  };
+
+  inPCSystems = any (system: stdenv.system == system) (mapAttrsToList (name: _: name) pcSystems);
+
+  version = "1.2.0";
+
+  unifont_bdf = fetchurl {
+    url = "http://unifoundry.com/unifont-5.1.20080820.bdf.gz";
+    sha256 = "0s0qfff6n6282q28nwwblp5x295zd6n71kl43xj40vgvdqxv0fxx";
+  };
+
+  po_src = fetchurl {
+    name = "grub-2.02-beta2.tar.gz";
+    url = "http://alpha.gnu.org/gnu/grub/grub-2.02~beta2.tar.gz";
+    sha256 = "1lr9h3xcx0wwrnkxdnkfjwy08j7g7mdlmmbdip2db4zfgi69h0rm";
+
+  };
+
+in (
+
+stdenv.mkDerivation rec {
+  name = "trustedGRUB2-${version}";
 
   src = fetchgit {
-     url = "https://github.com/ts468/TrustedGRUB";
-     rev = "954941c17e14c8f7b18e6cd3043ef5f946866f1c";
-     sha256 = "30c21765dc44f02275e66220d6724ec9cd45496226ca28c6db59a9147aa22685";
+    url = "https://github.com/Sirrix-AG/TrustedGRUB2";
+    rev = "1ff54a5fbe02ea01df5a7de59b1e0201e08d4f76";
+    sha256 = "8c17bd7e14dd96ae9c4e98723f4e18ec6b21d45ac486ecf771447649829d0b34";
   };
 
-  # Autoconf/automake required for the splashimage patch.
-  buildInputs = [autoconf automake];
+  nativeBuildInputs = [ autogen flex bison python autoconf automake ];
+  buildInputs = [ ncurses libusb freetype gettext devicemapper ]
+    ++ optional doCheck qemu;
+
+  preConfigure =
+    '' for i in "tests/util/"*.in
+       do
+         sed -i "$i" -e's|/bin/bash|/bin/sh|g'
+       done
+
+       # Apparently, the QEMU executable is no longer called
+       # `qemu-system-i386', even on i386.
+       #
+       # In addition, use `-nodefaults' to avoid errors like:
+       #
+       #  chardev: opening backend "stdio" failed
+       #  qemu: could not open serial device 'stdio': Invalid argument
+       #
+       # See <http://www.mail-archive.com/qemu-devel@nongnu.org/msg22775.html>.
+       sed -i "tests/util/grub-shell.in" \
+           -e's/qemu-system-i386/qemu-system-x86_64 -nodefaults/g'
+    '';
+
+  prePatch =
+    '' tar zxf ${po_src} grub-2.02~beta2/po
+       rm -rf po
+       mv grub-2.02~beta2/po po
+       sh autogen.sh
+       gunzip < "${unifont_bdf}" > "unifont.bdf"
+       sed -i "configure" \
+           -e "s|/usr/src/unifont.bdf|$PWD/unifont.bdf|g"
+    '';
+
+  patches = [ ./fix-bash-completion.patch ];
+
+  # save target that grub is compiled for
+  grubTarget = if inPCSystems
+               then "${pcSystems.${stdenv.system}.target}-pc"
+               else "";
+
+  doCheck = false;
+  enableParallelBuilding = true;
 
-  preConfigure = ''
-    autoreconf
+  postInstall = ''
+    paxmark pms $out/sbin/grub-{probe,bios-setup}
   '';
 
-  meta = {
-    homepage = "http://sourceforge.net/projects/trustedgrub/";
-    repositories.git = https://github.com/ts468/TrustedGRUB;
-    description = "Legacy GRUB bootloader extended with TCG support";
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ tstrobel ];
+  meta = with stdenv.lib; {
+    description = "GRUB 2.0 extended with TCG (TPM) support for integrity measured boot process (trusted boot)";
+    homepage = https://github.com/Sirrix-AG/TrustedGRUB2;
+    license = licenses.gpl3Plus;
+    platforms = platforms.gnu;
   };
-}
+})
diff --git a/pkgs/tools/misc/gummiboot/default.nix b/pkgs/tools/misc/gummiboot/default.nix
index 3765502006208..9d9b7700c90b5 100644
--- a/pkgs/tools/misc/gummiboot/default.nix
+++ b/pkgs/tools/misc/gummiboot/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, gnu-efi, unzip, pkgconfig, utillinux, libxslt, docbook_xsl, docbook_xml_dtd_42 }:
 
 stdenv.mkDerivation rec {
-  name = "gummiboot-45";
+  name = "gummiboot-48";
 
   buildInputs = [ gnu-efi pkgconfig libxslt utillinux ];
 
@@ -13,8 +13,8 @@ stdenv.mkDerivation rec {
   ];
 
   src = fetchurl {
-    url = http://pkgs.fedoraproject.org/repo/pkgs/gummiboot/gummiboot-45.tar.xz/5d4957390e959cb9f325b87712ddd3f1/gummiboot-45.tar.xz;
-    sha256 = "15227d6abi90vg7rs234fm13af511nsd6dv87c3jvsjhgb9ib0hm";
+    url = http://pkgs.fedoraproject.org/repo/pkgs/gummiboot/gummiboot-48.tar.xz/05ef3951e8322b76c31f2fd14efdc185/gummiboot-48.tar.xz;
+    sha256 = "1bzygyglgglhb3aj77w2qcb0dz9sxgb7lq5krxf6417431h198rg";
   };
 
   meta = {
@@ -25,7 +25,5 @@ stdenv.mkDerivation rec {
     license = stdenv.lib.licenses.lgpl21Plus;
 
     platforms = [ "x86_64-linux" "i686-linux" ];
-
-    maintainers = [ stdenv.lib.maintainers.shlevy ];
   };
 }
diff --git a/pkgs/tools/misc/i3minator/default.nix b/pkgs/tools/misc/i3minator/default.nix
index 02b8049365498..0c3907b89bfed 100644
--- a/pkgs/tools/misc/i3minator/default.nix
+++ b/pkgs/tools/misc/i3minator/default.nix
@@ -1,19 +1,6 @@
 { stdenv, fetchurl, buildPythonPackage, pythonPackages, python }:
 
-let
-  i3-py = buildPythonPackage rec {
-    version = "0.6.4";
-    name = "i3-py-${version}";
-
-    src = fetchurl {
-      url = "https://pypi.python.org/packages/source/i/i3-py/i3-py-${version}.tar.gz";
-      sha256 = "1sgl438jrb4cdyl7hbc3ymwsf7y3zy09g1gh7ynilxpllp37jc8y";
-    };
-
-    # no tests in tarball
-    doCheck = false;
-  };
-in buildPythonPackage rec {
+buildPythonPackage rec {
   name = "i3minator-${version}";
   version = "0.0.4";
 
@@ -22,7 +9,7 @@ in buildPythonPackage rec {
     sha256 = "11dn062788kwfs8k2ry4v8zr2gn40r6lsw770s9g2gvhl5n469dw";
   };
 
-  propagatedBuildInputs = [ pythonPackages.pyyaml i3-py ];
+  propagatedBuildInputs = [ pythonPackages.pyyaml pythonPackages.i3-py ];
 
   meta = with stdenv.lib; {
     description = "i3 project manager similar to tmuxinator";
diff --git a/pkgs/tools/misc/ipad_charge/default.nix b/pkgs/tools/misc/ipad_charge/default.nix
new file mode 100644
index 0000000000000..df987ed86c1c8
--- /dev/null
+++ b/pkgs/tools/misc/ipad_charge/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchFromGitHub, libusb }:
+
+let version = "2015-02-03"; in
+stdenv.mkDerivation rec {
+  name = "ipad_charge-${version}";
+
+  src = fetchFromGitHub {
+    sha256 = "0f40hqx1dbqpwrhyf42h5982jwqv8j5zp5hwwakz6600hyqvnnz7";
+    rev = "bb24e1c3a79016cfdffb9d28189485766d655ec6";
+    repo = "ipad_charge";
+    owner = "mkorenkov";
+  };
+
+  buildInputs = [ libusb ];
+
+  postPatch = ''
+    substituteInPlace Makefile \
+      --replace " -o root -g root" "" \
+      --replace "/usr" "$out"
+    sed "/rules\.d/d" -i Makefile
+  '';
+
+  enableParallelBuilding = true;
+
+  preInstall = ''
+    mkdir -p $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    inherit version;
+    inherit (src.meta) homepage;
+    description = "Apple device USB charging utility for Linux";
+    longDescription = ''
+      USB charging control utility used to enable/disable charging of an Apple
+      device connected to USB port. For a list of supported devices, see
+      https://github.com/mkorenkov/ipad_charge#supported-devices.
+    '';
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ nckx ];
+  };
+}
diff --git a/pkgs/tools/misc/kde-gtk-config/default.nix b/pkgs/tools/misc/kde-gtk-config/default.nix
index 88df0b6b54452..809d0c65c6ece 100644
--- a/pkgs/tools/misc/kde-gtk-config/default.nix
+++ b/pkgs/tools/misc/kde-gtk-config/default.nix
@@ -1,5 +1,7 @@
-{ stdenv, fetchurl, cmake, gettext, gtk2, gtk3, kdelibs
-, libxcb, libpthreadstubs, libXdmcp, pkgconfig, glib, gdk_pixbuf }:
+{ stdenv, fetchurl, automoc4, cmake, gettext, perl, pkgconfig
+, gtk2, gtk3, kdelibs, libxcb, libpthreadstubs, libXdmcp
+, glib, gdk_pixbuf
+}:
 
 stdenv.mkDerivation {
   name = "kde-gtk-config-2.2.1";
@@ -9,19 +11,11 @@ stdenv.mkDerivation {
   };
 
   buildInputs = [
-    cmake
-    gdk_pixbuf
-    gettext
-    glib
-    gtk2
-    gtk3
-    kdelibs
-    libxcb
-    libpthreadstubs
-    libXdmcp
-    pkgconfig
+    gdk_pixbuf glib gtk2 gtk3 kdelibs libxcb libpthreadstubs libXdmcp
   ];
 
+  nativeBuildInputs = [ automoc4 cmake gettext perl pkgconfig ];
+
   patches = [
     ./kde-gtk-config-2.2.1-install-paths.patch
     ./kde-gtk-config-follow-symlinks.patch
diff --git a/pkgs/tools/misc/keychain/default.nix b/pkgs/tools/misc/keychain/default.nix
index 1ed6be071a590..6ffd36312a3e7 100644
--- a/pkgs/tools/misc/keychain/default.nix
+++ b/pkgs/tools/misc/keychain/default.nix
@@ -1,5 +1,6 @@
 { stdenv, fetchFromGitHub, makeWrapper, coreutils, openssh, gnupg
-, procps, gnugrep, gawk, findutils, gnused }:
+, perl, procps, gnugrep, gawk, findutils, gnused
+, withProcps ? stdenv.isLinux }:
 
 stdenv.mkDerivation rec {
   name = "keychain-${version}";
@@ -12,15 +13,12 @@ stdenv.mkDerivation rec {
     sha256 = "0ajas58cv8mp5wb6hn1zhsqiwfxvx69p4f91a5j2as299rxgrxlp";
   };
 
-  phases = [ "unpackPhase" "patchPhase" "buildPhase" ];
+  buildInputs = [ makeWrapper perl ];
 
-  buildInputs = [ makeWrapper ];
-
-  patchPhase = "sed -i -e 's,version=.*,version=\"${version}\",g' keychain.sh";
-
-  buildPhase = ''
-    mkdir -p $out/bin
-    cp keychain.sh $out/bin/keychain
+  installPhase = ''
+    mkdir -p $out/{bin,share/man/man1}
+    cp keychain $out/bin/keychain
+    cp keychain.1 $out/share/man/man1
     wrapProgram $out/bin/keychain \
       --prefix PATH ":" "${coreutils}/bin" \
       --prefix PATH ":" "${openssh}/bin" \
@@ -29,12 +27,16 @@ stdenv.mkDerivation rec {
       --prefix PATH ":" "${gnused}/bin" \
       --prefix PATH ":" "${findutils}/bin" \
       --prefix PATH ":" "${gawk}/bin" \
-      --prefix PATH ":" "${procps}/bin"
+      ${if withProcps then ("--prefix PATH \":\" ${procps}/bin") else ""}
   '';
 
   meta = {
     description = "Keychain management tool";
     homepage = "http://www.funtoo.org/Keychain";
     license = stdenv.lib.licenses.gpl2;
+    # other platforms are untested (AFAIK)
+    platforms =
+      with stdenv.lib;
+      platforms.linux ++ platforms.darwin;
   };
 }
diff --git a/pkgs/tools/misc/less/default.nix b/pkgs/tools/misc/less/default.nix
index 7924615201e6f..8c0f0e96d21ed 100644
--- a/pkgs/tools/misc/less/default.nix
+++ b/pkgs/tools/misc/less/default.nix
@@ -5,7 +5,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "http://www.greenwoodsoftware.com/less/${name}.tar.gz";
-    sha256 = "1w7d10h6hzgz5zww8g4aja2fbl7xwx30vd07hcg1fcy7hm8yc1q2";
+    sha256 = "16703m6g5l97af3jwpypgac7gpmh3yjkdpqygf5a2scfip0hxm2g";
   };
 
   # Look for ‘sysless’ in /etc.
diff --git a/pkgs/tools/misc/logstash-forwarder/default.nix b/pkgs/tools/misc/logstash-forwarder/default.nix
index a20b1d577754b..44fa1cb7cfb10 100644
--- a/pkgs/tools/misc/logstash-forwarder/default.nix
+++ b/pkgs/tools/misc/logstash-forwarder/default.nix
@@ -1,15 +1,21 @@
-{ stdenv, fetchgit, go_1_3 }:
-stdenv.mkDerivation {
-  name = "logstash-forwarder-20141216";
-  src = fetchgit {
-    url = https://github.com/elasticsearch/logstash-forwarder.git;
-    rev = "6082bd8aaecb2180f5b56f4fb1b2940a6935ef7b";
-    sha256 = "1686rlx5p7d2806cg8y4376m4l7nvg1yjgg52ccrs0v4fnqs6292";
+{ stdenv, fetchFromGitHub, go }:
+
+stdenv.mkDerivation rec {
+  name = "logstash-forwarder-${version}";
+  version = "0.4.0";
+
+  src = fetchFromGitHub {
+    owner = "elasticsearch";
+    repo = "logstash-forwarder";
+    rev = "v${version}";
+    sha256 = "05g7366w8f7h75n1ia7njdpmparr6sfvn45xxfh5412zigqidz6l";
   };
-  buildInputs = [ go_1_3 ];
+
+  buildInputs = [ go ];
+
   installPhase = ''
     mkdir -p $out/bin
-    cp build/bin/logstash-forwarder $out/bin
+    find . -name logstash-forwarder -type f -exec cp {} $out/bin \;
   '';
 
   meta = {
diff --git a/pkgs/tools/misc/logstash/default.nix b/pkgs/tools/misc/logstash/default.nix
index 7f43ccdb6258f..ab02c7dc3d1d2 100644
--- a/pkgs/tools/misc/logstash/default.nix
+++ b/pkgs/tools/misc/logstash/default.nix
@@ -1,38 +1,31 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  version = "1.4.2";
+  version = "1.5.3";
   name = "logstash-${version}";
 
   src = fetchurl {
     url = "https://download.elasticsearch.org/logstash/logstash/logstash-${version}.tar.gz";
-    sha256 = "0sc0bwyf96fzs5h3d7ii65v9vvpfbm7w67vk1im9djnlz0d1ggnm";
+    sha256 = "1an476k4q2shdxvhcx4fzbrcpk6isjrrvzlb6ivxfqg5fih3cg7b";
   };
 
-  dontBuild    = true;
-  dontPatchELF = true;
-  dontStrip    = true;
+  dontBuild         = true;
+  dontPatchELF      = true;
+  dontStrip         = true;
   dontPatchShebangs = true;
 
   installPhase = ''
-    mkdir -p $out/bin
-    mkdir -p $out/vendor
-    mkdir -p $out/lib
-    mkdir -p $out/locales
-    mkdir -p $out/patterns
-    cp -a bin $out
-    cp -a vendor $out
-    cp -a lib $out
-    cp -a locales $out
-    cp -a patterns $out
-    patchShebangs $out/bin
+    mkdir -p $out
+    cp -r {Gemfile*,vendor,lib} $out
+    cp bin/logstash $out/logstash
+    cp bin/plugin $out/logstash-plugin
   '';
 
-  meta = {
-    description = "Open Source, Distributed, RESTful Search Engine";
-    homepage    = http://www.elasticsearch.org;
-    license     = stdenv.lib.licenses.asl20;
-    platforms   = stdenv.lib.platforms.unix;
-    maintainers = [ stdenv.lib.maintainers.wjlroe ];
+  meta = with stdenv.lib; {
+    description = "Logstash is a data pipeline that helps you process logs and other event data from a variety of systems.";
+    homepage    = https://www.elastic.co/products/logstash;
+    license     = licenses.asl20;
+    platforms   = platforms.unix;
+    maintainers = [ maintainers.wjlroe maintainers.offline ];
   };
 }
diff --git a/pkgs/tools/misc/lolcat/Gemfile b/pkgs/tools/misc/lolcat/Gemfile
new file mode 100644
index 0000000000000..63f6c6633b336
--- /dev/null
+++ b/pkgs/tools/misc/lolcat/Gemfile
@@ -0,0 +1,2 @@
+source "http://rubygems.org"
+gem "lolcat"
\ No newline at end of file
diff --git a/pkgs/tools/misc/lolcat/Gemfile.lock b/pkgs/tools/misc/lolcat/Gemfile.lock
new file mode 100644
index 0000000000000..4b318ea1473b6
--- /dev/null
+++ b/pkgs/tools/misc/lolcat/Gemfile.lock
@@ -0,0 +1,14 @@
+GEM
+  remote: http://rubygems.org/
+  specs:
+    lolcat (42.1.0)
+      paint (~> 0.8.3)
+      trollop (~> 1.16.2)
+    paint (0.8.7)
+    trollop (1.16.2)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  lolcat
diff --git a/pkgs/tools/misc/lolcat/default.nix b/pkgs/tools/misc/lolcat/default.nix
new file mode 100644
index 0000000000000..21355652d3e3a
--- /dev/null
+++ b/pkgs/tools/misc/lolcat/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, lib, bundlerEnv, gpgme, ruby, ncurses, writeText, zlib, xapian
+, pkgconfig, which }:
+
+bundlerEnv {
+  name = "lolcat-42.1.0";
+
+  inherit ruby;
+  gemfile = ./Gemfile;
+  lockfile = ./Gemfile.lock;
+  gemset = ./gemset.nix;
+
+  meta = with lib; {
+    description = "A rainbow version of cat";
+    homepage    = https://github.com/busyloop/lolcat;
+    license     = licenses.wtfpl;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/pkgs/tools/misc/lolcat/gemset.nix b/pkgs/tools/misc/lolcat/gemset.nix
new file mode 100644
index 0000000000000..85acf7767a81b
--- /dev/null
+++ b/pkgs/tools/misc/lolcat/gemset.nix
@@ -0,0 +1,27 @@
+{
+  "lolcat" = {
+    version = "42.1.0";
+    source = {
+      type = "gem";
+      sha256 = "1jp0g7k958dg709dm1qs7nr8dmi4vlgvmcvqcr1zhk8ygx89rwgc";
+    };
+    dependencies = [
+      "paint"
+      "trollop"
+    ];
+  };
+  "paint" = {
+    version = "0.8.7";
+    source = {
+      type = "gem";
+      sha256 = "0nl1x0190d44bfczlxdy16gxsvm95y14kxv3k9n92h9ap2zvdyd8";
+    };
+  };
+  "trollop" = {
+    version = "1.16.2";
+    source = {
+      type = "gem";
+      sha256 = "0frrp90dw266h3kf9g925dppir9l7p8jxknw6dn5nz6fa6c4g5lg";
+    };
+  };
+}
\ No newline at end of file
diff --git a/pkgs/tools/misc/man-db/default.nix b/pkgs/tools/misc/man-db/default.nix
index 403068b1bf7dc..69af77e18677f 100644
--- a/pkgs/tools/misc/man-db/default.nix
+++ b/pkgs/tools/misc/man-db/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, pkgconfig, libpipeline, db, groff }:
  
 stdenv.mkDerivation rec {
-  name = "man-db-2.7.1";
+  name = "man-db-2.7.3";
   
   src = fetchurl {
     url = "mirror://savannah/man-db/${name}.tar.xz";
-    sha256 = "03ly0hbpgjnag576rgccanaisn7f6422q5qxrj64vyzslc2651y4";
+    sha256 = "1shl07w3251ih6g6zx3xa3p1193difxwdz4ysnmff1v0jp4l8iwx";
   };
   
   buildInputs = [ pkgconfig libpipeline db groff ];
diff --git a/pkgs/tools/misc/memtest86+/default.nix b/pkgs/tools/misc/memtest86+/default.nix
index dbd5a46e10abb..7e38242633653 100644
--- a/pkgs/tools/misc/memtest86+/default.nix
+++ b/pkgs/tools/misc/memtest86+/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     fi
   '';
 
-  NIX_CFLAGS_COMPILE = "-I.";
+  NIX_CFLAGS_COMPILE = "-I. -std=gnu90";
 
   buildFlags = "memtest.bin";
 
diff --git a/pkgs/tools/misc/mmv/default.nix b/pkgs/tools/misc/mmv/default.nix
index e6e7eb505bfcc..2d2d4e4a74161 100644
--- a/pkgs/tools/misc/mmv/default.nix
+++ b/pkgs/tools/misc/mmv/default.nix
@@ -5,7 +5,7 @@ stdenv.mkDerivation rec {
   version = "1.01b";
 
   src = fetchurl {
-    url = "http://ftp.debian.org/debian/pool/main/m/mmv/mmv_${version}.orig.tar.gz";
+    url = "mirror://debian/pool/main/m/mmv/mmv_${version}.orig.tar.gz";
     sha256 = "0399c027ea1e51fd607266c1e33573866d4db89f64a74be8b4a1d2d1ff1fdeef";
   };
 
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
     # Use Debian patched version, as upstream is no longer maintained and it
     # contains a _lot_ of fixes.
     (fetchurl {
-      url = "http://ftp.debian.org/debian/pool/main/m/mmv/mmv_${version}-15.diff.gz";
+      url = "mirror://debian/pool/main/m/mmv/mmv_${version}-15.diff.gz";
       sha256 = "9ad3e3d47510f816b4a18bae04ea75913588eec92248182f85dd09bc5ad2df13";
     })
   ];
diff --git a/pkgs/tools/misc/moreutils/default.nix b/pkgs/tools/misc/moreutils/default.nix
index 843672fa26cf6..feb5710282fd4 100644
--- a/pkgs/tools/misc/moreutils/default.nix
+++ b/pkgs/tools/misc/moreutils/default.nix
@@ -1,20 +1,20 @@
-{ stdenv, fetchurl, libxml2, libxslt, docbook-xsl, perl, IPCRun, TimeDate, TimeDuration, makeWrapper }:
+{ stdenv, fetchurl, libxml2, libxslt, docbook-xsl, docbook_xml_dtd_44, perl, IPCRun, TimeDate, TimeDuration, makeWrapper }:
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
   name = "moreutils-${version}";
-  version = "0.55";
+  version = "0.57";
 
   src = fetchurl {
     url = "http://ftp.de.debian.org/debian/pool/main/m/moreutils/moreutils_${version}.orig.tar.gz";
-    sha256 = "1dcah2jx8dbznn8966xl7sf1jrld2qfh6l6xcmx9dsnf8p8mr7fs";
+    sha256 = "078dpkwwwrv8hxnylbc901kib2d1rr3hsja37j6dlpjfcfq58z9s";
   };
 
   preBuild = ''
     substituteInPlace Makefile --replace /usr/share/xml/docbook/stylesheet/docbook-xsl ${docbook-xsl}/xml/xsl/docbook
   '';
 
-  buildInputs = [ libxml2 libxslt docbook-xsl makeWrapper ];
+  buildInputs = [ libxml2 libxslt docbook-xsl docbook_xml_dtd_44 makeWrapper ];
 
   propagatedBuildInputs = [ perl IPCRun TimeDate TimeDuration ];
 
diff --git a/pkgs/tools/misc/multitail/default.nix b/pkgs/tools/misc/multitail/default.nix
index f3f90143bda98..9b1b3f48450c0 100644
--- a/pkgs/tools/misc/multitail/default.nix
+++ b/pkgs/tools/misc/multitail/default.nix
@@ -1,11 +1,12 @@
 { stdenv, fetchurl, ncurses }:
 
 stdenv.mkDerivation rec {
-  name = "multitail-6.2.1";
+  version = "6.4.2";
+  name = "multitail-${version}";
 
   src = fetchurl {
     url = "http://www.vanheusden.com/multitail/${name}.tgz";
-    sha256 = "049fv5cyl5f7vcc8n2q3z3i5k0sqv2k715ic0s4q1nrw5kb6qn0y";
+    sha256 = "1zd1r89xkxngl1pdrvsc877838nwkfqkbcgfqm3vglwalxc587dg";
   };
 
   buildInputs = [ ncurses ];
@@ -20,5 +21,6 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = http://www.vanheusden.com/multitail/;
     description = "tail on Steroids";
+    maintainers = with stdenv.lib.maintainers; [ matthiasbeyer ];
   };
 }
diff --git a/pkgs/tools/misc/ncdu/default.nix b/pkgs/tools/misc/ncdu/default.nix
index ff751eb40da30..6ea9d71bddc74 100644
--- a/pkgs/tools/misc/ncdu/default.nix
+++ b/pkgs/tools/misc/ncdu/default.nix
@@ -2,19 +2,20 @@
 
 stdenv.mkDerivation rec {
   name = "ncdu-${version}";
-  version = "1.10";
+  version = "1.11";
 
   src = fetchurl {
     url = "http://dev.yorhel.nl/download/${name}.tar.gz";
-    sha256 = "0rqc5wpqcbfqpcwxgh3jxwa0yw2py0hv0acpsf0a9g6v9144m6gm";
+    sha256 = "0yxv87hpal05p6nii6rlnai5a8958689l9vz020w4qvlwiragbnh";
   };
 
   buildInputs = [ ncurses ];
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "Ncurses disk usage analyzer";
     homepage = http://dev.yorhel.nl/ncdu;
-    license = stdenv.lib.licenses.mit;
-    platforms = stdenv.lib.platforms.all;
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ pSub ];
   };
 }
diff --git a/pkgs/tools/misc/ngrok/default.nix b/pkgs/tools/misc/ngrok/default.nix
deleted file mode 100644
index c3019d722afd8..0000000000000
--- a/pkgs/tools/misc/ngrok/default.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{ stdenv, git, fetchFromGitHub, goPackages }:
-
-with goPackages;
-
-buildGoPackage rec {
-  name = "ngrok-1.7";
-  goPackagePath = "ngrok";
-
-  src = fetchFromGitHub {
-    rev = "b7d5571aa7f12ac304b8f8286b855cc64dd9bab8";
-    owner = "inconshreveable";
-    repo = "ngrok";
-    sha256 = "0a5iq9l9f2xdg6gnc9pj0iczhycv1w5iwcqgzzap83xfpy01xkh4";
-  };
-
-  subPackages = [ "main/ngrok" "main/ngrokd" ];
-
-  preConfigure = ''
-    sed -e '/jteeuwen\/go-bindata/d' \
-        -e '/export GOPATH/d' \
-        -e 's/go get/#go get/' \
-        -e 's|bin/go-bindata|go-bindata|' -i Makefile
-    make assets BUILDTAGS=release
-    export sourceRoot=$sourceRoot/src/ngrok
-  '';
-
-  buildInputs = [ git log4go websocket go-vhost mousetrap termbox-go rcrowley.go-metrics
-                  yaml-v1 go-bindata go-update binarydist osext ];
-
-  buildFlags = "-tags release";
-
-  dontInstallSrc = true;
-
-  meta = with stdenv.lib; {
-    description = "Reverse proxy that creates a secure tunnel between from a public endpoint t
-o a locally running web service";
-    homepage = https://ngrok.com/;
-    license = licenses.asl20;
-    maintainers = with maintainers; [ iElectric cstrahan ];
-    platforms = with platforms; linux ++ darwin;
-  };
-
-}
diff --git a/pkgs/tools/misc/ocz-ssd-guru/default.nix b/pkgs/tools/misc/ocz-ssd-guru/default.nix
index 7ee6089c24966..21786f3f15f50 100644
--- a/pkgs/tools/misc/ocz-ssd-guru/default.nix
+++ b/pkgs/tools/misc/ocz-ssd-guru/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, xlibs, freetype, fontconfig, mesa, glibc, makeWrapper }:
+{ fetchurl, stdenv, xorg, freetype, fontconfig, mesa, glibc, makeWrapper }:
 
 let
   system = if stdenv.system == "x86_64-linux" then "linux64" else "linux32";
@@ -15,13 +15,13 @@ stdenv.mkDerivation rec {
   buildInputs = [ makeWrapper ];
 
   libPath = stdenv.lib.makeLibraryPath [
-      xlibs.libX11
-      xlibs.libxcb
+      xorg.libX11
+      xorg.libxcb
       freetype
       fontconfig
-      xlibs.libXext
-      xlibs.libXi
-      xlibs.libXrender
+      xorg.libXext
+      xorg.libXi
+      xorg.libXrender
       stdenv.cc.cc
       glibc
       mesa
diff --git a/pkgs/tools/misc/opentsdb/default.nix b/pkgs/tools/misc/opentsdb/default.nix
index 6f9695ba363cd..fd73eecacde1a 100644
--- a/pkgs/tools/misc/opentsdb/default.nix
+++ b/pkgs/tools/misc/opentsdb/default.nix
@@ -1,11 +1,12 @@
 { stdenv, autoconf, automake, curl, fetchurl, jdk, jre, makeWrapper, nettools, python }:
 with stdenv.lib;
 stdenv.mkDerivation rec {
-  name = "opentsdb-2.1.0-rc1";
+  name = "opentsdb-${version}";
+  version = "2.1.1";
 
   src = fetchurl {
-    url = https://github.com/OpenTSDB/opentsdb/releases/download/v2.1.0RC1/opentsdb-2.1.0RC1.tar.gz;
-    sha256 = "1vvhzdl2wgbzy2lvlyx40pks47ma6szs9ka4dwjf123xyixv0rmz";
+    url = "https://github.com/OpenTSDB/opentsdb/releases/download/${version}/opentsdb-${version}.tar.gz";
+    sha256 = "17wbdvrv83dr18dqxxsk73c1a7jlbw19algvz0hsz9a1k7aiy29b";
   };
 
   buildInputs = [ autoconf automake curl jdk makeWrapper nettools python ];
diff --git a/pkgs/tools/misc/pal/default.nix b/pkgs/tools/misc/pal/default.nix
index 2a081b882ab85..ff7279d0d57c9 100644
--- a/pkgs/tools/misc/pal/default.nix
+++ b/pkgs/tools/misc/pal/default.nix
@@ -1,10 +1,10 @@
 {stdenv, fetchurl, ncurses, glib, gettext, readline, pkgconfig }:
 
 stdenv.mkDerivation rec {
-  name = "pal-0.4.2";
+  name = "pal-0.4.3";
   src = fetchurl {
     url = "mirror://sourceforge/palcal/${name}.tgz";
-    sha256 = "1601nsspxscm7bp9g9bkia0ij0mx2lpskl2fqhs5r0smp92121nx";
+    sha256 = "072mahxvd7lcvrayl32y589w4v3vh7bmlcnhiksjylknpsvhqiyf";
   };
 
   patchPhase = ''
diff --git a/pkgs/tools/misc/parallel/default.nix b/pkgs/tools/misc/parallel/default.nix
index 27d5e62458960..1d3d14d7e2341 100644
--- a/pkgs/tools/misc/parallel/default.nix
+++ b/pkgs/tools/misc/parallel/default.nix
@@ -1,28 +1,27 @@
-{ fetchurl, stdenv, perl }:
+{ fetchurl, stdenv, perl, makeWrapper, procps }:
 
 stdenv.mkDerivation rec {
-  name = "parallel-20150322";
+  name = "parallel-20150822";
 
   src = fetchurl {
     url = "mirror://gnu/parallel/${name}.tar.bz2";
-    sha256 = "1zsj1bd4zbwb4n9i0jgzs7vd5wkyg3xvj6s1q6s5fyn0pff7j01c";
+    sha256 = "1ij7bjxhk2866mzh0v0v2m629b6d39r5ivwdzmh72s471m9hg45d";
   };
 
-  patchPhase =
-    '' sed -i "src/parallel" -e's|/usr/bin/perl|${perl}/bin/perl|g'
-    '';
+  nativeBuildInputs = [ makeWrapper ];
 
-  preBuild =
-    # The `sem' program wants to write to `~/.parallel'.
-    '' export HOME="$PWD"
-    '';
+  preFixup = ''
+    sed -i 's,#![ ]*/usr/bin/env[ ]*perl,#!${perl}/bin/perl,' $out/bin/*
+
+    wrapProgram $out/bin/parallel \
+      ${if stdenv.isLinux then ("--prefix PATH \":\" ${procps}/bin") else ""} \
+      --prefix PATH : "${perl}/bin" \
+  '';
 
-  buildInputs = [ perl ];
   doCheck = true;
 
   meta = with stdenv.lib; {
     description = "Shell tool for executing jobs in parallel";
-
     longDescription =
       '' GNU Parallel is a shell tool for executing jobs in parallel.  A job
          is typically a single command or a small script that has to be run
@@ -40,11 +39,8 @@ stdenv.mkDerivation rec {
          it possible to use output from GNU Parallel as input for other
          programs.
       '';
-
     homepage = http://www.gnu.org/software/parallel/;
-
     license = licenses.gpl3Plus;
-
     platforms = platforms.all;
     maintainers = with maintainers; [ pSub ];
   };
diff --git a/pkgs/tools/misc/picocom/default.nix b/pkgs/tools/misc/picocom/default.nix
index 303fdb3dbe07c..cc5b6a707158f 100644
--- a/pkgs/tools/misc/picocom/default.nix
+++ b/pkgs/tools/misc/picocom/default.nix
@@ -1,19 +1,22 @@
-{ stdenv, fetchurl, makeWrapper, lrzsz }:
+{ stdenv, fetchFromGitHub, makeWrapper, lrzsz }:
 
 stdenv.mkDerivation rec {
-  name = "picocom-1.7";
+  name = "picocom-${version}";
+  version = "2.0";
 
-  src = fetchurl {
-    url = "http://picocom.googlecode.com/files/${name}.tar.gz";
-    sha256 = "17hjq713naq02xar711aw24qqd52p591mj1h5n97cni1ga7irwyh";
+  src = fetchFromGitHub {
+    owner = "npat-efault";
+    repo = "picocom";
+    rev = version;
+    sha256 = "0s990jiqlbcg3isvhr3bn4sb7b0k6qqbf1jdvs1fyy9h0iiwprjw";
   };
 
   buildInputs = [ makeWrapper ];
 
   installPhase = ''
-    mkdir -p $out/bin $out/share/man/man8
+    mkdir -p $out/bin $out/share/man/man1
     cp picocom $out/bin
-    cp picocom.8 $out/share/man/man8
+    cp picocom.1 $out/share/man/man1
 
     wrapProgram $out/bin/picocom \
       --prefix PATH ":" "${lrzsz}/bin"
@@ -21,7 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Minimal dumb-terminal emulation program";
-    homepage = http://code.google.com/p/picocom/;
+    homepage = https://github.com/npat-efault/picocom/;
     license = stdenv.lib.licenses.gpl2Plus;
     platforms = stdenv.lib.platforms.gnu;  # arbitrary choice
   };
diff --git a/pkgs/tools/misc/pipelight/default.nix b/pkgs/tools/misc/pipelight/default.nix
index aa0be62ed64ce..40f441e065df6 100644
--- a/pkgs/tools/misc/pipelight/default.nix
+++ b/pkgs/tools/misc/pipelight/default.nix
@@ -1,44 +1,9 @@
-{ stdenv, fetchurl, fetchgit, autoconf, automake, wineUnstable, perl, xlibs
-  , gnupg, gcc48_multi, mesa, curl, bash, cacert, cabextract, utillinux, attr
+{ stdenv, fetchurl, fetchgit, autoconf, automake, wineStaging, perl, xorg
+  , gnupg, gcc_multi, mesa, curl, bash, cacert, cabextract, utillinux, attr
   }:
 
 let
-  wine_patches_version = "1.7.38";
-  wine_hash = "1h3bsga9qzqkavf9wlv62ldl3a8mz7grr68nxv8vicmnglzfj7lq";
-
-  wine_patches = fetchgit {
-    url = "git://github.com/compholio/wine-compholio.git";
-    rev = "refs/tags/v${wine_patches_version}";
-    sha256 = "0lcagswy1lgqz6qlpf0ng7ksl2sbaqldrgnhf0n1278jj82rq80n";
-  };
-
-  wine_custom =
-    stdenv.lib.overrideDerivation wineUnstable (args: rec {
-      name = "wine-${wine_patches_version}";
-      version = "${wine_patches_version}";
-      src = null;
-      srcs = [
-	      (fetchurl {
-                url = "mirror://sourceforge/wine/${name}.tar.bz2";
-                sha256 = wine_hash;
-	      })
-	      wine_patches ];
-      sourceRoot = "./${name}";
-      buildInputs = args.buildInputs ++ [ 
-        autoconf perl utillinux automake attr 
-      ];
-      nativeBuildInputs = args.nativeBuildInputs ++ [ 
-        autoconf perl utillinux automake attr 
-      ];
-      postPatch = ''
-        export wineDir=$(pwd)
-        patchShebangs $wineDir/tools/
-        chmod u+w $wineDir/../${wine_patches.name}/debian/tools/
-        patchShebangs $wineDir/../${wine_patches.name}/debian/tools/
-        chmod -R +rwx ../${wine_patches.name}/
-        make -C ../${wine_patches.name}/patches DESTDIR=$wineDir install
-      '';
-    });
+  wine_custom = wineStaging;
 
   mozillaPluginPath = "/lib/mozilla/plugins";
 
@@ -54,7 +19,7 @@ in stdenv.mkDerivation rec {
     sha256 = "1i440rf22fmd2w86dlm1mpi3nb7410rfczc0yldnhgsvp5p3sm5f";
   };
 
-  buildInputs = [ wine_custom xlibs.libX11 gcc48_multi mesa curl ];
+  buildInputs = [ wine_custom xorg.libX11 gcc_multi mesa curl ];
   propagatedbuildInputs = [ curl cabextract ];
 
   patches = [ ./pipelight.patch ];
diff --git a/pkgs/tools/misc/pipelight/pipelight.patch b/pkgs/tools/misc/pipelight/pipelight.patch
index bde6ecf943d9e..66dd0fdab4c0c 100644
--- a/pkgs/tools/misc/pipelight/pipelight.patch
+++ b/pkgs/tools/misc/pipelight/pipelight.patch
@@ -43,7 +43,7 @@ diff -urN pipelight.old/bin/pipelight-plugin.in pipelight.new/bin/pipelight-plug
 -fi
 +download_file()
 +{
-+	curl --cacert /etc/ssl/certs/ca-bundle.crt -o "$1" "$2"
++	curl --cacert /etc/ssl/certs/ca-certificates.crt -o "$1" "$2"
 +}
 
  # Use shasum instead of sha256sum on MacOS / *BSD
@@ -111,7 +111,7 @@ diff -urN pipelight.old/share/install-dependency pipelight.new/share/install-dep
 -fi
 +download_file()
 +{
-+	curl --cacert /etc/ssl/certs/ca-bundle.crt -o "$1" "$2"
++	curl --cacert /etc/ssl/certs/ca-certificates.crt -o "$1" "$2"
 +}
 +get_download_size()
 +{
diff --git a/pkgs/tools/misc/plowshare/default.nix b/pkgs/tools/misc/plowshare/default.nix
index 79cb29b20ca3c..40540ad1c20db 100644
--- a/pkgs/tools/misc/plowshare/default.nix
+++ b/pkgs/tools/misc/plowshare/default.nix
@@ -1,15 +1,15 @@
-{ stdenv, fetchgit, makeWrapper, curl, spidermonkey }:
+{ stdenv, fetchFromGitHub, makeWrapper, curl, spidermonkey }:
 
 stdenv.mkDerivation rec {
 
   name = "plowshare4-${version}";
-
   version = "1.1.0";
 
-  src = fetchgit {
-    url = "https://code.google.com/p/plowshare/";
-    rev = "87bd955e681ddda05009ca8594d727260989d5ed";
-    sha256 = "0cbsnalmr6fa1ijsn1j1p9fdqi3ii96bx3xabgvvbbqkl7q938f9";
+  src = fetchFromGitHub {
+    owner = "mcrapet";
+    repo = "plowshare";
+    rev = "v${version}";
+    sha256 = "1xxkdv4q97dfzbcdnmy5079a59fwh8myxlvdr2dlxdv70fb72sq9";
   };
 
   buildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/misc/profile-cleaner/default.nix b/pkgs/tools/misc/profile-cleaner/default.nix
index 903c8617128af..55c44770c3e17 100644
--- a/pkgs/tools/misc/profile-cleaner/default.nix
+++ b/pkgs/tools/misc/profile-cleaner/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchFromGitHub, makeWrapper, parallel, sqlite }:
 
 stdenv.mkDerivation rec {
-  version = "2.34";
+  version = "2.35";
   name = "profile-cleaner-${version}";
 
   src = fetchFromGitHub {
     owner = "graysky2";
     repo = "profile-cleaner";
     rev = "v${version}";
-    sha256 = "17z73xyn31668f7vmbj7xs659fcrm0m0mnzja7hz6lipfaviqxrs";
+    sha256 = "0gashrzhpgcy98zsyc6b3awfp15j1x0nq82h60kvfjbs6xxzvszh";
   };
 
   buildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/misc/cv/default.nix b/pkgs/tools/misc/progress/default.nix
index b953ffc1897b6..cf70b234b88a8 100644
--- a/pkgs/tools/misc/cv/default.nix
+++ b/pkgs/tools/misc/progress/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchFromGitHub, ncurses }:
 
 stdenv.mkDerivation rec {
-  name = "cv-${version}";
-  version = "0.6";
+  name = "progress-${version}";
+  version = "0.9";
 
   src = fetchFromGitHub {
     owner = "Xfennec";
-    repo = "cv";
+    repo = "progress";
     rev = "v${version}";
-    sha256 = "0nhhgkaghfp8rw23013j17yn9bqcwcrz0fylwkvx1krp5r8dalis";
+    sha256 = "07bl5fsr538nk4l8vwj1kf5bivlh3a8cy8jliqfadxmhf1knn2mw";
   };
 
   buildInputs = [ ncurses ];
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
   makeFlags = [ "PREFIX=$(out)" ];
 
   meta = with stdenv.lib; {
-    homepage = https://github.com/Xfennec/cv;
+    homepage = https://github.com/Xfennec/progress;
     description = "Tool that shows the progress of coreutils programs";
     license = licenses.gpl3;
     platforms = platforms.linux;
diff --git a/pkgs/tools/misc/pv/default.nix b/pkgs/tools/misc/pv/default.nix
index a2d8c535d063f..8a3aa08abb780 100644
--- a/pkgs/tools/misc/pv/default.nix
+++ b/pkgs/tools/misc/pv/default.nix
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
     homepage = http://www.ivarch.com/programs/pv;
     description = "Tool for monitoring the progress of data through a pipeline";
     license = stdenv.lib.licenses.artistic2;
-    maintainers = with stdenv.lib.maintainers; [viric];
+    maintainers = with stdenv.lib.maintainers; [ viric jgeerds ];
     platforms = with stdenv.lib.platforms; all;
   };
 }
diff --git a/pkgs/tools/misc/qjoypad/default.nix b/pkgs/tools/misc/qjoypad/default.nix
index a3a34d95fb5b3..663c60d28569b 100644
--- a/pkgs/tools/misc/qjoypad/default.nix
+++ b/pkgs/tools/misc/qjoypad/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
       experience just a little bit nicer.
     '';
     homepage = http://qjoypad.sourceforge.net;
-    license = with stdenv.lib.licenses; gpl2;
+    license = stdenv.lib.licenses.gpl2;
     maintainers = with stdenv.lib.maintainers; [ astsmtl ];
     platforms = with stdenv.lib.platforms; linux;
   };
diff --git a/pkgs/tools/misc/remind/default.nix b/pkgs/tools/misc/remind/default.nix
index 18137312a3d1d..11d6991b89cb8 100644
--- a/pkgs/tools/misc/remind/default.nix
+++ b/pkgs/tools/misc/remind/default.nix
@@ -1,10 +1,10 @@
 {stdenv, fetchurl} :
 
 stdenv.mkDerivation {
-  name = "remind-3.1.13";
+  name = "remind-3.1.15";
   src = fetchurl {
-    url = http://www.roaringpenguin.com/files/download/remind-03.01.13.tar.gz;
-    sha256 = "0kzw1d53nlj90qfsibbs2gkzp1hamqqxpj57ip4kz1j1xgan69ng";
+    url = http://www.roaringpenguin.com/files/download/remind-03.01.15.tar.gz;
+    sha256 = "1hcfcxz5fjzl7606prlb7dgls5kr8z3wb51h48s6qm8ang0b9nla";
   };
 
   meta = {
diff --git a/pkgs/tools/misc/riemann-c-client/default.nix b/pkgs/tools/misc/riemann-c-client/default.nix
index efdc21ad9b79a..5dde592aade20 100644
--- a/pkgs/tools/misc/riemann-c-client/default.nix
+++ b/pkgs/tools/misc/riemann-c-client/default.nix
@@ -1,13 +1,16 @@
-{ stdenv, fetchurl, autoconf, automake, libtool, pkgconfig, file, protobufc }:
+{ stdenv, fetchFromGitHub, autoconf, automake, libtool, pkgconfig, file
+, protobufc }:
 
 stdenv.mkDerivation rec {
   name = "riemann-c-client-${version}";
 
-  version = "1.2.1";
+  version = "1.7.0";
 
-  src = fetchurl {
-    url = "https://github.com/algernon/riemann-c-client/archive/${name}.tar.gz";
-    sha256 = "132yd1m523inmv17sd48xf7xdqb7jj36v7is1xw7w9nny6qxkzwm";
+  src = fetchFromGitHub {
+    owner = "algernon";
+    repo = "riemann-c-client";
+    rev = "54f4a656793d6c5ca0bf1ff2388693fb6b2b82a7";
+    sha256 = "0jc2bbw7sp2gr4cswx78srs0p1kp81prcarq4ivqpfw4bmzg6xg4";
   };
 
   buildInputs = [ autoconf automake libtool pkgconfig file protobufc ];
@@ -15,7 +18,7 @@ stdenv.mkDerivation rec {
   preConfigure = "autoreconf -i";
 
   meta = with stdenv.lib; {
-    homepage = "https://github.com/algernon/riemann-c-client";
+    homepage = https://github.com/algernon/riemann-c-client;
     description = "A C client library for the Riemann monitoring system";
     license = licenses.gpl3;
     maintainers = [ maintainers.rickynils ];
diff --git a/pkgs/tools/misc/riemann-tools/Gemfile b/pkgs/tools/misc/riemann-tools/Gemfile
new file mode 100644
index 0000000000000..3d56cd85c617b
--- /dev/null
+++ b/pkgs/tools/misc/riemann-tools/Gemfile
@@ -0,0 +1,3 @@
+source 'https://rubygems.org'
+
+gem "riemann-tools", "0.2.6"
diff --git a/pkgs/tools/misc/riemann-tools/Gemfile.lock b/pkgs/tools/misc/riemann-tools/Gemfile.lock
new file mode 100644
index 0000000000000..58c12fd515161
--- /dev/null
+++ b/pkgs/tools/misc/riemann-tools/Gemfile.lock
@@ -0,0 +1,142 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    CFPropertyList (2.3.1)
+    beefcake (1.1.0)
+    builder (3.2.2)
+    excon (0.45.3)
+    faraday (0.9.1)
+      multipart-post (>= 1.2, < 3)
+    fission (0.5.0)
+      CFPropertyList (~> 2.2)
+    fog (1.31.0)
+      fog-atmos
+      fog-aws (~> 0.0)
+      fog-brightbox (~> 0.4)
+      fog-core (~> 1.30)
+      fog-ecloud
+      fog-google (>= 0.0.2)
+      fog-json
+      fog-local
+      fog-powerdns (>= 0.1.1)
+      fog-profitbricks
+      fog-radosgw (>= 0.0.2)
+      fog-riakcs
+      fog-sakuracloud (>= 0.0.4)
+      fog-serverlove
+      fog-softlayer
+      fog-storm_on_demand
+      fog-terremark
+      fog-vmfusion
+      fog-voxel
+      fog-xml (~> 0.1.1)
+      ipaddress (~> 0.5)
+      nokogiri (~> 1.5, >= 1.5.11)
+    fog-atmos (0.1.0)
+      fog-core
+      fog-xml
+    fog-aws (0.6.0)
+      fog-core (~> 1.27)
+      fog-json (~> 1.0)
+      fog-xml (~> 0.1)
+      ipaddress (~> 0.8)
+    fog-brightbox (0.7.2)
+      fog-core (~> 1.22)
+      fog-json
+      inflecto (~> 0.0.2)
+    fog-core (1.31.1)
+      builder
+      excon (~> 0.45)
+      formatador (~> 0.2)
+      mime-types
+      net-scp (~> 1.1)
+      net-ssh (>= 2.1.3)
+    fog-ecloud (0.3.0)
+      fog-core
+      fog-xml
+    fog-google (0.0.6)
+      fog-core
+      fog-json
+      fog-xml
+    fog-json (1.0.2)
+      fog-core (~> 1.0)
+      multi_json (~> 1.10)
+    fog-local (0.2.1)
+      fog-core (~> 1.27)
+    fog-powerdns (0.1.1)
+      fog-core (~> 1.27)
+      fog-json (~> 1.0)
+      fog-xml (~> 0.1)
+    fog-profitbricks (0.0.3)
+      fog-core
+      fog-xml
+      nokogiri
+    fog-radosgw (0.0.4)
+      fog-core (>= 1.21.0)
+      fog-json
+      fog-xml (>= 0.0.1)
+    fog-riakcs (0.1.0)
+      fog-core
+      fog-json
+      fog-xml
+    fog-sakuracloud (1.0.1)
+      fog-core
+      fog-json
+    fog-serverlove (0.1.2)
+      fog-core
+      fog-json
+    fog-softlayer (0.4.7)
+      fog-core
+      fog-json
+    fog-storm_on_demand (0.1.1)
+      fog-core
+      fog-json
+    fog-terremark (0.1.0)
+      fog-core
+      fog-xml
+    fog-vmfusion (0.1.0)
+      fission
+      fog-core
+    fog-voxel (0.1.0)
+      fog-core
+      fog-xml
+    fog-xml (0.1.2)
+      fog-core
+      nokogiri (~> 1.5, >= 1.5.11)
+    formatador (0.2.5)
+    inflecto (0.0.2)
+    ipaddress (0.8.0)
+    mime-types (2.6.1)
+    mini_portile (0.6.2)
+    mtrc (0.0.4)
+    multi_json (1.11.1)
+    multipart-post (2.0.0)
+    munin-ruby (0.2.5)
+    net-scp (1.2.1)
+      net-ssh (>= 2.6.5)
+    net-ssh (2.9.2)
+    nokogiri (1.6.6.2)
+      mini_portile (~> 0.6.0)
+    riemann-client (0.2.5)
+      beefcake (>= 0.3.5)
+      mtrc (>= 0.0.4)
+      trollop (>= 1.16.2)
+    riemann-tools (0.2.6)
+      faraday (>= 0.8.5)
+      fog (>= 1.4.0)
+      munin-ruby (>= 0.2.1)
+      nokogiri (>= 1.5.6)
+      riemann-client (>= 0.2.2)
+      trollop (>= 1.16.2)
+      yajl-ruby (>= 1.1.0)
+    trollop (2.1.2)
+    yajl-ruby (1.2.1)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  riemann-tools (= 0.2.6)
+
+BUNDLED WITH
+   1.10.2
diff --git a/pkgs/tools/misc/riemann-tools/default.nix b/pkgs/tools/misc/riemann-tools/default.nix
new file mode 100644
index 0000000000000..c518bc66984d8
--- /dev/null
+++ b/pkgs/tools/misc/riemann-tools/default.nix
@@ -0,0 +1,8 @@
+{ bundlerEnv }:
+
+bundlerEnv {
+  name = "riemann-tools-0.2.6";
+  gemfile = ./Gemfile;
+  lockfile = ./Gemfile.lock;
+  gemset = ./gemset.nix;
+}
diff --git a/pkgs/tools/misc/riemann-tools/gemset.nix b/pkgs/tools/misc/riemann-tools/gemset.nix
new file mode 100644
index 0000000000000..07818fc76bcd0
--- /dev/null
+++ b/pkgs/tools/misc/riemann-tools/gemset.nix
@@ -0,0 +1,444 @@
+{
+  "CFPropertyList" = {
+    version = "2.3.1";
+    source = {
+      type = "gem";
+      sha256 = "1wnk3gxnhfafbhgp0ic7qhzlx3lhv04v8nws2s31ii5s8135hs6k";
+    };
+  };
+  "beefcake" = {
+    version = "1.1.0";
+    source = {
+      type = "gem";
+      sha256 = "009gzy9jp81lsnxnwisinhc58cd0qljdiipj2701lzzrha5d826z";
+    };
+  };
+  "builder" = {
+    version = "3.2.2";
+    source = {
+      type = "gem";
+      sha256 = "14fii7ab8qszrvsvhz6z2z3i4dw0h41a62fjr2h1j8m41vbrmyv2";
+    };
+  };
+  "excon" = {
+    version = "0.45.3";
+    source = {
+      type = "gem";
+      sha256 = "183kfxfjjlc97w4rxkrxjw3kis4lxm65vppmvl4bkblvlw4nq94j";
+    };
+  };
+  "faraday" = {
+    version = "0.9.1";
+    source = {
+      type = "gem";
+      sha256 = "1h33znnfzxpscgpq28i9fcqijd61h61zgs3gabpdgqfa1043axsn";
+    };
+    dependencies = [
+      "multipart-post"
+    ];
+  };
+  "fission" = {
+    version = "0.5.0";
+    source = {
+      type = "gem";
+      sha256 = "09pmp1j1rr8r3pcmbn2na2ls7s1j9ijbxj99xi3a8r6v5xhjdjzh";
+    };
+    dependencies = [
+      "CFPropertyList"
+    ];
+  };
+  "fog" = {
+    version = "1.31.0";
+    source = {
+      type = "gem";
+      sha256 = "0xr8xyrrkljm2hxi420x4qr5v6wqcj8d63v0qy1g6rkb3b1yhl9i";
+    };
+    dependencies = [
+      "fog-atmos"
+      "fog-aws"
+      "fog-brightbox"
+      "fog-core"
+      "fog-ecloud"
+      "fog-google"
+      "fog-json"
+      "fog-local"
+      "fog-powerdns"
+      "fog-profitbricks"
+      "fog-radosgw"
+      "fog-riakcs"
+      "fog-sakuracloud"
+      "fog-serverlove"
+      "fog-softlayer"
+      "fog-storm_on_demand"
+      "fog-terremark"
+      "fog-vmfusion"
+      "fog-voxel"
+      "fog-xml"
+      "ipaddress"
+      "nokogiri"
+    ];
+  };
+  "fog-atmos" = {
+    version = "0.1.0";
+    source = {
+      type = "gem";
+      sha256 = "1aaxgnw9zy96gsh4h73kszypc32sx497s6bslvhfqh32q9d1y8c9";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-xml"
+    ];
+  };
+  "fog-aws" = {
+    version = "0.6.0";
+    source = {
+      type = "gem";
+      sha256 = "1m79s5ha6qq60pxqqxr9qs9fg8fwaz79sfxckidyhxdydcsjwx6z";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-json"
+      "fog-xml"
+      "ipaddress"
+    ];
+  };
+  "fog-brightbox" = {
+    version = "0.7.2";
+    source = {
+      type = "gem";
+      sha256 = "0636sqaf2w1rh4i2hxfgs24374l4ai8dgch8a7nycqhvjk2dm0aq";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-json"
+      "inflecto"
+    ];
+  };
+  "fog-core" = {
+    version = "1.31.1";
+    source = {
+      type = "gem";
+      sha256 = "1bcsy4cq7vyjmdf3h2v7q6hfj64v6phn0rfvwgj5wfza7yaxnhk7";
+    };
+    dependencies = [
+      "builder"
+      "excon"
+      "formatador"
+      "mime-types"
+      "net-scp"
+      "net-ssh"
+    ];
+  };
+  "fog-ecloud" = {
+    version = "0.3.0";
+    source = {
+      type = "gem";
+      sha256 = "18rb4qjad9xwwqvvpj8r2h0hi9svy71pm4d3fc28cdcnfarmdi06";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-xml"
+    ];
+  };
+  "fog-google" = {
+    version = "0.0.6";
+    source = {
+      type = "gem";
+      sha256 = "1g3ykk239nxpdsr5anhprkp8vzk106gi4q6aqjh4z8q4bii0dflm";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-json"
+      "fog-xml"
+    ];
+  };
+  "fog-json" = {
+    version = "1.0.2";
+    source = {
+      type = "gem";
+      sha256 = "0advkkdjajkym77r3c0bg2rlahl2akj0vl4p5r273k2qmi16n00r";
+    };
+    dependencies = [
+      "fog-core"
+      "multi_json"
+    ];
+  };
+  "fog-local" = {
+    version = "0.2.1";
+    source = {
+      type = "gem";
+      sha256 = "0i5hxwzmc2ag3z9nlligsaf679kp2pz39cd8n2s9cmxaamnlh2s3";
+    };
+    dependencies = [
+      "fog-core"
+    ];
+  };
+  "fog-powerdns" = {
+    version = "0.1.1";
+    source = {
+      type = "gem";
+      sha256 = "08zavzwfkk344gz83phz4sy9nsjznsdjsmn1ifp6ja17bvydlhh7";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-json"
+      "fog-xml"
+    ];
+  };
+  "fog-profitbricks" = {
+    version = "0.0.3";
+    source = {
+      type = "gem";
+      sha256 = "01a3ylfkjkyagf4b4xg9x2v20pzapr3ivn9ydd92v402bjsm1nmr";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-xml"
+      "nokogiri"
+    ];
+  };
+  "fog-radosgw" = {
+    version = "0.0.4";
+    source = {
+      type = "gem";
+      sha256 = "1pxbvmr4dsqx4x2klwnciyhki4r5ryr9y0hi6xmm3n6fdv4ii7k3";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-json"
+      "fog-xml"
+    ];
+  };
+  "fog-riakcs" = {
+    version = "0.1.0";
+    source = {
+      type = "gem";
+      sha256 = "1nbxc4dky3agfwrmgm1aqmi59p6vnvfnfbhhg7xpg4c2cf41whxm";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-json"
+      "fog-xml"
+    ];
+  };
+  "fog-sakuracloud" = {
+    version = "1.0.1";
+    source = {
+      type = "gem";
+      sha256 = "1s16b48kh7y03hjv74ccmlfwhqqq7j7m4k6cywrgbyip8n3258n8";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-json"
+    ];
+  };
+  "fog-serverlove" = {
+    version = "0.1.2";
+    source = {
+      type = "gem";
+      sha256 = "0hxgmwzygrw25rbsy05i6nzsyr0xl7xj5j2sjpkb9n9wli5sagci";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-json"
+    ];
+  };
+  "fog-softlayer" = {
+    version = "0.4.7";
+    source = {
+      type = "gem";
+      sha256 = "0fgfbhqnyp8ywymvflflhvbns54d1432x57pgpnfy8k1cxvhv9b8";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-json"
+    ];
+  };
+  "fog-storm_on_demand" = {
+    version = "0.1.1";
+    source = {
+      type = "gem";
+      sha256 = "0fif1x8ci095b2yyilf65n7x6iyvn448azrsnmwsdkriy8vxxv3y";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-json"
+    ];
+  };
+  "fog-terremark" = {
+    version = "0.1.0";
+    source = {
+      type = "gem";
+      sha256 = "01lfkh9jppj0iknlklmwyb7ym3bfhkq58m3absb6rf5a5mcwi3lf";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-xml"
+    ];
+  };
+  "fog-vmfusion" = {
+    version = "0.1.0";
+    source = {
+      type = "gem";
+      sha256 = "0g0l0k9ylxk1h9pzqr6h2ba98fl47lpp3j19lqv4jxw0iw1rqxn4";
+    };
+    dependencies = [
+      "fission"
+      "fog-core"
+    ];
+  };
+  "fog-voxel" = {
+    version = "0.1.0";
+    source = {
+      type = "gem";
+      sha256 = "10skdnj59yf4jpvq769njjrvh2l0wzaa7liva8n78qq003mvmfgx";
+    };
+    dependencies = [
+      "fog-core"
+      "fog-xml"
+    ];
+  };
+  "fog-xml" = {
+    version = "0.1.2";
+    source = {
+      type = "gem";
+      sha256 = "1576sbzza47z48p0k9h1wg3rhgcvcvdd1dfz3xx1cgahwr564fqa";
+    };
+    dependencies = [
+      "fog-core"
+      "nokogiri"
+    ];
+  };
+  "formatador" = {
+    version = "0.2.5";
+    source = {
+      type = "gem";
+      sha256 = "1gc26phrwlmlqrmz4bagq1wd5b7g64avpx0ghxr9xdxcvmlii0l0";
+    };
+  };
+  "inflecto" = {
+    version = "0.0.2";
+    source = {
+      type = "gem";
+      sha256 = "085l5axmvqw59mw5jg454a3m3gr67ckq9405a075isdsn7bm3sp4";
+    };
+  };
+  "ipaddress" = {
+    version = "0.8.0";
+    source = {
+      type = "gem";
+      sha256 = "0cwy4pyd9nl2y2apazp3hvi12gccj5a3ify8mi8k3knvxi5wk2ir";
+    };
+  };
+  "mime-types" = {
+    version = "2.6.1";
+    source = {
+      type = "gem";
+      sha256 = "1vnrvf245ijfyxzjbj9dr6i1hkjbyrh4yj88865wv9bs75axc5jv";
+    };
+  };
+  "mini_portile" = {
+    version = "0.6.2";
+    source = {
+      type = "gem";
+      sha256 = "0h3xinmacscrnkczq44s6pnhrp4nqma7k056x5wv5xixvf2wsq2w";
+    };
+  };
+  "mtrc" = {
+    version = "0.0.4";
+    source = {
+      type = "gem";
+      sha256 = "0xj2pv4cpn0ad1xw38sinsxfzwhgqs6ff18hw0cwz5xmsf3zqmiz";
+    };
+  };
+  "multi_json" = {
+    version = "1.11.1";
+    source = {
+      type = "gem";
+      sha256 = "0lrmadw2scqwz7nw3j5pfdnmzqimlbaxlxi37xsydrpbbr78qf6g";
+    };
+  };
+  "multipart-post" = {
+    version = "2.0.0";
+    source = {
+      type = "gem";
+      sha256 = "09k0b3cybqilk1gwrwwain95rdypixb2q9w65gd44gfzsd84xi1x";
+    };
+  };
+  "munin-ruby" = {
+    version = "0.2.5";
+    source = {
+      type = "gem";
+      sha256 = "0378jyf0hdbfs2vvk7v8k7hqilzi1rfkpn271dyrqqal7g2lnjl2";
+    };
+  };
+  "net-scp" = {
+    version = "1.2.1";
+    source = {
+      type = "gem";
+      sha256 = "0b0jqrcsp4bbi4n4mzyf70cp2ysyp6x07j8k8cqgxnvb4i3a134j";
+    };
+    dependencies = [
+      "net-ssh"
+    ];
+  };
+  "net-ssh" = {
+    version = "2.9.2";
+    source = {
+      type = "gem";
+      sha256 = "1p0bj41zrmw5lhnxlm1pqb55zfz9y4p9fkrr9a79nrdmzrk1ph8r";
+    };
+  };
+  "nokogiri" = {
+    version = "1.6.6.2";
+    source = {
+      type = "gem";
+      sha256 = "1j4qv32qjh67dcrc1yy1h8sqjnny8siyy4s44awla8d6jk361h30";
+    };
+    dependencies = [
+      "mini_portile"
+    ];
+  };
+  "riemann-client" = {
+    version = "0.2.5";
+    source = {
+      type = "gem";
+      sha256 = "1myhyh31f290jm1wlhhjvf331n5l8qdm7axkxyacdgjsfg4szsjc";
+    };
+    dependencies = [
+      "beefcake"
+      "mtrc"
+      "trollop"
+    ];
+  };
+  "riemann-tools" = {
+    version = "0.2.6";
+    source = {
+      type = "gem";
+      sha256 = "0qjm7p55h70l5bs876hhvz3isr204663f97py9g0ajxz2z8jkzpi";
+    };
+    dependencies = [
+      "faraday"
+      "fog"
+      "munin-ruby"
+      "nokogiri"
+      "riemann-client"
+      "trollop"
+      "yajl-ruby"
+    ];
+  };
+  "trollop" = {
+    version = "2.1.2";
+    source = {
+      type = "gem";
+      sha256 = "0415y63df86sqj43c0l82and65ia5h64if7n0znkbrmi6y0jwhl8";
+    };
+  };
+  "yajl-ruby" = {
+    version = "1.2.1";
+    source = {
+      type = "gem";
+      sha256 = "0zvvb7i1bl98k3zkdrnx9vasq0rp2cyy5n7p9804dqs4fz9xh9vf";
+    };
+  };
+}
\ No newline at end of file
diff --git a/pkgs/tools/misc/rmlint/default.nix b/pkgs/tools/misc/rmlint/default.nix
index aed93775ce98a..392734e2256df 100644
--- a/pkgs/tools/misc/rmlint/default.nix
+++ b/pkgs/tools/misc/rmlint/default.nix
@@ -4,15 +4,13 @@
 with stdenv.lib;
 stdenv.mkDerivation rec {
   name = "rmlint-${version}";
-  version = "2.0.0";
+  version = "2.2.0";
 
   src = fetchurl {
     url = "https://github.com/sahib/rmlint/archive/v${version}.tar.gz";
-    sha256 = "14jiswagipsmzxclcskn672ws4126p65l6hlzkkvanyv8gmpv90f";
+    sha256 = "1wg6br30ccvxl2189a75lb3d03kg8spfkkp9qlf3whl0xirsm15n";
   };
 
-  patches = [ ./fix-scons.patch ];
-
   configurePhase = "scons config";
 
   buildInputs = [ gettext glib json_glib libelf pkgconfig scons sphinx utillinux ];
diff --git a/pkgs/tools/misc/rmlint/fix-scons.patch b/pkgs/tools/misc/rmlint/fix-scons.patch
deleted file mode 100644
index 4d7d832f13d7f..0000000000000
--- a/pkgs/tools/misc/rmlint/fix-scons.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git b/SConstruct a/SConstruct
-old mode 100644
-new mode 100755
-index a7fca2e..561007e
---- b/SConstruct
-+++ a/SConstruct
-@@ -404,11 +404,10 @@ options = dict(
-     SHLINKCOMSTR=link_shared_library_message,
-     LINKCOMSTR=link_program_message,
-     PREFIX=GetOption('prefix'),
--    ENV={
--        'PATH': os.environ['PATH'],
--        'TERM': os.environ['TERM'],
--        'HOME': os.environ['HOME']
--    }
-+    ENV = dict([ (key, os.environ[key])
-+                 for key in os.environ
-+                 if key in ['PATH', 'TERM', 'HOME', 'PKG_CONFIG_PATH']
-+              ])
- )
- 
- if ARGUMENTS.get('VERBOSE') == "1":
diff --git a/pkgs/tools/misc/rockbox-utility/default.nix b/pkgs/tools/misc/rockbox-utility/default.nix
index eac12bae381e1..c9c0cf6949f8b 100644
--- a/pkgs/tools/misc/rockbox-utility/default.nix
+++ b/pkgs/tools/misc/rockbox-utility/default.nix
@@ -26,6 +26,6 @@ stdenv.mkDerivation  rec {
     homepage = http://www.rockbox.org;
     license = licenses.gpl2;
     platforms = platforms.linux;
-    maintainers = [ maintainers.goibhniu ];
+    maintainers = with maintainers; [ goibhniu jgeerds ];
   };
 }
diff --git a/pkgs/tools/misc/rrdtool/default.nix b/pkgs/tools/misc/rrdtool/default.nix
index 53c1b0de24e20..6e2ba20875dba 100644
--- a/pkgs/tools/misc/rrdtool/default.nix
+++ b/pkgs/tools/misc/rrdtool/default.nix
@@ -1,10 +1,10 @@
 { fetchurl, stdenv, gettext, perl, pkgconfig, libxml2, pango, cairo, groff }:
 
 stdenv.mkDerivation rec {
-  name = "rrdtool-1.4.9";
+  name = "rrdtool-1.5.4";
   src = fetchurl {
     url = "http://oss.oetiker.ch/rrdtool/pub/${name}.tar.gz";
-    sha256 = "1k1506v86nijd9vdljib93z4hrwj786kqnx37lqqbbqasvh2ca1y";
+    sha256 = "169zbidc5h88w064qmj6x5rzczkrrfrcgwc3f2i2h8f0hzda7viz";
   };
   buildInputs = [ gettext perl pkgconfig libxml2 pango cairo groff ];
   
diff --git a/pkgs/tools/misc/s6-portable-utils/default.nix b/pkgs/tools/misc/s6-portable-utils/default.nix
index 9aaf928b7b076..0ca0774989de3 100644
--- a/pkgs/tools/misc/s6-portable-utils/default.nix
+++ b/pkgs/tools/misc/s6-portable-utils/default.nix
@@ -2,7 +2,7 @@
 
 let
 
-  version = "2.0.4.0";
+  version = "2.0.5.2";
 
 in stdenv.mkDerivation rec {
 
@@ -10,7 +10,7 @@ in stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "http://www.skarnet.org/software/s6-portable-utils/${name}.tar.gz";
-    sha256 = "0gl4v6hslqkxdfxj3qzi1xpiiw52ic8y8l9nkl2z5gp893qb6yvx";
+    sha256 = "0d5dvqz61abr4m2n10by8hccvw51jdvyckvpbbq0c57viri54jzm";
   };
 
   dontDisableStatic = true;
@@ -27,6 +27,7 @@ in stdenv.mkDerivation rec {
     description = "A set of tiny general Unix utilities optimized for simplicity and small size";
     platforms = stdenv.lib.platforms.all;
     license = stdenv.lib.licenses.isc;
+    maintainers = with stdenv.lib.maintainers; [ pmahoney ];
   };
 
 }
diff --git a/pkgs/tools/misc/scanmem/default.nix b/pkgs/tools/misc/scanmem/default.nix
new file mode 100644
index 0000000000000..e21da0deca2d2
--- /dev/null
+++ b/pkgs/tools/misc/scanmem/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, autoconf, automake, intltool, libtool, fetchFromGitHub, readline }:
+
+stdenv.mkDerivation rec {
+  version = "0.15.2";
+  name = "scanmem-${version}";
+  src = fetchFromGitHub {
+    owner  = "scanmem";
+    repo   = "scanmem";
+    rev    = "v${version}";
+    sha256 = "0f93ac5rycf46q60flab5nl7ksadjls13axijg5j5wy1yif0k094";
+  };
+  buildInputs = [ autoconf automake intltool libtool readline ];
+  preConfigure = ''
+    ./autogen.sh
+  '';
+  meta = {
+    homepage = "https://github.com/scanmem/scanmem";
+    description = "Memory scanner for finding and poking addresses in executing processes";
+    maintainers = [ stdenv.lib.maintainers.chattered  ];
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.gpl3;
+  };
+}
diff --git a/pkgs/tools/misc/screen/default.nix b/pkgs/tools/misc/screen/default.nix
index d4377c14fad4f..1fe71ae96160d 100644
--- a/pkgs/tools/misc/screen/default.nix
+++ b/pkgs/tools/misc/screen/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, ncurses, pam ? null }:
 
 stdenv.mkDerivation rec {
-  name = "screen-4.2.1";
+  name = "screen-4.3.1";
 
   src = fetchurl {
     url = "mirror://gnu/screen/${name}.tar.gz";
-    sha256 = "105hp6qdd8rl71p81klmxiz4mlb60kh9r7czayrx40g38x858s2l";
+    sha256 = "0qwxd4axkgvxjigz9xs0kcv6qpfkrzr2gm43w9idx0z2mvw4jh7s";
   };
 
   preConfigure = ''
@@ -45,6 +45,6 @@ stdenv.mkDerivation rec {
       '';
 
     platforms = stdenv.lib.platforms.unix;
-    maintainers = [ stdenv.lib.maintainers.simons ];
+    maintainers = with stdenv.lib.maintainers; [ simons jgeerds ];
   };
 }
diff --git a/pkgs/tools/misc/screenfetch/default.nix b/pkgs/tools/misc/screenfetch/default.nix
index 442922b780545..92cc800d83d39 100644
--- a/pkgs/tools/misc/screenfetch/default.nix
+++ b/pkgs/tools/misc/screenfetch/default.nix
@@ -1,21 +1,34 @@
-{ stdenv, fetchgit, xdpyinfo, xprop }:
+{ stdenv, fetchgit, makeWrapper
+, coreutils, gawk, procps, gnused, findutils, xdpyinfo, xprop, gnugrep
+}:
 
-let
-  version = "3.6.2";
-in
 stdenv.mkDerivation {
-  name = "screenFetch-${version}";
-  pname = "screenfetch";
+  name = "screenFetch-2015-04-20";
 
   src = fetchgit {
     url = git://github.com/KittyKatt/screenFetch.git;
-    rev = "dec1cd6c2471defe4459967fbc8ae15b55714338";
-    sha256 = "138a7g0za5dq27jx7x8gqg7gjkgyq0017v0nbcg68ys7dqlxsdl3";
+    rev = "53e1c0cccacf648e846057938a68dda914f532a1";
+    sha256 = "1wyvy1sn7vnclwrzd32jqlq6iirjkhp2ak55brhkpp9rj1qxk3q6";
   };
 
+  nativeBuildInputs = [ makeWrapper ];
+
   installPhase = ''
-    install -Dm 0755 $pname-dev $out/bin/$pname
-    install -Dm 0644 $pname.1 $out/man/man1/$pname.1
+    install -Dm 0755 screenfetch-dev $out/bin/screenfetch
+    install -Dm 0644 screenfetch.1 $out/man/man1/screenfetch.1
+
+    # Fix all of the depedencies of screenfetch
+    patchShebangs $out/bin/screenfetch
+    wrapProgram "$out/bin/screenfetch" \
+      --set PATH : "" \
+      --prefix PATH : "${coreutils}/bin" \
+      --prefix PATH : "${gawk}/bin" \
+      --prefix PATH : "${procps}/bin" \
+      --prefix PATH : "${gnused}/bin" \
+      --prefix PATH : "${findutils}/bin" \
+      --prefix PATH : "${xdpyinfo}/bin" \
+      --prefix PATH : "${xprop}/bin" \
+      --prefix PATH : "${gnugrep}/bin"
   '';
 
   meta = {
diff --git a/pkgs/tools/misc/sdl-jstest/default.nix b/pkgs/tools/misc/sdl-jstest/default.nix
new file mode 100644
index 0000000000000..cf62039fc036d
--- /dev/null
+++ b/pkgs/tools/misc/sdl-jstest/default.nix
@@ -0,0 +1,21 @@
+{ fetchgit, stdenv, cmake, pkgconfig, SDL, SDL2, ncurses, docbook_xsl }:
+
+stdenv.mkDerivation rec {
+  name = "sdl-jstest-20150625";
+  src = fetchgit {
+    url = "https://github.com/Grumbel/sdl-jstest";
+    rev = "3f54b86ebe0d2f95e9c1d034bc4ed02d6d2b6409";
+    sha256 = "d33e0a2c66b551ecf333590f1a6e1730093af31cee1be8757748624d42e14df1";
+  };
+
+  buildInputs = [ SDL SDL2 ncurses ];
+  nativeBuildInputs = [ cmake pkgconfig docbook_xsl ];
+  
+  meta = with stdenv.lib; {
+    homepage = https://github.com/Grumbel/sdl-jstest;
+    description = "Simple SDL joystick test application for the console";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/pkgs/tools/misc/sl/default.nix b/pkgs/tools/misc/sl/default.nix
index f5bc2edf3caa0..d21143f56e23e 100644
--- a/pkgs/tools/misc/sl/default.nix
+++ b/pkgs/tools/misc/sl/default.nix
@@ -1,22 +1,22 @@
-{ stdenv, fetchurl, ncurses }:
+{ stdenv, fetchFromGitHub, ncurses }:
 
-stdenv.mkDerivation {
-  name = "sl-3.03";
+stdenv.mkDerivation rec {
+  name = "sl-${version}";
+  version = "5.02";
 
-  src = fetchurl {
-    url = "http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/sl/sl.tar";
-    sha256 = "1x3517aza0wm9hhb02npl8s7xy947cdidxmans27q0gjmj3bvg5j";
+  src = fetchFromGitHub {
+    owner = "mtoyoda";
+    repo = "sl";
+    rev = version;
+    sha256 = "1zrfd71zx2px2xpapg45s8xvi81xii63yl0h60q72j71zh4sif8b";
   };
 
-  patchPhase = ''
-    sed -i "s/-lcurses -ltermcap/-lncurses/" Makefile
-  '';
-
   buildInputs = [ ncurses ];
 
   installPhase = ''
-    mkdir -p $out/bin
+    mkdir -p $out/bin $out/share/man/man1
     cp sl $out/bin
+    cp sl.1 $out/share/man/man1
   '';
 
   meta = {
diff --git a/pkgs/tools/misc/slop/default.nix b/pkgs/tools/misc/slop/default.nix
new file mode 100644
index 0000000000000..800fad3b564ef
--- /dev/null
+++ b/pkgs/tools/misc/slop/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, cmake, gengetopt, libX11, libXext, cppcheck}:
+
+stdenv.mkDerivation rec {
+  name = "slop-${version}";
+  version = "4.1.16";
+
+  src = fetchurl {
+    url = "https://github.com/naelstrof/slop/archive/v${version}.tar.gz";
+    sha256 = "0679ax0jr97x91hmp9qrspdka8cvl3xa77z92k4qgicbnb6hr7y2";
+  };
+
+  buildInputs = [ cmake gengetopt libX11 libXext ]
+                ++ stdenv.lib.optional doCheck cppcheck;
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/naelstrof/slop;
+    description = "Queries a selection from the user and prints to stdout";
+    platforms = stdenv.lib.platforms.all;
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = with maintainers; [ mbakke ];
+  };
+}
diff --git a/pkgs/tools/misc/stow/default.nix b/pkgs/tools/misc/stow/default.nix
index a6afe475e3bd1..6eddcf89b914e 100644
--- a/pkgs/tools/misc/stow/default.nix
+++ b/pkgs/tools/misc/stow/default.nix
@@ -10,6 +10,8 @@ stdenv.mkDerivation {
 
   buildInputs = [ perl perlPackages.TestOutput ];
 
+  patches = [ ./precedence-issue.patch ];
+
   doCheck = true;
 
   meta = {
@@ -28,7 +30,7 @@ stdenv.mkDerivation {
     license = stdenv.lib.licenses.gpl3Plus;
     homepage = http://www.gnu.org/software/stow/;
 
-    maintainers = with stdenv.lib.maintainers; [ the-kenny ];
+    maintainers = with stdenv.lib.maintainers; [ the-kenny jgeerds ];
     platforms = stdenv.lib.platforms.all;
   };
 }
diff --git a/pkgs/tools/misc/stow/precedence-issue.patch b/pkgs/tools/misc/stow/precedence-issue.patch
new file mode 100644
index 0000000000000..d9542573bac76
--- /dev/null
+++ b/pkgs/tools/misc/stow/precedence-issue.patch
@@ -0,0 +1,15 @@
+diff --git a/lib/Stow.pm.in b/lib/Stow.pm.in
+index 101a422..f80b1ac 100755
+--- a/lib/Stow.pm.in
++++ b/lib/Stow.pm.in
+@@ -1732,8 +1732,8 @@ sub read_a_link {
+     }
+     elsif (-l $path) {
+         debug(4, "  read_a_link($path): real link");
+-        return readlink $path
+-            or error("Could not read link: $path");
++        my $target = readlink $path or error("Could not read link: $path ($!)");
++        return $target;
+     }
+     internal_error("read_a_link() passed a non link path: $path\n");
+ }
diff --git a/pkgs/tools/misc/svtplay-dl/default.nix b/pkgs/tools/misc/svtplay-dl/default.nix
index a30f0277ec0ec..e29556faad480 100644
--- a/pkgs/tools/misc/svtplay-dl/default.nix
+++ b/pkgs/tools/misc/svtplay-dl/default.nix
@@ -1,16 +1,18 @@
-{ stdenv, fetchurl, makeWrapper, python, perl, zip
-, rtmpdump, nose, mock, pycrypto, substituteAll }:
+{ stdenv, fetchFromGitHub, makeWrapper, python, perl, zip
+, rtmpdump, nose, mock, pycrypto, requests2, substituteAll }:
 
 stdenv.mkDerivation rec {
   name = "svtplay-dl-${version}";
-  version = "0.10.2015.03.25";
+  version = "0.20.2015.09.13";
 
-  src = fetchurl {
-    url = "https://github.com/spaam/svtplay-dl/archive/${version}.tar.gz";
-    sha256 = "0j0fg3qrldpaf880v488rr2snw6ghpdln4l9mbvmi70rjzzxv4ap";
+  src = fetchFromGitHub {
+    owner = "spaam";
+    repo = "svtplay-dl";
+    rev = version;
+    sha256 = "07wcjwc6kk0z8s7i3sc2n7zbbkbc2wwiclf3n0h5yk54marixql0";
   };
 
-  pythonPaths = [ pycrypto ];
+  pythonPaths = [ pycrypto requests2 ];
   buildInputs = [ python perl nose mock rtmpdump makeWrapper ] ++ pythonPaths;
   nativeBuildInputs = [ zip ];
 
diff --git a/pkgs/tools/misc/t/default.nix b/pkgs/tools/misc/t/default.nix
index fd64f6694ee53..ad9e0949ce87f 100644
--- a/pkgs/tools/misc/t/default.nix
+++ b/pkgs/tools/misc/t/default.nix
@@ -11,7 +11,7 @@ bundlerEnv {
   meta = with lib; {
     description = "A command-line power tool for Twitter";
     homepage    = http://sferik.github.io/t/;
-    license     = with licenses; asl20;
+    license     = licenses.asl20;
     maintainers = with maintainers; [ offline ];
     platforms   = platforms.unix;
   };
diff --git a/pkgs/tools/misc/t1utils/default.nix b/pkgs/tools/misc/t1utils/default.nix
index 5e473a5cd0931..c00db07ed1f47 100644
--- a/pkgs/tools/misc/t1utils/default.nix
+++ b/pkgs/tools/misc/t1utils/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "t1utils-1.38";
+  name = "t1utils-1.39";
 
   src = fetchurl {
     url = "http://www.lcdf.org/type/${name}.tar.gz";
-    sha256 = "1pnxpjabjyzfjrp319wsq4acxw99c8nnsaalbz7nwamj8kkim7zw";
+    sha256 = "1i6ln194ns2g4j5zjlj4bfzxpkfpnxvy37n9baq3hywjqkjz7bhg";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/tools/misc/timidity/default.nix b/pkgs/tools/misc/timidity/default.nix
index 664647514aa19..5655e27dc2e64 100644
--- a/pkgs/tools/misc/timidity/default.nix
+++ b/pkgs/tools/misc/timidity/default.nix
@@ -1,4 +1,4 @@
-{ composableDerivation, stdenv, fetchurl, alsaLib, jack2, ncurses }:
+{ composableDerivation, stdenv, fetchurl, alsaLib, libjack2, ncurses }:
 
 let inherit (composableDerivation) edf; in
 
@@ -30,8 +30,8 @@ composableDerivation.composableDerivation {} {
     };
     jack = {
       audioModes = "jack";
-      buildInputs = [jack2];
-      NIX_LDFLAGS = ["-ljack -L${jack2}/lib64"];
+      buildInputs = [libjack2];
+      NIX_LDFLAGS = ["-ljack -L${libjack2}/lib"];
     };
   } // edf { name = "ncurses"; enable = { buildInputs = [ncurses]; };};
 
diff --git a/pkgs/tools/misc/tlp/default.nix b/pkgs/tools/misc/tlp/default.nix
index 4d3de16434b4a..1e90ecfee3286 100644
--- a/pkgs/tools/misc/tlp/default.nix
+++ b/pkgs/tools/misc/tlp/default.nix
@@ -51,6 +51,10 @@ in stdenv.mkDerivation {
     for i in $out/lib/udev/rules.d/*; do
       sed -i "s,RUN+=\",\\0$out,g; s,/usr/sbin,/bin,g" "$i"
     done
+
+    for i in man/*; do
+      install -D $i $out/share/man/man''${i##*.}/$(basename $i)
+    done
   '';
 
   passthru = { inherit enableRDW; };
diff --git a/pkgs/tools/misc/tmate/default.nix b/pkgs/tools/misc/tmate/default.nix
new file mode 100644
index 0000000000000..5fbb394311557
--- /dev/null
+++ b/pkgs/tools/misc/tmate/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, autoconf, automake110x, libtool, pkgconfig, zlib, openssl, libevent, ncurses, cmake, ruby }:
+
+stdenv.mkDerivation rec {
+  name = "tmate-${version}";
+  version = "1.8.10";
+
+  src = fetchFromGitHub {
+    owner  = "nviennot";
+    repo   = "tmate";
+    rev    = version;
+    sha256 = "1bd9mi8fx40608zlady9dbv21kbdwc3kqrgz012m529f6cbysmzc";
+  };
+
+  buildInputs = [ autoconf automake110x pkgconfig libtool zlib openssl libevent ncurses cmake ruby ];
+
+  dontUseCmakeConfigure=true;
+
+  preConfigure = "./autogen.sh";
+
+  meta = {
+    homepage = http://tmate.io/;
+    description = "Instant Terminal Sharing";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = with stdenv.lib.maintainers; [ DamienCassou ];
+  };
+}
diff --git a/pkgs/tools/misc/tmux/default.nix b/pkgs/tools/misc/tmux/default.nix
index 7180665bd3d5a..6cc54536eb190 100644
--- a/pkgs/tools/misc/tmux/default.nix
+++ b/pkgs/tools/misc/tmux/default.nix
@@ -1,27 +1,30 @@
-{stdenv, fetchurl, ncurses, libevent, pkgconfig}:
+{ stdenv, fetchurl, ncurses, libevent, pkgconfig }:
 
 stdenv.mkDerivation rec {
-  pname = "tmux";
-  version = "1.9a";
-  name = "${pname}-${version}";
+  name = "tmux-${version}";
+  version = "2.0";
 
   src = fetchurl {
-    url = "mirror://sourceforge/${pname}/${name}.tar.gz";
-    sha256 = "1x9k4wfd4l5jg6fh7xkr3yyilizha6ka8m5b1nr0kw8wj0mv5qy5";
+    url = "https://github.com/tmux/tmux/releases/download/${version}/${name}.tar.gz";
+    sha256 = "0qnkda8kb747vmbldjpb23ksv9pq3s65xhh1ja5rdsmh8r24npvr";
   };
 
   nativeBuildInputs = [ pkgconfig ];
 
   buildInputs = [ ncurses libevent ];
 
-  postInstall =
-    ''
-      mkdir -p $out/etc/bash_completion.d
-      cp -v examples/bash_completion_tmux.sh $out/etc/bash_completion.d/tmux
-    '';
+  configureFlags = [
+    "--sysconfdir=/etc"
+    "--localstatedir=/var"
+  ];
+
+  postInstall = ''
+    mkdir -p $out/etc/bash_completion.d
+    cp -v examples/bash_completion_tmux.sh $out/etc/bash_completion.d/tmux
+  '';
 
   meta = {
-    homepage = http://tmux.sourceforge.net/;
+    homepage = http://tmux.github.io/;
     description = "Terminal multiplexer";
 
     longDescription =
@@ -41,6 +44,6 @@ stdenv.mkDerivation rec {
     license = stdenv.lib.licenses.bsd3;
 
     platforms = stdenv.lib.platforms.unix;
-    maintainers = with stdenv.lib.maintainers; [ shlevy thammers ];
+    maintainers = with stdenv.lib.maintainers; [ thammers ];
   };
 }
diff --git a/pkgs/tools/misc/tmuxinator/default.nix b/pkgs/tools/misc/tmuxinator/default.nix
index 96610c3216735..f5ac891d8e644 100644
--- a/pkgs/tools/misc/tmuxinator/default.nix
+++ b/pkgs/tools/misc/tmuxinator/default.nix
@@ -11,7 +11,7 @@ bundlerEnv {
   meta = with lib; {
     description = "Manage complex tmux sessions easily";
     homepage    = https://github.com/tmuxinator/tmuxinator;
-    license     = with licenses; mit;
+    license     = licenses.mit;
     maintainers = with maintainers; [ auntie ];
     platforms   = platforms.unix;
   };
diff --git a/pkgs/tools/misc/toilet/default.nix b/pkgs/tools/misc/toilet/default.nix
new file mode 100644
index 0000000000000..6ed479ac9c831
--- /dev/null
+++ b/pkgs/tools/misc/toilet/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, libcaca, figlet }:
+
+stdenv.mkDerivation rec {
+  name = "toilet-${version}";
+  version = "0.3";
+
+  src = fetchurl {
+    url = "http://caca.zoy.org/raw-attachment/wiki/toilet/${name}.tar.gz";
+    sha256 = "1pl118qb7g0frpgl9ps43w4sd0psjirpmq54yg1kqcclqcqbbm49";
+  };
+
+  buildInputs = [ pkgconfig libcaca ];
+
+  meta = {
+    description = "Display large colourful characters in text mode";
+    homepage = "http://caca.zoy.org/wiki/toilet";
+    license = stdenv.lib.licenses.wtfpl;
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/pkgs/tools/misc/ttylog/default.nix b/pkgs/tools/misc/ttylog/default.nix
new file mode 100644
index 0000000000000..16db6b62eb7a1
--- /dev/null
+++ b/pkgs/tools/misc/ttylog/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, cmake }:
+
+stdenv.mkDerivation rec {
+  name = "ttylog-${version}";
+  version = "0.26";
+
+  src = fetchFromGitHub {
+    owner = "rocasa";
+    repo = "ttylog";
+    rev = version;
+    sha256 = "1xvqch1dwpl2d89n9cjcxhqbpvm50fspj5yn883wbii6dpg62p84";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = with stdenv.lib; {
+    homepage = "http://ttylog.sourceforg.net";
+    description = "a serial port logger which can be used to print everything to stdout that comes from a serial device";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ wkennington ];
+  };
+}
diff --git a/pkgs/tools/misc/umlet/default.nix b/pkgs/tools/misc/umlet/default.nix
index 04f3a31aa48a7..cc51af22f8516 100644
--- a/pkgs/tools/misc/umlet/default.nix
+++ b/pkgs/tools/misc/umlet/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   major = "13";
-  minor = "2";
+  minor = "3";
   version = "${major}.${minor}";
   name = "umlet-${version}";
 
   src = fetchurl {
     url = "http://www.umlet.com/umlet_${major}_${minor}/umlet_${version}.zip";
-    sha256 = "19jngb2sr212lh3yi43bqq2skhd9cxa8yfbfc3i6fbm2v0b7i2xf";
+    sha256 = "0fbr51xknk98qz576lcl25qz0s1snns2yb0j54d77xkw7pnxmvzr";
   };
 
   buildInputs = [ unzip ];
diff --git a/pkgs/tools/misc/unclutter/default.nix b/pkgs/tools/misc/unclutter/default.nix
index d97ba727bae59..00f08ee074270 100644
--- a/pkgs/tools/misc/unclutter/default.nix
+++ b/pkgs/tools/misc/unclutter/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, x11}:
+{stdenv, fetchurl, xlibsWrapper}:
 
 stdenv.mkDerivation {
   name = "unclutter-8";
@@ -7,7 +7,7 @@ stdenv.mkDerivation {
     sha256 = "33a78949a7dedf2e8669ae7b5b2c72067896497820292c96afaa60bb71d1f2a6";
   };
 
-  buildInputs = [x11];
+  buildInputs = [xlibsWrapper];
 
   installPhase = ''
     mkdir -pv "$out/bin"
diff --git a/pkgs/tools/misc/urjtag/default.nix b/pkgs/tools/misc/urjtag/default.nix
new file mode 100644
index 0000000000000..59153e68a56ce
--- /dev/null
+++ b/pkgs/tools/misc/urjtag/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, autoconf, automake, pkgconfig, gettext, intltool, libtool, bison
+, flex, which, subversion, fetchsvn, makeWrapper, libftdi, libusb, readline
+, python3
+, svfSupport ? false
+, bsdlSupport ? false
+, staplSupport ? false
+, jedecSupport ? false
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.10";
+  name = "urjtag-${version}";
+
+  src = fetchsvn {
+    url = "svn://svn.code.sf.net/p/urjtag/svn/trunk/urjtag";
+    rev = "2051";
+    sha256 = "0pyl0y27136nr8mmjdml7zjnfnpbjmgqzkjk99j3hvj38k10wq7f";
+  };
+
+  buildInputs = [ gettext pkgconfig autoconf automake libtool bison flex which
+    subversion makeWrapper readline libftdi libusb python3 ];
+
+  configureFlags = ''
+    ${if svfSupport then "--enable-svf" else "--disable-svf"}
+    ${if bsdlSupport then "--enable-bsdl" else "--disable-bsdl"}
+    ${if staplSupport then "--enable-stapl" else "--disable-stapl"}
+    ${if jedecSupport then "--enable-jedec-exp" else "--disable-jedec-exp"}
+  '';
+
+  preConfigure = "./autogen.sh";
+
+  meta = {
+    description = "Enhanced, modern tool for communicating over JTAG with flash chips, CPUs,and many more";
+    homepage = "http://urjtag.org/";
+    license = with stdenv.lib.licenses; [ gpl2Plus lgpl21Plus ];
+    platforms = stdenv.lib.platforms.gnu;  # arbitrary choice
+    maintainers = with stdenv.lib.maintainers; [ lowfatcomputing ];
+  };
+}
+
diff --git a/pkgs/tools/misc/vdirsyncer/default.nix b/pkgs/tools/misc/vdirsyncer/default.nix
index 5312445563a6a..d07e99e266040 100644
--- a/pkgs/tools/misc/vdirsyncer/default.nix
+++ b/pkgs/tools/misc/vdirsyncer/default.nix
@@ -1,32 +1,30 @@
-{ lib, fetchurl, pythonPackages }:
+{ stdenv, fetchurl, pythonPackages }:
 
 pythonPackages.buildPythonPackage rec {
-  version = "0.4.3";
+  version = "0.6.0";
   name = "vdirsyncer-${version}";
   namePrefix = "";
 
   src = fetchurl {
-    url = "https://github.com/untitaker/vdirsyncer/archive/${version}.tar.gz";
-    sha256 = "0jrxmq8lq0dvqflmh42hhyvc3jjrg1cg3gzfhdcsskj9zz0m6wai";
+    url = "https://pypi.python.org/packages/source/v/vdirsyncer/${name}.tar.gz";
+    sha256 = "1mb0pws5vsgnmyp5dp5m5jvgl6jcvdamxjz7wmgvxkw6n1vrcahd";
   };
 
-  pythonPath = with pythonPackages; [
-    icalendar
+  propagatedBuildInputs = with pythonPackages; [
     click
-    requests
     lxml
     setuptools
+    setuptools_scm
     requests_toolbelt
     requests2
     atomicwrites
   ];
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = https://github.com/untitaker/vdirsyncer;
     description = "Synchronize calendars and contacts";
-    maintainers = [ lib.maintainers.matthiasbeyer ];
-    platforms = lib.platforms.all;
-    license = lib.licenses.mit;
+    maintainers = with maintainers; [ matthiasbeyer jgeerds ];
+    platforms = platforms.all;
+    license = licenses.mit;
   };
 }
-
diff --git a/pkgs/tools/misc/vfdecrypt/default.nix b/pkgs/tools/misc/vfdecrypt/default.nix
index de7ee27d70452..552fa0c763dda 100644
--- a/pkgs/tools/misc/vfdecrypt/default.nix
+++ b/pkgs/tools/misc/vfdecrypt/default.nix
@@ -8,7 +8,8 @@ stdenv.mkDerivation rec {
     rev = "4e2fa32816254907e82886b936afcae9859a876c";
     sha256 = "0b945805f7f60bf48556c2db45c9ab26485fb05acbc6160a563d529b20cb56a3";
   };
-  buildInputs = [openssl];
+  buildInputs = [ openssl ];
+  broken = true; # No such repo
   installPhase = ''
     mkdir -p $out/bin
     cp vfdecrypt $out/bin
diff --git a/pkgs/tools/misc/w3c-css-validator/default.nix b/pkgs/tools/misc/w3c-css-validator/default.nix
deleted file mode 100644
index 3c7aa5261a244..0000000000000
--- a/pkgs/tools/misc/w3c-css-validator/default.nix
+++ /dev/null
@@ -1,77 +0,0 @@
-{ stdenv, fetchurl, sourceFromHead, apacheAnt, tomcat, jre }:
-
-let
-
-  sources =
-    [ (fetchurl {
-        name = "jigsaw_2.2.6.tar.gz";
-        url="http://jigsaw.w3.org/Distrib/jigsaw_2.2.6.tar.gz";
-        sha256 = "01cjpqjcs8gbvvzy0f488cb552f9b38hvwr97wydglrzndmcwypd";
-      })
-      (fetchurl {
-        name = "commons-collectionurl3.2.1-bin.tar.gz";
-        url="http://www.apache.org/dist/commons/collections/binaries/commons-collections-3.2.1-bin.tar.gz";
-        sha256 = "7843f8307495b2be446353b10c25218793b776fa3e22615a1f50f067d81713ce";
-      })
-      (fetchurl {
-        name = "commons-lang-2.4-bin.tar.gz";
-        url="http://www.apache.org/dist/commons/lang/binaries/commons-lang-2.4-bin.tar.gz";
-        sha256 = "0phwlgnvwj3n3j1aka2pkm0biacvgs72qc0ldir6s69i9qbv7rh0";
-      })
-      (fetchurl {
-        name = "velocity-1.6.1.tar.gz";
-        url="http://www.apache.org/dist/velocity/engine/1.6.1/velocity-1.6.1.tar.gz";
-        sha256 = "125s8yp8whx947kahm902wc49ms44knxdj6yfskhpk0a8h0rz9jm";
-      })
-      (fetchurl {
-        name = "Xerces-J-bin.2.9.1.tar.gz";
-        url="http://www.apache.org/dist/xerces/j/Xerces-J-bin.2.9.1.tar.gz";
-        sha256 = "1xlrrznfgdars0a9m9z5k9q8arbqskdfdfjx4s0pp52wn3r0gbns";
-      })
-    ];
-
-in
-
-stdenv.mkDerivation {
-  name = "w3c-css-validator";
-
-  # REGION AUTO UPDATE:       { name="w3c-css-validator"; type="cvs"; cvsRoot=":pserver:anonymous:anonymous@dev.w3.org:/sources/public"; module="2002/css-validator"; }
-  src = sourceFromHead "w3c-css-validator-F_17-52-37.tar.gz"
-               (fetchurl { url = "http://mawercer.de/~nix/repos/w3c-css-validator-F_17-52-37.tar.gz"; sha256 = "b6f05d4812eaa464906d101242689effa8b5516d32d6420315740a77d8ee11fd"; });
-  # END
-
-  buildInputs = [ apacheAnt ];
-
-  # prepare target downloads dependency .tar.gz into tmp
-  # note: There is a .war as well which could be deployed to tomcat
-  installPhase = ''
-    cd css-validator
-    mkdir tmp
-    ${ stdenv.lib.concatStringsSep "\n" (map (src: "tar xfz ${src} -C tmp") sources) }
-    sed -i -e 's@<property name="servlet.lib" value=".*"/>@<property name="servlet.lib" value="${tomcat}/lib/servlet-api.jar"/>@' \
-          -e '/dest="tmp\//d' \
-          -e '/untar/d' \
-          build.xml
-    ant
-    mkdir -p $out/{bin,lib}
-    JAR=$out/lib/css-validator.jar
-    cat >> $out/bin/css-validator << EOF
-    #!/bin/sh
-    exec ${jre}/bin/java -jar $JAR "\$@"
-    EOF
-    chmod +x $out/bin/css-validator
-    cp css-validator.jar $out/lib
-    cp -r lib $out/lib/lib
-  '';
-
-  meta = {
-    description = "W3C CSS validator";
-    homepage = http://dev.w3.org/cvsweb/2002/css-validator/;
-    # dependencies ship their own license files
-    # I think all .java files are covered by this license (?)
-    license = stdenv.lib.licenses.w3c;
-    maintainers = [ stdenv.lib.maintainers.marcweber ];
-    platforms = stdenv.lib.platforms.linux;
-    broken = true;
-  };
-}
diff --git a/pkgs/tools/misc/wyrd/default.nix b/pkgs/tools/misc/wyrd/default.nix
index d76e393aaaa70..d02ce41b6aa1b 100644
--- a/pkgs/tools/misc/wyrd/default.nix
+++ b/pkgs/tools/misc/wyrd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ocaml, ncurses, remind }:
+{ stdenv, fetchurl, ocaml, ncurses, remind, camlp4 }:
 
 stdenv.mkDerivation rec {
   version = "1.4.6";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     sha256 = "0zlrg602q781q8dij62lwdprpfliyy9j1rqfqcz8p2wgndpivddj";
   };
 
-  buildInputs = [ ocaml ncurses remind ];
+  buildInputs = [ ocaml ncurses remind camlp4 ];
 
   preferLocalBuild = true;
 
diff --git a/pkgs/tools/misc/xclip/default.nix b/pkgs/tools/misc/xclip/default.nix
index 20d5e66cfa24c..3f616fdad681d 100644
--- a/pkgs/tools/misc/xclip/default.nix
+++ b/pkgs/tools/misc/xclip/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchsvn, x11, libXmu, autoconf, automake, libtool }:
+{ stdenv, fetchsvn, xlibsWrapper, libXmu, autoconf, automake, libtool }:
 
 stdenv.mkDerivation rec {
   # The last release from 2012, 0.12, lacks '-targets'
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
 
   preConfigure = "autoreconf -vfi";
 
-  buildInputs = [ x11 libXmu autoconf automake libtool ];
+  buildInputs = [ xlibsWrapper libXmu autoconf automake libtool ];
 
   meta = { 
     description = "Tool to access the X clipboard from a console application";
diff --git a/pkgs/tools/misc/xdaliclock/default.nix b/pkgs/tools/misc/xdaliclock/default.nix
index 7d731650288c9..33c9489a70d0e 100644
--- a/pkgs/tools/misc/xdaliclock/default.nix
+++ b/pkgs/tools/misc/xdaliclock/default.nix
@@ -1,52 +1,27 @@
-x@{builderDefsPackage
-  , libX11, xproto, libXt, libICE
-  , libSM, libXext
-  , ...}:
-builderDefsPackage
-(a :
-let
-  helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++
-    [];
+{ stdenv, fetchurl, libX11, xproto, libXt, libICE, libSM, libXext }:
 
-  buildInputs = map (n: builtins.getAttr n x)
-    (builtins.attrNames (builtins.removeAttrs x helperArgNames));
-  sourceInfo = rec {
-    baseName="xdaliclock";
-    version = "2.41";
-    name="${baseName}-${version}";
-    project="${baseName}";
-    url="http://www.jwz.org/${project}/${name}.tar.gz";
-  };
-in
-rec {
-  src = a.fetchurl {
-    url = sourceInfo.url;
-    sha256 = "1crkjvza692irkqm9vwgn58m8ps93n0rxigm6pasgl5dnx3p6d1d";
-  };
+stdenv.mkDerivation rec {
+  name = "xdaliclock-${version}";
+  version = "2.43";
 
-  inherit (sourceInfo) name version;
-  inherit buildInputs;
+  src = fetchurl {
+    url="http://www.jwz.org/xdaliclock/${name}.tar.gz";
+    sha256 = "194zzp1a989k2v8qzfr81gdknr8xiz16d6fdl63jx9r3mj5klmvb";
+  };
 
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["doConfigure" "prepareDirs" "doMakeInstall"];
+  sourceRoot = "${name}/X11";
 
-  prepareDirs = a.fullDepEntry ''
-    mkdir -p "$out/bin" "$out/share" "$out/share/man/man1"
-  '' ["minInit" "defEnsureDir"];
+  buildInputs = [ libX11 xproto libXt libICE libSM libXext ];
 
-  goSrcDir = "cd X11";
+  preInstall = ''
+    mkdir -vp $out/bin $out/share/man/man1
+  '';
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "A clock application that morphs digits when they are changed";
-    maintainers = with a.lib.maintainers;
-    [
-      raskin
-    ];
-    platforms = with a.lib.platforms;
-      linux ++ freebsd;
-    license = a.lib.licenses.free; #TODO BSD on Gentoo, looks like MIT
-    downloadPage = "http://www.jwz.org/xdaliclock/";
-    inherit version;
-    updateWalker = true;
+    maintainers = with maintainers; [ raskin rycee ];
+    platforms = with platforms; linux ++ freebsd;
+    license = licenses.free; #TODO BSD on Gentoo, looks like MIT
+    downloadPage = http://www.jwz.org/xdaliclock/;
   };
-}) x
+}
diff --git a/pkgs/tools/misc/xflux/default.nix b/pkgs/tools/misc/xflux/default.nix
index 0032eb24c971b..d0f358446952a 100644
--- a/pkgs/tools/misc/xflux/default.nix
+++ b/pkgs/tools/misc/xflux/default.nix
@@ -1,6 +1,6 @@
 {stdenv, fetchurl, libXxf86vm, libXext, libX11, libXrandr, gcc}:
 stdenv.mkDerivation {
-  name = "xflux";
+  name = "xflux-2013-09-01";
   src = fetchurl {
     url = https://justgetflux.com/linux/xflux64.tgz;
     sha256 = "cc50158fabaeee58c331f006cc1c08fd2940a126e99d37b76c8e878ef20c2021";
diff --git a/pkgs/tools/misc/xsel/default.nix b/pkgs/tools/misc/xsel/default.nix
index 74eadaf5e2e97..3fe0f409f29bf 100644
--- a/pkgs/tools/misc/xsel/default.nix
+++ b/pkgs/tools/misc/xsel/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, x11}:
+{stdenv, fetchurl, xlibsWrapper}:
 
 stdenv.mkDerivation {
   name = "xsel-1.2.0";
@@ -7,5 +7,5 @@ stdenv.mkDerivation {
     sha256 = "070lbcpw77j143jrbkh0y1v10ppn1jwmjf92800w7x42vh4cw9xr";
   };
 
-  buildInputs = [x11];
+  buildInputs = [xlibsWrapper];
 }
diff --git a/pkgs/tools/misc/youtube-dl/default.nix b/pkgs/tools/misc/youtube-dl/default.nix
index 60d31fec8c3dc..e9f7eadc9146c 100644
--- a/pkgs/tools/misc/youtube-dl/default.nix
+++ b/pkgs/tools/misc/youtube-dl/default.nix
@@ -1,31 +1,29 @@
-{ stdenv, fetchurl, makeWrapper, python, zip, pandoc, ffmpeg }:
+{ stdenv, fetchurl, makeWrapper, buildPythonPackage, zip, ffmpeg
+, pandoc ? null }:
 
-with stdenv.lib;
-stdenv.mkDerivation rec {
+# Pandoc is required to build the package's man page. Release tarballs
+# contain a formatted man page already, though, so it's fine to pass
+# "pandoc = null" to this derivation; the man page will still be
+# installed. We keep the pandoc argument and build input in place in
+# case someone wants to use this derivation to build a Git version of
+# the tool that doesn't have the formatted man page included.
+
+buildPythonPackage rec {
   name = "youtube-dl-${version}";
-  version = "2015.04.03";
+  version = "2015.08.28";
 
   src = fetchurl {
     url = "http://youtube-dl.org/downloads/${version}/${name}.tar.gz";
-    sha256 = "0ndzswv6vq5ld5p1ny23sh76cx6acf8yli9gi9r21dm94ida2885";
+    sha256 = "0iahbynd6fw097a4cc57w26szlbqsmhb8v5ny6qrcil0d4wdqqvp";
   };
 
-  buildInputs = [ python makeWrapper zip pandoc ];
-
-  patchPhase = ''
-    rm youtube-dl
-  '';
-
-  configurePhase = ''
-    makeFlagsArray=( PREFIX=$out SYSCONFDIR=$out/etc PYTHON=${python}/bin/python )
-  '';
+  buildInputs = [ makeWrapper zip pandoc ];
 
-  postInstall = ''
-    # ffmpeg is used for post-processing and fixups
-    wrapProgram $out/bin/youtube-dl --prefix PATH : "${ffmpeg}/bin"
-  '';
+  # Ensure ffmpeg is available in $PATH for post-processing & transcoding support.
+  postInstall = stdenv.lib.optionalString (ffmpeg != null)
+    ''wrapProgram $out/bin/youtube-dl --prefix PATH : "${ffmpeg}/bin"'';
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = "http://rg3.github.com/youtube-dl/";
     repositories.git = https://github.com/rg3/youtube-dl.git;
     description = "Command-line tool to download videos from YouTube.com and other sites";
diff --git a/pkgs/tools/misc/yubico-piv-tool/default.nix b/pkgs/tools/misc/yubico-piv-tool/default.nix
index 9934620c11f65..fee4d44ce6676 100644
--- a/pkgs/tools/misc/yubico-piv-tool/default.nix
+++ b/pkgs/tools/misc/yubico-piv-tool/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, pkgconfig, openssl, pcsclite }:
 
 stdenv.mkDerivation rec {
-  name = "yubico-piv-tool-0.1.6";
+  name = "yubico-piv-tool-1.0.2";
 
   src = fetchurl {
     url = "https://developers.yubico.com/yubico-piv-tool/Releases/${name}.tar.gz";
-    sha256 = "1fsr7wkbg2ff9igc3d8bfqijdxj88wpfnj7zlidzgzakj4b6bxzg";
+    sha256 = "1l12bkyqs38212rizda6s3mypfr4wdiap0yhqfwx86lqcp4h0yb9";
   };
 
   buildInputs = [ pkgconfig openssl pcsclite ];
diff --git a/pkgs/tools/misc/yubikey-personalization-gui/default.nix b/pkgs/tools/misc/yubikey-personalization-gui/default.nix
index 8e606de68c15e..269219e114359 100644
--- a/pkgs/tools/misc/yubikey-personalization-gui/default.nix
+++ b/pkgs/tools/misc/yubikey-personalization-gui/default.nix
@@ -1,14 +1,15 @@
 { stdenv, fetchurl, pkgconfig, yubikey-personalization, qt, libyubikey }:
 
 stdenv.mkDerivation rec {
-  name = "yubikey-personalization-gui-3.1.20";
+  name = "yubikey-personalization-gui-3.1.21";
 
   src = fetchurl {
     url = "https://developers.yubico.com/yubikey-personalization-gui/Releases/${name}.tar.gz";
-    sha256 = "157ra39m4rv7ni28q9n7v3n102h89fn43kccvs91fmqbj02i3qvh";
+    sha256 = "1b5mf6h3jj35f3xwzdbqsyzk171sn8rp9ym4vipmzzcg10jxyp0m";
   };
 
-  buildInputs = [ pkgconfig yubikey-personalization qt libyubikey ];
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ yubikey-personalization qt libyubikey ];
   
   configurePhase = ''
     qmake
diff --git a/pkgs/tools/misc/yubikey-personalization/default.nix b/pkgs/tools/misc/yubikey-personalization/default.nix
index f6b14635d298e..c109903e6ee3c 100644
--- a/pkgs/tools/misc/yubikey-personalization/default.nix
+++ b/pkgs/tools/misc/yubikey-personalization/default.nix
@@ -2,14 +2,15 @@
 
 stdenv.mkDerivation rec {
   name = "yubikey-personalization-${version}";
-  version = "1.17.1";
+  version = "1.17.2";
 
   src = fetchurl {
     url = "https://developers.yubico.com/yubikey-personalization/Releases/ykpers-${version}.tar.gz";
-    sha256 = "1i399z23skvyfdr3fp7a340qi3ynfcwdqr1y540swjy9pg1awssm";
+    sha256 = "1z6ybpdhl74phwzg2lhxhipqf7xnfhg52dykkzb3fbx21m0i4jkh";
   };
 
-  buildInputs = [ pkgconfig libusb libyubikey json_c ];
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libusb libyubikey json_c ];
 
   configureFlags = [
     "--with-backend=libusb-1.0"
diff --git a/pkgs/tools/misc/zsh-navigation-tools/default.nix b/pkgs/tools/misc/zsh-navigation-tools/default.nix
new file mode 100644
index 0000000000000..31c6cd20ec7a9
--- /dev/null
+++ b/pkgs/tools/misc/zsh-navigation-tools/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "zsh-navigation-tools-${version}";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "psprint";
+    repo = "zsh-navigation-tools";
+    rev = "v${version}";
+    sha256 = "1p3r8pra88sjcc8b5d7qlz1axsyyspl3835y6mqwia57b9g0fpy8";
+  };
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/share/zsh/site-functions/
+    cp n-* $out/share/zsh/site-functions/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Curses-based tools for ZSH";
+    homepage = https://github.com/psprint/zsh-navigation-tools;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ pSub ];
+  };
+}