summary refs log tree commit diff
path: root/pkgs/development/libraries
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries')
-rw-r--r--pkgs/development/libraries/CGAL/default.nix3
-rw-r--r--pkgs/development/libraries/SDL/default.nix6
-rw-r--r--pkgs/development/libraries/accounts-qt/default.nix10
-rw-r--r--pkgs/development/libraries/avro-c++/default.nix29
-rw-r--r--pkgs/development/libraries/aws-sdk-cpp/default.nix4
-rw-r--r--pkgs/development/libraries/beignet/clang_llvm.patch62
-rw-r--r--pkgs/development/libraries/beignet/default.nix123
-rw-r--r--pkgs/development/libraries/bobcat/default.nix4
-rw-r--r--pkgs/development/libraries/cairo/default.nix3
-rw-r--r--pkgs/development/libraries/catch/default.nix6
-rw-r--r--pkgs/development/libraries/cegui/default.nix21
-rw-r--r--pkgs/development/libraries/enet/default.nix1
-rw-r--r--pkgs/development/libraries/ffmpeg-full/default.nix22
-rw-r--r--pkgs/development/libraries/fmod/4.24.16.nix2
-rw-r--r--pkgs/development/libraries/fmod/default.nix2
-rw-r--r--pkgs/development/libraries/folly/default.nix14
-rw-r--r--pkgs/development/libraries/gdk-pixbuf/default.nix6
-rw-r--r--pkgs/development/libraries/gegl/3.0.nix11
-rw-r--r--pkgs/development/libraries/glib/default.nix6
-rw-r--r--pkgs/development/libraries/gnutls/3.4.nix4
-rw-r--r--pkgs/development/libraries/gobject-introspection/darwin-fixups.patch26
-rw-r--r--pkgs/development/libraries/gobject-introspection/default.nix7
-rw-r--r--pkgs/development/libraries/gstreamer/bad/default.nix7
-rw-r--r--pkgs/development/libraries/gstreamer/base/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/core/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/ges/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/good/default.nix8
-rw-r--r--pkgs/development/libraries/gstreamer/libav/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/python/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/ugly/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/vaapi/default.nix4
-rw-r--r--pkgs/development/libraries/gstreamer/validate/default.nix4
-rw-r--r--pkgs/development/libraries/gtk+/3.x.nix6
-rw-r--r--pkgs/development/libraries/herqq/default.nix6
-rw-r--r--pkgs/development/libraries/ijs/default.nix13
-rw-r--r--pkgs/development/libraries/json-glib/default.nix6
-rw-r--r--pkgs/development/libraries/kerberos/krb5.nix4
-rw-r--r--pkgs/development/libraries/libburn/default.nix18
-rw-r--r--pkgs/development/libraries/libcommuni/default.nix12
-rw-r--r--pkgs/development/libraries/libdigidoc/default.nix28
-rw-r--r--pkgs/development/libraries/libdigidocpp/default.nix31
-rw-r--r--pkgs/development/libraries/libdvdcss/default.nix4
-rw-r--r--pkgs/development/libraries/libeatmydata/default.nix4
-rw-r--r--pkgs/development/libraries/libfilezilla/default.nix4
-rw-r--r--pkgs/development/libraries/libiberty/default.nix22
-rw-r--r--pkgs/development/libraries/libibverbs/default.nix60
-rw-r--r--pkgs/development/libraries/libinput/default.nix4
-rw-r--r--pkgs/development/libraries/libisofs/default.nix21
-rw-r--r--pkgs/development/libraries/libjpeg-turbo/default.nix4
-rw-r--r--pkgs/development/libraries/libkeyfinder/default.nix10
-rw-r--r--pkgs/development/libraries/libmatchbox/default.nix7
-rw-r--r--pkgs/development/libraries/libmemcached/default.nix3
-rw-r--r--pkgs/development/libraries/libqglviewer/default.nix8
-rw-r--r--pkgs/development/libraries/libraw/default.nix4
-rw-r--r--pkgs/development/libraries/libsearpc/default.nix8
-rw-r--r--pkgs/development/libraries/libsigcxx/default.nix6
-rw-r--r--pkgs/development/libraries/libsolv/default.nix25
-rw-r--r--pkgs/development/libraries/libu2f-host/default.nix5
-rw-r--r--pkgs/development/libraries/libuv/default.nix87
-rw-r--r--pkgs/development/libraries/libvirt/default.nix2
-rw-r--r--pkgs/development/libraries/libxml2/default.nix2
-rw-r--r--pkgs/development/libraries/menu-cache/default.nix8
-rw-r--r--pkgs/development/libraries/mesa/default.nix4
-rw-r--r--pkgs/development/libraries/nanoflann/default.nix25
-rw-r--r--pkgs/development/libraries/nghttp2/default.nix61
-rw-r--r--pkgs/development/libraries/nlopt/default.nix4
-rw-r--r--pkgs/development/libraries/ogre/default.nix16
-rw-r--r--pkgs/development/libraries/pcre/default.nix1
-rw-r--r--pkgs/development/libraries/phonon-backend-gstreamer/qt4/default.nix17
-rw-r--r--pkgs/development/libraries/phonon/default.nix54
-rw-r--r--pkgs/development/libraries/phonon/qt4/default.nix28
-rw-r--r--pkgs/development/libraries/phonon/qt5/default.nix36
-rw-r--r--pkgs/development/libraries/polkit-qt-1/default.nix25
-rw-r--r--pkgs/development/libraries/polkit-qt-1/qt-4.nix21
-rw-r--r--pkgs/development/libraries/polkit-qt-1/qt-5.nix29
-rw-r--r--pkgs/development/libraries/qmltermwidget/default.nix11
-rw-r--r--pkgs/development/libraries/qoauth/default.nix8
-rw-r--r--pkgs/development/libraries/qscintilla/default.nix6
-rw-r--r--pkgs/development/libraries/qt-4.x/4.8/default.nix12
-rw-r--r--pkgs/development/libraries/qt-4.x/4.8/qmake-hook.sh11
-rw-r--r--pkgs/development/libraries/qt-5/5.4/default.nix5
-rw-r--r--pkgs/development/libraries/qt-5/5.4/qmake-hook.sh101
-rw-r--r--pkgs/development/libraries/qt-5/5.4/qtbase/default.nix1
-rw-r--r--pkgs/development/libraries/qt-5/5.4/qtbase/setup-hook.sh103
-rw-r--r--pkgs/development/libraries/qt-5/5.4/qtmultimedia.nix2
-rw-r--r--pkgs/development/libraries/qt-5/5.5/default.nix5
-rw-r--r--pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh20
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qmake-hook.sh101
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtbase/default.nix6
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtbase/nix-profiles-library-paths.patch18
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh102
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtdeclarative/nix-profiles-import-paths.patch20
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtmultimedia.nix2
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtquick1/nix-profiles-import-paths.patch20
-rw-r--r--pkgs/development/libraries/qtscriptgenerator/default.nix2
-rw-r--r--pkgs/development/libraries/quazip/default.nix11
-rw-r--r--pkgs/development/libraries/qwt/6.nix9
-rw-r--r--pkgs/development/libraries/qwt/default.nix9
-rw-r--r--pkgs/development/libraries/signon/default.nix10
-rw-r--r--pkgs/development/libraries/speechd/default.nix33
-rw-r--r--pkgs/development/libraries/sqlite/default.nix6
-rw-r--r--pkgs/development/libraries/sqlite/sqlite3_analyzer.nix2
-rw-r--r--pkgs/development/libraries/telepathy/glib/default.nix4
-rw-r--r--pkgs/development/libraries/tsocks/default.nix13
-rw-r--r--pkgs/development/libraries/v8/3.16.14.nix6
-rw-r--r--pkgs/development/libraries/v8/4.5.nix4
-rw-r--r--pkgs/development/libraries/v8/generic.nix4
-rw-r--r--pkgs/development/libraries/xalanc/default.nix28
-rw-r--r--pkgs/development/libraries/xml-security-c/default.nix34
-rw-r--r--pkgs/development/libraries/xsd/default.nix38
-rw-r--r--pkgs/development/libraries/xsd/xsdcxx.patch126
111 files changed, 1347 insertions, 708 deletions
diff --git a/pkgs/development/libraries/CGAL/default.nix b/pkgs/development/libraries/CGAL/default.nix
index 1f964388cbd..b8fd4af812a 100644
--- a/pkgs/development/libraries/CGAL/default.nix
+++ b/pkgs/development/libraries/CGAL/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, cmake, boost, gmp, mpfr }:
+{ stdenv, fetchurl, cmake, boost, gmp, mpfr, mesa_glu }:
 
 stdenv.mkDerivation rec {
   version = "4.7";
@@ -12,6 +12,7 @@ stdenv.mkDerivation rec {
   # note: optional component libCGAL_ImageIO would need zlib and opengl;
   #   there are also libCGAL_Qt{3,4} omitted ATM
   buildInputs = [ cmake boost gmp mpfr ];
+  #propagatedBuildInputs = [ mesa_glu ];
 
   doCheck = false;
 
diff --git a/pkgs/development/libraries/SDL/default.nix b/pkgs/development/libraries/SDL/default.nix
index 6c3920ff8aa..5d97a7fa59e 100644
--- a/pkgs/development/libraries/SDL/default.nix
+++ b/pkgs/development/libraries/SDL/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, fetchpatch, pkgconfig, audiofile, libcap
-, openglSupport ? false, mesa ? null
+, openglSupport ? false, mesa_noglu ? null
 , alsaSupport ? true, alsaLib ? null
 , x11Support ? true, xlibsWrapper ? null, libXrandr ? null
 , pulseaudioSupport ? true, libpulseaudio ? null
@@ -10,7 +10,7 @@
 # PulseAudio.
 assert (stdenv.isLinux && !(stdenv ? cross)) -> alsaSupport || pulseaudioSupport;
 
-assert openglSupport -> (mesa != null && x11Support);
+assert openglSupport -> (mesa_noglu != null && x11Support);
 assert x11Support -> (xlibsWrapper != null && libXrandr != null);
 assert alsaSupport -> alsaLib != null;
 assert pulseaudioSupport -> libpulseaudio != null;
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
     optionals x11Support [ xlibsWrapper libXrandr ] ++
     optional alsaSupport alsaLib ++
     optional stdenv.isLinux libcap ++
-    optional openglSupport mesa ++
+    optional openglSupport mesa_noglu ++
     optional pulseaudioSupport libpulseaudio ++
     optional stdenv.isDarwin Cocoa;
 
diff --git a/pkgs/development/libraries/accounts-qt/default.nix b/pkgs/development/libraries/accounts-qt/default.nix
index e82d37f1d3c..a16a0ef8cf5 100644
--- a/pkgs/development/libraries/accounts-qt/default.nix
+++ b/pkgs/development/libraries/accounts-qt/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitLab, doxygen, glib, libaccounts-glib, pkgconfig, qtbase }:
+{ stdenv, fetchFromGitLab, doxygen, glib, libaccounts-glib, pkgconfig, qtbase, qmakeHook }:
 
 stdenv.mkDerivation rec {
   name = "accounts-qt-${version}";
@@ -12,12 +12,10 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [ glib libaccounts-glib qtbase ];
-  nativeBuildInputs = [ doxygen pkgconfig ];
+  nativeBuildInputs = [ doxygen pkgconfig qmakeHook ];
 
-  configurePhase = ''
-    runHook preConfigure
-    qmake PREFIX=$out LIBDIR=$out/lib CMAKE_CONFIG_PATH=$out/lib/cmake
-    runHook postConfigure
+  preConfigure = ''
+    qmakeFlags="$qmakeFlags LIBDIR=$out/lib CMAKE_CONFIG_PATH=$out/lib/cmake"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/avro-c++/default.nix b/pkgs/development/libraries/avro-c++/default.nix
new file mode 100644
index 00000000000..2cd03253e7e
--- /dev/null
+++ b/pkgs/development/libraries/avro-c++/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, cmake, boost155, pythonPackages
+}:
+
+let version = "1.7.5"; in
+
+stdenv.mkDerivation {
+  name = "avro-c++-${version}";
+
+  src = fetchurl {
+    url = "mirror://apache/avro/avro-${version}/cpp/avro-cpp-${version}.tar.gz";
+    sha256 = "064ssbbgrc3hyalzj8rn119bsrnyk1vlpkhl8gghv96jgqbpdyb3";
+  };
+
+  buildInputs = [
+    cmake
+    boost155
+    pythonPackages.python
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "A C++ library which implements parts of the Avro Specification";
+    homepage = https://avro.apache.org/;
+    license = stdenv.lib.licenses.asl20;
+    maintainers = with stdenv.lib.maintainers; [ rasendubi ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/pkgs/development/libraries/aws-sdk-cpp/default.nix b/pkgs/development/libraries/aws-sdk-cpp/default.nix
index 6a881e4245a..1848bd064f1 100644
--- a/pkgs/development/libraries/aws-sdk-cpp/default.nix
+++ b/pkgs/development/libraries/aws-sdk-cpp/default.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation rec {
   name = "aws-sdk-cpp-${version}";
-  version = "0.9.6";
+  version = "0.10.6";
 
   src = fetchFromGitHub {
     owner = "awslabs";
     repo = "aws-sdk-cpp";
     rev = version;
-    sha256 = "022v7naa5vjvq3wfn4mcp99li61ffsk2fnc8qqi52cb1pyxz9sk1";
+    sha256 = "1x3xam7vprlld6iqhqgdhgmqyclfy8dvzgy3375cijy9akhvv67i";
   };
 
   buildInputs = [ cmake curl ];
diff --git a/pkgs/development/libraries/beignet/clang_llvm.patch b/pkgs/development/libraries/beignet/clang_llvm.patch
new file mode 100644
index 00000000000..88876f157cd
--- /dev/null
+++ b/pkgs/development/libraries/beignet/clang_llvm.patch
@@ -0,0 +1,62 @@
+diff --git a/./CMake/FindLLVM.cmake b/../Beignet-1.1.2-Source_new/CMake/FindLLVM.cmake
+index a148321..96cafb8 100644
+--- a/./CMake/FindLLVM.cmake
++++ b/../Beignet-1.1.2-Source_new/CMake/FindLLVM.cmake
+@@ -22,6 +22,7 @@ if (LLVM_CONFIG_EXECUTABLE)
+ else (LLVM_CONFIG_EXECUTABLE)
+   message(FATAL_ERROR "Could NOT find LLVM executable, please add -DLLVM_INSTALL_DIR=/path/to/llvm-config/ in cmake command")
+ endif (LLVM_CONFIG_EXECUTABLE)
++
+ execute_process(
+   COMMAND ${LLVM_CONFIG_EXECUTABLE} --version
+   OUTPUT_VARIABLE LLVM_VERSION
+@@ -44,10 +45,16 @@ if (LLVM_FIND_VERSION_MAJOR AND LLVM_FIND_VERSION_MINOR)
+   endif (LLVM_VERSION_NODOT VERSION_LESS LLVM_FIND_VERSION_NODOT)
+ endif (LLVM_FIND_VERSION_MAJOR AND LLVM_FIND_VERSION_MINOR)
+ 
+-if (LLVM_INSTALL_DIR)
++if (CLANG_INSTALL_DIR)
+   find_program(CLANG_EXECUTABLE
+                NAMES clang-${LLVM_VERSION_NODOT} clang-${LLVM_VERSION_NOPATCH} clang
+-               PATHS ${LLVM_INSTALL_DIR} NO_DEFAULT_PATH)
++               PATHS ${CLANG_INSTALL_DIR} NO_DEFAULT_PATH)
++else (CLANG_INSTALL_DIR)
++  find_program(CLANG_EXECUTABLE
++               NAMES clang-${LLVM_VERSION_NODOT} clang-${LLVM_VERSION_NOPATCH} clang)
++endif (CLANG_INSTALL_DIR)
++
++if (LLVM_INSTALL_DIR)
+   find_program(LLVM_AS_EXECUTABLE
+                NAMES llvm-as-${LLVM_VERSION_NODOT} llvm-as-${LLVM_VERSION_NOPATCH} llvm-as
+                PATHS ${LLVM_INSTALL_DIR} NO_DEFAULT_PATH)
+@@ -55,8 +62,6 @@ if (LLVM_INSTALL_DIR)
+                NAMES llvm-link-${LLVM_VERSION_NODOT} llvm-link-${LLVM_VERSION_NOPATCH} llvm-link
+                PATHS ${LLVM_INSTALL_DIR} NO_DEFAULT_PATH)
+ else (LLVM_INSTALL_DIR)
+-  find_program(CLANG_EXECUTABLE
+-               NAMES clang-${LLVM_VERSION_NODOT} clang-${LLVM_VERSION_NOPATCH} clang)
+   find_program(LLVM_AS_EXECUTABLE
+                NAMES llvm-as-${LLVM_VERSION_NODOT} llvm-as-${LLVM_VERSION_NOPATCH} llvm-as)
+   find_program(LLVM_LINK_EXECUTABLE
+@@ -105,7 +110,7 @@ endif (LLVM_VERSION_NODOT VERSION_GREATER 34)
+ macro(add_one_lib name)
+   FIND_LIBRARY(CLANG_LIB
+     NAMES ${name}
+-    PATHS ${LLVM_LIBRARY_DIR} NO_DEFAULT_PATH)
++    PATHS ${CLANG_LIBRARY_DIR} NO_DEFAULT_PATH)
+   set(CLANG_LIBRARIES ${CLANG_LIBRARIES} ${CLANG_LIB})
+ 	unset(CLANG_LIB CACHE)
+ endmacro()
+diff --git a/./CMakeLists.txt b/../Beignet-1.1.2-Source_new/CMakeLists.txt
+index 88985d7..01bca9e 100644
+--- a/./CMakeLists.txt
++++ b/../Beignet-1.1.2-Source_new/CMakeLists.txt
+@@ -205,7 +205,7 @@ IF(OCLIcd_FOUND)
+     "intel-beignet.icd.in"
+     "${ICD_FILE_NAME}"
+   )
+-  install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${ICD_FILE_NAME} DESTINATION /etc/OpenCL/vendors)
++  install (FILES ${CMAKE_CURRENT_BINARY_DIR}/${ICD_FILE_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/etc/OpenCL/vendors)
+ ELSE(OCLIcd_FOUND)
+   MESSAGE(STATUS "Looking for OCL ICD header file - not found")
+ ENDIF(OCLIcd_FOUND)
diff --git a/pkgs/development/libraries/beignet/default.nix b/pkgs/development/libraries/beignet/default.nix
new file mode 100644
index 00000000000..5d5c834b4ac
--- /dev/null
+++ b/pkgs/development/libraries/beignet/default.nix
@@ -0,0 +1,123 @@
+{ stdenv
+, fetchurl
+, cmake
+, pkgconfig
+, clang-unwrapped
+, llvm
+, libdrm
+, libX11
+, libXfixes
+, libpthreadstubs
+, libXdmcp
+, libXdamage
+, libXxf86vm
+, python
+, gl
+, ocl-icd
+}: 
+
+stdenv.mkDerivation rec {
+  name = "beignet-${version}";
+  version = "1.1.2"; 
+
+  src = fetchurl {
+    url = "https://01.org/sites/default/files/${name}-source.tar.gz"; 
+    sha256 = "6a8d875afbb5e3c4fc57da1ea80f79abadd9136bfd87ab1f83c02784659f1d96"; 
+  };  
+
+  patches = [ ./clang_llvm.patch ]; 
+
+  postPatch = ''
+    patchShebangs src/git_sha1.sh; 
+
+    for f in $(find utests -type f)
+    do
+      sed -e "s@isnan(@std::isnan(@g" -i $f
+      sed -e "s@_std::isnan@_isnan@g" -i $f
+
+      sed -e "s@isinf(@std::isinf(@g" -i $f
+      sed -e "s@_std::isinf@_isinf@g" -i $f
+    done
+  ''; 
+
+  configurePhase = ''
+    cmake . -DCMAKE_INSTALL_PREFIX=$out \
+            -DCLANG_LIBRARY_DIR="${clang-unwrapped}/lib" \
+            -DLLVM_INSTALL_DIR="${llvm}/bin" \
+            -DCLANG_INSTALL_DIR="${clang-unwrapped}/bin"
+  '';
+
+  postInstall = ''
+    mkdir -p $out/utests/kernels
+    mkdir -p $out/utests/lib
+
+    cp -r kernels $out/utests
+    cp src/libcl.so $out/utests/lib
+
+    cat > $out/utests/setenv.sh << EOF
+#!/bin/sh
+export OCL_BITCODE_LIB_PATH=$out/lib/beignet/beignet.bc
+export OCL_HEADER_FILE_DIR=$out/lib/beignet/include
+export OCL_PCH_PATH=$out/lib/beignet/beignet.pch
+export OCL_GBE_PATH=$out/lib/beignet/libgbe.so
+export OCL_INTERP_PATH=$out/lib/beignet/libgbeinterp.so
+export OCL_KERNEL_PATH=$out/utests/kernels
+export OCL_IGNORE_SELF_TEST=1
+EOF
+
+    function fixRunPath {
+      p0=$(patchelf --print-rpath $1)
+      p1=$(echo $p0 | sed -e "s@$(pwd)/src@$out/utests/lib@g" -)
+      p2=$(echo $p1 | sed -e "s@$(pwd)/utests@$out/utests@g" -)
+      patchelf --set-rpath $p2 $1 
+    }
+    
+    fixRunPath utests/utest_run
+    fixRunPath utests/libutests.so
+
+    cp utests/utest_run $out/utests
+    cp utests/libutests.so $out/utests
+
+    mkdir -p $out/bin
+    ln -s $out/utests/setenv.sh $out/bin/beignet_setenv.sh
+    ln -s $out/utests/utest_run $out/bin/beignet_utest_run
+  ''; 
+
+  # To run the unit tests, the user must be in "video" group. 
+  # The nix builders are members of only "nixbld" group, so 
+  # they are able to compile the tests, but not to run them. 
+  # To verify the installation, add yourself to "video" group, 
+  # switch to a working directory which has both read and write 
+  # permissions, run: nix-shell -p pkgs.beignet, and execute:
+  # . beignet_setenv.sh && beignet_utest_run
+  doCheck = false; 
+
+  buildInputs = [ 
+    llvm 
+    clang-unwrapped
+    cmake 
+    libX11 
+    pkgconfig 
+    libdrm 
+    gl 
+    libXfixes 
+    libpthreadstubs
+    libXdmcp
+    libXdamage
+    libXxf86vm
+    python
+    ocl-icd
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://cgit.freedesktop.org/beignet/;
+    description = "OpenCL Library for Intel Ivy Bridge and newer GPUs";
+    longDescription = ''
+      The package provides an open source implementation of the OpenCL specification for Intel GPUs. 
+      It supports the Intel OpenCL runtime library and compiler. 
+    '';
+    license = licenses.lgpl21Plus;
+    maintainers = with maintainers; [ artuuge ];
+    platforms = platforms.linux;
+  }; 
+}
diff --git a/pkgs/development/libraries/bobcat/default.nix b/pkgs/development/libraries/bobcat/default.nix
index 7a8209d5046..fbc7df68d44 100644
--- a/pkgs/development/libraries/bobcat/default.nix
+++ b/pkgs/development/libraries/bobcat/default.nix
@@ -3,10 +3,10 @@
 
 stdenv.mkDerivation rec {
   name = "bobcat-${version}";
-  version = "4.01.04";
+  version = "4.02.00";
 
   src = fetchFromGitHub {
-    sha256 = "1qnyssvjvwc7ann5rw8spcfrfkxyh1lv3k12bq19d8db67znk4ms";
+    sha256 = "1hl5b2g4cmxcafkcpr4vs0c705cy254g0h410zi5wxnygjam8adn";
     rev = version;
     repo = "bobcat";
     owner = "fbb-git";
diff --git a/pkgs/development/libraries/cairo/default.nix b/pkgs/development/libraries/cairo/default.nix
index 2e4821b3073..f6f0a0d3af7 100644
--- a/pkgs/development/libraries/cairo/default.nix
+++ b/pkgs/development/libraries/cairo/default.nix
@@ -32,8 +32,7 @@ stdenv.mkDerivation rec {
   ]);
 
   propagatedBuildInputs =
-    with xorg; [ libXext fontconfig expat freetype pixman zlib libpng ]
-    ++ optional (!stdenv.isDarwin) libXrender
+    with xorg; [ libXext fontconfig expat freetype pixman zlib libpng libXrender ]
     ++ optionals xcbSupport [ libxcb xcbutil ]
     ++ optional gobjectSupport glib
     ++ optional glSupport mesa_noglu
diff --git a/pkgs/development/libraries/catch/default.nix b/pkgs/development/libraries/catch/default.nix
index 625ec2995e3..3ab520fd4a6 100644
--- a/pkgs/development/libraries/catch/default.nix
+++ b/pkgs/development/libraries/catch/default.nix
@@ -3,20 +3,20 @@
 stdenv.mkDerivation rec {
 
   name = "catch-${version}";
-  version = "1.2.1";
+  version = "1.5.0";
 
   src = fetchFromGitHub {
     owner = "philsquared";
     repo = "Catch";
     rev = "v" + version;
-    sha256 = "0rz2nmvvh66x6w2nb7l08vc5x9aqg1qfz2qfiykaz1ybc19fwck2";
+    sha256 = "1ag8siafg7fmb50qdqznryrg3lvv56f09nvqwqqn2rlk83zjnaw0";
   };
 
   buildInputs = [ cmake ];
   dontUseCmakeConfigure = true;
 
   buildPhase = ''
-    cmake -Hprojects/CMake -BBuild -DCMAKE_BUILD_TYPE=Release
+    cmake -Hprojects/CMake -BBuild -DCMAKE_BUILD_TYPE=Release -DUSE_CPP11=ON
     cd Build
     make
     cd ..
diff --git a/pkgs/development/libraries/cegui/default.nix b/pkgs/development/libraries/cegui/default.nix
new file mode 100644
index 00000000000..c7d7aa4d67a
--- /dev/null
+++ b/pkgs/development/libraries/cegui/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, cmake, ogre, freetype, boost, expat }:
+
+stdenv.mkDerivation rec {
+  name = "cegui-${version}";
+  version = "0.8.4";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/crayzedsgui/${name}.tar.bz2";
+    sha256 = "1253aywv610rbs96hwqiw2z7xrrv24l3jhfsqj95w143idabvz5m";
+  };
+
+
+  buildInputs = [ cmake ogre freetype boost expat ];
+
+  meta = with stdenv.lib; {
+    homepage = http://cegui.org.uk/;
+    description = "C++ Library for creating GUIs";
+    license = licenses.mit;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/enet/default.nix b/pkgs/development/libraries/enet/default.nix
index 0d5bd834787..4c3d67b8f31 100644
--- a/pkgs/development/libraries/enet/default.nix
+++ b/pkgs/development/libraries/enet/default.nix
@@ -13,5 +13,6 @@ stdenv.mkDerivation rec {
     description = "Simple and robust network communication layer on top of UDP";
     license = stdenv.lib.licenses.mit;
     maintainers = with stdenv.lib.maintainers; [ fuuzetsu ];
+    platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/ffmpeg-full/default.nix b/pkgs/development/libraries/ffmpeg-full/default.nix
index 91974a31175..0f6ffe51d85 100644
--- a/pkgs/development/libraries/ffmpeg-full/default.nix
+++ b/pkgs/development/libraries/ffmpeg-full/default.nix
@@ -141,7 +141,7 @@
 /*
  *  Darwin frameworks
  */
-, Cocoa, CoreServices
+, Cocoa, CoreServices, AVFoundation, MediaToolbox, VideoDecodeAcceleration, CF
 }:
 
 /* Maintainer notes:
@@ -177,7 +177,7 @@
 
 let
   inherit (stdenv) isCygwin isFreeBSD isLinux;
-  inherit (stdenv.lib) optional optionals enableFeature;
+  inherit (stdenv.lib) optional optionals optionalString enableFeature;
 in
 
 /*
@@ -410,11 +410,25 @@ stdenv.mkDerivation rec {
     ++ optionals nonfreeLicensing [ faac fdk_aac openssl ]
     ++ optional ((isLinux || isFreeBSD) && libva != null) libva
     ++ optionals isLinux [ alsaLib libraw1394 libv4l ]
-    ++ optionals stdenv.isDarwin [ Cocoa CoreServices ];
+    ++ optionals stdenv.isDarwin [ Cocoa CoreServices AVFoundation MediaToolbox
+                                   VideoDecodeAcceleration ];
 
   # Build qt-faststart executable
   buildPhase = optional qtFaststartProgram ''make tools/qt-faststart'';
-  postInstall = optional qtFaststartProgram ''cp -a tools/qt-faststart $out/bin/'';
+
+  # Hacky framework patching technique borrowed from the phantomjs2 package
+  postInstall = optionalString qtFaststartProgram ''
+    cp -a tools/qt-faststart $out/bin/
+  '' + optionalString stdenv.isDarwin ''
+    FILES=($(ls $out/bin/*))
+    FILES+=($(ls $out/lib/*.dylib))
+    for f in ''${FILES[@]}; do
+      if [ ! -h "$f" ]; then
+        install_name_tool -change ${CF}/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation "$f"
+      fi
+    done
+  '';
+
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/development/libraries/fmod/4.24.16.nix b/pkgs/development/libraries/fmod/4.24.16.nix
index b78b1a46e25..191db2f6f6d 100644
--- a/pkgs/development/libraries/fmod/4.24.16.nix
+++ b/pkgs/development/libraries/fmod/4.24.16.nix
@@ -5,7 +5,7 @@ let
   bits = stdenv.lib.optionalString (stdenv.system == "x86_64-linux") "64";
 
   libPath = stdenv.lib.makeLibraryPath
-    [ stdenv.cc.libc stdenv.cc.cc ] + ":${stdenv.cc.cc}/lib64";
+    [ stdenv.cc.libc stdenv.cc.cc ] + ":${stdenv.cc.cc.lib}/lib64";
   patchLib = x: "patchelf --set-rpath ${libPath} ${x}";
 
   src =
diff --git a/pkgs/development/libraries/fmod/default.nix b/pkgs/development/libraries/fmod/default.nix
index f014c4cecb6..621d6dc405f 100644
--- a/pkgs/development/libraries/fmod/default.nix
+++ b/pkgs/development/libraries/fmod/default.nix
@@ -5,7 +5,7 @@ let
   bits = stdenv.lib.optionalString (stdenv.system == "x86_64-linux") "64";
 
   libPath = stdenv.lib.makeLibraryPath
-    [ stdenv.cc.libc stdenv.cc.cc ] + ":${stdenv.cc.cc}/lib64";
+    [ stdenv.cc.libc stdenv.cc.cc ] + ":${stdenv.cc.cc.lib}/lib64";
   patchLib = x: "patchelf --set-rpath ${libPath} ${x}";
 in
 stdenv.mkDerivation rec {
diff --git a/pkgs/development/libraries/folly/default.nix b/pkgs/development/libraries/folly/default.nix
index 046b7f97ba4..72867e012a9 100644
--- a/pkgs/development/libraries/folly/default.nix
+++ b/pkgs/development/libraries/folly/default.nix
@@ -2,24 +2,16 @@
 , google-gflags, python, libiberty, openssl }:
 
 stdenv.mkDerivation rec {
-  version = "0.57.0";
   name = "folly-${version}";
+  version = "2016-04-29";
 
   src = fetchFromGitHub {
     owner = "facebook";
     repo = "folly";
-    rev = "v${version}";
-    sha256 = "12b9bkwmndfwmsknc209kpplxn9wqmwr3p2h0l2szrppq4qqyfq9";
+    rev = "b31eb722e444ab0293a73fe9de3f94e657ca6de9";
+    sha256 = "0s95y0wnz4xbrkzbiksnb0n0d0qrkcsbssznng57kwlq8jlfka24";
   };
 
-  patches = [
-    # Fix compatibility with Boost 1.59
-    (fetchpatch {
-      url = "https://github.com/facebook/folly/commit/29193aca605bb93d82a3c92acd95bb342115f3a4.patch";
-      sha256 = "1ixpgq1wjr3i7madx4faw72n17ilc9cr435k5w1x95jr954m9j7b";
-    })
-  ];
-
   nativeBuildInputs = [ autoreconfHook python ];
   buildInputs = [ libiberty boost libevent double_conversion glog google-gflags openssl ];
 
diff --git a/pkgs/development/libraries/gdk-pixbuf/default.nix b/pkgs/development/libraries/gdk-pixbuf/default.nix
index 756ebf81619..1487d92dada 100644
--- a/pkgs/development/libraries/gdk-pixbuf/default.nix
+++ b/pkgs/development/libraries/gdk-pixbuf/default.nix
@@ -2,15 +2,15 @@
 , jasper, libintlOrEmpty, gobjectIntrospection, doCheck ? false }:
 
 let
-  ver_maj = "2.32";
-  ver_min = "3";
+  ver_maj = "2.34";
+  ver_min = "0";
 in
 stdenv.mkDerivation rec {
   name = "gdk-pixbuf-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gdk-pixbuf/${ver_maj}/${name}.tar.xz";
-    sha256 = "0cfh87aqyqbfcwpbv1ihgmgfcn66il5q2n8yjyl8gxkjmkqp2rrb";
+    sha256 = "0yc8indbl3hf18z6x6kjg59xp9sngm1d8vmz4c7bs6g27qw5npnm";
   };
 
   outputs = [ "dev" "out" "docdev" ];
diff --git a/pkgs/development/libraries/gegl/3.0.nix b/pkgs/development/libraries/gegl/3.0.nix
index 575e2d562aa..1ca0a2b5925 100644
--- a/pkgs/development/libraries/gegl/3.0.nix
+++ b/pkgs/development/libraries/gegl/3.0.nix
@@ -1,13 +1,12 @@
-{ stdenv, fetchgit, pkgconfig, glib, babl, libpng, cairo, libjpeg, which
+{ stdenv, fetchurl, pkgconfig, glib, babl, libpng, cairo, libjpeg, which
 , librsvg, pango, gtk, bzip2, intltool, libtool, automake, autoconf, json_glib }:
 
 stdenv.mkDerivation rec {
-  name = "gegl-0.3.0-20140619";
+  name = "gegl-0.3.6";
 
-  src = fetchgit {
-    url = "https://git.gnome.org/browse/gegl";
-    sha256 = "1rjmv2y7z34zrnlqczmmh0bm724iszzdf6jpibszxnp3w0npwjrb";
-    rev = "0014eb1bad50244314ed09592fe57efa9322678c";
+  src = fetchurl {
+    url = "http://download.gimp.org/pub/gegl/0.3/${name}.tar.bz2";
+    sha256 = "08m7dlf2kwmp7jw3qskwxas192swhn1g4jcd8aldg9drfjygprvh";
   };
 
   configureScript = "./autogen.sh";
diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix
index 120d398bd44..b3b9dfcef16 100644
--- a/pkgs/development/libraries/glib/default.nix
+++ b/pkgs/development/libraries/glib/default.nix
@@ -39,8 +39,8 @@ let
     ln -sr -t "''${!outputInclude}/include/" "''${!outputInclude}"/lib/*/include/* 2>/dev/null || true
   '';
 
-  ver_maj = "2.46";
-  ver_min = "2";
+  ver_maj = "2.48";
+  ver_min = "0";
 in
 
 stdenv.mkDerivation rec {
@@ -48,7 +48,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://gnome/sources/glib/${ver_maj}/${name}.tar.xz";
-    sha256 = "5031722e37036719c1a09163cc6cf7c326e4c4f1f1e074b433c156862bd733db";
+    sha256 = "0d3w2hblrw7vvpx60l1kbvb830ygn3v8zhwdz65cc5593j9ycjvl";
   };
 
   patches = optional stdenv.isDarwin ./darwin-compilation.patch ++ optional doCheck ./skip-timer-test.patch;
diff --git a/pkgs/development/libraries/gnutls/3.4.nix b/pkgs/development/libraries/gnutls/3.4.nix
index 6d196978cdf..71c3010467c 100644
--- a/pkgs/development/libraries/gnutls/3.4.nix
+++ b/pkgs/development/libraries/gnutls/3.4.nix
@@ -1,11 +1,11 @@
 { callPackage, fetchurl, autoreconfHook, ... } @ args:
 
 callPackage ./generic.nix (args // rec {
-  version = "3.4.6";
+  version = "3.4.11";
 
   src = fetchurl {
     url = "ftp://ftp.gnutls.org/gcrypt/gnutls/v3.4/gnutls-${version}.tar.xz";
-    sha256 = "1v109px1sy1s731fnawzdsvggdswmr7ha9q5lid4v8pzgznmkdgy";
+    sha256 = "1f4sbb38xab46h67a3pm6kybgrahjx3vbrn66qq3cbc2jngrrvvh";
   };
 
   # This fixes some broken parallel dependencies
diff --git a/pkgs/development/libraries/gobject-introspection/darwin-fixups.patch b/pkgs/development/libraries/gobject-introspection/darwin-fixups.patch
deleted file mode 100644
index 02443d56afa..00000000000
--- a/pkgs/development/libraries/gobject-introspection/darwin-fixups.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -ur gobject-introspection-1.46.0-orig/giscanner/ccompiler.py gobject-introspection-1.46.0/giscanner/ccompiler.py
---- gobject-introspection-1.46.0-orig/giscanner/ccompiler.py	2016-02-01 12:25:41.000000000 -0500
-+++ gobject-introspection-1.46.0/giscanner/ccompiler.py	2016-02-01 15:50:36.000000000 -0500
-@@ -128,11 +128,7 @@
-                     self.compiler.add_runtime_library_dir('.')
- 
-                 # https://bugzilla.gnome.org/show_bug.cgi?id=625195
--                args.append('-Wl,-rpath=.')
--
--                # Ensure libraries are always linked as we are going to use ldd to work
--                # out their names later
--                args.append('-Wl,--no-as-needed')
-+                args.append('-Wl,-rpath,.')
- 
-             for library in libraries:
-                 self.compiler.add_library(library)
-@@ -140,7 +136,7 @@
-                 for library_path in libpaths:
-                     args.append('-L' + library_path)
-                     if os.path.isabs(library_path):
--                        args.append('-Wl,-rpath=' + library_path)
-+                        args.append('-Wl,-rpath,' + library_path)
- 
-         else:
-             # libtool case: assemble linker command arguments, like we did before
-Only in gobject-introspection-1.46.0/giscanner: ccompiler.py~
diff --git a/pkgs/development/libraries/gobject-introspection/default.nix b/pkgs/development/libraries/gobject-introspection/default.nix
index 47ccb17e484..0b48ef076b1 100644
--- a/pkgs/development/libraries/gobject-introspection/default.nix
+++ b/pkgs/development/libraries/gobject-introspection/default.nix
@@ -7,7 +7,7 @@
 # In that case its about 6MB which could be separated
 
 let
-  ver_maj = "1.46";
+  ver_maj = "1.48";
   ver_min = "0";
 in
 with stdenv.lib;
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://gnome/sources/gobject-introspection/${ver_maj}/${name}.tar.xz";
-    sha256 = "6658bd3c2b8813eb3e2511ee153238d09ace9d309e4574af27443d87423e4233";
+    sha256 = "0xsqwxhfqzr79av89mg766kxpb2i41bd0vwspk01xjdzrnn5l9zs";
   };
 
   outputs = [ "dev" "out" ];
@@ -40,9 +40,6 @@ stdenv.mkDerivation rec {
   patches = stdenv.lib.singleton (substituteAll {
     src = ./absolute_shlib_path.patch;
     inherit nixStoreDir;
-  }) ++ optional stdenv.isDarwin (substituteAll {
-    src = ./darwin-fixups.patch;
-    inherit nixStoreDir;
   });
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/gstreamer/bad/default.nix b/pkgs/development/libraries/gstreamer/bad/default.nix
index 4603b3e29db..add3026275f 100644
--- a/pkgs/development/libraries/gstreamer/bad/default.nix
+++ b/pkgs/development/libraries/gstreamer/bad/default.nix
@@ -4,7 +4,7 @@
 , libmodplug, mpeg2dec, mpg123
 , openjpeg, libopus, librsvg
 , wildmidi, fluidsynth, libvdpau, wayland
-, libwebp, xvidcore, gnutls
+, libwebp, xvidcore, gnutls, mjpegtools
 , mesa, libintlOrEmpty
 }:
 
@@ -14,7 +14,7 @@ let
   inherit (stdenv.lib) optional optionalString;
 in
 stdenv.mkDerivation rec {
-  name = "gst-plugins-bad-1.6.1";
+  name = "gst-plugins-bad-1.8.0";
 
   meta = with stdenv.lib; {
     description = "Gstreamer Bad Plugins";
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-plugins-bad/${name}.tar.xz";
-    sha256 = "0rjla9zcal9b5ynagq7cscjs53qrd9bafjkjssrp8s2z2apsjxp1";
+    sha256 = "03m99igngm37653353n5d724bcqw7p6hw6xjw0i2824523fpcqqi";
   };
 
   nativeBuildInputs = [ pkgconfig python ];
@@ -43,6 +43,7 @@ stdenv.mkDerivation rec {
     openjpeg libopus librsvg
     fluidsynth libvdpau
     libwebp xvidcore gnutls mesa
+    mjpegtools
   ]
     ++ libintlOrEmpty
     ++ optional faacSupport faac
diff --git a/pkgs/development/libraries/gstreamer/base/default.nix b/pkgs/development/libraries/gstreamer/base/default.nix
index 4f592dbe31e..b2fff30197c 100644
--- a/pkgs/development/libraries/gstreamer/base/default.nix
+++ b/pkgs/development/libraries/gstreamer/base/default.nix
@@ -4,7 +4,7 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "gst-plugins-base-1.6.1";
+  name = "gst-plugins-base-1.8.0";
 
   meta = {
     description = "Base plugins and helper libraries";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-plugins-base/${name}.tar.xz";
-    sha256 = "18sbyjcp281zb3bsqji3pglsdsxi0s6ai7rx90sx8cpflkxdqcwm";
+    sha256 = "08hmg7fp519wim1fm04r7f2q2020ssdninawqsbrqjsvs70srh5b";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/gstreamer/core/default.nix b/pkgs/development/libraries/gstreamer/core/default.nix
index 754b2bb64b8..40caf4093f0 100644
--- a/pkgs/development/libraries/gstreamer/core/default.nix
+++ b/pkgs/development/libraries/gstreamer/core/default.nix
@@ -3,7 +3,7 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "gstreamer-1.6.1";
+  name = "gstreamer-1.8.0";
 
   meta = {
     description = "Open source multimedia framework";
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gstreamer/${name}.tar.xz";
-    sha256 = "172w1bpnkn6mm1wi37n03apdbb6cdkykhzjf1vfxchcd7hhkyflp";
+    sha256 = "1p5y9bbrhywng0prmpxv29p6jsz6vd039d49bnc98p9b45532yll";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/gstreamer/ges/default.nix b/pkgs/development/libraries/gstreamer/ges/default.nix
index 1e0ee39667e..e47ecfa01aa 100644
--- a/pkgs/development/libraries/gstreamer/ges/default.nix
+++ b/pkgs/development/libraries/gstreamer/ges/default.nix
@@ -3,7 +3,7 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "gstreamer-editing-services-1.6.1";
+  name = "gstreamer-editing-services-1.8.0";
 
   meta = with stdenv.lib; {
     description = "Library for creation of audio/video non-linear editors";
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gstreamer-editing-services/${name}.tar.xz";
-    sha256 = "1lkvkrsipn35341hwwkhwn44n90y49sjwra1r5pazbjgn1yykxzm";
+    sha256 = "1gisdfa91kq89bsmbvb47alaxh8lpqmr6f3dzlwmf389nkandw2h";
   };
 
   nativeBuildInputs = [ pkgconfig python gobjectIntrospection flex perl ];
diff --git a/pkgs/development/libraries/gstreamer/good/default.nix b/pkgs/development/libraries/gstreamer/good/default.nix
index 75f0760747b..54175fb83fb 100644
--- a/pkgs/development/libraries/gstreamer/good/default.nix
+++ b/pkgs/development/libraries/gstreamer/good/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, pkgconfig, python
 , gst-plugins-base, orc, bzip2
 , libv4l, libdv, libavc1394, libiec61883
-, libvpx, speex, flac, taglib
+, libvpx, speex, flac, taglib, libshout
 , cairo, gdk_pixbuf, aalib, libcaca
 , libsoup, libpulseaudio, libintlOrEmpty
 }:
@@ -10,7 +10,7 @@ let
   inherit (stdenv.lib) optionals optionalString;
 in
 stdenv.mkDerivation rec {
-  name = "gst-plugins-good-1.6.1";
+  name = "gst-plugins-good-1.8.0";
 
   meta = with stdenv.lib; {
     description = "Gstreamer Good Plugins";
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-plugins-good/${name}.tar.xz";
-    sha256 = "0darc3058kbnql3mnlpizl0sq0hhli7vkm0rpqb7nywz14abim46";
+    sha256 = "0kczdvqxvl8kxiy2d7czv16jp73hv9k3nykh47ckihnv8x6i6362";
   };
 
   nativeBuildInputs = [ pkgconfig python ];
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
     gst-plugins-base orc bzip2
     libdv libvpx speex flac taglib
     cairo gdk_pixbuf aalib libcaca
-    libsoup
+    libsoup libshout
   ]
   ++ libintlOrEmpty
   ++ optionals stdenv.isLinux [ libv4l libpulseaudio libavc1394 libiec61883 ];
diff --git a/pkgs/development/libraries/gstreamer/libav/default.nix b/pkgs/development/libraries/gstreamer/libav/default.nix
index 6d0c28d0e28..e4daa642ba0 100644
--- a/pkgs/development/libraries/gstreamer/libav/default.nix
+++ b/pkgs/development/libraries/gstreamer/libav/default.nix
@@ -9,7 +9,7 @@
 assert withSystemLibav -> libav != null;
 
 stdenv.mkDerivation rec {
-  name = "gst-libav-1.6.1";
+  name = "gst-libav-1.8.0";
 
   meta = {
     homepage = "http://gstreamer.freedesktop.org";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-libav/${name}.tar.xz";
-    sha256 = "1a9pc7zp5rg0cvpx8gqkr21w73i6p9xa505a34day9f8p3lfim94";
+    sha256 = "0719njp8aarhvn038pijq6dmsnli0zlg146hyfs3rsdffs4f472s";
   };
 
   configureFlags = stdenv.lib.optionalString withSystemLibav
diff --git a/pkgs/development/libraries/gstreamer/python/default.nix b/pkgs/development/libraries/gstreamer/python/default.nix
index c1b94a647b8..5320fdfaced 100644
--- a/pkgs/development/libraries/gstreamer/python/default.nix
+++ b/pkgs/development/libraries/gstreamer/python/default.nix
@@ -4,14 +4,14 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "gst-python-1.4.0";
+  name = "gst-python-1.8.0";
 
   src = fetchurl {
     urls = [
       "${meta.homepage}/src/gst-python/${name}.tar.xz"
       "mirror://gentoo/distfiles/${name}.tar.xz"
       ];
-    sha256 = "0gixsp46mv7fvhk669q60wfk9w2lc02sdb1qipq066xlrqlhrr5i";
+    sha256 = "1spn49x7yaj69df6mxh9wwcs0y3abswkfpk84njs71lzqlbzyiff";
   };
 
   patches = [ ./different-path-with-pygobject.patch ];
diff --git a/pkgs/development/libraries/gstreamer/ugly/default.nix b/pkgs/development/libraries/gstreamer/ugly/default.nix
index 540b3ba0be8..8f8437ad4ac 100644
--- a/pkgs/development/libraries/gstreamer/ugly/default.nix
+++ b/pkgs/development/libraries/gstreamer/ugly/default.nix
@@ -5,7 +5,7 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "gst-plugins-ugly-1.6.1";
+  name = "gst-plugins-ugly-1.8.0";
 
   meta = with stdenv.lib; {
     description = "Gstreamer Ugly Plugins";
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-plugins-ugly/${name}.tar.xz";
-    sha256 = "0mvasl1pwq70w2kmrkcrg77kggl5q7jqybi7fkvy3vr28c7gkhqc";
+    sha256 = "137b6kqykh5nwbmiv28nn1pc1d2x2rb2xxg382pc9pa9gpxpyrak";
   };
 
   nativeBuildInputs = [ pkgconfig python ];
diff --git a/pkgs/development/libraries/gstreamer/vaapi/default.nix b/pkgs/development/libraries/gstreamer/vaapi/default.nix
index bf061b4125b..a9aa3d73fa2 100644
--- a/pkgs/development/libraries/gstreamer/vaapi/default.nix
+++ b/pkgs/development/libraries/gstreamer/vaapi/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   name = "gst-vaapi-${version}";
-  version = "0.6.1";
+  version = "0.7.0";
 
   src = fetchurl {
     url = "${meta.homepage}/software/vaapi/releases/gstreamer-vaapi/gstreamer-vaapi-${version}.tar.bz2";
-    sha256 = "1cv7zlz5wj6b3acv0pr5cq5wqzd5vcs1lrrlvyl9wrzcnzz8mz1n";
+    sha256 = "14jal2g5mf8r59w8420ixl3kg50vcmy56446ncwd0xrizd6yms5b";
   };
 
   nativeBuildInputs = with stdenv.lib; [ pkgconfig bzip2 ];
diff --git a/pkgs/development/libraries/gstreamer/validate/default.nix b/pkgs/development/libraries/gstreamer/validate/default.nix
index 0b0ba11a793..1c123621664 100644
--- a/pkgs/development/libraries/gstreamer/validate/default.nix
+++ b/pkgs/development/libraries/gstreamer/validate/default.nix
@@ -3,7 +3,7 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "gst-validate-1.6.0";
+  name = "gst-validate-1.8.0";
 
   meta = {
     description = "Integration testing infrastructure for the GStreamer framework";
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "${meta.homepage}/src/gst-validate/${name}.tar.xz";
-    sha256 = "1vmg5mh068zrvhgrjsbnb7y4k632akyhm8ql0g196cinnp3zibiv";
+    sha256 = "1pcy9pfffyk6xiw6aq38kbv7k24x2rljdy8fabjfy1abpmvvfrkn";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/libraries/gtk+/3.x.nix b/pkgs/development/libraries/gtk+/3.x.nix
index a2da4c7b033..dcbf0b4a47c 100644
--- a/pkgs/development/libraries/gtk+/3.x.nix
+++ b/pkgs/development/libraries/gtk+/3.x.nix
@@ -11,8 +11,8 @@ assert cupsSupport -> cups != null;
 with stdenv.lib;
 
 let
-  ver_maj = "3.18";
-  ver_min = "5";
+  ver_maj = "3.20";
+  ver_min = "3";
   version = "${ver_maj}.${ver_min}";
 in
 stdenv.mkDerivation rec {
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://gnome/sources/gtk+/${ver_maj}/gtk+-${version}.tar.xz";
-    sha256 = "107aeb9a4244ce3c044becdd6dffc32d83202595181597180d4c736302a71852";
+    sha256 = "3834f3bf23b260b3e5ebfea41102e2026a8af29e36c3620edf4a5cf05e82f694";
   };
 
   outputs = [ "dev" "out" ];
diff --git a/pkgs/development/libraries/herqq/default.nix b/pkgs/development/libraries/herqq/default.nix
index fee12592c63..39d5b2c792a 100644
--- a/pkgs/development/libraries/herqq/default.nix
+++ b/pkgs/development/libraries/herqq/default.nix
@@ -1,11 +1,9 @@
-{ stdenv, fetchurl, qt4, unzip }:
+{ stdenv, fetchurl, qt4, qmake4Hook, unzip }:
 
 stdenv.mkDerivation rec {
   name = "herqq-1.0.0";
 
-  buildInputs = [ qt4 unzip ];
-
-  configurePhase = "qmake PREFIX=$out herqq.pro";
+  buildInputs = [ qt4 unzip qmake4Hook ];
 
   src = fetchurl {
     url = "mirror://sourceforge/hupnp/${name}.zip";
diff --git a/pkgs/development/libraries/ijs/default.nix b/pkgs/development/libraries/ijs/default.nix
index 0c7d412fee6..a08a653dc71 100644
--- a/pkgs/development/libraries/ijs/default.nix
+++ b/pkgs/development/libraries/ijs/default.nix
@@ -1,14 +1,9 @@
-{ stdenv, fetchurl, fetchpatch, autoreconfHook }:
+{ stdenv, fetchurl, fetchpatch, autoreconfHook, ghostscript }:
 
-let version = "9.18";
-in
 stdenv.mkDerivation {
-  name = "ijs-${version}";
+  name = "ijs-${ghostscript.version}";
 
-  src = fetchurl {
-    url = "http://downloads.ghostscript.com/public/ghostscript-${version}.tar.bz2";
-    sha256 = "18ad90za28dxybajqwf3y3dld87cgkx1ljllmcnc7ysspfxzbnl3";
-  };
+  inherit (ghostscript) src;
 
   patches = [
     # http://bugs.ghostscript.com/show_bug.cgi?id=696246
@@ -28,7 +23,7 @@ stdenv.mkDerivation {
   configureFlags = [ "--disable-static" "--enable-shared" ];
 
   meta = with stdenv.lib; {
-    homepage = https://www.openprinting.org/download/ijs/;
+    homepage = "https://www.openprinting.org/download/ijs/";
     description = "Raster printer driver architecture";
 
     license = licenses.gpl3Plus;
diff --git a/pkgs/development/libraries/json-glib/default.nix b/pkgs/development/libraries/json-glib/default.nix
index e49063a9de9..5cfafc8e69a 100644
--- a/pkgs/development/libraries/json-glib/default.nix
+++ b/pkgs/development/libraries/json-glib/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, glib, pkgconfig, gobjectIntrospection, dbus }:
 
 stdenv.mkDerivation rec {
-  name = "json-glib-${minVer}.2";
-  minVer = "1.0";
+  name = "json-glib-${minVer}.0";
+  minVer = "1.2";
 
   src = fetchurl {
     url = "mirror://gnome/sources/json-glib/${minVer}/${name}.tar.xz";
-    sha256 = "887bd192da8f5edc53b490ec51bf3ffebd958a671f5963e4f3af32c22e35660a";
+    sha256 = "1lx7p1c7cl21byvfgw92n8dhm09vi6qxrs0zkx9dg3y096zdzmlr";
   };
 
   configureflags= "--with-introspection";
diff --git a/pkgs/development/libraries/kerberos/krb5.nix b/pkgs/development/libraries/kerberos/krb5.nix
index 5b2b0954203..332ca526b6b 100644
--- a/pkgs/development/libraries/kerberos/krb5.nix
+++ b/pkgs/development/libraries/kerberos/krb5.nix
@@ -11,11 +11,11 @@ in
 with stdenv.lib;
 stdenv.mkDerivation rec {
   name = "${type}krb5-${version}";
-  version = "1.14";
+  version = "1.14.2";
 
   src = fetchurl {
     url = "${meta.homepage}dist/krb5/1.14/krb5-${version}.tar.gz";
-    sha256 = "1sgr61cnkgc5xazijaww6wpn5fnxl9vyj9ixk3r3y7ikv3x0gnyf";
+    sha256 = "09wbv969ak4fqlqr1ip5bi62fny1zlp1vwjarvj6a6cdfzkdgjkb";
   };
 
   configureFlags = optional stdenv.isFreeBSD ''WARN_CFLAGS=""'';
diff --git a/pkgs/development/libraries/libburn/default.nix b/pkgs/development/libraries/libburn/default.nix
new file mode 100644
index 00000000000..22edcc15769
--- /dev/null
+++ b/pkgs/development/libraries/libburn/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "libburn-${version}";
+  version = "1.4.2.pl01";
+
+  src = fetchurl {
+    url = "http://files.libburnia-project.org/releases/${name}.tar.gz";
+    sha256 = "1nqfm24dm2csdnhsmpgw9cwcnkwvqlvfzsm9bhr6yg7bbmzwvkrk";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = http://libburnia-project.org/;
+    description = "A library by which preformatted data get onto optical media: CD, DVD, BD (Blu-Ray)";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/pkgs/development/libraries/libcommuni/default.nix b/pkgs/development/libraries/libcommuni/default.nix
index 008311c620c..7b83be7e911 100644
--- a/pkgs/development/libraries/libcommuni/default.nix
+++ b/pkgs/development/libraries/libcommuni/default.nix
@@ -1,4 +1,4 @@
-{ fetchgit, qt5, stdenv
+{ fetchgit, qtbase, qmakeHook, stdenv
 }:
 
 stdenv.mkDerivation rec {
@@ -11,16 +11,16 @@ stdenv.mkDerivation rec {
     sha256 = "15sb7vinaaz1v5nclxpnp5p9a0kmfmlgiqibkipnyydizclidpfx";
   };
 
-  buildInputs = [ qt5.qtbase ];
+  buildInputs = [ qtbase ];
+  nativeBuildInputs = [ qmakeHook ];
 
   enableParallelBuild = true;
 
-  postPatch = ''
-    sed -i -e 's|/bin/pwd|pwd|g' -e 's/which/type -P/' configure
+  configurePhase = ''
+    sed -i -e 's|/bin/pwd|pwd|g' configure
+    ./configure -config release -prefix $out -qmake $QMAKE
   '';
 
-  configureFlags = [ "-config release" ];
-
   meta = with stdenv.lib; {
     description = "A cross-platform IRC framework written with Qt";
     homepage = https://communi.github.io;
diff --git a/pkgs/development/libraries/libdigidoc/default.nix b/pkgs/development/libraries/libdigidoc/default.nix
new file mode 100644
index 00000000000..e060f8c1d76
--- /dev/null
+++ b/pkgs/development/libraries/libdigidoc/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, cmake, openssl, pcsclite, opensc, libxml2 }:
+
+stdenv.mkDerivation rec {
+
+  version = "3.10.1.1212";
+  name = "libdigidoc-${version}";
+  
+  src = fetchurl {
+    url = "https://installer.id.ee/media/ubuntu/pool/main/libd/libdigidoc/libdigidoc_3.10.1.1212.orig.tar.xz";
+    sha256 = "ad5e0603aea2e02977f17318cc93a53c3a19a815e57b2347d97136d11c110807";
+  };
+
+  unpackPhase = ''
+    mkdir src
+    tar xf $src -C src
+    cd src
+  '';
+
+  buildInputs = [ cmake openssl pcsclite opensc libxml2 ];
+  
+  meta = with stdenv.lib; {
+    description = "Library for creating DigiDoc signature files";
+    homepage = "http://www.id.ee/";
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.jagajaga ];
+  };
+}
diff --git a/pkgs/development/libraries/libdigidocpp/default.nix b/pkgs/development/libraries/libdigidocpp/default.nix
new file mode 100644
index 00000000000..5ddc6303126
--- /dev/null
+++ b/pkgs/development/libraries/libdigidocpp/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, cmake, libdigidoc, minizip, pcsclite, opensc, openssl
+, xercesc, xml-security-c, pkgconfig, xsd, zlib, vim }:
+
+stdenv.mkDerivation rec {
+
+  version = "3.12.0.1317";
+  name = "libdigidocpp-${version}";
+
+  src = fetchurl {
+    url = "https://installer.id.ee/media/ubuntu/pool/main/libd/libdigidocpp/libdigidocpp_3.12.0.1317.orig.tar.xz";
+    sha256 = "8059e1dbab99f062d070b9da0b1334b7226f1ab9badcd7fddea3100519d1f9a9";
+  };
+
+  unpackPhase = ''
+    mkdir src
+    tar xf $src -C src
+    cd src
+  '';
+
+  buildInputs = [ cmake libdigidoc minizip pcsclite opensc openssl xercesc
+                  xml-security-c pkgconfig xsd zlib vim
+                ];
+  
+  meta = with stdenv.lib; {
+    description = "Library for creating DigiDoc signature files";
+    homepage = "http://www.id.ee/";
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.jagajaga ];
+  };
+}
diff --git a/pkgs/development/libraries/libdvdcss/default.nix b/pkgs/development/libraries/libdvdcss/default.nix
index c5cdec0ae5f..ae3ae407a92 100644
--- a/pkgs/development/libraries/libdvdcss/default.nix
+++ b/pkgs/development/libraries/libdvdcss/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "libdvdcss-${version}";
-  version = "1.3.0";
+  version = "1.4.0";
 
   src = fetchurl {
     url = "http://get.videolan.org/libdvdcss/${version}/${name}.tar.bz2";
-    sha256 = "158k9zagmbk5bkbz96l6lwhh7xcgfcnzflkr4vblskhcab6llhbw";
+    sha256 = "0nl45ifc4xcb196snv9d6hinfw614cqpzcqp92dg43c0hickg290";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/libeatmydata/default.nix b/pkgs/development/libraries/libeatmydata/default.nix
index 2fdd1658f19..ac75e6c8baa 100644
--- a/pkgs/development/libraries/libeatmydata/default.nix
+++ b/pkgs/development/libraries/libeatmydata/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, makeWrapper }:
 
 stdenv.mkDerivation rec {
-  name = "libeatmydata-82";
+  name = "libeatmydata-105";
   
   src = fetchurl {
     url = "http://www.flamingspork.com/projects/libeatmydata/${name}.tar.gz";
-    sha256 = "0aavq71bf0yxdgyf8gvyzq086shszzwpbsz5rqkjg4cz0rc5yrqb";
+    sha256 = "1pd8sc73cgc41ldsvq6g8ics1m5k8gdcb91as9yg8z5jnrld1lmx";
   };
 
   buildInputs = [ makeWrapper ];
diff --git a/pkgs/development/libraries/libfilezilla/default.nix b/pkgs/development/libraries/libfilezilla/default.nix
index d8e1c29875c..4381f9e6c73 100644
--- a/pkgs/development/libraries/libfilezilla/default.nix
+++ b/pkgs/development/libraries/libfilezilla/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "libfilezilla-${version}";
-  version = "0.4.0.1";
+  version = "0.5.0";
 
   src = fetchurl {
     url = "mirror://sourceforge/project/filezilla/libfilezilla/${version}/${name}.tar.bz2";
-    sha256 = "1ldiyhjv4jg2jyj3d56mlgyj9lx0qkf1857wvsy51lp9aj96h0v0";
+    sha256 = "07f5hk5izqgqjadrwy608gi0w3scm3zvpsv63j7bgfqk67qilslc";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/libiberty/default.nix b/pkgs/development/libraries/libiberty/default.nix
index c3dc3a4e852..1f5ab2cf096 100644
--- a/pkgs/development/libraries/libiberty/default.nix
+++ b/pkgs/development/libraries/libiberty/default.nix
@@ -1,26 +1,16 @@
-{ stdenv, fetchurl, staticBuild ? false }:
+{ stdenv, lib, fetchurl, gcc, staticBuild ? false }:
 
 stdenv.mkDerivation rec {
-  version = "4.9.3";
-  name = "libiberty-${version}";
+  name = "libiberty-${gcc.cc.version}";
 
-  src = fetchurl {
-    url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.bz2";
-    sha256 = "0zmnm00d2a1hsd41g34bhvxzvxisa2l584q3p447bd91lfjv4ci3";
-  };
+  inherit (gcc.cc) src;
 
   postUnpack = "sourceRoot=\${sourceRoot}/libiberty";
 
-  enable_shared = !staticBuild;
+  configureFlags = [ "--enable-install-libiberty" ] ++ lib.optional (!staticBuild) "--enable-shared";
 
-  installPhase = ''
-    mkdir -p $out/lib $out/include
-    cp ../include/libiberty.h $out/include/
-    if [ -z "$enabled_shared" ]; then
-      cp libiberty.a $out/lib/libiberty.a
-    else
-      cp pic/libiberty.a $out/lib/libiberty_pic.a
-    fi
+  postInstall = lib.optionalString (!staticBuild) ''
+    cp pic/libiberty.a $out/lib*/libiberty.a
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/libibverbs/default.nix b/pkgs/development/libraries/libibverbs/default.nix
index 5ce1e5cbdf6..8e37648adfc 100644
--- a/pkgs/development/libraries/libibverbs/default.nix
+++ b/pkgs/development/libraries/libibverbs/default.nix
@@ -1,17 +1,65 @@
 { stdenv, fetchurl }:
 
-stdenv.mkDerivation rec {
-  name = "libibverbs-1.1.8";
+let
 
-  src = fetchurl {
-    url = "https://www.openfabrics.org/downloads/verbs/${name}.tar.gz";
-    sha256 = "13w2j5lrrqxxxvhpxbqb70x7wy0h8g329inzgfrvqv8ykrknwxkw";
+  verbs = rec {
+      version = "1.1.8";
+      name = "libibverbs-${version}";
+      url = "http://downloads.openfabrics.org/verbs/${name}.tar.gz";
+      sha256 = "13w2j5lrrqxxxvhpxbqb70x7wy0h8g329inzgfrvqv8ykrknwxkw";
   };
 
+  drivers = {
+      libmlx4 = rec { 
+          version = "1.0.6";
+          name = "libmlx4-${version}"; 
+          url = "http://downloads.openfabrics.org/mlx4/${name}.tar.gz";
+          sha256 = "f680ecbb60b01ad893490c158b4ce8028a3014bb8194c2754df508d53aa848a8";
+      };
+      libmthca = rec { 
+          version = "1.0.6"; 
+          name = "libmthca-${version}"; 
+          url = "http://downloads.openfabrics.org/mthca/${name}.tar.gz";
+          sha256 = "cc8ea3091135d68233d53004e82b5b510009c821820494a3624e89e0bdfc855c";
+      };
+  };
+
+in stdenv.mkDerivation rec {
+
+  inherit (verbs) name version ;
+
+  srcs = [
+    ( fetchurl { inherit (verbs) url sha256 ; } )
+    ( fetchurl { inherit (drivers.libmlx4) url sha256 ; } )
+    ( fetchurl { inherit (drivers.libmthca) url sha256 ; } )
+  ];
+
+  sourceRoot = name;
+
+  # Install userspace drivers
+  postInstall = ''
+    for dir in ${drivers.libmlx4.name} ${drivers.libmthca.name} ; do
+      cd ../$dir
+      export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$out/include"
+      export NIX_LDFLAGS="-rpath $out/lib $NIX_LDFLAGS -L$out/lib"
+      ./configure $configureFlags
+      make -j$NIX_BUILD_CORES
+      make install
+    done
+  '';
+
+  # Re-add the libibverbs path into runpath of the library
+  # to enable plugins to be found by dlopen
+  postFixup = ''
+    RPATH=$(patchelf --print-rpath $out/lib/libibverbs.so)
+    patchelf --set-rpath $RPATH:$out/lib $out/lib/libibverbs.so.1.0.0
+  '';
+
   meta = with stdenv.lib; {
     homepage = https://www.openfabrics.org/;
     license = licenses.bsd2;
     platforms = with platforms; linux ++ freebsd;
-    maintainers = with maintainers; [ wkennington ];
+    maintainers = with maintainers; [ wkennington bzizou ];
   };
 }
+
diff --git a/pkgs/development/libraries/libinput/default.nix b/pkgs/development/libraries/libinput/default.nix
index 18dbd2de38b..2c29482227a 100644
--- a/pkgs/development/libraries/libinput/default.nix
+++ b/pkgs/development/libraries/libinput/default.nix
@@ -15,11 +15,11 @@ in
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
-  name = "libinput-1.2.2";
+  name = "libinput-1.2.3";
 
   src = fetchurl {
     url = "http://www.freedesktop.org/software/libinput/${name}.tar.xz";
-    sha256 = "0rzkp37dnn4qnkx7v3hckx5ryv3lr0vl234pnk6z2vfq40v5pb08";
+    sha256 = "1wp937sn2dzqhrbl2bhapqb0pvybc80z8ynw7yfkm5ycl39skch9";
   };
 
   configureFlags = [
diff --git a/pkgs/development/libraries/libisofs/default.nix b/pkgs/development/libraries/libisofs/default.nix
new file mode 100644
index 00000000000..d7e78410740
--- /dev/null
+++ b/pkgs/development/libraries/libisofs/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, acl, attr, zlib }:
+
+stdenv.mkDerivation rec {
+  name = "libisofs-${version}";
+  version = "1.4.2";
+
+  src = fetchurl {
+    url = "http://files.libburnia-project.org/releases/${name}.tar.gz";
+    sha256 = "1axk1ykv8ibrlrd2f3allidviimi4ya6k7wpvr6r4y1sc7mg7rym";
+  };
+
+  buildInputs = [ attr zlib ];
+  propagatedBuildInputs = [ acl ];
+
+  meta = with stdenv.lib; {
+    homepage = http://libburnia-project.org/;
+    description = "A library to create an ISO-9660 filesystem with extensions like RockRidge or Joliet";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/pkgs/development/libraries/libjpeg-turbo/default.nix b/pkgs/development/libraries/libjpeg-turbo/default.nix
index 79cf45a8005..da4d3a9822f 100644
--- a/pkgs/development/libraries/libjpeg-turbo/default.nix
+++ b/pkgs/development/libraries/libjpeg-turbo/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, nasm, autoreconfHook }:
+{ stdenv, fetchurl, nasm }:
 
 stdenv.mkDerivation rec {
   name = "libjpeg-turbo-1.4.2";
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
 
   outputs = [ "dev" "out" "doc" "bin" ];
 
-  buildInputs = [ autoreconfHook nasm ];
+  nativeBuildInputs = [ nasm ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/development/libraries/libkeyfinder/default.nix b/pkgs/development/libraries/libkeyfinder/default.nix
index 729df918e57..d95ada04a34 100644
--- a/pkgs/development/libraries/libkeyfinder/default.nix
+++ b/pkgs/development/libraries/libkeyfinder/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, fftw, qtbase }:
+{ stdenv, fetchFromGitHub, fftw, qtbase, qmakeHook }:
 
 stdenv.mkDerivation rec {
   name = "libkeyfinder-${version}";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     owner = "ibsh";
   };
 
-  buildInputs = [ fftw qtbase ];
+  buildInputs = [ fftw qtbase qmakeHook ];
 
   postPatch = ''
     substituteInPlace LibKeyFinder.pro \
@@ -19,12 +19,6 @@ stdenv.mkDerivation rec {
       --replace "-stdlib=libc++" ""
   '';
 
-  configurePhase = ''
-    runHook preConfigure
-    qmake
-    runHook postConfigure
-  '';
-
   enableParallelBuilding = true;
 
   postInstall = ''
diff --git a/pkgs/development/libraries/libmatchbox/default.nix b/pkgs/development/libraries/libmatchbox/default.nix
index 38702817734..6cb7defb097 100644
--- a/pkgs/development/libraries/libmatchbox/default.nix
+++ b/pkgs/development/libraries/libmatchbox/default.nix
@@ -1,14 +1,15 @@
 { stdenv, fetchurl, libX11, libXext, libpng, libXft, libICE, pango, libjpeg}:
 
 stdenv.mkDerivation rec {
-  name = "libmatchbox-1.9";
+  name = "libmatchbox-${version}";
+  version = "1.11";
 
   buildInputs = [ libXft libICE pango libjpeg ];
   propagatedBuildInputs = [ libX11 libXext libpng ];
 
   src = fetchurl {
-    url = http://matchbox-project.org/sources/libmatchbox/1.9/libmatchbox-1.9.tar.bz2;
-    sha256 = "006zdrgs7rgh7dvakjmqsp1q9karq6c5cz4gki2l15fhx0cf40fv";
+    url = "http://downloads.yoctoproject.org/releases/matchbox/libmatchbox/${version}/libmatchbox-${version}.tar.bz2";
+    sha256 = "0lvv44s3bf96zvkysa4ansxj2ffgj3b5kgpliln538q4wd9ank15";
   };
 
   meta = {
diff --git a/pkgs/development/libraries/libmemcached/default.nix b/pkgs/development/libraries/libmemcached/default.nix
index 619aa014497..2570c645f26 100644
--- a/pkgs/development/libraries/libmemcached/default.nix
+++ b/pkgs/development/libraries/libmemcached/default.nix
@@ -19,7 +19,8 @@ stdenv.mkDerivation rec {
       sha256 = "1nvxwdkxj2a2g39z0g8byxjwnw4pa5xlvsmdk081q63vmfywh7zb";
     });
 
-  buildInputs = [ cyrus_sasl libevent ];
+  buildInputs = [ libevent ];
+  propagatedBuildInputs = [ cyrus_sasl ];
 
   meta = with stdenv.lib; {
     homepage = http://libmemcached.org;
diff --git a/pkgs/development/libraries/libqglviewer/default.nix b/pkgs/development/libraries/libqglviewer/default.nix
index 6b40eeb3b1f..eef9e05ca03 100644
--- a/pkgs/development/libraries/libqglviewer/default.nix
+++ b/pkgs/development/libraries/libqglviewer/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, qt4 }:
+{ stdenv, fetchurl, qt4, qmake4Hook }:
 
 stdenv.mkDerivation rec {
   name = "libqglviewer-2.6.3";
@@ -9,13 +9,11 @@ stdenv.mkDerivation rec {
     sha256 = "00jdkyk4wg1356c3ar6nk3hyp494ya3yvshq9m57kfmqpn3inqdy";
   };
 
-  buildInputs = [ qt4 ];
+  buildInputs = [ qt4 qmake4Hook ];
 
-  buildPhase =
+  postPatch =
     ''
       cd QGLViewer
-      qmake PREFIX=$out
-      make
     '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/libraw/default.nix b/pkgs/development/libraries/libraw/default.nix
index 031886d3451..ee842b0c4bd 100644
--- a/pkgs/development/libraries/libraw/default.nix
+++ b/pkgs/development/libraries/libraw/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "libraw-${version}";
-  version = "0.17.0";
+  version = "0.17.1";
 
   src = fetchurl {
     url = "http://www.libraw.org/data/LibRaw-${version}.tar.gz";
-    sha256 = "043kckxjqanw8dl3m9f6kvsf0l20ywxmgxd1xb0slj6m8l4w4hz6";
+    sha256 = "18fygk896gxbx47nh2rn5jp4skisgkl6pdfjqb7h0zn39hd6b6g5";
   };
 
   buildInputs = [ lcms2 jasper ];
diff --git a/pkgs/development/libraries/libsearpc/default.nix b/pkgs/development/libraries/libsearpc/default.nix
index 0410f64edec..0391786c3fd 100644
--- a/pkgs/development/libraries/libsearpc/default.nix
+++ b/pkgs/development/libraries/libsearpc/default.nix
@@ -2,14 +2,14 @@
 
 stdenv.mkDerivation rec
 {
-  version = "1.2.2";
-  seafileVersion = "3.0-latest";
+  version = "3.0.7";
+  seafileVersion = "5.0.7";
   name = "libsearpc-${version}";
 
   src = fetchurl
   {
-    url = "https://github.com/haiwen/libsearpc/archive/v${seafileVersion}.tar.gz";
-    sha256 = "1kdq6chn3qhvr616sw91gf9kjfgbv9snl2srqisw0zddw1qkfcan";
+    url = "https://github.com/haiwen/libsearpc/archive/v${version}.tar.gz";
+    sha256 = "0fdrgksdwd4qxp7qvh75y39dy52h2f5wfjbqr00h3rwkbx4npvpg";
   };
 
   patches = [ ./libsearpc.pc.patch ];
diff --git a/pkgs/development/libraries/libsigcxx/default.nix b/pkgs/development/libraries/libsigcxx/default.nix
index 1171fa079cf..e062e2db5c2 100644
--- a/pkgs/development/libraries/libsigcxx/default.nix
+++ b/pkgs/development/libraries/libsigcxx/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchurl, fetchpatch, pkgconfig, gnum4 }:
 let
-  ver_maj = "2.6"; # odd major numbers are unstable
-  ver_min = "2";
+  ver_maj = "2.8"; # odd major numbers are unstable
+  ver_min = "0";
 in
 stdenv.mkDerivation rec {
   name = "libsigc++-${ver_maj}.${ver_min}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/libsigc++/${ver_maj}/${name}.tar.xz";
-    sha256 = "fdace7134c31de792c17570f9049ca0657909b28c4c70ec4882f91a03de54437";
+    sha256 = "0lcnzzdq6718znfshs1hflpwqq6awbzwdyp4kv5lfaf54z880jbp";
   };
   patches = [(fetchpatch {
     url = "https://anonscm.debian.org/cgit/collab-maint/libsigc++-2.0.git/plain"
diff --git a/pkgs/development/libraries/libsolv/default.nix b/pkgs/development/libraries/libsolv/default.nix
new file mode 100644
index 00000000000..cece520e3c5
--- /dev/null
+++ b/pkgs/development/libraries/libsolv/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, cmake, zlib, expat, rpm, db }:
+
+stdenv.mkDerivation rec {
+  rev  = "0.6.20";
+  name = "libsolv-${rev}";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner  = "openSUSE";
+    repo   = "libsolv";
+    sha256 = "1gammarbnjbbkw2vlgcj9ynp1kgi5nns6xcl6ab8b5i4zgq91v2p";
+  };
+
+  cmakeFlags = "-DENABLE_RPMMD=true -DENABLE_RPMDB=true -DENABLE_PUBKEY=true -DENABLE_RPMDB_BYRPMHEADER=true";
+
+  buildInputs = [ cmake zlib expat rpm db ];
+
+  meta = with stdenv.lib; {
+    description = "A free package dependency solver";
+    license     = licenses.bsd3;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ copumpkin ];
+  };
+}
+
diff --git a/pkgs/development/libraries/libu2f-host/default.nix b/pkgs/development/libraries/libu2f-host/default.nix
index de51da51bca..dc2481a2e85 100644
--- a/pkgs/development/libraries/libu2f-host/default.nix
+++ b/pkgs/development/libraries/libu2f-host/default.nix
@@ -11,6 +11,11 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkgconfig ];
   buildInputs = [ json_c hidapi ];
 
+  postInstall = ''
+    mkdir -p $out/lib/udev/rules.d/
+    cp -v *.rules $out/lib/udev/rules.d/
+  '';
+
   meta = with stdenv.lib; {
     homepage = https://developers.yubico.com/libu2f-host;
     description = "A C library and command-line tool thati mplements the host-side of the U2F protocol";
diff --git a/pkgs/development/libraries/libuv/default.nix b/pkgs/development/libraries/libuv/default.nix
index 48d12321248..e039711e457 100644
--- a/pkgs/development/libraries/libuv/default.nix
+++ b/pkgs/development/libraries/libuv/default.nix
@@ -2,84 +2,29 @@
 
 , ApplicationServices, CoreServices }:
 
-let
-  stable = "stable";
-  unstable = "unstable";
+stdenv.mkDerivation rec {
+  version = "1.9.0";
+  name = "libuv-${version}";
 
-  meta = with lib; {
-    description = "A multi-platform support library with a focus on asynchronous I/O";
-    homepage    = https://github.com/libuv/libuv;
-    maintainers = with maintainers; [ cstrahan ];
-    platforms   = with platforms; linux ++ darwin;
-  };
-
-  mkName = stability: version:
-    if stability == stable
-    then "libuv-${version}"
-    else "libuv-${stability}-${version}";
-
-  mkSrc = version: sha256: fetchFromGitHub {
+  src = fetchFromGitHub {
     owner = "libuv";
     repo = "libuv";
     rev = "v${version}";
-    inherit sha256;
+    sha256 = "0sq8c8n7xixn2xxp35crprvh35ry18i5mcxgwh12lydwv9ks0d4k";
   };
 
-  # for versions < 0.11.6
-  mkWithoutAutotools = stability: version: sha256: stdenv.mkDerivation {
-    name = mkName stability version;
-    src = mkSrc version sha256;
-    buildPhase = lib.optionalString stdenv.isDarwin ''
-      mkdir extrapath
-      ln -s /usr/sbin/dtrace extrapath/dtrace
-      export PATH=$PATH:`pwd`/extrapath
-    '' + ''
-      mkdir build
-      make builddir_name=build
+  buildInputs = [ automake autoconf libtool pkgconfig ]
+    ++ stdenv.lib.optionals stdenv.isDarwin [ ApplicationServices CoreServices ];
 
-      rm -r build/src
-      rm build/libuv.a
-      cp -r include build
+  preConfigure = ''
+    LIBTOOLIZE=libtoolize ./autogen.sh
+  '';
 
-      mkdir build/lib
-      mv build/libuv.* build/lib
-
-      pushd build/lib
-      lib=$(basename libuv.*)
-      ext="''${lib##*.}"
-      mv $lib libuv.10.$ext
-      ln -s libuv.10.$ext libuv.$ext
-      popd
-    '';
-    installPhase = ''
-      cp -r build $out
-    '';
-    inherit meta;
-  };
-
-  # for versions > 0.11.6
-  mkWithAutotools = stability: version: sha256: stdenv.mkDerivation {
-    name = mkName stability version;
-    src = mkSrc version sha256;
-    buildInputs = [ automake autoconf libtool pkgconfig ]
-      ++ stdenv.lib.optionals stdenv.isDarwin [ ApplicationServices CoreServices ];
-    preConfigure = ''
-      LIBTOOLIZE=libtoolize ./autogen.sh
-    '';
-    inherit meta;
+  meta = with lib; {
+    description = "A multi-platform support library with a focus on asynchronous I/O";
+    homepage    = https://github.com/libuv/libuv;
+    maintainers = with maintainers; [ cstrahan ];
+    platforms   = with platforms; linux ++ darwin;
   };
 
-  toVersion = with lib; name:
-    replaceChars ["_"] ["."] (removePrefix "v" name);
-
-in
-
-  with lib;
-
-  mapAttrs (v: h: mkWithAutotools unstable (toVersion v) h) {
-    v0_11_29 = "1z07phfwryfy2155p3lxcm2a33h20sfl96lds5dghn157x6csz7m";
-  }
-  //
-  mapAttrs (v: h: mkWithAutotools stable (toVersion v) h) {
-    v1_7_5 = "18x6cy2xn31am97vn6jli7kmb2fbp4c8kmv7jm97vggh0x55flsc";
-  }
+}
diff --git a/pkgs/development/libraries/libvirt/default.nix b/pkgs/development/libraries/libvirt/default.nix
index 1d1945af319..16a4498f54c 100644
--- a/pkgs/development/libraries/libvirt/default.nix
+++ b/pkgs/development/libraries/libvirt/default.nix
@@ -6,7 +6,7 @@
 , dnsmasq, libnl, libpcap, libxslt, xhtml1, numad, numactl, perlPackages
 , curl, libiconv, gmp, xen
 }:
-
+# if you update, also bump pythonPackages.libvirt or it will break
 stdenv.mkDerivation rec {
   name = "libvirt-${version}";
   version = "1.3.3";
diff --git a/pkgs/development/libraries/libxml2/default.nix b/pkgs/development/libraries/libxml2/default.nix
index f7e175373e1..8eedf50c9ca 100644
--- a/pkgs/development/libraries/libxml2/default.nix
+++ b/pkgs/development/libraries/libxml2/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = [ zlib findXMLCatalogs ];
 
-  configureFlags = "--with-python=${python}";
+  configureFlags = "--with-python=${python} --exec_prefix=$dev";
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/development/libraries/menu-cache/default.nix b/pkgs/development/libraries/menu-cache/default.nix
index 3131b6b2918..b6d187e7a0e 100644
--- a/pkgs/development/libraries/menu-cache/default.nix
+++ b/pkgs/development/libraries/menu-cache/default.nix
@@ -1,15 +1,17 @@
 { stdenv, fetchurl, glib, pkgconfig, libfm-extra }:
 
-let name = "menu-cache-0.7.0";
+let name = "menu-cache-1.0.1";
 in
 stdenv.mkDerivation {
   inherit name;
   src = fetchurl {
     url = "mirror://sourceforge/lxde/${name}.tar.xz";
-    sha256 = "0wwkk4jrcl2sp11bspabplchh4ipi1zyn39j3skyzgbm8k40gkhk";
+    sha256 = "0ngxvwfj9drabqi3lyzgpi0d0za6431sy2ijb010filrj54jdiqa";
   };
 
-  buildInputs = [ glib pkgconfig libfm-extra ];
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ glib libfm-extra ];
 
   meta = with stdenv.lib; {
     homepage = "http://blog.lxde.org/?tag=menu-cache";
diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix
index ad6bf8ba319..2d05861605a 100644
--- a/pkgs/development/libraries/mesa/default.nix
+++ b/pkgs/development/libraries/mesa/default.nix
@@ -23,7 +23,7 @@ else
 with { inherit (stdenv.lib) optional optionalString; };
 
 let
-  version = "11.1.2";
+  version = "11.1.3";
   # this is the default search path for DRI drivers
   driverLink = "/run/opengl-driver" + optionalString stdenv.isi686 "-32";
 in
@@ -38,7 +38,7 @@ stdenv.mkDerivation {
         + head (splitString "." version) + ''.x/${version}/mesa-${version}.tar.xz'')
       "https://launchpad.net/mesa/trunk/${version}/+download/mesa-${version}.tar.xz"
     ];
-    sha256 = "8f72aead896b340ba0f7a4a474bfaf71681f5d675592aec1cb7ba698e319148b";
+    sha256 = "51f6658a214d75e4d9f05207586d7ed56ebba75c6b10841176fb6675efa310ac";
   };
 
   prePatch = "patchShebangs .";
diff --git a/pkgs/development/libraries/nanoflann/default.nix b/pkgs/development/libraries/nanoflann/default.nix
new file mode 100644
index 00000000000..387632a890f
--- /dev/null
+++ b/pkgs/development/libraries/nanoflann/default.nix
@@ -0,0 +1,25 @@
+{stdenv, fetchFromGitHub, cmake}:
+
+stdenv.mkDerivation rec {
+  version = "1.1.9";
+  name = "nanoflann-${version}";
+  
+  src = fetchFromGitHub {
+    owner = "jlblancoc";
+    repo = "nanoflann";
+    rev = "v${version}";
+    sha256 = "1q588cf2aark45bp4ciqjiz3dkdv8dcijkhm1ybzs8qjdzz9fimn";
+  };
+
+  buildInputs = [ cmake ];
+
+  doCheck = true;
+  checkTarget = "test";
+
+  meta = {
+    homepage = https://github.com/jlblancoc/nanoflann;
+    license = stdenv.lib.licenses.bsd3;
+    description = "Header only C++ library for approximate nearest neighbor search";
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/pkgs/development/libraries/nghttp2/default.nix b/pkgs/development/libraries/nghttp2/default.nix
index 761f6933f5c..29175fbb7d4 100644
--- a/pkgs/development/libraries/nghttp2/default.nix
+++ b/pkgs/development/libraries/nghttp2/default.nix
@@ -1,77 +1,36 @@
 { stdenv, fetchurl, pkgconfig
 
-# Optinal Dependencies
+# Optional Dependencies
 , openssl ? null, libev ? null, zlib ? null, jansson ? null, boost ? null
 , libxml2 ? null, jemalloc ? null
-
-# Extra argument
-, prefix ? ""
 }:
 
-let
-  mkFlag = trueStr: falseStr: cond: name: val:
-    if cond == null then null else
-      "--${if cond != false then trueStr else falseStr}${name}${if val != null && cond != false then "=${val}" else ""}";
-  mkEnable = mkFlag "enable-" "disable-";
-  mkWith = mkFlag "with-" "without-";
-  mkOther = mkFlag "" "" true;
-
-  shouldUsePkg = pkg: if pkg != null && stdenv.lib.any (x: x == stdenv.system) pkg.meta.platforms then pkg else null;
-
-  isLib = prefix == "lib";
-
-  optOpenssl = if isLib then null else shouldUsePkg openssl;
-  optLibev = if isLib then null else shouldUsePkg libev;
-  optZlib = if isLib then null else shouldUsePkg zlib;
-
-  hasApp = optOpenssl != null && optLibev != null && optZlib != null;
-
-  optJansson = if isLib then null else shouldUsePkg jansson;
-  #optBoost = if isLib then null else shouldUsePkg boost;
-  optBoost = null; # Currently detection is broken
-  optLibxml2 = if !hasApp then null else shouldUsePkg libxml2;
-  optJemalloc = if !hasApp then null else shouldUsePkg jemalloc;
-in
 stdenv.mkDerivation rec {
-  name = "${prefix}nghttp2-${version}";
-  version = "1.8.0";
+  name = "nghttp2-${version}";
+  version = "1.9.2";
 
   # Don't use fetchFromGitHub since this needs a bootstrap curl
   src = fetchurl {
     url = "https://github.com/nghttp2/nghttp2/releases/download/v${version}/nghttp2-${version}.tar.bz2";
-    sha256 = "10xz3s624w208pr9xgm4ammc8bc5mi17vy4357hjfd5vmmp5m8b0";
+    sha256 = "1jnms0mmf73cwdqvbzpdyi974f8xq7p8bxgba2ippw70pz8y0ac0";
   };
 
   # Configure script searches for a symbol which does not exist in jemalloc on Darwin
   # Reported upstream in https://github.com/tatsuhiro-t/nghttp2/issues/233
-  postPatch = if (stdenv.isDarwin && optJemalloc != null) then ''
+  postPatch = if stdenv.isDarwin && jemalloc != null then ''
     substituteInPlace configure --replace "malloc_stats_print" "je_malloc_stats_print"
   '' else null;
 
+  outputs = [ "dev" "out" "lib" ];
+
   nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ optJansson optBoost optLibxml2 optJemalloc ]
-    ++ stdenv.lib.optionals hasApp [ optOpenssl optLibev optZlib ];
+  buildInputs = [ openssl libev zlib ];
 
-  configureFlags = [
-    (mkEnable false                 "werror"          null)
-    (mkEnable false                 "debug"           null)
-    (mkEnable true                  "threads"         null)
-    (mkEnable hasApp                "app"             null)
-    (mkEnable (optJansson != null)  "hpack-tools"     null)
-    (mkEnable (optBoost != null)    "asio-lib"        null)
-    (mkEnable false                 "examples"        null)
-    (mkEnable false                 "python-bindings" null)
-    (mkEnable false                 "failmalloc"      null)
-    (mkWith   (optLibxml2 != null)  "libxml2"         null)
-    (mkWith   (optJemalloc != null) "jemalloc"        null)
-    (mkWith   false                 "spdylay"         null)
-    (mkWith   false                 "cython"          null)
-    (mkWith   false                 "mruby"           null)
-  ];
+  enableParallelBuilding = true;
 
   meta = with stdenv.lib; {
     homepage = http://nghttp2.org/;
-    description = "an implementation of HTTP/2 in C";
+    description = "A C implementation of HTTP/2";
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ wkennington ];
diff --git a/pkgs/development/libraries/nlopt/default.nix b/pkgs/development/libraries/nlopt/default.nix
index 080f09dfdf4..ddf47cf31d8 100644
--- a/pkgs/development/libraries/nlopt/default.nix
+++ b/pkgs/development/libraries/nlopt/default.nix
@@ -16,6 +16,10 @@ stdenv.mkDerivation rec {
         "M_INSTALL_DIR=$(out)/${octave.sitePath}/m " +
         "OCT_INSTALL_DIR=$(out)/${octave.sitePath}/oct ");
 
+  preConfigure = ''
+    find octave -name '*.cc' | xargs sed -i 's|Octave_map|octave_map|g'
+  '';
+
   meta = {
     homepage = "http://ab-initio.mit.edu/nlopt/";
     description = "Free open-source library for nonlinear optimization";
diff --git a/pkgs/development/libraries/ogre/default.nix b/pkgs/development/libraries/ogre/default.nix
index 89d694cc497..aba02827665 100644
--- a/pkgs/development/libraries/ogre/default.nix
+++ b/pkgs/development/libraries/ogre/default.nix
@@ -1,11 +1,12 @@
-{ fetchurl, stdenv
+{ fetchurl, stdenv, lib
 , cmake, mesa
 , freetype, freeimage, zziplib, randrproto, libXrandr
 , libXaw, freeglut, libXt, libpng, boost, ois
 , xproto, libX11, libXmu, libSM, pkgconfig
 , libXxf86vm, xf86vidmodeproto, libICE
 , renderproto, libXrender
-, nvidia_cg_toolkit }:
+, withNvidiaCg ? false, nvidia_cg_toolkit
+, withSamples ? false }:
 
 stdenv.mkDerivation {
   name = "ogre-1.9-hg-20160322";
@@ -15,10 +16,10 @@ stdenv.mkDerivation {
      sha256 = "0w3argjy1biaxwa3c80zxxgll67wjp8czd83p87awlcvwzdk5mz9";
   };
 
-  cmakeFlags = [ "-DOGRE_INSTALL_SAMPLES=yes" ]
-    ++ (map (x: "-DOGRE_BUILD_PLUGIN_${x}=on")
-            [ "BSP" "CG" "OCTREE" "PCZ" "PFX" ])
-    ++ (map (x: "-DOGRE_BUILD_RENDERSYSTEM_${x}=on") [ "GL" ]);
+  cmakeFlags = [ "-DOGRE_BUILD_SAMPLES=${toString withSamples}" ]
+    ++ map (x: "-DOGRE_BUILD_PLUGIN_${x}=on")
+           ([ "BSP" "OCTREE" "PCZ" "PFX" ] ++ lib.optional withNvidiaCg "CG")
+    ++ map (x: "-DOGRE_BUILD_RENDERSYSTEM_${x}=on") [ "GL" ];
 
   enableParallelBuilding = true;
 
@@ -29,8 +30,7 @@ stdenv.mkDerivation {
      xproto libX11 libXmu libSM pkgconfig
      libXxf86vm xf86vidmodeproto libICE
      renderproto libXrender
-     nvidia_cg_toolkit
-   ];
+   ] ++ lib.optional withNvidiaCg nvidia_cg_toolkit;
 
   meta = {
     description = "A 3D engine";
diff --git a/pkgs/development/libraries/pcre/default.nix b/pkgs/development/libraries/pcre/default.nix
index 8bce1512d13..91af6f4dadf 100644
--- a/pkgs/development/libraries/pcre/default.nix
+++ b/pkgs/development/libraries/pcre/default.nix
@@ -1,6 +1,5 @@
 { stdenv, fetchurl
 , windows ? null, variant ? null, pcre
-, withCharSize ? 8
 }:
 
 with stdenv.lib;
diff --git a/pkgs/development/libraries/phonon-backend-gstreamer/qt4/default.nix b/pkgs/development/libraries/phonon-backend-gstreamer/qt4/default.nix
index 844c2e58009..2f588cbe708 100644
--- a/pkgs/development/libraries/phonon-backend-gstreamer/qt4/default.nix
+++ b/pkgs/development/libraries/phonon-backend-gstreamer/qt4/default.nix
@@ -1,8 +1,7 @@
-{ stdenv, fetchurl, cmake, automoc4, qt4, pkgconfig, phonon, gstreamer
-, gst_plugins_base }:
+{ stdenv, fetchurl, cmake, automoc4, qt4, pkgconfig, phonon, gst_all_1 }:
 
 let
-  version = "4.7.2";
+  version = "4.8.2";
   pname = "phonon-backend-gstreamer";
 in
 
@@ -11,18 +10,24 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "mirror://kde/stable/phonon/${pname}/${version}/src/${name}.tar.xz";
-    sha256 = "1cfjk450aajr8hfhnfq7zbmryprxiwr9ha5x585dsh7mja82mdw0";
+    sha256 = "1q1ix6zsfnh6gfnpmwp67s376m7g7ahpjl1qp2fqakzb5cgzgq10";
   };
 
-  buildInputs = [ phonon qt4 gstreamer gst_plugins_base ];
+  buildInputs = with gst_all_1; [ phonon qt4 gstreamer gst-plugins-base ];
 
   nativeBuildInputs = [ cmake automoc4 pkgconfig ];
 
+  NIX_CFLAGS_COMPILE = [
+    # This flag should be picked up through pkgconfig, but it isn't.
+    "-I${gst_all_1.gstreamer}/lib/gstreamer-1.0/include"
+  ];
+
   cmakeFlags = [ "-DCMAKE_INSTALL_LIBDIR=lib" ];
 
   meta = {
     homepage = http://phonon.kde.org/;
     description = "GStreamer backend for Phonon";
     platforms = stdenv.lib.platforms.linux;
-  };  
+    maintainers = with stdenv.lib.maintainers; [ ttuegel ];
+  };
 }
diff --git a/pkgs/development/libraries/phonon/default.nix b/pkgs/development/libraries/phonon/default.nix
new file mode 100644
index 00000000000..db4c237c989
--- /dev/null
+++ b/pkgs/development/libraries/phonon/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, cmake, mesa, pkgconfig, libpulseaudio
+, qt4 ? null, automoc4 ? null
+, qtbase ? null, qtquick1 ? null, qttools ? null
+, debug ? false }:
+
+with stdenv.lib;
+
+let
+  v = "4.8.3";
+  withQt5 = qtbase != null;
+in
+
+assert withQt5 -> qtquick1 != null;
+assert withQt5 -> qttools != null;
+assert !withQt5 -> automoc4 != null;
+
+stdenv.mkDerivation rec {
+  name = "phonon-${v}";
+
+  meta = {
+    homepage = http://phonon.kde.org/;
+    description = "Multimedia API for Qt";
+    license = stdenv.lib.licenses.lgpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ ttuegel ];
+  };
+
+  src = fetchurl {
+    url = "mirror://kde/stable/phonon/${v}/src/phonon-${v}.tar.xz";
+    sha256 = "05nshngk03ln90vsjz44dx8al576f4vd5fvhs1l0jmx13jb9q551";
+  };
+
+  buildInputs =
+    [ mesa libpulseaudio ]
+    ++ (if withQt5 then [ qtbase qtquick1 qttools ] else [ qt4 ]);
+
+  nativeBuildInputs =
+    [ cmake pkgconfig ]
+    ++ optional (!withQt5) automoc4;
+
+  NIX_CFLAGS_COMPILE = "-fPIC";
+
+  cmakeFlags =
+    [ "-DCMAKE_BUILD_TYPE=${if debug then "Debug" else "Release"}" ]
+    ++ optional withQt5 "-DPHONON_BUILD_PHONON4QT5=ON";
+
+  postPatch = ''
+    sed -i PhononConfig.cmake.in \
+        -e "/get_filename_component(rootDir/ s/^.*$//" \
+        -e "/^set(PHONON_INCLUDE_DIR/ s,\''${rootDir},''${!outputDev}," \
+        -e "/^set(PHONON_LIBRARY_DIR/ s,\''${rootDir}/,," \
+        -e "/^set(PHONON_BUILDSYSTEM_DIR/ s,\''${rootDir},''${!outputDev},"
+  '';
+}
diff --git a/pkgs/development/libraries/phonon/qt4/default.nix b/pkgs/development/libraries/phonon/qt4/default.nix
deleted file mode 100644
index 9875b216e06..00000000000
--- a/pkgs/development/libraries/phonon/qt4/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{ stdenv, fetchurl, cmake, automoc4, libpulseaudio, qt4 }:
-
-with stdenv.lib;
-
-let
-  v = "4.8.1";
-in
-
-stdenv.mkDerivation rec {
-  name = "phonon-${v}";
-
-  src = fetchurl {
-    url = "mirror://kde/stable/phonon/${v}/phonon-${v}.tar.xz";
-    sha256 = "1l97h1jj3gvl1chx1qbipizfvjgqc05wrhdcflc76c2krlk03jmn";
-  };
-
-  buildInputs = [ qt4 libpulseaudio ];
-
-  nativeBuildInputs = [ cmake automoc4 ];
-
-  meta = {
-    homepage = http://phonon.kde.org/;
-    description = "Multimedia API for Qt";
-    license = stdenv.lib.licenses.lgpl2;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ ttuegel ];
-  };
-}
diff --git a/pkgs/development/libraries/phonon/qt5/default.nix b/pkgs/development/libraries/phonon/qt5/default.nix
deleted file mode 100644
index c7baeb2e340..00000000000
--- a/pkgs/development/libraries/phonon/qt5/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ stdenv, fetchurl, cmake, mesa, pkgconfig, libpulseaudio
-, qtbase, qtquick1, qttools
-, debug ? false }:
-
-with stdenv.lib;
-
-let
-  v = "4.8.3";
-in
-
-stdenv.mkDerivation rec {
-  name = "phonon-${v}";
-
-  src = fetchurl {
-    url = "mirror://kde/stable/phonon/${v}/src/phonon-${v}.tar.xz";
-    sha256 = "05nshngk03ln90vsjz44dx8al576f4vd5fvhs1l0jmx13jb9q551";
-  };
-
-  buildInputs = [ mesa qtbase qtquick1 qttools libpulseaudio ];
-
-  nativeBuildInputs = [ cmake pkgconfig ];
-
-  cmakeFlags = [
-    "-DCMAKE_BUILD_TYPE=${if debug then "Debug" else "Release"}"
-    "-DPHONON_BUILD_PHONON4QT5=ON"
-    "-DCMAKE_INSTALL_LIBDIR=lib"
-  ];
-
-  meta = {
-    homepage = http://phonon.kde.org/;
-    description = "Multimedia API for Qt";
-    license = stdenv.lib.licenses.lgpl2;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = with stdenv.lib.maintainers; [ ttuegel ];
-  };
-}
diff --git a/pkgs/development/libraries/polkit-qt-1/default.nix b/pkgs/development/libraries/polkit-qt-1/default.nix
deleted file mode 100644
index 3715158705c..00000000000
--- a/pkgs/development/libraries/polkit-qt-1/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-{ stdenv, fetchurl, cmake, pkgconfig, polkit, automoc4, glib
-, qt4 ? null
-, withQt5 ? false, qtbase ? null }:
-
-with stdenv.lib;
-
-assert (withQt5 -> qtbase != null); assert (!withQt5 -> qt4 != null);
-
-stdenv.mkDerivation {
-  name = "polkit-qt-1-0.112.0";
-
-  src = fetchurl {
-    url = "mirror://kde/stable/apps/KDE4.x/admin/polkit-qt-1-0.112.0.tar.bz2";
-    sha256 = "1ip78x20hjqvm08kxhp6gb8hf6k5n6sxyx6kk2yvvq53djzh7yv7";
-  };
-
-  nativeBuildInputs = [ cmake pkgconfig ] ++ optional (!withQt5) automoc4;
-
-  propagatedBuildInputs = [ polkit glib ] ++ [(if withQt5 then qtbase else qt4)];
-
-  meta = {
-    description = "A Qt wrapper around PolKit";
-    maintainers = with stdenv.lib.maintainers; [ ttuegel ];
-  };
-}
diff --git a/pkgs/development/libraries/polkit-qt-1/qt-4.nix b/pkgs/development/libraries/polkit-qt-1/qt-4.nix
new file mode 100644
index 00000000000..fa5c77aa27a
--- /dev/null
+++ b/pkgs/development/libraries/polkit-qt-1/qt-4.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, cmake, pkgconfig, polkit, automoc4, glib, qt4 }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation {
+  name = "polkit-qt-1-qt4-0.112.0";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/apps/KDE4.x/admin/polkit-qt-1-0.112.0.tar.bz2";
+    sha256 = "1ip78x20hjqvm08kxhp6gb8hf6k5n6sxyx6kk2yvvq53djzh7yv7";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig automoc4 ];
+
+  propagatedBuildInputs = [ polkit glib qt4 ];
+
+  meta = {
+    description = "A Qt wrapper around PolKit";
+    maintainers = with stdenv.lib.maintainers; [ ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/polkit-qt-1/qt-5.nix b/pkgs/development/libraries/polkit-qt-1/qt-5.nix
new file mode 100644
index 00000000000..bdeb175b89f
--- /dev/null
+++ b/pkgs/development/libraries/polkit-qt-1/qt-5.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, cmake, pkgconfig, polkit, glib, qtbase }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation {
+  name = "polkit-qt-1-qt5-0.112.0";
+
+  outputs = [ "dev" "out" ];
+
+  src = fetchurl {
+    url = "mirror://kde/stable/apps/KDE4.x/admin/polkit-qt-1-0.112.0.tar.bz2";
+    sha256 = "1ip78x20hjqvm08kxhp6gb8hf6k5n6sxyx6kk2yvvq53djzh7yv7";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  propagatedBuildInputs = [ polkit glib qtbase ];
+
+  postFixup = ''
+    # Fix library location in CMake module
+    sed -i "$dev/lib/cmake/PolkitQt5-1/PolkitQt5-1Config.cmake" \
+        -e "s,\\(set_and_check.POLKITQT-1_LIB_DIR\\).*$,\\1 \"''${!outputLib}/lib\"),"
+  '';
+
+  meta = {
+    description = "A Qt wrapper around PolKit";
+    maintainers = with stdenv.lib.maintainers; [ ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/qmltermwidget/default.nix b/pkgs/development/libraries/qmltermwidget/default.nix
index 359a4341537..1620649a3cc 100644
--- a/pkgs/development/libraries/qmltermwidget/default.nix
+++ b/pkgs/development/libraries/qmltermwidget/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, qtbase, qtquick1 }:
+{ stdenv, fetchgit, qtbase, qtquick1, qmakeHook }:
 
 stdenv.mkDerivation rec {
   version = "0.1.0";
@@ -11,19 +11,14 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [ qtbase qtquick1 ];
+  nativeBuildInputs = [ qmakeHook ];
 
   patchPhase = ''
     substituteInPlace qmltermwidget.pro \
       --replace '$$[QT_INSTALL_QML]' "/lib/qt5/qml/"
   '';
 
-  configurePhase = ''
-    runHook preConfigure
-    qmake PREFIX=$out
-    runHook postConfigure
-  '';
-
-  installPhase=''make INSTALL_ROOT="$out" install'';
+  installFlags = [ "INSTALL_ROOT=$(out)" ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/development/libraries/qoauth/default.nix b/pkgs/development/libraries/qoauth/default.nix
index f93e4479e71..5a448d33067 100644
--- a/pkgs/development/libraries/qoauth/default.nix
+++ b/pkgs/development/libraries/qoauth/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, qt4, qca2 }:
+{ stdenv, fetchurl, qt4, qca2, qmake4Hook }:
 
 stdenv.mkDerivation {
   name = "qoauth-1.0.1";
@@ -9,13 +9,13 @@ stdenv.mkDerivation {
     sha256 = "1ax0g4dd49a3a1699ams13bkhz690xfwqg8rxp1capbdpf2aa8cp";
   };
 
-  configurePhase = "qmake PREFIX=$prefix";
   patchPhase = "sed -e 's/lib64/lib/g' -i src/src.pro";
 
   buildInputs = [ qt4 qca2 ];
+  nativeBuildInputs = [ qmake4Hook ];
 
-  NIX_CFLAGS_COMPILE="-I${qca2}/include/QtCrypto";
-  NIX_LDFLAGS = "-lqca";
+  NIX_CFLAGS_COMPILE = [ "-I${qca2}/include/QtCrypto" ];
+  NIX_LDFLAGS = [ "-lqca" ];
 
   meta = {
     description = "Qt library for OAuth authentication";
diff --git a/pkgs/development/libraries/qscintilla/default.nix b/pkgs/development/libraries/qscintilla/default.nix
index 26d412e5a8c..bc44f53fa6e 100644
--- a/pkgs/development/libraries/qscintilla/default.nix
+++ b/pkgs/development/libraries/qscintilla/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, qt }:
+{ stdenv, fetchurl, qt4, qmake4Hook }:
 
 stdenv.mkDerivation rec {
   pname = "qscintilla";
@@ -11,7 +11,8 @@ stdenv.mkDerivation rec {
     sha256 = "d7c32e32582f93779de861006d87467b38b9ebc06e3d0b32e981cb24369fa417";
   };
 
-  buildInputs = [ qt ];
+  buildInputs = [ qt4 ];
+  nativeBuildInputs = [ qmake4Hook ];
 
   preConfigure = ''
     cd Qt4Qt5
@@ -20,7 +21,6 @@ stdenv.mkDerivation rec {
            -e "s,\$\$\\[QT_INSTALL_TRANSLATIONS\\],$out/share/qt/translations," \
            -e "s,\$\$\\[QT_INSTALL_DATA\\],$out/share/qt," \
            qscintilla.pro
-    qmake qscintilla.pro
   '';
 
   meta = {
diff --git a/pkgs/development/libraries/qt-4.x/4.8/default.nix b/pkgs/development/libraries/qt-4.x/4.8/default.nix
index 788fb874140..65d45923e5a 100644
--- a/pkgs/development/libraries/qt-4.x/4.8/default.nix
+++ b/pkgs/development/libraries/qt-4.x/4.8/default.nix
@@ -11,6 +11,8 @@
 , docs ? false
 , examples ? false
 , demos ? false
+# darwin support
+, cf-private, libobjc, ApplicationServices, OpenGL, Cocoa, AGL, libcxx
 }:
 
 with stdenv.lib;
@@ -114,7 +116,7 @@ stdenv.mkDerivation rec {
 
       -no-phonon ${if buildWebkit then "" else "-no"}-webkit ${if buildMultimedia then "" else "-no"}-multimedia -audio-backend
       ${if developerBuild then "-developer-build" else ""}
-    '';
+    '' + optionalString stdenv.isDarwin "-platform unsupported/macx-clang-libc++";
 
   propagatedBuildInputs =
     [ libXrender libXrandr libXinerama libXcursor libXext libXfixes libXv libXi
@@ -129,14 +131,16 @@ stdenv.mkDerivation rec {
     [ cups # Qt dlopen's libcups instead of linking to it
       postgresql sqlite libjpeg libmng libtiff icu ]
     ++ optionals (mysql != null) [ mysql.lib ]
-    ++ optionals gtkStyle [ gtk gdk_pixbuf ];
+    ++ optionals gtkStyle [ gtk gdk_pixbuf ]
+    ++ optionals stdenv.isDarwin [ cf-private ApplicationServices OpenGL Cocoa AGL libcxx libobjc ];
 
   nativeBuildInputs = [ perl pkgconfig which ];
 
   enableParallelBuilding = false;
 
   NIX_CFLAGS_COMPILE = optionalString (stdenv.isFreeBSD || stdenv.isDarwin)
-    "-I${glib.dev}/include/glib-2.0 -I${glib.out}/lib/glib-2.0/include";
+    "-I${glib.dev}/include/glib-2.0 -I${glib.out}/lib/glib-2.0/include"
+    + optionalString stdenv.isDarwin " -I${libcxx}/include/c++/v1";
 
   NIX_LDFLAGS = optionalString (stdenv.isFreeBSD || stdenv.isDarwin)
     "-lglib-2.0";
@@ -145,6 +149,8 @@ stdenv.mkDerivation rec {
     # resolve "extra qualification on member" error
     sed -i 's/struct ::TabletProximityRec;/struct TabletProximityRec;/' \
       src/gui/kernel/qt_cocoa_helpers_mac_p.h
+    find . -name "Makefile*" | xargs sed -i 's/^\(LINK[[:space:]]* = clang++\)/\1 ${NIX_LDFLAGS}/'
+    sed -i 's/^\(LIBS[[:space:]]*=.*$\)/\1 -lobjc/' ./src/corelib/Makefile.Release
   '';
 
   crossAttrs = let
diff --git a/pkgs/development/libraries/qt-4.x/4.8/qmake-hook.sh b/pkgs/development/libraries/qt-4.x/4.8/qmake-hook.sh
new file mode 100644
index 00000000000..bf716a72d0f
--- /dev/null
+++ b/pkgs/development/libraries/qt-4.x/4.8/qmake-hook.sh
@@ -0,0 +1,11 @@
+qmakeConfigurePhase() {
+    runHook preConfigure
+
+    $QMAKE PREFIX=$out $qmakeFlags
+
+    runHook postConfigure
+}
+
+export QMAKE=@qt4@/bin/qmake
+
+configurePhase=qmakeConfigurePhase
diff --git a/pkgs/development/libraries/qt-5/5.4/default.nix b/pkgs/development/libraries/qt-5/5.4/default.nix
index df2fb8ad186..950129ba541 100644
--- a/pkgs/development/libraries/qt-5/5.4/default.nix
+++ b/pkgs/development/libraries/qt-5/5.4/default.nix
@@ -37,12 +37,10 @@ let
       inherit src;
 
       propagatedBuildInputs = args.qtInputs ++ (args.propagatedBuildInputs or []);
-      nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ self.fixQtModuleCMakeConfig ];
+      nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ self.fixQtModuleCMakeConfig self.qmakeHook ];
 
       NIX_QT_SUBMODULE = args.NIX_QT_SUBMODULE or true;
-      dontAddPrefix = args.dontAddPrefix or true;
       dontFixLibtool = args.dontFixLibtool or true;
-      configureScript = args.configureScript or "qmake";
 
       outputs = args.outputs or [ "dev" "out" ];
       setOutputFlags = false;
@@ -109,6 +107,7 @@ let
 
       makeQtWrapper = makeSetupHook { deps = [ makeWrapper ]; } ./make-qt-wrapper.sh;
       fixQtModuleCMakeConfig = makeSetupHook { } ./fix-qt-module-cmake-config.sh;
+      qmakeHook = makeSetupHook { substitutions = { qt_dev = qtbase.dev; lndir = pkgs.xorg.lndir; }; } ./qmake-hook.sh;
 
     };
 
diff --git a/pkgs/development/libraries/qt-5/5.4/qmake-hook.sh b/pkgs/development/libraries/qt-5/5.4/qmake-hook.sh
new file mode 100644
index 00000000000..a38f9f578e3
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.4/qmake-hook.sh
@@ -0,0 +1,101 @@
+if [[ -z "$QMAKE" ]]; then
+
+_qtLinkDependencyDir() {
+    @lndir@/bin/lndir -silent "$1/$2" "$qtOut/$2"
+    if [ -n "$NIX_QT_SUBMODULE" ]; then
+        find "$1/$2" -printf "$2/%P\n" >> "$out/nix-support/qt-inputs"
+    fi
+}
+
+_qtLinkModule() {
+    if [ -d "$1/mkspecs" ]; then
+        # $1 is a Qt module
+        _qtLinkDependencyDir "$1" mkspecs
+
+        for dir in bin include lib share; do
+            if [ -d "$1/$dir" ]; then
+                _qtLinkDependencyDir "$1" "$dir"
+            fi
+        done
+    fi
+}
+
+_qtRmModules() {
+    cat "$out/nix-support/qt-inputs" | while read file; do
+      if [ -h "$out/$file" ]; then
+        rm "$out/$file"
+      fi
+    done
+
+    cat "$out/nix-support/qt-inputs" | while read file; do
+      if [ -d "$out/$file" ]; then
+        rmdir --ignore-fail-on-non-empty -p "$out/$file"
+      fi
+    done
+
+    rm "$out/nix-support/qt-inputs"
+}
+
+_qtRmQmake() {
+    rm "$qtOut/bin/qmake" "$qtOut/bin/qt.conf"
+}
+
+_qtSetQmakePath() {
+    export PATH="$qtOut/bin${PATH:+:}$PATH"
+}
+
+_qtMultioutModuleDevs() {
+    # We cannot simply set these paths in configureFlags because libQtCore retains
+    # references to the paths it was built with.
+    moveToOutput "bin" "${!outputDev}"
+    moveToOutput "include" "${!outputDev}"
+
+    # The destination directory must exist or moveToOutput will do nothing
+    mkdir -p "${!outputDev}/share"
+    moveToOutput "share/doc" "${!outputDev}"
+}
+
+qmakeConfigurePhase() {
+    runHook preConfigure
+
+    qmake PREFIX=$out $qmakeFlags
+
+    runHook postConfigure
+}
+
+qtOut=""
+if [[ -z "$NIX_QT_SUBMODULE" ]]; then
+    qtOut=`mktemp -d`
+else
+    qtOut=$out
+fi
+
+mkdir -p "$qtOut/bin" "$qtOut/mkspecs" "$qtOut/include" "$qtOut/nix-support" "$qtOut/lib" "$qtOut/share"
+
+cp "@qt_dev@/bin/qmake" "$qtOut/bin"
+cat >"$qtOut/bin/qt.conf" <<EOF
+[Paths]
+Prefix = $qtOut
+Plugins = lib/qt5/plugins
+Imports = lib/qt5/imports
+Qml2Imports = lib/qt5/qml
+Documentation = share/doc/qt5
+EOF
+
+export QMAKE="$qtOut/bin/qmake"
+
+envHooks+=(_qtLinkModule)
+# Set PATH to find qmake first in a preConfigure hook
+# It must run after all the envHooks!
+postHooks+=(_qtSetQmakePath)
+
+if [  -z "$dontUseQmakeConfigure" -a -z "$configurePhase" ]; then
+    configurePhase=qmakeConfigurePhase
+fi
+
+if [ -n "$NIX_QT_SUBMODULE" ]; then
+    postInstallHooks+=(_qtRmQmake _qtRmModules)
+    preFixupHooks+=(_qtMultioutModuleDevs)
+fi
+
+fi
diff --git a/pkgs/development/libraries/qt-5/5.4/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.4/qtbase/default.nix
index 0585601db76..32e8bacd1e7 100644
--- a/pkgs/development/libraries/qt-5/5.4/qtbase/default.nix
+++ b/pkgs/development/libraries/qt-5/5.4/qtbase/default.nix
@@ -239,7 +239,6 @@ stdenv.mkDerivation {
       fixQtModuleCMakeConfig "Xml"
     '';
 
-  inherit lndir;
   setupHook = ./setup-hook.sh;
 
   enableParallelBuilding = true;
diff --git a/pkgs/development/libraries/qt-5/5.4/qtbase/setup-hook.sh b/pkgs/development/libraries/qt-5/5.4/qtbase/setup-hook.sh
index c44cd2234d7..a9c4fbc855f 100644
--- a/pkgs/development/libraries/qt-5/5.4/qtbase/setup-hook.sh
+++ b/pkgs/development/libraries/qt-5/5.4/qtbase/setup-hook.sh
@@ -1,41 +1,3 @@
-if [[ -z "$QMAKE" ]]; then
-
-_qtLinkDependencyDir() {
-    @lndir@/bin/lndir -silent "$1/$2" "$qtOut/$2"
-    if [[ -n "$NIX_QT_SUBMODULE" ]]; then
-        find "$1/$2" -printf "$2/%P\n" >> "$out/nix-support/qt-inputs"
-    fi
-}
-
-_qtLinkModule() {
-    if [ -d "$1/mkspecs" ]; then
-        # $1 is a Qt module
-        _qtLinkDependencyDir "$1" mkspecs
-
-        for dir in bin include lib share; do
-            if [ -d "$1/$dir" ]; then
-                _qtLinkDependencyDir "$1" "$dir"
-            fi
-        done
-    fi
-}
-
-_qtRmModules() {
-    cat "$out/nix-support/qt-inputs" | while read file; do
-      if [[ -h "$out/$file" ]]; then
-        rm "$out/$file"
-      fi
-    done
-
-    cat "$out/nix-support/qt-inputs" | while read file; do
-      if [[ -d "$out/$file" ]]; then
-        rmdir --ignore-fail-on-non-empty -p "$out/$file"
-      fi
-    done
-
-    rm "$out/nix-support/qt-inputs"
-}
-
 addToSearchPathOnceWithCustomDelimiter() {
     local delim="$1"
     local search="$2"
@@ -43,11 +5,14 @@ addToSearchPathOnceWithCustomDelimiter() {
     local dirs
     local exported
     IFS="$delim" read -a dirs <<< "${!search}"
-    for dir in ${dirs[@]}; do
-        if [ "z$dir" == "z$target" ]; then exported=1; fi
-    done
-    if [ -z $exported ]; then
-        eval "export ${search}=\"${!search}${!search:+$delim}$target\""
+    local canonical
+    if canonical=$(readlink -e "$target"); then
+        for dir in ${dirs[@]}; do
+            if [ "z$dir" == "z$canonical" ]; then exported=1; fi
+        done
+        if [ -z $exported ]; then
+            eval "export ${search}=\"${!search}${!search:+$delim}$canonical\""
+        fi
     fi
 }
 
@@ -63,6 +28,7 @@ _qtPropagateRuntimeDependencies() {
     for dir in "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports"; do
         if [ -d "$1/$dir" ]; then
             propagateOnce propagatedBuildInputs "$1"
+            propagateOnce propagatedUserEnvPkgs "$1"
             break
         fi
     done
@@ -71,63 +37,14 @@ _qtPropagateRuntimeDependencies() {
     addToSearchPathOnce QML2_IMPORT_PATH "$1/lib/qt5/qml"
 }
 
-_qtRmQmake() {
-    rm "$qtOut/bin/qmake" "$qtOut/bin/qt.conf"
-}
-
-_qtSetQmakePath() {
-    export PATH="$qtOut/bin${PATH:+:}$PATH"
-}
-
-_qtMultioutModuleDevs() {
-    # We cannot simply set these paths in configureFlags because libQtCore retains
-    # references to the paths it was built with.
-    moveToOutput "bin" "${!outputDev}"
-    moveToOutput "include" "${!outputDev}"
-
-    # The destination directory must exist or moveToOutput will do nothing
-    mkdir -p "${!outputDev}/share"
-    moveToOutput "share/doc" "${!outputDev}"
-}
+envHooks+=(_qtPropagateRuntimeDependencies)
 
 _qtMultioutDevs() {
     # This is necessary whether the package is a Qt module or not
     moveToOutput "mkspecs" "${!outputDev}"
 }
 
-qtOut=""
-if [[ -z "$NIX_QT_SUBMODULE" ]]; then
-    qtOut=`mktemp -d`
-else
-    qtOut=$out
-fi
-
-mkdir -p "$qtOut/bin" "$qtOut/mkspecs" "$qtOut/include" "$qtOut/nix-support" "$qtOut/lib" "$qtOut/share"
-
-cp "@dev@/bin/qmake" "$qtOut/bin"
-cat >"$qtOut/bin/qt.conf" <<EOF
-[Paths]
-Prefix = $qtOut
-Plugins = lib/qt5/plugins
-Imports = lib/qt5/imports
-Qml2Imports = lib/qt5/qml
-Documentation = share/doc/qt5
-EOF
-
-export QMAKE="$qtOut/bin/qmake"
-
-envHooks+=(_qtLinkModule _qtPropagateRuntimeDependencies)
-# Set PATH to find qmake first in a preConfigure hook
-# It must run after all the envHooks!
-preConfigureHooks+=(_qtSetQmakePath)
-
 preFixupHooks+=(_qtMultioutDevs)
-if [[ -n "$NIX_QT_SUBMODULE" ]]; then
-    postInstallHooks+=(_qtRmQmake _qtRmModules)
-    preFixupHooks+=(_qtMultioutModuleDevs)
-fi
-
-fi
 
 if [[ -z "$NIX_QT_PIC" ]]; then
     export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE${NIX_CFLAGS_COMPILE:+ }-fPIC"
diff --git a/pkgs/development/libraries/qt-5/5.4/qtmultimedia.nix b/pkgs/development/libraries/qt-5/5.4/qtmultimedia.nix
index 8db8fa5f4b9..9eb68ba6b5b 100644
--- a/pkgs/development/libraries/qt-5/5.4/qtmultimedia.nix
+++ b/pkgs/development/libraries/qt-5/5.4/qtmultimedia.nix
@@ -8,7 +8,7 @@ qtSubmodule {
   buildInputs = [
     pkgconfig alsaLib gstreamer gst-plugins-base libpulseaudio
   ];
-  configureFlags = "GST_VERSION=1.0";
+  qmakeFlags = [ "GST_VERSION=1.0" ];
   postFixup = ''
     fixQtModuleCMakeConfig "Multimedia"
     fixQtModuleCMakeConfig "MultimediaWidgets"
diff --git a/pkgs/development/libraries/qt-5/5.5/default.nix b/pkgs/development/libraries/qt-5/5.5/default.nix
index 955d57350c2..034e25662ea 100644
--- a/pkgs/development/libraries/qt-5/5.5/default.nix
+++ b/pkgs/development/libraries/qt-5/5.5/default.nix
@@ -42,12 +42,10 @@ let
       inherit src;
 
       propagatedBuildInputs = args.qtInputs ++ (args.propagatedBuildInputs or []);
-      nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ self.fixQtModuleCMakeConfig ];
+      nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ self.fixQtModuleCMakeConfig self.qmakeHook ];
 
       NIX_QT_SUBMODULE = args.NIX_QT_SUBMODULE or true;
-      dontAddPrefix = args.dontAddPrefix or true;
       dontFixLibtool = args.dontFixLibtool or true;
-      configureScript = args.configureScript or "qmake";
 
       outputs = args.outputs or [ "dev" "out" ];
       setOutputFlags = args.setOutputFlags or false;
@@ -115,6 +113,7 @@ let
 
       makeQtWrapper = makeSetupHook { deps = [ makeWrapper ]; } ./make-qt-wrapper.sh;
       fixQtModuleCMakeConfig = makeSetupHook { } ./fix-qt-module-cmake-config.sh;
+      qmakeHook = makeSetupHook { substitutions = { qt_dev = qtbase.dev; lndir = pkgs.xorg.lndir; }; } ./qmake-hook.sh;
 
     };
 
diff --git a/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh b/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh
index f29bbb73639..3b537430371 100644
--- a/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh
+++ b/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh
@@ -24,11 +24,15 @@ makeQtWrapper() {
         "$@"
 }
 
-# cannot use addToSearchPath because these directories may not exist yet
-export QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}${!outputLib}/lib/qt5/plugins"
-export QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}${!outputLib}/lib/qt5/imports"
-export QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}${!outputLib}/lib/qt5/qml"
-export XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS${XDG_CONFIG_DIRS:+:}${!outputLib}/etc/xdg"
-export XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}${!outputLib}/share"
-export NIX_WRAP_XDG_CONFIG_DIRS="$NIX_WRAP_XDG_CONFIG_DIRS${NIX_WRAP_XDG_CONFIG_DIRS:+:}${!outputLib}/etc/xdg"
-export NIX_WRAP_XDG_DATA_DIRS="$NIX_WRAP_XDG_DATA_DIRS${NIX_WRAP_XDG_DATA_DIRS:+:}${!outputLib}/share"
+_makeQtWrapperSetup() {
+    # cannot use addToSearchPath because these directories may not exist yet
+    export QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}${!outputLib}/lib/qt5/plugins"
+    export QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}${!outputLib}/lib/qt5/imports"
+    export QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}${!outputLib}/lib/qt5/qml"
+    export XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS${XDG_CONFIG_DIRS:+:}${!outputLib}/etc/xdg"
+    export XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}${!outputLib}/share"
+    export NIX_WRAP_XDG_CONFIG_DIRS="$NIX_WRAP_XDG_CONFIG_DIRS${NIX_WRAP_XDG_CONFIG_DIRS:+:}${!outputLib}/etc/xdg"
+    export NIX_WRAP_XDG_DATA_DIRS="$NIX_WRAP_XDG_DATA_DIRS${NIX_WRAP_XDG_DATA_DIRS:+:}${!outputLib}/share"
+}
+
+prePhases+=(_makeQtWrapperSetup)
diff --git a/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh b/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh
new file mode 100644
index 00000000000..f059c19e03b
--- /dev/null
+++ b/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh
@@ -0,0 +1,101 @@
+if [[ -z "$QMAKE" ]]; then
+
+_qtLinkDependencyDir() {
+    @lndir@/bin/lndir -silent "$1/$2" "$qtOut/$2"
+    if [ -n "$NIX_QT_SUBMODULE" ]; then
+        find "$1/$2" -printf "$2/%P\n" >> "$out/nix-support/qt-inputs"
+    fi
+}
+
+_qtLinkModule() {
+    if [ -d "$1/mkspecs" ]; then
+        # $1 is a Qt module
+        _qtLinkDependencyDir "$1" mkspecs
+
+        for dir in bin include lib share; do
+            if [ -d "$1/$dir" ]; then
+                _qtLinkDependencyDir "$1" "$dir"
+            fi
+        done
+    fi
+}
+
+_qtRmModules() {
+    cat "$out/nix-support/qt-inputs" | while read file; do
+      if [ -h "$out/$file" ]; then
+        rm "$out/$file"
+      fi
+    done
+
+    cat "$out/nix-support/qt-inputs" | while read file; do
+      if [ -d "$out/$file" ]; then
+        rmdir --ignore-fail-on-non-empty -p "$out/$file"
+      fi
+    done
+
+    rm "$out/nix-support/qt-inputs"
+}
+
+_qtRmQmake() {
+    rm "$qtOut/bin/qmake" "$qtOut/bin/qt.conf"
+}
+
+_qtSetQmakePath() {
+    export PATH="$qtOut/bin${PATH:+:}$PATH"
+}
+
+_qtMultioutModuleDevs() {
+    # We cannot simply set these paths in configureFlags because libQtCore retains
+    # references to the paths it was built with.
+    moveToOutput "bin" "${!outputDev}"
+    moveToOutput "include" "${!outputDev}"
+
+    # The destination directory must exist or moveToOutput will do nothing
+    mkdir -p "${!outputDev}/share"
+    moveToOutput "share/doc" "${!outputDev}"
+}
+
+qmakeConfigurePhase() {
+    runHook preConfigure
+
+    qmake PREFIX=$out $qmakeFlags
+
+    runHook postConfigure
+}
+
+qtOut=""
+if [[ -z "$NIX_QT_SUBMODULE" ]]; then
+    qtOut=`mktemp -d`
+else
+    qtOut=$out
+fi
+
+mkdir -p "$qtOut/bin" "$qtOut/mkspecs" "$qtOut/include" "$qtOut/nix-support" "$qtOut/lib" "$qtOut/share"
+
+cp "@qt_dev@/bin/qmake" "$qtOut/bin"
+cat >"$qtOut/bin/qt.conf" <<EOF
+[Paths]
+Prefix = $qtOut
+Plugins = lib/qt5/plugins
+Imports = lib/qt5/imports
+Qml2Imports = lib/qt5/qml
+Documentation = share/doc/qt5
+EOF
+
+export QMAKE="$qtOut/bin/qmake"
+
+envHooks+=(_qtLinkModule)
+# Set PATH to find qmake first in a preConfigure hook
+# It must run after all the envHooks!
+postHooks+=(_qtSetQmakePath)
+
+if [ -z "$dontUseQmakeConfigure" -a -z "$configurePhase" ]; then
+    configurePhase=qmakeConfigurePhase
+fi
+
+if [ -n "$NIX_QT_SUBMODULE" ]; then
+    postInstallHooks+=(_qtRmQmake _qtRmModules)
+    preFixupHooks+=(_qtMultioutModuleDevs)
+fi
+
+fi
diff --git a/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix
index 35410d55e66..7d68116d716 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix
@@ -121,11 +121,6 @@ stdenv.mkDerivation {
         # The destination directory must exist or moveToOutput will do nothing
         mkdir -p "$dev/share"
         moveToOutput "share/doc" "$dev"
-
-        mkdir -p "$dev/lib"
-        lndir -silent "$out/lib" "$dev/lib"
-        if [[ -h "$dev/lib/cmake" ]]; then rm "$dev/lib/cmake"; fi
-        if [[ -h "$dev/lib/pkgconfig" ]]; then rm "$dev/lib/pkgconfig"; fi
     }
     preFixupHooks+=(_multioutQtDevs)
 
@@ -259,7 +254,6 @@ stdenv.mkDerivation {
       fixQtModuleCMakeConfig "Xml"
     '';
 
-  inherit lndir;
   setupHook = ./setup-hook.sh;
 
   enableParallelBuilding = true;
diff --git a/pkgs/development/libraries/qt-5/5.5/qtbase/nix-profiles-library-paths.patch b/pkgs/development/libraries/qt-5/5.5/qtbase/nix-profiles-library-paths.patch
index d20767a38e5..b4561db6e77 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtbase/nix-profiles-library-paths.patch
+++ b/pkgs/development/libraries/qt-5/5.5/qtbase/nix-profiles-library-paths.patch
@@ -2,24 +2,18 @@ Index: qt-everywhere-opensource-src-5.5.1/qtbase/src/corelib/kernel/qcoreapplica
 ===================================================================
 --- qt-everywhere-opensource-src-5.5.1.orig/qtbase/src/corelib/kernel/qcoreapplication.cpp
 +++ qt-everywhere-opensource-src-5.5.1/qtbase/src/corelib/kernel/qcoreapplication.cpp
-@@ -2498,6 +2498,22 @@ QStringList QCoreApplication::libraryPat
+@@ -2498,6 +2498,16 @@ QStringList QCoreApplication::libraryPat
                  }
              }
          }
 +        qunsetenv("QT_PLUGIN_PATH"); // do not propagate to child processes
 +
 +        // Add library paths derived from NIX_PROFILES.
-+        const QByteArray nixProfilesEnv = qgetenv("NIX_PROFILES");
-+        if (!nixProfilesEnv.isEmpty()) {
-+            QLatin1Char pathSep(' ');
-+            QStringList paths = QFile::decodeName(nixProfilesEnv).split(pathSep, QString::SkipEmptyParts);
-+            for (QStringList::iterator it = paths.begin(); it != paths.end(); ++it) {
-+                it->append("/lib/qt5/plugins");
-+                QString canonicalPath = QDir(*it).canonicalPath();
-+                if (!canonicalPath.isEmpty()
-+                    && !app_libpaths->contains(canonicalPath)) {
-+                    app_libpaths->append(canonicalPath);
-+                }
++        const QByteArrayList profiles = qgetenv("NIX_PROFILES").split(' ');
++        const QString plugindir = QString::fromLatin1("/lib/qt5/plugins");
++        Q_FOREACH (const QByteArray &profile, profiles) {
++            if (!profile.isEmpty()) {
++                app_libpaths->append(QFile::decodeName(profile) + plugindir);
 +            }
 +        }
      }
diff --git a/pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh b/pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh
index 9cf1ef9ccb6..a9c4fbc855f 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh
+++ b/pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh
@@ -1,41 +1,3 @@
-if [[ -z "$QMAKE" ]]; then
-
-_qtLinkDependencyDir() {
-    @lndir@/bin/lndir -silent "$1/$2" "$qtOut/$2"
-    if [[ -n "$NIX_QT_SUBMODULE" ]]; then
-        find "$1/$2" -printf "$2/%P\n" >> "$out/nix-support/qt-inputs"
-    fi
-}
-
-_qtLinkModule() {
-    if [ -d "$1/mkspecs" ]; then
-        # $1 is a Qt module
-        _qtLinkDependencyDir "$1" mkspecs
-
-        for dir in bin include lib share; do
-            if [ -d "$1/$dir" ]; then
-                _qtLinkDependencyDir "$1" "$dir"
-            fi
-        done
-    fi
-}
-
-_qtRmModules() {
-    cat "$out/nix-support/qt-inputs" | while read file; do
-      if [[ -h "$out/$file" ]]; then
-        rm "$out/$file"
-      fi
-    done
-
-    cat "$out/nix-support/qt-inputs" | while read file; do
-      if [[ -d "$out/$file" ]]; then
-        rmdir --ignore-fail-on-non-empty -p "$out/$file"
-      fi
-    done
-
-    rm "$out/nix-support/qt-inputs"
-}
-
 addToSearchPathOnceWithCustomDelimiter() {
     local delim="$1"
     local search="$2"
@@ -43,11 +5,14 @@ addToSearchPathOnceWithCustomDelimiter() {
     local dirs
     local exported
     IFS="$delim" read -a dirs <<< "${!search}"
-    for dir in ${dirs[@]}; do
-        if [ "z$dir" == "z$target" ]; then exported=1; fi
-    done
-    if [ -z $exported ]; then
-        eval "export ${search}=\"${!search}${!search:+$delim}$target\""
+    local canonical
+    if canonical=$(readlink -e "$target"); then
+        for dir in ${dirs[@]}; do
+            if [ "z$dir" == "z$canonical" ]; then exported=1; fi
+        done
+        if [ -z $exported ]; then
+            eval "export ${search}=\"${!search}${!search:+$delim}$canonical\""
+        fi
     fi
 }
 
@@ -72,63 +37,14 @@ _qtPropagateRuntimeDependencies() {
     addToSearchPathOnce QML2_IMPORT_PATH "$1/lib/qt5/qml"
 }
 
-_qtRmQmake() {
-    rm "$qtOut/bin/qmake" "$qtOut/bin/qt.conf"
-}
-
-_qtSetQmakePath() {
-    export PATH="$qtOut/bin${PATH:+:}$PATH"
-}
-
-_qtMultioutModuleDevs() {
-    # We cannot simply set these paths in configureFlags because libQtCore retains
-    # references to the paths it was built with.
-    moveToOutput "bin" "${!outputDev}"
-    moveToOutput "include" "${!outputDev}"
-
-    # The destination directory must exist or moveToOutput will do nothing
-    mkdir -p "${!outputDev}/share"
-    moveToOutput "share/doc" "${!outputDev}"
-}
+envHooks+=(_qtPropagateRuntimeDependencies)
 
 _qtMultioutDevs() {
     # This is necessary whether the package is a Qt module or not
     moveToOutput "mkspecs" "${!outputDev}"
 }
 
-qtOut=""
-if [[ -z "$NIX_QT_SUBMODULE" ]]; then
-    qtOut=`mktemp -d`
-else
-    qtOut=$out
-fi
-
-mkdir -p "$qtOut/bin" "$qtOut/mkspecs" "$qtOut/include" "$qtOut/nix-support" "$qtOut/lib" "$qtOut/share"
-
-cp "@dev@/bin/qmake" "$qtOut/bin"
-cat >"$qtOut/bin/qt.conf" <<EOF
-[Paths]
-Prefix = $qtOut
-Plugins = lib/qt5/plugins
-Imports = lib/qt5/imports
-Qml2Imports = lib/qt5/qml
-Documentation = share/doc/qt5
-EOF
-
-export QMAKE="$qtOut/bin/qmake"
-
-envHooks+=(_qtLinkModule _qtPropagateRuntimeDependencies)
-# Set PATH to find qmake first in a preConfigure hook
-# It must run after all the envHooks!
-preConfigureHooks+=(_qtSetQmakePath)
-
 preFixupHooks+=(_qtMultioutDevs)
-if [[ -n "$NIX_QT_SUBMODULE" ]]; then
-    postInstallHooks+=(_qtRmQmake _qtRmModules)
-    preFixupHooks+=(_qtMultioutModuleDevs)
-fi
-
-fi
 
 if [[ -z "$NIX_QT_PIC" ]]; then
     export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE${NIX_CFLAGS_COMPILE:+ }-fPIC"
diff --git a/pkgs/development/libraries/qt-5/5.5/qtdeclarative/nix-profiles-import-paths.patch b/pkgs/development/libraries/qt-5/5.5/qtdeclarative/nix-profiles-import-paths.patch
index e69de29bb2d..06b244b974f 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtdeclarative/nix-profiles-import-paths.patch
+++ b/pkgs/development/libraries/qt-5/5.5/qtdeclarative/nix-profiles-import-paths.patch
@@ -0,0 +1,20 @@
+Index: qtdeclarative-opensource-src-5.5.1/src/qml/qml/qqmlimport.cpp
+===================================================================
+--- qtdeclarative-opensource-src-5.5.1.orig/src/qml/qml/qqmlimport.cpp
++++ qtdeclarative-opensource-src-5.5.1/src/qml/qml/qqmlimport.cpp
+@@ -1549,6 +1549,15 @@ QQmlImportDatabase::QQmlImportDatabase(Q
+     QString installImportsPath =  QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath);
+     addImportPath(installImportsPath);
+ 
++    // Add library paths derived from NIX_PROFILES.
++    const QByteArrayList profiles = qgetenv("NIX_PROFILES").split(' ');
++    const QString qmldir = QString::fromLatin1("/lib/qt5/qml");
++    Q_FOREACH (const QByteArray &profile, profiles) {
++        if (!profile.isEmpty()) {
++            addImportPath(QFile::decodeName(profile) + qmldir);
++        }
++    }
++
+     // env import paths
+     QByteArray envImportPath = qgetenv("QML2_IMPORT_PATH");
+     if (!envImportPath.isEmpty()) {
diff --git a/pkgs/development/libraries/qt-5/5.5/qtmultimedia.nix b/pkgs/development/libraries/qt-5/5.5/qtmultimedia.nix
index 8db8fa5f4b9..9eb68ba6b5b 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtmultimedia.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtmultimedia.nix
@@ -8,7 +8,7 @@ qtSubmodule {
   buildInputs = [
     pkgconfig alsaLib gstreamer gst-plugins-base libpulseaudio
   ];
-  configureFlags = "GST_VERSION=1.0";
+  qmakeFlags = [ "GST_VERSION=1.0" ];
   postFixup = ''
     fixQtModuleCMakeConfig "Multimedia"
     fixQtModuleCMakeConfig "MultimediaWidgets"
diff --git a/pkgs/development/libraries/qt-5/5.5/qtquick1/nix-profiles-import-paths.patch b/pkgs/development/libraries/qt-5/5.5/qtquick1/nix-profiles-import-paths.patch
index e69de29bb2d..c01061d3378 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtquick1/nix-profiles-import-paths.patch
+++ b/pkgs/development/libraries/qt-5/5.5/qtquick1/nix-profiles-import-paths.patch
@@ -0,0 +1,20 @@
+Index: qtquick1-opensource-src-5.5.1/src/declarative/qml/qdeclarativeimport.cpp
+===================================================================
+--- qtquick1-opensource-src-5.5.1.orig/src/declarative/qml/qdeclarativeimport.cpp
++++ qtquick1-opensource-src-5.5.1/src/declarative/qml/qdeclarativeimport.cpp
+@@ -725,6 +725,15 @@ QDeclarativeImportDatabase::QDeclarative
+ 
+     addImportPath(installImportsPath);
+ 
++    // Add library paths derived from NIX_PROFILES.
++    const QByteArrayList profiles = qgetenv("NIX_PROFILES").split(' ');
++    const QString importdir = QString::fromLatin1("/lib/qt5/imports");
++    Q_FOREACH (const QByteArray &profile, profiles) {
++        if (!profile.isEmpty()) {
++            addImportPath(QFile::decodeName(profile) + importdir);
++        }
++    }
++
+     // env import paths
+     QByteArray envImportPath = qgetenv("QML_IMPORT_PATH");
+     if (!envImportPath.isEmpty()) {
diff --git a/pkgs/development/libraries/qtscriptgenerator/default.nix b/pkgs/development/libraries/qtscriptgenerator/default.nix
index 499c6f18453..3221fec4b4b 100644
--- a/pkgs/development/libraries/qtscriptgenerator/default.nix
+++ b/pkgs/development/libraries/qtscriptgenerator/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, qt4}:
+{ stdenv, fetchurl, qt4 }:
 
 stdenv.mkDerivation {
   name = "qtscriptgenerator-0.1.0";
diff --git a/pkgs/development/libraries/quazip/default.nix b/pkgs/development/libraries/quazip/default.nix
index 7ef1a9212a1..a1eb2ad7084 100644
--- a/pkgs/development/libraries/quazip/default.nix
+++ b/pkgs/development/libraries/quazip/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, zip, zlib, qt }:
+{ fetchurl, stdenv, zip, zlib, qt, qmakeHook }:
 
 stdenv.mkDerivation rec {
   name = "quazip-0.7.1";
@@ -8,15 +8,10 @@ stdenv.mkDerivation rec {
     sha256 = "1pijy6zn8kdx9m6wrckid24vkgp250hklbpmgrpixiam6l889jbq";
   };
 
-  configurePhase = ''
-    runHook preConfigure
-    cd quazip && qmake quazip.pro
-    runHook postConfigure
-  '';
-
-  installFlags = "INSTALL_ROOT=$(out)";
+  preConfigure = "cd quazip";
 
   buildInputs = [ zlib qt ];
+  nativeBuildInputs = [ qmakeHook ];
 
   meta = {
     description = "Provides access to ZIP archives from Qt programs";
diff --git a/pkgs/development/libraries/qwt/6.nix b/pkgs/development/libraries/qwt/6.nix
index a99573ca5e4..cd940b818e9 100644
--- a/pkgs/development/libraries/qwt/6.nix
+++ b/pkgs/development/libraries/qwt/6.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, qtbase, qtsvg, qttools }:
+{ stdenv, fetchurl, qtbase, qtsvg, qttools, qmakeHook }:
 
 stdenv.mkDerivation rec {
   name = "qwt-6.1.2";
@@ -9,16 +9,13 @@ stdenv.mkDerivation rec {
   };
 
   propagatedBuildInputs = [ qtbase qtsvg qttools ];
+  nativeBuildInputs = [ qmakeHook ];
 
   postPatch = ''
     sed -e "s|QWT_INSTALL_PREFIX.*=.*|QWT_INSTALL_PREFIX = $out|g" -i qwtconfig.pri
   '';
 
-  configurePhase = ''
-    runHook preConfigure
-    qmake -after doc.path=$out/share/doc/${name} -r
-    runHook postConfigure
-  '';
+  qmakeFlags = [ "-after doc.path=$out/share/doc/${name}" ];
 
   meta = with stdenv.lib; {
     description = "Qt widgets for technical applications";
diff --git a/pkgs/development/libraries/qwt/default.nix b/pkgs/development/libraries/qwt/default.nix
index 451784261f8..da5769e92cd 100644
--- a/pkgs/development/libraries/qwt/default.nix
+++ b/pkgs/development/libraries/qwt/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, qt4 }:
+{ stdenv, fetchurl, qt4, qmake4Hook }:
 
 stdenv.mkDerivation rec {
   name = "qwt-5.2.3";
@@ -9,16 +9,15 @@ stdenv.mkDerivation rec {
   };
 
   propagatedBuildInputs = [ qt4 ];
+  nativeBuildInputs = [ qmake4Hook ];
 
   postPatch = ''
     sed -e "s@\$\$\[QT_INSTALL_PLUGINS\]@$out/lib/qt4/plugins@" -i designer/designer.pro
     sed -e "s|INSTALLBASE.*=.*|INSTALLBASE = $out|g" -i qwtconfig.pri
   '';
 
-  configurePhase = ''
-    runHook preConfigure
-    qmake INSTALLBASE=$out -after doc.path=$out/share/doc/${name} -r
-    runHook postConfigure
+  preConfigure = ''
+    qmakeFlags="$qmakeFlags INSTALLBASE=$out -after doc.path=$out/share/doc/${name}"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/signon/default.nix b/pkgs/development/libraries/signon/default.nix
index 2da555635b2..f2f7de5b712 100644
--- a/pkgs/development/libraries/signon/default.nix
+++ b/pkgs/development/libraries/signon/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, doxygen, qtbase }:
+{ stdenv, fetchurl, doxygen, qtbase, qmakeHook }:
 
 stdenv.mkDerivation rec {
   name = "signon-${version}";
@@ -9,12 +9,10 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [ qtbase ];
-  nativeBuildInputs = [ doxygen ];
+  nativeBuildInputs = [ doxygen qmakeHook ];
 
-  configurePhase = ''
-    runHook preConfigure
-    qmake PREFIX=$out LIBDIR=$out/lib CMAKE_CONFIG_PATH=$out/lib/cmake/SignOnQt5
-    runHook postConfigure
+  preConfigure = ''
+    qmakeFlags="$qmakeFlags LIBDIR=$out/lib CMAKE_CONFIG_PATH=$out/lib/cmake/SignOnQt5"
   '';
 
 }
diff --git a/pkgs/development/libraries/speechd/default.nix b/pkgs/development/libraries/speechd/default.nix
index 94489e992a6..1a943be0fc2 100644
--- a/pkgs/development/libraries/speechd/default.nix
+++ b/pkgs/development/libraries/speechd/default.nix
@@ -1,22 +1,39 @@
-{ fetchurl, stdenv, dotconf, glib, pkgconfig }:
+{ fetchurl, lib, stdenv, intltool, libtool, pkgconfig, glib, dotconf, libsndfile
+, libao, python3Packages
+, withEspeak ? false, espeak
+, withPico ? true, svox
+}:
 
 stdenv.mkDerivation rec {
-  name = "speech-dispatcher-" + version;
-  version = "0.7.1";
+  name = "speech-dispatcher-${version}";
+  version = "0.8.3";
 
   src = fetchurl {
     url = "http://www.freebsoft.org/pub/projects/speechd/${name}.tar.gz";
-    sha256 = "0laag72iw03545zggdzcr860b8q7w1vrjr3csd2ldps7jhlwzad8";
+    sha256 = "0kqy7z4l59n2anc7xn588w4rkacig1hajx8c53qrh90ypar978ln";
   };
 
-  buildInputs = [ dotconf glib pkgconfig ];
+  buildInputs = [ intltool libtool glib dotconf libsndfile libao python3Packages.python ]
+             ++ lib.optional withEspeak espeak
+             ++ lib.optional withPico svox;
+  nativeBuildInputs = [ pkgconfig python3Packages.wrapPython ];
 
   hardeningDisable = [ "format" ];
 
-  meta = {
-    description = "Common interface to speech synthesis";
+  pythonPath = with python3Packages; [ pyxdg ];
+
+  postPatch = lib.optionalString withPico ''
+    sed -i 's,/usr/share/pico/lang/,${svox}/share/pico/lang/,g' src/modules/pico.c
+  '';
 
+  postInstall = ''
+    wrapPythonPrograms
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Common interface to speech synthesis";
     homepage = http://www.freebsoft.org/speechd;
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/sqlite/default.nix b/pkgs/development/libraries/sqlite/default.nix
index feb5e5d3040..b34e2f648ec 100644
--- a/pkgs/development/libraries/sqlite/default.nix
+++ b/pkgs/development/libraries/sqlite/default.nix
@@ -3,11 +3,11 @@
 assert interactive -> readline != null && ncurses != null;
 
 stdenv.mkDerivation {
-  name = "sqlite-3.11.1";
+  name = "sqlite-3.12.2";
 
   src = fetchurl {
-    url = "http://sqlite.org/2016/sqlite-autoconf-3110100.tar.gz";
-    sha1 = "c4b4dcd735a4daf5a2e2bb90f374484c8d4dad29";
+    url = "http://sqlite.org/2016/sqlite-autoconf-3120200.tar.gz";
+    sha1 = "b43c2e7238e54c50b95fbbd85c48792f4f39af8c";
   };
 
   outputs = [ "dev" "out" "bin" ];
diff --git a/pkgs/development/libraries/sqlite/sqlite3_analyzer.nix b/pkgs/development/libraries/sqlite/sqlite3_analyzer.nix
index 4e5d360aea0..d3e1a6dc17e 100644
--- a/pkgs/development/libraries/sqlite/sqlite3_analyzer.nix
+++ b/pkgs/development/libraries/sqlite/sqlite3_analyzer.nix
@@ -1,7 +1,7 @@
 { lib, stdenv, fetchurl, unzip, tcl }:
 
 stdenv.mkDerivation {
-  name = "sqlite3_analzer-3.8.10.1";
+  name = "sqlite3_analyzer-3.8.10.1";
 
   src = fetchurl {
     url = "https://www.sqlite.org/2015/sqlite-src-3081001.zip";
diff --git a/pkgs/development/libraries/telepathy/glib/default.nix b/pkgs/development/libraries/telepathy/glib/default.nix
index 9167ecc76d4..bb187ce1202 100644
--- a/pkgs/development/libraries/telepathy/glib/default.nix
+++ b/pkgs/development/libraries/telepathy/glib/default.nix
@@ -2,11 +2,11 @@
 , gobjectIntrospection, valaSupport ? true, vala }:
 
 stdenv.mkDerivation rec {
-  name = "telepathy-glib-0.24.0";
+  name = "telepathy-glib-0.24.1";
 
   src = fetchurl {
     url = "${meta.homepage}/releases/telepathy-glib/${name}.tar.gz";
-    sha256 = "ae0002134991217f42e503c43dea7817853afc18863b913744d51ffa029818cf";
+    sha256 = "1symyzbjmxvksn2ifdkk50lafjm2llf2sbmky062gq2pz3cg23cy";
   };
 
   configureFlags = stdenv.lib.optional valaSupport "--enable-vala-bindings";
diff --git a/pkgs/development/libraries/tsocks/default.nix b/pkgs/development/libraries/tsocks/default.nix
index 778762f1bf8..149b2260792 100644
--- a/pkgs/development/libraries/tsocks/default.nix
+++ b/pkgs/development/libraries/tsocks/default.nix
@@ -1,4 +1,5 @@
 { stdenv, fetchurl }:
+
 stdenv.mkDerivation rec {
   name = "tsocks-${version}";
   version = "1.8beta5";
@@ -16,11 +17,19 @@ stdenv.mkDerivation rec {
     export configureFlags="$configureFlags --libdir=$out/lib"
   '';
 
+  preBuild = ''
+    # We don't need the saveme binary, it is in fact never stored and we're
+    # never injecting stuff into ld.so.preload anyway
+    sed -i \
+      -e "s,TARGETS=\(.*\)..SAVE.\(.*\),TARGETS=\1\2," \
+      -e "/SAVE/d" Makefile
+  '';
+
   meta = with stdenv.lib; {
     description = "Transparent SOCKS v4 proxying library";
     homepage = http://tsocks.sourceforge.net/;
     license = stdenv.lib.licenses.gpl2;
     maintainers = with maintainers; [ edwtjo phreedom ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/development/libraries/v8/3.16.14.nix b/pkgs/development/libraries/v8/3.16.14.nix
index c79357cd907..d9addab3030 100644
--- a/pkgs/development/libraries/v8/3.16.14.nix
+++ b/pkgs/development/libraries/v8/3.16.14.nix
@@ -3,7 +3,10 @@
 assert readline != null;
 
 let
-  arch = if stdenv.is64bit then "x64" else "ia32";
+  arch = if stdenv.isArm
+    then (if stdenv.is64bit then "arm64" else "arm")
+    else (if stdenv.is64bit then "x64" else "ia32");
+  armHardFloat = stdenv.isArm && (stdenv.platform.gcc.float or null) == "hard";
 in
 
 stdenv.mkDerivation rec {
@@ -34,6 +37,7 @@ stdenv.mkDerivation rec {
         -Dconsole=readline \
         -Dcomponent=shared_library \
         -Dv8_target_arch=${arch} \
+        ${lib.optionalString armHardFloat "-Dv8_use_arm_eabi_hardfloat=true"} \
         --depth=. -Ibuild/standalone.gypi \
         build/all.gyp
   '';
diff --git a/pkgs/development/libraries/v8/4.5.nix b/pkgs/development/libraries/v8/4.5.nix
index 50fc2b7b0d9..065b656147d 100644
--- a/pkgs/development/libraries/v8/4.5.nix
+++ b/pkgs/development/libraries/v8/4.5.nix
@@ -122,8 +122,8 @@ stdenv.mkDerivation rec {
     install -vD out/Release/mksnapshot "$out/bin/mksnapshot"
     ${if stdenv.isDarwin then ''
     install -vD out/Release/lib.target/libv8.dylib "$out/lib/libv8.dylib"
-    install_name_tool -change /usr/local/lib/libv8.dylib $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc}/lib/libgcc_s.1.dylib $out/bin/d8
-    install_name_tool -id $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc}/lib/libgcc_s.1.dylib $out/lib/libv8.dylib
+    install_name_tool -change /usr/local/lib/libv8.dylib $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc.lib}/lib/libgcc_s.1.dylib $out/bin/d8
+    install_name_tool -id $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc.lib}/lib/libgcc_s.1.dylib $out/lib/libv8.dylib
     '' else ''
     install -vD out/Release/lib.target/libv8.so "$out/lib/libv8.so"
     ''}
diff --git a/pkgs/development/libraries/v8/generic.nix b/pkgs/development/libraries/v8/generic.nix
index 349b35549b6..d603fda3225 100644
--- a/pkgs/development/libraries/v8/generic.nix
+++ b/pkgs/development/libraries/v8/generic.nix
@@ -67,8 +67,8 @@ stdenv.mkDerivation rec {
   '';
 
   postFixup = if stdenv.isDarwin then ''
-    install_name_tool -change /usr/local/lib/libv8.dylib $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc}/lib/libgcc_s.1.dylib $out/bin/d8
-    install_name_tool -id $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc}/lib/libgcc_s.1.dylib $out/lib/libv8.dylib
+    install_name_tool -change /usr/local/lib/libv8.dylib $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc.lib}/lib/libgcc_s.1.dylib $out/bin/d8
+    install_name_tool -id $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc.lib}/lib/libgcc_s.1.dylib $out/lib/libv8.dylib
   '' else null;
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/libraries/xalanc/default.nix b/pkgs/development/libraries/xalanc/default.nix
new file mode 100644
index 00000000000..8284fd7707f
--- /dev/null
+++ b/pkgs/development/libraries/xalanc/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, xercesc }:
+
+stdenv.mkDerivation rec {
+  name = "xalan-c-${version}";
+  version = "1.11";
+
+  src = fetchurl {
+    url = "http://www.eu.apache.org/dist/xalan/xalan-c/sources/xalan_c-${version}-src.tar.gz";
+    sha256 = "0a3a2b15vpacnqgpp6fiy1pwyc8q6ywzvyb5445f6wixfdspypjg";
+  };
+
+  configurePhase = ''
+    export XALANCROOT=`pwd`/c
+    cd `pwd`/c
+    mkdir -p $out/usr
+    ./runConfigure -p linux -c gcc -x g++ -P$out/usr
+  '';
+
+  buildInputs = [ xercesc ];
+
+  meta = {
+    homepage = http://xalan.apache.org/;
+    description = "A XSLT processor for transforming XML documents";
+    license = stdenv.lib.licenses.asl20;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.jagajaga ];
+  };
+}
diff --git a/pkgs/development/libraries/xml-security-c/default.nix b/pkgs/development/libraries/xml-security-c/default.nix
new file mode 100644
index 00000000000..1932acbd7ed
--- /dev/null
+++ b/pkgs/development/libraries/xml-security-c/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, xalanc, xercesc, openssl, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  name = "xml-security-c-${version}";
+  version = "1.7.3";
+
+  src = fetchurl {
+    url = "http://www.apache.org/dist/santuario/c-library/${name}.tar.gz";
+    sha256 = "e5226e7319d44f6fd9147a13fb853f5c711b9e75bf60ec273a0ef8a190592583";
+  };
+
+  patchPhase = ''
+    mkdir -p xsec/yes/lib
+    sed -i -e 's/-O2 -DNDEBUG/-DNDEBUG/g' configure
+  '';
+
+  configurePhase = ''
+    ./configure --prefix=$out \
+                --with-openssl \
+                --with-xerces \
+                --with-xalan \
+                --disable-static
+  '';
+
+  buildInputs = [ xalanc xercesc openssl pkgconfig ];
+
+  meta = {
+    homepage = http://santuario.apache.org/;
+    description = "C++ Implementation of W3C security standards for XML";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.jagajaga ];
+  };
+}
diff --git a/pkgs/development/libraries/xsd/default.nix b/pkgs/development/libraries/xsd/default.nix
new file mode 100644
index 00000000000..bef2e46e073
--- /dev/null
+++ b/pkgs/development/libraries/xsd/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, xercesc }:
+
+let
+  fixed_paths = ''LDFLAGS="-L${xercesc}/lib" CPPFLAGS="-I${xercesc}/include"'';
+in
+stdenv.mkDerivation rec {
+  name = "xsd-${version}";
+  version = "4.0.0";
+
+  src = fetchurl {
+    url = "http://codesynthesis.com/download/xsd/4.0/xsd-4.0.0+dep.tar.bz2";
+    sha256 = "05wqhmd5cd4pdky8i8qysnh96d2h16ly8r73whmbxkajiyf2m9gc";
+  };
+
+  patches = [ ./xsdcxx.patch ];
+
+  configurePhase = ''
+    patchShebangs .
+  '';
+
+  buildPhase = ''
+    make ${fixed_paths}
+  '';
+
+  buildInputs = [ xercesc ];
+
+  installPhase = ''
+    make ${fixed_paths} install_prefix="$out" install
+  '';
+
+  meta = {
+    homepage = http://www.codesynthesis.com/products/xsd;
+    description = "An open-source, cross-platform W3C XML Schema to C++ data binding compiler";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.jagajaga ];
+  };
+}
diff --git a/pkgs/development/libraries/xsd/xsdcxx.patch b/pkgs/development/libraries/xsd/xsdcxx.patch
new file mode 100644
index 00000000000..88a893c6e60
--- /dev/null
+++ b/pkgs/development/libraries/xsd/xsdcxx.patch
@@ -0,0 +1,126 @@
+--- xsd-4.0.0+dep/xsd/doc/xsd.1~	2014-09-14 12:25:36.862267587 +0000
++++ xsd-4.0.0+dep/xsd/doc/xsd.1	2014-09-14 12:28:25.728229892 +0000
+@@ -1,16 +1,16 @@
+ .\" Process this file with
+-.\" groff -man -Tascii xsd.1
++.\" groff -man -Tascii xsdcxx.1
+ .\"
+ .TH XSD 1 "July 2014" "XSD 4.0.0"
+ .SH NAME
+-xsd \- W3C XML Schema to C++ Compiler
++xsdcxx \- W3C XML Schema to C++ Compiler
+ .\"
+ .\"
+ .\"
+ .\"--------------------------------------------------------------------
+ .SH SYNOPSIS
+ .\"--------------------------------------------------------------------
+-.B xsd
++.B xsdcxx
+ .I command
+ .B [
+ .I options
+@@ -20,19 +20,19 @@
+ .I file
+ .B ...]
+ .in
+-.B xsd help
++.B xsdcxx help
+ .B [
+ .I command
+ .B ]
+ .in
+-.B xsd version
++.B xsdcxx version
+ .\"
+ .\"
+ .\"
+ .\"--------------------------------------------------------------------
+ .SH DESCRIPTION
+ .\"--------------------------------------------------------------------
+-.B xsd
++.B xsdcxx
+ generates vocabulary-specific, statically-typed C++ mapping from W3C XML
+ Schema definitions. Particular mapping to produce is selected by a
+ .IR command .
+@@ -96,7 +96,7 @@
+ .PP
+ .RS
+ .RS 3
+-.B xsd help
++.B xsdcxx help
+ .I command
+ .RE
+ .PP
+@@ -206,7 +206,7 @@
+ \fIfilename\fP \fInamespace\fP
+ 
+ For example, if you have file \fBhello\.xsd\fP with namespace
+-\fBhttp://example\.com/hello\fP and you run \fBxsd\fP on this file, then the
++\fBhttp://example\.com/hello\fP and you run \fBxsdcxx\fP on this file, then the
+ string in question will be:
+ 
+ \fBhello\.xsd\. http://example\.com/hello\fP
+@@ -1632,7 +1632,7 @@
+ .\"
+ .SH DIAGNOSTICS
+ If the input file is not a valid W3C XML Schema definition,
+-.B xsd
++.B xsdcxx
+ will issue diagnostic messages to
+ .B STDERR
+ and exit with non-zero exit code.
+--- xsd-4.0.0+dep/xsd/doc/xsd.xhtml~	2014-09-14 12:28:37.731513138 +0000
++++ xsd-4.0.0+dep/xsd/doc/xsd.xhtml	2014-09-14 12:30:11.277789610 +0000
+@@ -50,19 +50,19 @@
+ 
+   <h1>NAME</h1>
+ 
+-  <p>xsd - W3C XML Schema to C++ Compiler</p>
++  <p>xsdcxx - W3C XML Schema to C++ Compiler</p>
+ 
+   <h1>SYNOPSIS</h1>
+ 
+   <dl id="synopsis">
+-    <dt><code><b>xsd</b> <i>command</i> [<i>options</i>] <i>file</i> [<i>file</i> ...]</code></dt>
+-    <dt><code><b>xsd help</b> [<i>command</i>]</code></dt>
+-    <dt><code><b>xsd version</b></code></dt>
++    <dt><code><b>xsdcxx</b> <i>command</i> [<i>options</i>] <i>file</i> [<i>file</i> ...]</code></dt>
++    <dt><code><b>xsdcxx help</b> [<i>command</i>]</code></dt>
++    <dt><code><b>xsdcxx version</b></code></dt>
+   </dl>
+ 
+   <h1>DESCRIPTION</h1>
+ 
+-  <p><code><b>xsd</b></code> generates vocabulary-specific, statically-typed
++  <p><code><b>xsdcxx</b></code> generates vocabulary-specific, statically-typed
+   C++ mapping from W3C XML Schema definitions. Particular mapping to
+   produce is selected by a <code><i>command</i></code>. Each mapping has
+   a number of mapping-specific <code><i>options</i></code> that should
+@@ -104,7 +104,7 @@
+ 
+     <dt><code><b>help</b></code></dt>
+     <dd>Print usage information and exit. Use
+-      <p><code><b>xsd help</b> <i>command</i></code></p>
++      <p><code><b>xsdcxx help</b> <i>command</i></code></p>
+       for command-specific help.
+     </dd>
+ 
+@@ -219,7 +219,7 @@
+ 
+   <p>For example, if you have file <code><b>hello.xsd</b></code> with
+   namespace <code><b>http://example.com/hello</b></code> and you run
+-  <code><b>xsd</b></code> on this file, then the string in question will
++  <code><b>xsdcxx</b></code> on this file, then the string in question will
+   be:</p>
+ 
+   <p><code><b>hello.xsd. http://example.com/hello</b></code></p>
+@@ -1530,7 +1530,7 @@
+   <h1>DIAGNOSTICS</h1>
+ 
+   <p>If the input file is not a valid W3C XML Schema definition,
+-    <code><b>xsd</b></code> will issue diagnostic messages to STDERR
++    <code><b>xsdcxx</b></code> will issue diagnostic messages to STDERR
+     and exit with non-zero exit code.</p>
+ 
+   <h1>BUGS</h1>