summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/audio/flac/default.nix2
-rw-r--r--pkgs/applications/networking/copy-com/default.nix2
-rw-r--r--pkgs/applications/networking/dropbox/default.nix4
-rw-r--r--pkgs/applications/networking/znc/default.nix4
-rw-r--r--pkgs/build-support/builder-defs/builder-defs.nix2
-rw-r--r--pkgs/build-support/cc-wrapper/default.nix2
-rw-r--r--pkgs/build-support/setup-hooks/move-docs.sh1
-rw-r--r--pkgs/build-support/setup-hooks/patch-shebangs.sh2
-rw-r--r--pkgs/data/misc/tzdata/default.nix6
-rw-r--r--pkgs/desktops/gnome-2/platform/GConf/default.nix4
-rw-r--r--pkgs/desktops/gnome-3/3.16/core/libcroco/default.nix2
-rw-r--r--pkgs/development/compilers/gcc/4.8/default.nix28
-rw-r--r--pkgs/development/compilers/gcc/4.9/default.nix35
-rw-r--r--pkgs/development/compilers/gcc/4.9/parallel-strsignal.patch61
-rw-r--r--pkgs/development/compilers/gcc/5/default.nix35
-rw-r--r--pkgs/development/compilers/gcc/builder.sh7
-rw-r--r--pkgs/development/compilers/ghc/7.10.2.nix11
-rw-r--r--pkgs/development/compilers/ghc/7.4.2-binary.nix4
-rw-r--r--pkgs/development/compilers/llvm/3.5/libc++/default.nix2
-rw-r--r--pkgs/development/compilers/llvm/3.5/libc++/setup-hook.sh7
-rw-r--r--pkgs/development/compilers/llvm/3.6/libc++/default.nix2
-rw-r--r--pkgs/development/compilers/llvm/3.6/libc++/setup-hook.sh7
-rw-r--r--pkgs/development/compilers/orc/default.nix2
-rw-r--r--pkgs/development/go-modules/generic/default.nix64
-rw-r--r--pkgs/development/haskell-modules/configuration-ghc-7.10.x.nix4
-rw-r--r--pkgs/development/haskell-modules/generic-builder.nix2
-rw-r--r--pkgs/development/interpreters/perl/5.20/default.nix2
-rw-r--r--pkgs/development/interpreters/perl/5.22/default.nix2
-rw-r--r--pkgs/development/interpreters/ruby/bundler-head.nix4
-rw-r--r--pkgs/development/interpreters/ruby/bundler.nix2
-rw-r--r--pkgs/development/libraries/CGAL/default.nix8
-rw-r--r--pkgs/development/libraries/SDL/default.nix2
-rw-r--r--pkgs/development/libraries/at-spi2-core/default.nix2
-rw-r--r--pkgs/development/libraries/dbus-glib/default.nix2
-rw-r--r--pkgs/development/libraries/epoxy/default.nix24
-rw-r--r--pkgs/development/libraries/ffmpeg-full/default.nix2
-rw-r--r--pkgs/development/libraries/freeglut/0001-remove-typedefs-now-living-in-mesa.patch43
-rw-r--r--pkgs/development/libraries/freeglut/default.nix36
-rw-r--r--pkgs/development/libraries/gettext/0.17.nix53
-rw-r--r--pkgs/development/libraries/gettext/0.18.nix11
-rw-r--r--pkgs/development/libraries/gettext/default.nix2
-rw-r--r--pkgs/development/libraries/glibc/common.nix5
-rw-r--r--pkgs/development/libraries/glibc/cve-2014-8121.patch230
-rw-r--r--pkgs/development/libraries/glibc/cve-2015-1781.patch27
-rw-r--r--pkgs/development/libraries/glibc/security-4a28f4d5.patch53
-rw-r--r--pkgs/development/libraries/glibc/security-bdf1ff05.patch39
-rw-r--r--pkgs/development/libraries/gnutls/generic.nix2
-rw-r--r--pkgs/development/libraries/gperftools/default.nix6
-rw-r--r--pkgs/development/libraries/harfbuzz/default.nix6
-rw-r--r--pkgs/development/libraries/iniparser/default.nix4
-rw-r--r--pkgs/development/libraries/kerberos/heimdal.nix2
-rw-r--r--pkgs/development/libraries/kyotocabinet/default.nix12
-rw-r--r--pkgs/development/libraries/libdrm/default.nix4
-rw-r--r--pkgs/development/libraries/libidn/default.nix4
-rw-r--r--pkgs/development/libraries/libogg/default.nix2
-rw-r--r--pkgs/development/libraries/libpcap/default.nix8
-rw-r--r--pkgs/development/libraries/libsoup/bad-symbol.patch10
-rw-r--r--pkgs/development/libraries/libsoup/default.nix5
-rw-r--r--pkgs/development/libraries/libtiff/default.nix2
-rw-r--r--pkgs/development/libraries/libvorbis/default.nix2
-rw-r--r--pkgs/development/libraries/libxml2/default.nix4
-rw-r--r--pkgs/development/libraries/libxslt/default.nix2
-rw-r--r--pkgs/development/libraries/lzo/default.nix33
-rw-r--r--pkgs/development/libraries/mesa/default.nix11
-rw-r--r--pkgs/development/libraries/openldap/default.nix14
-rw-r--r--pkgs/development/libraries/openssl/default.nix2
-rw-r--r--pkgs/development/libraries/pcre/default.nix2
-rw-r--r--pkgs/development/libraries/poppler/default.nix2
-rw-r--r--pkgs/development/libraries/snappy/default.nix3
-rw-r--r--pkgs/development/libraries/sqlite/default.nix41
-rw-r--r--pkgs/development/libraries/wiredtiger/default.nix6
-rw-r--r--pkgs/development/perl-modules/lwp-test-with-localhost.patch75
-rw-r--r--pkgs/development/python-modules/generic/wrap.sh2
-rw-r--r--pkgs/development/python-modules/pygobject/default.nix2
-rw-r--r--pkgs/development/tools/build-managers/cmake/default.nix6
-rw-r--r--pkgs/development/tools/misc/gnum4/default.nix4
-rw-r--r--pkgs/development/tools/misc/lsof/default.nix2
-rw-r--r--pkgs/development/tools/misc/patchelf/setup-hook.sh2
-rw-r--r--pkgs/development/tools/misc/texinfo/6.0.nix44
-rw-r--r--pkgs/misc/cups/default.nix11
-rw-r--r--pkgs/misc/ghostscript/default.nix75
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/CF/default.nix3
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/default.nix1
-rw-r--r--pkgs/os-specific/darwin/apple-source-releases/lsof/default.nix27
-rw-r--r--pkgs/os-specific/linux/kbd/default.nix4
-rw-r--r--pkgs/os-specific/linux/udisks/2-default.nix2
-rw-r--r--pkgs/servers/nosql/mongodb/default.nix11
-rw-r--r--pkgs/servers/plex/default.nix2
-rw-r--r--pkgs/servers/sql/mariadb/default.nix7
-rw-r--r--pkgs/servers/x11/xorg/darwin/0001-XQuartz-Ensure-we-wait-for-the-server-thread-to-term.patch33
-rw-r--r--pkgs/servers/x11/xorg/darwin/0001-XQuartz-GLX-Use-__glXEnableExtension-to-build-extens.patch78
-rw-r--r--pkgs/servers/x11/xorg/darwin/0002-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch (renamed from pkgs/servers/x11/xorg/darwin/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch)29
-rw-r--r--pkgs/servers/x11/xorg/darwin/0003-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch (renamed from pkgs/servers/x11/xorg/darwin/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch)20
-rw-r--r--pkgs/servers/x11/xorg/darwin/0004-Use-old-miTrapezoids-and-miTriangles-routines.patch (renamed from pkgs/servers/x11/xorg/darwin/5004-Use-old-miTrapezoids-and-miTriangles-routines.patch)18
-rw-r--r--pkgs/servers/x11/xorg/darwin/0005-fb-Revert-fb-changes-that-broke-XQuartz.patch (renamed from pkgs/servers/x11/xorg/darwin/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch)26
-rw-r--r--pkgs/servers/x11/xorg/darwin/0006-fb-Revert-fb-changes-that-broke-XQuartz.patch (renamed from pkgs/servers/x11/xorg/darwin/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch)89
-rw-r--r--pkgs/servers/x11/xorg/default.nix6
-rw-r--r--pkgs/servers/x11/xorg/fix-clang.patch11
-rw-r--r--pkgs/servers/x11/xorg/libpciaccess-apple.patch26
-rw-r--r--pkgs/servers/x11/xorg/libxkbfile-clang36.patch11
-rw-r--r--pkgs/servers/x11/xorg/overrides.nix55
-rw-r--r--pkgs/servers/x11/xorg/tarballs-7.7.list2
-rw-r--r--pkgs/shells/bash/default.nix8
-rw-r--r--pkgs/stdenv/generic/setup.sh2
-rw-r--r--pkgs/stdenv/pure-darwin/default.nix4
-rw-r--r--pkgs/tools/X11/xdg-utils/default.nix33
-rw-r--r--pkgs/tools/misc/mongodb-tools/default.nix39
-rw-r--r--pkgs/tools/security/gnupg/21.nix4
-rw-r--r--pkgs/top-level/all-packages.nix32
-rw-r--r--pkgs/top-level/go-packages.nix767
-rw-r--r--pkgs/top-level/perl-packages.nix36
111 files changed, 1662 insertions, 987 deletions
diff --git a/pkgs/applications/audio/flac/default.nix b/pkgs/applications/audio/flac/default.nix
index 5dd70673521..18fb48a17ba 100644
--- a/pkgs/applications/audio/flac/default.nix
+++ b/pkgs/applications/audio/flac/default.nix
@@ -8,6 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "4773c0099dba767d963fd92143263be338c48702172e8754b9bc5103efe1c56c";
   };
 
+  outputs = [ "out" "doc" ];
+
   buildInputs = [ libogg ];
 
   #doCheck = true; # takes lots of time
diff --git a/pkgs/applications/networking/copy-com/default.nix b/pkgs/applications/networking/copy-com/default.nix
index 3a3cf4df284..7dd2702325b 100644
--- a/pkgs/applications/networking/copy-com/default.nix
+++ b/pkgs/applications/networking/copy-com/default.nix
@@ -52,7 +52,7 @@ in stdenv.mkDerivation {
 
     RPATH=${libPaths}:$out/${appdir}
     echo "Updating rpaths to $RPATH in:"
-    find "$out/${appdir}" -type f -a -perm +0100 \
+    find "$out/${appdir}" -type f -a -perm /0100 \
       -print -exec patchelf --force-rpath --set-rpath "$RPATH" {} \;
   '';
 
diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix
index c5840b93b6f..3fa6fb51ee1 100644
--- a/pkgs/applications/networking/dropbox/default.nix
+++ b/pkgs/applications/networking/dropbox/default.nix
@@ -101,12 +101,12 @@ in stdenv.mkDerivation {
     rm "$out/${appdir}/qt.conf"
     rm -fr "$out/${appdir}/plugins"
 
-    find "$out/${appdir}" -type f -a -perm +0100 \
+    find "$out/${appdir}" -type f -a -perm /0100 \
       -print -exec patchelf --set-interpreter ${stdenv.glibc}/lib/${interpreter} {} \;
 
     RPATH=${ldpath}:${gcc.cc}/lib:$out/${appdir}
     echo "updating rpaths to: $RPATH"
-    find "$out/${appdir}" -type f -a -perm +0100 \
+    find "$out/${appdir}" -type f -a -perm /0100 \
       -print -exec patchelf --force-rpath --set-rpath "$RPATH" {} \;
 
     mkdir -p "$out/share/applications"
diff --git a/pkgs/applications/networking/znc/default.nix b/pkgs/applications/networking/znc/default.nix
index 11681cfefd0..ca4c6d24315 100644
--- a/pkgs/applications/networking/znc/default.nix
+++ b/pkgs/applications/networking/znc/default.nix
@@ -7,11 +7,11 @@
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
-  name = "znc-1.6.0";
+  name = "znc-1.6.1";
 
   src = fetchurl {
     url = "http://znc.in/releases/${name}.tar.gz";
-    sha256 = "df622aeae34d26193c738dff6499e56ad669ec654484e19623738d84cc80aba7";
+    sha256 = "0h61nv5kx9k8prmhsffxhlprf7gjcq8vqhjjmqr6v3glcirkjjds";
   };
 
   buildInputs = [ openssl pkgconfig ]
diff --git a/pkgs/build-support/builder-defs/builder-defs.nix b/pkgs/build-support/builder-defs/builder-defs.nix
index 42d8f35b076..e7c64501614 100644
--- a/pkgs/build-support/builder-defs/builder-defs.nix
+++ b/pkgs/build-support/builder-defs/builder-defs.nix
@@ -569,7 +569,7 @@ let inherit (builtins) head tail trace; in
      # Interpreters that are already in the store are left untouched.
          echo "patching script interpreter paths"
          local f
-         for f in $(find "${dir}" -xtype f -perm +0100); do
+         for f in $(find "${dir}" -xtype f -perm /0100); do
              local oldPath=$(sed -ne '1 s,^#![ ]*\([^ ]*\).*$,\1,p' "$f")
              if test -n "$oldPath" -a "''${oldPath:0:''${#NIX_STORE}}" != "$NIX_STORE"; then
                  local newPath=$(type -P $(basename $oldPath) || true)
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index 57607ba25b9..8965fc6bef0 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -9,7 +9,7 @@
 , cc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? stdenv.shell
 , zlib ? null, extraPackages ? [], extraBuildCommands ? ""
 , dyld ? null # TODO: should this be a setup-hook on dyld?
-, isGNU ? false, isClang ? false
+, isGNU ? false, isClang ? cc.isClang or false
 }:
 
 with stdenv.lib;
diff --git a/pkgs/build-support/setup-hooks/move-docs.sh b/pkgs/build-support/setup-hooks/move-docs.sh
index c819ee12a9c..57b71c15691 100644
--- a/pkgs/build-support/setup-hooks/move-docs.sh
+++ b/pkgs/build-support/setup-hooks/move-docs.sh
@@ -42,6 +42,7 @@ _moveDocs() {
     _moveToOutput share/man "$man"
     _moveToOutput share/info "$info"
     _moveToOutput share/doc "$doc"
+    _moveToOutput share/gtk-doc "$doc"
 
     # Remove empty share directory.
     if [ -d "$out/share" ]; then
diff --git a/pkgs/build-support/setup-hooks/patch-shebangs.sh b/pkgs/build-support/setup-hooks/patch-shebangs.sh
index 5a7f23b2d81..44ebad0d593 100644
--- a/pkgs/build-support/setup-hooks/patch-shebangs.sh
+++ b/pkgs/build-support/setup-hooks/patch-shebangs.sh
@@ -18,7 +18,7 @@ patchShebangs() {
     local oldInterpreterLine
     local newInterpreterLine
 
-    find "$dir" -type f -perm +0100 | while read f; do
+    find "$dir" -type f -perm /0100 | while read f; do
         if [ "$(head -1 "$f" | head -c +2)" != '#!' ]; then
             # missing shebang => not a script
             continue
diff --git a/pkgs/data/misc/tzdata/default.nix b/pkgs/data/misc/tzdata/default.nix
index 6d10fe68a09..8789316ccdc 100644
--- a/pkgs/data/misc/tzdata/default.nix
+++ b/pkgs/data/misc/tzdata/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl }:
 
-let version = "2015e"; in
+let version = "2015f"; in
 
 stdenv.mkDerivation rec {
   name = "tzdata-${version}";
@@ -8,11 +8,11 @@ stdenv.mkDerivation rec {
   srcs =
     [ (fetchurl {
         url = "http://www.iana.org/time-zones/repository/releases/tzdata${version}.tar.gz";
-        sha256 = "0vxs6j1i429vxz4a1lbwjz81k236lxdggqvrlix2ga5xib9vbjgz";
+        sha256 = "07ak8ai5skgjpj6lg74pawxg0bz998k7s2ah7jqyqhp086sq37wm";
       })
       (fetchurl {
         url = "http://www.iana.org/time-zones/repository/releases/tzcode${version}.tar.gz";
-        sha256 = "185db6789kygcpcl48y1dh6m4fkgqcwqjwx7f3s5dys7b2sig8mm";
+        sha256 = "1bl4vqw6yp9199clm9aai566bmslp42g5xglj3vl24dn5fjf158c";
       })
     ];
 
diff --git a/pkgs/desktops/gnome-2/platform/GConf/default.nix b/pkgs/desktops/gnome-2/platform/GConf/default.nix
index d4a8e1ff846..db51a5f8962 100644
--- a/pkgs/desktops/gnome-2/platform/GConf/default.nix
+++ b/pkgs/desktops/gnome-2/platform/GConf/default.nix
@@ -4,13 +4,15 @@
 assert withGtk -> (gtk != null);
 
 stdenv.mkDerivation {
-  name = "GConf-2.32.4";
+  name = "gconf-2.32.4";
 
   src = fetchurl {
     url = mirror://gnome/sources/GConf/2.32/GConf-2.32.4.tar.xz;
     sha256 = "09ch709cb9fniwc4221xgkq0jf0x0lxs814sqig8p2dcll0llvzk";
   };
 
+  outputs = [ "out" "doc" ];
+
   buildInputs = [ ORBit2 dbus_libs dbus_glib libxml2 ]
     # polkit requires pam, which requires shadow.h, which is not available on
     # darwin
diff --git a/pkgs/desktops/gnome-3/3.16/core/libcroco/default.nix b/pkgs/desktops/gnome-3/3.16/core/libcroco/default.nix
index 1875c1491f9..e8ddf7096e6 100644
--- a/pkgs/desktops/gnome-3/3.16/core/libcroco/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/libcroco/default.nix
@@ -8,6 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "0w453f3nnkbkrly7spx5lx5pf6mwynzmd5qhszprq8amij2invpa";
   };
 
+  outputs = [ "out" "doc" ];
+
   configureFlags = stdenv.lib.optional stdenv.isDarwin "--disable-Bsymbolic";
 
   buildInputs = [ pkgconfig libxml2 glib ];
diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix
index ff1d388b6e2..bbf730a26fa 100644
--- a/pkgs/development/compilers/gcc/4.8/default.nix
+++ b/pkgs/development/compilers/gcc/4.8/default.nix
@@ -32,7 +32,7 @@
 , gnat ? null
 , libpthread ? null, libpthreadCross ? null  # required for GNU/Hurd
 , stripped ? true
-, gnused ? null
+, CF ? null
 }:
 
 assert langJava     -> zip != null && unzip != null
@@ -47,8 +47,8 @@ assert cloog != null -> isl != null;
 # LTO needs libelf and zlib.
 assert libelf != null -> zlib != null;
 
-# Make sure we get GNU sed.
-assert stdenv.isDarwin -> gnused != null;
+# Make sure we get CoreFoundation
+assert stdenv.isDarwin -> CF != null;
 
 # The go frontend is written in c++
 assert langGo -> langCC;
@@ -288,10 +288,6 @@ stdenv.mkDerivation ({
     ++ (optionals (cross != null) [binutilsCross])
     ++ (optionals langAda [gnatboot])
     ++ (optionals langVhdl [gnat])
-
-    # The builder relies on GNU sed (for instance, Darwin's `sed' fails with
-    # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it.
-    ++ (optional stdenv.isDarwin gnused)
     ;
 
   NIX_LDFLAGS = stdenv.lib.optionalString  stdenv.isSunOS "-lm -ldl";
@@ -302,14 +298,10 @@ stdenv.mkDerivation ({
     export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET"
     export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET"
   '' + stdenv.lib.optionalString stdenv.isDarwin ''
-    if SDKROOT=$(/usr/bin/xcrun --show-sdk-path); then
-      configureFlagsArray+=(--with-native-system-header-dir=$SDKROOT/usr/include)
-      makeFlagsArray+=( \
-       CFLAGS_FOR_BUILD=-F$SDKROOT/System/Library/Frameworks \
-       CFLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
-       FLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
-      )
-    fi
+    configureFlagsArray+=(
+      --with-sysroot="${stdenv.libc}"
+      --with-native-system-header-dir=/include
+    )
   '';
 
   dontDisableStatic = true;
@@ -478,10 +470,10 @@ stdenv.mkDerivation ({
                                           ++ optionals javaAwtGtk [ gmp mpfr ]
                                           ++ optional (libpthread != null) libpthread)));
 
-  EXTRA_TARGET_CFLAGS =
-    if cross != null && libcCross != null
+  extraFlags =
+    (if cross != null && libcCross != null
     then "-idirafter ${libcCross}/include"
-    else null;
+    else "") + optionalString stdenv.isDarwin " -F${CF}/Library/Frameworks";
 
   EXTRA_TARGET_LDFLAGS =
     if cross != null && libcCross != null
diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix
index cf67d880a2c..ed5e9ed920b 100644
--- a/pkgs/development/compilers/gcc/4.9/default.nix
+++ b/pkgs/development/compilers/gcc/4.9/default.nix
@@ -32,7 +32,7 @@
 , gnat ? null
 , libpthread ? null, libpthreadCross ? null  # required for GNU/Hurd
 , stripped ? true
-, gnused ? null
+, CF ? null
 }:
 
 assert langJava     -> zip != null && unzip != null
@@ -47,8 +47,8 @@ assert cloog != null -> isl != null;
 # LTO needs libelf and zlib.
 assert libelf != null -> zlib != null;
 
-# Make sure we get GNU sed.
-assert stdenv.isDarwin -> gnused != null;
+# Make sure we get CoreFoundation
+assert stdenv.isDarwin -> CF != null;
 
 # The go frontend is written in c++
 assert langGo -> langCC;
@@ -61,13 +61,10 @@ let version = "4.9.3";
     # Whether building a cross-compiler for GNU/Hurd.
     crossGNU = cross != null && cross.config == "i586-pc-gnu";
 
-    # Builds of gfortran have failed with strange errors that we cannot reproduce
-    # (http://hydra.nixos.org/build/23951123). Our best guess is that the build
-    # system has bugs that are exposed by compiling with multiple threads.
-    enableParallelBuilding = !langFortran;
+    enableParallelBuilding = true;
 
     patches = [ ]
-      ++ optional enableParallelBuilding ../parallel-bconfig.patch
+      ++ optionals enableParallelBuilding [ ../parallel-bconfig.patch ./parallel-strsignal.patch ]
       ++ optional (cross != null) ../libstdc++-target.patch
       ++ optional noSysDirs ../no-sys-dirs.patch
       # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its
@@ -290,10 +287,6 @@ stdenv.mkDerivation ({
     ++ (optionals (cross != null) [binutilsCross])
     ++ (optionals langAda [gnatboot])
     ++ (optionals langVhdl [gnat])
-
-    # The builder relies on GNU sed (for instance, Darwin's `sed' fails with
-    # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it.
-    ++ (optional stdenv.isDarwin gnused)
     ;
 
   NIX_LDFLAGS = stdenv.lib.optionalString  stdenv.isSunOS "-lm -ldl";
@@ -304,14 +297,10 @@ stdenv.mkDerivation ({
     export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET"
     export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET"
   '' + stdenv.lib.optionalString stdenv.isDarwin ''
-    if SDKROOT=$(/usr/bin/xcrun --show-sdk-path); then
-      configureFlagsArray+=(--with-native-system-header-dir=$SDKROOT/usr/include)
-      makeFlagsArray+=( \
-       CFLAGS_FOR_BUILD=-F$SDKROOT/System/Library/Frameworks \
-       CFLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
-       FLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
-      )
-    fi
+    configureFlagsArray+=(
+      --with-sysroot="${stdenv.libc}"
+      --with-native-system-header-dir=/include
+    )
   '';
 
   dontDisableStatic = true;
@@ -480,10 +469,10 @@ stdenv.mkDerivation ({
                                           ++ optionals javaAwtGtk [ gmp mpfr ]
                                           ++ optional (libpthread != null) libpthread)));
 
-  EXTRA_TARGET_CFLAGS =
-    if cross != null && libcCross != null
+  extraFlags =
+    (if cross != null && libcCross != null
     then "-idirafter ${libcCross}/include"
-    else null;
+    else "") + optionalString stdenv.isDarwin " -F${CF}/Library/Frameworks";
 
   EXTRA_TARGET_LDFLAGS =
     if cross != null && libcCross != null
diff --git a/pkgs/development/compilers/gcc/4.9/parallel-strsignal.patch b/pkgs/development/compilers/gcc/4.9/parallel-strsignal.patch
new file mode 100644
index 00000000000..4c98ca273a5
--- /dev/null
+++ b/pkgs/development/compilers/gcc/4.9/parallel-strsignal.patch
@@ -0,0 +1,61 @@
+gcc/Makefile.in: fix parallel building failure
+
+The gcc-ar.o, gcc-nm.o, gcc-ranlib.o and errors.o included
+config.h which was a generated file. But no explicity rule
+to clarify the dependency. There was potential building
+failure while parallel make.
+
+For gcc-ar.o, gcc-nm.o and gcc-ranlib.o, they were compiled from one C
+source file gcc-ar.c, we add them to ALL_HOST_BACKEND_OBJS, so the
+'$(ALL_HOST_OBJS) : | $(generated_files)' rule could work for these
+objects.
+
+For errors.o, it is part of gengtype, and the gengtype generator program
+is special: Two versions are built. One is for the build machine, and one
+is for the host. We refered what gengtype-parse.o did (which also is part
+of gengtype).
+
+[GCC #61899]
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61899
+
+Upstream-Status: Send to gcc-patches@gcc.gnu.org mailing list
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ gcc/Makefile.in | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/gcc/Makefile.in b/gcc/Makefile.in
+index 6475cba..56e50bb 100644
+--- a/gcc/Makefile.in
++++ b/gcc/Makefile.in
+@@ -1481,13 +1481,16 @@ OBJS-libcommon-target = $(common_out_object_file) prefix.o params.o \
+ 	opts.o opts-common.o options.o vec.o hooks.o common/common-targhooks.o \
+ 	hash-table.o file-find.o
+ 
++# Objects compiled from one C source file gcc-ar.c
++OBJS-gcc-ar = gcc-ar.o gcc-nm.o gcc-ranlib.o
++
+ # This lists all host objects for the front ends.
+ ALL_HOST_FRONTEND_OBJS = $(foreach v,$(CONFIG_LANGUAGES),$($(v)_OBJS))
+ 
+ ALL_HOST_BACKEND_OBJS = $(GCC_OBJS) $(OBJS) $(OBJS-libcommon) \
+   $(OBJS-libcommon-target) @TREEBROWSER@ main.o c-family/cppspec.o \
+   $(COLLECT2_OBJS) $(EXTRA_GCC_OBJS) $(GCOV_OBJS) $(GCOV_DUMP_OBJS) \
+-  lto-wrapper.o
++  lto-wrapper.o $(OBJS-gcc-ar)
+ 
+ # This lists all host object files, whether they are included in this
+ # compilation or not.
+@@ -2437,6 +2440,8 @@ gengtype-parse.o: $(CONFIG_H)
+ CFLAGS-build/gengtype-parse.o += -DGENERATOR_FILE
+ build/gengtype-parse.o: $(BCONFIG_H)
+ 
++errors.o : $(CONFIG_H)
++
+ gengtype-state.o build/gengtype-state.o: gengtype-state.c $(SYSTEM_H) \
+   gengtype.h errors.h double-int.h version.h $(HASHTAB_H) $(OBSTACK_H) \
+   $(XREGEX_H)
+-- 
+1.8.1.2
+
diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix
index 46864c0bb02..fc007fe447b 100644
--- a/pkgs/development/compilers/gcc/5/default.nix
+++ b/pkgs/development/compilers/gcc/5/default.nix
@@ -32,8 +32,7 @@
 , gnat ? null
 , libpthread ? null, libpthreadCross ? null  # required for GNU/Hurd
 , stripped ? true
-, gnused ? null
-, binutils ? null
+, CF ? null
 }:
 
 assert langJava     -> zip != null && unzip != null
@@ -45,11 +44,8 @@ assert langVhdl     -> gnat != null;
 # LTO needs libelf and zlib.
 assert libelf != null -> zlib != null;
 
-# Make sure we get GNU sed.
-assert stdenv.isDarwin -> gnused != null;
-
-# Need c++filt on darwin
-assert stdenv.isDarwin -> binutils != null;
+# Make sure we get CoreFoundation.
+assert stdenv.isDarwin -> CF != null;
 
 # The go frontend is written in c++
 assert langGo -> langCC;
@@ -208,6 +204,8 @@ stdenv.mkDerivation ({
 
   builder = ../builder.sh;
 
+  outputs = [ "out" "info" ];
+
   src = fetchurl {
     url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.bz2";
     sha256 = "1bccp8a106xwz3wkixn65ngxif112vn90qf95m6lzpgpnl25p0sz";
@@ -284,11 +282,6 @@ stdenv.mkDerivation ({
     ++ (optionals (cross != null) [binutilsCross])
     ++ (optionals langAda [gnatboot])
     ++ (optionals langVhdl [gnat])
-
-    # The builder relies on GNU sed (for instance, Darwin's `sed' fails with
-    # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it.
-    ++ (optional stdenv.isDarwin gnused)
-    ++ (optional stdenv.isDarwin binutils)
     ;
 
   NIX_LDFLAGS = stdenv.lib.optionalString  stdenv.isSunOS "-lm -ldl";
@@ -299,14 +292,10 @@ stdenv.mkDerivation ({
     export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET"
     export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET"
   '' + stdenv.lib.optionalString stdenv.isDarwin ''
-    if SDKROOT=$(/usr/bin/xcrun --show-sdk-path); then
-      configureFlagsArray+=(--with-native-system-header-dir=$SDKROOT/usr/include)
-      makeFlagsArray+=( \
-       CFLAGS_FOR_BUILD=-F$SDKROOT/System/Library/Frameworks \
-       CFLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
-       FLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
-      )
-    fi
+    configureFlagsArray+=(
+      --with-sysroot="${stdenv.libc}"
+      --with-native-system-header-dir=/include
+    )
   '';
 
   dontDisableStatic = true;
@@ -473,10 +462,10 @@ stdenv.mkDerivation ({
                                           ++ optionals javaAwtGtk [ gmp mpfr ]
                                           ++ optional (libpthread != null) libpthread)));
 
-  EXTRA_TARGET_CFLAGS =
-    if cross != null && libcCross != null
+  extraFlags =
+    (if cross != null && libcCross != null
     then "-idirafter ${libcCross}/include"
-    else null;
+    else "") + optionalString stdenv.isDarwin " -F${CF}/Library/Frameworks";
 
   EXTRA_TARGET_LDFLAGS =
     if cross != null && libcCross != null
diff --git a/pkgs/development/compilers/gcc/builder.sh b/pkgs/development/compilers/gcc/builder.sh
index dd77c67a023..ee38fadf418 100644
--- a/pkgs/development/compilers/gcc/builder.sh
+++ b/pkgs/development/compilers/gcc/builder.sh
@@ -23,8 +23,11 @@ if test "$noSysDirs" = "1"; then
 
         # Figure out what extra flags to pass to the gcc compilers
         # being generated to make sure that they use our glibc.
-        extraFlags="$(cat $NIX_CC/nix-support/libc-cflags)"
-        extraLDFlags="$(cat $NIX_CC/nix-support/libc-ldflags) $(cat $NIX_CC/nix-support/libc-ldflags-before)"
+        extraFlags="$(cat $NIX_CC/nix-support/libc-cflags) ${extraFlags}"
+        extraLDFlags="$(cat $NIX_CC/nix-support/libc-ldflags)"
+        if [ -e "$NIX_CC/nix-support/libc-ldflags-before" ]; then
+          extraLDFlags+=" $(cat $NIX_CC/nix-support/libc-ldflags-before)"
+        fi
 
         # Use *real* header files, otherwise a limits.h is generated
         # that does not include Glibc's limits.h (notably missing
diff --git a/pkgs/development/compilers/ghc/7.10.2.nix b/pkgs/development/compilers/ghc/7.10.2.nix
index f71cd922c10..064610c3557 100644
--- a/pkgs/development/compilers/ghc/7.10.2.nix
+++ b/pkgs/development/compilers/ghc/7.10.2.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fetchpatch, ghc, perl, gmp, ncurses, libiconv }:
+{ stdenv, fetchurl, fetchpatch, ghc, perl, gmp, ncurses, libiconv, binutils, coreutils }:
 
 let
 
@@ -46,6 +46,15 @@ stdenv.mkDerivation rec {
   # that in turn causes GHCi to abort
   stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols";
 
+  postInstall = ''
+    # Patch scripts to include "readelf" and "cat" in $PATH.
+    for i in "$out/bin/"*; do
+      test ! -h $i || continue
+      egrep --quiet '^#!' <(head -n 1 $i) || continue
+      sed -i -e '2i export PATH="$PATH:${binutils}/bin:${coreutils}/bin"' $i
+    done
+  '';
+
   meta = {
     homepage = "http://haskell.org/ghc";
     description = "The Glasgow Haskell Compiler";
diff --git a/pkgs/development/compilers/ghc/7.4.2-binary.nix b/pkgs/development/compilers/ghc/7.4.2-binary.nix
index 25c9dd0a65a..3d781e9d558 100644
--- a/pkgs/development/compilers/ghc/7.4.2-binary.nix
+++ b/pkgs/development/compilers/ghc/7.4.2-binary.nix
@@ -60,9 +60,11 @@ stdenv.mkDerivation rec {
     # On Linux, use patchelf to modify the executables so that they can
     # find editline/gmp.
     stdenv.lib.optionalString stdenv.isLinux ''
+      mkdir -p "$out/lib"
+      ln -sv "${ncurses}/lib/libncurses.so" "$out/lib/libncurses${stdenv.lib.optionalString stdenv.is64bit "w"}.so.5"
       find . -type f -perm +100 \
           -exec patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-          --set-rpath "${ncurses}/lib:${gmp}/lib" {} \;
+          --set-rpath "$out/lib:${gmp}/lib" {} \;
       sed -i "s|/usr/bin/perl|perl\x00        |" ghc-${version}/ghc/stage2/build/tmp/ghc-stage2
       sed -i "s|/usr/bin/gcc|gcc\x00        |" ghc-${version}/ghc/stage2/build/tmp/ghc-stage2
       for prog in ld ar gcc strip ranlib; do
diff --git a/pkgs/development/compilers/llvm/3.5/libc++/default.nix b/pkgs/development/compilers/llvm/3.5/libc++/default.nix
index 7b1624d530b..e7018eea3bc 100644
--- a/pkgs/development/compilers/llvm/3.5/libc++/default.nix
+++ b/pkgs/development/compilers/llvm/3.5/libc++/default.nix
@@ -34,6 +34,8 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
+  linkCxxAbi = stdenv.isLinux;
+
   setupHook = ./setup-hook.sh;
 
   meta = {
diff --git a/pkgs/development/compilers/llvm/3.5/libc++/setup-hook.sh b/pkgs/development/compilers/llvm/3.5/libc++/setup-hook.sh
index 8a45be7e85a..9022fced6ec 100644
--- a/pkgs/development/compilers/llvm/3.5/libc++/setup-hook.sh
+++ b/pkgs/development/compilers/llvm/3.5/libc++/setup-hook.sh
@@ -1,4 +1,3 @@
-export NIX_CFLAGS_COMPILE+=" -isystem @out@/include/c++/v1"
-
-export NIX_CXXSTDLIB_COMPILE=" -stdlib=libc++"
-export NIX_CXXSTDLIB_LINK=" -stdlib=libc++"
+linkCxxAbi="@linkCxxAbi@"
+export NIX_CXXSTDLIB_COMPILE+=" -isystem @out@/include/c++/v1"
+export NIX_CXXSTDLIB_LINK=" -stdlib=libc++${linkCxxAbi:+" -lc++abi"}"
diff --git a/pkgs/development/compilers/llvm/3.6/libc++/default.nix b/pkgs/development/compilers/llvm/3.6/libc++/default.nix
index 81c1d96afc8..c02c75ac02d 100644
--- a/pkgs/development/compilers/llvm/3.6/libc++/default.nix
+++ b/pkgs/development/compilers/llvm/3.6/libc++/default.nix
@@ -29,6 +29,8 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
+  linkCxxAbi = stdenv.isLinux;
+
   setupHook = ./setup-hook.sh;
 
   meta = {
diff --git a/pkgs/development/compilers/llvm/3.6/libc++/setup-hook.sh b/pkgs/development/compilers/llvm/3.6/libc++/setup-hook.sh
index 8a45be7e85a..9022fced6ec 100644
--- a/pkgs/development/compilers/llvm/3.6/libc++/setup-hook.sh
+++ b/pkgs/development/compilers/llvm/3.6/libc++/setup-hook.sh
@@ -1,4 +1,3 @@
-export NIX_CFLAGS_COMPILE+=" -isystem @out@/include/c++/v1"
-
-export NIX_CXXSTDLIB_COMPILE=" -stdlib=libc++"
-export NIX_CXXSTDLIB_LINK=" -stdlib=libc++"
+linkCxxAbi="@linkCxxAbi@"
+export NIX_CXXSTDLIB_COMPILE+=" -isystem @out@/include/c++/v1"
+export NIX_CXXSTDLIB_LINK=" -stdlib=libc++${linkCxxAbi:+" -lc++abi"}"
diff --git a/pkgs/development/compilers/orc/default.nix b/pkgs/development/compilers/orc/default.nix
index 1c1b5d53cee..3b8916c67e9 100644
--- a/pkgs/development/compilers/orc/default.nix
+++ b/pkgs/development/compilers/orc/default.nix
@@ -8,6 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "1ryz1gfgrxcj806cakcblxf0bcwq8p2mw8k86fs3f5wlwayawzkn";
   };
 
+  outputs = [ "out" "doc" ];
+
   # building memcpy_speed.log
   # ../test-driver: line 107:  4495 Segmentation fault      "$@" > $log_file 2>&1
   # FAIL: memcpy_speed
diff --git a/pkgs/development/go-modules/generic/default.nix b/pkgs/development/go-modules/generic/default.nix
index 1d259da1415..021b57c0a19 100644
--- a/pkgs/development/go-modules/generic/default.nix
+++ b/pkgs/development/go-modules/generic/default.nix
@@ -1,6 +1,6 @@
 { go, govers, lib }:
 
-{ name, buildInputs ? [], passthru ? {}
+{ name, buildInputs ? [], nativeBuildInputs ? [], passthru ? {}
 
 # Disabled flag
 , disabled ? false
@@ -22,13 +22,21 @@ if disabled then throw "${name} not supported for go ${go.meta.branch}" else
 
 let
   args = lib.filterAttrs (name: _: name != "extraSrcs") args';
+
+  removeReferences = [ go ];
+
+  removeExpr = refs: lib.flip lib.concatMapStrings refs (ref: ''
+    | sed "s,${ref},$(echo "${ref}" | sed "s,$NIX_STORE/[^-]*,$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee,"),g" \
+  '');
 in
 
 go.stdenv.mkDerivation (
   (builtins.removeAttrs args [ "goPackageAliases" "disabled" ]) // {
 
   name = "go${go.meta.branch}-${name}";
-  buildInputs = [ go ] ++ buildInputs ++ (lib.optional (!dontRenameImports) govers) ;
+  nativeBuildInputs = [ go ]
+    ++ (lib.optional (!dontRenameImports) govers) ++ nativeBuildInputs;
+  buildInputs = [ go ] ++ buildInputs;
 
   configurePhase = args.configurePhase or ''
     runHook preConfigure
@@ -65,13 +73,16 @@ go.stdenv.mkDerivation (
 
     runHook renameImports
 
+    PIDS=()
     if [ -n "$subPackages" ] ; then
         for p in $subPackages ; do
-            go install $buildFlags "''${buildFlagsArray[@]}" -p $NIX_BUILD_CORES -v $goPackagePath/$p
+            go install $buildFlags "''${buildFlagsArray[@]}" -p $NIX_BUILD_CORES -v $goPackagePath/$p &
+            PIDS+=("$!")
         done
     else
-        (cd go/src
-        find $goPackagePath -type f -name \*.go -exec dirname {} \; | sort | uniq | while read d; do
+        pushd go/src
+        while read d; do
+          {
             echo "$d" | grep -q "/_" && continue
             [ -n "$excludedPackages" ] && echo "$d" | grep -q "$excludedPackages" && continue
             local OUT
@@ -84,26 +95,43 @@ go.stdenv.mkDerivation (
             if [ -n "$OUT" ]; then
               echo "$OUT" >&2
             fi
-        done)
+          } &
+          PIDS+=("$!")
+        done < <(find $goPackagePath -type f -name \*.go -exec dirname {} \; | sort | uniq)
+        popd
     fi
 
+    # Exit on error from the parallel process
+    for PID in "''${PIDS[@]}"; do
+        wait $PID || exit 1
+    done
+
     runHook postBuild
   '';
 
   checkPhase = args.checkPhase or ''
     runHook preCheck
 
+    PIDS=()
     if [ -n "$subPackages" ] ; then
         for p in $subPackages ; do
-            go test -p $NIX_BUILD_CORES -v $goPackagePath/$p
+            go test -p $NIX_BUILD_CORES -v $goPackagePath/$p &
         done
+        PIDS+=("$!")
     else
-        (cd go/src
-        find $goPackagePath -type f -name \*_test.go -exec dirname {} \; | sort | uniq | while read d; do
+        pushd go/src
+        while read d; do
             go test -p $NIX_BUILD_CORES -v $d
-        done)
+        done < <(find $goPackagePath -type f -name \*_test.go -exec dirname {} \; | sort | uniq)
+        popd
+        PIDS+=("$!")
     fi
 
+    # Exit on error from the parallel process
+    for PID in "''${PIDS[@]}"; do
+        wait $PID || exit 1
+    done
+
     runHook postCheck
   '';
 
@@ -113,20 +141,28 @@ go.stdenv.mkDerivation (
     mkdir -p $out
 
     if [ -z "$dontInstallSrc" ]; then
-        (cd "$NIX_BUILD_TOP/go"
-        find . -type f | while read f; do
+        pushd "$NIX_BUILD_TOP/go"
+        while read f; do
           echo "$f" | grep -q '^./\(src\|pkg/[^/]*\)/${goPackagePath}' || continue
           mkdir -p "$(dirname "$out/share/go/$f")"
-          cp $NIX_BUILD_TOP/go/$f $out/share/go/$f
-        done)
+          cp "$NIX_BUILD_TOP/go/$f" "$out/share/go/$f"
+        done < <(find . -type f)
+        popd
     fi
 
     dir="$NIX_BUILD_TOP/go/bin"
     [ -e "$dir" ] && cp -r $dir $out
+    while read file; do
+      cat $file ${removeExpr removeReferences} > $file.tmp
+      mv $file.tmp $file
+      chmod +x $file
+    done < <(find $out/bin -type f 2>/dev/null)
 
     runHook postInstall
   '';
 
+  disallowedReferences = [ go ] ++ lib.optional (!dontRenameImports) govers;
+
   passthru = passthru // lib.optionalAttrs (goPackageAliases != []) { inherit goPackageAliases; };
 
   meta = {
diff --git a/pkgs/development/haskell-modules/configuration-ghc-7.10.x.nix b/pkgs/development/haskell-modules/configuration-ghc-7.10.x.nix
index 87b1d34f7ed..d8d1e3f499a 100644
--- a/pkgs/development/haskell-modules/configuration-ghc-7.10.x.nix
+++ b/pkgs/development/haskell-modules/configuration-ghc-7.10.x.nix
@@ -111,6 +111,10 @@ self: super: {
   # Test suite has stricter version bounds
   retry = dontCheck super.retry;
 
+  # test/System/Posix/Types/OrphansSpec.hs:19:13:
+  #    Not in scope: type constructor or class ‘Int32’
+  base-orphans = dontCheck super.base-orphans;
+
   # Test suite fails with time >= 1.5
   http-date = dontCheck super.http-date;
 
diff --git a/pkgs/development/haskell-modules/generic-builder.nix b/pkgs/development/haskell-modules/generic-builder.nix
index 4f142cd932d..95f58b7322d 100644
--- a/pkgs/development/haskell-modules/generic-builder.nix
+++ b/pkgs/development/haskell-modules/generic-builder.nix
@@ -15,6 +15,7 @@
 , doHoogle ? true
 , editedCabalFile ? null
 , enableLibraryProfiling ? false
+, enableExecutableProfiling ? false
 , enableSharedExecutables ? ((ghc.isGhcjs or false) || stdenv.lib.versionOlder "7.7" ghc.version)
 , enableSharedLibraries ? ((ghc.isGhcjs or false) || stdenv.lib.versionOlder "7.7" ghc.version)
 , enableSplitObjs ? !stdenv.isDarwin # http://hackage.haskell.org/trac/ghc/ticket/4013
@@ -86,6 +87,7 @@ let
     (optionalString useCpphs "--with-cpphs=${cpphs}/bin/cpphs --ghc-options=-cpp --ghc-options=-pgmP${cpphs}/bin/cpphs --ghc-options=-optP--cpp")
     (enableFeature enableSplitObjs "split-objs")
     (enableFeature enableLibraryProfiling "library-profiling")
+    (enableFeature enableExecutableProfiling "executable-profiling")
     (enableFeature enableSharedLibraries "shared")
     (optionalString (isGhcjs || versionOlder "7" ghc.version) (enableFeature enableStaticLibraries "library-vanilla"))
     (optionalString (isGhcjs || versionOlder "7.4" ghc.version) (enableFeature enableSharedExecutables "executable-dynamic"))
diff --git a/pkgs/development/interpreters/perl/5.20/default.nix b/pkgs/development/interpreters/perl/5.20/default.nix
index e8eb3a70e37..141484814ea 100644
--- a/pkgs/development/interpreters/perl/5.20/default.nix
+++ b/pkgs/development/interpreters/perl/5.20/default.nix
@@ -28,6 +28,8 @@ stdenv.mkDerivation rec {
     sha256 = "17cvplgpxbm1hshxlkra2fldn4da1iap1lsnb04hdm8ply93k95i";
   };
 
+  outputs = [ "out" "man" ];
+
   patches =
     [ # Do not look in /usr etc. for dependencies.
       ./no-sys-dirs.patch
diff --git a/pkgs/development/interpreters/perl/5.22/default.nix b/pkgs/development/interpreters/perl/5.22/default.nix
index f9068de1c2c..e0be8610fb7 100644
--- a/pkgs/development/interpreters/perl/5.22/default.nix
+++ b/pkgs/development/interpreters/perl/5.22/default.nix
@@ -28,6 +28,8 @@ stdenv.mkDerivation rec {
     sha256 = "0g5bl8sdpzx9gx2g5jq3py4bj07z2ylk7s1qn0fvsss2yl3hhs8c";
   };
 
+  outputs = [ "out" "man" ];
+
   patches =
     [ # Do not look in /usr etc. for dependencies.
       ./no-sys-dirs.patch
diff --git a/pkgs/development/interpreters/ruby/bundler-head.nix b/pkgs/development/interpreters/ruby/bundler-head.nix
index 2087485e3ef..c8e981a4735 100644
--- a/pkgs/development/interpreters/ruby/bundler-head.nix
+++ b/pkgs/development/interpreters/ruby/bundler-head.nix
@@ -5,12 +5,12 @@ buildRubyGem {
   src = fetchgit {
     url = "https://github.com/bundler/bundler.git";
     rev = "a2343c9eabf5403d8ffcbca4dea33d18a60fc157";
-    sha256 = "1vzm21fc37w89psxfk2fzi64zyb3gyhzr9smd6jk2r2kvgp6d38b";
+    sha256 = "1mvyy6ic41m4f56n1026pz9igbryq11mkj3b4hyr0v1siv4r95c4";
     leaveDotGit = true;
   };
   dontPatchShebangs = true;
   postInstall = ''
-    find $out -type f -perm +0100 | while read f; do
+    find $out -type f -perm /0100 | while read f; do
       substituteInPlace $f \
          --replace "/usr/bin/env" "${coreutils}/bin/env"
     done
diff --git a/pkgs/development/interpreters/ruby/bundler.nix b/pkgs/development/interpreters/ruby/bundler.nix
index d5278bed885..6dc01f9929c 100644
--- a/pkgs/development/interpreters/ruby/bundler.nix
+++ b/pkgs/development/interpreters/ruby/bundler.nix
@@ -6,7 +6,7 @@ buildRubyGem {
   sha256 = "1zkxw6699bbmsamrij2lirscbh0j58p1p3bql22jsxvx34j6w5nc";
   dontPatchShebangs = true;
   postInstall = ''
-    find $out -type f -perm +0100 | while read f; do
+    find $out -type f -perm /0100 | while read f; do
       substituteInPlace $f \
          --replace "/usr/bin/env" "${coreutils}/bin/env"
     done
diff --git a/pkgs/development/libraries/CGAL/default.nix b/pkgs/development/libraries/CGAL/default.nix
index 505aab78242..a903d5e4678 100644
--- a/pkgs/development/libraries/CGAL/default.nix
+++ b/pkgs/development/libraries/CGAL/default.nix
@@ -1,15 +1,17 @@
 { stdenv, fetchurl, cmake, boost, gmp, mpfr }:
 
 stdenv.mkDerivation rec {
-  version = "4.5";
+  version = "4.6.1";
 
   name = "cgal-${version}";
 
   src = fetchurl {
-    url = "https://gforge.inria.fr/frs/download.php/34139/CGAL-${version}.tar.xz";
-    sha256 = "00shds5yph4s09lqdrb6n60wnw9kpiwa25ghg9mbsgq3fnr8p7kr";
+    url = "https://github.com/CGAL/releases/archive/CGAL-${version}.tar.gz";
+    sha256 = "05vk4l62d7g6cz19q36h1an5krxdbgq1fbs5hi0x2l7blsja1z6g";
   };
 
+  # note: optional component libCGAL_ImageIO would need zlib and opengl;
+  #   there are also libCGAL_Qt{3,4} omitted ATM
   buildInputs = [ cmake boost gmp mpfr ];
 
   doCheck = false;
diff --git a/pkgs/development/libraries/SDL/default.nix b/pkgs/development/libraries/SDL/default.nix
index a62fc837dd0..1fae5d42ab7 100644
--- a/pkgs/development/libraries/SDL/default.nix
+++ b/pkgs/development/libraries/SDL/default.nix
@@ -26,6 +26,8 @@ stdenv.mkDerivation rec {
     sha256 = "005d993xcac8236fpvd1iawkz4wqjybkpn8dbwaliqz5jfkidlyn";
   };
 
+  outputs = [ "out" "man" ];
+
   nativeBuildInputs = [ pkgconfig ];
 
   # Since `libpulse*.la' contain `-lgdbm', PulseAudio must be propagated.
diff --git a/pkgs/development/libraries/at-spi2-core/default.nix b/pkgs/development/libraries/at-spi2-core/default.nix
index a3632bc13fd..0fc28185501 100644
--- a/pkgs/development/libraries/at-spi2-core/default.nix
+++ b/pkgs/development/libraries/at-spi2-core/default.nix
@@ -12,6 +12,8 @@ stdenv.mkDerivation rec {
     sha256 = "1l3l39mw23zyjlcqidvkyqlr4gwbhplzw2hcv3qvn6p8ikxpf2qw";
   };
 
+  outputs = [ "out" "doc" ];
+
   buildInputs = [
     python pkgconfig popt  intltool dbus_glib
     libX11 xextproto libSM libICE libXtst libXi
diff --git a/pkgs/development/libraries/dbus-glib/default.nix b/pkgs/development/libraries/dbus-glib/default.nix
index 00b302bde8d..480dc61897b 100644
--- a/pkgs/development/libraries/dbus-glib/default.nix
+++ b/pkgs/development/libraries/dbus-glib/default.nix
@@ -8,6 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "1xi1v1msz75qs0s4lkyf1psrksdppa3hwkg0mznc6gpw5flg3hdz";
   };
 
+  outputs = [ "out" "doc" ];
+
   nativeBuildInputs = [ pkgconfig gettext ];
 
   buildInputs = [ expat libiconv ];
diff --git a/pkgs/development/libraries/epoxy/default.nix b/pkgs/development/libraries/epoxy/default.nix
index 4798c50225d..66039daa479 100644
--- a/pkgs/development/libraries/epoxy/default.nix
+++ b/pkgs/development/libraries/epoxy/default.nix
@@ -1,24 +1,20 @@
-{ stdenv, fetchurl, autoconf, autogen, automake, gettext, libX11
-, mesa, pkgconfig, python, utilmacros
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, utilmacros, python
+, mesa, libX11
 }:
 
 stdenv.mkDerivation rec {
   name = "epoxy-${version}";
-  version = "1.2";
+  version = "1.3.1";
 
-  src = fetchurl {
-    url = "https://github.com/anholt/libepoxy/archive/v${version}.tar.gz";
-    sha256 = "1xp8g6b7xlbym2rj4vkbl6xpb7ijq7glpv656mc7k9b01x22ihs2";
+  src = fetchFromGitHub {
+    owner = "anholt";
+    repo = "libepoxy";
+    rev = "v${version}";
+    sha256 = "0dfkd4xbp7v5gwsf6qwaraz54yzizf3lj5ymyc0msjn0adq3j5yl";
   };
 
-  buildInputs = [
-    autoconf autogen automake gettext libX11 mesa pkgconfig python
-    utilmacros
-  ];
-
-  configureScript = ''
-    ./autogen.sh --prefix="$out"
-  '';
+  nativeBuildInputs = [ autoreconfHook pkgconfig utilmacros python ];
+  buildInputs = [ mesa libX11 ];
 
   meta = with stdenv.lib; {
     description = "A library for handling OpenGL function pointer management";
diff --git a/pkgs/development/libraries/ffmpeg-full/default.nix b/pkgs/development/libraries/ffmpeg-full/default.nix
index 555576d3a36..263943411e8 100644
--- a/pkgs/development/libraries/ffmpeg-full/default.nix
+++ b/pkgs/development/libraries/ffmpeg-full/default.nix
@@ -253,7 +253,7 @@ stdenv.mkDerivation rec {
     # On some ARM platforms --enable-thumb
     "--enable-shared --disable-static"
     (enableFeature true "pic")
-    (if (stdenv.cc.cc.isClang or false) then "--cc=clang" else null)
+    (if stdenv.cc.isClang then "--cc=clang" else null)
     (enableFeature smallBuild "small")
     (enableFeature runtimeCpuDetectBuild "runtime-cpudetect")
     (enableFeature grayBuild "gray")
diff --git a/pkgs/development/libraries/freeglut/0001-remove-typedefs-now-living-in-mesa.patch b/pkgs/development/libraries/freeglut/0001-remove-typedefs-now-living-in-mesa.patch
deleted file mode 100644
index b11a50a9de1..00000000000
--- a/pkgs/development/libraries/freeglut/0001-remove-typedefs-now-living-in-mesa.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 9df489c765921d8d3ff96a13c01592d9209431bb Mon Sep 17 00:00:00 2001
-From: Florian Friesdorf <flo@chaoflow.net>
-Date: Wed, 4 Jan 2012 23:12:44 +0100
-Subject: [PATCH] remove typedefs now living in mesa
-
----
- progs/demos/smooth_opengl3/smooth_opengl3.c |   20 --------------------
- 1 files changed, 0 insertions(+), 20 deletions(-)
-
-diff --git a/progs/demos/smooth_opengl3/smooth_opengl3.c b/progs/demos/smooth_opengl3/smooth_opengl3.c
-index abbdfb5..1172615 100755
---- a/progs/demos/smooth_opengl3/smooth_opengl3.c
-+++ b/progs/demos/smooth_opengl3/smooth_opengl3.c
-@@ -98,26 +98,6 @@ typedef char ourGLchar;
- #define APIENTRY
- #endif
- 
--typedef void (APIENTRY *PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
--typedef void (APIENTRY *PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
--typedef void (APIENTRY *PFNGLBUFFERDATAPROC) (GLenum target, ourGLsizeiptr size, const GLvoid *data, GLenum usage);
--typedef GLuint (APIENTRY *PFNGLCREATESHADERPROC) (GLenum type);
--typedef void (APIENTRY *PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const ourGLchar **string, const GLint *length);
--typedef void (APIENTRY *PFNGLCOMPILESHADERPROC) (GLuint shader);
--typedef GLuint (APIENTRY *PFNGLCREATEPROGRAMPROC) (void);
--typedef void (APIENTRY *PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
--typedef void (APIENTRY *PFNGLLINKPROGRAMPROC) (GLuint program);
--typedef void (APIENTRY *PFNGLUSEPROGRAMPROC) (GLuint program);
--typedef void (APIENTRY *PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
--typedef void (APIENTRY *PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, ourGLchar *infoLog);
--typedef void (APIENTRY *PFNGLGETPROGRAMIVPROC) (GLenum target, GLenum pname, GLint *params);
--typedef void (APIENTRY *PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, ourGLchar *infoLog);
--typedef GLint (APIENTRY *PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const ourGLchar *name);
--typedef void (APIENTRY *PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
--typedef void (APIENTRY *PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
--typedef GLint (APIENTRY *PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const ourGLchar *name);
--typedef void (APIENTRY *PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
--
- PFNGLGENBUFFERSPROC gl_GenBuffers;
- PFNGLBINDBUFFERPROC gl_BindBuffer;
- PFNGLBUFFERDATAPROC gl_BufferData;
--- 
-1.7.8
-
diff --git a/pkgs/development/libraries/freeglut/default.nix b/pkgs/development/libraries/freeglut/default.nix
index 73e7e2ccce5..6159ce7c9e0 100644
--- a/pkgs/development/libraries/freeglut/default.nix
+++ b/pkgs/development/libraries/freeglut/default.nix
@@ -1,27 +1,29 @@
-{ stdenv, lib, fetchurl, libXi, libXrandr, libXxf86vm, mesa, x11, autoreconfHook }:
+{ stdenv, fetchurl, libXi, libXrandr, libXxf86vm, mesa, x11, cmake }:
 
-let version = "2.8.1";
+let version = "3.0.0";
 in stdenv.mkDerivation {
   name = "freeglut-${version}";
 
   src = fetchurl {
     url = "mirror://sourceforge/freeglut/freeglut-${version}.tar.gz";
-    sha256 = "16lrxxxd9ps9l69y3zsw6iy0drwjsp6m26d1937xj71alqk6dr6x";
+    sha256 = "18knkyczzwbmyg8hr4zh8a1i5ga01np2jzd1rwmsh7mh2n2vwhra";
   };
 
-  buildInputs = [
-    libXi libXrandr libXxf86vm mesa x11
-  ] ++ lib.optionals stdenv.isDarwin [
-    autoreconfHook
-  ];
+  buildInputs = [ libXi libXrandr libXxf86vm mesa x11 cmake ];
 
-  postPatch = lib.optionalString stdenv.isDarwin ''
-    substituteInPlace Makefile.am --replace \
-      "SUBDIRS = src include progs doc" \
-      "SUBDIRS = src include doc"
-  '';
-
-  configureFlags = [ "--enable-warnings" ];
-
-  # patches = [ ./0001-remove-typedefs-now-living-in-mesa.patch ];
+  meta = with stdenv.lib; {
+    description = "Create and manage windows containing OpenGL contexts";
+    longDescription = ''
+      FreeGLUT is an open source alternative to the OpenGL Utility Toolkit
+      (GLUT) library. GLUT (and hence FreeGLUT) allows the user to create and
+      manage windows containing OpenGL contexts on a wide range of platforms
+      and also read the mouse, keyboard and joystick functions. FreeGLUT is
+      intended to be a full replacement for GLUT, and has only a few
+      differences.
+    '';
+    homepage = http://freeglut.sourceforge.net/;
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = [ maintainers.bjornfor ];
+  };
 }
diff --git a/pkgs/development/libraries/gettext/0.17.nix b/pkgs/development/libraries/gettext/0.17.nix
deleted file mode 100644
index 3ea70bea80b..00000000000
--- a/pkgs/development/libraries/gettext/0.17.nix
+++ /dev/null
@@ -1,53 +0,0 @@
-{ stdenv, fetchurl, libiconv }:
-
-stdenv.mkDerivation rec {
-  name = "gettext-0.17";
-
-  src = fetchurl {
-    url = "mirror://gnu/gettext/${name}.tar.gz";
-    sha256 = "1fipjpaxxwifdw6cbr7mkxp1yvy643i38nhlh7124bqnisxki5i0";
-  };
-
-  configureFlags = "--disable-csharp";
-
-  # On cross building, gettext supposes that the wchar.h from libc
-  # does not fulfill gettext needs, so it tries to work with its
-  # own wchar.h file, which does not cope well with the system's
-  # wchar.h and stddef.h (gcc-4.3 - glibc-2.9)
-  preConfigure = ''
-    if test -n "$crossConfig"; then
-      echo gl_cv_func_wcwidth_works=yes > cachefile
-      configureFlags="$configureFlags --cache-file=`pwd`/cachefile"
-    fi
-  '';
-
-  buildInputs = stdenv.lib.optional (!stdenv.isLinux) libiconv;
-
-  meta = {
-    description = "GNU gettext, a well integrated set of translation tools and documentation";
-
-    longDescription = ''
-      Usually, programs are written and documented in English, and use
-      English at execution time for interacting with users.  Using a common
-      language is quite handy for communication between developers,
-      maintainers and users from all countries.  On the other hand, most
-      people are less comfortable with English than with their own native
-      language, and would rather be using their mother tongue for day to
-      day's work, as far as possible.  Many would simply love seeing their
-      computer screen showing a lot less of English, and far more of their
-      own language.
-
-      GNU `gettext' is an important step for the GNU Translation Project, as
-      it is an asset on which we may build many other steps. This package
-      offers to programmers, translators, and even users, a well integrated
-      set of tools and documentation. Specifically, the GNU `gettext'
-      utilities are a set of tools that provides a framework to help other
-      GNU packages produce multi-lingual messages.
-    '';
-
-    homepage = http://www.gnu.org/software/gettext/;
-
-    maintainers = [ ];
-    branch = "0.17";
-  };
-}
\ No newline at end of file
diff --git a/pkgs/development/libraries/gettext/0.18.nix b/pkgs/development/libraries/gettext/0.18.nix
deleted file mode 100644
index bb1a0519e7b..00000000000
--- a/pkgs/development/libraries/gettext/0.18.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-{ stdenv, fetchurl, gettext }:
-
-stdenv.lib.overrideDerivation gettext (attrs: rec {
-  name = "gettext-0.18.2";
-
-  src = fetchurl {
-    url = "mirror://gnu/gettext/${name}.tar.gz";
-    sha256 = "516a6370b3b3f46e2fc5a5e222ff5ecd76f3089bc956a7587a6e4f89de17714c";
-  };
-
-})
diff --git a/pkgs/development/libraries/gettext/default.nix b/pkgs/development/libraries/gettext/default.nix
index 4b6fd2008e8..a56795a4c15 100644
--- a/pkgs/development/libraries/gettext/default.nix
+++ b/pkgs/development/libraries/gettext/default.nix
@@ -8,6 +8,8 @@ stdenv.mkDerivation (rec {
     sha256 = "0cbp498ckjwj7qr8b9pmkry8hkhldgkvg5yix8hi9c8z1hxxb651";
   };
 
+  outputs = [ "out" "doc" ];
+
   LDFLAGS = if stdenv.isSunOS then "-lm -lmd -lmp -luutil -lnvpair -lnsl -lidmap -lavl -lsec" else "";
 
   configureFlags = [ "--disable-csharp" "--with-xz" ]
diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix
index 9a451d48cbc..cf356ccefbe 100644
--- a/pkgs/development/libraries/glibc/common.nix
+++ b/pkgs/development/libraries/glibc/common.nix
@@ -56,6 +56,11 @@ stdenv.mkDerivation ({
          "/bin:/usr/bin", which is inappropriate on NixOS machines. This
          patch extends the search path by "/run/current-system/sw/bin". */
       ./fix_path_attribute_in_getconf.patch
+
+      ./security-4a28f4d5.patch
+      ./security-bdf1ff05.patch
+      ./cve-2014-8121.patch
+      ./cve-2015-1781.patch
     ];
 
   postPatch =
diff --git a/pkgs/development/libraries/glibc/cve-2014-8121.patch b/pkgs/development/libraries/glibc/cve-2014-8121.patch
new file mode 100644
index 00000000000..95a86259dba
--- /dev/null
+++ b/pkgs/development/libraries/glibc/cve-2014-8121.patch
@@ -0,0 +1,230 @@
+From 03d2730b44cc2236318fd978afa2651753666c55 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Wed, 29 Apr 2015 14:41:25 +0200
+Subject: [PATCH] CVE-2014-8121: Do not close NSS files database during
+ iteration [BZ #18007]
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf8
+Content-Transfer-Encoding: 8bit
+
+Robin Hack discovered Samba would enter an infinite loop processing
+certain quota-related requests.  We eventually tracked this down to a
+glibc issue.
+
+Running a (simplified) test case under strace shows that /etc/passwd
+is continuously opened and closed:
+
+…
+open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
+lseek(3, 0, SEEK_CUR)                   = 0
+read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 2717
+lseek(3, 2717, SEEK_SET)                = 2717
+close(3)                                = 0
+open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
+lseek(3, 0, SEEK_CUR)                   = 0
+lseek(3, 0, SEEK_SET)                   = 0
+read(3, "root:x:0:0:root:/root:/bin/bash\n"..., 4096) = 2717
+lseek(3, 2717, SEEK_SET)                = 2717
+close(3)                                = 0
+open("/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
+lseek(3, 0, SEEK_CUR)                   = 0
+…
+
+The lookup function implementation in
+nss/nss_files/files-XXX.c:DB_LOOKUP has code to prevent that.  It is
+supposed skip closing the input file if it was already open.
+
+  /* Reset file pointer to beginning or open file.  */			      \
+  status = internal_setent (keep_stream);				      \
+									      \
+  if (status == NSS_STATUS_SUCCESS)					      \
+    {									      \
+      /* Tell getent function that we have repositioned the file pointer.  */ \
+      last_use = getby;							      \
+									      \
+      while ((status = internal_getent (result, buffer, buflen, errnop	      \
+					H_ERRNO_ARG EXTRA_ARGS_VALUE))	      \
+	     == NSS_STATUS_SUCCESS)					      \
+	{ break_if_match }						      \
+									      \
+      if (! keep_stream)						      \
+	internal_endent ();						      \
+    }									      \
+
+keep_stream is initialized from the stayopen flag in internal_setent.
+internal_setent is called from the set*ent implementation as:
+
+  status = internal_setent (stayopen);
+
+However, for non-host database, this flag is always 0, per the
+STAYOPEN magic in nss/getXXent_r.c.
+
+Thus, the fix is this:
+
+-  status = internal_setent (stayopen);
++  status = internal_setent (1);
+
+This is not a behavioral change even for the hosts database (where the
+application can specify the stayopen flag) because with a call to
+sethostent(0), the file handle is still not closed in the
+implementation of gethostent.
+---
+ ChangeLog                 |   8 ++++
+ NEWS                      |  12 +++--
+ nss/Makefile              |   2 +-
+ nss/nss_files/files-XXX.c |   2 +-
+ nss/tst-nss-getpwent.c    | 118 ++++++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 136 insertions(+), 6 deletions(-)
+ create mode 100644 nss/tst-nss-getpwent.c
+
+diff --git a/nss/Makefile b/nss/Makefile
+index d75dad2..65ab7b5 100644
+--- a/nss/Makefile
++++ b/nss/Makefile
+@@ -47,7 +47,7 @@ install-bin             := getent makedb
+ makedb-modules = xmalloc hash-string
+ extra-objs		+= $(makedb-modules:=.o)
+ 
+-tests			= test-netdb tst-nss-test1 test-digits-dots
++tests			= test-netdb tst-nss-test1 test-digits-dots tst-nss-getpwent
+ xtests			= bug-erange
+ 
+ # Specify rules for the nss_* modules.  We have some services.
+diff --git a/nss/nss_files/files-XXX.c b/nss/nss_files/files-XXX.c
+index a7a45e5..a7ce5ea 100644
+--- a/nss/nss_files/files-XXX.c
++++ b/nss/nss_files/files-XXX.c
+@@ -134,7 +134,7 @@ CONCAT(_nss_files_set,ENTNAME) (int stayopen)
+ 
+   __libc_lock_lock (lock);
+ 
+-  status = internal_setent (stayopen);
++  status = internal_setent (1);
+ 
+   if (status == NSS_STATUS_SUCCESS && fgetpos (stream, &position) < 0)
+     {
+diff --git a/nss/tst-nss-getpwent.c b/nss/tst-nss-getpwent.c
+new file mode 100644
+index 0000000..f2e8abc
+--- /dev/null
++++ b/nss/tst-nss-getpwent.c
+@@ -0,0 +1,118 @@
++/* Copyright (C) 2015 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library 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
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++#include <pwd.h>
++#include <stdbool.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++
++int
++do_test (void)
++{
++  /* Count the number of entries in the password database, and fetch
++     data from the first and last entries.  */
++  size_t count = 0;
++  struct passwd * pw;
++  char *first_name = NULL;
++  uid_t first_uid = 0;
++  char *last_name = NULL;
++  uid_t last_uid = 0;
++  setpwent ();
++  while ((pw  = getpwent ()) != NULL)
++    {
++      if (first_name == NULL)
++	{
++	  first_name = strdup (pw->pw_name);
++	  if (first_name == NULL)
++	    {
++	      printf ("strdup: %m\n");
++	      return 1;
++	    }
++	  first_uid = pw->pw_uid;
++	}
++
++      free (last_name);
++      last_name = strdup (pw->pw_name);
++      if (last_name == NULL)
++	{
++	  printf ("strdup: %m\n");
++	  return 1;
++	}
++      last_uid = pw->pw_uid;
++      ++count;
++    }
++  endpwent ();
++
++  if (count == 0)
++    {
++      printf ("No entries in the password database.\n");
++      return 0;
++    }
++
++  /* Try again, this time interleaving with name-based and UID-based
++     lookup operations.  The counts do not match if the interleaved
++     lookups affected the enumeration.  */
++  size_t new_count = 0;
++  setpwent ();
++  while ((pw  = getpwent ()) != NULL)
++    {
++      if (new_count == count)
++	{
++	  printf ("Additional entry in the password database.\n");
++	  return 1;
++	}
++      ++new_count;
++      struct passwd *pw2 = getpwnam (first_name);
++      if (pw2 == NULL)
++	{
++	  printf ("getpwnam (%s) failed: %m\n", first_name);
++	  return 1;
++	}
++      pw2 = getpwnam (last_name);
++      if (pw2 == NULL)
++	{
++	  printf ("getpwnam (%s) failed: %m\n", last_name);
++	  return 1;
++	}
++      pw2 = getpwuid (first_uid);
++      if (pw2 == NULL)
++	{
++	  printf ("getpwuid (%llu) failed: %m\n",
++		  (unsigned long long) first_uid);
++	  return 1;
++	}
++      pw2 = getpwuid (last_uid);
++      if (pw2 == NULL)
++	{
++	  printf ("getpwuid (%llu) failed: %m\n",
++		  (unsigned long long) last_uid);
++	  return 1;
++	}
++    }
++  endpwent ();
++  if (new_count < count)
++    {
++      printf ("Missing entry in the password database.\n");
++      return 1;
++    }
++
++  return 0;
++}
++
++#define TEST_FUNCTION do_test ()
++#include "../test-skeleton.c"
+
diff --git a/pkgs/development/libraries/glibc/cve-2015-1781.patch b/pkgs/development/libraries/glibc/cve-2015-1781.patch
new file mode 100644
index 00000000000..6831d5ac742
--- /dev/null
+++ b/pkgs/development/libraries/glibc/cve-2015-1781.patch
@@ -0,0 +1,27 @@
+From 2959eda9272a033863c271aff62095abd01bd4e3 Mon Sep 17 00:00:00 2001
+From: Arjun Shankar <arjun.is@lostca.se>
+Date: Tue, 21 Apr 2015 14:06:31 +0200
+Subject: [PATCH] CVE-2015-1781: resolv/nss_dns/dns-host.c buffer overflow
+ [BZ#18287]
+
+---
+ ChangeLog                 | 6 ++++++
+ NEWS                      | 9 ++++++++-
+ resolv/nss_dns/dns-host.c | 3 ++-
+ 3 files changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c
+index b16b0dd..d8c5579 100644
+--- a/resolv/nss_dns/dns-host.c
++++ b/resolv/nss_dns/dns-host.c
+@@ -615,7 +615,8 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype,
+   int have_to_map = 0;
+   uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct host_data);
+   buffer += pad;
+-  if (__glibc_unlikely (buflen < sizeof (struct host_data) + pad))
++  buflen = buflen > pad ? buflen - pad : 0;
++  if (__glibc_unlikely (buflen < sizeof (struct host_data)))
+     {
+       /* The buffer is too small.  */
+     too_small:
+
diff --git a/pkgs/development/libraries/glibc/security-4a28f4d5.patch b/pkgs/development/libraries/glibc/security-4a28f4d5.patch
new file mode 100644
index 00000000000..25f994d859c
--- /dev/null
+++ b/pkgs/development/libraries/glibc/security-4a28f4d5.patch
@@ -0,0 +1,53 @@
+From 4a28f4d55a6cc33474c0792fe93b5942d81bf185 Mon Sep 17 00:00:00 2001
+From: Andreas Schwab <schwab@suse.de>
+Date: Thu, 26 Feb 2015 14:55:24 +0100
+Subject: [PATCH] Fix read past end of pattern in fnmatch (bug 18032)
+
+---
+ ChangeLog            | 7 +++++++
+ NEWS                 | 2 +-
+ posix/fnmatch_loop.c | 5 ++---
+ posix/tst-fnmatch3.c | 8 +++++---
+ 4 files changed, 15 insertions(+), 7 deletions(-)
+
+diff --git a/posix/fnmatch_loop.c b/posix/fnmatch_loop.c
+index c0cb2fc..72c5d8f 100644
+--- a/posix/fnmatch_loop.c
++++ b/posix/fnmatch_loop.c
+@@ -945,14 +945,13 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used)
+ 		  }
+ 		else if (c == L('[') && *p == L('.'))
+ 		  {
+-		    ++p;
+ 		    while (1)
+ 		      {
+ 			c = *++p;
+-			if (c == '\0')
++			if (c == L('\0'))
+ 			  return FNM_NOMATCH;
+ 
+-			if (*p == L('.') && p[1] == L(']'))
++			if (c == L('.') && p[1] == L(']'))
+ 			  break;
+ 		      }
+ 		    p += 2;
+diff --git a/posix/tst-fnmatch3.c b/posix/tst-fnmatch3.c
+index d27a557..75bc00a 100644
+--- a/posix/tst-fnmatch3.c
++++ b/posix/tst-fnmatch3.c
+@@ -21,9 +21,11 @@
+ int
+ do_test (void)
+ {
+-  const char *pattern = "[[:alpha:]'[:alpha:]\0]";
+-
+-  return fnmatch (pattern, "a", 0) != FNM_NOMATCH;
++  if (fnmatch ("[[:alpha:]'[:alpha:]\0]", "a", 0) != FNM_NOMATCH)
++    return 1;
++  if (fnmatch ("[a[.\0.]]", "a", 0) != FNM_NOMATCH)
++    return 1;
++  return 0;
+ }
+ 
+ #define TEST_FUNCTION do_test ()
+
diff --git a/pkgs/development/libraries/glibc/security-bdf1ff05.patch b/pkgs/development/libraries/glibc/security-bdf1ff05.patch
new file mode 100644
index 00000000000..b4175694f91
--- /dev/null
+++ b/pkgs/development/libraries/glibc/security-bdf1ff05.patch
@@ -0,0 +1,39 @@
+From bdf1ff052a8e23d637f2c838fa5642d78fcedc33 Mon Sep 17 00:00:00 2001
+From: Paul Pluzhnikov <ppluzhnikov@google.com>
+Date: Sun, 22 Feb 2015 12:01:47 -0800
+Subject: [PATCH] Fix BZ #17269 -- _IO_wstr_overflow integer overflow
+
+---
+ ChangeLog       | 6 ++++++
+ NEWS            | 6 +++---
+ libio/wstrops.c | 8 +++++++-
+ 3 files changed, 16 insertions(+), 4 deletions(-)
+
+diff --git a/libio/wstrops.c b/libio/wstrops.c
+index 43d847d..3993579 100644
+--- a/libio/wstrops.c
++++ b/libio/wstrops.c
+@@ -95,8 +95,11 @@ _IO_wstr_overflow (fp, c)
+ 	  wchar_t *old_buf = fp->_wide_data->_IO_buf_base;
+ 	  size_t old_wblen = _IO_wblen (fp);
+ 	  _IO_size_t new_size = 2 * old_wblen + 100;
+-	  if (new_size < old_wblen)
++
++	  if (__glibc_unlikely (new_size < old_wblen)
++	      || __glibc_unlikely (new_size > SIZE_MAX / sizeof (wchar_t)))
+ 	    return EOF;
++
+ 	  new_buf
+ 	    = (wchar_t *) (*((_IO_strfile *) fp)->_s._allocate_buffer) (new_size
+ 									* sizeof (wchar_t));
+@@ -186,6 +189,9 @@ enlarge_userbuf (_IO_FILE *fp, _IO_off64_t offset, int reading)
+     return 1;
+ 
+   _IO_size_t newsize = offset + 100;
++  if (__glibc_unlikely (newsize > SIZE_MAX / sizeof (wchar_t)))
++    return 1;
++
+   wchar_t *oldbuf = wd->_IO_buf_base;
+   wchar_t *newbuf
+     = (wchar_t *) (*((_IO_strfile *) fp)->_s._allocate_buffer) (newsize
+
diff --git a/pkgs/development/libraries/gnutls/generic.nix b/pkgs/development/libraries/gnutls/generic.nix
index 59bb99d9399..21fb721a079 100644
--- a/pkgs/development/libraries/gnutls/generic.nix
+++ b/pkgs/development/libraries/gnutls/generic.nix
@@ -13,6 +13,8 @@ stdenv.mkDerivation rec {
 
   inherit src patches;
 
+  outputs = [ "out" "man" ];
+
   configureFlags =
     # FIXME: perhaps use $SSL_CERT_FILE instead
     lib.optional stdenv.isLinux "--with-default-trust-store-file=/etc/ssl/certs/ca-certificates.crt"
diff --git a/pkgs/development/libraries/gperftools/default.nix b/pkgs/development/libraries/gperftools/default.nix
index 8c2feccebb7..5fa14e64a22 100644
--- a/pkgs/development/libraries/gperftools/default.nix
+++ b/pkgs/development/libraries/gperftools/default.nix
@@ -10,6 +10,12 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ unzip ] ++ stdenv.lib.optional stdenv.isLinux libunwind;
 
+  prePatch = stdenv.lib.optionalString stdenv.isDarwin ''
+    substituteInPlace Makefile.am --replace stdc++ c++
+    substituteInPlace Makefile.in --replace stdc++ c++
+    substituteInPlace libtool --replace stdc++ c++
+  '';
+
   # some packages want to link to the static tcmalloc_minimal
   # to drop the runtime dependency on gperftools
   dontDisableStatic = true;
diff --git a/pkgs/development/libraries/harfbuzz/default.nix b/pkgs/development/libraries/harfbuzz/default.nix
index 216bad19790..e1564661b42 100644
--- a/pkgs/development/libraries/harfbuzz/default.nix
+++ b/pkgs/development/libraries/harfbuzz/default.nix
@@ -8,13 +8,15 @@
 # (icu is a ~30 MB dependency, the rest is very small in comparison)
 
 stdenv.mkDerivation rec {
-  name = "harfbuzz-0.9.41";
+  name = "harfbuzz-1.0.1";
 
   src = fetchurl {
     url = "http://www.freedesktop.org/software/harfbuzz/release/${name}.tar.bz2";
-    sha256 = "0z05vj3va43adzxn026fpdvdd533q5zrs5dcxaz3gd021hysa6nq";
+    sha256 = "1a0fxw4sb6p82lz407d2wy31wln08v839ln1lpxjqbsab2nsg89j";
   };
 
+  outputs = [ "out" "doc" ];
+
   configureFlags = [
     ( "--with-graphite2=" + (if withGraphite2 then "yes" else "no") ) # not auto-detected by default
     ( "--with-icu=" +       (if withIcu       then "yes" else "no") )
diff --git a/pkgs/development/libraries/iniparser/default.nix b/pkgs/development/libraries/iniparser/default.nix
index 8d6e0b91ca0..bd2f328e257 100644
--- a/pkgs/development/libraries/iniparser/default.nix
+++ b/pkgs/development/libraries/iniparser/default.nix
@@ -2,7 +2,6 @@
 
 let
   inherit (stdenv.lib) optional;
-  isClang = (stdenv.cc.cc.isClang or false);
 in
 stdenv.mkDerivation rec{
   name = "iniparser-3.1";
@@ -15,8 +14,7 @@ stdenv.mkDerivation rec{
   patches = ./no-usr.patch;
 
   # TODO: Build dylib on Darwin
-  buildFlags = (if stdenv.isDarwin then [ "libiniparser.a" ] else [ "libiniparser.so" ])
-    ++ optional isClang "CC=clang";
+  buildFlags = (if stdenv.isDarwin then [ "libiniparser.a" ] else [ "libiniparser.so" ]) ++ [ "CC=cc" ];
 
   installPhase = ''
     mkdir -p $out/lib
diff --git a/pkgs/development/libraries/kerberos/heimdal.nix b/pkgs/development/libraries/kerberos/heimdal.nix
index 159b53b7650..98907da3e42 100644
--- a/pkgs/development/libraries/kerberos/heimdal.nix
+++ b/pkgs/development/libraries/kerberos/heimdal.nix
@@ -78,7 +78,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   meta = {
-    description = "an implementation of Kerberos 5 (and some more stuff) largely written in Sweden";
+    description = "An implementation of Kerberos 5 (and some more stuff)";
     license = licenses.bsd3;
     platforms = platforms.linux;
     maintainers = with maintainers; [ wkennington ];
diff --git a/pkgs/development/libraries/kyotocabinet/default.nix b/pkgs/development/libraries/kyotocabinet/default.nix
index 6c4575b4e9d..6617816b642 100644
--- a/pkgs/development/libraries/kyotocabinet/default.nix
+++ b/pkgs/development/libraries/kyotocabinet/default.nix
@@ -8,6 +8,18 @@ stdenv.mkDerivation rec {
     sha256 = "0g6js20x7vnpq4p8ghbw3mh9wpqksya9vwhzdx6dnlf354zjsal1";
   };
 
+  prePatch = stdenv.lib.optionalString stdenv.isDarwin ''
+    substituteInPlace kccommon.h \
+      --replace tr1/unordered_map unordered_map \
+      --replace tr1/unordered_set unordered_set \
+      --replace tr1::hash std::hash \
+      --replace tr1::unordered_map std::unordered_map \
+      --replace tr1::unordered_set std::unordered_set
+
+    substituteInPlace lab/kcdict/Makefile --replace stdc++ c++
+    substituteInPlace configure --replace stdc++ c++
+  '';
+
   buildInputs = [ zlib ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/libdrm/default.nix b/pkgs/development/libraries/libdrm/default.nix
index 775a8f92047..2323a423700 100644
--- a/pkgs/development/libraries/libdrm/default.nix
+++ b/pkgs/development/libraries/libdrm/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, pkgconfig, libpthreadstubs, libpciaccess, udev, valgrind }:
 
 stdenv.mkDerivation rec {
-  name = "libdrm-2.4.62";
+  name = "libdrm-2.4.64";
 
   src = fetchurl {
     url = "http://dri.freedesktop.org/libdrm/${name}.tar.bz2";
-    sha256 = "906c294bdbe1c94c3ca084305d61a6e5a8367f3b4986e6cc13b1e9b3f75931dc";
+    sha256 = "1dilm6cwqfx9plf3i5kkaf6m5v1zyrcadqbcjsrsshkfgpz8c1xn";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/development/libraries/libidn/default.nix b/pkgs/development/libraries/libidn/default.nix
index 4c781da6308..21013d2e072 100644
--- a/pkgs/development/libraries/libidn/default.nix
+++ b/pkgs/development/libraries/libidn/default.nix
@@ -1,11 +1,11 @@
 { fetchurl, stdenv }:
 
 stdenv.mkDerivation rec {
-  name = "libidn-1.31";
+  name = "libidn-1.32";
 
   src = fetchurl {
     url = "mirror://gnu/libidn/${name}.tar.gz";
-    sha256 = "026z12mczlag443ms9n954h36pi3m7iva9jfw8y4ispsj772zpxg";
+    sha256 = "1xf4hphhahcjm2xwx147lfpsavjwv9l4c2gf6hx71zxywbz5lpds";
   };
 
   doCheck = ! stdenv.isDarwin;
diff --git a/pkgs/development/libraries/libogg/default.nix b/pkgs/development/libraries/libogg/default.nix
index 57b8b2fc66e..4e017840472 100644
--- a/pkgs/development/libraries/libogg/default.nix
+++ b/pkgs/development/libraries/libogg/default.nix
@@ -8,6 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "16z74q422jmprhyvy7c9x909li8cqzmvzyr8cgbm52xcsp6pqs1z";
   };
 
+  outputs = [ "out" "doc" ];
+
   meta = with stdenv.lib; {
     homepage = http://xiph.org/ogg/;
     license = licenses.bsd3;
diff --git a/pkgs/development/libraries/libpcap/default.nix b/pkgs/development/libraries/libpcap/default.nix
index 9ed1aab4034..b8985bbed82 100644
--- a/pkgs/development/libraries/libpcap/default.nix
+++ b/pkgs/development/libraries/libpcap/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, flex, bison }:
 
 stdenv.mkDerivation rec {
-  name = "libpcap-1.5.3";
+  name = "libpcap-1.7.4";
   
   src = fetchurl {
     url = "http://www.tcpdump.org/release/${name}.tar.gz";
-    sha256 = "14wyjywrdi1ikaj6yc9c72m6m2r64z94lb0gm7k1a3q6q5cj3scs";
+    sha256 = "1c28ykkizd7jqgzrfkg7ivqjlqs9p6lygp26bsw2i0z8hwhi3lvs";
   };
   
   nativeBuildInputs = [ flex bison ];
@@ -17,6 +17,10 @@ stdenv.mkDerivation rec {
     else if stdenv.isDarwin then [ "--with-pcap=bpf" ]
     else [];
 
+  prePatch = stdenv.lib.optionalString stdenv.isDarwin ''
+    substituteInPlace configure --replace " -arch i386" ""
+  '';
+
   preInstall = ''mkdir -p $out/bin'';
   
   crossAttrs = {
diff --git a/pkgs/development/libraries/libsoup/bad-symbol.patch b/pkgs/development/libraries/libsoup/bad-symbol.patch
deleted file mode 100644
index df1b0af0c69..00000000000
--- a/pkgs/development/libraries/libsoup/bad-symbol.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/libsoup/libsoup-2.4.sym 2014-10-29 22:37:54 -0700
-+++ b/libsoup/libsoup-2.4.sym 2014-06-18 07:42:51 -0700
-@@ -348,7 +348,6 @@
- soup_server_get_async_context
- soup_server_get_listener
- soup_server_get_listeners
--soup_server_get_gsocket
- soup_server_get_port
- soup_server_get_type
- soup_server_get_uris
diff --git a/pkgs/development/libraries/libsoup/default.nix b/pkgs/development/libraries/libsoup/default.nix
index 12bb589cd9f..f71cc77321a 100644
--- a/pkgs/development/libraries/libsoup/default.nix
+++ b/pkgs/development/libraries/libsoup/default.nix
@@ -3,7 +3,7 @@
 , libintlOrEmpty
 , intltool, python }:
 let
-  majorVersion = "2.48";
+  majorVersion = "2.50";
   version = "${majorVersion}.0";
 in
 stdenv.mkDerivation {
@@ -11,12 +11,11 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "mirror://gnome/sources/libsoup/${majorVersion}/libsoup-${version}.tar.xz";
-    sha256 = "ea34dd64fe44343445daf6dd690d0691e9d973468de44878da97371c16d89784";
+    sha256 = "1e01365ac4af3817187ea847f9d3588c27eee01fc519a5a7cb212bb78b0f667b";
   };
 
   patchPhase = ''
     patchShebangs libsoup/
-    patch -p1 < ${./bad-symbol.patch}
   '';
 
   buildInputs = libintlOrEmpty ++ [ intltool python sqlite ];
diff --git a/pkgs/development/libraries/libtiff/default.nix b/pkgs/development/libraries/libtiff/default.nix
index 739148cb9a6..25f6cf5b6b7 100644
--- a/pkgs/development/libraries/libtiff/default.nix
+++ b/pkgs/development/libraries/libtiff/default.nix
@@ -14,6 +14,8 @@ stdenv.mkDerivation rec {
     sha256 = "0wj8d1iwk9vnpax2h29xqc2hwknxg3s0ay2d5pxkg59ihbifn6pa";
   };
 
+  outputs = [ "out" "doc" "man" ];
+
   nativeBuildInputs = [ pkgconfig ];
 
   propagatedBuildInputs = [ zlib libjpeg xz ]; #TODO: opengl support (bogus configure detection)
diff --git a/pkgs/development/libraries/libvorbis/default.nix b/pkgs/development/libraries/libvorbis/default.nix
index cff6cbe8616..d58607ea298 100644
--- a/pkgs/development/libraries/libvorbis/default.nix
+++ b/pkgs/development/libraries/libvorbis/default.nix
@@ -8,6 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "1lg1n3a6r41492r7in0fpvzc7909mc5ir9z0gd3qh2pz4yalmyal";
   };
 
+  outputs = [ "out" "doc" ];
+
   nativeBuildInputs = [ pkgconfig ];
   propagatedBuildInputs = [ libogg ];
 
diff --git a/pkgs/development/libraries/libxml2/default.nix b/pkgs/development/libraries/libxml2/default.nix
index 153096ee45c..2fdc198aa11 100644
--- a/pkgs/development/libraries/libxml2/default.nix
+++ b/pkgs/development/libraries/libxml2/default.nix
@@ -16,11 +16,13 @@ stdenv.mkDerivation (rec {
     sha256 = "1g6mf03xcabmk5ing1lwqmasr803616gb2xhn7pll10x2l5w6y2i";
   };
 
+  outputs = [ "out" "doc" ];
+
   buildInputs = stdenv.lib.optional pythonSupport python
     # Libxml2 has an optional dependency on liblzma.  However, on impure
     # platforms, it may end up using that from /usr/lib, and thus lack a
     # RUNPATH for that, leading to undefined references for its users.
-    ++ (stdenv.lib.optional stdenv.isFreeBSD xz);
+    ++ stdenv.lib.optional stdenv.isFreeBSD xz;
 
   propagatedBuildInputs = [ zlib findXMLCatalogs ];
 
diff --git a/pkgs/development/libraries/libxslt/default.nix b/pkgs/development/libraries/libxslt/default.nix
index fda24776480..3579e99ec7a 100644
--- a/pkgs/development/libraries/libxslt/default.nix
+++ b/pkgs/development/libraries/libxslt/default.nix
@@ -8,6 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "13029baw9kkyjgr7q3jccw2mz38amq7mmpr5p3bh775qawd1bisz";
   };
 
+  outputs = [ "out" "doc" ];
+
   buildInputs = [ libxml2 ];
 
   propagatedBuildInputs = [ findXMLCatalogs ];
diff --git a/pkgs/development/libraries/lzo/default.nix b/pkgs/development/libraries/lzo/default.nix
index f4bff72fa80..23168de43ed 100644
--- a/pkgs/development/libraries/lzo/default.nix
+++ b/pkgs/development/libraries/lzo/default.nix
@@ -1,32 +1,35 @@
 {stdenv, fetchurl}:
 
 stdenv.mkDerivation rec {
-  name = "lzo-2.08";
+  name = "lzo-2.09";
 
   src = fetchurl {
     url = "${meta.homepage}/download/${name}.tar.gz";
-    sha256 = "0536ad3ksk1r8h2a27d0y4p27lwjarzyndw7sagvxzj6xr6kw6xc";
+    sha256 = "0k5kpj3jnsjfxqqkblpfpx0mqcy86zs5fhjhgh2kq1hksg7ag57j";
   };
 
   configureFlags = [ "--enable-shared" ];
 
-  doCheck = true;
+  enableParallelBuilding = true;
 
-  meta = {
-    description = "A data compresion library suitable for real-time data de-/compression";
-    longDescription =
-      '' LZO is a data compression library which is suitable for data
-	 de-/compression in real-time.  This means it favours speed over
-	 compression ratio.
+  doCheck = true;
 
-	 LZO is written in ANSI C.  Both the source code and the compressed
-	 data format are designed to be portable across platforms.
-      '';
+  meta = with stdenv.lib; {
+    description = "Real-time data (de)compression library";
+    longDescription = ''
+      LZO is a portable lossless data compression library written in ANSI C.
+      Both the source code and the compressed data format are designed to be
+      portable across platforms.
+      LZO offers pretty fast compression and *extremely* fast decompression.
+      While it favours speed over compression ratio, it includes slower
+      compression levels achieving a quite competitive compression ratio
+      while still decompressing at this very high speed.
+    '';
 
     homepage = http://www.oberhumer.com/opensource/lzo;
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = licenses.gpl2Plus;
 
-    platforms = stdenv.lib.platforms.all;
-    maintainers = [ ];
+    platforms = platforms.all;
+    maintainers = with maintainers; [ nckx ];
   };
 }
diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix
index 9d7fa4ae406..66b984ee9f3 100644
--- a/pkgs/development/libraries/mesa/default.nix
+++ b/pkgs/development/libraries/mesa/default.nix
@@ -4,7 +4,6 @@
 , libvdpau, libelf, libva
 , grsecEnabled
 , enableTextureFloats ? false # Texture floats are patented, see docs/patents.txt
-, enableExtraFeatures ? false # not maintained
 }:
 
 if ! stdenv.lib.lists.elem stdenv.system stdenv.lib.platforms.mesaPlatforms then
@@ -23,7 +22,7 @@ else
 */
 
 let
-  version = "10.6.2";
+  version = "10.6.4";
   # this is the default search path for DRI drivers
   driverLink = "/run/opengl-driver" + stdenv.lib.optionalString stdenv.isi686 "-32";
 in
@@ -37,7 +36,7 @@ stdenv.mkDerivation {
       "https://launchpad.net/mesa/trunk/${version}/+download/mesa-${version}.tar.xz"
       "ftp://ftp.freedesktop.org/pub/mesa/${version}/mesa-${version}.tar.xz"
     ];
-    sha256 = "05753d3db4212900927b9894221a1669a10f56786e86a7e818b6e18a0817dca9";
+    sha256 = "8f5ac103f0f503de2f7a985b0df349bd4ecdfe7f51c714be146fa5a9a3c07b77";
   };
 
   prePatch = "patchShebangs .";
@@ -123,10 +122,8 @@ stdenv.mkDerivation {
   # ToDo: probably not all .la files are completely fixed, but it shouldn't matter
   postInstall = with stdenv.lib; ''
     mv -t "$drivers/lib/" \
-  '' + optionalString enableExtraFeatures ''
-      `#$out/lib/libXvMC*` \
-      $out/lib/gbm $out/lib/libgbm* \
-  '' + ''
+      $out/lib/libXvMC* \
+      $out/lib/d3d \
       $out/lib/vdpau \
       $out/lib/libxatracker*
 
diff --git a/pkgs/development/libraries/openldap/default.nix b/pkgs/development/libraries/openldap/default.nix
index e5b7ce10719..83c65048227 100644
--- a/pkgs/development/libraries/openldap/default.nix
+++ b/pkgs/development/libraries/openldap/default.nix
@@ -1,20 +1,16 @@
-{ stdenv, fetchurl, autoconf, openssl, cyrus_sasl, db, groff }:
+{ stdenv, fetchurl, openssl, cyrus_sasl, db, groff }:
 
 stdenv.mkDerivation rec {
-  name = "openldap-2.4.41";
+  name = "openldap-2.4.42";
 
   src = fetchurl {
     url = "http://www.openldap.org/software/download/OpenLDAP/openldap-release/${name}.tgz";
-    sha256 = "0vkzfd1pmin6xsv8lb1nabfxma8n1q00khr6nfifqkxlm2s6p197";
+    sha256 = "0qwfpb5ipp2l76v11arghq5mr0sjc6xhjfg8a0kgsaw5qpib1dzf";
   };
 
-  nativeBuildInputs = [ autoconf ];
-  buildInputs = [ openssl cyrus_sasl db groff ];
+  outputs = [ "out" "man" ];
 
-  # NOTE: Only needed for the gcc5 patch
-  preConfigure = ''
-    autoconf
-  '';
+  buildInputs = [ openssl cyrus_sasl db groff ];
 
   configureFlags =
     [ "--enable-overlays"
diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix
index b9224dad110..ca3e7999f9b 100644
--- a/pkgs/development/libraries/openssl/default.nix
+++ b/pkgs/development/libraries/openssl/default.nix
@@ -18,6 +18,8 @@ stdenv.mkDerivation rec {
     sha1 = "9d1977cc89242cd11471269ece2ed4650947c046";
   };
 
+  outputs = [ "out" "man" ];
+
   patches = optional stdenv.isCygwin ./1.0.1-cygwin64.patch
     ++ optional (stdenv.isDarwin || (stdenv ? cross && stdenv.cross.libc == "libSystem")) ./darwin-arch.patch;
 
diff --git a/pkgs/development/libraries/pcre/default.nix b/pkgs/development/libraries/pcre/default.nix
index 71f0df40ec2..a34f3e5e132 100644
--- a/pkgs/development/libraries/pcre/default.nix
+++ b/pkgs/development/libraries/pcre/default.nix
@@ -12,6 +12,8 @@ stdenv.mkDerivation rec {
     sha256 = "17bqykp604p7376wj3q2nmjdhrb6v1ny8q08zdwi7qvc02l9wrsi";
   };
 
+  outputs = [ "out" "doc" "man" ];
+
   configureFlags = ''
     --enable-jit
     ${if unicodeSupport then "--enable-unicode-properties" else ""}
diff --git a/pkgs/development/libraries/poppler/default.nix b/pkgs/development/libraries/poppler/default.nix
index f54f12031b4..ce63f5c9716 100644
--- a/pkgs/development/libraries/poppler/default.nix
+++ b/pkgs/development/libraries/poppler/default.nix
@@ -16,6 +16,8 @@ stdenv.mkDerivation rec {
     inherit sha256;
   };
 
+  outputs = [ "out" "doc" ];
+
   patches = [ ./datadir_env.patch ];
 
   propagatedBuildInputs = with stdenv.lib;
diff --git a/pkgs/development/libraries/snappy/default.nix b/pkgs/development/libraries/snappy/default.nix
index 90469508d0e..5ae8f5e6252 100644
--- a/pkgs/development/libraries/snappy/default.nix
+++ b/pkgs/development/libraries/snappy/default.nix
@@ -19,7 +19,8 @@ stdenv.mkDerivation rec {
   # -DNDEBUG for speed
   configureFlags = [ "CXXFLAGS=-DNDEBUG" ];
 
-  doCheck = true;
+  # SIGILL on darwin
+  doCheck = !stdenv.isDarwin;
 
   meta = with stdenv.lib; {
     homepage = http://code.google.com/p/snappy/;
diff --git a/pkgs/development/libraries/sqlite/default.nix b/pkgs/development/libraries/sqlite/default.nix
index 963566e27fa..f043a37033a 100644
--- a/pkgs/development/libraries/sqlite/default.nix
+++ b/pkgs/development/libraries/sqlite/default.nix
@@ -3,18 +3,49 @@
 assert interactive -> readline != null && ncurses != null;
 
 stdenv.mkDerivation {
-  name = "sqlite-3.8.10.2";
+  name = "sqlite-3.8.11.1";
 
   src = fetchurl {
-    url = "http://sqlite.org/2015/sqlite-autoconf-3081002.tar.gz";
-    sha1 = "c2f2c17d3dc4c4e179d35cc04e4420636d48a152";
+    url = "http://sqlite.org/2015/sqlite-autoconf-3081101.tar.gz";
+    sha1 = "d0e22d7e361b6f50830a3cdeafe35311443f8f9a";
   };
 
   buildInputs = lib.optionals interactive [ readline ncurses ];
 
-  configureFlags = "--enable-threadsafe";
+  configureFlags = [ "--enable-threadsafe" ];
 
-  NIX_CFLAGS_COMPILE = "-DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_SECURE_DELETE=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY=1";
+  NIX_CFLAGS_COMPILE = [
+    "-DSQLITE_ENABLE_COLUMN_METADATA"
+    "-DSQLITE_ENABLE_DBSTAT_VTAB"
+    "-DSQLITE_ENABLE_FTS3"
+    "-DSQLITE_ENABLE_FTS3_PARENTHESIS"
+    "-DSQLITE_ENABLE_FTS4"
+    "-DSQLITE_ENABLE_RTREE"
+    "-DSQLITE_ENABLE_STMT_SCANSTATUS"
+    "-DSQLITE_ENABLE_UNLOCK_NOTIFY"
+    "-DSQLITE_SOUNDEX"
+    "-DSQLITE_SECURE_DELETE"
+  ];
+
+  # Test for features which may not be available at compile time
+  preBuild = ''
+    # Use pread(), pread64(), pwrite(), pwrite64() functions for better performance if they are available.
+    if cc -Werror=implicit-function-declaration -x c - -o "$TMPDIR/pread_pwrite_test" <<< \
+      ''$'#include <unistd.h>\nint main()\n{\n  pread(0, NULL, 0, 0);\n  pwrite(0, NULL, 0, 0);\n  return 0;\n}'; then
+      export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -DUSE_PREAD"
+    fi
+    if cc -Werror=implicit-function-declaration -x c - -o "$TMPDIR/pread64_pwrite64_test" <<< \
+      ''$'#include <unistd.h>\nint main()\n{\n  pread64(0, NULL, 0, 0);\n  pwrite64(0, NULL, 0, 0);\n  return 0;\n}'; then
+      export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -DUSE_PREAD64"
+    elif cc -D_LARGEFILE64_SOURCE -Werror=implicit-function-declaration -x c - -o "$TMPDIR/pread64_pwrite64_test" <<< \
+      ''$'#include <unistd.h>\nint main()\n{\n  pread64(0, NULL, 0, 0);\n  pwrite64(0, NULL, 0, 0);\n  return 0;\n}'; then
+      export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -DUSE_PREAD64 -D_LARGEFILE64_SOURCE"
+    fi
+
+    echo ""
+    echo "NIX_CFLAGS_COMPILE = $NIX_CFLAGS_COMPILE"
+    echo ""
+  '';
 
   meta = {
     homepage = http://www.sqlite.org/;
diff --git a/pkgs/development/libraries/wiredtiger/default.nix b/pkgs/development/libraries/wiredtiger/default.nix
index 5fe75248e35..347686014d1 100644
--- a/pkgs/development/libraries/wiredtiger/default.nix
+++ b/pkgs/development/libraries/wiredtiger/default.nix
@@ -58,6 +58,12 @@ stdenv.mkDerivation rec {
     ./autogen.sh
   '';
 
+  prePatch = stdenv.lib.optionalString stdenv.isDarwin ''
+    substituteInPlace api/leveldb/leveldb_wt.h --replace \
+      '#include "wiredtiger.h"' \
+      ''$'#include "wiredtiger.h"\n#include "pthread.h"'
+  '';
+
   meta = {
     homepage = http://wiredtiger.com/;
     description = "";
diff --git a/pkgs/development/perl-modules/lwp-test-with-localhost.patch b/pkgs/development/perl-modules/lwp-test-with-localhost.patch
new file mode 100644
index 00000000000..25b96796d23
--- /dev/null
+++ b/pkgs/development/perl-modules/lwp-test-with-localhost.patch
@@ -0,0 +1,75 @@
+From 2d7a479b39bb20a0d61f067ba6c2df92117fcb8c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
+Date: Wed, 23 Apr 2014 12:45:38 +0200
+Subject: [PATCH] Connect to localhost instead of hostname
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The hostname does not have to be resolvable nor reachable. It's just
+a machine name.
+
+Signed-off-by: Petr Písař <ppisar@redhat.com>
+---
+ t/local/http.t   | 2 +-
+ t/robot/ua-get.t | 2 +-
+ t/robot/ua.t     | 2 +-
+ talk-to-ourself  | 3 +--
+ 4 files changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/t/local/http.t b/t/local/http.t
+index 779cc21..534b4c8 100644
+--- a/t/local/http.t
++++ b/t/local/http.t
+@@ -20,7 +20,7 @@ if ($D eq 'daemon') {
+ 
+     require HTTP::Daemon;
+ 
+-    my $d = HTTP::Daemon->new(Timeout => 10);
++    my $d = HTTP::Daemon->new(Timeout => 10, LocalAddr => 'localhost');
+ 
+     print "Please to meet you at: <URL:", $d->url, ">\n";
+     open(STDOUT, $^O eq 'VMS'? ">nl: " : ">/dev/null");
+diff --git a/t/robot/ua-get.t b/t/robot/ua-get.t
+index 5754c4b..bf24589 100644
+--- a/t/robot/ua-get.t
++++ b/t/robot/ua-get.t
+@@ -19,7 +19,7 @@ if ($D eq 'daemon') {
+ 
+     require HTTP::Daemon;
+ 
+-    my $d = new HTTP::Daemon Timeout => 10;
++    my $d = new HTTP::Daemon Timeout => 10, LocalAddr => 'localhost';
+ 
+     print "Please to meet you at: <URL:", $d->url, ">\n";
+     open(STDOUT, $^O eq 'MSWin32' ?  ">nul" : $^O eq 'VMS' ? ">NL:"  : ">/dev/null");
+diff --git a/t/robot/ua.t b/t/robot/ua.t
+index 21ad5c8..11fafa8 100644
+--- a/t/robot/ua.t
++++ b/t/robot/ua.t
+@@ -19,7 +19,7 @@ if ($D eq 'daemon') {
+ 
+     require HTTP::Daemon;
+ 
+-    my $d = new HTTP::Daemon Timeout => 10;
++    my $d = new HTTP::Daemon Timeout => 10, LocalAddr => 'localhost';
+ 
+     print "Please to meet you at: <URL:", $d->url, ">\n";
+     open(STDOUT, $^O eq 'MSWin32' ?  ">nul" : $^O eq 'VMS' ? ">NL:"  : ">/dev/null");
+diff --git a/talk-to-ourself b/talk-to-ourself
+index 6c0257a..b4acda2 100644
+--- a/talk-to-ourself
++++ b/talk-to-ourself
+@@ -9,8 +9,7 @@ require IO::Socket;
+ 
+ if (@ARGV >= 2 && $ARGV[0] eq "--port") {
+     my $port = $ARGV[1];
+-    require Sys::Hostname;
+-    my $host = Sys::Hostname::hostname();
++    my $host = 'localhost';
+     if (my $socket = IO::Socket::INET->new(PeerAddr => "$host:$port", Timeout => 5)) {
+ 	require IO::Select;
+ 	if (IO::Select->new($socket)->can_read(1)) {
+-- 
+1.9.0
+
diff --git a/pkgs/development/python-modules/generic/wrap.sh b/pkgs/development/python-modules/generic/wrap.sh
index b6d2a66afff..6ad603e0138 100644
--- a/pkgs/development/python-modules/generic/wrap.sh
+++ b/pkgs/development/python-modules/generic/wrap.sh
@@ -26,7 +26,7 @@ wrapPythonProgramsIn() {
     done
 
     # Find all regular files in the output directory that are executable.
-    for f in $(find "$dir" -type f -perm +0100); do
+    for f in $(find "$dir" -type f -perm /0100); do
         # Rewrite "#! .../env python" to "#! /nix/store/.../python".
         if head -n1 "$f" | grep -q '#!.*/env.*\(python\|pypy\)'; then
             sed -i "$f" -e "1 s^.*/env[ ]*\(python\|pypy\)^#! $python^"
diff --git a/pkgs/development/python-modules/pygobject/default.nix b/pkgs/development/python-modules/pygobject/default.nix
index 9393b0a2f94..6f713933040 100644
--- a/pkgs/development/python-modules/pygobject/default.nix
+++ b/pkgs/development/python-modules/pygobject/default.nix
@@ -8,6 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "1f5dfxjnil2glfwxnqr14d2cjfbkghsbsn8n04js2c2icr7iv2pv";
   };
 
+  outputs = [ "out" "doc" ];
+
   configureFlags = "--disable-introspection";
 
   buildInputs = [ python pkgconfig glib ];
diff --git a/pkgs/development/tools/build-managers/cmake/default.nix b/pkgs/development/tools/build-managers/cmake/default.nix
index 112950b690d..c39fa657f84 100644
--- a/pkgs/development/tools/build-managers/cmake/default.nix
+++ b/pkgs/development/tools/build-managers/cmake/default.nix
@@ -10,8 +10,8 @@ assert wantPS -> (ps != null);
 
 let
   os = stdenv.lib.optionalString;
-  majorVersion = "3.2";
-  minorVersion = "2";
+  majorVersion = "3.3";
+  minorVersion = "1";
   version = "${majorVersion}.${minorVersion}";
 in
 
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}files/v${majorVersion}/cmake-${version}.tar.gz";
-    sha256 = "0y3w83al0vh9ll7fnqm3nx7l8hsl85k8iv9abxb791q36rp4xsdd";
+    sha256 = "1mp32dqywk4dfw7zmpgp31axszv7h74yk69g273z21q7d8n04rfd";
   };
 
   enableParallelBuilding = true;
diff --git a/pkgs/development/tools/misc/gnum4/default.nix b/pkgs/development/tools/misc/gnum4/default.nix
index 67688254a40..7174f4b41c3 100644
--- a/pkgs/development/tools/misc/gnum4/default.nix
+++ b/pkgs/development/tools/misc/gnum4/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl}:
+{ stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
   name = "gnum4-1.4.17";
@@ -12,6 +12,8 @@ stdenv.mkDerivation rec {
     && !stdenv.isCygwin                    # XXX: `test-dup2' fails on Cygwin
     && !stdenv.isSunOS;                    # XXX: `test-setlocale2.sh' fails
 
+  configureFlags = "--with-syscmd-shell=${stdenv.shell}";
+
   # Upstream is aware of it; it may be in the next release.
   patches = [ ./s_isdir.patch ];
 
diff --git a/pkgs/development/tools/misc/lsof/default.nix b/pkgs/development/tools/misc/lsof/default.nix
index f7feeca5d9d..c17c2d73e5f 100644
--- a/pkgs/development/tools/misc/lsof/default.nix
+++ b/pkgs/development/tools/misc/lsof/default.nix
@@ -27,6 +27,8 @@ stdenv.mkDerivation rec {
     cp lsof $out/bin
   '';
 
+  isBroken = stdenv.isDarwin;
+
   meta = {
     homepage = ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/;
     description = "A tool to list open files";
diff --git a/pkgs/development/tools/misc/patchelf/setup-hook.sh b/pkgs/development/tools/misc/patchelf/setup-hook.sh
index b0d37b73e2b..944b418d1b4 100644
--- a/pkgs/development/tools/misc/patchelf/setup-hook.sh
+++ b/pkgs/development/tools/misc/patchelf/setup-hook.sh
@@ -9,7 +9,7 @@ patchELF() {
     if [ -e "$prefix" ]; then
         find "$prefix" \( \
             \( -type f -a -name "*.so*" \) -o \
-            \( -type f -a -perm +0100 \) \
+            \( -type f -a -perm /0100 \) \
             \) -print -exec patchelf --shrink-rpath '{}' \;
     fi
     stopNest
diff --git a/pkgs/development/tools/misc/texinfo/6.0.nix b/pkgs/development/tools/misc/texinfo/6.0.nix
new file mode 100644
index 00000000000..ffeae17eb57
--- /dev/null
+++ b/pkgs/development/tools/misc/texinfo/6.0.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl, ncurses, perl, xz, interactive ? false }:
+
+stdenv.mkDerivation rec {
+  name = "texinfo-6.0";
+
+  src = fetchurl {
+    url = "mirror://gnu/texinfo/${name}.tar.xz";
+    sha256 = "1r3i6jyynn6ab45fxw5bms8mflk9ry4qpj6gqyry72vfd5c47fhi";
+  };
+
+  buildInputs = [ perl xz ]
+    ++ stdenv.lib.optional interactive ncurses;
+
+  preInstall = ''
+    installFlags="TEXMF=$out/texmf-dist";
+    installTargets="install install-tex";
+  '';
+
+  doCheck = !stdenv.isDarwin;
+
+  meta = {
+    homepage = "http://www.gnu.org/software/texinfo/";
+    description = "The GNU documentation system";
+    license = stdenv.lib.licenses.gpl3Plus;
+    platforms = stdenv.lib.platforms.all;
+
+    longDescription = ''
+      Texinfo is the official documentation format of the GNU project.
+      It was invented by Richard Stallman and Bob Chassell many years
+      ago, loosely based on Brian Reid's Scribe and other formatting
+      languages of the time.  It is used by many non-GNU projects as
+      well.
+
+      Texinfo uses a single source file to produce output in a number
+      of formats, both online and printed (dvi, html, info, pdf, xml,
+      etc.).  This means that instead of writing different documents
+      for online information and another for a printed manual, you
+      need write only one document.  And when the work is revised, you
+      need revise only that one document.  The Texinfo system is
+      well-integrated with GNU Emacs.
+    '';
+    branch = "5.2";
+  };
+}
diff --git a/pkgs/misc/cups/default.nix b/pkgs/misc/cups/default.nix
index bcd27d68ce0..5032ef245a6 100644
--- a/pkgs/misc/cups/default.nix
+++ b/pkgs/misc/cups/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, pkgconfig, zlib, libjpeg, libpng, libtiff, pam
-, dbus, acl, gmp, xdg_utils
+, dbus, acl, gmp
 , libusb ? null, gnutls ? null, avahi ? null, libpaper ? null
 }:
 
@@ -17,7 +17,7 @@ stdenv.mkDerivation {
   };
 
   buildInputs = [ pkgconfig zlib libjpeg libpng libtiff libusb gnutls avahi libpaper ]
-    ++ optionals stdenv.isLinux [ pam dbus.libs acl xdg_utils ] ;
+    ++ optionals stdenv.isLinux [ pam dbus.libs acl ];
 
   propagatedBuildInputs = [ gmp ];
 
@@ -54,8 +54,7 @@ stdenv.mkDerivation {
       "CUPS_PRIMARY_SYSTEM_GROUP=root"
     ];
 
-  postInstall =
-    ''
+  postInstall = ''
       # Delete obsolete stuff that conflicts with cups-filters.
       rm -rf $out/share/cups/banners $out/share/cups/data/testprint
 
@@ -71,6 +70,10 @@ stdenv.mkDerivation {
           mv "$f" "''${f/org\.cups\./}"
         fi
       done
+    '' + optionalString stdenv.isLinux ''
+      # Use xdg-open when on Linux
+      substituteInPlace $out/share/applications/cups.desktop \
+        --replace "Exec=htmlview" "Exec=xdg-open"
     '';
 
   meta = {
diff --git a/pkgs/misc/ghostscript/default.nix b/pkgs/misc/ghostscript/default.nix
index 820e5f3cffe..4d9d9cedde5 100644
--- a/pkgs/misc/ghostscript/default.nix
+++ b/pkgs/misc/ghostscript/default.nix
@@ -7,26 +7,41 @@
 
 assert x11Support -> x11 != null;
 assert cupsSupport -> cups != null;
+let
+  version = "9.15";
+  sha256 = "0p1isp6ssfay141klirn7n9s8b546vcz6paksfmksbwy0ljsypg6";
+
+  fonts = stdenv.mkDerivation {
+    name = "ghostscript-fonts";
+
+    srcs = [
+      (fetchurl {
+        url = "mirror://sourceforge/gs-fonts/ghostscript-fonts-std-8.11.tar.gz";
+        sha256 = "00f4l10xd826kak51wsmaz69szzm2wp8a41jasr4jblz25bg7dhf";
+      })
+      (fetchurl {
+        url = "mirror://gnu/ghostscript/gnu-gs-fonts-other-6.0.tar.gz";
+        sha256 = "1cxaah3r52qq152bbkiyj2f7dx1rf38vsihlhjmrvzlr8v6cqil1";
+      })
+      # ... add other fonts here
+    ];
 
+    installPhase = ''
+      mkdir "$out"
+      mv -v * "$out/"
+    '';
+  };
+
+in
 stdenv.mkDerivation rec {
-  name = "ghostscript-9.15";
+  name = "ghostscript-${version}";
 
   src = fetchurl {
     url = "http://downloads.ghostscript.com/public/${name}.tar.bz2";
-    sha256 = "0p1isp6ssfay141klirn7n9s8b546vcz6paksfmksbwy0ljsypg6";
+    inherit sha256;
   };
 
-  fonts = [
-    (fetchurl {
-      url = "mirror://sourceforge/gs-fonts/ghostscript-fonts-std-8.11.tar.gz";
-      sha256 = "00f4l10xd826kak51wsmaz69szzm2wp8a41jasr4jblz25bg7dhf";
-    })
-    (fetchurl {
-      url = "mirror://gnu/ghostscript/gnu-gs-fonts-other-6.0.tar.gz";
-      sha256 = "1cxaah3r52qq152bbkiyj2f7dx1rf38vsihlhjmrvzlr8v6cqil1";
-    })
-    # ... add other fonts here
-  ];
+  outputs = [ "out" "doc" ];
 
   enableParallelBuilding = true;
 
@@ -48,36 +63,34 @@ stdenv.mkDerivation rec {
 
   makeFlags = [ "cups_serverroot=$(out)" "cups_serverbin=$(out)/lib/cups" ];
 
+  preConfigure = ''
+    rm -rf jpeg libpng zlib jasper expat tiff lcms{,2} jbig2dec openjpeg freetype cups/libs
+
+    sed "s@if ( test -f \$(INCLUDE)[^ ]* )@if ( true )@; s@INCLUDE=/usr/include@INCLUDE=/no-such-path@" -i base/unix-aux.mak
+  '';
+
   configureFlags =
-    [ "--with-system-libtiff" "--disable-sse2"
+    [ "--with-system-libtiff"
       "--enable-dynamic"
       (if x11Support then "--with-x" else "--without-x")
       (if cupsSupport then "--enable-cups" else "--disable-cups")
     ];
 
   doCheck = true;
+  preCheck = "mkdir ./obj";
+  # parallel check sometimes gave: Fatal error: can't create ./obj/whitelst.o
 
-  installTargets="install soinstall";
-
-  #CFLAGS = "-fPIC";
-  #NIX_LDFLAGS =
-  #  "-lz -rpath${ if stdenv.isDarwin then " " else "="}${freetype}/lib";
-
-  preConfigure = ''
-    rm -rf jpeg libpng zlib jasper expat tiff lcms{,2} jbig2dec openjpeg freetype cups/libs
-
-    sed "s@if ( test -f \$(INCLUDE)[^ ]* )@if ( true )@; s@INCLUDE=/usr/include@INCLUDE=/no-such-path@" -i base/unix-aux.mak
-  '';
+  # don't build/install statically linked bin/gs
+  buildFlags = "so";
+  installTargets="soinstall";
 
   postInstall = ''
-    # ToDo: web says the fonts should be already included
-    for i in $fonts; do
-      (cd $out/share/ghostscript && tar xvfz $i)
-    done
+    ln -s gsc "$out"/bin/gs
 
-    rm -rf $out/lib/cups/filter/{gstopxl,gstoraster}
+    mkdir -p "$doc/share/ghostscript/${version}"
+    mv "$out/share/ghostscript/${version}"/{doc,examples} "$doc/share/ghostscript/${version}/"
 
-    rm -rf $out/share/ghostscript/*/{doc,examples}
+    ln -s "${fonts}" "$out/share/ghostscript/fonts"
   '';
 
   meta = {
diff --git a/pkgs/os-specific/darwin/apple-source-releases/CF/default.nix b/pkgs/os-specific/darwin/apple-source-releases/CF/default.nix
index f919dde7f69..2aca836ba48 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/CF/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/CF/default.nix
@@ -1,5 +1,8 @@
 { stdenv, appleDerivation, icu, dyld, libdispatch, launchd, libclosure }:
 
+# this project uses blocks, a clang-only extension
+assert stdenv.cc.isClang;
+
 appleDerivation {
   buildInputs = [ dyld icu libdispatch launchd libclosure ];
 
diff --git a/pkgs/os-specific/darwin/apple-source-releases/default.nix b/pkgs/os-specific/darwin/apple-source-releases/default.nix
index f29a2b5b911..e53637ee148 100644
--- a/pkgs/os-specific/darwin/apple-source-releases/default.nix
+++ b/pkgs/os-specific/darwin/apple-source-releases/default.nix
@@ -78,6 +78,7 @@ let
     Libsystem       = applePackage "Libsystem"         "1197.1.1"    "1yfj2qdrf9vrzs7p9m4wlb7zzxcrim1gw43x4lvz4qydpp5kg2rh" {};
     libutil         = applePackage "libutil"           "38"          "12gsvmj342n5d81kqwba68bmz3zf2757442g1sz2y5xmcapa3g5f" {};
     libunwind       = applePackage "libunwind"         "35.3"        "0miffaa41cv0lzf8az5k1j1ng8jvqvxcr4qrlkf3xyj479arbk1b" {};
+    lsof            = applePackage "lsof"              "53"          "0ylzds2rhq5v8rddh0dgpcndsp9n3slfp30wsbl5fmsch7a5356j" {};
     mDNSResponder   = applePackage "mDNSResponder"     "522.92.1"    "1cp87qda1s7brriv413i71yggm8yqfwv64vknrnqv24fcb8hzbmy" {};
     objc4           = applePackage "objc4"             "551.1"       "1jrdb6yyb5jwwj27c1r0nr2y2ihqjln8ynj61mpkvp144c1cm5bg" {};
     objc4_pure      = applePackage "objc4/pure.nix"    "551.1"       "1jrdb6yyb5jwwj27c1r0nr2y2ihqjln8ynj61mpkvp144c1cm5bg" {};
diff --git a/pkgs/os-specific/darwin/apple-source-releases/lsof/default.nix b/pkgs/os-specific/darwin/apple-source-releases/lsof/default.nix
new file mode 100644
index 00000000000..23506f5c217
--- /dev/null
+++ b/pkgs/os-specific/darwin/apple-source-releases/lsof/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, appleDerivation, ncurses }:
+
+appleDerivation {
+  buildInputs = [ ncurses ];
+
+  postUnpack = ''
+    sourceRoot="$sourceRoot/lsof"
+  '';
+
+  prePatch = ''
+    mv Configure configure
+    substituteInPlace configure \
+      --replace '`which make`' "$(type -P make)" \
+      --replace /usr/include "${stdenv.libc}/include" \
+      --replace -lcurses -lncurses
+  '';
+
+  dontAddPrefix = true;
+
+  configureFlags = [ "-n" "darwin" ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/man/man8
+    cp lsof.8 $out/man/man8/
+    cp lsof $out/bin
+  '';
+}
diff --git a/pkgs/os-specific/linux/kbd/default.nix b/pkgs/os-specific/linux/kbd/default.nix
index 4c6f33b1d80..bb2915958f7 100644
--- a/pkgs/os-specific/linux/kbd/default.nix
+++ b/pkgs/os-specific/linux/kbd/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, autoreconfHook, gzip, bzip2, pkgconfig, check, pam }:
 
 stdenv.mkDerivation rec {
-  name = "kbd-2.0.2";
+  name = "kbd-2.0.3";
 
   src = fetchurl {
     url = "mirror://kernel/linux/utils/kbd/${name}.tar.xz";
-    sha256 = "04mrms12nm5sas0nxs94yrr3hz7gmqhnmfgb9ff34bh1jszxmzcx";
+    sha256 = "0ppv953gn2zylcagr4z6zg5y2x93dxrml29plypg6xgbq3hrv2bs";
   };
 
   /* Get the dvorak programmer keymap (present in X but not in kbd) */
diff --git a/pkgs/os-specific/linux/udisks/2-default.nix b/pkgs/os-specific/linux/udisks/2-default.nix
index 9b7a7501629..76d6caa767c 100644
--- a/pkgs/os-specific/linux/udisks/2-default.nix
+++ b/pkgs/os-specific/linux/udisks/2-default.nix
@@ -11,6 +11,8 @@ stdenv.mkDerivation rec {
     sha256 = "0spl155k0g2l2hvqf8xyjv08i68gfyhzpjva6cwlzxx0bz4gbify";
   };
 
+  outputs = [ "out" "doc" ];
+
   patches = [ ./force-path.patch ];
 
   # FIXME remove /var/run/current-system/sw/* references
diff --git a/pkgs/servers/nosql/mongodb/default.nix b/pkgs/servers/nosql/mongodb/default.nix
index 43ab075090c..4c293a6b3ef 100644
--- a/pkgs/servers/nosql/mongodb/default.nix
+++ b/pkgs/servers/nosql/mongodb/default.nix
@@ -21,6 +21,10 @@ let version = "3.0.5";
     ] ++ optional stdenv.is64bit wiredtiger;
 
     other-args = concatStringsSep " " ([
+      # these are opt-in, lol
+      "--cc-use-shell-environment"
+      "--cxx-use-shell-environment"
+
       "--c++11=on"
       "--ssl"
       #"--rocksdb" # Don't have this packaged yet
@@ -47,6 +51,13 @@ in stdenv.mkDerivation rec {
     # fix environment variable reading
     substituteInPlace SConstruct \
         --replace "env = Environment(" "env = Environment(ENV = os.environ,"
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+
+    substituteInPlace src/third_party/s2/s1angle.cc --replace drem remainder
+    substituteInPlace src/third_party/s2/s1interval.cc --replace drem remainder
+    substituteInPlace src/third_party/s2/s2cap.cc --replace drem remainder
+    substituteInPlace src/third_party/s2/s2latlng.cc --replace drem remainder
+    substituteInPlace src/third_party/s2/s2latlngrect.cc --replace drem remainder
   '';
 
   buildPhase = ''
diff --git a/pkgs/servers/plex/default.nix b/pkgs/servers/plex/default.nix
index 62334de1b56..1c7ff5c49df 100644
--- a/pkgs/servers/plex/default.nix
+++ b/pkgs/servers/plex/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
       patchelf --set-rpath "$out/usr/lib/plexmediaserver" "$out/usr/lib/plexmediaserver/$bin"
     done
 
-    find $out/usr/lib/plexmediaserver/Resources -type f -a -perm +0100 \
+    find $out/usr/lib/plexmediaserver/Resources -type f -a -perm /0100 \
         -print -exec patchelf --set-interpreter "${glibc}/lib/ld-linux-x86-64.so.2" '{}' \;
 
 
diff --git a/pkgs/servers/sql/mariadb/default.nix b/pkgs/servers/sql/mariadb/default.nix
index c8e9831f703..90372142704 100644
--- a/pkgs/servers/sql/mariadb/default.nix
+++ b/pkgs/servers/sql/mariadb/default.nix
@@ -5,11 +5,11 @@
 with stdenv.lib;
 stdenv.mkDerivation rec {
   name = "mariadb-${version}";
-  version = "10.0.20";
+  version = "10.0.21";
 
   src = fetchurl {
     url    = "https://downloads.mariadb.org/interstitial/mariadb-${version}/source/mariadb-${version}.tar.gz";
-    sha256 = "0ywb730l68mxvmpik1x2ndbdaaks6dmc17pxspspm5wlqxinjkrs";
+    sha256 = "0i9mzbn35f4lj4y1lqzgbavh5xyx18zfn0ks0nqzvppabkhk56jb";
   };
 
   buildInputs = [ cmake ncurses openssl zlib pcre libxml2 boost judy bison libevent ]
@@ -54,7 +54,8 @@ stdenv.mkDerivation rec {
     "-DWITHOUT_TOKUDB=1"
   ];
 
-  enableParallelBuilding = true;
+  # fails to find lex_token.h sometimes
+  enableParallelBuilding = false;
 
   outputs = [ "out" "lib" ];
 
diff --git a/pkgs/servers/x11/xorg/darwin/0001-XQuartz-Ensure-we-wait-for-the-server-thread-to-term.patch b/pkgs/servers/x11/xorg/darwin/0001-XQuartz-Ensure-we-wait-for-the-server-thread-to-term.patch
deleted file mode 100644
index cd87e396d4f..00000000000
--- a/pkgs/servers/x11/xorg/darwin/0001-XQuartz-Ensure-we-wait-for-the-server-thread-to-term.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From ec6007e6f7772a90713c9c51c64359229961ce27 Mon Sep 17 00:00:00 2001
-From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
-Date: Sun, 6 Apr 2014 05:32:00 -0700
-Subject: [PATCH] XQuartz: Ensure we wait for the server thread to terminate
-
-AKA: XQuartz 2.7.5 doesn't delete its /tmp/.X$d-lock
-
-http://xquartz.macosforge.org/trac/ticket/823
-
-Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
----
- hw/xquartz/X11Controller.m | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/hw/xquartz/X11Controller.m b/hw/xquartz/X11Controller.m
-index 5445c6f..022e832 100644
---- a/hw/xquartz/X11Controller.m
-+++ b/hw/xquartz/X11Controller.m
-@@ -942,9 +942,8 @@ extern char *bundle_id_prefix;
-     /* shutdown the X server, it will exit () for us. */
-     DarwinSendDDXEvent(kXquartzQuit, 0);
- 
--    /* In case it doesn't, exit anyway after a while. */
--    remain = 10000000;
--    while ((remain = usleep(remain)) > 0) ;
-+    /* In case it doesn't, exit anyway after 5s. */
-+    [NSThread sleepForTimeInterval:5.0];
- 
-     exit(1);
- }
--- 
-1.9.1
-
diff --git a/pkgs/servers/x11/xorg/darwin/0001-XQuartz-GLX-Use-__glXEnableExtension-to-build-extens.patch b/pkgs/servers/x11/xorg/darwin/0001-XQuartz-GLX-Use-__glXEnableExtension-to-build-extens.patch
new file mode 100644
index 00000000000..ff297a8df96
--- /dev/null
+++ b/pkgs/servers/x11/xorg/darwin/0001-XQuartz-GLX-Use-__glXEnableExtension-to-build-extens.patch
@@ -0,0 +1,78 @@
+From fff30cdea46616eb92f4dd9402ebd27fdb55e13b Mon Sep 17 00:00:00 2001
+From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+Date: Sun, 1 Jun 2014 04:29:19 -0700
+Subject: [PATCH 1/6] XQuartz: GLX: Use __glXEnableExtension to build
+ extensions list
+
+Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
+(cherry picked from commit 3790001ea29658872aebda00a03170e392b47878)
+---
+ hw/xquartz/GL/indirect.c | 37 +++++++++++++++++++++++++++++++------
+ 1 file changed, 31 insertions(+), 6 deletions(-)
+
+diff --git a/hw/xquartz/GL/indirect.c b/hw/xquartz/GL/indirect.c
+index 19b7d86..4e6ab3d 100644
+--- a/hw/xquartz/GL/indirect.c
++++ b/hw/xquartz/GL/indirect.c
+@@ -52,6 +52,7 @@
+ 
+ #include "visualConfigs.h"
+ #include "dri.h"
++#include "extension_string.h"
+ 
+ #include "darwin.h"
+ #define GLAQUA_DEBUG_MSG(msg, args ...) ASL_LOG(ASL_LEVEL_DEBUG, "GLXAqua", \
+@@ -111,6 +112,10 @@ typedef struct __GLXAquaDrawable __GLXAquaDrawable;
+  */
+ struct __GLXAquaScreen {
+     __GLXscreen base;
++
++    /* Supported GLX extensions */
++    unsigned char glx_enable_bits[__GLX_EXT_BYTES];
++
+     int index;
+     int num_vis;
+ };
+@@ -541,13 +546,33 @@ __glXAquaScreenProbe(ScreenPtr pScreen)
+ 
+     screen->base.GLXmajor = 1;
+     screen->base.GLXminor = 4;
+-    screen->base.GLXextensions = strdup("GLX_SGIX_fbconfig "
+-                                        "GLX_SGIS_multisample "
+-                                        "GLX_ARB_multisample "
+-                                        "GLX_EXT_visual_info "
+-                                        "GLX_EXT_import_context ");
+ 
+-    /*We may be able to add more GLXextensions at a later time. */
++    memset(screen->glx_enable_bits, 0, __GLX_EXT_BYTES);
++
++    __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_visual_info");
++    __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_visual_rating");
++    __glXEnableExtension(screen->glx_enable_bits, "GLX_EXT_import_context");
++    __glXEnableExtension(screen->glx_enable_bits, "GLX_OML_swap_method");
++    __glXEnableExtension(screen->glx_enable_bits, "GLX_SGIX_fbconfig");
++
++    __glXEnableExtension(screen->glx_enable_bits, "GLX_SGIS_multisample");
++    __glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_multisample");
++
++    //__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context");
++    //__glXEnableExtension(screen->glx_enable_bits, "GLX_ARB_create_context_profile");
++
++    // Generate the GLX extensions string (overrides that set by __glXScreenInit())
++    {
++        unsigned int buffer_size =
++            __glXGetExtensionString(screen->glx_enable_bits, NULL);
++        if (buffer_size > 0) {
++            free(screen->base.GLXextensions);
++
++            screen->base.GLXextensions = xnfalloc(buffer_size);
++            __glXGetExtensionString(screen->glx_enable_bits,
++                                    screen->base.GLXextensions);
++        }
++    }
+ 
+     return &screen->base;
+ }
+-- 
+2.3.2 (Apple Git-55)
+
diff --git a/pkgs/servers/x11/xorg/darwin/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch b/pkgs/servers/x11/xorg/darwin/0002-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch
index 450801c6f2f..ed0518da5ce 100644
--- a/pkgs/servers/x11/xorg/darwin/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch
+++ b/pkgs/servers/x11/xorg/darwin/0002-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch
@@ -1,7 +1,7 @@
-From d36a301fb3d0f2c7a3d81cbda3fd21d8d36038e5 Mon Sep 17 00:00:00 2001
+From 91971455ee46b1059de75260ef0d1a45170d8b65 Mon Sep 17 00:00:00 2001
 From: Jeremy Huddleston <jeremyhu@apple.com>
 Date: Fri, 13 Jan 2012 12:00:57 -0800
-Subject: [PATCH 5000/5004] sdksyms.sh: Use CPPFLAGS, not CFLAGS
+Subject: [PATCH 2/6] sdksyms.sh: Use CPPFLAGS, not CFLAGS
 
 CFLAGS can include flags which are not useful to the preprocessor
 or can even cause it to fail.  This fixes a build issue on darwin
@@ -10,31 +10,32 @@ when building for more than one architecture.
 Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
 Reviewed-by: Keith Packard <keithp@keithp.com>
 ---
- hw/xfree86/Makefile.am | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
+ hw/xfree86/Makefile.am | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
 
 diff --git a/hw/xfree86/Makefile.am b/hw/xfree86/Makefile.am
-index c3899b5..4f48b85 100644
+index 27f2cc6..d898c43 100644
 --- a/hw/xfree86/Makefile.am
 +++ b/hw/xfree86/Makefile.am
-@@ -38,7 +38,7 @@ DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
+@@ -48,8 +48,7 @@ DIST_SUBDIRS = common ddc i2c x86emu int10 fbdevhw os-support \
  bin_PROGRAMS = Xorg
  nodist_Xorg_SOURCES = sdksyms.c
  
 -AM_CFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@
-+AM_CPPFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@
- INCLUDES = $(XORG_INCS) -I$(srcdir)/parser -I$(top_srcdir)/miext/cw \
+-AM_CPPFLAGS = $(XORG_INCS) -I$(srcdir)/parser -I$(top_srcdir)/miext/cw \
++AM_CPPFLAGS = $(DIX_CFLAGS) @XORG_CFLAGS@ $(XORG_INCS) -I$(srcdir)/parser -I$(top_srcdir)/miext/cw \
  	-I$(srcdir)/ddc -I$(srcdir)/i2c -I$(srcdir)/modes -I$(srcdir)/ramdac \
- 	-I$(srcdir)/dri -I$(srcdir)/dri2
-@@ -115,7 +115,7 @@ CLEANFILES = sdksyms.c sdksyms.dep
+ 	-I$(srcdir)/dri -I$(srcdir)/dri2 -I$(top_srcdir)/dri3
+ 
+@@ -135,7 +134,7 @@ CLEANFILES = sdksyms.c sdksyms.dep Xorg.sh
  EXTRA_DIST += sdksyms.sh
  
  sdksyms.dep sdksyms.c: sdksyms.sh
--	$(AM_V_GEN)CPP='$(CPP)' AWK='$(AWK)' $(SHELL) $(srcdir)/sdksyms.sh $(top_srcdir) $(CFLAGS) $(AM_CFLAGS) $(INCLUDES)
-+	$(AM_V_GEN)CPP='$(CPP)' AWK='$(AWK)' $(SHELL) $(srcdir)/sdksyms.sh $(top_srcdir) $(CPPFLAGS) $(AM_CPPFLAGS) $(INCLUDES)
+-	$(AM_V_GEN)CPP='$(CPP)' AWK='$(AWK)' $(SHELL) $(srcdir)/sdksyms.sh $(top_srcdir) $(CFLAGS) $(AM_CFLAGS) $(AM_CPPFLAGS)
++	$(AM_V_GEN)CPP='$(CPP)' AWK='$(AWK)' $(SHELL) $(srcdir)/sdksyms.sh $(top_srcdir) $(CPPFLAGS) $(AM_CPPFLAGS)
  
  SDKSYMS_DEP = sdksyms.dep
- include $(SDKSYMS_DEP)
+ -include $(SDKSYMS_DEP)
 -- 
-1.8.4.1
+2.3.2 (Apple Git-55)
 
diff --git a/pkgs/servers/x11/xorg/darwin/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch b/pkgs/servers/x11/xorg/darwin/0003-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
index c9a5f7e0f5b..395853f940f 100644
--- a/pkgs/servers/x11/xorg/darwin/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
+++ b/pkgs/servers/x11/xorg/darwin/0003-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
@@ -1,8 +1,8 @@
-From 9ca14507a31338fad40d430445a4a4cb8106bc9b Mon Sep 17 00:00:00 2001
+From fa5c83fe9129c9cd9cde1420a32112ca2f17566c Mon Sep 17 00:00:00 2001
 From: Jeremy Huddleston <jeremyhu@apple.com>
 Date: Fri, 30 Apr 2010 13:08:25 -0700
-Subject: [PATCH 5001/5004] Workaround the GC clipping problem in miPaintWindow
- and add some debugging output.
+Subject: [PATCH 3/6] Workaround the GC clipping problem in miPaintWindow and
+ add some debugging output.
 
 Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
 ---
@@ -10,10 +10,10 @@ Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
  1 file changed, 94 insertions(+), 10 deletions(-)
 
 diff --git a/mi/miexpose.c b/mi/miexpose.c
-index 8b7c93f..3e972f7 100644
+index fc4dbc0..5e31b83 100644
 --- a/mi/miexpose.c
 +++ b/mi/miexpose.c
-@@ -489,7 +489,8 @@ void RootlessSetPixmapOfAncestors(WindowPtr pWin);
+@@ -408,7 +408,8 @@ void RootlessSetPixmapOfAncestors(WindowPtr pWin);
  void RootlessStartDrawing(WindowPtr pWin);
  void RootlessDamageRegion(WindowPtr pWin, RegionPtr prgn);
  Bool IsFramedWindow(WindowPtr pWin);
@@ -23,7 +23,7 @@ index 8b7c93f..3e972f7 100644
  
  void
  miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
-@@ -518,23 +519,37 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+@@ -437,23 +438,37 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
      Bool solid = TRUE;
      DrawablePtr drawable = &pWin->drawable;
  
@@ -70,7 +70,7 @@ index 8b7c93f..3e972f7 100644
          while (pWin->backgroundState == ParentRelative)
              pWin = pWin->parent;
  
-@@ -559,6 +574,18 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+@@ -478,6 +493,18 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
      else {
          PixmapPtr pixmap;
  
@@ -89,7 +89,7 @@ index 8b7c93f..3e972f7 100644
          tile_x_off = drawable->x;
          tile_y_off = drawable->y;
  
-@@ -567,6 +594,12 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+@@ -486,6 +513,12 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
              return;
          pixmap = (*pScreen->GetWindowPixmap) ((WindowPtr) drawable);
          drawable = &pixmap->drawable;
@@ -102,7 +102,7 @@ index 8b7c93f..3e972f7 100644
  #ifdef COMPOSITE
          draw_x_off = pixmap->screen_x;
          draw_y_off = pixmap->screen_y;
-@@ -629,6 +662,57 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
+@@ -548,6 +581,57 @@ miPaintWindow(WindowPtr pWin, RegionPtr prgn, int what)
      ChangeGC(NullClient, pGC, gcmask, gcval);
      ValidateGC(drawable, pGC);
  
@@ -161,5 +161,5 @@ index 8b7c93f..3e972f7 100644
      pbox = RegionRects(prgn);
      for (i = numRects; --i >= 0; pbox++, prect++) {
 -- 
-1.8.4.1
+2.3.2 (Apple Git-55)
 
diff --git a/pkgs/servers/x11/xorg/darwin/5004-Use-old-miTrapezoids-and-miTriangles-routines.patch b/pkgs/servers/x11/xorg/darwin/0004-Use-old-miTrapezoids-and-miTriangles-routines.patch
index f70ddf9e6af..4027227bb53 100644
--- a/pkgs/servers/x11/xorg/darwin/5004-Use-old-miTrapezoids-and-miTriangles-routines.patch
+++ b/pkgs/servers/x11/xorg/darwin/0004-Use-old-miTrapezoids-and-miTriangles-routines.patch
@@ -1,7 +1,7 @@
-From bd9fce8b74f5358e4d7e5ce9b5cdd8fd195bb3fd Mon Sep 17 00:00:00 2001
+From b229a04bde765424542eeba17a7e2bc25785a890 Mon Sep 17 00:00:00 2001
 From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
 Date: Sat, 2 Nov 2013 11:00:23 -0700
-Subject: [PATCH 5004/5004] Use old miTrapezoids and miTriangles routines
+Subject: [PATCH 4/6] Use old miTrapezoids and miTriangles routines
 
 Reverts commits:
     788ccb9a8bcf6a4fb4054c507111eec3338fb969
@@ -19,11 +19,11 @@ Signed-off-by: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
  5 files changed, 201 insertions(+), 4 deletions(-)
 
 diff --git a/fb/fbpict.c b/fb/fbpict.c
-index dc0ca3c..276ff06 100644
+index c8378ad..cafb027 100644
 --- a/fb/fbpict.c
 +++ b/fb/fbpict.c
-@@ -326,10 +326,8 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
-     ps->Glyphs = miGlyphs;
+@@ -499,10 +499,8 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+     ps->UnrealizeGlyph = fbUnrealizeGlyph;
      ps->CompositeRects = miCompositeRects;
      ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
 -    ps->Trapezoids = fbTrapezoids;
@@ -34,10 +34,10 @@ index dc0ca3c..276ff06 100644
      return TRUE;
  }
 diff --git a/render/mipict.c b/render/mipict.c
-index 2e64b20..d21b58a 100644
+index a725104..e14293a 100644
 --- a/render/mipict.c
 +++ b/render/mipict.c
-@@ -595,8 +595,8 @@ miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+@@ -575,8 +575,8 @@ miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
      ps->Composite = 0;          /* requires DDX support */
      ps->Glyphs = miGlyphs;
      ps->CompositeRects = miCompositeRects;
@@ -49,7 +49,7 @@ index 2e64b20..d21b58a 100644
      ps->RasterizeTrapezoid = 0; /* requires DDX support */
      ps->AddTraps = 0;           /* requires DDX support */
 diff --git a/render/mipict.h b/render/mipict.h
-index 9436228..7ee2991 100644
+index 23ce9e8..e0f1d4c 100644
 --- a/render/mipict.h
 +++ b/render/mipict.h
 @@ -122,6 +122,16 @@ miCompositeRects(CARD8 op,
@@ -293,5 +293,5 @@ index 922f22a..bdca9ca 100644
 +}
 +
 -- 
-1.8.4.1
+2.3.2 (Apple Git-55)
 
diff --git a/pkgs/servers/x11/xorg/darwin/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch b/pkgs/servers/x11/xorg/darwin/0005-fb-Revert-fb-changes-that-broke-XQuartz.patch
index 9f99ab60335..b9d4b18cf82 100644
--- a/pkgs/servers/x11/xorg/darwin/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch
+++ b/pkgs/servers/x11/xorg/darwin/0005-fb-Revert-fb-changes-that-broke-XQuartz.patch
@@ -1,7 +1,7 @@
-From 07f9e0beaf66ec9de1455a305c87ab642968f3f1 Mon Sep 17 00:00:00 2001
+From a635e397d5830f7f60e3690a1bb36f7a725b915a Mon Sep 17 00:00:00 2001
 From: Jeremy Huddleston <jeremyhu@apple.com>
 Date: Fri, 12 Feb 2010 19:48:52 -0800
-Subject: [PATCH 5002/5004] fb: Revert fb changes that broke XQuartz
+Subject: [PATCH 5/6] fb: Revert fb changes that broke XQuartz
 
 http://bugs.freedesktop.org/show_bug.cgi?id=26124
 
@@ -21,10 +21,10 @@ Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
  3 files changed, 43 insertions(+), 85 deletions(-)
 
 diff --git a/fb/fb.h b/fb/fb.h
-index b869d12..895b148 100644
+index ab110f3..59eaac3 100644
 --- a/fb/fb.h
 +++ b/fb/fb.h
-@@ -1686,8 +1686,7 @@ fbFillRegionSolid(DrawablePtr pDrawable,
+@@ -1326,8 +1326,7 @@ fbFillRegionSolid(DrawablePtr pDrawable,
                    RegionPtr pRegion, FbBits and, FbBits xor);
  
  extern _X_EXPORT pixman_image_t *image_from_pict(PicturePtr pict,
@@ -35,7 +35,7 @@ index b869d12..895b148 100644
  extern _X_EXPORT void free_pixman_pict(PicturePtr, pixman_image_t *);
  
 diff --git a/fb/fbpict.c b/fb/fbpict.c
-index 2804ff4..80c2a91 100644
+index cafb027..6ee63e9 100644
 --- a/fb/fbpict.c
 +++ b/fb/fbpict.c
 @@ -46,23 +46,18 @@ fbComposite(CARD8 op,
@@ -67,7 +67,7 @@ index 2804ff4..80c2a91 100644
      }
  
      free_pixman_pict(pSrc, src);
-@@ -293,20 +288,22 @@ create_conical_gradient_image(PictGradient * gradient)
+@@ -289,20 +284,22 @@ create_conical_gradient_image(PictGradient * gradient)
  }
  
  static pixman_image_t *
@@ -97,8 +97,8 @@ index 2804ff4..80c2a91 100644
                                       stride * sizeof(FbStride));
  
      if (!image)
-@@ -333,57 +330,31 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
-         if (pict->clientClipType != CT_NONE)
+@@ -321,57 +318,31 @@ create_bits_picture(PicturePtr pict, Bool has_clip, int *xoff, int *yoff)
+         if (pict->clientClip)
              pixman_image_set_has_client_clip(image, TRUE);
  
 -        if (*xoff || *yoff)
@@ -159,7 +159,7 @@ index 2804ff4..80c2a91 100644
      }
  
      switch (pict->repeatType) {
-@@ -411,10 +382,8 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
+@@ -399,10 +370,8 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
       * as the alpha map for this operation
       */
      if (pict->alphaMap && !is_alpha_map) {
@@ -171,7 +171,7 @@ index 2804ff4..80c2a91 100644
  
          pixman_image_set_alpha_map(image, alpha_map, pict->alphaOrigin.x,
                                     pict->alphaOrigin.y);
-@@ -448,8 +417,7 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
+@@ -436,8 +405,7 @@ set_image_properties(pixman_image_t * image, PicturePtr pict, Bool has_clip,
  }
  
  static pixman_image_t *
@@ -181,7 +181,7 @@ index 2804ff4..80c2a91 100644
  {
      pixman_image_t *image = NULL;
  
-@@ -457,7 +425,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
+@@ -445,7 +413,7 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
          return NULL;
  
      if (pict->pDrawable) {
@@ -190,7 +190,7 @@ index 2804ff4..80c2a91 100644
      }
      else if (pict->pSourcePict) {
          SourcePict *sp = pict->pSourcePict;
-@@ -475,19 +443,17 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
+@@ -463,19 +431,17 @@ image_from_pict_internal(PicturePtr pict, Bool has_clip, int *xoff, int *yoff,
              else if (sp->type == SourcePictTypeConical)
                  image = create_conical_gradient_image(gradient);
          }
@@ -312,5 +312,5 @@ index bf82f8f..0145ce9 100644
  
          DamageRegionProcessPending(pDst->pDrawable);
 -- 
-1.8.4.1
+2.3.2 (Apple Git-55)
 
diff --git a/pkgs/servers/x11/xorg/darwin/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch b/pkgs/servers/x11/xorg/darwin/0006-fb-Revert-fb-changes-that-broke-XQuartz.patch
index 0ff989258fb..03d4decdb1c 100644
--- a/pkgs/servers/x11/xorg/darwin/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch
+++ b/pkgs/servers/x11/xorg/darwin/0006-fb-Revert-fb-changes-that-broke-XQuartz.patch
@@ -1,38 +1,29 @@
-From 4a0444a2773bddc3abbf5305a344001ecfe9378c Mon Sep 17 00:00:00 2001
+From 4c7572abafeac9b2dcd884c444c5a5bae5b302c3 Mon Sep 17 00:00:00 2001
 From: Jeremy Huddleston Sequoia <jeremyhu@apple.com>
-Date: Tue, 18 Dec 2012 01:03:38 -0800
-Subject: [PATCH 5003/5004] fb: Revert fb changes that broke XQuartz
+Date: Sat, 31 May 2014 13:14:20 -0700
+Subject: [PATCH 6/6] fb: Revert fb changes that broke XQuartz
 
     http://bugs.freedesktop.org/show_bug.cgi?id=26124
 
 Revert "Use new pixman_glyph_cache_t API that will be in pixman 0.28.0"
+Revert "fb: Fix origin of source picture in fbGlyphs"
+Revert "fb: Publish fbGlyphs and fbUnrealizeGlyph"
 
 This reverts commit 9cbcb5bd6a5360a128d15b77a02d8d3351f74366.
+This reverts commit 983e30361f49a67252d0b5d82630e70724d69dbf.
+This reverts commit 3c2c59eed3c68c0e5a93c38cf01eedad015e3157.
 ---
- configure.ac  |   2 +-
  fb/fb.h       |   3 --
- fb/fbpict.c   | 153 +---------------------------------------------------------
+ fb/fbpict.c   | 149 +---------------------------------------------------------
+ fb/fbpict.h   |  11 +----
  fb/fbscreen.c |   1 -
- 4 files changed, 2 insertions(+), 157 deletions(-)
+ 4 files changed, 2 insertions(+), 162 deletions(-)
 
-diff --git a/configure.ac b/configure.ac
-index 8797df5..99a1e62 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -811,7 +811,7 @@ LIBPCIACCESS="pciaccess >= 0.12.901"
- LIBUDEV="libudev >= 143"
- LIBSELINUX="libselinux >= 2.0.86"
- LIBDBUS="dbus-1 >= 1.0"
--LIBPIXMAN="pixman-1 >= 0.27.2"
-+LIBPIXMAN="pixman-1 >= 0.21.8"
- 
- dnl Pixman is always required, but we separate it out so we can link
- dnl specific modules against it
 diff --git a/fb/fb.h b/fb/fb.h
-index 895b148..cc5759c 100644
+index 59eaac3..046b948 100644
 --- a/fb/fb.h
 +++ b/fb/fb.h
-@@ -1344,9 +1344,6 @@ extern _X_EXPORT void
+@@ -1116,9 +1116,6 @@ extern _X_EXPORT void
  extern _X_EXPORT Bool
   fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats);
  
@@ -43,10 +34,10 @@ index 895b148..cc5759c 100644
   * fbpixmap.c
   */
 diff --git a/fb/fbpict.c b/fb/fbpict.c
-index 80c2a91..dc0ca3c 100644
+index 6ee63e9..9c4cc42 100644
 --- a/fb/fbpict.c
 +++ b/fb/fbpict.c
-@@ -65,156 +65,6 @@ fbComposite(CARD8 op,
+@@ -65,152 +65,6 @@ fbComposite(CARD8 op,
      free_pixman_pict(pDst, dest);
  }
  
@@ -70,7 +61,7 @@ index 80c2a91..dc0ca3c 100644
 -	pixman_glyph_cache_remove (glyphCache, pGlyph, NULL);
 -}
 -
--static void
+-void
 -fbGlyphs(CARD8 op,
 -	 PicturePtr pSrc,
 -	 PicturePtr pDst,
@@ -93,7 +84,7 @@ index 80c2a91..dc0ca3c 100644
 -    int xDst = list->xOff, yDst = list->yOff;
 -
 -    miCompositeSourceValidate(pSrc);
--    
+-
 -    n_glyphs = 0;
 -    for (i = 0; i < nlist; ++i)
 -	n_glyphs += list[i].len;
@@ -102,12 +93,12 @@ index 80c2a91..dc0ca3c 100644
 -	glyphCache = pixman_glyph_cache_create();
 -
 -    pixman_glyph_cache_freeze (glyphCache);
--    
+-
 -    if (n_glyphs > N_STACK_GLYPHS) {
 -	if (!(pglyphs = malloc (n_glyphs * sizeof (pixman_glyph_t))))
 -	    goto out;
 -    }
--    
+-
 -    i = 0;
 -    x = y = 0;
 -    while (nlist--) {
@@ -165,19 +156,15 @@ index 80c2a91..dc0ca3c 100644
 -    if (maskFormat) {
 -	pixman_format_code_t format;
 -	pixman_box32_t extents;
--	int x, y;
 -
 -	format = maskFormat->format | (maskFormat->depth << 24);
 -
 -	pixman_glyph_get_extents(glyphCache, n_glyphs, pglyphs, &extents);
 -
--	x = extents.x1;
--	y = extents.y1;
--
 -	pixman_composite_glyphs(op, srcImage, dstImage, format,
--				xSrc + srcXoff + xDst, ySrc + srcYoff + yDst,
--				x, y,
--				x + dstXoff, y + dstYoff,
+-				xSrc + srcXoff + extents.x1 - xDst, ySrc + srcYoff + extents.y1 - yDst,
+-				extents.x1, extents.y1,
+-				extents.x1 + dstXoff, extents.y1 + dstYoff,
 -				extents.x2 - extents.x1,
 -				extents.y2 - extents.y1,
 -				glyphCache, n_glyphs, pglyphs);
@@ -203,7 +190,7 @@ index 80c2a91..dc0ca3c 100644
  static pixman_image_t *
  create_solid_fill_image(PicturePtr pict)
  {
-@@ -473,8 +323,7 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+@@ -461,8 +315,7 @@ fbPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
          return FALSE;
      ps = GetPictureScreen(pScreen);
      ps->Composite = fbComposite;
@@ -212,9 +199,35 @@ index 80c2a91..dc0ca3c 100644
 +    ps->Glyphs = miGlyphs;
      ps->CompositeRects = miCompositeRects;
      ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
-     ps->Trapezoids = fbTrapezoids;
+     ps->AddTraps = fbAddTraps;
+diff --git a/fb/fbpict.h b/fb/fbpict.h
+index 5cb8663..110f32d 100644
+--- a/fb/fbpict.h
++++ b/fb/fbpict.h
+@@ -65,20 +65,11 @@ fbTrapezoids(CARD8 op,
+              INT16 xSrc, INT16 ySrc, int ntrap, xTrapezoid * traps);
+ 
+ extern _X_EXPORT void
++
+ fbTriangles(CARD8 op,
+             PicturePtr pSrc,
+             PicturePtr pDst,
+             PictFormatPtr maskFormat,
+             INT16 xSrc, INT16 ySrc, int ntris, xTriangle * tris);
+ 
+-extern _X_EXPORT void
+-fbGlyphs(CARD8 op,
+-	 PicturePtr pSrc,
+-	 PicturePtr pDst,
+-	 PictFormatPtr maskFormat,
+-	 INT16 xSrc,
+-	 INT16 ySrc, int nlist,
+-	 GlyphListPtr list,
+-	 GlyphPtr *glyphs);
+-
+ #endif                          /* _FBPICT_H_ */
 diff --git a/fb/fbscreen.c b/fb/fbscreen.c
-index f9080a4..7c7d656 100644
+index 71bcc5d..55330fc 100644
 --- a/fb/fbscreen.c
 +++ b/fb/fbscreen.c
 @@ -32,7 +32,6 @@ fbCloseScreen(ScreenPtr pScreen)
@@ -226,5 +239,5 @@ index f9080a4..7c7d656 100644
          free(depths[d].vids);
      free(depths);
 -- 
-1.8.4.1
+2.3.2 (Apple Git-55)
 
diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix
index 12aeb67d416..f9ea1fb4a29 100644
--- a/pkgs/servers/x11/xorg/default.nix
+++ b/pkgs/servers/x11/xorg/default.nix
@@ -2115,11 +2115,11 @@ let
   }) // {inherit libX11 xproto ;};
 
   xproto = (mkDerivation "xproto" {
-    name = "xproto-7.0.27";
+    name = "xproto-7.0.28";
     builder = ./builder.sh;
     src = fetchurl {
-      url = mirror://xorg/individual/proto/xproto-7.0.27.tar.bz2;
-      sha256 = "030ix881p0crnd4bc01nz6cs0afmfv6ivsyyhf0h1j1mnak26vr4";
+      url = mirror://xorg/individual/proto/xproto-7.0.28.tar.bz2;
+      sha256 = "1jpnvm33vi2dar5y5zgz7jjh0m8fpkcxm0f0lbwfx37ns5l5bs19";
     };
     buildInputs = [pkgconfig ];
   }) // {inherit ;};
diff --git a/pkgs/servers/x11/xorg/fix-clang.patch b/pkgs/servers/x11/xorg/fix-clang.patch
deleted file mode 100644
index 6b51ebfe3d3..00000000000
--- a/pkgs/servers/x11/xorg/fix-clang.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- xorgserver/hw/xfree86/common/compiler.h	2014-10-29 23:43:33.000000000 -0700
-+++ xorgserver/hw/xfree86/common/compiler.h.new	2014-10-29 23:47:30.000000000 -0700
-@@ -1352,7 +1352,7 @@
- 
- #if !defined(__SUNPRO_C)
- #if !defined(FAKEIT) && !defined(__mc68000__) && !defined(__arm__) && !defined(__sh__) && !defined(__hppa__) && !defined(__s390__) && !defined(__m32r__)
--#ifdef GCCUSESGAS
-+#if defined(GCCUSESGAS) || defined(__clang__)
- 
- /*
-  * If gcc uses gas rather than the native assembler, the syntax of these
diff --git a/pkgs/servers/x11/xorg/libpciaccess-apple.patch b/pkgs/servers/x11/xorg/libpciaccess-apple.patch
deleted file mode 100644
index a005c03cbbe..00000000000
--- a/pkgs/servers/x11/xorg/libpciaccess-apple.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -Naur libpciaccess-0.12.1-orig/src/common_interface.c libpciaccess-0.12.1/src/common_interface.c
---- libpciaccess-0.12.1-orig/src/common_interface.c	2010-07-12 00:32:05.000000000 -0400
-+++ libpciaccess-0.12.1/src/common_interface.c	2011-08-29 00:48:17.000000000 -0400
-@@ -67,6 +67,22 @@
- # define HTOLE_32(x)   (x)
- #endif /* Solaris */
- 
-+#elif defined(__APPLE__)
-+
-+#include <architecture/byte_order.h>
-+
-+#if __BYTE_ORDER == __BIG_ENDIAN
-+# define LETOH_16(x)   OSSwapInt16(x)
-+# define HTOLE_16(x)   OSSwapInt16(x)
-+# define LETOH_32(x)   OSSwapInt32(x)
-+# define HTOLE_32(x)   OSSwapInt32(x)
-+#else
-+# define LETOH_16(x)   (x)
-+# define HTOLE_16(x)   (x)
-+# define LETOH_32(x)   (x)
-+# define HTOLE_32(x)   (x)
-+#endif /* darwin */
-+
- #else
- 
- #include <sys/endian.h>
diff --git a/pkgs/servers/x11/xorg/libxkbfile-clang36.patch b/pkgs/servers/x11/xorg/libxkbfile-clang36.patch
deleted file mode 100644
index 65bf2ea7437..00000000000
--- a/pkgs/servers/x11/xorg/libxkbfile-clang36.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- libxkbfile-1.0.8/src/cout.c	2012-03-07 20:37:23.000000000 -0800
-+++ libxkbfile-1.0.8/src/cout.c	2015-03-24 20:51:11.000000000 -0700
-@@ -45,7 +45,7 @@
- {
- register int i,nOut;
- 
--    if ((!xkb)||(!xkb->names)||(!xkb->names->vmods))
-+    if ((!xkb)||(!xkb->names))
- 	return False;
-     for (i=nOut=0;i<XkbNumVirtualMods;i++) {
- 	if (xkb->names->vmods[i]!=None) {
diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix
index 336ae652628..71185643a9e 100644
--- a/pkgs/servers/x11/xorg/overrides.nix
+++ b/pkgs/servers/x11/xorg/overrides.nix
@@ -73,20 +73,13 @@ in
   libxcb = attrs : attrs // {
     nativeBuildInputs = [ args.python ];
     configureFlags = "--enable-xkb";
+    outputs = [ "out" "doc" "man" ];
   };
 
   xcbproto = attrs : attrs // {
     nativeBuildInputs = [ args.python ];
   };
 
-  libxkbfile = attrs: attrs // {
-    patches = lib.optional stdenv.cc.isClang ./libxkbfile-clang36.patch;
-  };
-
-  libpciaccess = attrs : attrs // {
-    patches = [ ./libpciaccess-apple.patch ];
-  };
-
   libX11 = attrs: attrs // {
     preConfigure = setMalloc0ReturnsNullCrossCompiling + ''
       sed 's,^as_dummy.*,as_dummy="\$PATH",' -i configure
@@ -97,6 +90,7 @@ in
         rm -rf $out/share/doc
       '';
     CPP = stdenv.lib.optionalString stdenv.isDarwin "clang -E -";
+    outputs = [ "out" "man" ];
   };
 
   libXfont = attrs: attrs // {
@@ -107,7 +101,6 @@ in
     ];
   };
 
-
   libXxf86vm = attrs: attrs // {
     preConfigure = setMalloc0ReturnsNullCrossCompiling;
   };
@@ -126,6 +119,7 @@ in
     '';
     propagatedBuildInputs = [ xorg.libSM ];
     CPP = stdenv.lib.optionalString stdenv.isDarwin "clang -E -";
+    outputs = [ "out" "doc" "man" ];
   };
 
   # See https://bugs.freedesktop.org/show_bug.cgi?id=47792
@@ -285,15 +279,13 @@ in
         dmxproto /*libdmx not used*/ xf86vidmodeproto
         recordproto libXext pixman libXfont
         damageproto xcmiscproto  bigreqsproto
-        libpciaccess inputproto xextproto randrproto renderproto presentproto
+        inputproto xextproto randrproto renderproto presentproto
         dri2proto dri3proto kbproto xineramaproto resourceproto scrnsaverproto videoproto
       ];
-      commonPatches = [ ./xorgserver-xkbcomp-path.patch ]
-                   ++ lib.optional isDarwin ./fix-clang.patch;
+      commonPatches = [ ./xorgserver-xkbcomp-path.patch ];
       # XQuartz requires two compilations: the first to get X / XQuartz,
       # and the second to get Xvfb, Xnest, etc.
       darwinOtherX = overrideDerivation xorgserver (oldAttrs: {
-        stdenv = args.stdenv;
         configureFlags = oldAttrs.configureFlags ++ [
           "--disable-xquartz"
           "--enable-xorg"
@@ -307,7 +299,7 @@ in
       if (!isDarwin)
       then {
         buildInputs = [ makeWrapper ] ++ commonBuildInputs;
-        propagatedBuildInputs = commonPropagatedBuildInputs ++ lib.optionals stdenv.isLinux [
+        propagatedBuildInputs = [ libpciaccess ] ++ commonPropagatedBuildInputs ++ lib.optionals stdenv.isLinux [
           args.udev
         ];
         patches = commonPatches;
@@ -327,23 +319,19 @@ in
         '';
         passthru.version = version; # needed by virtualbox guest additions
       } else {
-        stdenv = args.clangStdenv;
-        name = "xorg-server-1.14.6";
-        src = args.fetchurl {
-          url = mirror://xorg/individual/xserver/xorg-server-1.14.6.tar.bz2;
-          sha256 = "0c57vp1z0p38dj5gfipkmlw6bvbz1mrr0sb3sbghdxxdyq4kzcz8";
-        };
-        buildInputs = commonBuildInputs ++ [ args.bootstrap_cmds ];
+        buildInputs = commonBuildInputs ++ [ args.bootstrap_cmds args.automake args.autoconf ];
         propagatedBuildInputs = commonPropagatedBuildInputs ++ [
           libAppleWM applewmproto
         ];
+        # Patches can be pulled from the server-*-apple branches of:
+        # http://cgit.freedesktop.org/~jeremyhu/xserver/
         patches = commonPatches ++ [
-          ./darwin/0001-XQuartz-Ensure-we-wait-for-the-server-thread-to-term.patch
-          ./darwin/5000-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch
-          ./darwin/5001-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
-          ./darwin/5002-fb-Revert-fb-changes-that-broke-XQuartz.patch
-          ./darwin/5003-fb-Revert-fb-changes-that-broke-XQuartz.patch
-          ./darwin/5004-Use-old-miTrapezoids-and-miTriangles-routines.patch
+          ./darwin/0001-XQuartz-GLX-Use-__glXEnableExtension-to-build-extens.patch
+          ./darwin/0002-sdksyms.sh-Use-CPPFLAGS-not-CFLAGS.patch
+          ./darwin/0003-Workaround-the-GC-clipping-problem-in-miPaintWindow-.patch
+          ./darwin/0004-Use-old-miTrapezoids-and-miTriangles-routines.patch
+          ./darwin/0005-fb-Revert-fb-changes-that-broke-XQuartz.patch
+          ./darwin/0006-fb-Revert-fb-changes-that-broke-XQuartz.patch
           ./darwin/private-extern.patch
           ./darwin/bundle_main.patch
           ./darwin/stub.patch
@@ -420,4 +408,17 @@ in
   xwd = attrs: attrs // {
     buildInputs = with xorg; attrs.buildInputs ++ [libXt libxkbfile];
   };
+
+  kbproto = attrs: attrs // {
+    outputs = [ "out" "doc" ];
+  };
+
+  xextproto = attrs: attrs // {
+    outputs = [ "out" "doc" ];
+  };
+
+  xproto = attrs: attrs // {
+    outputs = [ "out" "doc" ];
+  };
+
 }
diff --git a/pkgs/servers/x11/xorg/tarballs-7.7.list b/pkgs/servers/x11/xorg/tarballs-7.7.list
index 7522743310a..3ab0a599ec3 100644
--- a/pkgs/servers/x11/xorg/tarballs-7.7.list
+++ b/pkgs/servers/x11/xorg/tarballs-7.7.list
@@ -183,7 +183,7 @@ mirror://xorg/individual/xserver/xorg-server-1.17.2.tar.bz2
 mirror://xorg/X11R7.7/src/everything/xorg-sgml-doctools-1.11.tar.bz2
 mirror://xorg/X11R7.7/src/everything/xpr-1.0.4.tar.bz2
 mirror://xorg/individual/app/xprop-1.2.2.tar.bz2
-mirror://xorg/individual/proto/xproto-7.0.27.tar.bz2
+mirror://xorg/individual/proto/xproto-7.0.28.tar.bz2
 mirror://xorg/individual/app/xrandr-1.4.3.tar.bz2
 mirror://xorg/individual/app/xrdb-1.1.0.tar.bz2
 mirror://xorg/individual/app/xrefresh-1.0.5.tar.bz2
diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/default.nix
index 014a3ad4a2c..60504ecaa9b 100644
--- a/pkgs/shells/bash/default.nix
+++ b/pkgs/shells/bash/default.nix
@@ -1,6 +1,7 @@
-{ stdenv, fetchurl, readline ? null, interactive ? false, texinfo ? null, bison }:
+{ stdenv, fetchurl, readline ? null, interactive ? false, texinfo ? null, binutils ? null, bison }:
 
 assert interactive -> readline != null;
+assert stdenv.isDarwin -> binutils != null;
 
 let
   version = "4.3";
@@ -18,6 +19,8 @@ stdenv.mkDerivation rec {
     inherit sha256;
   };
 
+  outputs = [ "out" "doc" ];
+
   NIX_CFLAGS_COMPILE = ''
     -DSYS_BASHRC="/etc/bashrc"
     -DSYS_BASH_LOGOUT="/etc/bash_logout"
@@ -57,7 +60,8 @@ stdenv.mkDerivation rec {
   # Note: Bison is needed because the patches above modify parse.y.
   nativeBuildInputs = [bison]
     ++ stdenv.lib.optional (texinfo != null) texinfo
-    ++ stdenv.lib.optional interactive readline;
+    ++ stdenv.lib.optional interactive readline
+    ++ stdenv.lib.optional stdenv.isDarwin binutils;
 
   # Bash randomly fails to build because of a recursive invocation to
   # build `version.h'.
diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh
index 75cc8693480..57875fa6ada 100644
--- a/pkgs/stdenv/generic/setup.sh
+++ b/pkgs/stdenv/generic/setup.sh
@@ -126,7 +126,7 @@ exitHandler() {
 
         # If the builder had a non-zero exit code and
         # $succeedOnFailure is set, create the file
-        # `$out/nix-support/failed' to signal failure, and exit
+        # ‘$out/nix-support/failed’ to signal failure, and exit
         # normally.  Otherwise, return the original exit code.
         if [ -n "$succeedOnFailure" ]; then
             echo "build failed with exit code $exitCode (ignored)"
diff --git a/pkgs/stdenv/pure-darwin/default.nix b/pkgs/stdenv/pure-darwin/default.nix
index 92c6f321d36..2f31144a11e 100644
--- a/pkgs/stdenv/pure-darwin/default.nix
+++ b/pkgs/stdenv/pure-darwin/default.nix
@@ -81,6 +81,7 @@ in rec {
           nativePrefix = bootstrapTools;
           nativeLibc   = false;
           libc         = last.pkgs.darwin.Libsystem;
+          isClang      = true;
           cc           = { name = "clang-9.9.9"; outPath = bootstrapTools; };
         };
 
@@ -134,7 +135,8 @@ in rec {
           ln -s ${bootstrapTools}/lib/libc++.dylib $out/lib/libc++.dylib
           ln -s ${bootstrapTools}/include/c++      $out/include/c++
         '';
-        setupHook = ../../development/compilers/llvm/3.5/libc++/setup-hook.sh;
+        linkCxxAbi = false;
+        setupHook = ../../development/compilers/llvm/3.6/libc++/setup-hook.sh;
       };
 
       libcxxabi = stdenv.mkDerivation {
diff --git a/pkgs/tools/X11/xdg-utils/default.nix b/pkgs/tools/X11/xdg-utils/default.nix
index c010884abdd..170539b3805 100644
--- a/pkgs/tools/X11/xdg-utils/default.nix
+++ b/pkgs/tools/X11/xdg-utils/default.nix
@@ -1,5 +1,18 @@
-{ stdenv, fetchzip, file, libxslt, docbook_xml_dtd_412, docbook_xsl, xmlto
-, w3m, which, gnugrep, gnused, coreutils }:
+{ stdenv, fetchzip, fetchFromGitHub, file, libxslt, docbook_xml_dtd_412, docbook_xsl, xmlto
+, w3m, which, gnugrep, gnused, coreutils
+, mimiSupport ? false, gawk ? null }:
+
+assert mimiSupport -> gawk != null;
+
+let
+  # A much better xdg-open
+  mimisrc = fetchFromGitHub {
+    owner = "march-linux";
+    repo = "mimi";
+    rev = "d85ea8256ed627e93b387cd42e4ab39bfab9504c";
+    sha256 = "1h9mb3glfvc6pa2f9g07xgmf8lrwxiyjxvl906xlysy4klybxvhg";
+  };
+in
 
 stdenv.mkDerivation rec {
   name = "xdg-utils-1.1.0-rc3p7";
@@ -13,7 +26,12 @@ stdenv.mkDerivation rec {
   # just needed when built from git
   buildInputs = [ libxslt docbook_xml_dtd_412 docbook_xsl xmlto w3m ];
 
-  postInstall = ''
+  postInstall = stdenv.lib.optionalString mimiSupport ''
+    cp ${mimisrc}/xdg-open $out/bin/xdg-open
+    substituteInPlace $out/bin/xdg-open --replace "awk " "${gawk}/bin/awk "
+    substituteInPlace $out/bin/xdg-open --replace "sort " "${coreutils}/bin/sort "
+    substituteInPlace $out/bin/xdg-open --replace "(file " "(${file}/bin/file "
+  '' + ''
     for item in $out/bin/*; do
       substituteInPlace $item --replace "cut " "${coreutils}/bin/cut "
       substituteInPlace $item --replace "sed " "${gnused}/bin/sed "
@@ -24,12 +42,11 @@ stdenv.mkDerivation rec {
     done
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://portland.freedesktop.org/wiki/;
     description = "A set of command line tools that assist applications with a variety of desktop integration tasks";
-    license = stdenv.lib.licenses.free;
-    maintainers = [ stdenv.lib.maintainers.eelco ];
-    platforms = stdenv.lib.platforms.linux;
+    license = if mimiSupport then licenses.gpl2 else licenses.free;
+    maintainers = [ maintainers.eelco ];
+    platforms = platforms.linux;
   };
 }
-
diff --git a/pkgs/tools/misc/mongodb-tools/default.nix b/pkgs/tools/misc/mongodb-tools/default.nix
deleted file mode 100644
index 81e05a8790e..00000000000
--- a/pkgs/tools/misc/mongodb-tools/default.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{ lib, goPackages, fetchurl, callPackage }:
-
-with goPackages;
-
-buildGoPackage rec {
-  version = "r3.1.2";
-  name = "mongodb-tools";
-  goPackagePath = "github.com/mongodb/mongo-tools";
-
-  src = fetchurl {
-    name = "${name}.tar.gz";
-    url = "https://github.com/mongodb/mongo-tools/archive/${version}.tar.gz";
-    sha256 = "1dag8ar95jlfk6rm99y4p3dymcy2s2qnwd9jwqhw9fxr110mgf5s";
-  };
-
-  buildInputs = [ gopass go-flags crypto mgo openssl spacelog
-    oglematchers goconvey tomb ];
-
-  subPackages = [ "bsondump/main" "mongostat/main" "mongofiles/main"
-    "mongoexport/main" "mongoimport/main" "mongorestore/main"
-    "mongodump/main" "mongotop/main" "mongooplog/main" ];
-
-  buildPhase = ''
-    for i in bsondump mongostat mongofiles mongoexport mongoimport mongorestore mongodump mongotop mongooplog; do
-      echo Building $i
-      go build -o go/bin/$i go/src/${goPackagePath}/$i/main/$i.go
-    done
-  '';
-
-  dontInstallSrc = true;
-
-  meta = with lib; {
-    description = "Tools for MongoDB";
-    homepage = https://github.com/mongodb/mongo-tools;
-    license = licenses.asl20;
-    maintainers = with maintainers; [ mschristiansen ];
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/tools/security/gnupg/21.nix b/pkgs/tools/security/gnupg/21.nix
index bc7c5f85751..2a0f1254513 100644
--- a/pkgs/tools/security/gnupg/21.nix
+++ b/pkgs/tools/security/gnupg/21.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, pkgconfig, libgcrypt, libassuan, libksba, npth
+{ fetchurl, stdenv, pkgconfig, libgcrypt, libassuan, libksba, libiconv, npth
 , autoreconfHook, gettext, texinfo, pcsclite
 
 # Each of the dependencies below are optional.
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
   '';
 
   buildInputs = [
-    pkgconfig libgcrypt libassuan libksba npth
+    pkgconfig libgcrypt libassuan libksba libiconv npth
     autoreconfHook gettext texinfo
     readline libusb gnutls adns openldap zlib bzip2
   ];
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 66ea5265047..e5e2f43dbf2 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -948,7 +948,7 @@ let
 
   mcrypt = callPackage ../tools/misc/mcrypt { };
 
-  mongodb-tools = callPackage ../tools/misc/mongodb-tools { };
+  mongodb-tools = goPackages.mongo-tools;
 
   mstflint = callPackage ../tools/misc/mstflint { };
 
@@ -2148,6 +2148,7 @@ let
   lshw = callPackage ../tools/system/lshw { };
 
   lxc = callPackage ../os-specific/linux/lxc { };
+  lxd = goPackages.lxd;
 
   lzip = callPackage ../tools/compression/lzip { };
 
@@ -3709,7 +3710,7 @@ let
     libc = glibc;
     binutils = binutils;
     inherit coreutils zlib;
-    extraPackages = [ libcxx ];
+    extraPackages = [ libcxx libcxxabi ];
     nativeTools = false;
     nativeLibc = false;
   };
@@ -3861,6 +3862,8 @@ let
     libcCross = if crossSystem != null then libcCross else null;
 
     isl = isl_0_14;
+
+    inherit (darwin) CF;
   }));
 
   gcc49 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/4.9 {
@@ -3878,6 +3881,8 @@ let
     isl = isl_0_11;
 
     cloog = cloog_0_18_0;
+
+    inherit (darwin) CF;
   }));
 
   gcc5 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/5 {
@@ -3893,6 +3898,8 @@ let
     libcCross = if crossSystem != null then libcCross else null;
 
     isl = isl_0_14;
+
+    inherit (darwin) CF;
   }));
 
   gfortran = if !stdenv.isDarwin then gfortran49
@@ -5624,7 +5631,9 @@ let
 
   libtool_2 = callPackage ../development/tools/misc/libtool/libtool2.nix { };
 
-  lsof = callPackage ../development/tools/misc/lsof { };
+  lsof = if stdenv.isDarwin
+    then darwin.lsof
+    else callPackage ../development/tools/misc/lsof { };
 
   ltrace = callPackage ../development/tools/misc/ltrace { };
 
@@ -5808,9 +5817,10 @@ let
   teensy-loader = callPackage ../development/tools/misc/teensy { };
 
   texinfo413 = callPackage ../development/tools/misc/texinfo/4.13a.nix { };
-  texinfo5 = callPackage ../development/tools/misc/texinfo/5.2.nix { };
   texinfo4 = texinfo413;
-  texinfo = texinfo5;
+  texinfo5 = callPackage ../development/tools/misc/texinfo/5.2.nix { };
+  texinfo6 = callPackage ../development/tools/misc/texinfo/6.0.nix { };
+  texinfo = texinfo6;
   texinfoInteractive = appendToName "interactive" (
     texinfo.override { interactive = true; }
   );
@@ -6291,15 +6301,9 @@ let
 
   getdata = callPackage ../development/libraries/getdata { };
 
-  gettext = gettext_0_19;
-
-  gettext_0_17 = callPackage ../development/libraries/gettext/0.17.nix { };
-  gettext_0_18 = callPackage ../development/libraries/gettext/0.18.nix { };
-  gettext_0_19 = callPackage ../development/libraries/gettext { };
+  gettext = callPackage ../development/libraries/gettext { };
 
-  gettextWithExpat = gettext: callPackage ../development/libraries/gettext/expat.nix {
-    inherit gettext;
-  };
+  gettextWithExpat = callPackage ../development/libraries/gettext/expat.nix { };
 
   gd = callPackage ../development/libraries/gd { };
 
@@ -6518,7 +6522,7 @@ let
   };
 
   gtk3 = callPackage ../development/libraries/gtk+/3.x.nix {
-    gettext = gettextWithExpat gettext_0_19;
+    gettext = gettextWithExpat;
   };
 
   gtk = pkgs.gtk2;
diff --git a/pkgs/top-level/go-packages.nix b/pkgs/top-level/go-packages.nix
index fa1d71621a3..cbfb28a7947 100644
--- a/pkgs/top-level/go-packages.nix
+++ b/pkgs/top-level/go-packages.nix
@@ -1,14 +1,14 @@
 /* This file defines the composition for Go packages. */
 
-{ overrides, stdenv, go, buildGoPackage, git, pkgconfig, libusb
+{ overrides, stdenv, go, buildGoPackage, git
 , fetchgit, fetchhg, fetchurl, fetchFromGitHub, fetchFromBitbucket, fetchbzr, pkgs }:
 
 let
   isGo14 = go.meta.branch == "1.4";
 
-  buildFromGitHub = { rev, owner, repo, sha256, name ? repo, goPackagePath ? "github.com/${owner}/${repo}", ... }@args: buildGoPackage (args // {
+  buildFromGitHub = { rev, date ? null, owner, repo, sha256, name ? repo, goPackagePath ? "github.com/${owner}/${repo}", ... }@args: buildGoPackage (args // {
     inherit rev goPackagePath;
-    name = "${name}-${stdenv.lib.strings.substring 0 7 rev}";
+    name = "${name}-${if date != null then date else stdenv.lib.strings.substring 0 7 rev}";
     src  = fetchFromGitHub { inherit rev owner repo sha256; };
   });
 
@@ -19,12 +19,15 @@ let
   ## OFFICIAL GO PACKAGES
 
   crypto = buildFromGitHub {
-    rev      = "4d48e5fa3d62b5e6e71260571bf76c767198ca02";
+    rev      = "e7913d6af127b363879a06a5ae7c5e93c089aedd";
     owner    = "golang";
     repo     = "crypto";
-    sha256   = "0plvjv56afb02p7l3c2zfwffnhscmc3f0ckj1gls9ay6vj85y7l8";
-    goPackagePath    = "golang.org/x/crypto";
-    goPackageAliases = [ "code.google.com/p/go.crypto" ];
+    sha256   = "0g2gm2wmanprsirmclxi8qxjkw93nih60ff8jwrfb4wyn7hxbds7";
+    goPackagePath = "golang.org/x/crypto";
+    goPackageAliases = [
+      "code.google.com/p/go.crypto"
+      "github.com/golang/crypto"
+    ];
   };
 
   glog = buildFromGitHub {
@@ -47,53 +50,38 @@ let
     };
   };
 
-  net = buildGoPackage rec {
-    rev = "d1d694760b7a3a9fa32e4d1c49e08b2d672221d8";
-    name = "net-${stdenv.lib.strings.substring 0 7 rev}";
+  net = buildFromGitHub {
+    rev = "3a29182c25eeabbaaf94daaeecbc7823d86261e7";
+    owner = "golang";
+    repo = "net";
+    sha256 = "0g4w411l0v9yg8aib05kzjm9j6dwsd6nk6ayk8j0dkmqildqrx5v";
     goPackagePath = "golang.org/x/net";
     goPackageAliases = [
       "code.google.com/p/go.net"
       "github.com/hashicorp/go.net"
+      "github.com/golang/net"
     ];
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "golang";
-      repo = "net";
-      sha256 = "1fk62vjxsyca8hmlpca9rkgy8wqg9zw920d56ib442sjn9ys3zic";
-    };
-
     propagatedBuildInputs = [ text ];
   };
 
-  oauth2 = buildGoPackage rec {
+  oauth2 = buildFromGitHub {
     rev = "f98d0160877ab4712b906626425ed8b0b320907c";
-    name = "oauth2-${stdenv.lib.strings.substring 0 7 rev}";
+    owner = "golang";
+    repo = "oauth2";
+    sha256 = "0hi54mm63ha7a75avydj6xm0a4dd2njdzllr9y2si1i1wnijqw2i";
     goPackagePath = "golang.org/x/oauth2";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "golang";
-      repo = "oauth2";
-      sha256 = "0hi54mm63ha7a75avydj6xm0a4dd2njdzllr9y2si1i1wnijqw2i";
-    };
-
+    goPackageAliases = [ "github.com/golang/oauth2" ];
     propagatedBuildInputs = [ net gcloud-golang-compute-metadata ];
   };
 
 
-  protobuf = buildGoPackage rec {
-    rev = "39e27fc0f226450c58e11eda145b542bc5dff3fe";
-    name = "protobuf-${stdenv.lib.strings.substring 0 7 rev}";
+  protobuf = buildFromGitHub {
+    rev = "68c687dc49948540b356a6b47931c9be4fcd0245";
+    owner = "golang";
+    repo = "protobuf";
+    sha256 = "0va2x13mygmkvr7ajkg0fj4i1ha0jbxgghya20qgsh0vlp7k5maf";
     goPackagePath = "github.com/golang/protobuf";
     goPackageAliases = [ "code.google.com/p/goprotobuf" ];
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "golang";
-      repo = "protobuf";
-      sha256 = "12l036ix0dc8hg35xrqmdcr3bpwncrdkgqkhp3s90w6a3qpva3gs";
-    };
   };
 
   gogo.protobuf = buildGoPackage rec {
@@ -112,19 +100,22 @@ let
     subPackages = [ "proto" ];
   };
 
-  text = buildGoPackage rec {
-    rev = "c93e7c9fff19fb9139b5ab04ce041833add0134e";
-    name = "text-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "golang.org/x/text";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "golang";
-      repo = "text";
-      sha256 = "1yvmllriqjm0k97vnxycz9q0likvh18a68xbyg1k6ddkvn9sy03y";
-    };
+  snappy = buildFromGitHub {
+    rev    = "0c7f8a7704bfec561913f4df52c832f094ef56f0";
+    owner  = "golang";
+    repo   = "snappy";
+    sha256 = "17j421ra8jm2da8gc0sk71g3n1nizqsfx1mapn255nvs887lqm0y";
+    goPackageAliases = [ "code.google.com/p/snappy-go/snappy" ];
   };
 
+  text = buildFromGitHub {
+    rev = "3eb7007b740b66a77f3c85f2660a0240b284115a";
+    owner = "golang";
+    repo = "text";
+    sha256 = "1pxrqbs760azmjaigf63qd6rwmz51hi6i8fq0vwcf5svxgxz2szp";
+    goPackagePath = "golang.org/x/text";
+    goPackageAliases = [ "github.com/golang/text" ];
+  };
 
   tools = buildGoPackage rec {
     rev = "7d75e8b219c3efda2d08ae38acd6b42f8da4f5f9";
@@ -164,25 +155,27 @@ let
   };
 
   ansicolor = buildFromGitHub {
-    rev    = "8368d3b31cf6f2c2464c7a91675342c9a0ac6658";
+    rev    = "a5e2b567a4dd6cc74545b8a4f27c9d63b9e7735b";
     owner  = "shiena";
     repo   = "ansicolor";
-    sha256 = "1fyn06vxm44s0ph8pr7r9gkab1f4x851zlyy3p6jbbwsa6an8g9w";
+    sha256 = "0gwplb1b4fvav1vjf4b2dypy5rcp2w41vrbxkd1dsmac870cy75p";
   };
 
   asn1-ber = buildGoPackage rec {
-    rev = "295c7b21db5d9525ad959e3382610f3aff029663";
+    rev = "f4b6f4a84f5cde443d1925b5ec185ee93c2bdc72";
     name = "asn1-ber-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/vanackere/asn1-ber";
+    goPackagePath = "github.com/go-asn1-ber/asn1-ber";
     goPackageAliases = [
       "github.com/nmcclain/asn1-ber"
+      "github.com/vanackere/asn1-ber"
+      "gopkg.in/asn1-ber.v1"
     ];
 
     src = fetchFromGitHub {
       inherit rev;
-      owner  = "vanackere";
+      owner  = "go-asn1-ber";
       repo   = "asn1-ber";
-      sha256 = "1zamvcbk2xk3vznvckgqmdag32nlv7ip0fr1cc0z9ggai22ddh8n";
+      sha256 = "0qdyax6yw3hvplzqc2ykpihi3m5y4nii581ay0mxy9c54bzs2nk9";
     };
   };
 
@@ -197,41 +190,41 @@ let
     };
     buildInputs = [ oglematchers ];
     propagatedBuildInputs = [ goconvey ];
-    # subPackages = [];
     doCheck = false;
   };
 
-  aws-sdk-go = buildGoPackage rec {
-    rev = "5e038f730cbb99b144eeb1dbf92cd06c2d00b503";
-    name = "aws-sdk-go-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/awslabs/aws-sdk-go";
+  aws-sdk-go = buildFromGitHub {
+    #rev    = "a28ecdc9741b7905b5198059c94aed20868ffc08";
+    rev    = "127313c1b41e534a0456a68b6b3a16712dacb35d";
+    owner  = "aws";
+    repo   = "aws-sdk-go";
+    #sha256 = "1kgnp5f5c5phmihh8krar9rbkfg0lk73imjhjvkhxirhw04g3n5j";
+    sha256 = "0gd4nzv5jl02qi7g0y8lv6jadk0p52bpbl1r7pfgy8mn1vfxs37m";
     goPackageAliases = [
-      "github.com/hashicorp/aws-sdk-go"
+      "github.com/awslabs/aws-sdk-go"
     ];
+    buildInputs = [ gucumber testify ];
+    propagatedBuildInputs = [ go-ini ];
 
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "awslabs";
-      repo   = "aws-sdk-go";
-      sha256 = "1725y3aic53l8ms0583gdn0s915y1b783hs339qll0mmx7v09in5";
-    };
-
-    buildInputs = [ go-ini gucumber testify ];
+    preBuild = ''
+      pushd go/src/$goPackagePath
+      make generate
+      popd
+    '';
   };
 
-  hashicorp.aws-sdk-go = buildGoPackage rec {
-    rev = "e6ea0192eee4640f32ec73c0cbb71f63e4f2b65a";
-    name = "aws-sdk-go-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/hashicorp/aws-sdk-go";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "hashicorp";
-      repo   = "aws-sdk-go";
-      sha256 = "1qrc2jl38marbarnl31sag7s0h18j2wx1cxkcqin5m1pqg62p4cn";
-    };
-
-    buildInputs = [ go-ini net sandblast ];
+  hashicorp.aws-sdk-go = buildFromGitHub {
+    rev    = "e6ea0192eee4640f32ec73c0cbb71f63e4f2b65a";
+    owner  = "hashicorp";
+    repo   = "aws-sdk-go";
+    sha256 = "1qrc2jl38marbarnl31sag7s0h18j2wx1cxkcqin5m1pqg62p4cn";
+    propagatedBuildInputs = [ go-ini ];
+    subPackages = [
+      "./aws"
+      "./gen/ec2"
+      "./gen/endpoints"
+      "./gen/iam"
+    ];
   };
 
   binarydist = buildFromGitHub {
@@ -305,18 +298,11 @@ let
     sha256 = "06kwwdwa3hskdh6ws7clj1vim80dyc3ldim8k9y5qpd30x0avn5s";
   };
 
-  cli = buildGoPackage rec {
-    rev = "6cc8bc522243675a2882b81662b0b0d2e04b99c9";
-    name = "cli-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/mitchellh/cli";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "mitchellh";
-      repo = "cli";
-      sha256 = "05w9ypliva9lyn3h4rahznj04mh0fws7vaqlwhxfs5nnd5g03dma";
-    };
-
+  cli = buildFromGitHub {
+    rev = "8102d0ed5ea2709ade1243798785888175f6e415";
+    owner = "mitchellh";
+    repo = "cli";
+    sha256 = "08mj1l94pww72jy34gk9a483hpic0rrackskfw13r3ycy997w7m2";
     propagatedBuildInputs = [ crypto ];
   };
 
@@ -361,18 +347,11 @@ let
     sha256 = "093as4kxlabk3hrsd52kr9fhl6qafr4ghg89cjyglsva0mk0n7sb";
   };
 
-  copystructure = buildGoPackage rec {
+  copystructure = buildFromGitHub {
     rev = "6fc66267e9da7d155a9d3bd489e00dad02666dc6";
-    name = "copystructure-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/mitchellh/copystructure";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "mitchellh";
-      repo = "copystructure";
-      sha256 = "193s5vhw68d8npjyf5yvc5j24crazvy7d5dk316hl7590qrmbxrd";
-    };
-
+    owner = "mitchellh";
+    repo = "copystructure";
+    sha256 = "193s5vhw68d8npjyf5yvc5j24crazvy7d5dk316hl7590qrmbxrd";
     buildInputs = [ reflectwalk ];
   };
 
@@ -630,19 +609,14 @@ let
     sha256 = "1p4p8755v2nrn54rik7yifpg9szyg44y5rpp0kryx4ycl72307rj";
   };
 
-  gcloud-golang = buildGoPackage rec {
-    rev = "de1c38e5af44da22abe7c3b14a1edcf6264dae55";
-    name = "gcloud-golang-${stdenv.lib.strings.substring 0 7 rev}";
+  gcloud-golang = buildFromGitHub {
+    rev = "6335269abf9002cf5a84613c13cda6010842b834";
+    owner = "GoogleCloudPlatform";
+    repo = "gcloud-golang";
+    sha256 = "15xrqxna5ms0r634k3bfzyymn431dvqcjwbsap8ay60x371kzbwf";
     goPackagePath = "google.golang.org/cloud";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "GoogleCloudPlatform";
-      repo = "gcloud-golang";
-      sha256 = "0n6sh1zblixwyc9ykbsknmadsx2dmn3b5rsyrs30id1f96pgh4l0";
-    };
-
     buildInputs = [ net oauth2 protobuf google-api-go-client grpc ];
+    excludedPackages = "oauth2";
   };
 
   gcloud-golang-compute-metadata = buildGoPackage rec {
@@ -651,6 +625,13 @@ let
     buildInputs = [ net ];
   };
 
+  gettext-go = buildFromGitHub {
+    rev    = "783c0fb3da95b06dd89c4ba2771f1dc289ecc27c";
+    owner  = "chai2010";
+    repo   = "gettext-go";
+    sha256 = "1iz4wjxc3zkj0xkfs88ig670gb08p1sd922l0ig2cxpjcfjp1y99";
+  };
+
   ginkgo = buildGoPackage rec {
     rev = "5ed93e443a4b7dfe9f5e95ca87e6082e503021d2";
     name = "ginkgo-${stdenv.lib.strings.substring 0 7 rev}";
@@ -680,7 +661,7 @@ let
   };
 
   ugorji.go = buildGoPackage rec {
-    rev = "821cda7e48749cacf7cad2c6ed01e96457ca7e9d";
+    rev = "03e33114d4d60a1f37150325e15f51b0fa6fc4f6";
     name = "ugorji-go-${stdenv.lib.strings.substring 0 7 rev}";
     goPackagePath = "github.com/ugorji/go";
     goPackageAliases = [ "github.com/hashicorp/go-msgpack" ];
@@ -689,7 +670,7 @@ let
       inherit rev;
       owner = "ugorji";
       repo = "go";
-      sha256 = "1ay1l6gijxjgc7j0093drp5mjm93fmrp7r20qbqz4k05l43mqb3j";
+      sha256 = "01kdzgx23cgb4k867m1pvsw14hhdr9jf2frqy6i4j4221055m57v";
     };
   };
 
@@ -739,6 +720,14 @@ let
     };
   };
 
+  gocql = buildFromGitHub {
+    rev    = "53ea371a152ac188443fd3479f822ffecb0e9363";
+    owner  = "gocql";
+    repo   = "gocql";
+    sha256 = "0rqykhqgx7lrggcjyh053c3qddf130sgvsm27gndjv29rjrm874f";
+    propagatedBuildInputs = [ inf snappy groupcache ];
+  };
+
   gocolorize = buildGoPackage rec {
     rev = "v1.0.0";
     name = "gocolorize-${rev}";
@@ -779,24 +768,26 @@ let
     sha256 = "0yg1jpr7lcaqh6i8n9wbs9r128kk541qjv06r9a6fp9vj56rqr3m";
   };
 
-  govers = buildGoPackage rec {
+  govers = buildFromGitHub {
     rev = "3b5f175f65d601d06f48d78fcbdb0add633565b9";
-    name = "govers-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/rogpeppe/govers";
+    owner = "rogpeppe";
+    repo = "govers";
+    sha256 = "0din5a7nff6hpc4wg0yad2nwbgy4q1qaazxl8ni49lkkr4hyp8pc";
     dontRenameImports = true;
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "rogpeppe";
-      repo = "govers";
-      sha256 = "0din5a7nff6hpc4wg0yad2nwbgy4q1qaazxl8ni49lkkr4hyp8pc";
-    };
   };
 
   golang-lru = buildFromGitHub {
-    rev    = "995efda3e073b6946b175ed93901d729ad47466a";
+    rev    = "7f9ef20a0256f494e24126014135cf893ab71e9e";
     owner  = "hashicorp";
     repo   = "golang-lru";
-    sha256 = "0ilnzg9qq2pfa8qb9yd25s5afi0fvsm78kqzqy39kgg8zsx70xyj";
+    sha256 = "165x0p8plr3fwn4r1d11m3pxa3r8dhyk98z7x6ah35lf63jm2cwv";
+  };
+
+  golang-petname = buildFromGitHub {
+    rev    = "13f8b3a4326b9a6579358543cffe82713c1d6ce4";
+    owner  = "dustinkirkland";
+    repo   = "golang-petname";
+    sha256 = "1xx6lpv1r2sji8m9w35a2fkr9v4vsgvxrrahcq9bdg75qvadq91d";
   };
 
   golang_protobuf_extensions = buildGoPackage rec {
@@ -848,22 +839,14 @@ let
     sha256 = "1r8fpzwhakq8fsppc33n4iivq1pz47xhs0h6bv4x5qiip5mswwvg";
   };
 
-  google-api-go-client = buildGoPackage rec {
-    rev = "34c5554e6406f7f715ede3616b39034247545ce0";
-    name = "google-api-go-client-${stdenv.lib.strings.substring 0 7 rev}";
+  google-api-go-client = buildFromGitHub {
+    rev = "ca0499560ea76ac6561548f36ffe841364fe2348";
+    owner = "google";
+    repo = "google-api-go-client";
+    sha256 = "1w6bjhd8p6fxvm002jqk3r9vk50hlaqnxc9g6msb2wswy3nxcw57";
     goPackagePath = "google.golang.org/api";
-
-    preBuild = ''
-      rm -rf go/src/${goPackagePath}/examples
-    '';
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "google";
-      repo = "google-api-go-client";
-      sha256 = "1496h0xc7vjklr4m4j7vy1764k1qk2grpcwz5zssgplpfs9s9wfz";
-    };
-
+    goPackageAliases = [ "github.com/google/google-api-client" ];
+    excludedPackages = "examples";
     buildInputs = [ net ];
   };
 
@@ -884,17 +867,12 @@ let
     propagatedBuildInputs = [ google-api-go-client ];
   };
 
-  gopass = buildGoPackage rec {
-    rev = "2c70fa70727c953c51695f800f25d6b44abb368e";
-    name = "gopass-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/howeyc/gopass";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "howeyc";
-      repo = "gopass";
-      sha256 = "152lrkfxk205rlxiign0w5wb0fmfh910yz4jhlv4f4l1qr1h2lx8";
-    };
-    buildInputs = [ crypto ];
+  gopass = buildFromGitHub {
+    rev = "10b54de414cc9693221d5ff2ae14fd2fbf1b0ac1";
+    owner = "howeyc";
+    repo = "gopass";
+    sha256 = "0lsi89zx1i2f5vhm66zqn2drs7xi7ff8r1xlp6m58r99dddws57s";
+    propagatedBuildInputs = [ crypto ];
   };
 
   gopherduty = buildFromGitHub {
@@ -904,6 +882,16 @@ let
     sha256 = "11w1yqc16fxj5q1y5ha5m99j18fg4p9lyqi542x2xbrmjqqialcf";
   };
 
+  goproxy = buildFromGitHub {
+    rev    = "2624781dc373cecd1136cafdaaaeba6c9bb90e96";
+    date   = "2015-07-26";
+    owner  = "elazarl";
+    repo   = "goproxy";
+    sha256 = "1zz425y8byjaa9i7mslc9anz9w2jc093fjl0562rmm5hh4rc5x5f";
+    buildInputs = [ go-charset ];
+    excludedPackages = "examples";
+  };
+
   gosnappy = buildFromGitHub {
     rev    = "ce8acff4829e0c2458a67ead32390ac0a381c862";
     owner  = "syndtr";
@@ -994,6 +982,19 @@ let
     sha256 = "032nh3y43bpzpcm7bdkxfh55aydvzc2jzhigvy5gd9f648m4j9ha";
   };
 
+  go-charset = buildFromGitHub {
+    rev    = "61cdee49014dc952076b5852ce4707137eb36b64";
+    date   = "2014-07-13";
+    owner  = "paulrosania";
+    repo   = "go-charset";
+    sha256 = "0jp6rwxlgl66dipk6ssk8ly55jxncvsxs7jc3abgdrhr3rzccab8";
+    goPackagePath = "code.google.com/p/go-charset";
+
+    preBuild = ''
+      find go/src/$goPackagePath -name \*.go | xargs sed -i 's,github.com/paulrosania/go-charset,code.google.com/p/go-charset,g'
+    '';
+  };
+
   go-checkpoint = buildFromGitHub {
     rev    = "88326f6851319068e7b34981032128c0b1a6524d";
     owner  = "hashicorp";
@@ -1001,6 +1002,13 @@ let
     sha256 = "1npasn9lmvx57nw3wkswwvl5k0wmn01jpalbwv832x5wq4r0nsz4";
   };
 
+  go-colorable = buildFromGitHub {
+    rev    = "40e4aedc8fabf8c23e040057540867186712faa5";
+    owner  = "mattn";
+    repo   = "go-colorable";
+    sha256 = "0pwc0s5lvz209dcyamv1ba1xl0c1r5hpxwlq0w5j2xcz8hzrcwkl";
+  };
+
   go-colortext = buildFromGitHub {
     rev    = "13eaeb896f5985a1ab74ddea58707a73d875ba57";
     owner  = "daviddengcn";
@@ -1009,7 +1017,7 @@ let
   };
 
   go-etcd = buildGoPackage rec {
-    rev = "4734e7aca379f0d7fcdf04fbb2101696a4b45ce8";
+    rev = "9847b93751a5fbaf227b893d172cee0104ac6427";
     name = "go-etcd-${stdenv.lib.strings.substring 0 7 rev}";
     goPackagePath = "github.com/coreos/go-etcd";
 
@@ -1017,16 +1025,17 @@ let
       inherit rev;
       owner = "coreos";
       repo = "go-etcd";
-      sha256 = "0zqr7mzd5kq0rnxj3zx5x5wwbmjkg365farwv72hzrsvq6g8zczr";
+      sha256 = "1ihq01ayqzxvn6hca5j00vl189vi5lm78f0fy2wpk5mrm3xi01l4";
     };
-    buildInputs = [ pkgs.etcd ];
+
+    propagatedBuildInputs = [ ugorji.go ];
   };
 
   go-flags = buildFromGitHub {
-    rev    = "5e118789801496c93ba210d34ef1f2ce5a9173bd";
+    rev    = "1b89bf73cd2c3a911d7b2a279ab085c4a18cf539";
     owner  = "jessevdk";
     repo   = "go-flags";
-    sha256 = "1davr5h936fhc8zy7digp5yqxr216d1mshksr7iiad5xb3r8r9ja";
+    sha256 = "027nglc5xx1cm03z9sisg0iqrhwcj6gh5z254rrpl8p4fwrxx680";
   };
 
   go-fuse = buildGoPackage rec {
@@ -1042,19 +1051,14 @@ let
     subPackages = [ "fuse" "fuse/nodefs" "fuse/pathfs" ];
   };
 
-  go-github = buildGoPackage rec {
-    rev = "9eb187bac4eba6fff5a54f80550b2df73b651523";
-    name = "go-github-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/google/go-github";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "google";
-      repo = "go-github";
-      sha256 = "123ck9nf5ggdrndg2gs1bhr4ysh4z0izph9sp7ciisxpgjkaycxq";
-    };
-
-    buildInputs = [ go-querystring oauth2 ];
+  go-github = buildFromGitHub {
+    rev = "34fb8ee07214d23c3035c95691fe9069705814d6";
+    owner = "google";
+    repo = "go-github";
+    sha256 = "0ygh0f6p679r095l4bym8q4l45w2l3d8r3hx9xrnnppxq59i2395";
+    buildInputs = [ oauth2 ];
+    propagatedBuildInputs = [ go-querystring ];
+    excludedPackages = "examples";
   };
 
   go-gypsy = buildFromGitHub {
@@ -1065,10 +1069,10 @@ let
   };
 
   go-homedir = buildFromGitHub {
-    rev    = "7d2d8c8a4e078ce3c58736ab521a40b37a504c52";
+    rev    = "1f6da4a72e57d4e7edd4a7295a585e0a3999a2d4";
     owner  = "mitchellh";
     repo   = "go-homedir";
-    sha256 = "1ixhwxnvq1qx53asq47yhg3l88ndwrnyw4fkkidcjg759dc86d0i";
+    sha256 = "1l5lrsjrnwxn299mhvyxvz8hd0spkx0d31gszm4cyx21bg1xsiy9";
   };
 
   go-hostpool = buildFromGitHub {
@@ -1107,6 +1111,17 @@ let
     propagatedBuildInputs = [ osext go-systemd ];
   };
 
+  go-lxc = buildFromGitHub {
+    rev    = "a0fa4019e64b385dfa2fb8abcabcdd2f66871639";
+    owner  = "lxc";
+    repo   = "go-lxc";
+    sha256 = "0fkkmn7ynmzpr7j0ha1qsmh3k86ncxcbajmcb90hs0k0iaaiaahz";
+    goPackagePath = "gopkg.in/lxc/go-lxc.v2";
+    nativeBuildInputs = [ pkgs.pkgconfig ];
+    buildInputs = [ pkgs.lxc ];
+    excludedPackages = "examples";
+  };
+
   rcrowley.go-metrics = buildGoPackage rec {
     rev = "f770e6f5e91a8770cecee02d5d3f7c00b023b4df";
     name = "rcrowley.go-metrics-${stdenv.lib.strings.substring 0 7 rev}";
@@ -1135,7 +1150,7 @@ let
   };
 
   armon.go-metrics = buildGoPackage rec {
-    rev = "a54701ebec11868993bc198c3f315353e9de2ed6";
+    rev = "b2d95e5291cdbc26997d1301a5e467ecbb240e25";
     name = "armon.go-metrics-${stdenv.lib.strings.substring 0 7 rev}";
     goPackagePath = "github.com/armon/go-metrics";
 
@@ -1143,17 +1158,17 @@ let
       inherit rev;
       owner = "armon";
       repo = "go-metrics";
-      sha256 = "0ia9i96nac7vnmf5qb98rs74npf3vg55kdsvmql8cwgfpmqqcfdh";
+      sha256 = "1jvdf98jlbyzbb9w159nifvv8fihrcs66drnl8pilqdjpmkmyyck";
     };
 
     propagatedBuildInputs = [ prometheus.client_golang ];
   };
 
   go-multierror = buildFromGitHub {
-    rev    = "fcdddc395df1ddf4247c69bd436e84cfa0733f7e";
+    rev    = "56912fb08d85084aa318edcf2bba735b97cf35c5";
     owner  = "hashicorp";
     repo   = "go-multierror";
-    sha256 = "1gvrm2bqi425mfg55m01z9gppfd7v4ljz1z8bykmh2sc82fj25jz";
+    sha256 = "0s01cqdab2f7fxkkjjk2wqx05a1shnwlvfn45h2pi3i4gapvcn0r";
   };
 
   go-nsq = buildGoPackage rec {
@@ -1184,10 +1199,10 @@ let
   };
 
   go-radix = buildFromGitHub {
-    rev    = "0bab926c3433cfd6490c6d3c504a7b471362390c";
+    rev    = "fbd82e84e2b13651f3abc5ffd26b65ba71bc8f93";
     owner  = "armon";
     repo   = "go-radix";
-    sha256 = "0llq96lxh7p9426hjii8k42kq0cp1hflawh1kjwhbmi5g0jrq04d";
+    sha256 = "16y64r1v054c2ln0bi5mrqq1cmvy6d6pnxk1glb8lw2g31ksa80c";
   };
 
   junegunn.go-runewidth = buildGoPackage rec {
@@ -1229,16 +1244,23 @@ let
   };
 
   go-snappystream = buildGoPackage rec {
-    rev = "97c96e6648e99c2ce4fe7d169aa3f7368204e04d";
+    rev = "028eae7ab5c4c9e2d1cb4c4ca1e53259bbe7e504";
     name = "go-snappystream-${stdenv.lib.strings.substring 0 7 rev}";
     goPackagePath = "github.com/mreiferson/go-snappystream";
     src = fetchFromGitHub {
       inherit rev;
       owner = "mreiferson";
       repo = "go-snappystream";
-      sha256 = "08ylvx9r6b1fi76v6cqjvny4yqsvcqjfsg93jdrgs7hi4mxvxynn";
+      sha256 = "0jdd5whp74nvg35d9hzydsi3shnb1vrnd7shi9qz4wxap7gcrid6";
     };
-    propagatedBuildInputs = [ snappy-go ];
+  };
+
+  go-sqlite3 = buildFromGitHub {
+    rev    = "b4142c444a8941d0d92b0b7103a24df9cd815e42";
+    date   = "2015-07-29";
+    owner  = "mattn";
+    repo   = "go-sqlite3";
+    sha256 = "0xq2y4am8dz9w9aaq24s1npg1sn8pf2gn4nki73ylz2fpjwq9vla";
   };
 
   go-syslog = buildFromGitHub {
@@ -1265,6 +1287,16 @@ let
     buildInputs = [ dbus ];
   };
 
+  lxd-go-systemd = buildFromGitHub {
+    rev = "a3dcd1d0480ee0ae9ec354f1632202bfba715e03";
+    date = "2015-07-01";
+    owner = "stgraber";
+    repo = "lxd-go-systemd";
+    sha256 = "006dhy3j8ld0kycm8hrjxvakd7xdn1b6z2dsjp1l4sqrxdmm188w";
+    excludedPackages = "examples";
+    buildInputs = [ dbus ];
+  };
+
   go-update = buildGoPackage rec {
     rev = "c1385108bc3a016f1c88b75ea7d2e2a356a1571d";
     name = "go-update-${stdenv.lib.strings.substring 0 7 rev}";
@@ -1280,6 +1312,14 @@ let
     };
   };
 
+  go-uuid = buildFromGitHub {
+    rev    = "6b8e5b55d20d01ad47ecfe98e5171688397c61e9";
+    date   = "2015-07-22";
+    owner  = "satori";
+    repo   = "go.uuid";
+    sha256 = "0injxzds41v8nc0brvyrrjl66fk3hycz6im38s5r9ccbwlp68p44";
+  };
+
   go-vhost = buildFromGitHub {
     rev    = "c4c28117502e4bf00960c8282b2d1c51c865fe2c";
     owner  = "inconshreveable";
@@ -1288,10 +1328,10 @@ let
   };
 
   go-zookeeper = buildFromGitHub {
-    rev    = "d0e0d8e11f318e000a8cc434616d69e329edc374";
+    rev    = "5bb5cfc093ad18a28148c578f8632cfdb4d802e4";
     owner  = "samuel";
     repo   = "go-zookeeper";
-    sha256 = "0v6g14ygnjl1l2fykyfjyvnab82a70jy0zzmsn5swlyy45b9gq2d";
+    sha256 = "1kpx1ymh7rds0b2km291idnyqi0zck74nd8hnk72crgz7wmpqv6z";
   };
 
   lint = buildFromGitHub {
@@ -1334,24 +1374,27 @@ let
     subPackages = [ "./" ];
   };
 
-  grpc = buildGoPackage rec {
-    rev = "f5ebd86be717593ab029545492c93ddf8914832b";
-    name = "grpc-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "google.golang.org/grpc";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "grpc";
-      repo = "grpc-go";
-      sha256 = "07dfpwwk68rrhxmqj69gq2ncsf3kfmn0zhlwscda0gc5gb57n5x1";
-    };
+  groupcache = buildFromGitHub {
+    rev    = "604ed5785183e59ae2789449d89e73f3a2a77987";
+    owner  = "golang";
+    repo   = "groupcache";
+    sha256 = "1jh862mmgss71wls4yxv633agr7dk7y6h36npwqxbmhbz5c2q28l";
+    buildInputs = [ protobuf ];
+  };
 
-    buildInputs = [ gcloud-golang-compute-metadata ];
-    propagatedBuildInputs = [ http2 glog net protobuf oauth2 ];
+  grpc = buildFromGitHub {
+    rev = "7d81e8054fb2d57468136397b9b681e4ba4a7f8e";
+    owner = "grpc";
+    repo = "grpc-go";
+    sha256 = "0hknsqyzpnvjc2jvm741b16qi4jayijyhpxinskkm0nj0iy59h27";
+    goPackagePath = "google.golang.org/grpc";
+    goPackageAliases = [ "github.com/grpc/grpc-go" ];
+    propagatedBuildInputs = [ http2 net protobuf oauth2 glog ];
+    excludedPackages = "\\(examples\\|benchmark\\)";
   };
 
   gucumber = buildGoPackage rec {
-    rev = "fba94dc5a9077fa81eb85199fa9dfdaa8af82ab5";
+    rev = "e8116c9c66e641e9f81fc0a79fac923dfc646378";
     name = "gucumber-${stdenv.lib.strings.substring 0 7 rev}";
     goPackagePath = "github.com/lsegal/gucumber";
 
@@ -1359,25 +1402,18 @@ let
       inherit rev;
       owner = "lsegal";
       repo = "gucumber";
-      sha256 = "028wczwpicwmggk3221pz8ffzh30l47x8217gvdzcqq6h9iiaczr";
+      sha256 = "1ic1lsv05da6qv8xmf94lpbmaisxi8mwbv7bh2k1y78lh43yncah";
     };
 
     buildInputs = [ testify ];
     propagatedBuildInputs = [ ansicolor ];
   };
 
-  hcl = buildGoPackage rec {
-    rev  = "513e04c400ee2e81e97f5e011c08fb42c6f69b84";
-    name = "hcl-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/hashicorp/hcl";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "hashicorp";
-      repo   = "hcl";
-      sha256 = "041js0k8bj7qsgr79p207m6r3nkpw7839gq31747618sap6w3g8c";
-    };
-
+  hcl = buildFromGitHub {
+    rev  = "54864211433d45cb780682431585b3e573b49e4a";
+    owner  = "hashicorp";
+    repo   = "hcl";
+    sha256 = "07l2dydzjpdgm2d4a72hkmincn455j3nrafg6hs3c23bkvizj950";
     buildInputs = [ go-multierror ];
   };
 
@@ -1407,21 +1443,14 @@ let
       repo   = "hologram";
       sha256 = "1ra6rdniqh3pi84fm29zam4irzv52a1dd2sppaqngk07f7rkkhi4";
     };
-    buildInputs = [ crypto protobuf goamz rgbterm go-bindata go-homedir vanackere.ldap g2s gox ];
+    buildInputs = [ crypto protobuf goamz rgbterm go-bindata go-homedir ldap g2s gox ];
   };
 
-  http2 = buildGoPackage rec {
+  http2 = buildFromGitHub rec {
     rev = "f8202bc903bda493ebba4aa54922d78430c2c42f";
-    name = "http2-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/bradfitz/http2";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "bradfitz";
-      repo = "http2";
-      sha256 = "0cza2126jbji5vijwk4dxs05hifnff04xcr0vhxvafs6hz3sacvr";
-    };
-
+    owner = "bradfitz";
+    repo = "http2";
+    sha256 = "0cza2126jbji5vijwk4dxs05hifnff04xcr0vhxvafs6hz3sacvr";
     buildInputs = [ crypto ];
   };
 
@@ -1432,6 +1461,15 @@ let
     sha256 = "1l74pvqqhhval4vfnhca9d6i1ij69qs3ljf41w3m1l2id42rq7r9";
   };
 
+  inf = buildFromGitHub {
+    rev    = "c85f1217d51339c0fa3a498cc8b2075de695dae6";
+    owner  = "go-inf";
+    repo   = "inf";
+    sha256 = "1ykdk410vca8i35db2fp6qqcfx0bmx95k0xqd15wzsl0xjmyjk3y";
+    goPackagePath = "gopkg.in/inf.v0";
+    goPackageAliases = [ "github.com/go-inf/inf" ];
+  };
+
   influxdb = buildGoPackage rec {
     rev = "50a2b9ba0f189213fc399f59247787e71b872b2d";
     name = "influxdb-${stdenv.lib.strings.substring 0 7 rev}";
@@ -1506,19 +1544,20 @@ let
     };
   };
 
-  vanackere.ldap = buildGoPackage rec {
-    rev = "e29b797d1abde6567ccb4ab56236e033cabf845a";
+  ldap = buildGoPackage rec {
+    rev = "83e65426fd1c06626e88aa8a085e5bfed0208e29";
     name = "ldap-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/vanackere/ldap";
+    goPackagePath = "github.com/go-ldap/ldap";
     goPackageAliases = [
       "github.com/nmcclain/ldap"
+      "github.com/vanackere/ldap"
     ];
 
     src = fetchFromGitHub {
       inherit rev;
-      owner  = "vanackere";
+      owner  = "go-ldap";
       repo   = "ldap";
-      sha256 = "069n242wszl04z0cyrwfzpdf64ziw5c3ps4czrsdsx7h4msmvr1x";
+      sha256 = "179lwaf0hvczl8g4xzkpcpzq25p1b23f7399bx5zl55iin62d8yz";
     };
 
     propagatedBuildInputs = [ asn1-ber ];
@@ -1555,6 +1594,15 @@ let
     sha256 = "059c933qjikxlvaywzpzljqnab19svymbv6x32pc7khw156fh48w";
   };
 
+  log15 = buildFromGitHub {
+    rev    = "dc7890abeaadcb6a79a9a5ee30bc1897bbf97713";
+    owner  = "inconshreveable";
+    repo   = "log15";
+    sha256 = "15wgicl078h931n90rksgbqmfixvbfxywk3m8qkaln34v69x4vgp";
+    goPackagePath = "gopkg.in/inconshreveable/log15.v2";
+    propagatedBuildInputs = [ go-colorable ];
+  };
+
   log4go = buildGoPackage rec {
     rev = "cb4cc51cd03958183d3b637d0750497d88c2f7a8";
     name = "log4go-${stdenv.lib.strings.substring 0 7 rev}";
@@ -1594,17 +1642,29 @@ let
   };
 
   logutils = buildFromGitHub {
-    rev    = "367a65d59043b4f846d179341d138f01f988c186";
+    rev    = "0dc08b1671f34c4250ce212759ebd880f743d883";
     owner  = "hashicorp";
     repo   = "logutils";
-    sha256 = "0rjag8c6fn3f51nysrq62r46ma6gzyvijxba47q7cdfjq35mydb8";
+    sha256 = "0rynhjwvacv9ibl2k4fwz0xy71d583ac4p33gm20k9yldqnznc7r";
+  };
+
+  lxd = buildFromGitHub {
+    rev    = "22fec6bb6bb5988eb0f1b3532a02ebacfb26cf47";
+    date   = "2015-08-05";
+    owner  = "lxc";
+    repo   = "lxd";
+    sha256 = "1n7fhzl6vrn82r3cqpgqpgq5d5142rnk1cp7vig38323n2yh3749";
+    buildInputs = [
+      gettext-go websocket crypto log15 go-lxc yaml-v2 tomb protobuf pongo2
+      lxd-go-systemd go-uuid tablewriter golang-petname mux go-sqlite3 goproxy
+    ];
   };
 
   mapstructure = buildFromGitHub {
-    rev    = "f7d28d5aeab42b9b95d2e6d6b956f73a290077fc";
+    rev    = "281073eb9eb092240d33ef253c404f1cca550309";
     owner  = "mitchellh";
     repo   = "mapstructure";
-    sha256 = "1l9bxx0lrxdb75bxgy3jq2f6sgin2xd5ll70z5797vi96mlz8ydb";
+    sha256 = "1zjx9fv29639sp1fn84rxs830z7gp7bs38yd5y1hl5adb8s5x1mh";
   };
 
   mdns = buildGoPackage rec {
@@ -1664,18 +1724,34 @@ let
     };
   };
 
-  mgo = buildGoPackage rec {
-    rev = "c6a7dce14133ccac2dcac3793f1d6e2ef048503a";
-    name = "mgo-${rev}";
+  mgo = buildFromGitHub {
+    rev = "r2015.06.03";
+    owner = "go-mgo";
+    repo = "mgo";
+    sha256 = "1bwqbngdy0ghwpvarsz8rlrirdmjrda44aghihpfmin06hxy3zcd";
     goPackagePath = "gopkg.in/mgo.v2";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "go-mgo";
-      repo = "mgo";
-      sha256 ="0rg232q1bkq3y3kd5816hgk1jpf7i38aha5q5ia7j6p9xashz7vj";
-    };
+    goPackageAliases = [ "github.com/go-mgo/mgo" ];
+    buildInputs = [ pkgs.cyrus_sasl tomb ];
+  };
+
+  mongo-tools = buildFromGitHub {
+    rev    = "621464ebd2ba0c6ee373600b0cb7fd4216405550";
+    owner  = "mongodb";
+    repo   = "mongo-tools";
+    sha256 = "0hgh5h7bpn5xxnxgmw30fi51l4cb4g029nih8j8m0sr4if0n9vkf";
+    buildInputs = [ gopass go-flags mgo openssl tomb ];
+    excludedPackages = "vendor";
 
-    buildInputs = [ pkgs.cyrus_sasl ];
+    # Mongodb incorrectly names all of their binaries main
+    # Let's work around this with our own installer
+    installPhase = ''
+      mkdir -p $out/bin
+      while read b; do
+        rm -f go/bin/main
+        go install $goPackagePath/$b/main
+        cp go/bin/main $out/bin/$b
+      done < <(find go/src/$goPackagePath -name main | xargs dirname | xargs basename -a)
+    '';
   };
 
   mousetrap = buildFromGitHub {
@@ -1698,19 +1774,13 @@ let
     };
   };
 
-  mux = buildGoPackage rec {
-    rev = "47e8f450ef38c857cdd922ec08862ca9d65a1c6d";
-    name = "mux-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/gorilla/mux";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "gorilla";
-      repo = "mux";
-      sha256 = "03z7pk95z3314s3jryp6vs33209fj147g5jb2f331567gzld3b9g";
-    };
-
-    buildInputs = [ context ];
+  mux = buildFromGitHub {
+    rev = "5a8a0400500543e28b2886a8c52d21a435815411";
+    date = "2015-08-05";
+    owner = "gorilla";
+    repo = "mux";
+    sha256 = "15w1bw14vx157r6v98fhy831ilnbzdsm5xzvs23j8hw6gnknzaw1";
+    propagatedBuildInputs = [ context ];
   };
 
   muxado = buildFromGitHub {
@@ -1721,10 +1791,10 @@ let
   };
 
   mysql = buildFromGitHub {
-    rev    = "0cc29e9fe8e25c2c58cf47bcab566e029bbaa88b";
+    rev    = "fb7299726d2e68745a8805b14f2ff44b5c2cfa84";
     owner  = "go-sql-driver";
     repo   = "mysql";
-    sha256 = "0ydvd0mk53793sj3hgycsx926zvzxipxvppld1i175g3pn4d41xp";
+    sha256 = "185af0x475hq2wmm2zdvxjyslkplf8zzqijdxa937zqxq63qiw4w";
   };
 
   net-rpc-msgpackrpc = buildGoPackage rec {
@@ -1796,34 +1866,30 @@ let
     doCheck = false; # check this again
   };
 
-  openssl = buildGoPackage rec {
-    rev = "84b5df477423634115e53fb171a66007cece19f5";
-    name = "openssl-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/spacemonkeygo/openssl";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "spacemonkeygo";
-      repo = "openssl";
-      sha256 = "1l0cyazxp8bwmi151djyr6pknj9jv8n53lgfhgj6l0zj32p5kh1v";
-    };
-    buildInputs = [ spacelog pkgconfig pkgs.openssl ];
+  openssl = buildFromGitHub {
+    rev = "4c6dbafa5ec35b3ffc6a1b1e1fe29c3eba2053ec";
+    owner = "10gen";
+    repo = "openssl";
+    sha256 = "1033c9vgv9lf8ks0qjy0ylsmx1hizqxa6izalma8vi30np6ka6zn";
+    goPackageAliases = [ "github.com/spacemonkeygo/openssl" ];
+    nativeBuildInputs = [ pkgs.pkgconfig ];
+    buildInputs = [ pkgs.openssl ];
+    propagatedBuildInputs = [ spacelog ];
+
+    preBuild = ''
+      find go/src/$goPackagePath -name \*.go | xargs sed -i 's,spacemonkeygo/openssl,10gen/openssl,g'
+    '';
   };
 
-  osext = buildGoPackage rec {
-    rev = "8fef92e41e22a70e700a96b29f066cda30ea24ef";
-    name = "osext-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/kardianos/osext";
+  osext = buildFromGitHub {
+    rev = "6e7f843663477789fac7c02def0d0909e969b4e5";
+    owner = "kardianos";
+    repo = "osext";
+    sha256 = "1sn1kk60azqbll687fndiskkfvp0ppca8rmakv8wgsn7a64sm39f";
     goPackageAliases = [
       "github.com/bugsnag/osext"
       "bitbucket.org/kardianos/osext"
     ];
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "kardianos";
-      repo = "osext";
-      sha256 = "1md9c0qlmfhwcwgqg92vfykcy95snci4n815plb15mgj5cf8dm7d";
-    };
   };
 
   pat = buildFromGitHub {
@@ -1895,6 +1961,15 @@ let
     doCheck = false; # bad import path in tests
   };
 
+  pongo2 = buildFromGitHub {
+    rev    = "5e81b817a0c48c1c57cdf1a9056cf76bdee02ca9";
+    date   = "2014-10-27";
+    owner  = "flosch";
+    repo   = "pongo2";
+    sha256 = "0fd7d79644zmcirsb1gvhmh0l5vb5nyxmkzkvqpmzzcg6yfczph8";
+    goPackagePath = "gopkg.in/flosch/pongo2.v3";
+  };
+
   pool = buildGoPackage rec {
     rev = "v2.0.0";
     name = "pq-${rev}";
@@ -1909,10 +1984,10 @@ let
   };
 
   pq = buildFromGitHub {
-    rev    = "93e9980741c9e593411b94e07d5bad8cfb4809db";
+    rev    = "0dad96c0b94f8dee039aa40467f767467392a0af";
     owner  = "lib";
     repo   = "pq";
-    sha256 = "1q0zlizsk3xn7jn0skbvbhcxsfhq7z3dva96cm72n2r5vs5ld783";
+    sha256 = "06c38iy37251mh8jy9s8n97b01pjnqpq8ii77nnmqh1dsph37jz4";
   };
 
   pretty = buildGoPackage rec {
@@ -1928,18 +2003,11 @@ let
     propagatedBuildInputs = [ kr.text ];
   };
 
-  prometheus.client_golang = buildGoPackage rec {
-    name = "prometheus-client-${version}";
-    version = "0.5.0";
-    goPackagePath = "github.com/prometheus/client_golang";
-
-    src = fetchFromGitHub {
-      owner = "prometheus";
-      repo = "client_golang";
-      rev = "${version}";
-      sha256 = "0aaf20iv797dj2vr5lnqk006aw7n0cclmxlpk8xy6c6nrn6fm3nv";
-    };
-
+  prometheus.client_golang = buildFromGitHub {
+    rev = "3a499bf7fc46bc58337ce612d0cbb29c550b8118";
+    owner = "prometheus";
+    repo = "client_golang";
+    sha256 = "1hf79m83kr3b6nxxwz8qw1c5nls58j1xfaz7q6k6bb9kwabpc3gi";
     propagatedBuildInputs = [
       goautoneg
       protobuf
@@ -1948,6 +2016,7 @@ let
       prometheus.procfs
       beorn7.perks
     ];
+    excludedPackages = "examples";
   };
 
   prometheus.client_model = buildGoPackage rec {
@@ -2070,10 +2139,10 @@ let
   };
 
   reflectwalk = buildFromGitHub {
-    rev    = "242be0c275dedfba00a616563e6db75ab8f279ec";
+    rev    = "eecf4c70c626c7cfbb95c90195bc34d386c74ac6";
     owner  = "mitchellh";
     repo   = "reflectwalk";
-    sha256 = "0xjyjs7ci7yaslk0rcgdw99ys2kq0p14cx6c90pmdzl0m9pcc9v4";
+    sha256 = "1nm2ig7gwlmf04w7dbqd8d7p64z2030fnnfbgnd56nmd7dz8gpxq";
   };
 
   revel = buildGoPackage rec {
@@ -2183,27 +2252,11 @@ let
     propagatedBuildInputs = [ raw ];
   };
 
-  snappy-go = buildGoPackage rec {
-    rev = "14";
-    name = "snappy-go-${rev}";
-    goPackagePath = "code.google.com/p/snappy-go";
-    src = fetchhg {
-      inherit rev;
-      url = "http://code.google.com/p/snappy-go";
-      sha256 = "0ywa52kcii8g2a9lbqcx8ghdf6y56lqq96sl5nl9p6h74rdvmjr7";
-    };
-  };
-
-  spacelog = buildGoPackage rec {
+  spacelog = buildFromGitHub {
     rev = "ae95ccc1eb0c8ce2496c43177430efd61930f7e4";
-    name = "spacelog-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/spacemonkeygo/spacelog";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "spacemonkeygo";
-      repo = "spacelog";
-      sha256 = "1i1awivsix0ch0vg6rwvx0536ziyw6phcx45b1rmrclp6b6dyacy";
-    };
+    owner = "spacemonkeygo";
+    repo = "spacelog";
+    sha256 = "1i1awivsix0ch0vg6rwvx0536ziyw6phcx45b1rmrclp6b6dyacy";
     buildInputs = [ flagfile ];
   };
 
@@ -2241,6 +2294,21 @@ let
     };
   };
 
+  structs = buildFromGitHub {
+    rev    = "a9f7daa9c2729e97450c2da2feda19130a367d8f";
+    owner  = "fatih";
+    repo   = "structs";
+    sha256 = "0pyrc7svc826g37al3db19n5l4r2m9h1mlhjh3hz2r41xfaqia50";
+  };
+
+  tablewriter = buildFromGitHub {
+    rev    = "bc39950e081b457853031334b3c8b95cdfe428ba";
+    date   = "2015-06-03";
+    owner  = "olekukonko";
+    repo   = "tablewriter";
+    sha256 = "0n4gqjc2dqmnbpqgi9i8vrwdk4mkgyssc7l2n4r5bqx0n3nxpbps";
+  };
+
   termbox-go = buildGoPackage rec {
     rev = "9aecf65084a5754f12d27508fa2e6ed56851953b";
     name = "termbox-go-${stdenv.lib.strings.substring 0 7 rev}";
@@ -2256,7 +2324,7 @@ let
   };
 
   testify = buildGoPackage rec {
-    rev = "dab07ac62d4905d3e48d17dc549c684ac3b7c15a";
+    rev = "089c7181b8c728499929ff09b62d3fdd8df8adff";
     name = "testify-${stdenv.lib.strings.substring 0 7 rev}";
     goPackagePath = "github.com/stretchr/testify";
 
@@ -2264,7 +2332,7 @@ let
       inherit rev;
       owner = "stretchr";
       repo = "testify";
-      sha256 = "0r24v9ly3g68ywqyri14fn8smvkw8zvrzbivxw3ndd6jxcvi84b7";
+      sha256 = "03dzxkxbs298pvfsjz4kdadfaf9jkzsdhshqmg4p12wbyaj09s4p";
     };
 
     buildInputs = [ objx ];
@@ -2283,16 +2351,13 @@ let
     propagatedBuildInputs = [ pty ];
   };
 
-  tomb = buildGoPackage rec {
+  tomb = buildFromGitHub {
     rev = "14b3d72120e8d10ea6e6b7f87f7175734b1faab8";
-    name = "tomb-${stdenv.lib.strings.substring 0 7 rev}";
+    owner = "go-tomb";
+    repo = "tomb";
+    sha256 = "1nza31jvkpka5431c4bdbirvjdy36b1b55sbzljqhqih25jrcjx5";
     goPackagePath = "gopkg.in/tomb.v2";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "go-tomb";
-      repo = "tomb";
-      sha256 = "1nza31jvkpka5431c4bdbirvjdy36b1b55sbzljqhqih25jrcjx5";
-    };
+    goPackageAliases = [ "github.com/go-tomb/tomb" ];
   };
 
   toml = buildFromGitHub {
@@ -2312,20 +2377,19 @@ let
       repo = "usb";
       sha256 = "01k0c2g395j65vm1w37mmrfkg6nm900khjrrizzpmx8f8yf20dky";
     };
-    buildInputs = [ pkgconfig libusb ];
+    nativeBuildInputs = [ pkgs.pkgconfig ];
+    buildInputs = [ pkgs.libusb ];
   };
 
-  vault = buildGoPackage rec {
-    rev = "v0.1.2";
-    name = "vault-${rev}";
-    goPackagePath = "github.com/hashicorp/vault";
+  vault = buildFromGitHub {
+    rev = "v0.2.0";
+    owner = "hashicorp";
+    repo = "vault";
+    sha256 = "133fwhzk8z3xb6mf6scmn5rbl6g4vqg4g4n6zw620fsn9wy1b9ni";
 
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "hashicorp";
-      repo = "vault";
-      sha256 = "0q6wlw0s9dig11mzcfg25fh2wz7g70zxkqm7c5f58fncxdby2nqj";
-    };
+    #postPatch = ''
+    #  grep -r '/gen/' | awk -F: '{print $1}' | xargs sed -i 's,/gen/,/apis/,g'
+    #'';
 
     # We just want the consul api not all of consul
     extraSrcs = [
@@ -2333,10 +2397,10 @@ let
     ];
 
     buildInputs = [
-      armon.go-metrics go-radix mysql go-querystring hashicorp.aws-sdk-go
-      errwrap go-multierror go-syslog golang-lru hcl logutils pq cli
-      copystructure go-homedir mapstructure reflectwalk columnize go-zookeeper
-      asn1-ber vanackere.ldap go-ini crypto net oauth2 osext go-github
+      armon.go-metrics go-radix aws-sdk-go go-etcd structs ldap mysql gocql
+      golang-lru go-github hashicorp.aws-sdk-go errwrap go-multierror go-syslog
+      hcl logutils osext pq cli copystructure go-homedir mapstructure
+      reflectwalk columnize go-zookeeper crypto net oauth2
     ];
   };
 
@@ -2355,10 +2419,10 @@ let
   };
 
   websocket = buildFromGitHub {
-    rev    = "f4076986b69612ecb8bc7ce06d742eda6286200d";
+    rev    = "6eb6ad425a89d9da7a5549bc6da8f79ba5c17844";
     owner  = "gorilla";
     repo   = "websocket";
-    sha256 = "09arvwlxw15maf4z8pcgjc25hd00mckqpdi0byafqfgm3nvvacvq";
+    sha256 = "0gljdfxqc94yb1kpqqrm5p94ph9dsxrzcixhdj6m92cwwa7z7p99";
   };
 
   yaml-v1 = buildGoPackage rec {
@@ -2373,16 +2437,13 @@ let
     };
   };
 
-  yaml-v2 = buildGoPackage rec {
-    name = "yaml-v2-${version}";
-    version = "git-2015-05-19";
+  yaml-v2 = buildFromGitHub {
+    rev = "7ad95dd0798a40da1ccdff6dff35fd177b5edf40";
+    date = "2015-06-24";
+    owner = "go-yaml";
+    repo = "yaml";
+    sha256 = "0d4jh46jq2yjg5dp00l7yl9ilhly7k4mfvi4harafd5ap5k9wnpb";
     goPackagePath = "gopkg.in/yaml.v2";
-    src = fetchFromGitHub {
-      rev = "c1cd2254a6dd314c9d73c338c12688c9325d85c6";
-      owner = "go-yaml";
-      repo = "yaml";
-      sha256 = "0xhv0i700hh8lczrwxhn3c99npqma7k4337qrh6k36falm0jpp4s";
-    };
   };
 
   yamux = buildFromGitHub {
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index d107f33ae40..0253bfa8d6e 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -3794,16 +3794,21 @@ let self = _self // overrides; _self = with self; {
   };
 
   EncodeLocale = buildPerlPackage rec {
-    name = "Encode-Locale-1.03";
+    name = "Encode-Locale-1.05";
     src = fetchurl {
       url = "mirror://cpan/modules/by-module/Encode/${name}.tar.gz";
-      sha256 = "0m9d1vdphlyzybgmdanipwd9ndfvyjgk3hzw250r299jjgh3fqzp";
+      sha256 = "176fa02771f542a4efb1dbc2a4c928e8f4391bf4078473bd6040d8f11adb0ec1";
     };
     preCheck = if stdenv.isCygwin then ''
       sed -i"" -e "s@plan tests => 13@plan tests => 10@" t/env.t
       sed -i"" -e "s@ok(env(\"\\\x@#ok(env(\"\\\x@" t/env.t
       sed -i"" -e "s@ok(\$ENV{\"\\\x@#ok(\$ENV{\"\\\x@" t/env.t
     '' else null;
+    meta = {
+      description = "Determine the locale encoding";
+      license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.rycee ];
+    };
   };
 
   Env = buildPerlPackage {
@@ -5368,15 +5373,15 @@ let self = _self // overrides; _self = with self; {
   };
 
   IOHTML = buildPerlPackage {
-    name = "IO-HTML-0.04";
+    name = "IO-HTML-1.001";
     src = fetchurl {
-      url = mirror://cpan/authors/id/C/CJ/CJM/IO-HTML-0.04.tar.gz;
-      sha256 = "0c4hc76c1gypdwfasnibr2qlf9x3bnhyw357lhqlrczbm6vn8hw5";
+      url = mirror://cpan/authors/id/C/CJ/CJM/IO-HTML-1.001.tar.gz;
+      sha256 = "ea78d2d743794adc028bc9589538eb867174b4e165d7d8b5f63486e6b828e7e0";
     };
     meta = {
-      homepage = http://search.cpan.org/perldoc?CPAN::Meta::Spec;
       description = "Open an HTML file with automatic charset detection";
       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.rycee ];
     };
   };
 
@@ -6162,8 +6167,8 @@ let self = _self // overrides; _self = with self; {
       url = "mirror://cpan/authors/id/E/ET/ETHER/${name}.tar.gz";
       sha256 = "1cpqjl59viw50bnbdyn8xzrwzg7g54b2rszw0fifacqrppp17gaz";
     };
-    propagatedBuildInputs = [ EncodeLocale FileListing HTMLParser HTTPCookies HTTPDaemon HTTPDate HTTPNegotiate HTTPMessage LWPMediaTypes NetHTTP URI WWWRobotRules ];
-    doCheck = false; # tries to start a daemon
+    patches = [ ../development/perl-modules/lwp-test-with-localhost.patch ];
+    propagatedBuildInputs = [ EncodeLocale FileListing HTMLParser HTTPCookies HTTPDaemon HTTPDate HTTPMessage HTTPNegotiate LWPMediaTypes NetHTTP URI WWWRobotRules ];
     meta = {
       description = "The World-Wide Web library for Perl";
       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
@@ -7906,14 +7911,16 @@ let self = _self // overrides; _self = with self; {
   };
 
   NetHTTP = buildPerlPackage {
-    name = "Net-HTTP-6.06";
+    name = "Net-HTTP-6.09";
     src = fetchurl {
-      url = mirror://cpan/authors/id/G/GA/GAAS/Net-HTTP-6.06.tar.gz;
-      sha256 = "1m1rvniffadq99gsy25298ia3lixwymr6kan64jd3ylyi7nkqkhx";
+      url = mirror://cpan/authors/id/E/ET/ETHER/Net-HTTP-6.09.tar.gz;
+      sha256 = "52762b939d84806908ba544581c5708375f7938c3c0e496c128ca3fbc425e58d";
     };
+    propagatedBuildInputs = [ URI ];
     meta = {
       description = "Low-level HTTP connection (client)";
       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.rycee ];
     };
   };
 
@@ -11799,14 +11806,15 @@ let self = _self // overrides; _self = with self; {
   };
 
   URI = buildPerlPackage {
-    name = "URI-1.60";
+    name = "URI-1.68";
     src = fetchurl {
-      url = mirror://cpan/authors/id/G/GA/GAAS/URI-1.60.tar.gz;
-      sha256 = "0xr31mf7lfrwhyvlx4pzp6p7alls5gi4bj8pk5g89f5cckfd74hz";
+      url = mirror://cpan/authors/id/E/ET/ETHER/URI-1.68.tar.gz;
+      sha256 = "c840d30f7657bfd4b2acbb311bd764232911cd3dc97e92415fbd0a242185c358";
     };
     meta = {
       description = "Uniform Resource Identifiers (absolute and relative)";
       license = with stdenv.lib.licenses; [ artistic1 gpl1Plus ];
+      maintainers = [ maintainers.rycee ];
     };
   };