summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/licenses.nix14
-rw-r--r--lib/maintainers.nix2
-rw-r--r--lib/modules.nix2
-rw-r--r--nixos/lib/test-driver/log2html.xsl4
-rw-r--r--nixos/lib/testing.nix8
-rw-r--r--nixos/modules/config/krb5.nix4
-rw-r--r--nixos/modules/config/sysctl.nix8
-rw-r--r--nixos/modules/installer/tools/nixos-rebuild.sh10
-rw-r--r--nixos/modules/installer/tools/tools.nix1
-rw-r--r--nixos/modules/misc/ids.nix1
-rw-r--r--nixos/modules/module-list.nix2
-rw-r--r--nixos/modules/programs/atop.nix2
-rw-r--r--nixos/modules/programs/environment.nix4
-rw-r--r--nixos/modules/security/pam.nix4
-rw-r--r--nixos/modules/services/databases/openldap.nix2
-rw-r--r--nixos/modules/services/databases/redis.nix24
-rw-r--r--nixos/modules/services/logging/logstash.nix9
-rw-r--r--nixos/modules/services/misc/gitolite.nix66
-rw-r--r--nixos/modules/services/networking/radicale.nix48
-rw-r--r--nixos/modules/services/search/elasticsearch.nix18
-rw-r--r--nixos/modules/services/web-servers/apache-httpd/default.nix10
-rw-r--r--nixos/modules/tasks/encrypted-devices.nix8
-rw-r--r--nixos/tests/avahi.nix1
-rw-r--r--nixos/tests/bittorrent.nix1
-rw-r--r--nixos/tests/check-filesystems.nix2
-rw-r--r--nixos/tests/containers.nix1
-rw-r--r--nixos/tests/firefox.nix1
-rw-r--r--nixos/tests/firewall.nix1
-rw-r--r--nixos/tests/gnome3.nix1
-rw-r--r--nixos/tests/gnome3_12.nix1
-rw-r--r--nixos/tests/influxdb.nix2
-rw-r--r--nixos/tests/installer.nix16
-rw-r--r--nixos/tests/ipv6.nix1
-rw-r--r--nixos/tests/jenkins.nix1
-rw-r--r--nixos/tests/kde4.nix1
-rw-r--r--nixos/tests/kexec.nix1
-rw-r--r--nixos/tests/login.nix1
-rw-r--r--nixos/tests/logstash.nix1
-rw-r--r--nixos/tests/misc.nix1
-rw-r--r--nixos/tests/mpich.nix2
-rw-r--r--nixos/tests/mumble.nix2
-rw-r--r--nixos/tests/munin.nix1
-rw-r--r--nixos/tests/mysql-replication.nix2
-rw-r--r--nixos/tests/mysql.nix1
-rw-r--r--nixos/tests/nat.nix1
-rw-r--r--nixos/tests/nfs.nix1
-rw-r--r--nixos/tests/openssh.nix49
-rw-r--r--nixos/tests/partition.nix2
-rw-r--r--nixos/tests/phabricator.nix1
-rw-r--r--nixos/tests/printing.nix1
-rw-r--r--nixos/tests/proxy.nix1
-rw-r--r--nixos/tests/quake3.nix1
-rw-r--r--nixos/tests/rabbitmq.nix1
-rw-r--r--nixos/tests/simple.nix1
-rw-r--r--nixos/tests/subversion.nix1
-rw-r--r--nixos/tests/tomcat.nix1
-rw-r--r--nixos/tests/trac.nix1
-rw-r--r--nixos/tests/udisks2.nix1
-rw-r--r--nixos/tests/xfce.nix1
-rw-r--r--pkgs/applications/audio/transcode/default.nix25
-rw-r--r--pkgs/applications/editors/emacs-modes/structured-haskell-mode/default.nix11
-rw-r--r--pkgs/applications/editors/vim/configurable.nix2
-rw-r--r--pkgs/applications/editors/vim/default.nix2
-rw-r--r--pkgs/applications/graphics/photivo/default.nix2
-rw-r--r--pkgs/applications/misc/camlistore/default.nix31
-rw-r--r--pkgs/applications/misc/kdeconnect/default.nix10
-rw-r--r--pkgs/applications/misc/makeself/default.nix20
-rw-r--r--pkgs/applications/misc/nc-indicators/default.nix6
-rw-r--r--pkgs/applications/misc/ocropus/default.nix2
-rw-r--r--pkgs/applications/networking/browsers/dwb/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/default.nix337
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/generate_nix.rb217
-rw-r--r--pkgs/applications/networking/instant-messengers/baresip/default.nix8
-rw-r--r--pkgs/applications/networking/instant-messengers/skype/default.nix19
-rw-r--r--pkgs/applications/networking/irc/bip/bip-0.8.8-yyparse.patch11
-rw-r--r--pkgs/applications/networking/irc/bip/default.nix13
-rw-r--r--pkgs/applications/office/libreoffice/default.nix95
-rwxr-xr-xpkgs/applications/office/libreoffice/generate-libreoffice-srcs.sh38
-rw-r--r--pkgs/applications/office/libreoffice/libreoffice-srcs.nix445
-rw-r--r--pkgs/applications/office/libreoffice/ooxmlexport.diff31
-rw-r--r--pkgs/applications/science/electronics/kicad/default.nix4
-rw-r--r--pkgs/applications/science/logic/abc/default.nix2
-rw-r--r--pkgs/applications/science/logic/twelf/default.nix46
-rw-r--r--pkgs/applications/science/math/glsurf/default.nix2
-rw-r--r--pkgs/applications/version-management/git-and-tools/default.nix3
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-remote-hg/default.nix35
-rw-r--r--pkgs/applications/version-management/git-and-tools/git/default.nix4
-rw-r--r--pkgs/applications/version-management/gitolite/default.nix37
-rw-r--r--pkgs/applications/window-managers/tabbed/default.nix2
-rw-r--r--pkgs/build-support/cabal/default.nix4
-rw-r--r--pkgs/build-support/fetchbzr/builder.sh4
-rw-r--r--pkgs/build-support/fetchbzr/default.nix4
-rw-r--r--pkgs/build-support/fetchdarcs/builder.sh6
-rw-r--r--pkgs/build-support/fetchdarcs/default.nix4
-rwxr-xr-xpkgs/build-support/fetchgit/nix-prefetch-git4
-rw-r--r--pkgs/build-support/fetchhg/builder.sh4
-rw-r--r--pkgs/build-support/fetchhg/default.nix4
-rw-r--r--pkgs/build-support/fetchurl/mirrors.nix6
-rwxr-xr-xpkgs/build-support/fetchzip/nix-prefetch-zip153
-rw-r--r--pkgs/build-support/kernel/paths-from-graph.pl18
-rw-r--r--pkgs/build-support/upstream-updater/update-walker-service-specific.sh2
-rwxr-xr-xpkgs/build-support/upstream-updater/update-walker.sh53
-rw-r--r--pkgs/data/fonts/anonymous-pro/default.nix3
-rw-r--r--pkgs/data/fonts/ipafont/default.nix33
-rw-r--r--pkgs/data/fonts/kochi-substitute-naga10/default.nix34
-rw-r--r--pkgs/data/fonts/kochi-substitute/default.nix43
-rw-r--r--pkgs/desktops/gnome-2/desktop/vte/default.nix7
-rw-r--r--pkgs/desktops/gnome-2/desktop/vte/vte-0.28.2-limit-arguments.patch40
-rw-r--r--pkgs/desktops/gnome-3/3.10/core/libcroco/default.nix2
-rw-r--r--pkgs/development/compilers/go/gox.nix54
-rw-r--r--pkgs/development/compilers/jdk/jdk-linux-base.nix175
-rw-r--r--pkgs/development/compilers/jdk/jdk7-linux.nix178
-rw-r--r--pkgs/development/compilers/jdk/jdk8-linux.nix10
-rw-r--r--pkgs/development/compilers/nasm/default.nix7
-rw-r--r--pkgs/development/compilers/sbcl/bootstrap.nix31
-rw-r--r--pkgs/development/compilers/sbcl/default.nix89
-rw-r--r--pkgs/development/compilers/scala/2.9.nix6
-rw-r--r--pkgs/development/compilers/smlnj/bootstrap.nix43
-rw-r--r--pkgs/development/interpreters/lua-5/expat.nix26
-rw-r--r--pkgs/development/interpreters/perl/5.20/cpp-precomp.patch11
-rw-r--r--pkgs/development/interpreters/perl/5.20/default.nix68
-rw-r--r--pkgs/development/interpreters/perl/5.20/ld-shared.patch11
-rw-r--r--pkgs/development/interpreters/perl/5.20/no-libutil.patch12
-rw-r--r--pkgs/development/interpreters/perl/5.20/no-sys-dirs.patch250
-rw-r--r--pkgs/development/interpreters/perl/5.20/setup-hook.sh5
-rw-r--r--pkgs/development/interpreters/php/5.4.nix4
-rw-r--r--pkgs/development/libraries/gloox/default.nix32
-rw-r--r--pkgs/development/libraries/gnu-efi/default.nix29
-rw-r--r--pkgs/development/libraries/gperftools/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/SHA2/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/Yampa/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/bson/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/command-qq/default.nix16
-rw-r--r--pkgs/development/libraries/haskell/deepseq-generics/default.nix15
-rw-r--r--pkgs/development/libraries/haskell/extensible-effects/default.nix2
-rw-r--r--pkgs/development/libraries/haskell/folds/default.nix22
-rw-r--r--pkgs/development/libraries/haskell/ghc-mod/default.nix1
-rw-r--r--pkgs/development/libraries/haskell/hcltest/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/hdaemonize/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/ixset/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/monadloc-pp/default.nix18
-rw-r--r--pkgs/development/libraries/haskell/mongoDB/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/pipes-aeson/default.nix1
-rw-r--r--pkgs/development/libraries/haskell/pipes-binary/default.nix1
-rw-r--r--pkgs/development/libraries/haskell/pipes-bytestring/default.nix3
-rw-r--r--pkgs/development/libraries/haskell/pipes-text/default.nix1
-rw-r--r--pkgs/development/libraries/haskell/quickcheck-property-monad/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/shellmate/default.nix14
-rw-r--r--pkgs/development/libraries/haskell/simple-sendfile/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/snap/server.nix7
-rw-r--r--pkgs/development/libraries/haskell/tables/default.nix23
-rw-r--r--pkgs/development/libraries/haskell/unix-compat/default.nix4
-rw-r--r--pkgs/development/libraries/haskell/webdriver/default.nix27
-rw-r--r--pkgs/development/libraries/libatomic_ops/default.nix28
-rw-r--r--pkgs/development/libraries/libatomic_ops/default.upstream1
-rw-r--r--pkgs/development/libraries/libe-book/0.0.nix30
-rw-r--r--pkgs/development/libraries/libe-book/0.0.upstream4
-rw-r--r--pkgs/development/libraries/libe-book/default.nix29
-rw-r--r--pkgs/development/libraries/libe-book/default.upstream4
-rw-r--r--pkgs/development/libraries/libmwaw/0.2.nix29
-rw-r--r--pkgs/development/libraries/libmwaw/0.2.upstream4
-rw-r--r--pkgs/development/libraries/libmwaw/default.nix29
-rw-r--r--pkgs/development/libraries/libmwaw/default.upstream4
-rw-r--r--pkgs/development/libraries/libodfgen/default.nix29
-rw-r--r--pkgs/development/libraries/libodfgen/default.upstream4
-rw-r--r--pkgs/development/libraries/libre/default.nix8
-rw-r--r--pkgs/development/libraries/librem/default.nix8
-rw-r--r--pkgs/development/libraries/librevenge/default.nix29
-rw-r--r--pkgs/development/libraries/librevenge/default.upstream4
-rw-r--r--pkgs/development/libraries/mdds/default.nix12
-rw-r--r--pkgs/development/libraries/mdds/default.upstream10
-rw-r--r--pkgs/development/libraries/nix-plugins/default.nix25
-rw-r--r--pkgs/development/libraries/nvidia-texture-tools/default.nix41
-rw-r--r--pkgs/development/lisp-modules/lisp-packages.nix2
-rw-r--r--pkgs/development/tools/etcdctl/default.nix30
-rw-r--r--pkgs/development/tools/etcdctl/deps.nix27
-rw-r--r--pkgs/development/tools/gocode/default.nix29
-rw-r--r--pkgs/development/tools/gocode/deps.nix27
-rw-r--r--pkgs/development/tools/misc/arcanist/default.nix10
-rw-r--r--pkgs/development/tools/misc/openocd/default.nix63
-rw-r--r--pkgs/development/tools/ocaml/cppo/default.nix37
-rw-r--r--pkgs/development/tools/packer/default.nix35
-rw-r--r--pkgs/development/tools/packer/deps.nix307
-rw-r--r--pkgs/development/tools/selenium/chromedriver/default.nix4
-rw-r--r--pkgs/development/web/nodejs/default.nix4
-rw-r--r--pkgs/games/0ad/data.nix19
-rw-r--r--pkgs/games/0ad/default.nix120
-rw-r--r--pkgs/games/blobby/default.nix18
-rw-r--r--pkgs/games/blobby/default.upstream8
-rw-r--r--pkgs/games/dwarf-therapist/default.nix2
-rw-r--r--pkgs/games/openspades/default.nix36
-rw-r--r--pkgs/games/opentyrian/default.nix2
-rw-r--r--pkgs/misc/emulators/wine/winetricks.nix5
-rw-r--r--pkgs/os-specific/linux/broadcom-sta/cfg80211_ibss_joined-channel-parameter.patch17
-rw-r--r--pkgs/os-specific/linux/broadcom-sta/default.nix1
-rw-r--r--pkgs/os-specific/linux/iomelt/default.nix25
-rw-r--r--pkgs/os-specific/linux/kernel/common-config.nix60
-rw-r--r--pkgs/os-specific/linux/kernel/generic.nix2
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.10.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.12.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.13.nix17
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.14.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.15.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.4.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-testing.nix6
-rw-r--r--pkgs/os-specific/linux/kernel/patches.nix12
-rw-r--r--pkgs/os-specific/linux/keyutils/default.nix21
-rw-r--r--pkgs/os-specific/linux/syslinux/default.nix32
-rw-r--r--pkgs/servers/etcd/default.nix30
-rw-r--r--pkgs/servers/etcd/deps.nix54
-rw-r--r--pkgs/servers/fleet/default.nix30
-rw-r--r--pkgs/servers/fleet/deps.nix81
-rw-r--r--pkgs/servers/http/nix-binary-cache/default.nix61
-rw-r--r--pkgs/servers/http/nix-binary-cache/nix-binary-cache-start.in105
-rw-r--r--pkgs/servers/http/nix-binary-cache/nix-binary-cache.cgi.in97
-rw-r--r--pkgs/servers/nsq/default.nix37
-rw-r--r--pkgs/servers/nsq/deps.nix134
-rw-r--r--pkgs/servers/restund/default.nix4
-rw-r--r--pkgs/servers/samba/default.nix6
-rw-r--r--pkgs/servers/serfdom/default.nix144
-rw-r--r--pkgs/servers/serfdom/deps.nix185
-rw-r--r--pkgs/shells/fish/default.nix6
-rw-r--r--pkgs/tools/filesystems/ceph/default.nix37
-rw-r--r--pkgs/tools/filesystems/xfsprogs/default.nix17
-rw-r--r--pkgs/tools/graphics/povray/default.nix4
-rw-r--r--pkgs/tools/misc/gummiboot/default.nix6
-rw-r--r--pkgs/tools/misc/ngrok/default.nix6
-rw-r--r--pkgs/tools/networking/network-manager-applet/default.nix4
-rw-r--r--pkgs/tools/package-management/cabal-install/1.20.0.3.nix (renamed from pkgs/tools/package-management/cabal-install/1.20.0.2.nix)4
-rw-r--r--pkgs/tools/package-management/nix-prefetch-scripts/default.nix13
-rw-r--r--pkgs/tools/package-management/nix/unstable.nix4
-rw-r--r--pkgs/tools/security/ecryptfs/default.nix35
-rw-r--r--pkgs/tools/security/gnupg/default.nix4
-rw-r--r--pkgs/tools/security/gnupg1/default.nix4
-rw-r--r--pkgs/tools/security/meo/default.nix2
-rw-r--r--pkgs/tools/security/sudo/default.nix40
-rw-r--r--pkgs/tools/system/storebrowse/default.nix2
-rw-r--r--pkgs/tools/system/syslog-ng/default.nix11
-rw-r--r--pkgs/tools/text/diffstat/default.nix2
-rw-r--r--pkgs/tools/typesetting/djvu2pdf/default.nix28
-rw-r--r--pkgs/top-level/all-packages.nix132
-rw-r--r--pkgs/top-level/haskell-defaults.nix4
-rw-r--r--pkgs/top-level/haskell-packages.nix39
-rw-r--r--pkgs/top-level/python-packages.nix53
244 files changed, 5386 insertions, 894 deletions
diff --git a/lib/licenses.nix b/lib/licenses.nix
index e49528f2a2e6..ed6a54db550d 100644
--- a/lib/licenses.nix
+++ b/lib/licenses.nix
@@ -88,6 +88,8 @@
     url = http://www.eclipse.org/legal/epl-v10.html;
   };
 
+  free = "free";
+
   gpl2 = {
     shortName = "GPLv2";
     fullName = "GNU General Public License version 2";
@@ -130,6 +132,12 @@
     url = http://www.opensource.org/licenses/ISC;
   };
 
+  ipa = {
+    shortName = "IPA 1.0";
+    fullName = "IPA Font License v1.0";
+    url = http://ipafont.ipa.go.jp/ipafont/;
+  };
+
   ipl10 = {
     shortName = "IPL 1.0";
     fullName = "IBM Public License Version 1.0";
@@ -243,6 +251,12 @@
 
   unfreeRedistributableFirmware = "unfree-redistributable-firmware";
 
+  wadalab = {
+    shortName = "wadalab";
+    fullName = "Wadalab Font License";
+    url = https://fedoraproject.org/wiki/Licensing:Wadalab?rd=Licensing/Wadalab;
+  };
+
   zlib = {
     shortName = "zlib";
     fullName = "zlib license";
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index 3a66f7a60b38..f2fe38e8e56c 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -6,6 +6,7 @@
 
   _1126 = "Christian Lask <mail@elfsechsundzwanzig.de>";
   aforemny = "Alexander Foremny <alexanderforemny@googlemail.com>";
+  ak = "Alexander Kjeldaas <ak@formalprivacy.com>";
   akc = "Anders Claesson <akc@akc.is>";
   algorith = "Dries Van Daele <dries_van_daele@telenet.be>";
   all = "Nix Committers <nix-commits@lists.science.uu.nl>";
@@ -37,6 +38,7 @@
   emery = "Emery Hemingway <emery@vfemail.net>";
   ertes = "Ertugrul Söylemez <ertesx@gmx.de>";
   falsifian = "James Cook <james.cook@utoronto.ca>";
+  flosse = "Markus Kohlhase <mail@markus-kohlhase.de>";
   fuuzetsu = "Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>";
   garbas = "Rok Garbas <rok@garbas.si>";
   goibhniu = "Cillian de Róiste <cillian.deroiste@gmail.com>";
diff --git a/lib/modules.nix b/lib/modules.nix
index 633b6fc05b26..bcaadc7fd977 100644
--- a/lib/modules.nix
+++ b/lib/modules.nix
@@ -194,7 +194,7 @@ rec {
 
      is transformed into
 
-       [ { boot = set1; } { boot = mkIf cond set2; services mkIf cond set3; } ].
+       [ { boot = set1; } { boot = mkIf cond set2; services = mkIf cond set3; } ].
 
      This transform is the critical step that allows mkIf conditions
      to refer to the full configuration without creating an infinite
diff --git a/nixos/lib/test-driver/log2html.xsl b/nixos/lib/test-driver/log2html.xsl
index 8e907d85ffac..ce8a9c6de2b2 100644
--- a/nixos/lib/test-driver/log2html.xsl
+++ b/nixos/lib/test-driver/log2html.xsl
@@ -9,8 +9,8 @@
   <xsl:template match="logfile">
     <html>
       <head>
-        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
-        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
+        <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
+        <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
         <script type="text/javascript" src="treebits.js" />
         <link rel="stylesheet" href="logfile.css" type="text/css" />
         <title>Log File</title>
diff --git a/nixos/lib/testing.nix b/nixos/lib/testing.nix
index 942a2158b15f..063b9bf6c7af 100644
--- a/nixos/lib/testing.nix
+++ b/nixos/lib/testing.nix
@@ -37,7 +37,7 @@ rec {
   # `driver' is the script that runs the network.
   runTests = driver:
     stdenv.mkDerivation {
-      name = "vm-test-run";
+      name = "vm-test-run-${driver.testName}";
 
       requiredSystemFeatures = [ "kvm" "nixos-test" ];
 
@@ -68,9 +68,10 @@ rec {
 
 
   makeTest =
-    { testScript, makeCoverageReport ? false, ... } @ t:
+    { testScript, makeCoverageReport ? false, name ? "unnamed", ... } @ t:
 
     let
+      testDriverName = "nixos-test-driver-${name}";
 
       nodes = buildVirtualNetwork (
         t.nodes or (if t ? machine then { machine = t.machine; } else { }));
@@ -88,10 +89,11 @@ rec {
       # Generate onvenience wrappers for running the test driver
       # interactively with the specified network, and for starting the
       # VMs from the command line.
-      driver = runCommand "nixos-test-driver"
+      driver = runCommand testDriverName
         { buildInputs = [ makeWrapper];
           testScript = testScript';
           preferLocalBuild = true;
+          testName = name;
         }
         ''
           mkdir -p $out/bin
diff --git a/nixos/modules/config/krb5.nix b/nixos/modules/config/krb5.nix
index bb5a95ebc844..991b5b16cc68 100644
--- a/nixos/modules/config/krb5.nix
+++ b/nixos/modules/config/krb5.nix
@@ -32,12 +32,12 @@ in
 
       kdc = mkOption {
         default = "kerberos.mit.edu";
-        description = "Kerberos Domain Controller";
+        description = "Kerberos Domain Controller.";
       };
 
       kerberosAdminServer = mkOption {
         default = "kerberos.mit.edu";
-        description = "Kerberos Admin Server";
+        description = "Kerberos Admin Server.";
       };
 
     };
diff --git a/nixos/modules/config/sysctl.nix b/nixos/modules/config/sysctl.nix
index 542360219193..3b6ccd380c75 100644
--- a/nixos/modules/config/sysctl.nix
+++ b/nixos/modules/config/sysctl.nix
@@ -6,8 +6,12 @@ let
 
   sysctlOption = mkOptionType {
     name = "sysctl option value";
-    check = x: isBool x || isString x || isInt x || isNull x;
-    merge = args: defs: (last defs).value; # FIXME: hacky way to allow overriding in configuration.nix.
+    check = val:
+      let
+        checkType = x: isBool x || isString x || isInt x || isNull x;
+      in
+        checkType val || (val._type or "" == "override" && checkType val.content);
+    merge = loc: defs: mergeOneOption loc (filterOverrides defs);
   };
 
 in
diff --git a/nixos/modules/installer/tools/nixos-rebuild.sh b/nixos/modules/installer/tools/nixos-rebuild.sh
index d7b749573fa9..be37e61151aa 100644
--- a/nixos/modules/installer/tools/nixos-rebuild.sh
+++ b/nixos/modules/installer/tools/nixos-rebuild.sh
@@ -97,6 +97,16 @@ if [ -n "$upgrade" -a -z "$_NIXOS_REBUILD_REEXEC" ]; then
     nix-channel --update nixos
 fi
 
+# Make sure that we use the Nix package we depend on, not something
+# else from the PATH for nix-{env,instantiate,build}.  This is
+# important, because NixOS defaults the architecture of the rebuilt
+# system to the architecture of the nix-* binaries used.  So if on an
+# amd64 system the user has an i686 Nix package in her PATH, then we
+# would silently downgrade the whole system to be i686 NixOS on the
+# next reboot.
+if [ -z "$_NIXOS_REBUILD_REEXEC" ]; then
+    export PATH=@nix@/bin:$PATH
+fi
 
 # Re-execute nixos-rebuild from the Nixpkgs tree.
 if [ -z "$_NIXOS_REBUILD_REEXEC" -a -n "$canRun" ]; then
diff --git a/nixos/modules/installer/tools/tools.nix b/nixos/modules/installer/tools/tools.nix
index 5ebf05e340f9..f7fac75eb069 100644
--- a/nixos/modules/installer/tools/tools.nix
+++ b/nixos/modules/installer/tools/tools.nix
@@ -32,6 +32,7 @@ let
   nixos-rebuild = makeProg {
     name = "nixos-rebuild";
     src = ./nixos-rebuild.sh;
+    nix = config.nix.package;
   };
 
   nixos-generate-config = makeProg {
diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix
index f1028a479dff..956215d9a97a 100644
--- a/nixos/modules/misc/ids.nix
+++ b/nixos/modules/misc/ids.nix
@@ -134,6 +134,7 @@
       teamspeak = 124;
       influxdb = 125;
       nsd = 126;
+      gitolite = 127;
 
       # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
 
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 13f2656c2873..94180372afe1 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -147,6 +147,7 @@
   ./services/misc/felix.nix
   ./services/misc/folding-at-home.nix
   ./services/misc/gpsd.nix
+  ./services/misc/gitolite.nix
   ./services/misc/nix-daemon.nix
   ./services/misc/nix-gc.nix
   ./services/misc/nix-ssh-serve.nix
@@ -216,6 +217,7 @@
   ./services/networking/prayer.nix
   ./services/networking/privoxy.nix
   ./services/networking/quassel.nix
+  ./services/networking/radicale.nix
   ./services/networking/radvd.nix
   ./services/networking/rdnssd.nix
   ./services/networking/rpcbind.nix
diff --git a/nixos/modules/programs/atop.nix b/nixos/modules/programs/atop.nix
index e457db22333b..b91bd98047ee 100644
--- a/nixos/modules/programs/atop.nix
+++ b/nixos/modules/programs/atop.nix
@@ -22,7 +22,7 @@ in
           interval = 5;
         };
         description = ''
-          Parameters to be written to <filename>/etc/atoprc</filename>
+          Parameters to be written to <filename>/etc/atoprc</filename>.
         '';
       };
 
diff --git a/nixos/modules/programs/environment.nix b/nixos/modules/programs/environment.nix
index 2ff1db48757d..80c3e83fe812 100644
--- a/nixos/modules/programs/environment.nix
+++ b/nixos/modules/programs/environment.nix
@@ -19,8 +19,8 @@ in
     environment.variables =
       { LOCATE_PATH = "/var/cache/locatedb";
         NIXPKGS_CONFIG = "/etc/nix/nixpkgs-config.nix";
-        PAGER = "less -R";
-        EDITOR = "nano";
+        PAGER = mkDefault "less -R";
+        EDITOR = mkDefault "nano";
       };
 
     environment.sessionVariables =
diff --git a/nixos/modules/security/pam.nix b/nixos/modules/security/pam.nix
index 02340fd78e8c..b1b75a0068d4 100644
--- a/nixos/modules/security/pam.nix
+++ b/nixos/modules/security/pam.nix
@@ -189,7 +189,9 @@ let
           session required pam_env.so envfile=${config.system.build.pamEnvironment}
           session required pam_unix.so
           ${optionalString cfg.setLoginUid
-              "session required pam_loginuid.so"}
+              "session ${
+                if config.boot.isContainer then "optional" else "required"
+              } pam_loginuid.so"}
           ${optionalString cfg.updateWtmp
               "session required ${pkgs.pam}/lib/security/pam_lastlog.so silent"}
           ${optionalString config.users.ldap.enable
diff --git a/nixos/modules/services/databases/openldap.nix b/nixos/modules/services/databases/openldap.nix
index c95238b34515..eae4c114fc12 100644
--- a/nixos/modules/services/databases/openldap.nix
+++ b/nixos/modules/services/databases/openldap.nix
@@ -68,7 +68,7 @@ in
 
     users.extraUsers = optionalAttrs (cfg.user == "openldap") (singleton
       { name = "openldap";
-        group = "openldap";
+        group = cfg.group;
         uid = config.ids.uids.openldap;
       });
 
diff --git a/nixos/modules/services/databases/redis.nix b/nixos/modules/services/databases/redis.nix
index 4ef48df9831c..2521e356bf39 100644
--- a/nixos/modules/services/databases/redis.nix
+++ b/nixos/modules/services/databases/redis.nix
@@ -50,7 +50,7 @@ in
 
       user = mkOption {
         default = "redis";
-        description = "User account under which Redis runs";
+        description = "User account under which Redis runs.";
       };
 
       pidFile = mkOption {
@@ -60,26 +60,26 @@ in
 
       port = mkOption {
         default = 6379;
-        description = "The port for Redis to listen to";
+        description = "The port for Redis to listen to.";
         type = with types; int;
       };
 
       bind = mkOption {
         default = null; # All interfaces
-        description = "The IP interface to bind to";
+        description = "The IP interface to bind to.";
         example = "127.0.0.1";
       };
 
       unixSocket = mkOption {
         default = null;
-        description = "The path to the socket to bind to";
+        description = "The path to the socket to bind to.";
         example = "/var/run/redis.sock";
       };
 
       logLevel = mkOption {
         default = "notice"; # debug, verbose, notice, warning
         example = "debug";
-        description = "Specify the server verbosity level, options: debug, verbose, notice, warning";
+        description = "Specify the server verbosity level, options: debug, verbose, notice, warning.";
         type = with types; string;
       };
 
@@ -110,19 +110,19 @@ in
 
       dbFilename = mkOption {
         default = "dump.rdb";
-        description = "The filename where to dump the DB";
+        description = "The filename where to dump the DB.";
         type = with types; string;
       };
 
       dbpath = mkOption {
         default = "/var/lib/redis";
-        description = "The DB will be written inside this directory, with the filename specified using the 'dbFilename' configuration";
+        description = "The DB will be written inside this directory, with the filename specified using the 'dbFilename' configuration.";
         type = with types; string;
       };
 
       slaveOf = mkOption {
         default = null; # { ip, port }
-        description = "An attribute set with two attributes: ip and port to which this redis instance acts as a slave";
+        description = "An attribute set with two attributes: ip and port to which this redis instance acts as a slave.";
         example = { ip = "192.168.1.100"; port = 6379; };
       };
 
@@ -154,26 +154,26 @@ in
 
       appendFsync = mkOption {
         default = "everysec"; # no, always, everysec
-        description = "How often to fsync the append-only log, options: no, always, everysec";
+        description = "How often to fsync the append-only log, options: no, always, everysec.";
         type = with types; string;
       };
 
       slowLogLogSlowerThan = mkOption {
         default = 10000;
-        description = "Log queries whose execution take longer than X in milliseconds";
+        description = "Log queries whose execution take longer than X in milliseconds.";
         example = 1000;
         type = with types; int;
       };
 
       slowLogMaxLen = mkOption {
         default = 128;
-        description = "Maximum number of items to keep in slow log";
+        description = "Maximum number of items to keep in slow log.";
         type = with types; int;
       };
 
       extraConfig = mkOption {
         default = "";
-        description = "Extra configuration options for redis.conf";
+        description = "Extra configuration options for redis.conf.";
         type = with types; string;
       };
     };
diff --git a/nixos/modules/services/logging/logstash.nix b/nixos/modules/services/logging/logstash.nix
index 480e35a1156d..c92c81135704 100644
--- a/nixos/modules/services/logging/logstash.nix
+++ b/nixos/modules/services/logging/logstash.nix
@@ -17,6 +17,11 @@ in
         description = "Enable logstash";
       };
 
+      enableWeb = mkOption {
+        default = false;
+        description = "Enable logstash web interface";
+      };
+
       inputConfig = mkOption {
         default = ''stdin { type => "example" }'';
         description = "Logstash input configuration";
@@ -62,7 +67,7 @@ in
 
   config = mkIf cfg.enable {
     systemd.services.logstash = with pkgs; {
-      description = "Logstash daemon";
+      description = "Logstash Daemon";
       wantedBy = [ "multi-user.target" ];
 
       serviceConfig = {
@@ -78,7 +83,7 @@ in
           output {
             ${cfg.outputConfig}
           }
-        ''}";
+        ''} ${optionalString cfg.enableWeb "-- web"}";
       };
     };
   };
diff --git a/nixos/modules/services/misc/gitolite.nix b/nixos/modules/services/misc/gitolite.nix
new file mode 100644
index 000000000000..84435f92c11d
--- /dev/null
+++ b/nixos/modules/services/misc/gitolite.nix
@@ -0,0 +1,66 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.services.gitolite;
+  pubkeyFile = pkgs.writeText "gitolite-admin.pub" cfg.adminPubkey;
+in
+{
+  options = {
+    services.gitolite = {
+      enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Enable gitolite management under the
+          <literal>gitolite</literal> user. The Gitolite home
+          directory is <literal>/var/lib/gitolite</literal>. After
+          switching to a configuration with Gitolite enabled, you can
+          then run <literal>git clone
+          gitolite@host:gitolite-admin.git</literal> to manage it further.
+        '';
+      };
+
+      adminPubkey = mkOption {
+        type = types.str;
+        description = ''
+          Initial administrative public key for Gitolite. This should
+          be an SSH Public Key. Note that this key will only be used
+          once, upon the first initialization of the Gitolite user.
+        '';
+      };
+    };
+  };
+
+  config = mkIf cfg.enable {
+    users.extraUsers.gitolite = {
+      description     = "Gitolite user";
+      home            = "/var/lib/gitolite";
+      createHome      = true;
+      uid             = config.ids.uids.gitolite;
+      useDefaultShell = true;
+    };
+
+    systemd.services."gitolite-init" = {
+      description = "Gitolite initialization";
+      wantedBy    = [ "multi-user.target" ];
+
+      serviceConfig.User = "gitolite";
+      serviceConfig.Type = "oneshot";
+      serviceConfig.RemainAfterExit = true;
+
+      path = [ pkgs.gitolite pkgs.git pkgs.perl pkgs.bash pkgs.openssh ];
+      script = ''
+        cd /var/lib/gitolite
+        mkdir -p .gitolite/logs
+        if [ ! -d repositories ]; then
+          gitolite setup -pk ${pubkeyFile}
+        fi
+        gitolite setup # Upgrade if needed
+      '';
+    };
+
+    environment.systemPackages = [ pkgs.gitolite pkgs.git ];
+  };
+}
diff --git a/nixos/modules/services/networking/radicale.nix b/nixos/modules/services/networking/radicale.nix
new file mode 100644
index 000000000000..fc9afc70aca4
--- /dev/null
+++ b/nixos/modules/services/networking/radicale.nix
@@ -0,0 +1,48 @@
+{config, lib, pkgs, ...}:
+
+with lib;
+
+let
+
+  cfg = config.services.radicale;
+
+  confFile = pkgs.writeText "radicale.conf" cfg.config;
+
+in
+
+{
+
+  options = {
+
+    services.radicale.enable = mkOption {
+      type = types.bool;
+      default = false;
+      description = ''
+          Enable Radicale CalDAV and CardDAV server
+      '';
+    };
+
+    services.radicale.config = mkOption {
+      type = types.string;
+      default = "";
+      description = ''
+        Radicale configuration, this will set the service
+        configuration file
+      '';
+      };
+  };
+
+  config = mkIf cfg.enable {
+
+    environment.systemPackages = [ pkgs.pythonPackages.radicale ];
+
+    jobs.radicale = {
+      description = "A Simple Calendar and Contact Server";
+      startOn = "started network-interfaces";
+      exec = "${pkgs.pythonPackages.radicale}/bin/radicale -C ${confFile} -d";
+      daemonType = "fork";
+    };
+
+  };
+
+}
diff --git a/nixos/modules/services/search/elasticsearch.nix b/nixos/modules/services/search/elasticsearch.nix
index 3c32e4a3dfe1..eeae11dc4ff3 100644
--- a/nixos/modules/services/search/elasticsearch.nix
+++ b/nixos/modules/services/search/elasticsearch.nix
@@ -27,37 +27,37 @@ in {
 
   options.services.elasticsearch = {
     enable = mkOption {
-      description = "Whether to enable elasticsearch";
+      description = "Whether to enable elasticsearch.";
       default = false;
       type = types.uniq types.bool;
     };
 
     host = mkOption {
-      description = "Elasticsearch listen address";
+      description = "Elasticsearch listen address.";
       default = "127.0.0.1";
       type = types.str;
     };
 
     port = mkOption {
-      description = "Elasticsearch port to listen for HTTP traffic";
+      description = "Elasticsearch port to listen for HTTP traffic.";
       default = 9200;
       type = types.int;
     };
 
     tcp_port = mkOption {
-      description = "Elasticsearch port for the node to node communication";
+      description = "Elasticsearch port for the node to node communication.";
       default = 9300;
       type = types.int;
     };
 
     cluster_name = mkOption {
-      description = "Elasticsearch name that identifies your cluster for auto-discovery";
+      description = "Elasticsearch name that identifies your cluster for auto-discovery.";
       default = "elasticsearch";
       type = types.str;
     };
 
     extraConf = mkOption {
-      description = "Extra configuration for elasticsearch";
+      description = "Extra configuration for elasticsearch.";
       default = "";
       type = types.str;
       example = ''
@@ -70,7 +70,7 @@ in {
     };
 
     logging = mkOption {
-      description = "Elasticsearch logging configuration";
+      description = "Elasticsearch logging configuration.";
       default = ''
         rootLogger: INFO, console
         logger:
@@ -95,7 +95,7 @@ in {
     };
 
     extraCmdLineOptions = mkOption {
-      description = "Extra command line options for the elasticsearch launcher";
+      description = "Extra command line options for the elasticsearch launcher.";
       default = [];
       type = types.listOf types.string;
       example = [ "-Djava.net.preferIPv4Stack=true" ];
@@ -107,7 +107,7 @@ in {
 
   config = mkIf cfg.enable {
     systemd.services.elasticsearch = {
-      description = "Elasticsearch daemon";
+      description = "Elasticsearch Daemon";
       wantedBy = [ "multi-user.target" ];
       after = [ "network-interfaces.target" ];
       environment = { ES_HOME = cfg.dataDir; };
diff --git a/nixos/modules/services/web-servers/apache-httpd/default.nix b/nixos/modules/services/web-servers/apache-httpd/default.nix
index a6f856912533..729825681b57 100644
--- a/nixos/modules/services/web-servers/apache-httpd/default.nix
+++ b/nixos/modules/services/web-servers/apache-httpd/default.nix
@@ -594,17 +594,17 @@ in
                      message = "SSL is enabled for HTTPD, but sslServerCert and/or sslServerKey haven't been specified."; }
                  ];
 
-    users.extraUsers = optional (mainCfg.user == "wwwrun")
+    users.extraUsers = optionalAttrs (mainCfg.user == "wwwrun") (singleton
       { name = "wwwrun";
-        group = "wwwrun";
+        group = mainCfg.group;
         description = "Apache httpd user";
         uid = config.ids.uids.wwwrun;
-      };
+      });
 
-    users.extraGroups = optional (mainCfg.group == "wwwrun")
+    users.extraGroups = optionalAttrs (mainCfg.group == "wwwrun") (singleton
       { name = "wwwrun";
         gid = config.ids.gids.wwwrun;
-      };
+      });
 
     environment.systemPackages = [httpd] ++ concatMap (svc: svc.extraPath) allSubservices;
 
diff --git a/nixos/modules/tasks/encrypted-devices.nix b/nixos/modules/tasks/encrypted-devices.nix
index e80762a170c4..e56549149cb8 100644
--- a/nixos/modules/tasks/encrypted-devices.nix
+++ b/nixos/modules/tasks/encrypted-devices.nix
@@ -16,28 +16,28 @@ let
       enable = mkOption {
         default = false;
         type = types.bool;
-        description = "The block device is backed by an encrypted one, adds this device as a initrd luks entry";
+        description = "The block device is backed by an encrypted one, adds this device as a initrd luks entry.";
       };
 
       blkDev = mkOption {
         default = null;
         example = "/dev/sda1";
         type = types.uniq (types.nullOr types.string);
-        description = "Location of the backing encrypted device";
+        description = "Location of the backing encrypted device.";
       };
 
       label = mkOption {
         default = null;
         example = "rootfs";
         type = types.uniq (types.nullOr types.string);
-        description = "Label of the backing encrypted device";
+        description = "Label of the backing encrypted device.";
       };
 
       keyFile = mkOption {
         default = null;
         example = "/root/.swapkey";
         type = types.uniq (types.nullOr types.string);
-        description = "File system location of keyfile";
+        description = "File system location of keyfile.";
       };
     };
   };
diff --git a/nixos/tests/avahi.nix b/nixos/tests/avahi.nix
index b6f18087c56f..3898ddb4e8e6 100644
--- a/nixos/tests/avahi.nix
+++ b/nixos/tests/avahi.nix
@@ -1,6 +1,7 @@
 # Test whether `avahi-daemon' and `libnss-mdns' work as expected.
 
 import ./make-test.nix {
+  name = "avahi";
 
   nodes = {
     one =
diff --git a/nixos/tests/bittorrent.nix b/nixos/tests/bittorrent.nix
index b58657a5ecdb..002e012f65f0 100644
--- a/nixos/tests/bittorrent.nix
+++ b/nixos/tests/bittorrent.nix
@@ -23,6 +23,7 @@ let
 in
 
 {
+  name = "bittorrent";
 
   nodes =
     { tracker =
diff --git a/nixos/tests/check-filesystems.nix b/nixos/tests/check-filesystems.nix
index 09401f9a3f44..71aa9649840f 100644
--- a/nixos/tests/check-filesystems.nix
+++ b/nixos/tests/check-filesystems.nix
@@ -6,6 +6,8 @@
 with import ../lib/build-vms.nix { inherit nixos nixpkgs system; };
 
 rec {
+  name = "check-filesystems";
+
   nodes = {
     share = {pkgs, config, ...}: {
       services.nfs.server.enable = true;
diff --git a/nixos/tests/containers.nix b/nixos/tests/containers.nix
index 8ad9cd6e0d79..f7dc8eb491d6 100644
--- a/nixos/tests/containers.nix
+++ b/nixos/tests/containers.nix
@@ -1,6 +1,7 @@
 # Test for NixOS' container support.
 
 import ./make-test.nix {
+  name = "containers";
 
   machine =
     { config, pkgs, ... }:
diff --git a/nixos/tests/firefox.nix b/nixos/tests/firefox.nix
index b42d473b8025..77a6f6ac9e71 100644
--- a/nixos/tests/firefox.nix
+++ b/nixos/tests/firefox.nix
@@ -1,4 +1,5 @@
 import ./make-test.nix ({ pkgs, ... }: {
+  name = "firefox";
 
   machine =
     { config, pkgs, ... }:
diff --git a/nixos/tests/firewall.nix b/nixos/tests/firewall.nix
index d10e10b1d91c..16922508c7c5 100644
--- a/nixos/tests/firewall.nix
+++ b/nixos/tests/firewall.nix
@@ -1,6 +1,7 @@
 # Test the firewall module.
 
 import ./make-test.nix {
+  name = "firewall";
 
   nodes =
     { walled =
diff --git a/nixos/tests/gnome3.nix b/nixos/tests/gnome3.nix
index f1a6ce633313..44668f57fc1e 100644
--- a/nixos/tests/gnome3.nix
+++ b/nixos/tests/gnome3.nix
@@ -1,4 +1,5 @@
 import ./make-test.nix {
+  name = "gnome3";
 
   machine =
     { config, pkgs, ... }:
diff --git a/nixos/tests/gnome3_12.nix b/nixos/tests/gnome3_12.nix
index 92a1919b8cb2..439674b69d5d 100644
--- a/nixos/tests/gnome3_12.nix
+++ b/nixos/tests/gnome3_12.nix
@@ -1,4 +1,5 @@
 import ./make-test.nix {
+  name = "gnome3_12";
 
   machine =
     { config, pkgs, ... }:
diff --git a/nixos/tests/influxdb.nix b/nixos/tests/influxdb.nix
index 278b264170fa..9f8ea061b960 100644
--- a/nixos/tests/influxdb.nix
+++ b/nixos/tests/influxdb.nix
@@ -1,6 +1,8 @@
 # This test runs influxdb and checks if influxdb is up and running
 
 import ./make-test.nix {
+  name = "influxdb";
+
   nodes = {
     one = { config, pkgs, ... }: {
       services.influxdb.enable = true;
diff --git a/nixos/tests/installer.nix b/nixos/tests/installer.nix
index 98e8142a0dfd..1cd1aa63a55b 100644
--- a/nixos/tests/installer.nix
+++ b/nixos/tests/installer.nix
@@ -215,10 +215,11 @@ let
     '';
 
 
-  makeInstallerTest =
+  makeInstallerTest = name:
     { createPartitions, testChannel ? false, useEFI ? false, grubVersion ? 2, grubDevice ? "/dev/vda" }:
     makeTest {
       inherit iso;
+      name = "installer-" + name;
       nodes = if testChannel then { inherit webserver; } else { };
       testScript = testScriptFun {
         inherit createPartitions testChannel useEFI grubVersion grubDevice;
@@ -233,7 +234,7 @@ in {
 
   # The (almost) simplest partitioning scheme: a swap partition and
   # one big filesystem partition.
-  simple = makeInstallerTest
+  simple = makeInstallerTest "simple"
     { createPartitions =
         ''
           $machine->succeed(
@@ -251,7 +252,7 @@ in {
     };
 
   # Same as the previous, but now with a separate /boot partition.
-  separateBoot = makeInstallerTest
+  separateBoot = makeInstallerTest "separateBoot"
     { createPartitions =
         ''
           $machine->succeed(
@@ -273,7 +274,7 @@ in {
 
   # Create two physical LVM partitions combined into one volume group
   # that contains the logical swap and root partitions.
-  lvm = makeInstallerTest
+  lvm = makeInstallerTest "lvm"
     { createPartitions =
         ''
           $machine->succeed(
@@ -295,7 +296,7 @@ in {
         '';
     };
 
-  swraid = makeInstallerTest
+  swraid = makeInstallerTest "swraid"
     { createPartitions =
         ''
           $machine->succeed(
@@ -328,7 +329,7 @@ in {
     };
 
   # Test a basic install using GRUB 1.
-  grub1 = makeInstallerTest
+  grub1 = makeInstallerTest "grub1"
     { createPartitions =
         ''
           $machine->succeed(
@@ -348,7 +349,7 @@ in {
     };
 
   # Test an EFI install.
-  efi = makeInstallerTest
+  efi = makeInstallerTest "efi"
     { createPartitions =
         ''
           $machine->succeed(
@@ -369,6 +370,7 @@ in {
   # Rebuild the CD configuration with a little modification.
   rebuildCD = makeTest
     { inherit iso;
+      name = "rebuild-CD";
       nodes = { };
       testScript =
         ''
diff --git a/nixos/tests/ipv6.nix b/nixos/tests/ipv6.nix
index eb15363d3c32..af6fec6bfbf5 100644
--- a/nixos/tests/ipv6.nix
+++ b/nixos/tests/ipv6.nix
@@ -2,6 +2,7 @@
 # solicication/advertisement using radvd works.
 
 import ./make-test.nix {
+  name = "ipv6";
 
   nodes =
     { client = { config, pkgs, ... }: { };
diff --git a/nixos/tests/jenkins.nix b/nixos/tests/jenkins.nix
index ad7ea78ac49b..28027c294bc6 100644
--- a/nixos/tests/jenkins.nix
+++ b/nixos/tests/jenkins.nix
@@ -4,6 +4,7 @@
 #   3. jenkins service not started on slave node
 
 import ./make-test.nix {
+  name = "jenkins";
 
   nodes = {
 
diff --git a/nixos/tests/kde4.nix b/nixos/tests/kde4.nix
index 99a82a6b95df..90c37397821e 100644
--- a/nixos/tests/kde4.nix
+++ b/nixos/tests/kde4.nix
@@ -1,4 +1,5 @@
 import ./make-test.nix ({ pkgs, ... }: {
+  name = "kde4";
 
   machine =
     { config, pkgs, ... }:
diff --git a/nixos/tests/kexec.nix b/nixos/tests/kexec.nix
index b09287682c01..0f0565a60e95 100644
--- a/nixos/tests/kexec.nix
+++ b/nixos/tests/kexec.nix
@@ -1,6 +1,7 @@
 # Test whether fast reboots via kexec work.
 
 import ./make-test.nix  {
+  name = "kexec";
 
   machine = { config, pkgs, ... }:
     { virtualisation.vlans = [ ]; };
diff --git a/nixos/tests/login.nix b/nixos/tests/login.nix
index 44c53c231c81..e8373219ca68 100644
--- a/nixos/tests/login.nix
+++ b/nixos/tests/login.nix
@@ -1,6 +1,7 @@
 import ./make-test.nix ({ pkgs, latestKernel ? false, ... }:
 
 {
+  name = "login";
 
   machine =
     { config, pkgs, lib, ... }:
diff --git a/nixos/tests/logstash.nix b/nixos/tests/logstash.nix
index e6aba7a10126..7284cde7a33c 100644
--- a/nixos/tests/logstash.nix
+++ b/nixos/tests/logstash.nix
@@ -2,6 +2,7 @@
 # elasticsearch is started.
 
 import ./make-test.nix {
+  name = "logstash";
 
   nodes = {
     one =
diff --git a/nixos/tests/misc.nix b/nixos/tests/misc.nix
index 8caef146ec87..c03db6c43353 100644
--- a/nixos/tests/misc.nix
+++ b/nixos/tests/misc.nix
@@ -1,6 +1,7 @@
 # Miscellaneous small tests that don't warrant their own VM run.
 
 import ./make-test.nix {
+  name = "misc";
 
   machine =
     { config, lib, pkgs, ... }:
diff --git a/nixos/tests/mpich.nix b/nixos/tests/mpich.nix
index 13cd0960d07c..a4ef7b624267 100644
--- a/nixos/tests/mpich.nix
+++ b/nixos/tests/mpich.nix
@@ -1,6 +1,8 @@
 # Simple example to showcase distributed tests using NixOS VMs.
 
 import ./make-test.nix {
+  name = "mpich";
+
   nodes = {
     master =
       { config, pkgs, ... }: {
diff --git a/nixos/tests/mumble.nix b/nixos/tests/mumble.nix
index 68ab8b642b01..32aae9161399 100644
--- a/nixos/tests/mumble.nix
+++ b/nixos/tests/mumble.nix
@@ -7,6 +7,8 @@ let
   };
 in
 {
+  name = "mumble";
+
   nodes = {
     server = { config, pkgs, ... }: {
       services.murmur.enable       = true;
diff --git a/nixos/tests/munin.nix b/nixos/tests/munin.nix
index acc4b949ab57..31676c10df1b 100644
--- a/nixos/tests/munin.nix
+++ b/nixos/tests/munin.nix
@@ -2,6 +2,7 @@
 # machine.
 
 import ./make-test.nix {
+  name = "munin";
 
   nodes = {
     one =
diff --git a/nixos/tests/mysql-replication.nix b/nixos/tests/mysql-replication.nix
index 7d0cf6d85a1a..5786fdbc58cd 100644
--- a/nixos/tests/mysql-replication.nix
+++ b/nixos/tests/mysql-replication.nix
@@ -6,6 +6,8 @@ let
 in
 
 {
+  name = "mysql-replication";
+
   nodes = {
     master =
       { pkgs, config, ... }:
diff --git a/nixos/tests/mysql.nix b/nixos/tests/mysql.nix
index 566d03baf367..0a753b9b625b 100644
--- a/nixos/tests/mysql.nix
+++ b/nixos/tests/mysql.nix
@@ -1,4 +1,5 @@
 import ./make-test.nix {
+  name = "mysql";
 
   nodes = {
     master =
diff --git a/nixos/tests/nat.nix b/nixos/tests/nat.nix
index 02981469e106..5fdcc0e97ca9 100644
--- a/nixos/tests/nat.nix
+++ b/nixos/tests/nat.nix
@@ -5,6 +5,7 @@
 # for the client.
 
 import ./make-test.nix {
+  name = "nat";
 
   nodes =
     { client =
diff --git a/nixos/tests/nfs.nix b/nixos/tests/nfs.nix
index 864d05626b67..61b2431c04c7 100644
--- a/nixos/tests/nfs.nix
+++ b/nixos/tests/nfs.nix
@@ -17,6 +17,7 @@ let
 in
 
 {
+  name = "nfs";
 
   nodes =
     { client1 = client;
diff --git a/nixos/tests/openssh.nix b/nixos/tests/openssh.nix
index 0b9714c275da..692618c5a84d 100644
--- a/nixos/tests/openssh.nix
+++ b/nixos/tests/openssh.nix
@@ -1,4 +1,22 @@
-import ./make-test.nix ({ pkgs, ... }: {
+import ./make-test.nix ({ pkgs, ... }:
+
+let
+  snakeOilPrivateKey = pkgs.writeText "privkey.snakeoil" ''
+    -----BEGIN EC PRIVATE KEY-----
+    MHcCAQEEIHQf/khLvYrQ8IOika5yqtWvI0oquHlpRLTZiJy5dRJmoAoGCCqGSM49
+    AwEHoUQDQgAEKF0DYGbBwbj06tA3fd/+yP44cvmwmHBWXZCKbS+RQlAKvLXMWkpN
+    r1lwMyJZoSGgBHoUahoYjTh9/sJL7XLJtA==
+    -----END EC PRIVATE KEY-----
+  '';
+
+  snakeOilPublicKey = pkgs.lib.concatStrings [
+    "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHA"
+    "yNTYAAABBBChdA2BmwcG49OrQN33f/sj+OHL5sJhwVl2Qim0vkUJQCry1zFpKTa"
+    "9ZcDMiWaEhoAR6FGoaGI04ff7CS+1yybQ= sakeoil"
+  ];
+
+in {
+  name = "openssh";
 
   nodes = {
 
@@ -9,6 +27,9 @@ import ./make-test.nix ({ pkgs, ... }: {
         services.openssh.enable = true;
         security.pam.services.sshd.limits =
           [ { domain = "*"; item = "memlock"; type = "-"; value = 1024; } ];
+        users.extraUsers.root.openssh.authorizedKeys.keys = [
+          snakeOilPublicKey
+        ];
       };
 
     client =
@@ -23,15 +44,25 @@ import ./make-test.nix ({ pkgs, ... }: {
 
     $server->waitForUnit("sshd");
 
-    $server->succeed("mkdir -m 700 /root/.ssh");
-    $server->copyFileFromHost("key.pub", "/root/.ssh/authorized_keys");
+    subtest "manual-authkey", sub {
+      $server->succeed("mkdir -m 700 /root/.ssh");
+      $server->copyFileFromHost("key.pub", "/root/.ssh/authorized_keys");
+
+      $client->succeed("mkdir -m 700 /root/.ssh");
+      $client->copyFileFromHost("key", "/root/.ssh/id_dsa");
+      $client->succeed("chmod 600 /root/.ssh/id_dsa");
 
-    $client->succeed("mkdir -m 700 /root/.ssh");
-    $client->copyFileFromHost("key", "/root/.ssh/id_dsa");
-    $client->succeed("chmod 600 /root/.ssh/id_dsa");
+      $client->waitForUnit("network.target");
+      $client->succeed("ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'echo hello world' >&2");
+      $client->succeed("ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'ulimit -l' | grep 1024");
+    };
 
-    $client->waitForUnit("network.target");
-    $client->succeed("ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'echo hello world' >&2");
-    $client->succeed("ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no server 'ulimit -l' | grep 1024");
+    subtest "configured-authkey", sub {
+      $client->succeed("cat ${snakeOilPrivateKey} > privkey.snakeoil");
+      $client->succeed("chmod 600 privkey.snakeoil");
+      $client->succeed("ssh -o UserKnownHostsFile=/dev/null" .
+                       " -o StrictHostKeyChecking=no -i privkey.snakeoil" .
+                       " server true");
+    };
   '';
 })
diff --git a/nixos/tests/partition.nix b/nixos/tests/partition.nix
index 120ecaad8812..72fd37e041e5 100644
--- a/nixos/tests/partition.nix
+++ b/nixos/tests/partition.nix
@@ -63,6 +63,8 @@ let
     logvol / --size=1000 --grow --fstype=ext4 --name=root --vgname=nixos
   '';
 in {
+  name = "partitiion";
+
   machine = { config, pkgs, ... }: {
     environment.systemPackages = [
       pkgs.pythonPackages.nixpart
diff --git a/nixos/tests/phabricator.nix b/nixos/tests/phabricator.nix
index 8a8c6cb784cc..53038474c91a 100644
--- a/nixos/tests/phabricator.nix
+++ b/nixos/tests/phabricator.nix
@@ -1,4 +1,5 @@
 import ./make-test.nix ({ pkgs, ... }: {
+  name = "phabricator";
 
   nodes = {
     storage =
diff --git a/nixos/tests/printing.nix b/nixos/tests/printing.nix
index 16f9812d93b5..a55e077c2696 100644
--- a/nixos/tests/printing.nix
+++ b/nixos/tests/printing.nix
@@ -1,6 +1,7 @@
 # Test printing via CUPS.
 
 import ./make-test.nix ({pkgs, ... }: {
+  name = "printing";
 
   nodes = {
 
diff --git a/nixos/tests/proxy.nix b/nixos/tests/proxy.nix
index 88dbdb2720fb..01f0f3fe17a3 100644
--- a/nixos/tests/proxy.nix
+++ b/nixos/tests/proxy.nix
@@ -14,6 +14,7 @@ let
 in
 
 {
+  name = "proxy";
 
   nodes =
     { proxy =
diff --git a/nixos/tests/quake3.nix b/nixos/tests/quake3.nix
index 3ff12fd57c06..b16cb179982a 100644
--- a/nixos/tests/quake3.nix
+++ b/nixos/tests/quake3.nix
@@ -13,6 +13,7 @@ let
 in
 
 rec {
+  name = "quake3";
 
   makeCoverageReport = true;
 
diff --git a/nixos/tests/rabbitmq.nix b/nixos/tests/rabbitmq.nix
index ffcdde9d87f2..3ef3f92764c9 100644
--- a/nixos/tests/rabbitmq.nix
+++ b/nixos/tests/rabbitmq.nix
@@ -1,6 +1,7 @@
 # This test runs rabbitmq and checks if rabbitmq is up and running.
 
 import ./make-test.nix ({ pkgs, ... }: {
+  name = "rabbitmq";
 
   nodes = {
     one = { config, pkgs, ... }: {
diff --git a/nixos/tests/simple.nix b/nixos/tests/simple.nix
index e21b919cdf80..62d748d64296 100644
--- a/nixos/tests/simple.nix
+++ b/nixos/tests/simple.nix
@@ -1,4 +1,5 @@
 import ./make-test.nix {
+  name = "simple"
 
   machine = { config, pkgs, ... }: { };
 
diff --git a/nixos/tests/subversion.nix b/nixos/tests/subversion.nix
index e6746dc08287..50277edbdd89 100644
--- a/nixos/tests/subversion.nix
+++ b/nixos/tests/subversion.nix
@@ -32,6 +32,7 @@ let
 in
 
 {
+  name = "subversion";
 
   nodes =
     { webserver =
diff --git a/nixos/tests/tomcat.nix b/nixos/tests/tomcat.nix
index 3b0b1bb79117..f3ee3477b5ac 100644
--- a/nixos/tests/tomcat.nix
+++ b/nixos/tests/tomcat.nix
@@ -1,4 +1,5 @@
 import ./make-test.nix {
+  name = "tomcat";
 
   nodes = {
     server =
diff --git a/nixos/tests/trac.nix b/nixos/tests/trac.nix
index 3f17dafaca15..87a2d328b4a6 100644
--- a/nixos/tests/trac.nix
+++ b/nixos/tests/trac.nix
@@ -1,4 +1,5 @@
 import ./make-test.nix ({ pkgs, ... }: {
+  name = "trac";
 
   nodes = {
     storage =
diff --git a/nixos/tests/udisks2.nix b/nixos/tests/udisks2.nix
index e0c57d7c34d6..1d2f79e4f6c1 100644
--- a/nixos/tests/udisks2.nix
+++ b/nixos/tests/udisks2.nix
@@ -10,6 +10,7 @@ let
 in
 
 {
+  name = "udisks2";
 
   machine =
     { config, pkgs, ... }:
diff --git a/nixos/tests/xfce.nix b/nixos/tests/xfce.nix
index ded37943e51d..ced0c6b9826b 100644
--- a/nixos/tests/xfce.nix
+++ b/nixos/tests/xfce.nix
@@ -1,4 +1,5 @@
 import ./make-test.nix {
+  name = "xfce";
 
   machine =
     { config, pkgs, ... }:
diff --git a/pkgs/applications/audio/transcode/default.nix b/pkgs/applications/audio/transcode/default.nix
new file mode 100644
index 000000000000..c414992a12dd
--- /dev/null
+++ b/pkgs/applications/audio/transcode/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, flac, lame, zlib, libjpeg, libvorbis, libtheora, libxml2
+, lzo, libdvdread, pkgconfig, x264, libmpeg2, xvidcore }:
+
+stdenv.mkDerivation rec {
+  name = "transcode-1.1.7";
+  src = fetchurl {
+    url = "https://bitbucket.org/france/transcode-tcforge/downloads/${name}.tar.bz2";
+    sha256 = "1e4e72d8e0dd62a80b8dd90699f5ca64c9b0cb37a5c9325c184166a9654f0a92";
+  };
+
+  buildInputs = [ flac lame zlib libjpeg libvorbis libtheora libxml2 lzo
+                  libdvdread pkgconfig x264 libmpeg2 xvidcore ];
+  configureFlags = "--disable-ffmpeg --disable-libavcodec --disable-libavformat
+    --enable-lzo --enable-ogg --enable-vorbis --enable-theora --enable-libxml2
+    --enable-x264 --enable-libmpeg2 --enable-xvid";
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Suite of command line utilities for transcoding video and audio codecs, and for converting beween different container formats";
+    homepage = http://www.transcoding.org/;
+    license = licenses.lgpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/editors/emacs-modes/structured-haskell-mode/default.nix b/pkgs/applications/editors/emacs-modes/structured-haskell-mode/default.nix
index a832c7d5942c..a9c2478d451c 100644
--- a/pkgs/applications/editors/emacs-modes/structured-haskell-mode/default.nix
+++ b/pkgs/applications/editors/emacs-modes/structured-haskell-mode/default.nix
@@ -1,15 +1,16 @@
-{ cabal, emacs, haskellSrcExts }:
+{ cabal, emacs, haskellMode, haskellSrcExts }:
 
 cabal.mkDerivation (self: {
   pname = "structured-haskell-mode";
-  version = "1.0.2";
-  sha256 = "1lwdhlr38y5hdr78nplplr3q0hrjhryw378f1857qh0lvp03gwl2";
+  version = "1.0.3";
+  sha256 = "0axmw8bj51q8v0wd4jp6giw9dnv0mp7kp8yd16s4nm4hcqgrh5h2";
   isLibrary = false;
   isExecutable = true;
-  buildDepends = [ haskellSrcExts ];
+  buildDepends = [ haskellSrcExts haskellMode ];
   buildTools = [ emacs ];
   postInstall = ''
-    emacs -L elisp --batch -f batch-byte-compile "elisp/"*.el
+    emacs -L elisp -L ${haskellMode}/share/emacs/site-lisp \
+      --batch -f batch-byte-compile "elisp/"*.el
     install -d $out/share/emacs/site-lisp
     install "elisp/"*.el "elisp/"*.elc  $out/share/emacs/site-lisp
   '';
diff --git a/pkgs/applications/editors/vim/configurable.nix b/pkgs/applications/editors/vim/configurable.nix
index 9e2abffc451e..e0d8de157b09 100644
--- a/pkgs/applications/editors/vim/configurable.nix
+++ b/pkgs/applications/editors/vim/configurable.nix
@@ -21,7 +21,7 @@ composableDerivation {
         # latest release
       args.fetchhg {
             url = "https://vim.googlecode.com/hg/";
-            tag = "v7-4-316";
+            rev = "v7-4-316";
             sha256 = "0scxx33p1ky0wihk04xqpd6rygp1crm0hx446zbjwbsjj6xxn7sx";
       };
 
diff --git a/pkgs/applications/editors/vim/default.nix b/pkgs/applications/editors/vim/default.nix
index 357de6249fa4..bf9472801731 100644
--- a/pkgs/applications/editors/vim/default.nix
+++ b/pkgs/applications/editors/vim/default.nix
@@ -7,7 +7,7 @@ stdenv.mkDerivation rec {
 
   src = fetchhg {
     url = "https://vim.googlecode.com/hg/";
-    tag = "v7-4-316";
+    rev = "v7-4-316";
     sha256 = "0scxx33p1ky0wihk04xqpd6rygp1crm0hx446zbjwbsjj6xxn7sx";
   };
 
diff --git a/pkgs/applications/graphics/photivo/default.nix b/pkgs/applications/graphics/photivo/default.nix
index 61e3f666dca7..156966ac46c1 100644
--- a/pkgs/applications/graphics/photivo/default.nix
+++ b/pkgs/applications/graphics/photivo/default.nix
@@ -6,7 +6,7 @@ stdenv.mkDerivation rec {
 
   src = fetchhg {
     url = "http://code.google.com/p/photivo/";
-    tag = "d687864489da";
+    rev = "d687864489da";
     sha256 = "0f6y18k7db2ci6xn664zcwm1g1k04sdv7gg1yd5jk41bndjb7z8h";
   };
 
diff --git a/pkgs/applications/misc/camlistore/default.nix b/pkgs/applications/misc/camlistore/default.nix
new file mode 100644
index 000000000000..80d8dd801a9b
--- /dev/null
+++ b/pkgs/applications/misc/camlistore/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, lib, go, fetchurl }:
+
+stdenv.mkDerivation rec {
+  version = "0.7";
+  name = "camlistore-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/bradfitz/camlistore/archive/0.7.tar.gz";
+    sha256 = "0lc35x2b9llrnma0m5czivly0c3l4lh3ldw9hwn83lkh8n0bzn11";
+  };
+
+  buildInputs = [ go ];
+
+  buildPhase = ''
+    go run make.go
+    rm bin/README
+  '';
+
+  installPhase = ''
+    ensureDir $out/bin
+    cp bin/* $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Camlistore is a way of storing, syncing, sharing, modelling and backing up content";
+    homepage = https://camlistore.org;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ cstrahan ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/applications/misc/kdeconnect/default.nix b/pkgs/applications/misc/kdeconnect/default.nix
index 70f3855c3d66..f0a66d421011 100644
--- a/pkgs/applications/misc/kdeconnect/default.nix
+++ b/pkgs/applications/misc/kdeconnect/default.nix
@@ -1,15 +1,15 @@
-{ stdenv, fetchurl, gettext, kdelibs, makeWrapper, qca2, qca2_ossl, qjson }:
+{ stdenv, fetchurl, gettext, kdelibs, libXtst, makeWrapper, qca2, qca2_ossl, qjson }:
 
 stdenv.mkDerivation rec {
   name = "kdeconnect-${version}";
-  version = "0.5.2.1";
+  version = "0.7";
 
   src = fetchurl {
-    url = "http://download.kde.org/unstable/kdeconnect/0.5.2/src/kdeconnect-kde-${version}.tar.xz";
-    sha256 = "0g632ha7xcqf839c4h0dz5637bz6gnn2gz76dc0qq09zbrq49i08";
+    url = "http://download.kde.org/unstable/kdeconnect/${version}/src/kdeconnect-kde-${version}.tar.xz";
+    sha256 = "0a8g3avg9x5j07cf3c16i4w65q3fn1cbs8zxgq0vl14rzdy09q2j";
   };
 
-  buildInputs = [ gettext kdelibs makeWrapper qca2 qca2_ossl qjson ];
+  buildInputs = [ gettext kdelibs libXtst makeWrapper qca2 qca2_ossl qjson ];
 
   postInstall = ''
     wrapProgram $out/lib/kde4/libexec/kdeconnectd --prefix QT_PLUGIN_PATH : ${qca2_ossl}/lib/qt4/plugins
diff --git a/pkgs/applications/misc/makeself/default.nix b/pkgs/applications/misc/makeself/default.nix
index 9ea5f18ee629..e433b83cdeb5 100644
--- a/pkgs/applications/misc/makeself/default.nix
+++ b/pkgs/applications/misc/makeself/default.nix
@@ -1,23 +1,25 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchgit }:
 
 stdenv.mkDerivation rec {
-  name = "makeself-2.1.5";
-  src = fetchurl {
-    url = "http://megastep.org/makeself/makeself.run";
-    sha256 = "0khs19xpid4ng0igrjyz3vsi6a5xyixrrrhgdxpdhd2wnf5nc9w2";
+  name = "makeself-2.2.0";
+  src = fetchgit {
+    url = "https://github.com/megastep/makeself.git";
+    rev = "b836b9281ae99abe1865608b065551da56c80719";
+    sha256 = "f7c97f0f8ad8128f2f1b54383319f2cc44cbb05b60ced222784debdf326f23ad";
   };
-  unpackPhase = "sh ${src}";
   installPhase = ''
-    cd ${name}
     mkdir -p $out/{bin,share/{${name},man/man1}}
-    mv makeself.lsm README $out/share/${name}
+    mv makeself.lsm README.md $out/share/${name}
     mv makeself.sh $out/bin/makeself
     mv makeself.1  $out/share/man/man1/
     mv makeself-header.sh $out/share/${name}
     sed -e 's|HEADER=`dirname $0`/makeself-header.sh|HEADER=`dirname $0`/../share/${name}/makeself-header.sh|' -i $out/bin/makeself
   '';
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://megastep.org/makeself;
     description = "Utility to create self-extracting packages";
+    license = licenses.gpl2;
+    maintainer = maintainers.wmertens;
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/applications/misc/nc-indicators/default.nix b/pkgs/applications/misc/nc-indicators/default.nix
index a33cfbdf159a..e3a1708326cd 100644
--- a/pkgs/applications/misc/nc-indicators/default.nix
+++ b/pkgs/applications/misc/nc-indicators/default.nix
@@ -2,13 +2,13 @@
 
 cabal.mkDerivation (self: {
   pname = "nc-indicators";
-  version = "0.1";
-  sha256 = "19amwfcbwfxcj0gr7w0vgxl427l43q3l2s3n3zsxhqwkfblxmfy5";
+  version = "0.2";
+  sha256 = "0z3h0d3cl0xapysq5sh1rnbp8fg8adlq0x3i4ql9xin9in29q27q";
   isLibrary = false;
   isExecutable = true;
   buildDepends = [ attoparsec gtk hflags lens pipes stm ];
   meta = {
-    homepage = "https://github.com/nilcons/nc-indicators/issues";
+    homepage = "https://github.com/nilcons/nc-indicators";
     description = "CPU load and memory usage indicators for i3bar";
     license = self.stdenv.lib.licenses.asl20;
     platforms = self.ghc.meta.platforms;
diff --git a/pkgs/applications/misc/ocropus/default.nix b/pkgs/applications/misc/ocropus/default.nix
index fef3209d11a6..240a975e611e 100644
--- a/pkgs/applications/misc/ocropus/default.nix
+++ b/pkgs/applications/misc/ocropus/default.nix
@@ -40,7 +40,7 @@ pythonPackages.buildPythonPackage rec {
 
   src = fetchhg {
     url = "https://code.google.com/p/ocropus.ocropy";
-    tag = "a6e0fbd820ce";
+    rev = "a6e0fbd820ce";
     sha256 = "1s0v0gd6psfjp6lghwl2dj49h18mgf2n2z8hqzw8430nzhglnlvr";
   };
 
diff --git a/pkgs/applications/networking/browsers/dwb/default.nix b/pkgs/applications/networking/browsers/dwb/default.nix
index 87a548cbb3b7..3f490315515b 100644
--- a/pkgs/applications/networking/browsers/dwb/default.nix
+++ b/pkgs/applications/networking/browsers/dwb/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchgit, pkgconfig, makeWrapper, libsoup, webkit, gtk3, gnutls, json_c,
-  m4, glib_networking, gsettings_desktop_schemas }:
+  m4, glib_networking, gsettings_desktop_schemas, dconf }:
 
 stdenv.mkDerivation {
   name = "dwb-2014-06-17";
@@ -19,7 +19,7 @@ stdenv.mkDerivation {
 
   preFixup=''
     wrapProgram "$out/bin/dwb" \
-     --prefix GIO_EXTRA_MODULES : "${glib_networking}/lib/gio/modules" \
+     --prefix GIO_EXTRA_MODULES : "${glib_networking}/lib/gio/modules:${dconf}/lib/gio/modules" \
      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:$out/share"
     wrapProgram "$out/bin/dwbem" \
      --prefix GIO_EXTRA_MODULES : "${glib_networking}/lib/gio/modules"
diff --git a/pkgs/applications/networking/browsers/firefox-bin/default.nix b/pkgs/applications/networking/browsers/firefox-bin/default.nix
new file mode 100644
index 000000000000..b8e3124f1858
--- /dev/null
+++ b/pkgs/applications/networking/browsers/firefox-bin/default.nix
@@ -0,0 +1,337 @@
+# This file is generated from generate_nix.rb
+# Execute the following command in a temporary directory to update the file.
+#
+# ruby generate_nix.rb > default.nix
+
+{ stdenv, fetchurl, config
+, alsaLib
+, atk
+, cairo
+, cups
+, dbus_glib
+, dbus_libs
+, fontconfig
+, freetype
+, gconf
+, gdk_pixbuf
+, glib
+, glibc
+, gst_plugins_base
+, gstreamer
+, gtk
+, libX11
+, libXScrnSaver
+, libXext
+, libXinerama
+, libXrender
+, libXt
+, libcanberra
+, libgnome
+, libgnomeui
+, mesa
+, nspr
+, nss
+, pango
+, heimdal
+, pulseaudio
+, systemd
+}:
+
+let
+  version = "30.0";
+  sources = [
+    { locale = "ach"; arch = "linux-i686"; sha256 = "44d2fc9d491b6c001e35cff6e5f1c38c8561d24f8fe2dfb4d79365bcabe965ea"; }
+    { locale = "ach"; arch = "linux-x86_64"; sha256 = "e9fb52a3b82a1434b7fa3bae606749819672c96ce8678c51f1fdbc68520e26bf"; }
+    { locale = "af"; arch = "linux-i686"; sha256 = "bfce74c891ea370ce4e0fe43d578c3c0050d2655fff7372806ed6be338b2c438"; }
+    { locale = "af"; arch = "linux-x86_64"; sha256 = "18408a9c3f3b8c4d9f8cfe067ac23ddcdd3d3a7a22892ba8d74de5679a064db6"; }
+    { locale = "an"; arch = "linux-i686"; sha256 = "601efbf7944408ba1ac35831eaa92c4910cd904bfadc32895ff8d756c70ae934"; }
+    { locale = "an"; arch = "linux-x86_64"; sha256 = "0ba4c272ebac9ecafe5dbfb7fbba1cd2790d126f5b1756ab9a323c94b644df0b"; }
+    { locale = "ar"; arch = "linux-i686"; sha256 = "23ea3168aea75b044fa217b78b01a2dc8c9dd92171d726c4a78c23cffc474469"; }
+    { locale = "ar"; arch = "linux-x86_64"; sha256 = "dae2c1634e17b8c3e276e4c758c4d4c3b1b0d6006adac8e420c13b6f09a6cf53"; }
+    { locale = "as"; arch = "linux-i686"; sha256 = "7d36bd4589556374822f2ab5dd102d557257b5e0b529d1c963f96e9ab6a08850"; }
+    { locale = "as"; arch = "linux-x86_64"; sha256 = "c13ccf3546bafcfeb41c33762e41af249306d4bcfd3ad7fc957db481372be0dc"; }
+    { locale = "ast"; arch = "linux-i686"; sha256 = "853310674d7011956d760883af15b8e343250f8fc3acb3067e0f5a3d978c06ff"; }
+    { locale = "ast"; arch = "linux-x86_64"; sha256 = "2b938081e8672ed5ae16c40c6300e585a26f54da278726f48b98f3ca3e065662"; }
+    { locale = "be"; arch = "linux-i686"; sha256 = "b9acce210f2adf188ba9a3d92774a846a263baa5e076bb9452b89ca5609d6ac8"; }
+    { locale = "be"; arch = "linux-x86_64"; sha256 = "dd2a33ee1ed8c848454b6e64a0c1527f193d070e4d867c4f13fa84f39c9bfecd"; }
+    { locale = "bg"; arch = "linux-i686"; sha256 = "ee060cd395ef28bbad4be74aa42e2a51e7ad866183d139bffbcc7634dc94d738"; }
+    { locale = "bg"; arch = "linux-x86_64"; sha256 = "11a5dd807083da8c3132d9d6518dc674642418eff1fccf68e451ac67b90f141a"; }
+    { locale = "bn-BD"; arch = "linux-i686"; sha256 = "339d286f7f8f469bb6f9f85a8b21a745ecc42717dc91c21c7db88822e9be661a"; }
+    { locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "fc3f06743a84a7684e43cd4efedb02a126dd119f6141da49c6120f1bbcdf9392"; }
+    { locale = "bn-IN"; arch = "linux-i686"; sha256 = "c585982368f258a8a728f782c37428311f0b6a6512231c077a439dd93645c3a2"; }
+    { locale = "bn-IN"; arch = "linux-x86_64"; sha256 = "00b9af4425050ec42b4a45a3c4a16700edcc66297331b601950fb81421ef8eb4"; }
+    { locale = "br"; arch = "linux-i686"; sha256 = "b86d944592f16f5f0e558106e3464248e3d686f45527a40fb64aaa79d9f73422"; }
+    { locale = "br"; arch = "linux-x86_64"; sha256 = "b894c12508f0b0a892154ea61fb2bb01947929041a63518f7c405ed976cc4d3f"; }
+    { locale = "bs"; arch = "linux-i686"; sha256 = "f7da0fead608f63c4a5be92fed9e0109fbe7288948d15dde05e10bba80b47743"; }
+    { locale = "bs"; arch = "linux-x86_64"; sha256 = "1cb090f9b16bcae95055377bc14a531697c480ad50e3a098dbd572770924d558"; }
+    { locale = "ca"; arch = "linux-i686"; sha256 = "0b36330715f8909e1515c535a06f4e3fdd7660de11b3424b4ce88f336561935f"; }
+    { locale = "ca"; arch = "linux-x86_64"; sha256 = "c6e9e545d09e589fd5fbfd2c6482a5ef366c470e294823b3ba05c5e728bca2c2"; }
+    { locale = "cs"; arch = "linux-i686"; sha256 = "ff1ca239be0e99b923c63c5bbc425dd2989bc40dbdc82dd731d7173fd539406a"; }
+    { locale = "cs"; arch = "linux-x86_64"; sha256 = "fe8472d6a4bf9fcda3caef51449fc3e20e1fbadbb772b330a012ffa7219afae3"; }
+    { locale = "csb"; arch = "linux-i686"; sha256 = "db1b7dbc7b0cd564a04b3a37827e8d77277cd7ba6a59403c45115d34e637f463"; }
+    { locale = "csb"; arch = "linux-x86_64"; sha256 = "023dd75e02f41a2ce9991fb40a8a46767f1a10da876a390035a084c5b97bd9d2"; }
+    { locale = "cy"; arch = "linux-i686"; sha256 = "9a6ac60099b03bdeb71c1a7739dafeff4b1682ffc43997191196e1f590421afa"; }
+    { locale = "cy"; arch = "linux-x86_64"; sha256 = "a5f2030fb08c0dd6dff95310209ed7c6ee613680dd500f00e30e26c547f9c249"; }
+    { locale = "da"; arch = "linux-i686"; sha256 = "99a893ac19b0ca28177c8957d7296e6deef9ddb36a6b5b17823cb1e6fc9ec683"; }
+    { locale = "da"; arch = "linux-x86_64"; sha256 = "69f29e795f203fe47e22daf1259c2ecfb39c362babefbbccb31405f4632f236b"; }
+    { locale = "de"; arch = "linux-i686"; sha256 = "925aac0800ce63a88fadc945da40b00ed6dde327637821518a372d7affb6e450"; }
+    { locale = "de"; arch = "linux-x86_64"; sha256 = "d86c5d2102a95ff5a6e580a1ca7af25c2f470211182ef70e988b29b195be6dd4"; }
+    { locale = "el"; arch = "linux-i686"; sha256 = "af07fac82dea32d33bd6bc440e2a645eb160d196cf0d4883b878d3d2c584f81a"; }
+    { locale = "el"; arch = "linux-x86_64"; sha256 = "fcc96c25422837f19f9ff6cde02c81c4a5a3b7c8e6809b90c8761519571db1f6"; }
+    { locale = "en-GB"; arch = "linux-i686"; sha256 = "758f7bb669743d6067e416c26f43806b16ddd16511a6818373e70960cbbd7151"; }
+    { locale = "en-GB"; arch = "linux-x86_64"; sha256 = "d46ba3d642bf43fca46dfb29efb5d08a15f114eb9facc868e86c31f7c9c98014"; }
+    { locale = "en-US"; arch = "linux-i686"; sha256 = "4bca44a1ba94bf5616f7ea650e37cd3e5a719546def9e4a08ee88aedbc3a4db6"; }
+    { locale = "en-US"; arch = "linux-x86_64"; sha256 = "3303cc600153d0198dace9826b6883aa510d4e380aa985b092b1da67ad865625"; }
+    { locale = "en-ZA"; arch = "linux-i686"; sha256 = "13736870573863aab644bf2be2219fe4b5c6bde4bd79b84f22e12d39e7cda6e0"; }
+    { locale = "en-ZA"; arch = "linux-x86_64"; sha256 = "7e88fa9f355f6787d38e75d86d5b592a1a2cec208255f276887f53a12beb9e97"; }
+    { locale = "eo"; arch = "linux-i686"; sha256 = "ae4446e223c0169dd0b56db58760fdb323a2bec8135e45c79d385d895b64cee8"; }
+    { locale = "eo"; arch = "linux-x86_64"; sha256 = "202f61dd8e5506594ae70bbee9150d86c8037887f8345871dc5c1c9e498b1d66"; }
+    { locale = "es-AR"; arch = "linux-i686"; sha256 = "8fb276ed26fd46fceb029fbade706cb6e55d2958f03400ec1290784c533888c4"; }
+    { locale = "es-AR"; arch = "linux-x86_64"; sha256 = "78130525d30d7c592bb63d7cedf3ab5db804d457c4d127d90b93d94501ad7b3c"; }
+    { locale = "es-CL"; arch = "linux-i686"; sha256 = "ef6bf393a681f4a08031eeda61bba3614ebfab222fed43f9f8b21cfa8eb3862e"; }
+    { locale = "es-CL"; arch = "linux-x86_64"; sha256 = "e56224bca0ebfab9eedecafafd792e48cb67e3f8741c4d5a94c8f74f634cecf6"; }
+    { locale = "es-ES"; arch = "linux-i686"; sha256 = "9e007e6aa0f8aa3d1fac5dc13e98f81c23e6ff1e574545c021f8f7feeff86ce2"; }
+    { locale = "es-ES"; arch = "linux-x86_64"; sha256 = "d4ff94f46fd086300992a30a1c4a8aa97ad7164d6cd26e82b20b5d0680b38169"; }
+    { locale = "es-MX"; arch = "linux-i686"; sha256 = "9db42a0557838b23ac4937adfec407804e624e679e9ffd6da739d17cdfbaab78"; }
+    { locale = "es-MX"; arch = "linux-x86_64"; sha256 = "d42d619d6da78d0bbcb32b0a93a2eaa623eadb3a5af43e5b8b14400e6e969779"; }
+    { locale = "et"; arch = "linux-i686"; sha256 = "5947822f3f02bd4ba530ad978de1a9d237981e3abdf1598e44095c650794d1ff"; }
+    { locale = "et"; arch = "linux-x86_64"; sha256 = "7521a4db287bb928f50b64817f3631e96ea4cead81b1a84ab7c3b930b3450e86"; }
+    { locale = "eu"; arch = "linux-i686"; sha256 = "44095e98e74205fa012a2c0c636de3fe9cfb79d5729abf15214c1e7734946014"; }
+    { locale = "eu"; arch = "linux-x86_64"; sha256 = "2032dfbc82a9aca1a2f4cf67e6089400bf305d13906f048c5c9b906a7201a9fb"; }
+    { locale = "fa"; arch = "linux-i686"; sha256 = "469b8008287c93e152e762e82fb61644384c1e2631a6c45033503652daed09b1"; }
+    { locale = "fa"; arch = "linux-x86_64"; sha256 = "61ea0d8941d22083f918d014d56a613788d1f4f549e5a62d50a1f9071439a36f"; }
+    { locale = "ff"; arch = "linux-i686"; sha256 = "81a0083e5e4136e3ab3e6db0e2adcedfae7572722655a9cb8b9ca388c6057342"; }
+    { locale = "ff"; arch = "linux-x86_64"; sha256 = "0efe16da918288754a3af816d72448a73690eb71b110cf3ff0586ee7505b9735"; }
+    { locale = "fi"; arch = "linux-i686"; sha256 = "a0ee069e7c3100b921aab7c54c5d32741df4e058f52cb7f42acb2643bd534b30"; }
+    { locale = "fi"; arch = "linux-x86_64"; sha256 = "55c84d504603d648e7d72a2fb8badb0bc9148cb376bb0cc6054f091867cb2613"; }
+    { locale = "fr"; arch = "linux-i686"; sha256 = "9c9abea13db23ef5ef8c9a3ccb5a0702b44a8db2402f43f01a478eb61e7ddf34"; }
+    { locale = "fr"; arch = "linux-x86_64"; sha256 = "ce26fc67cbc2031880ffa3529a59ca4122016258ab1c023e23247c26308b6a3e"; }
+    { locale = "fy-NL"; arch = "linux-i686"; sha256 = "4a734880ed65a207d98630647a341644df4f68149c50ce5e683bb21b5c27f2c6"; }
+    { locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "bace955c686456d7894ca7bc1cf854eb158d6183050318efc73768e232c9a413"; }
+    { locale = "ga-IE"; arch = "linux-i686"; sha256 = "4801f40ebd820b8f229cfcd04a04351fcee9f78268af1c9863089ef6c64d736a"; }
+    { locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "c417c0182e6f706473bc4b7cf8c14aec96f96e21c17b8593b71ff38c97f7e9d2"; }
+    { locale = "gd"; arch = "linux-i686"; sha256 = "15a9d316d472d2918eff0c6f02600e40a8f62d7ef53ab14c57537fdda0b5257a"; }
+    { locale = "gd"; arch = "linux-x86_64"; sha256 = "8fcdcf093148222865a905586774dae5d805ef22c01afadeaabe3f0c7b315dba"; }
+    { locale = "gl"; arch = "linux-i686"; sha256 = "83b0ccfe7cf7166899d17b2c9b1ea8effda9cf02024698f8db8f943a388bb3dc"; }
+    { locale = "gl"; arch = "linux-x86_64"; sha256 = "550026595e6e59405b5869183af056ba5a60a303270f1a176ef25e3db1c70289"; }
+    { locale = "gu-IN"; arch = "linux-i686"; sha256 = "7e7dc86fa805808931ba57455b99c9273a4b0aa60998affce3c4b06f0ae7fc70"; }
+    { locale = "gu-IN"; arch = "linux-x86_64"; sha256 = "e0f35d7fe7875785e3749131cf86c5cbea5cbd7b3abd2c2c69f5f8376d3e53d7"; }
+    { locale = "he"; arch = "linux-i686"; sha256 = "5c200c8da3209c2120a8576c30ab609331b52807d0640daaa1a70f665c776969"; }
+    { locale = "he"; arch = "linux-x86_64"; sha256 = "6923a64d1ac5453453f148d38f116faca41be5b1d0a13d4f128bb73db67cb8e2"; }
+    { locale = "hi-IN"; arch = "linux-i686"; sha256 = "6a7e5d06169d6dd87e505012604c93a28440156a3f81e6fe24d567f9c2b2a919"; }
+    { locale = "hi-IN"; arch = "linux-x86_64"; sha256 = "56801593b9dd5ecefed8d7eaf438879dd23006ffff9a31c543861259dedf8263"; }
+    { locale = "hr"; arch = "linux-i686"; sha256 = "4573cd0269639d122496bcaf842d8c741f4d54e8f57d0690b97d8e7e86ee7e74"; }
+    { locale = "hr"; arch = "linux-x86_64"; sha256 = "753984384829229601fbe55d0b6615f3432fdf9babe908fb642f6ac79c749727"; }
+    { locale = "hu"; arch = "linux-i686"; sha256 = "c330478e6e77eff117bce58e17661b83a30308f0a680f648fbf06d1c00f3883c"; }
+    { locale = "hu"; arch = "linux-x86_64"; sha256 = "9d118ba236aa7a9b517278c375aa4e4fa65f85c71b8bea9c41702f6ae7b815cb"; }
+    { locale = "hy-AM"; arch = "linux-i686"; sha256 = "48c1691073b6ede77f5c5d5ae07af7372f17b9f52fd92950c2cca0a01b3b340e"; }
+    { locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "beda26cefeeeeee59ea52fdd28e1e3025ca4cc3124541fc6825100a61eb398d8"; }
+    { locale = "id"; arch = "linux-i686"; sha256 = "8cf6d0bc2d4bcc68a5ddc935c3bd6ed19a63284dc3227e849be729645a6171d4"; }
+    { locale = "id"; arch = "linux-x86_64"; sha256 = "8be5900b83840871ffb6faba08fea9b35f9f396cae08b228c68e333719fb819f"; }
+    { locale = "is"; arch = "linux-i686"; sha256 = "7c167389105063b84d507b09c689fa18bf854fd695010c8273b9711b21a24034"; }
+    { locale = "is"; arch = "linux-x86_64"; sha256 = "c79321c83c9e654f6eaf96ddf5d24f279d517fbf35dfdf923acf026124919598"; }
+    { locale = "it"; arch = "linux-i686"; sha256 = "a3eb17e0eda3cbf8ffbbd1ecd1716929ac87a801f060dd8ed5291298667775a9"; }
+    { locale = "it"; arch = "linux-x86_64"; sha256 = "3742453f0748911b393fed804e5827f014cc595a9df4516438dfa163d5050411"; }
+    { locale = "ja"; arch = "linux-i686"; sha256 = "fa030c64e04766ae5200370586c08b2f25627343586cd8a0486e583f345c466e"; }
+    { locale = "ja"; arch = "linux-x86_64"; sha256 = "fddeae03ffdfef0f6cc999807e001ea931c15b1833da48655bcb5845f1e017a3"; }
+    { locale = "kk"; arch = "linux-i686"; sha256 = "39d94b10fa751faf7423e5d43cd07ef4485ff26e21e47d106d2268058e2f33d9"; }
+    { locale = "kk"; arch = "linux-x86_64"; sha256 = "1dc7138dd5c08088479c5e7e8054d7ed640504860a0043ecea2c8b0c9c1892f9"; }
+    { locale = "km"; arch = "linux-i686"; sha256 = "0d12a305de4a63fc6c6394bd4044f44ca3626cbc41ca9ef1adad6d5041f6f1fd"; }
+    { locale = "km"; arch = "linux-x86_64"; sha256 = "7710091695dd100b7f33585fce58c54fec462a96540a7d791f1935088f21fadf"; }
+    { locale = "kn"; arch = "linux-i686"; sha256 = "b039e6a1114522ccae10b89ab794a222966fbf0914513b3c14f05c082a78b922"; }
+    { locale = "kn"; arch = "linux-x86_64"; sha256 = "cf82965b25d3990a57d861d688f1bd69e5b069fe281937274060ebe36ddbb8a6"; }
+    { locale = "ko"; arch = "linux-i686"; sha256 = "8b9378d39d7b42852c2bb537b0e85312760c343e6485826ed949ab4617293025"; }
+    { locale = "ko"; arch = "linux-x86_64"; sha256 = "4b946a0cbedad2b8d0c3598c04eeb058cea05d6d7e6388e4cfa3146a40f7c449"; }
+    { locale = "ku"; arch = "linux-i686"; sha256 = "11950c4a54c6a165e924fb6e68bcc46d63b5fddfcd2561c58a0ce401c0146d36"; }
+    { locale = "ku"; arch = "linux-x86_64"; sha256 = "37a07a4e059580c31433b419bcd61d928ad1db7e607cf8443378472d54b61b78"; }
+    { locale = "lij"; arch = "linux-i686"; sha256 = "c0efca49f31800a3773b0d05add56b195d1cbea287108803bb1ef5249a0dc94f"; }
+    { locale = "lij"; arch = "linux-x86_64"; sha256 = "6e4b2d8c5e9942bc469f722110ba310b2ccdc4dda6e3baee93ae54012ae658a2"; }
+    { locale = "lt"; arch = "linux-i686"; sha256 = "acde9010aa815f6645868b03f3d68d9a24c450ed830f063e2846ac1219ee628b"; }
+    { locale = "lt"; arch = "linux-x86_64"; sha256 = "c2491cd3e5d11c302d7ec3191d646e2073c46f69966fc382901a93d16fb0c902"; }
+    { locale = "lv"; arch = "linux-i686"; sha256 = "7411de62c4d8c01c8bb15b3f2dfc2e2ed17755e2f9856ead8e5e0fd05971ffd5"; }
+    { locale = "lv"; arch = "linux-x86_64"; sha256 = "e8e57e629396eb180e0041a50ae98ecb2292f514d423423748e4d4cebc54fb59"; }
+    { locale = "mai"; arch = "linux-i686"; sha256 = "26a053e48f4e6f04e4856a0dcb26e577a6ddb99afc883786d9c260d57e5e4a6d"; }
+    { locale = "mai"; arch = "linux-x86_64"; sha256 = "86be2c736aa5ccf926d44f24afdb2d40c28444b5bd6cf090f9a847199b38b492"; }
+    { locale = "mk"; arch = "linux-i686"; sha256 = "dcf7759bcde70158298ad9e2434e37d4e8240e00589a83dd8dbba53c35466a58"; }
+    { locale = "mk"; arch = "linux-x86_64"; sha256 = "056297d6404794a8da78aeceb620b0ebbcb38a693ee1079cc02e4d0411e40ec3"; }
+    { locale = "ml"; arch = "linux-i686"; sha256 = "2d632b3a5b60f18955906adca80b7ac7af3bfa39d03afd308efd1136cfc8971d"; }
+    { locale = "ml"; arch = "linux-x86_64"; sha256 = "b54a9d47cadeae4f92d22a362ca887a18a16ef64500149ac8eb9355dbbe5971b"; }
+    { locale = "mr"; arch = "linux-i686"; sha256 = "e66b22488bf2c772fa6d29cf43f3e9c1aa2a1a867620a1144af8cb92c2647651"; }
+    { locale = "mr"; arch = "linux-x86_64"; sha256 = "da982205e9b659dd66ab05ca815324642bed2117e668e67ad620bb2d87c5d1c8"; }
+    { locale = "ms"; arch = "linux-i686"; sha256 = "ad39ffa6d6d765c1e983d885f5d139a28e481d536068d517b4807137fa8d3036"; }
+    { locale = "ms"; arch = "linux-x86_64"; sha256 = "fb1b6ed5e2e7247beb69f3d0ad937f76ce7c1107ccdad742ff5085d4b3a8da98"; }
+    { locale = "nb-NO"; arch = "linux-i686"; sha256 = "5220da4627863f9fa1c11886e9c19c315547afafa96c98b22a1a4359c75f1056"; }
+    { locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "5f9d60faadc7b76b010cd9cf35922b1881377b535e8afc5d9b974651156df866"; }
+    { locale = "nl"; arch = "linux-i686"; sha256 = "357b28841ea861b8297a4986460d1d265b27202c37bb296dcc69224f9b07fc51"; }
+    { locale = "nl"; arch = "linux-x86_64"; sha256 = "9a8505da2fe045ab6c2a2277d2d043374a26f106a5966b00f42e22fb26cf929a"; }
+    { locale = "nn-NO"; arch = "linux-i686"; sha256 = "f115bb50d1e052584caf7363db875ae222ee37449fa151e2f313c157a6274d76"; }
+    { locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "2e7829a8a20c946bddce13b7b3d1b3600f90d90d2438f3eb69188d47203b264d"; }
+    { locale = "or"; arch = "linux-i686"; sha256 = "9ad48bdf2b7f1deedb05bdcc49740d5075ebf6ec228d82a7ed455c6bb36d7cb0"; }
+    { locale = "or"; arch = "linux-x86_64"; sha256 = "a007bc73fb1ea7765016e9faebac2c4f5e0111a45b3d75d1e55f4de8931796a2"; }
+    { locale = "pa-IN"; arch = "linux-i686"; sha256 = "8a38d2b1516ed4b58e36d266cd25a5bd10548f9e412076c9b4f1f27256c98c2a"; }
+    { locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "664fa562261532d0f6bad10b84e15d47b69073768c2d12986c8d776eb1af8ddd"; }
+    { locale = "pl"; arch = "linux-i686"; sha256 = "3bb8963f1e3dcdb22cc55feebb2583fefd6f3760f4e6f2cc754174079d4ca07f"; }
+    { locale = "pl"; arch = "linux-x86_64"; sha256 = "710f1d86d2974d6ad3c63ebc0873518fd59f218ba07b27d06fb75c83af2c632e"; }
+    { locale = "pt-BR"; arch = "linux-i686"; sha256 = "cd2fafbd2291bad8481c4086db3c2973a7869b28a5e68a5ff199079814c6b3fc"; }
+    { locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "f0ba5dc2366757841afb9c9f7799c40667304c36efe7da284202e8e7a45aa1fc"; }
+    { locale = "pt-PT"; arch = "linux-i686"; sha256 = "051af14810ad0cee4487757833f1f5b4a6f6f903f3cecf00d00410c1324d9ce4"; }
+    { locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "82102b33dc1989bc3aa49da3915baf7e4012afe6e4bd7f80a301dfe847f3dbbe"; }
+    { locale = "rm"; arch = "linux-i686"; sha256 = "02051668e46d98f4e2e5becc3192f6173dfdf3a48cc82264c5821be06c5e12a0"; }
+    { locale = "rm"; arch = "linux-x86_64"; sha256 = "9600c1d272785b946058ffac9e57a8b1701d065f24fa940ad22e4b5aec2efad9"; }
+    { locale = "ro"; arch = "linux-i686"; sha256 = "7f17cbd3041396135eee08eac597c8c6a936e5a33d67d2b5de8ae157a56719ad"; }
+    { locale = "ro"; arch = "linux-x86_64"; sha256 = "ba1de85abe53a7d66f6311d6a202d91f86e871bace168cf60a759ab0e17eccdb"; }
+    { locale = "ru"; arch = "linux-i686"; sha256 = "9dcd0c2b5671fc5849b01f2932504a7217fca9a4b4eca8e9b6ff8f5a146517e2"; }
+    { locale = "ru"; arch = "linux-x86_64"; sha256 = "725214900968e4e648d3d13635bf72d34910eb31a30b83a3e7ba9c5c4085c2d7"; }
+    { locale = "si"; arch = "linux-i686"; sha256 = "d22ed75aa727351efcdba1cffe8e24ff305943c9a3072cac08b004677cf6a028"; }
+    { locale = "si"; arch = "linux-x86_64"; sha256 = "89d60c682413949a6dad4b7fd49cc4508c4e067fe5847c5f21d5e25a953f195f"; }
+    { locale = "sk"; arch = "linux-i686"; sha256 = "4ecbc58df00eaf4fafb1c33a93493bdd3e544562a67c60e2d4d93da90d369261"; }
+    { locale = "sk"; arch = "linux-x86_64"; sha256 = "75baa2c5153e282e2671d6222b7fc8c3b9cfc2b9ee0a595a4451fd314a928fb4"; }
+    { locale = "sl"; arch = "linux-i686"; sha256 = "53e2ae3525d0bd2005a86bf7ed3f27ca66906ddfceb85a738bd60e46ba2df773"; }
+    { locale = "sl"; arch = "linux-x86_64"; sha256 = "2dcc5592a49767dc3f2a7d40387bb550fd36724419ff567f9d107e32b2cf2d6d"; }
+    { locale = "son"; arch = "linux-i686"; sha256 = "d3b7372c59b21d0393768197517b3666ab78705b04a6e84a3345da031bad3776"; }
+    { locale = "son"; arch = "linux-x86_64"; sha256 = "fc017e7a18701880c7a54c23a0f77a6521aae17880dbc562e2b37167ba918fa0"; }
+    { locale = "sq"; arch = "linux-i686"; sha256 = "7f9c9100c559ebfbfff35adc694199079930f4bf9f1f6a820c0e17d80ea0e12b"; }
+    { locale = "sq"; arch = "linux-x86_64"; sha256 = "0f3fcddabab8263eb4c238942c45c0b5efc20c169948da24c56ed401a85209dc"; }
+    { locale = "sr"; arch = "linux-i686"; sha256 = "6281e2f849b3c530ff383cfd4cdc4ab06115362c3d57ba8133a9f799af08e815"; }
+    { locale = "sr"; arch = "linux-x86_64"; sha256 = "368ca83faa5ef3640f71d977916614369ebac1622681e828b75e9abf6ebeb425"; }
+    { locale = "sv-SE"; arch = "linux-i686"; sha256 = "9f77f497fc3e8c585bd546c0bb95c92f9f37d683e092c0762b3fe0022b6d39b5"; }
+    { locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "0aa21764f0ca58591e3cfebba75196edd51a8fdbadb738f036994178c9612a67"; }
+    { locale = "ta"; arch = "linux-i686"; sha256 = "463ce70405d84945c201cca56c84171e097e6a0420d38cd453a0836fad82f09c"; }
+    { locale = "ta"; arch = "linux-x86_64"; sha256 = "db7e78bc1f4bcb573474806d19324eca58f42008fb0b0fa856f701f1430aeefd"; }
+    { locale = "te"; arch = "linux-i686"; sha256 = "18643daf675f8ef9785a0039d012c3a8ce96f4d228426651c5f09c292cbfb335"; }
+    { locale = "te"; arch = "linux-x86_64"; sha256 = "d9f8a260fc47b608fd523c61e9c6981776997f4b7fc247e794be32d177abfbc0"; }
+    { locale = "th"; arch = "linux-i686"; sha256 = "e03b80d55d2a545ab3219c5e88ed6b7d6974945e32321a2fc96039a6996638f6"; }
+    { locale = "th"; arch = "linux-x86_64"; sha256 = "0416fd2b7e7ddde59a101fcba8258622a83b739effb327984fa8405e634c2121"; }
+    { locale = "tr"; arch = "linux-i686"; sha256 = "75a49ce141c9a04254185b62af72c7e8c214e19e5257ff308b294aee6ac49a28"; }
+    { locale = "tr"; arch = "linux-x86_64"; sha256 = "0845a554b299b848d35894144d3ba5c7e0b808bcc9b2732e904463258ca73cb7"; }
+    { locale = "uk"; arch = "linux-i686"; sha256 = "a89f58c0f20a3ff7e609f572a4786f06b48886b7e2d303824417f42af49c8df2"; }
+    { locale = "uk"; arch = "linux-x86_64"; sha256 = "b45768588aaf80917c8ad40d62835cc96c3dadf97715234e66542b96eeb8db8e"; }
+    { locale = "vi"; arch = "linux-i686"; sha256 = "3fc35e59ecbbdf1b76b5b66e962a60eb724d9514d622879108725bcf7881fd1e"; }
+    { locale = "vi"; arch = "linux-x86_64"; sha256 = "88116edeeecbfe1ac03af0da26aff84bc3aa5ba00574e899ec08e0d68243f509"; }
+    { locale = "xh"; arch = "linux-i686"; sha256 = "a3afd3ac14049c72a9be28fb9a0849e4d3c5c2f13cb160c480988c4231679329"; }
+    { locale = "xh"; arch = "linux-x86_64"; sha256 = "569587e9cc4cd99899d2939367d56f2e4e9ae333b583064a648f05a8b0b58e2c"; }
+    { locale = "zh-CN"; arch = "linux-i686"; sha256 = "358e44998142e56356b839a51dff97fe85e6293424bd0c148decf61f01b6125b"; }
+    { locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "7b5a84dbbe361a775aaadad8fd328e24f6cf2e336297f1d5906f51ff5d3dfae7"; }
+    { locale = "zh-TW"; arch = "linux-i686"; sha256 = "cf2cb9bed37dffe178a524ef5fe983e0e8b18f17c999e98474ae13e012da54da"; }
+    { locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "aa0f1c5fb96dc4585e70fbcc291c6842be25e5d59be8bf39e8dc0232e9f1a76c"; }
+    { locale = "zu"; arch = "linux-i686"; sha256 = "775f6507ae8d6c2ef6e29e6b4d00453dcf9a0c9651eb9da482c78b5ebe64f2cd"; }
+    { locale = "zu"; arch = "linux-x86_64"; sha256 = "603510372a52497a8e41468dbc193afa25b0615f504f4548201deb89f27bd354"; }
+  ];
+
+  arch = if stdenv.system == "i686-linux"
+    then "linux-i686"
+    else "linux-x86_64";
+
+  isPrefixOf = prefix: string:
+    builtins.substring 0 (builtins.stringLength prefix) string == prefix;
+
+  sourceMatches = locale: source:
+      (isPrefixOf source.locale locale) && source.arch == arch;
+
+  systemLocale = config.i18n.defaultLocale or "en-US";
+
+  defaultSource = stdenv.lib.findFirst (sourceMatches "en-US") {} sources;
+
+  source = stdenv.lib.findFirst (sourceMatches systemLocale) defaultSource sources;
+
+in
+
+stdenv.mkDerivation {
+  name = "firefox-bin-${version}";
+
+  src = fetchurl {
+    url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/${version}/${source.arch}/${source.locale}/firefox-${version}.tar.bz2";
+    inherit (source) sha256;
+  };
+
+  phases = "unpackPhase installPhase";
+
+  libPath = stdenv.lib.makeLibraryPath
+    [ stdenv.gcc.gcc
+      alsaLib
+      atk
+      cairo
+      cups
+      dbus_glib
+      dbus_libs
+      fontconfig
+      freetype
+      gconf
+      gdk_pixbuf
+      glib
+      glibc
+      gst_plugins_base
+      gstreamer
+      gtk
+      libX11
+      libXScrnSaver
+      libXext
+      libXinerama
+      libXrender
+      libXt
+      libcanberra
+      libgnome
+      libgnomeui
+      mesa
+      nspr
+      nss
+      pango
+      heimdal
+      pulseaudio
+      systemd
+    ] + ":" + stdenv.lib.makeSearchPath "lib64" [
+      stdenv.gcc.gcc
+    ];
+
+  # "strip" after "patchelf" may break binaries.
+  # See: https://github.com/NixOS/patchelf/issues/10
+  dontStrip = 1;
+
+  installPhase =
+    ''
+      mkdir -p "$prefix/usr/lib/firefox-bin-${version}"
+      cp -r * "$prefix/usr/lib/firefox-bin-${version}"
+
+      mkdir -p "$out/bin"
+      ln -s "$prefix/usr/lib/firefox-bin-${version}/firefox" "$out/bin/"
+
+      for executable in \
+        firefox mozilla-xremote-client firefox-bin plugin-container \
+        updater crashreporter webapprt-stub
+      do
+        patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
+          "$out/usr/lib/firefox-bin-${version}/$executable"
+      done
+
+      for executable in \
+        firefox mozilla-xremote-client firefox-bin plugin-container \
+        updater crashreporter webapprt-stub libxul.so
+      do
+        patchelf --set-rpath "$libPath" \
+          "$out/usr/lib/firefox-bin-${version}/$executable"
+      done
+
+      # Create a desktop item.
+      mkdir -p $out/share/applications
+      cat > $out/share/applications/firefox.desktop <<EOF
+      [Desktop Entry]
+      Type=Application
+      Exec=$out/bin/firefox
+      Icon=$out/lib/firefox-bin-${version}/chrome/icons/default/default256.png
+      Name=Firefox
+      GenericName=Web Browser
+      Categories=Application;Network;
+      EOF
+    '';
+
+  meta = with stdenv.lib; {
+    description = "Mozilla Firefox, free web browser";
+    homepage = http://www.mozilla.org/firefox/;
+    license = {
+      shortName = "unfree"; # not sure
+      fullName = "unfree";
+      url = http://www.mozilla.org/en-US/foundation/trademarks/policy/;
+    };
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/networking/browsers/firefox-bin/generate_nix.rb b/pkgs/applications/networking/browsers/firefox-bin/generate_nix.rb
new file mode 100644
index 000000000000..a768b1f8dffc
--- /dev/null
+++ b/pkgs/applications/networking/browsers/firefox-bin/generate_nix.rb
@@ -0,0 +1,217 @@
+# TODO share code with thunderbird-bin/generate_nix.rb
+
+version = if ARGV.empty?
+            "latest"
+          else
+            ARGV[0]
+          end
+
+base_path = "download-installer.cdn.mozilla.net/pub/firefox/releases"
+
+arches = ["linux-i686", "linux-x86_64"]
+
+arches.each do |arch|
+  system("wget", "--recursive", "--continue", "--no-parent", "--reject-regex", ".*\\?.*", "--reject", "xpi", "http://#{base_path}/#{version}/#{arch}/")
+end
+
+locales = Dir.glob("#{base_path}/#{version}/#{arches[0]}/*").map do |path|
+  File.basename(path)
+end.sort
+
+locales.delete("index.html")
+locales.delete("xpi")
+
+# real version number, e.g. "30.0" instead of "latest".
+real_version = Dir.glob("#{base_path}/#{version}/#{arches[0]}/#{locales[0]}/firefox-*")[0].match(/firefox-([0-9.]*)/)[1][0..-2]
+
+locale_arch_path_tuples = locales.flat_map do |locale|
+  arches.map do |arch|
+    path = Dir.glob("#{base_path}/#{version}/#{arch}/#{locale}/firefox-*")[0]
+
+    [locale, arch, path]
+  end
+end
+
+paths = locale_arch_path_tuples.map do |tuple| tuple[2] end
+
+hashes = IO.popen(["sha256sum", "--binary", *paths]) do |input|
+  input.each_line.map do |line|
+    $stderr.puts(line)
+
+    line.match(/^[0-9a-f]*/)[0]
+  end
+end
+
+
+puts(<<"EOH")
+# This file is generated from generate_nix.rb
+# Execute the following command in a temporary directory to update the file.
+#
+# ruby generate_nix.rb > default.nix
+
+{ stdenv, fetchurl, config
+, alsaLib
+, atk
+, cairo
+, cups
+, dbus_glib
+, dbus_libs
+, fontconfig
+, freetype
+, gconf
+, gdk_pixbuf
+, glib
+, glibc
+, gst_plugins_base
+, gstreamer
+, gtk
+, libX11
+, libXScrnSaver
+, libXext
+, libXinerama
+, libXrender
+, libXt
+, libcanberra
+, libgnome
+, libgnomeui
+, mesa
+, nspr
+, nss
+, pango
+, heimdal
+, pulseaudio
+, systemd
+}:
+
+let
+  version = "#{real_version}";
+  sources = [
+EOH
+
+locale_arch_path_tuples.zip(hashes) do |tuple, hash|
+  locale, arch, path = tuple
+
+  puts(%Q|    { locale = "#{locale}"; arch = "#{arch}"; sha256 = "#{hash}"; }|)
+end
+
+puts(<<'EOF')
+  ];
+
+  arch = if stdenv.system == "i686-linux"
+    then "linux-i686"
+    else "linux-x86_64";
+
+  isPrefixOf = prefix: string:
+    builtins.substring 0 (builtins.stringLength prefix) string == prefix;
+
+  sourceMatches = locale: source:
+      (isPrefixOf source.locale locale) && source.arch == arch;
+
+  systemLocale = config.i18n.defaultLocale or "en-US";
+
+  defaultSource = stdenv.lib.findFirst (sourceMatches "en-US") {} sources;
+
+  source = stdenv.lib.findFirst (sourceMatches systemLocale) defaultSource sources;
+
+in
+
+stdenv.mkDerivation {
+  name = "firefox-bin-${version}";
+
+  src = fetchurl {
+    url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/${version}/${source.arch}/${source.locale}/firefox-${version}.tar.bz2";
+    inherit (source) sha256;
+  };
+
+  phases = "unpackPhase installPhase";
+
+  libPath = stdenv.lib.makeLibraryPath
+    [ stdenv.gcc.gcc
+      alsaLib
+      atk
+      cairo
+      cups
+      dbus_glib
+      dbus_libs
+      fontconfig
+      freetype
+      gconf
+      gdk_pixbuf
+      glib
+      glibc
+      gst_plugins_base
+      gstreamer
+      gtk
+      libX11
+      libXScrnSaver
+      libXext
+      libXinerama
+      libXrender
+      libXt
+      libcanberra
+      libgnome
+      libgnomeui
+      mesa
+      nspr
+      nss
+      pango
+      heimdal
+      pulseaudio
+      systemd
+    ] + ":" + stdenv.lib.makeSearchPath "lib64" [
+      stdenv.gcc.gcc
+    ];
+
+  # "strip" after "patchelf" may break binaries.
+  # See: https://github.com/NixOS/patchelf/issues/10
+  dontStrip = 1;
+
+  installPhase =
+    ''
+      mkdir -p "$prefix/usr/lib/firefox-bin-${version}"
+      cp -r * "$prefix/usr/lib/firefox-bin-${version}"
+
+      mkdir -p "$out/bin"
+      ln -s "$prefix/usr/lib/firefox-bin-${version}/firefox" "$out/bin/"
+
+      for executable in \
+        firefox mozilla-xremote-client firefox-bin plugin-container \
+        updater crashreporter webapprt-stub
+      do
+        patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
+          "$out/usr/lib/firefox-bin-${version}/$executable"
+      done
+
+      for executable in \
+        firefox mozilla-xremote-client firefox-bin plugin-container \
+        updater crashreporter webapprt-stub libxul.so
+      do
+        patchelf --set-rpath "$libPath" \
+          "$out/usr/lib/firefox-bin-${version}/$executable"
+      done
+
+      # Create a desktop item.
+      mkdir -p $out/share/applications
+      cat > $out/share/applications/firefox.desktop <<EOF
+      [Desktop Entry]
+      Type=Application
+      Exec=$out/bin/firefox
+      Icon=$out/lib/firefox-bin-${version}/chrome/icons/default/default256.png
+      Name=Firefox
+      GenericName=Web Browser
+      Categories=Application;Network;
+      EOF
+    '';
+
+  meta = with stdenv.lib; {
+    description = "Mozilla Firefox, free web browser";
+    homepage = http://www.mozilla.org/firefox/;
+    license = {
+      shortName = "unfree"; # not sure
+      fullName = "unfree";
+      url = http://www.mozilla.org/en-US/foundation/trademarks/policy/;
+    };
+    platforms = platforms.linux;
+  };
+}
+EOF
diff --git a/pkgs/applications/networking/instant-messengers/baresip/default.nix b/pkgs/applications/networking/instant-messengers/baresip/default.nix
index 61cd62fefd46..b878427e876a 100644
--- a/pkgs/applications/networking/instant-messengers/baresip/default.nix
+++ b/pkgs/applications/networking/instant-messengers/baresip/default.nix
@@ -4,11 +4,11 @@
 , gsm, speex, portaudio, spandsp, libuuid
 }:
 stdenv.mkDerivation rec {
-  version = "0.4.3";
+  version = "0.4.11";
   name = "baresip-${version}";
   src=fetchurl {
     url = "http://www.creytiv.com/pub/baresip-${version}.tar.gz";
-    sha256 = "03vpzn0c3mybnwn84ha3yci780qsjm669dwja1srj0hbrq81rbil";
+    sha256 = "1ql5h9ily9jncp9w302v3b2ldx613kc60zlqv0v0ln8hsm8q6bc5";
   };
   buildInputs = [zlib openssl libre librem pkgconfig
     cairo mpg123 gstreamer gst_ffmpeg gst_plugins_base gst_plugins_bad gst_plugins_good
@@ -41,5 +41,9 @@ stdenv.mkDerivation rec {
     platforms = with stdenv.lib.platforms; linux;
     maintainers = with stdenv.lib.maintainers; [raskin];
     license = with stdenv.lib.licenses; bsd3;
+    inherit version;
+    downloadPage = "http://www.creytiv.com/pub/";
+    updateWalker = true;
+    downloadURLRegexp = "/baresip-.*[.]tar[.].*";
   };
 }
diff --git a/pkgs/applications/networking/instant-messengers/skype/default.nix b/pkgs/applications/networking/instant-messengers/skype/default.nix
index 20a304952a7a..f1ac10639344 100644
--- a/pkgs/applications/networking/instant-messengers/skype/default.nix
+++ b/pkgs/applications/networking/instant-messengers/skype/default.nix
@@ -1,20 +1,18 @@
-{ stdenv, fetchurl, alsaLib, libXv, libXi, libXrender, libXrandr, zlib, glib
+{ stdenv, fetchurl, libXv, libXi, libXrender, libXrandr, zlib, glib
 , libXext, libX11, libXScrnSaver, libSM, qt4, libICE, freetype, fontconfig
-, pulseaudio, usePulseAudio, lib }:
+, pulseaudio, lib, ... }:
 
 assert stdenv.system == "i686-linux";
 
 stdenv.mkDerivation rec {
-  name = "skype-4.2.0.13";
+  name = "skype-4.3.0.37";
 
   src = fetchurl {
     url = "http://download.skype.com/linux/${name}.tar.bz2";
-    sha256 = "137kp6c0v4z7n7pp4hwrx4gjgk4knwj815dc6swh44lb5cj1c5m5";
+    sha256 = "0bc9kck99rcsqzxzw3j6vnw5byvr8c9wixrx609zp255g0wxr6cc";
   };
 
-  buildInputs =
-    lib.optional usePulseAudio pulseaudio ++ [
-    alsaLib
+  buildInputs = [
     stdenv.glibc
     stdenv.gcc.gcc
     libXv
@@ -27,6 +25,7 @@ stdenv.mkDerivation rec {
     libXi
     libXrender
     libXrandr
+    pulseaudio
     freetype
     fontconfig
     zlib
@@ -44,13 +43,13 @@ stdenv.mkDerivation rec {
       fullPath=$fullPath''${fullPath:+:}$i/lib
     done
 
-    dynlinker="$(cat $NIX_GCC/nix-support/dynamic-linker)"
+    patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
+        --set-rpath "$fullPath" $out/libexec/skype/skype
 
     cat > $out/bin/skype << EOF
     #!${stdenv.shell}
     export PULSE_LATENCY_MSEC=60  # workaround for pulseaudio glitches
-    export LD_LIBRARY_PATH=$fullPath:$LD_LIBRARY_PATH
-    $dynlinker $out/libexec/skype/skype --resources=$out/libexec/skype "\$@"
+    $out/libexec/skype/skype --resources=$out/libexec/skype "\$@"
     EOF
 
     chmod +x $out/bin/skype
diff --git a/pkgs/applications/networking/irc/bip/bip-0.8.8-yyparse.patch b/pkgs/applications/networking/irc/bip/bip-0.8.8-yyparse.patch
deleted file mode 100644
index 5d48fc99a0da..000000000000
--- a/pkgs/applications/networking/irc/bip/bip-0.8.8-yyparse.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- bip-0.8.8/src/lex.l.orig
-+++ bip-0.8.8/src/lex.l
-@@ -16,7 +16,7 @@
- int linec;
- #include "util.h"
- extern list_t *root_list;
--void yyparse(void);
-+int yyparse(void);
- void free_conf(list_t*);
- int conf_error;
- typedef struct bip bip_t;
diff --git a/pkgs/applications/networking/irc/bip/default.nix b/pkgs/applications/networking/irc/bip/default.nix
index 89fdf0d8df85..6f816e1db170 100644
--- a/pkgs/applications/networking/irc/bip/default.nix
+++ b/pkgs/applications/networking/irc/bip/default.nix
@@ -2,8 +2,8 @@
 
 let
 
-  version = "0.8.8";
-  sha256 = "7ca3fb96f5ee6b76eb398d7ea45344ea24855344ced11632241a33353bba05d7";
+  version = "0.8.9";
+  sha256 = "0q942g9lyd8pjvqimv547n6vik5759r9npw3ws3bdj4ixxqhz59w";
 
   # fetches patches from a gentoo mirror
   fetchPatch =
@@ -25,19 +25,12 @@ in stdenv.mkDerivation {
 
   # includes an important security patch
   patches = map fetchPatch [
-    { file = "bip-0.8.8-configure.patch";
-      sha256 = "286e169745e6cd768f0cb95bbc9589ca2bda497eb06461174549b80a459d901c";
-    }
-    { file = "bip-CVE-2012-0806.patch";
-      sha256 = "e47523095ee1d717c762ca0195520026c6ea2c30d8adcf434d276d42f052d506";
-    }
     { file = "bip-freenode.patch";
       sha256 = "a67e582f89cc6a32d5bb48c7e8ceb647b889808c2c8798ae3eb27d88869b892f";
     }
   ];
 
   postPatch = ''
-    patch -p1 < ${./bip-0.8.8-yyparse.patch}
   '';
 
   configureFlags = [ "--disable-pie" ];
@@ -48,5 +41,7 @@ in stdenv.mkDerivation {
     description = "An IRC proxy (bouncer)";
     homepage = http://bip.milkypond.org/;
     license = stdenv.lib.licenses.gpl2;
+    downloadPage= "https://projects.duckcorp.org/projects/bip/files";
+    inherit version;
   };
 }
diff --git a/pkgs/applications/office/libreoffice/default.nix b/pkgs/applications/office/libreoffice/default.nix
index f4da232c7475..b1cbc6fd54f5 100644
--- a/pkgs/applications/office/libreoffice/default.nix
+++ b/pkgs/applications/office/libreoffice/default.nix
@@ -14,62 +14,20 @@
 , autoconf, automake, openldap, bash, hunspell, librdf_redland, nss, nspr
 , libwpg, dbus_glib, glibc, qt4, kde4, clucene_core, libcdr, lcms, vigra
 , unixODBC, mdds, saneBackends, mythes, libexttextcat, libvisio
-, fontsConf, pkgconfig, libzip, bluez5, libtool, maven
+, fontsConf, pkgconfig, libzip, bluez5, libtool, maven, libe-book_00
+, libmwaw_02, libatomic_ops, graphite2, harfbuzz
 , langs ? [ "en-US" "en-GB" "ca" "ru" "eo" "fr" "nl" "de" "sl" ]
 }:
 
 let
   langsSpaces = stdenv.lib.concatStringsSep " " langs;
   major = "4";
-  minor = "0";
+  minor = "2";
   patch = "5";
   tweak = "2";
   subdir = "${major}.${minor}.${patch}";
   version = "${subdir}${if tweak == "" then "" else "."}${tweak}";
 
-  # configure phase dependency
-  liborcus = stdenv.mkDerivation rec {
-     version = "0.3.0";
-     name = "liborcus-${version}";
-
-     src = fetchurl {
-       url = "http://dev-www.libreoffice.org/src/8755aac23317494a9028569374dc87b2-liborcus_0.3.0.tar.bz2";
-       sha256 = "0xrw13s390mcpm50apclydl38sw2sdq27csrr1k0d39jna2990ih";
-     };
-
-     configureFlags = "--disable-werror";
-
-     buildInputs = [ zlib boost mdds pkgconfig libixion libzip ];
-  };
-
-  # configure phase dependency
-  liblangtag = stdenv.mkDerivation rec {
-     version = "0.4.0";
-     name = "liblangtag-${version}";
-
-     src = fetchurl {
-       url = "http://dev-www.libreoffice.org/src/54e578c91b1b68e69c72be22adcb2195-${name}.tar.bz2";
-       sha256 = "1bjb0fxjmvzxlhr5by9wgisf6w5yvy6wgfzfkjyw6igk39fivdyb";
-     };
-
-     buildInputs = [ libtool pkgconfig libxml2 ];
-  };
-
-  # doesn't work with srcs versioning
-  libmspub = stdenv.mkDerivation rec {
-     version = "0.0.6";
-     name = "libmspub-${version}";
-
-     src = fetchurl {
-       url = "http://dev-www.libreoffice.org/src/${name}.tar.gz";
-       sha256 = "1zdcvnm0dpac5yqdv34hq9j38cnhyqzyjgb19iyp54ajnwfjhmcq";
-     };
-
-     configureFlags = "--disable-werror";
-
-     buildInputs = [ zlib libwpd libwpg pkgconfig boost icu ];
-  };
-
   # doesn't exist in srcs
   libixion = stdenv.mkDerivation rec {
      version = "0.5.0";
@@ -85,9 +43,12 @@ let
      buildInputs = [ boost mdds pkgconfig ];
   };
 
-  fetchThirdParty = {name, md5}: fetchurl {
+  fetchThirdParty = {name, md5, brief}: fetchurl {
     inherit name md5;
-    url = "http://dev-www.libreoffice.org/src/${md5}-${name}";
+    url = if brief then
+            "http://dev-www.libreoffice.org/src/${name}"
+          else
+            "http://dev-www.libreoffice.org/src/${md5}-${name}";
   };
 
   fetchSrc = {name, sha256}: fetchurl {
@@ -104,14 +65,14 @@ let
 
     translations = fetchSrc {
       name = "translations";
-      sha256 = "0x96wlwr5m7w4k3ygydzak3ycq35hjq60vfi6nfxczlr8pfjyjxv";
+      sha256 = "0nv47r043w151687ks06w786h8azi8gylxma9c7qyjbdj6cdb2ly";
     };
 
     # TODO: dictionaries
 
     help = fetchSrc {
       name = "help";
-      sha256 = "0nab5jcgrrgn0v1yrm18nl9avp4vifbas48l1absz3jmzf9wka7b";
+      sha256 = "1kbkdngq39gfq2804v6vnllax4gqs25zlfk6y561iiipld1ncc5v";
     };
 
   };
@@ -121,7 +82,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "http://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${version}.tar.xz";
-    sha256 = "195g1iab7j2x7sl326xbq7vya412ns57xrwpv9hqdrb7iiz2n8la";
+    sha256 = "4bf7898d7d0ba918a8f6668eff0904a549e5a2de837854716e6d996f121817d5";
   };
 
   # Openoffice will open libcups dynamically, so we link it directly
@@ -135,7 +96,7 @@ stdenv.mkDerivation rec {
 
   postUnpack = ''
     mkdir -v $sourceRoot/src
-  '' + (stdenv.lib.concatMapStrings (f: "ln -sv ${f} $sourceRoot/src/${f.outputHash}-${f.name}\n") srcs.third_party)
+  '' + (stdenv.lib.concatMapStrings (f: "ln -sv ${f} $sourceRoot/src/${f.outputHash}-${f.name}\nln -sv ${f} $sourceRoot/src/${f.name}\n") srcs.third_party)
   + ''
     ln -sv ${srcs.help} $sourceRoot/src/${srcs.help.name}
     tar xf $sourceRoot/src/${srcs.help.name} -C $sourceRoot/../
@@ -149,6 +110,8 @@ stdenv.mkDerivation rec {
       -e 's,! */usr/bin/perl,!${perl}/bin/perl,' -e 's,! */usr/bin/env perl,!${perl}/bin/perl,' \
       -e 's,! */usr/bin/python,!${python3}/bin/${python3.executable},' -e 's,! */usr/bin/env python,!${python3}/bin/${python3.executable},'
     #sed -i 's,ANT_OPTS+="\(.*\)",ANT_OPTS+=\1,' apache-commons/java/*/makefile.mk
+
+    patch -Np1 -i ${./ooxmlexport.diff};
   '';
 
   QT4DIR = qt4;
@@ -162,6 +125,10 @@ stdenv.mkDerivation rec {
       "--with-parallelism=$NIX_BUILD_CORES"
       "--with-lang=${langsSpaces}"
     );
+
+    chmod a+x ./bin/unpack-sources
+    # It is used only as an indicator of the proper current directory
+    touch solenv/inc/target.mk
   '';
 
   makeFlags = "SHELL=${bash}/bin/bash";
@@ -172,9 +139,6 @@ stdenv.mkDerivation rec {
     # This is required as some cppunittests require fontconfig configured
     export FONTCONFIG_FILE=${fontsConf}
 
-    # Fix sysui: wants to create a tar for root
-    sed -i -e 's,--own.*root,,' sysui/desktop/slackware/makefile.mk
-
     # This to aovid using /lib:/usr/lib at linking
     sed -i '/gb_LinkTarget_LDFLAGS/{ n; /rpath-link/d;}' solenv/gbuild/platform/unxgcc.mk
 
@@ -199,7 +163,7 @@ stdenv.mkDerivation rec {
   '';
 
   configureFlags = [
-    "--with-vender=NixOS"
+    "--with-vendor=NixOS"
 
     # Without these, configure does not finish
     "--without-junit"
@@ -219,11 +183,11 @@ stdenv.mkDerivation rec {
     "--without-doxygen"
 
     # I imagine this helps. Copied from go-oo.
-    "--disable-epm"
-    "--disable-mathmldtd"
+    # Modified on every upgrade, though
     "--disable-kde"
     "--disable-postgresql-sdbc"
     "--with-package-format=native"
+    "--enable-epm"
     "--with-jdk-home=${jdk}/lib/openjdk"
     "--with-ant-home=${ant}/lib/ant"
     "--without-afms"
@@ -235,10 +199,17 @@ stdenv.mkDerivation rec {
     "--without-system-jars"
     "--without-system-altlinuxhyph"
     "--without-system-lpsolve"
-    "--without-system-graphite"
     "--without-system-npapi-headers"
     "--without-system-libcmis"
-    "--without-system-mozilla"
+
+    "--without-system-libetonyek"
+    "--without-system-libfreehand"
+    "--without-system-libodfgen"
+    "--without-system-libabw"
+    "--without-system-firebird"
+    "--without-system-orcus"
+    "--without-system-liblangtag"
+    "--without-system-libmspub"
   ];
 
   checkPhase = ''
@@ -253,11 +224,11 @@ stdenv.mkDerivation rec {
       hunspell icu jdk kde4.kdelibs lcms libcdr libexttextcat unixODBC libjpeg
       libmspack librdf_redland librsvg libsndfile libvisio libwpd libwpg libX11
       libXaw libXext libXi libXinerama libxml2 libxslt libXtst
-      libXdmcp libpthreadstubs mdds mesa mythes
+      libXdmcp libpthreadstubs mesa mythes
       neon nspr nss openldap openssl ORBit2 pam perl pkgconfigUpstream poppler
       python3 sablotron saneBackends tcsh unzip vigra which zip zlib
-      mdds bluez5 glibc libmspub libixion liborcus liblangtag
-      libxshmfence
+      mdds bluez5 glibc libixion
+      libxshmfence libe-book_00 libmwaw_02 libatomic_ops graphite2 harfbuzz
     ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/office/libreoffice/generate-libreoffice-srcs.sh b/pkgs/applications/office/libreoffice/generate-libreoffice-srcs.sh
index ab6c4e3fb079..e5a867463bfc 100755
--- a/pkgs/applications/office/libreoffice/generate-libreoffice-srcs.sh
+++ b/pkgs/applications/office/libreoffice/generate-libreoffice-srcs.sh
@@ -6,15 +6,39 @@ cat <<EOF
 [
 EOF
 
-read file
-while read file; do
-  if [[ "$file" == @* ]]; then
-    break
-  fi
+write_entry(){
   echo '{'
-  echo "  name = \"${file:33}\";"
-  echo "  md5 = \"${file:0:32}\";"
+  echo "  name = \"${name}\";"
+  echo "  md5 = \"${md5}\";"
+  echo "  brief = ${brief};"
   echo '}'
+}
+
+while read line; do
+  case "$line" in
+    \#*)
+      echo Skipping comment: "$line" >&2;
+      ;;
+    *_MD5SUM\ :=*)
+      read tbline;
+      line=${line##* };
+      tbline=${tbline##* };
+      md5=$line
+      name=$tbline;
+      brief=true;
+      write_entry;
+      ;;
+    *_TARBALL\ :=*)
+      line=${line##* };
+      md5=${line:0:32};
+      name=${line:33};
+      brief=false;
+      write_entry;
+      ;;
+    *)
+      echo Skipping: "$line" >&2;
+      ;;
+  esac
 done
 
 echo ']'
diff --git a/pkgs/applications/office/libreoffice/libreoffice-srcs.nix b/pkgs/applications/office/libreoffice/libreoffice-srcs.nix
index 6ed1a5e2c639..cceb1a49e429 100644
--- a/pkgs/applications/office/libreoffice/libreoffice-srcs.nix
+++ b/pkgs/applications/office/libreoffice/libreoffice-srcs.nix
@@ -1,114 +1,467 @@
 [
 {
-  name = "glibc-2.1.3-stub.tar.gz";
-  md5 = "4a660ce8466c9df01f19036435425c3a";
+  name = "libabw-0.0.2.tar.bz2";
+  md5 = "40fa48e03b1e28ae0325cc34b35bc46d";
+  brief = true;
 }
 {
-  name = "ucpp-1.3.2.tar.gz";
-  md5 = "0168229624cfac409e766913506961a8";
+  name = "libcdr-0.0.15.tar.bz2";
+  md5 = "fbcd8619fc6646f41d527c1329102998";
+  brief = true;
+}
+{
+  name = "libe-book-0.0.3.tar.bz2";
+  md5 = "2f1ceaf2ac8752ed278e175447d9b978";
+  brief = true;
+}
+{
+  name = "libetonyek-0.0.4.tar.bz2";
+  md5 = "3c50bc60394d1f2675fbf9bd22581363";
+  brief = true;
+}
+{
+  name = "libfreehand-0.0.0.tar.bz2";
+  md5 = "496dd00028afcc19f896b01394769043";
+  brief = true;
+}
+{
+  name = "libmspub-0.0.6.tar.bz2";
+  md5 = "1120705cd0f0d9bd5506360bf57b6c2e";
+  brief = true;
+}
+{
+  name = "libmwaw-0.2.0.tar.bz2";
+  md5 = "d794625f156a9fb1c53b3f8a8aa13b5e";
+  brief = true;
+}
+{
+  name = "libodfgen-0.0.4.tar.bz2";
+  md5 = "e5483d1f0b71e64c367c1194b54b0f53";
+  brief = true;
+}
+{
+  name = "libvisio-0.0.31.tar.bz2";
+  md5 = "82628333418f101a20cd21f980cf9f40";
+  brief = true;
+}
+{
+  name = "Firebird-2.5.2.26540-0.tar.bz2";
+  md5 = "21154d2004e025c8a3666625b0357bb5";
+  brief = true;
+}
+{
+  name = "harfbuzz-0.9.23.tar.bz2";
+  md5 = "a4a9b548577e2ee22f0887937da5fd6c";
+  brief = true;
+}
+{
+  name = "libatomic_ops-7_2d.zip";
+  md5 = "c0b86562d5aa40761a87134f83e6adcf";
+  brief = true;
+}
+{
+  name = "libeot-0.01.tar.bz2";
+  md5 = "aa24f5dd2a2992f4a116aa72af817548";
+  brief = true;
+}
+{
+  name = "language-subtag-registry-2014-03-27.tar.bz2";
+  md5 = "504af523f5d1a5590bbeb6a4b55e8a97";
+  brief = true;
+}
+{
+  name = "Adobe-Core35_AFMs-314.tar.gz";
+  md5 = "1756c4fa6c616ae15973c104cd8cb256";
+  brief = false;
+}
+{
+  name = "commons-codec-1.6-src.tar.gz";
+  md5 = "2e482c7567908d334785ce7d69ddfff7";
+  brief = false;
+}
+{
+  name = "commons-httpclient-3.1-src.tar.gz";
+  md5 = "2c9b0f83ed5890af02c0df1c1776f39b";
+  brief = false;
+}
+{
+  name = "commons-lang-2.4-src.tar.gz";
+  md5 = "625ff5f2f968dd908bca43c9469d6e6b";
+  brief = false;
 }
 {
   name = "commons-logging-1.1.1-src.tar.gz";
   md5 = "3c219630e4302863a9a83d0efde889db";
+  brief = false;
 }
 {
-  name = "liblayout-0.2.10.zip";
-  md5 = "db60e4fde8dd6d6807523deb71ee34dc";
+  name = "boost_1_54_0.tar.bz2";
+  md5 = "15cb8c0803064faef0c4ddf5bc5ca279";
+  brief = false;
+}
+{
+  name = "bsh-2.0b1-src.tar.gz";
+  md5 = "ea570af93c284aa9e5621cd563f54f4d";
+  brief = false;
+}
+{
+  name = "cairo-1.10.2.tar.gz";
+  md5 = "f101a9e88b783337b20b2e26dfd26d5f";
+  brief = false;
+}
+{
+  name = "clucene-core-2.3.3.4.tar.gz";
+  md5 = "48d647fbd8ef8889e5a7f422c1bfda94";
+  brief = false;
+}
+{
+  name = "libcmis-0.4.1.tar.gz";
+  md5 = "22f8a85daf4a012180322e1f52a7563b";
+  brief = false;
+}
+{
+  name = "cppunit-1.13.1.tar.gz";
+  md5 = "ac4781e01619be13461bb2d562b94a7b";
+  brief = false;
+}
+{
+  name = "ConvertTextToNumber-1.3.2.oxt";
+  md5 = "451ccf439a36a568653b024534669971";
+  brief = false;
+}
+{
+  name = "curl-7.33.0.tar.bz2";
+  md5 = "57409d6bf0bd97053b8378dbe0cadcef";
+  brief = false;
+}
+{
+  name = "epm-3.7.tar.gz";
+  md5 = "3ade8cfe7e59ca8e65052644fed9fca4";
+  brief = false;
+}
+{
+  name = "expat-2.1.0.tar.gz";
+  md5 = "dd7dab7a5fea97d2a6a43f511449b7cd";
+  brief = false;
+}
+{
+  name = "fontconfig-2.8.0.tar.gz";
+  md5 = "77e15a92006ddc2adbb06f840d591c0e";
+  brief = false;
+}
+{
+  name = "crosextrafonts-20130214.tar.gz";
+  md5 = "368f114c078f94214a308a74c7e991bc";
+  brief = false;
+}
+{
+  name = "crosextrafonts-carlito-20130920.tar.gz";
+  md5 = "c74b7223abe75949b4af367942d96c7a";
+  brief = false;
+}
+{
+  name = "dejavu-fonts-ttf-2.33.zip";
+  md5 = "f872f4ac066433d8ff92f5e316b36ff9";
+  brief = false;
+}
+{
+  name = "gentiumbasic-fonts-1.10.zip";
+  md5 = "35efabc239af896dfb79be7ebdd6e6b9";
+  brief = false;
+}
+{
+  name = "liberation-fonts-ttf-1.07.3.tar.gz";
+  md5 = "b3174b11c2b6a341f5c99b31088bd67b";
+  brief = false;
+}
+{
+  name = "liberation-fonts-ttf-2.00.1.tar.gz";
+  md5 = "5c781723a0d9ed6188960defba8e91cf";
+  brief = false;
+}
+{
+  name = "LinLibertineG-20120116.zip";
+  md5 = "e7a384790b13c29113e22e596ade9687";
+  brief = false;
+}
+{
+  name = "open-sans-font-ttf-1.10.tar.gz";
+  md5 = "7a15edea7d415ac5150ea403e27401fd";
+  brief = false;
+}
+{
+  name = "pt-serif-font-1.0000W.tar.gz";
+  md5 = "c3c1a8ba7452950636e871d25020ce0d";
+  brief = false;
+}
+{
+  name = "source-code-font-1.009.tar.gz";
+  md5 = "0279a21fab6f245e85a6f85fea54f511";
+  brief = false;
+}
+{
+  name = "source-sans-font-1.036.tar.gz";
+  md5 = "1e9ddfe25ac9577da709d7b2ea36f939";
+  brief = false;
+}
+{
+  name = "freetype-2.4.8.tar.bz2";
+  md5 = "dbf2caca1d3afd410a29217a9809d397";
+  brief = false;
+}
+{
+  name = "graphite2-1.2.3.tgz";
+  md5 = "7042305e4208af4c2d5249d814ccce58";
+  brief = false;
 }
 {
   name = "hsqldb_1_8_0.zip";
   md5 = "17410483b5b5f267aa18b7e00b65e6e0";
+  brief = false;
 }
 {
-  name = "rhino1_5R5.zip";
-  md5 = "798b2ffdc8bcfe7bca2cf92b62caf685";
+  name = "hunspell-1.3.2.tar.gz";
+  md5 = "3121aaf3e13e5d88dfff13fb4a5f1ab8";
+  brief = false;
 }
 {
-  name = "bsh-2.0b1-src.tar.gz";
-  md5 = "ea570af93c284aa9e5621cd563f54f4d";
+  name = "hyphen-2.8.4.tar.gz";
+  md5 = "a2f6010987e1c601274ab5d63b72c944";
+  brief = false;
 }
 {
-  name = "xmlsec1-1.2.14.tar.gz";
-  md5 = "1f24ab1d39f4a51faf22244c94a6203f";
+  name = "icu4c-52_1-src.tgz";
+  md5 = "9e96ed4c1d99c0d14ac03c140f9f346c";
+  brief = false;
 }
 {
-  name = "librepository-1.1.6.zip";
-  md5 = "8ce2fcd72becf06c41f7201d15373ed9";
+  name = "flow-engine-0.9.4.zip";
+  md5 = "ba2930200c9f019c2d93a8c88c651a0f";
+  brief = false;
+}
+{
+  name = "flute-1.1.6.zip";
+  md5 = "d8bd5eed178db6e2b18eeed243f85aa8";
+  brief = false;
 }
 {
   name = "libbase-1.1.6.zip";
   md5 = "eeb2c7ddf0d302fba4bfc6e97eac9624";
+  brief = false;
 }
 {
-  name = "lp_solve_5.5.tar.gz";
-  md5 = "26b3e95ddf3d9c077c480ea45874b3b8";
+  name = "libfonts-1.1.6.zip";
+  md5 = "3bdf40c0d199af31923e900d082ca2dd";
+  brief = false;
 }
 {
-  name = "libloader-1.1.6.zip";
-  md5 = "97b2d4dba862397f446b217e2b623e71";
+  name = "libformula-1.1.7.zip";
+  md5 = "3404ab6b1792ae5f16bbd603bd1e1d03";
+  brief = false;
 }
 {
-  name = "graphite2-1.2.0.tgz";
-  md5 = "f5ef3f7f10fa8c3542c6a085a233080b";
+  name = "liblayout-0.2.10.zip";
+  md5 = "db60e4fde8dd6d6807523deb71ee34dc";
+  brief = false;
 }
 {
-  name = "jakarta-tomcat-5.0.30-src.tar.gz";
-  md5 = "2a177023f9ea8ec8bd00837605c5df1b";
+  name = "libloader-1.1.6.zip";
+  md5 = "97b2d4dba862397f446b217e2b623e71";
+  brief = false;
 }
 {
-  name = "hyphen-2.8.4.tar.gz";
-  md5 = "a2f6010987e1c601274ab5d63b72c944";
+  name = "librepository-1.1.6.zip";
+  md5 = "8ce2fcd72becf06c41f7201d15373ed9";
+  brief = false;
 }
 {
   name = "libserializer-1.1.6.zip";
   md5 = "f94d9870737518e3b597f9265f4e9803";
-}
-{
-  name = "commons-lang-2.3-src.tar.gz";
-  md5 = "2ae988b339daec234019a7066f96733e";
+  brief = false;
 }
 {
   name = "libxml-1.1.7.zip";
   md5 = "ace6ab49184e329db254e454a010f56d";
+  brief = false;
 }
 {
-  name = "commons-httpclient-3.1-src.tar.gz";
-  md5 = "2c9b0f83ed5890af02c0df1c1776f39b";
+  name = "sacjava-1.3.zip";
+  md5 = "39bb3fcea1514f1369fcfc87542390fd";
+  brief = false;
 }
 {
-  name = "commons-codec-1.3-src.tar.gz";
-  md5 = "af3c3acf618de6108d65fcdc92b492e1";
+  name = "jpegsrc.v8d.tar.gz";
+  md5 = "52654eb3b2e60c35731ea8fc87f1bd29";
+  brief = false;
 }
 {
-  name = "libformula-1.1.7.zip";
-  md5 = "3404ab6b1792ae5f16bbd603bd1e1d03";
+  name = "JLanguageTool-1.7.0.tar.bz2";
+  md5 = "b63e6340a02ff1cacfeadb2c42286161";
+  brief = false;
+}
+{
+  name = "lcms2-2.4.tar.gz";
+  md5 = "861ef15fa0bc018f9ddc932c4ad8b6dd";
+  brief = false;
+}
+{
+  name = "libexttextcat-3.4.3.tar.bz2";
+  md5 = "ae330b9493bd4503ac390106ff6060d7";
+  brief = false;
+}
+{
+  name = "liblangtag-0.5.1.tar.bz2";
+  md5 = "36271d3fa0d9dec1632029b6d7aac925";
+  brief = false;
+}
+{
+  name = "xmlsec1-1.2.14.tar.gz";
+  md5 = "1f24ab1d39f4a51faf22244c94a6203f";
+  brief = false;
+}
+{
+  name = "libxml2-2.9.1.tar.gz";
+  md5 = "9c0cfef285d5c4a5c80d00904ddab380";
+  brief = false;
+}
+{
+  name = "libxslt-1.1.28.tar.gz";
+  md5 = "9667bf6f9310b957254fdcf6596600b7";
+  brief = false;
+}
+{
+  name = "lp_solve_5.5.tar.gz";
+  md5 = "26b3e95ddf3d9c077c480ea45874b3b8";
+  brief = false;
+}
+{
+  name = "mariadb-native-client-1.0.0.tar.bz2";
+  md5 = "05f84c95b610c21c5fd510d10debcabf";
+  brief = false;
 }
 {
-  name = "libcmis-0.3.0.tar.gz";
-  md5 = "b2371dc7cf4811c9d32146eec913d296";
+  name = "mdds_0.10.3.tar.bz2";
+  md5 = "aa5ca9d1ed1082890835afab26400a39";
+  brief = false;
+}
+{
+  name = "mysql-connector-c++-1.1.0.tar.gz";
+  md5 = "0981bda6548a8c8233ffce2b6e4b2a23";
+  brief = false;
+}
+{
+  name = "mythes-1.2.3.tar.gz";
+  md5 = "46e92b68e31e858512b680b3b61dc4c1";
+  brief = false;
+}
+{
+  name = "neon-0.29.5.tar.gz";
+  md5 = "ff369e69ef0f0143beb5626164e87ae2";
+  brief = false;
+}
+{
+  name = "nss-3.15.3-with-nspr-4.10.2.tar.gz";
+  md5 = "06beb053e257d9e22641339c905c6eba";
+  brief = false;
+}
+{
+  name = "openldap-2.4.31.tgz";
+  md5 = "804c6cb5698db30b75ad0ff1c25baefd";
+  brief = false;
+}
+{
+  name = "openssl-1.0.1e.tar.gz";
+  md5 = "66bf6f10f060d561929de96f9dfe5b8c";
+  brief = false;
+}
+{
+  name = "liborcus-0.5.1.tar.bz2";
+  md5 = "ea2acaf140ae40a87a952caa75184f4d";
+  brief = false;
+}
+{
+  name = "pixman-0.24.4.tar.bz2";
+  md5 = "c63f411b3ad147db2bcce1bf262a0e02";
+  brief = false;
+}
+{
+  name = "libpng-1.5.10.tar.gz";
+  md5 = "9e5d864bce8f06751bbd99962ecf4aad";
+  brief = false;
+}
+{
+  name = "poppler-0.22.5.tar.gz";
+  md5 = "1cd27460f7e3379d1eb109cfd7bcdb39";
+  brief = false;
+}
+{
+  name = "postgresql-9.2.1.tar.bz2";
+  md5 = "c0b4799ea9850eae3ead14f0a60e9418";
+  brief = false;
+}
+{
+  name = "Python-3.3.3.tar.bz2";
+  md5 = "f3ebe34d4d8695bf889279b54673e10c";
+  brief = false;
+}
+{
+  name = "raptor2-2.0.9.tar.gz";
+  md5 = "4ceb9316488b0ea01acf011023cf7fff";
+  brief = false;
+}
+{
+  name = "rasqal-0.9.30.tar.gz";
+  md5 = "b12c5f9cfdb6b04efce5a4a186b8416b";
+  brief = false;
+}
+{
+  name = "redland-1.0.16.tar.gz";
+  md5 = "32f8e1417a64d3c6f2c727f9053f55ea";
+  brief = false;
+}
+{
+  name = "rhino1_5R5.zip";
+  md5 = "798b2ffdc8bcfe7bca2cf92b62caf685";
+  brief = false;
 }
 {
   name = "swingExSrc.zip";
   md5 = "35c94d2df8893241173de1d16b6034c0";
+  brief = false;
 }
 {
-  name = "flow-engine-0.9.4.zip";
-  md5 = "ba2930200c9f019c2d93a8c88c651a0f";
+  name = "ucpp-1.3.2.tar.gz";
+  md5 = "0168229624cfac409e766913506961a8";
+  brief = false;
 }
 {
-  name = "sacjava-1.3.zip";
-  md5 = "39bb3fcea1514f1369fcfc87542390fd";
+  name = "vigra1.6.0.tar.gz";
+  md5 = "d62650a6f908e85643e557a236ea989c";
+  brief = false;
 }
 {
-  name = "libwps-0.2.7.tar.bz2";
-  md5 = "d197bd6211669a2fa4ca648faf04bcb1";
+  name = "libwpd-0.9.9.tar.bz2";
+  md5 = "a3dcac551fae5ebbec16e844810828c4";
+  brief = false;
 }
 {
-  name = "libfonts-1.1.6.zip";
-  md5 = "3bdf40c0d199af31923e900d082ca2dd";
+  name = "libwpg-0.2.2.tar.bz2";
+  md5 = "b85436266b2ac91d351ab5684b181151";
+  brief = false;
 }
 {
-  name = "flute-1.1.6.zip";
-  md5 = "d8bd5eed178db6e2b18eeed243f85aa8";
+  name = "libwps-0.2.9.tar.bz2";
+  md5 = "46eb0e7f213ad61bd5dee0c494132cb0";
+  brief = false;
+}
+{
+  name = "xsltml_2.1.2.zip";
+  md5 = "a7983f859eafb2677d7ff386a023bc40";
+  brief = false;
+}
+{
+  name = "zlib-1.2.7.tar.bz2";
+  md5 = "2ab442d169156f34c379c968f3f482dd";
+  brief = false;
 }
 ]
diff --git a/pkgs/applications/office/libreoffice/ooxmlexport.diff b/pkgs/applications/office/libreoffice/ooxmlexport.diff
new file mode 100644
index 000000000000..9c1d44612e26
--- /dev/null
+++ b/pkgs/applications/office/libreoffice/ooxmlexport.diff
@@ -0,0 +1,31 @@
+--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx	2014-06-12 12:25:19.000000000 +0400
++++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx	2014-06-12 12:25:20.000000000 +0400
+@@ -547,17 +547,17 @@
+     getRun(xParagraph, 5, " After.");
+ }
+ 
+-DECLARE_OOXMLEXPORT_TEST(test1Table1Page, "1-table-1-page.docx")
+-{
+-    // 2 problem for this document after export:
+-    //   - invalid sectPr inserted at the beginning of the page
+-    //   - font of empty cell is not preserved, leading to change in rows height
+-    uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+-    uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
+-    uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+-    xCursor->jumpToLastPage();
+-    CPPUNIT_ASSERT_EQUAL(sal_Int16(1), xCursor->getPage());
+-}
++///   DECLARE_OOXMLEXPORT_TEST(test1Table1Page, "1-table-1-page.docx")
++///   {
++///       // 2 problem for this document after export:
++///       //   - invalid sectPr inserted at the beginning of the page
++///       //   - font of empty cell is not preserved, leading to change in rows height
++///       uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
++///       uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
++///       uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
++///       xCursor->jumpToLastPage();
++///       CPPUNIT_ASSERT_EQUAL(sal_Int16(1), xCursor->getPage());
++///   }
+ 
+ DECLARE_OOXMLEXPORT_TEST(testTextFrames, "textframes.odt")
+ {
diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix
index 8adab57656ea..0e81616a0069 100644
--- a/pkgs/applications/science/electronics/kicad/default.nix
+++ b/pkgs/applications/science/electronics/kicad/default.nix
@@ -5,13 +5,13 @@ stdenv.mkDerivation rec {
 
   src = fetchbzr {
     url = "https://code.launchpad.net/~kicad-stable-committers/kicad/stable";
-    revision = 4024;
+    rev = 4024;
     sha256 = "1sv1l2zpbn6439ccz50p05hvqg6j551aqra551wck9h3929ghly5";
   };
 
   srcLibrary = fetchbzr {
     url = "http://bazaar.launchpad.net/~kicad-lib-committers/kicad/library";
-    revision = 293;
+    rev = 293;
     sha256 = "1wn9a4nhqyjzzfkq6xm7ag8n5n10xy7gkq6i7yry7wxini7pzv1i";
   };
 
diff --git a/pkgs/applications/science/logic/abc/default.nix b/pkgs/applications/science/logic/abc/default.nix
index a8076b9e29ea..30c36ae29dc8 100644
--- a/pkgs/applications/science/logic/abc/default.nix
+++ b/pkgs/applications/science/logic/abc/default.nix
@@ -6,7 +6,7 @@ stdenv.mkDerivation rec {
 
   src = fetchhg {
     url    = "https://bitbucket.org/alanmi/abc";
-    tag    = "03e221443d71e49e56cbc37f1907ee3b0ff3e7c9";
+    rev    = "03e221443d71e49e56cbc37f1907ee3b0ff3e7c9";
     sha256 = "0ahrqg718y7xpv939f6x8w1kqh7wsja4pw8hca7j67j0qjdgb4lm";
   };
 
diff --git a/pkgs/applications/science/logic/twelf/default.nix b/pkgs/applications/science/logic/twelf/default.nix
new file mode 100644
index 000000000000..1079c3783218
--- /dev/null
+++ b/pkgs/applications/science/logic/twelf/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, pkgconfig, smlnj, rsync }:
+
+stdenv.mkDerivation rec {
+  name = "twelf-${version}";
+  version = "1.7.1";
+
+  src = fetchurl {
+    url = "http://twelf.plparty.org/releases/twelf-src-${version}.tar.gz";
+    sha256 = "0fi1kbs9hrdrm1x4k13angpjasxlyd1gc3ys8ah54i75qbcd9c4i";
+  };
+
+  buildInputs = [ pkgconfig smlnj rsync ];
+
+  buildPhase = ''
+    export SMLNJ_HOME=${smlnj}
+    make smlnj
+  '';
+
+  installPhase = ''
+    ensureDir $out/bin
+    rsync -av bin/* $out/bin/
+
+    ensureDir $out/share/emacs/site-lisp/twelf/
+    rsync -av emacs/ $out/share/emacs/site-lisp/twelf/
+
+    ensureDir $out/share/twelf/examples
+    rsync -av examples/ $out/share/twelf/examples/
+    ensureDir $out/share/twelf/vim
+    rsync -av vim/ $out/share/twelf/vim/
+  '';
+
+  meta = {
+    description = "Twelf logic proof assistant";
+    longDescription = ''
+      Twelf is a language used to specify, implement, and prove properties of
+      deductive systems such as programming languages and logics. Large
+      research projects using Twelf include the TALT typed assembly language,
+      a foundational proof-carrying-code system, and a type safety proof for
+      Standard ML.
+    '';
+    homepage = http://twelf.org/wiki/Main_Page;
+    license = "MIT";
+    maintainers = with stdenv.lib.maintainers; [ jwiegley ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/pkgs/applications/science/math/glsurf/default.nix b/pkgs/applications/science/math/glsurf/default.nix
index a056a32c64c2..c4352c46f92e 100644
--- a/pkgs/applications/science/math/glsurf/default.nix
+++ b/pkgs/applications/science/math/glsurf/default.nix
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
 
   src = fetchdarcs {
     url = "http://lama.univ-savoie.fr/~raffalli/GlSurf";
-    tag = "3.3";
+    rev = "3.3";
     sha256 = ""; md5="";
   };
 
diff --git a/pkgs/applications/version-management/git-and-tools/default.nix b/pkgs/applications/version-management/git-and-tools/default.nix
index 482866969a11..fd548296220e 100644
--- a/pkgs/applications/version-management/git-and-tools/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/default.nix
@@ -95,4 +95,7 @@ rec {
   darcsToGit = callPackage ./darcs-to-git { };
 
   gitflow = callPackage ./gitflow { };
+
+  git-remote-hg = callPackage ./git-remote-hg { };
+
 }
diff --git a/pkgs/applications/version-management/git-and-tools/git-remote-hg/default.nix b/pkgs/applications/version-management/git-and-tools/git-remote-hg/default.nix
new file mode 100644
index 000000000000..ffeb299f49b5
--- /dev/null
+++ b/pkgs/applications/version-management/git-and-tools/git-remote-hg/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchgit, mercurial, makeWrapper,
+  asciidoc, xmlto, dbus, docbook_xsl, docbook_xml_dtd_45, libxslt, libxml2
+}:
+
+stdenv.mkDerivation rec {
+  rev = "185852eac44c25ae2e8d3b3fb6c9630e754e6363";
+  version = "v0.2-185852eac44c25ae2e8d3b3fb6c9630e754e6363";
+  name = "git-remote-hg-${version}";
+
+  src = fetchgit {
+    inherit rev;
+    url = "git://github.com/felipec/git-remote-hg.git";
+    sha256 = "1hc65nvxq7if1imwffyxia0i6vnkbax09gfcl9vq9yffzi8xzzfy";
+  };
+
+  buildInputs = [ mercurial.python mercurial makeWrapper
+    asciidoc xmlto dbus docbook_xsl docbook_xml_dtd_45 libxslt libxml2
+  ];
+
+  doCheck = false;
+
+  installFlags = "HOME=\${out}";
+
+  postInstall = ''
+    wrapProgram $out/bin/git-remote-hg \
+      --prefix PYTHONPATH : "$(echo ${mercurial}/lib/python*/site-packages):$(echo ${mercurial.python}/lib/python*/site-packages)${stdenv.lib.concatMapStrings (x: ":$(echo ${x}/lib/python*/site-packages)") mercurial.pythonPackages}"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/felipec/git-remote-hg";
+    description = "semi-official Mercurial bridge from Git project, once installed, it allows you to clone, fetch and push to and from Mercurial repositories as if they were Git ones";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.garbas ];
+  };
+}
diff --git a/pkgs/applications/version-management/git-and-tools/git/default.nix b/pkgs/applications/version-management/git-and-tools/git/default.nix
index f95b5a493a65..054b1c1b0f3c 100644
--- a/pkgs/applications/version-management/git-and-tools/git/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git/default.nix
@@ -10,7 +10,7 @@
 
 let
 
-  version = "1.9.4";
+  version = "2.0.1";
 
   svn = subversionClient.override { perlBindings = true; };
 
@@ -21,7 +21,7 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz";
-    sha256 = "1shxa49lsxn81qpfi60wh7rn5ci4zjgljvr0qczdmnqzd8w1zyvb";
+    sha256 = "1pylqr2qzndy92x3pq8hkwsb3garww2jxb167s6hshrva81s24mb";
   };
 
   patches = [ ./docbook2texi.patch ./symlinks-in-bin.patch ./cert-path.patch ];
diff --git a/pkgs/applications/version-management/gitolite/default.nix b/pkgs/applications/version-management/gitolite/default.nix
new file mode 100644
index 000000000000..2dcb13e5db5e
--- /dev/null
+++ b/pkgs/applications/version-management/gitolite/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, perl, git, fetchgit }:
+
+stdenv.mkDerivation rec {
+  name = "gitolite-${version}";
+  version = "3.6.1";
+
+  src = fetchgit {
+    url    = "git://github.com/sitaramc/gitolite";
+    rev    = "refs/tags/v${version}";
+    sha256 = "47e0e9c3137b05af96c091494ba918d61d1d3396749a04d63e7949ebcc6c6dca";
+    leaveDotGit = true;
+  };
+
+  buildInputs = [ perl git ];
+  buildPhase = "true";
+
+  patchPhase = ''
+    substituteInPlace ./install --replace " 2>/dev/null" ""
+    substituteInPlace src/lib/Gitolite/Hooks/PostUpdate.pm \
+      --replace /usr/bin/perl "/usr/bin/env perl"
+    substituteInPlace src/lib/Gitolite/Hooks/Update.pm \
+      --replace /usr/bin/perl "/usr/bin/env perl"
+  '';
+  installPhase = ''
+    mkdir -p $out/bin
+    git tag v${version} # Gitolite requires a tag for the version information :/
+    perl ./install -to $out/bin
+  '';
+
+  meta = {
+    description = "Finely-grained git repository hosting";
+    homepage    = "http://gitolite.com/gitolite/index.html";
+    license     = stdenv.lib.licenses.gpl2;
+    platforms   = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+  };
+}
diff --git a/pkgs/applications/window-managers/tabbed/default.nix b/pkgs/applications/window-managers/tabbed/default.nix
index 3ab950bf4d05..2dec3b2241f2 100644
--- a/pkgs/applications/window-managers/tabbed/default.nix
+++ b/pkgs/applications/window-managers/tabbed/default.nix
@@ -5,7 +5,7 @@ stdenv.mkDerivation rec {
  
   src = fetchhg {
     url = http://hg.suckless.org/tabbed;
-    tag = "d7542a6f6dc5";
+    rev = "d7542a6f6dc5";
     sha256 = "1963jsazfmh5k7923c1mfwppz1xbh48z16j0sa64fiscq22as2gj";
   };
 
diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix
index 67934ed0c291..6f454dc2b581 100644
--- a/pkgs/build-support/cabal/default.nix
+++ b/pkgs/build-support/cabal/default.nix
@@ -82,9 +82,7 @@ assert !enableStaticLibraries -> versionOlder "7.7" ghc.version;
             # the default download location for Cabal packages is Hackage,
             # you still have to specify the checksum
             src = fetchurl {
-              # cannot use mirrors system because of subtly different directory structures
-              urls = ["http://hackage.haskell.org/packages/archive/${self.pname}/${self.version}/${self.fname}.tar.gz"
-                      "http://hdiff.luite.com/packages/archive/${self.pname}/${self.fname}.tar.gz"];
+              url = "mirror://hackage/${self.pname}/${self.fname}.tar.gz";
               inherit (self) sha256;
             };
 
diff --git a/pkgs/build-support/fetchbzr/builder.sh b/pkgs/build-support/fetchbzr/builder.sh
index 17567fdadd23..af1257d3688c 100644
--- a/pkgs/build-support/fetchbzr/builder.sh
+++ b/pkgs/build-support/fetchbzr/builder.sh
@@ -1,9 +1,9 @@
 source "$stdenv/setup"
 
-header "exporting \`$url' (revision $revision) into \`$out'"
+header "exporting \`$url' (revision $rev) into \`$out'"
 
 # Perform a lightweight checkout so that we don't end up importing
 # all the repository's history.
-bzr -Ossl.cert_reqs=none export -r "$revision" --format=dir "$out" "$url"
+bzr -Ossl.cert_reqs=none export -r "$rev" --format=dir "$out" "$url"
 
 stopNest
diff --git a/pkgs/build-support/fetchbzr/default.nix b/pkgs/build-support/fetchbzr/default.nix
index 721250beeb3b..dd2c0363187a 100644
--- a/pkgs/build-support/fetchbzr/default.nix
+++ b/pkgs/build-support/fetchbzr/default.nix
@@ -1,5 +1,5 @@
 { stdenv, bazaar }: 
-{ url, revision, sha256 }:
+{ url, rev, sha256 }:
 
 stdenv.mkDerivation {
   name = "bzr-export";
@@ -11,5 +11,5 @@ stdenv.mkDerivation {
   outputHashMode = "recursive";
   outputHash = sha256;
   
-  inherit url revision;
+  inherit url rev;
 }
diff --git a/pkgs/build-support/fetchdarcs/builder.sh b/pkgs/build-support/fetchdarcs/builder.sh
index efff5ff5ebf9..301deb98307f 100644
--- a/pkgs/build-support/fetchdarcs/builder.sh
+++ b/pkgs/build-support/fetchdarcs/builder.sh
@@ -2,9 +2,9 @@ source $stdenv/setup
 
 tagtext=""
 tagflags=""
-if test -n "$tag"; then
-    tagtext="(tag $tag) "
-    tagflags="--tag=$tag"
+if test -n "$rev"; then
+    tagtext="(tag $rev) "
+    tagflags="--tag=$rev"
 elif test -n "$context"; then
     tagtext="(context) "
     tagflags="--context=$context"
diff --git a/pkgs/build-support/fetchdarcs/default.nix b/pkgs/build-support/fetchdarcs/default.nix
index 63e4ecde88a5..3c2e0524eea5 100644
--- a/pkgs/build-support/fetchdarcs/default.nix
+++ b/pkgs/build-support/fetchdarcs/default.nix
@@ -1,4 +1,4 @@
-{stdenv, darcs, nix}: {url, tag ? null, context ? null, md5 ? "", sha256 ? ""}:
+{stdenv, darcs, nix}: {url, rev ? null, context ? null, md5 ? "", sha256 ? ""}:
 
 stdenv.mkDerivation {
   name = "fetchdarcs";
@@ -9,5 +9,5 @@ stdenv.mkDerivation {
   outputHashMode = "recursive";
   outputHash = if sha256 == "" then md5 else sha256;
   
-  inherit url tag context;
+  inherit url rev context;
 }
diff --git a/pkgs/build-support/fetchgit/nix-prefetch-git b/pkgs/build-support/fetchgit/nix-prefetch-git
index 3574f3b7539b..bd1d8b5c1af0 100755
--- a/pkgs/build-support/fetchgit/nix-prefetch-git
+++ b/pkgs/build-support/fetchgit/nix-prefetch-git
@@ -217,7 +217,9 @@ clone_user_rev() {
             fi;;
     esac
 
-    echo "git revision is $(cd $dir && (git rev-parse $rev 2> /dev/null || git rev-parse refs/heads/fetchgit) | tail -n1)"
+    local full_revision=$(cd $dir && (git rev-parse $rev 2> /dev/null || git rev-parse refs/heads/fetchgit) | tail -n1)
+    echo "git revision is $full_revision"
+    echo "git human-readable version is $(cd $dir && (git describe $full_revision 2> /dev/null || git describe --tags $full_revision 2> /dev/null || echo -- none --))"
 
     # Allow doing additional processing before .git removal
     eval "$NIX_PREFETCH_GIT_CHECKOUT_HOOK"
diff --git a/pkgs/build-support/fetchhg/builder.sh b/pkgs/build-support/fetchhg/builder.sh
index 9699fb69b7fc..0b51ef79b235 100644
--- a/pkgs/build-support/fetchhg/builder.sh
+++ b/pkgs/build-support/fetchhg/builder.sh
@@ -1,9 +1,9 @@
 source $stdenv/setup
-header "getting $url${tag:+ ($tag)} into $out"
+header "getting $url${rev:+ ($rev)} into $out"
 
 hg clone --insecure "$url" hg-clone
 
-hg archive -q -y ${tag:+-r "$tag"} --cwd hg-clone $out
+hg archive -q -y ${rev:+-r "$rev"} --cwd hg-clone $out
 rm -f $out/.hg_archival.txt
 
 stopNest
diff --git a/pkgs/build-support/fetchhg/default.nix b/pkgs/build-support/fetchhg/default.nix
index 1aebb7ecc877..4675cbe6ec80 100644
--- a/pkgs/build-support/fetchhg/default.nix
+++ b/pkgs/build-support/fetchhg/default.nix
@@ -1,4 +1,4 @@
-{stdenv, mercurial, nix}: {name ? null, url, tag ? null, md5 ? null, sha256 ? null}:
+{stdenv, mercurial, nix}: {name ? null, url, rev ? null, md5 ? null, sha256 ? null}:
 
 # TODO: statically check if mercurial as the https support if the url starts woth https.
 stdenv.mkDerivation {
@@ -13,6 +13,6 @@ stdenv.mkDerivation {
   outputHashMode = "recursive";
   outputHash = if md5 != null then md5 else sha256;
   
-  inherit url tag;
+  inherit url rev;
   preferLocalBuild = true;
 }
diff --git a/pkgs/build-support/fetchurl/mirrors.nix b/pkgs/build-support/fetchurl/mirrors.nix
index 8417499cd00d..38d3353202b1 100644
--- a/pkgs/build-support/fetchurl/mirrors.nix
+++ b/pkgs/build-support/fetchurl/mirrors.nix
@@ -20,6 +20,12 @@ rec {
     http://kent.dl.sourceforge.net/sourceforge/
   ];
 
+  # SourceForge.jp.
+  sourceforgejp = [
+    http://osdn.dl.sourceforge.jp/
+    http://jaist.dl.sourceforge.jp/
+  ];
+
   # GNU (http://www.gnu.org/prep/ftp.html).
   gnu = [
     # This one redirects to a (supposedly) nearby and (supposedly) up-to-date
diff --git a/pkgs/build-support/fetchzip/nix-prefetch-zip b/pkgs/build-support/fetchzip/nix-prefetch-zip
new file mode 100755
index 000000000000..76255ab36747
--- /dev/null
+++ b/pkgs/build-support/fetchzip/nix-prefetch-zip
@@ -0,0 +1,153 @@
+#! /bin/sh -e
+
+usage(){
+    echo  >&2 "syntax: nix-prefetch-zip [OPTIONS] [URL [EXPECTED-HASH]]
+
+Options:
+      --url         url    The url of the archive to fetch.
+      --name        name   The name to use for the store path (defaults to \`basename \$url\`).
+      --hash        hash   The hash of unpacked archive.
+      --hash-type   type   Use the specified cryptographic hash algorithm, which can be one of md5, sha1, and sha256.
+      --leave-root         Keep the root directory of the archive.
+      --help               Show this help text.
+"
+    exit 1
+}
+
+
+argi=0
+argfun=""
+for arg; do
+  if test -z "$argfun"; then
+    case $arg in
+      --url) argfun=set_url;;
+      --name) argfun=set_name;;
+      --hash) argfun=set_expHash;;
+      --hash-type) argfun=set_hashType;;
+      --leave-root) leaveRoot=true;;
+      --help) usage;;
+      *) argi=$(($argi + 1))
+         case $argi in
+           1) url=$arg;;
+           2) rev=$arg;;
+           3) expHash=$arg;;
+           *) echo "Unexpected argument: $arg" >&2
+              usage
+              ;;
+         esac
+         ;;
+    esac
+  else
+    case $argfun in
+      set_*)
+        var=$(echo $argfun | sed 's,^set_,,')
+        eval "$var=\$arg"
+        ;;
+    esac
+    argfun=""
+  fi
+done
+
+if [ -z "$url" ]; then
+  echo "Error: No --url flag given" >&2
+  usage
+fi
+
+if [ -z "$name" ]; then
+  name=$(basename "$url")
+fi
+
+if test -z "$hashType"; then
+  hashType=sha256
+fi
+
+hashFormat="--base32"
+
+tmp=$(mktemp -d 2>/dev/null || mktemp -d -t "$$")
+trap "rm -rf '$tmp'" EXIT
+
+unpackDir=$tmp/unpacked/$name
+mkdir -p $unpackDir
+downloadedFile=$tmp/$name
+
+unpackFile() {
+  local curSrc="$1"
+
+  case "$curSrc" in
+    *.tar.xz | *.tar.lzma)
+      # Don't rely on tar knowing about .xz.
+      xz -d < $curSrc | tar xf -
+      ;;
+    *.tar | *.tar.* | *.tgz | *.tbz2)
+      # GNU tar can automatically select the decompression method
+      # (info "(tar) gzip").
+      tar xf $curSrc
+      ;;
+    *.zip)
+      unzip -qq $curSrc
+      ;;
+    *)
+      echo "source archive $curSrc has unknown type" >&2
+      exit 1
+      ;;
+  esac
+}
+
+# If the hash was given, a file with that hash may already be in the
+# store.
+if test -n "$expHash"; then
+  finalPath=$(nix-store --print-fixed-path --recursive "$hashType" "$expHash" "$name")
+  if ! nix-store --check-validity "$finalPath" 2> /dev/null; then
+    finalPath=
+  fi
+  hash=$expHash
+fi
+
+# If we don't know the hash or a path with that hash doesn't exist,
+# download the file and add it to the store.
+if test -z "$finalPath"; then
+  curl="curl \
+   --location --max-redirs 20 \
+   --disable-epsv \
+   --insecure"
+
+  if ! $curl --fail "$url" --output "$downloadedFile"; then
+    echo "error: could not download $url" >&2
+    exit 1
+  fi
+
+  cd $unpackDir
+  unpackFile "$downloadedFile"
+
+  # FIXME: handle zip files that contain a single regular file.
+  if [ -z "$leaveRoot" ]; then
+    shopt -s dotglob
+    if [ $(ls -d $unpackDir/* | wc -l) != 1 ]; then
+      echo "error: zip file must contain a single directory."
+      exit 1
+    fi
+    fn=$(cd "$unpackDir" && echo *)
+    mv $unpackDir/$fn/* "$unpackDir/"
+    rmdir "$unpackDir/$fn"
+  fi
+
+  # Compute the hash.
+  hash=$(nix-hash --type $hashType $hashFormat $unpackDir)
+  if ! test -n "$QUIET"; then echo "hash is $hash" >&2; fi
+
+  # Add the downloaded file to the Nix store.
+  finalPath=$(nix-store --add-fixed --recursive "$hashType" $unpackDir)
+
+  if test -n "$expHash" -a "$expHash" != "$hash"; then
+    echo "hash mismatch for URL \`$url'"
+    exit 1
+  fi
+fi
+
+if ! test -n "$QUIET"; then echo "path is $finalPath" >&2; fi
+
+echo $hash
+
+if test -n "$PRINT_PATH"; then
+  echo $finalPath
+fi
diff --git a/pkgs/build-support/kernel/paths-from-graph.pl b/pkgs/build-support/kernel/paths-from-graph.pl
index f18662372103..9a199a2b3044 100644
--- a/pkgs/build-support/kernel/paths-from-graph.pl
+++ b/pkgs/build-support/kernel/paths-from-graph.pl
@@ -1,9 +1,27 @@
+# Parses a /nix/store/*-closure file and prints
+# various information.
+# By default, the nodes in the graph are printed to stdout.
+# If the environment variable printManifest is set,
+# then the graph is written as a manifest.
+# If printRegistration is set, then the graph is written
+# as a registration file for a manifest is written
+# in the `nix-store --load-db' format.
+
 use strict;
 use File::Basename;
 
 my %storePaths;
 my %refs;
 
+# Each argument on the command line is a graph file.
+# The graph file contains line-triples and a variable
+# number of references:
+# <store-path>
+# <deriver>
+# <count>
+# <ref-#1>
+# ...
+# <ref-#count>
 foreach my $graph (@ARGV) {
     open GRAPH, "<$graph" or die;
 
diff --git a/pkgs/build-support/upstream-updater/update-walker-service-specific.sh b/pkgs/build-support/upstream-updater/update-walker-service-specific.sh
index a979e24edf2a..28c28f695875 100644
--- a/pkgs/build-support/upstream-updater/update-walker-service-specific.sh
+++ b/pkgs/build-support/upstream-updater/update-walker-service-specific.sh
@@ -5,7 +5,7 @@ SF_redirect () {
 }
 
 SF_version_dir () {
-  version_link 'http://sourceforge.net/.+/[0-9.]+/$'
+  version_link 'http://sourceforge.net/.+/'"$1"'[0-9.]+/$'
 }
 
 GH_latest () {
diff --git a/pkgs/build-support/upstream-updater/update-walker.sh b/pkgs/build-support/upstream-updater/update-walker.sh
index bc58f935f815..e11eb722e0e4 100755
--- a/pkgs/build-support/upstream-updater/update-walker.sh
+++ b/pkgs/build-support/upstream-updater/update-walker.sh
@@ -2,15 +2,22 @@
 
 own_dir="$(cd "$(dirname "$0")"; pwd)"
 
+URL_WAS_SET=
+DL_URL_RE=
 CURRENT_URL=
 CURRENT_REV=
 PREFETCH_COMMAND=
 NEED_TO_CHOOSE_URL=1
 
 url () {
+  URL_WAS_SET=1
   CURRENT_URL="$1"
 }
 
+dl_url_re () {
+  DL_URL_RE="$1"
+}
+
 version_unpack () {
   sed -re '
     s/[.]/ /g; 
@@ -101,16 +108,27 @@ ensure_name () {
 
 ensure_attribute_name () {
   echo "Ensuring attribute name. CURRENT_ATTRIBUTE_NAME: $CURRENT_ATTRIBUTE_NAME" >&2
+  ensure_name
   [ -z "$CURRENT_ATTRIBUTE_NAME" ] && attribute_name "$CURRENT_NAME"
   echo "Resulting attribute name: $CURRENT_ATTRIBUTE_NAME"
 }
 
+ensure_url () {
+  echo "Ensuring starting URL. CURRENT_URL: $CURRENT_URL" >&2
+  ensure_attribute_name
+  [ -z "$CURRENT_URL" ] && CURRENT_URL="$(retrieve_meta downloadPage)"
+  [ -z "$CURRENT_URL" ] && CURRENT_URL="$(retrieve_meta downloadpage)"
+  [ -z "$CURRENT_URL" ] && CURRENT_URL="$(retrieve_meta homepage)"
+  echo "Resulting URL: $CURRENT_URL"
+}
+
 ensure_choice () {
   echo "Ensuring that choice is made." >&2
   echo "NEED_TO_CHOOSE_URL: [$NEED_TO_CHOOSE_URL]." >&2
   echo "CURRENT_URL: $CURRENT_URL" >&2
+  [ -z "$URL_WAS_SET" ] && [ -z "$CURRENT_URL" ] && ensure_url
   [ -n "$NEED_TO_CHOOSE_URL" ] && {
-    version_link '[.]tar[.]([^./])+$'
+    version_link "${DL_URL_RE:-[.]tar[.]([^./])+\$}"
     unset NEED_TO_CHOOSE_URL
   }
   [ -z "$CURRENT_URL" ] && {
@@ -153,8 +171,18 @@ attribute_name () {
   echo "CURRENT_ATTRIBUTE_NAME: $CURRENT_ATTRIBUTE_NAME" >&2
 }
 
+retrieve_meta () {
+  nix-instantiate --eval-only '<nixpkgs>' -A "$CURRENT_ATTRIBUTE_NAME".meta."$1" | xargs
+}
+
 retrieve_version () {
-  PACKAGED_VERSION="$(nix-instantiate --eval-only '<nixpkgs>' -A "$CURRENT_ATTRIBUTE_NAME".meta.version | xargs)"
+  PACKAGED_VERSION="$(retrieve_meta version)"
+}
+
+ensure_dl_url_re () {
+  echo "Ensuring DL_URL_RE. DL_URL_RE: $DL_URL_RE" >&2
+  [ -z "$DL_URL_RE" ] && dl_url_re "$(retrieve_meta downloadURLRegexp)"
+  echo "DL_URL_RE: $DL_URL_RE" >&2
 }
 
 directory_of () {
@@ -256,10 +284,27 @@ process_config () {
   CONFIG_DIR="$(directory_of "$1")"
   CONFIG_NAME="$(basename "$1")"
   BEGIN_EXPRESSION='# Generated upstream information';
-  source "$CONFIG_DIR/$CONFIG_NAME"
-  ensure_name
+  if [ -f  "$CONFIG_DIR/$CONFIG_NAME" ] &&
+      [ "${CONFIG_NAME}" = "${CONFIG_NAME%.nix}" ]; then
+    source "$CONFIG_DIR/$CONFIG_NAME"
+  else
+    CONFIG_NAME="${CONFIG_NAME%.nix}"
+    ensure_attribute_name
+    [ -n "$(retrieve_meta updateWalker)" ] ||
+        [ -n "$FORCE_UPDATE_WALKER" ] || {
+      echo "Error: package not marked as safe for update-walker" >&2
+      echo "Set FORCE_UPDATE_WALKER=1 to override" >&2
+      exit 1;
+    }
+    [ -z "$(retrieve_meta fullRegenerate)" ] && eval "
+      do_overwrite(){
+        do_overwrite_just_version
+      }
+    "
+  fi
   ensure_attribute_name
   retrieve_version
+  ensure_dl_url_re
   ensure_choice
   ensure_version
   ensure_target
diff --git a/pkgs/data/fonts/anonymous-pro/default.nix b/pkgs/data/fonts/anonymous-pro/default.nix
index 21a1c9bf5c85..cca775d941e1 100644
--- a/pkgs/data/fonts/anonymous-pro/default.nix
+++ b/pkgs/data/fonts/anonymous-pro/default.nix
@@ -40,6 +40,9 @@ rec {
     ];
     platforms = with a.lib.platforms;
       all;
+    license = with a.lib.licenses; ofl;
+    hydraPlatforms = [];
+    homepage = "http://www.marksimonson.com/fonts/view/anonymous-pro";
   };
   passthru = {
     updateInfo = {
diff --git a/pkgs/data/fonts/ipafont/default.nix b/pkgs/data/fonts/ipafont/default.nix
new file mode 100644
index 000000000000..91bf95d1ea25
--- /dev/null
+++ b/pkgs/data/fonts/ipafont/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, unzip }:
+
+stdenv.mkDerivation {
+  name = "ipafont-003.03";
+
+  src = fetchurl {
+    url = "http://ipafont.ipa.go.jp/ipafont/IPAfont00303.php";
+    sha256 = "f755ed79a4b8e715bed2f05a189172138aedf93db0f465b4e20c344a02766fe5";
+  };
+
+  buildInputs = [ unzip ];
+
+  unpackPhase = ''
+    unzip $src
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/opentype
+    cp ./IPAfont00303/*.ttf $out/share/fonts/opentype/
+  '';
+
+  meta = {
+    description = "Japanese font package with Mincho and Gothic fonts";
+    longDescription = ''
+      IPAFont is a Japanese font developed by the Information-technology
+      Promotion Agency of Japan. It provides both Mincho and Gothic fonts,
+      suitable for both display and printing.
+    '';
+    homepage = http://ipafont.ipa.go.jp/ipafont/;
+    license = stdenv.lib.licenses.ipa;
+    maintainers = [ stdenv.lib.maintainers.auntie ];
+  };
+}
diff --git a/pkgs/data/fonts/kochi-substitute-naga10/default.nix b/pkgs/data/fonts/kochi-substitute-naga10/default.nix
new file mode 100644
index 000000000000..98ab8a3bcac5
--- /dev/null
+++ b/pkgs/data/fonts/kochi-substitute-naga10/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl }:
+
+let version = "20030809";
+in
+stdenv.mkDerivation {
+  name = "kochi-substitute-naga10-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforgejp/efont/5411/kochi-substitute-${version}.tar.bz2";
+    sha256 = "f4d69b24538833bf7e2c4de5e01713b3f1440960a6cc2a5993cb3c68cd23148c";
+  };
+
+  sourceRoot = "kochi-substitute-${version}";
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp ./kochi-gothic-subst.ttf $out/share/fonts/truetype/kochi-gothic-subst-naga10.ttf
+    cp ./kochi-mincho-subst.ttf $out/share/fonts/truetype/kochi-mincho-subst-naga10.ttf
+  '';
+
+  meta = {
+    description = "Japanese font, non-free replacement for MS Gothic and MS Mincho.";
+    longDescription = ''
+      Kochi Gothic and Kochi Mincho were developed as free replacements for the
+      MS Gothic and MS Mincho fonts from Microsoft. This version of the fonts
+      includes some non-free glyphs from the naga10 font, which stipulate that
+      this font may not be sold commercially. See kochi-substitute for the free
+      Debian version.
+    '';
+    homepage = http://sourceforge.jp/projects/efont/;
+    license = stdenv.lib.licenses.unfreeRedistributable;
+    maintainers = [ stdenv.lib.maintainers.auntie ];
+  };
+}
diff --git a/pkgs/data/fonts/kochi-substitute/default.nix b/pkgs/data/fonts/kochi-substitute/default.nix
new file mode 100644
index 000000000000..dec20fd51000
--- /dev/null
+++ b/pkgs/data/fonts/kochi-substitute/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, dpkg }:
+
+let version = "20030809";
+in
+stdenv.mkDerivation {
+  name = "kochi-substitute-${version}";
+
+  src = fetchurl {
+    url = "mirror://debian/pool/main/t/ttf-kochi/ttf-kochi-gothic_${version}-15_all.deb";
+    sha256 = "6e2311cd8e880a9328e4d3eef34a1c1f024fc87fba0dce177a0e1584a7360fea";
+  };
+
+  src2 = fetchurl {
+    url = "mirror://debian/pool/main/t/ttf-kochi/ttf-kochi-mincho_${version}-15_all.deb";
+    sha256 = "91ce6c993a3a0f77ed85db76f62ce18632b4c0cbd8f864676359a17ae5e6fa3c";
+  };
+
+  buildInputs = [ dpkg ];
+
+  unpackCmd = ''
+    dpkg-deb --fsys-tarfile $src | tar xf - ./usr/share/fonts/truetype/kochi/kochi-gothic-subst.ttf
+    dpkg-deb --fsys-tarfile $src2 | tar xf - ./usr/share/fonts/truetype/kochi/kochi-mincho-subst.ttf
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp ./share/fonts/truetype/kochi/kochi-gothic-subst.ttf $out/share/fonts/truetype/
+    cp ./share/fonts/truetype/kochi/kochi-mincho-subst.ttf $out/share/fonts/truetype/
+  '';
+
+  meta = {
+    description = "Japanese font, a free replacement for MS Gothic and MS Mincho.";
+    longDescription = ''
+      Kochi Gothic and Kochi Mincho were developed as free replacements for the
+      MS Gothic and MS Mincho fonts from Microsoft. These are the Debian
+      versions of the fonts, which remove some non-free glyphs that were added
+      from the naga10 font.
+    '';
+    homepage = http://sourceforge.jp/projects/efont/;
+    license = stdenv.lib.licenses.wadalab;
+    maintainers = [ stdenv.lib.maintainers.auntie ];
+  };
+}
diff --git a/pkgs/desktops/gnome-2/desktop/vte/default.nix b/pkgs/desktops/gnome-2/desktop/vte/default.nix
index aca30f87dfc4..30c8bf07d418 100644
--- a/pkgs/desktops/gnome-2/desktop/vte/default.nix
+++ b/pkgs/desktops/gnome-2/desktop/vte/default.nix
@@ -11,11 +11,8 @@ stdenv.mkDerivation rec {
 
   patches = [
     ./alt.patch
-    ( fetchurl { # CVE-2012-2738
-      url = "http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/x11-libs/"
-        + "vte/files/vte-0.28.2-limit-arguments.patch?revision=1.1";
-      sha256 = "1s8agx74wa7wlv9ybd5h3dp4hzf4ddg7piyan37g2ab3fnvg4jhn";
-    } )
+    # CVE-2012-2738
+    ./vte-0.28.2-limit-arguments.patch
   ];
 
   buildInputs = [ intltool pkgconfig glib gtk ncurses ] ++
diff --git a/pkgs/desktops/gnome-2/desktop/vte/vte-0.28.2-limit-arguments.patch b/pkgs/desktops/gnome-2/desktop/vte/vte-0.28.2-limit-arguments.patch
new file mode 100644
index 000000000000..fd454079390f
--- /dev/null
+++ b/pkgs/desktops/gnome-2/desktop/vte/vte-0.28.2-limit-arguments.patch
@@ -0,0 +1,40 @@
+From feeee4b5832b17641e505b7083e0d299fdae318e Mon Sep 17 00:00:00 2001
+From: Christian Persch <chpe@gnome.org>
+Date: Sat, 19 May 2012 17:36:09 +0000
+Subject: emulation: Limit integer arguments to 65535
+
+To guard against malicious sequences containing excessively big numbers,
+limit all parsed numbers to 16 bit range. Doing this here in the parsing
+routine is a catch-all guard; this doesn't preclude enforcing
+more stringent limits in the handlers themselves.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=676090
+---
+diff --git a/src/table.c b/src/table.c
+index 140e8c8..85cf631 100644
+--- a/src/table.c
++++ b/src/table.c
+@@ -550,7 +550,7 @@ _vte_table_extract_numbers(GValueArray **array,
+ 		if (G_UNLIKELY (*array == NULL)) {
+ 			*array = g_value_array_new(1);
+ 		}
+-		g_value_set_long(&value, total);
++		g_value_set_long(&value, CLAMP (total, 0, G_MAXUSHORT));
+ 		g_value_array_append(*array, &value);
+ 	} while (i++ < arginfo->length);
+ 	g_value_unset(&value);
+diff --git a/src/vteseq.c b/src/vteseq.c
+index 457c06a..46def5b 100644
+--- a/src/vteseq.c
++++ b/src/vteseq.c
+@@ -557,7 +557,7 @@ vte_sequence_handler_multiple(VteTerminal *terminal,
+                               GValueArray *params,
+                               VteTerminalSequenceHandler handler)
+ {
+-        vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXLONG);
++        vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXUSHORT);
+ }
+ 
+ static void
+--
+cgit v0.9.0.2
diff --git a/pkgs/desktops/gnome-3/3.10/core/libcroco/default.nix b/pkgs/desktops/gnome-3/3.10/core/libcroco/default.nix
index e5f6a0aa9b8b..1875c1491f96 100644
--- a/pkgs/desktops/gnome-3/3.10/core/libcroco/default.nix
+++ b/pkgs/desktops/gnome-3/3.10/core/libcroco/default.nix
@@ -13,6 +13,6 @@ stdenv.mkDerivation rec {
   buildInputs = [ pkgconfig libxml2 glib ];
 
   meta = with stdenv.lib; {
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/compilers/go/gox.nix b/pkgs/development/compilers/go/gox.nix
new file mode 100644
index 000000000000..705cb6e5c28f
--- /dev/null
+++ b/pkgs/development/compilers/go/gox.nix
@@ -0,0 +1,54 @@
+{ stdenv, lib, go, fetchFromGitHub }:
+
+let
+  goDeps = [
+    {
+      root = "github.com/mitchellh/gox";
+      src = fetchFromGitHub {
+        owner = "mitchellh";
+        repo = "gox";
+        rev = "c7329055e2aeb253a947e5cc876586ff4ca19199";
+        sha256 = "0zhb88jjxqn3sdc4bpzvajqvgi9igp5gk03q12gaksaxhy2wl4jy";
+      };
+    }
+    {
+      root = "github.com/mitchellh/iochan";
+      src = fetchFromGitHub {
+        owner = "mitchellh";
+        repo = "iochan";
+        rev = "b584a329b193e206025682ae6c10cdbe03b0cd77";
+        sha256 = "1fcwdhfci41ibpng2j4c1bqfng578cwzb3c00yw1lnbwwhaq9r6b";
+      };
+    }
+  ];
+  sources = stdenv.mkDerivation rec {
+    name = "go-deps";
+    buildCommand =
+      lib.concatStrings
+        (map (dep: ''
+                mkdir -p $out/src/`dirname ${dep.root}`
+                ln -s ${dep.src} $out/src/${dep.root}
+              '') goDeps);
+  };
+in
+
+stdenv.mkDerivation rec {
+  name = "gox";
+
+  src = sources;
+
+  propagatedBuildInputs = [ go ];
+
+  installPhase = ''
+    ensureDir $out/bin
+    export GOPATH=$src
+    go build -v -o $out/bin/gox github.com/mitchellh/gox
+  '';
+
+  meta = with lib; {
+    description = "A simple, no-frills tool for Go cross compilation that behaves a lot like standard go build";
+    homepage    = https://github.com/mitchellh/gox;
+    maintainers = with maintainers; [ cstrahan ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/pkgs/development/compilers/jdk/jdk-linux-base.nix b/pkgs/development/compilers/jdk/jdk-linux-base.nix
new file mode 100644
index 000000000000..b29ae826d888
--- /dev/null
+++ b/pkgs/development/compilers/jdk/jdk-linux-base.nix
@@ -0,0 +1,175 @@
+{ productVersion
+, patchVersion
+, downloadUrl
+, sha256_i686
+, sha256_x86_64
+, jceName
+, jceDownloadUrl
+, sha256JCE
+}:
+
+{ swingSupport ? true
+, stdenv
+, requireFile
+, unzip
+, file
+, xlibs ? null
+, installjdk ? true
+, pluginSupport ? true
+, installjce ? false
+, glib
+, libxml2
+, libav_0_8
+, ffmpeg
+, libxslt
+, mesa_noglu
+, freetype
+, fontconfig
+, gnome
+, cairo
+, alsaLib
+, atk
+, gdk_pixbuf
+}:
+
+assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
+assert swingSupport -> xlibs != null;
+
+let
+
+  /**
+   * The JRE libraries are in directories that depend on the CPU.
+   */
+  architecture =
+    if stdenv.system == "i686-linux" then
+      "i386"
+    else if stdenv.system == "x86_64-linux" then
+      "amd64"
+    else
+      abort "jdk requires i686-linux or x86_64 linux";
+
+  jce =
+    if installjce then
+      requireFile {
+        name = jceName;
+        url = jceDownloadUrl;
+        sha256 = sha256JCE;
+      }
+    else
+      "";
+in
+
+stdenv.mkDerivation rec {
+  name =
+    if installjdk then "jdk-1.${productVersion}.0_${patchVersion}" else "jre-1.${productVersion}.0_${patchVersion}";
+
+  src =
+    if stdenv.system == "i686-linux" then
+      requireFile {
+        name = "jdk-${productVersion}u${patchVersion}-linux-i586.tar.gz";
+        url = downloadUrl;
+        sha256 = sha256_i686;
+      }
+    else if stdenv.system == "x86_64-linux" then
+
+      requireFile {
+        name = "jdk-${productVersion}u${patchVersion}-linux-x64.tar.gz";
+        url = downloadUrl;
+        sha256 = sha256_x86_64;
+      }
+    else
+      abort "jdk requires i686-linux or x86_64 linux";
+
+  nativeBuildInputs = [ file ]
+    ++ stdenv.lib.optional installjce unzip;
+
+  # See: https://github.com/NixOS/patchelf/issues/10
+  dontStrip = 1;
+  
+  installPhase = ''
+    cd ..
+
+    # Set PaX markings
+    exes=$(file $sourceRoot/bin/* $sourceRoot/jre/bin/* 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//')
+    for file in $exes; do
+      paxmark m "$file"
+      # On x86 for heap sizes over 700MB disable SEGMEXEC and PAGEEXEC as well.
+      ${stdenv.lib.optionalString stdenv.isi686 ''paxmark msp "$file"''}
+    done
+
+    if test -z "$installjdk"; then
+      mv $sourceRoot/jre $out
+    else
+      mv $sourceRoot $out
+    fi
+
+    for file in $out/*
+    do
+      if test -f $file ; then
+        rm $file
+      fi
+    done
+
+    if test -n "$installjdk"; then
+      for file in $out/jre/*
+      do
+        if test -f $file ; then
+          rm $file
+        fi
+      done
+    fi
+
+    # construct the rpath
+    rpath=
+    for i in $libraries; do
+        rpath=$rpath''${rpath:+:}$i/lib:$i/lib64
+    done
+
+    if test -z "$installjdk"; then
+      jrePath=$out
+    else
+      jrePath=$out/jre
+    fi
+
+    if test -n "${jce}"; then
+      unzip ${jce}
+      cp -v UnlimitedJCEPolicy/*.jar $jrePath/lib/security
+    fi
+
+    rpath=$rpath''${rpath:+:}$jrePath/lib/${architecture}/jli
+    rpath=$rpath''${rpath:+:}$jrePath/lib/${architecture}/server
+    rpath=$rpath''${rpath:+:}$jrePath/lib/${architecture}/xawt
+    rpath=$rpath''${rpath:+:}$jrePath/lib/${architecture}
+    
+    # set all the dynamic linkers
+    find $out -type f -perm +100 \
+        -exec patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
+        --set-rpath "$rpath" {} \;
+
+    find $out -name "*.so" -exec patchelf --set-rpath "$rpath" {} \;
+
+    if test -z "$pluginSupport"; then
+      rm -f $out/bin/javaws
+      if test -n "$installjdk"; then
+        rm -f $out/jre/bin/javaws
+      fi
+    fi
+
+    mkdir $jrePath/lib/${architecture}/plugins
+    ln -s $jrePath/lib/${architecture}/libnpjp2.so $jrePath/lib/${architecture}/plugins
+  '';
+
+  inherit installjdk pluginSupport;
+
+  /**
+   * libXt is only needed on amd64
+   */
+  libraries =
+    [stdenv.gcc.libc glib libxml2 libav_0_8 ffmpeg libxslt mesa_noglu xlibs.libXxf86vm alsaLib fontconfig freetype gnome.pango gnome.gtk cairo gdk_pixbuf atk] ++
+    (if swingSupport then [xlibs.libX11 xlibs.libXext xlibs.libXtst xlibs.libXi xlibs.libXp xlibs.libXt xlibs.libXrender stdenv.gcc.gcc] else []);
+
+  passthru.mozillaPlugin = if installjdk then "/jre/lib/${architecture}/plugins" else "/lib/${architecture}/plugins";
+
+  meta.license = "unfree";
+}
+
diff --git a/pkgs/development/compilers/jdk/jdk7-linux.nix b/pkgs/development/compilers/jdk/jdk7-linux.nix
index 7683ad81e597..46544dc390f2 100644
--- a/pkgs/development/compilers/jdk/jdk7-linux.nix
+++ b/pkgs/development/compilers/jdk/jdk7-linux.nix
@@ -1,170 +1,10 @@
-{ swingSupport ? true
-, stdenv
-, requireFile
-, unzip
-, file
-, xlibs ? null
-, installjdk ? true
-, pluginSupport ? true
-, installjce ? false
-, glib
-, libxml2
-, libav_0_8
-, ffmpeg
-, libxslt
-, mesa_noglu
-, freetype
-, fontconfig
-, gnome
-, cairo
-, alsaLib
-, atk
-, gdk_pixbuf
-}:
-
-assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
-assert swingSupport -> xlibs != null;
-
-let
-
-  /**
-   * The JRE libraries are in directories that depend on the CPU.
-   */
-  architecture =
-    if stdenv.system == "i686-linux" then
-      "i386"
-    else if stdenv.system == "x86_64-linux" then
-      "amd64"
-    else
-      abort "jdk requires i686-linux or x86_64 linux";
-
-  jce =
-    if installjce then
-      requireFile {
-        name = "UnlimitedJCEPolicyJDK7.zip";
-        url = http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html;
-        sha256 = "7a8d790e7bd9c2f82a83baddfae765797a4a56ea603c9150c87b7cdb7800194d";
-      }
-    else
-      "";
-in
-
-stdenv.mkDerivation rec {
-  patchversion = "55";
-
-  name =
-    if installjdk then "jdk-1.7.0_${patchversion}" else "jre-1.7.0_${patchversion}";
-
-  src =
-    if stdenv.system == "i686-linux" then
-      requireFile {
-        name = "jdk-7u${patchversion}-linux-i586.tar.gz";
-        url = http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html;
-        sha256 = "0y0v5ilbkdmf14jrvwa23x91rfdw90jji4y7hq0l494iy4wjnyc1";
-      }
-    else if stdenv.system == "x86_64-linux" then
-
-      requireFile {
-        name = "jdk-7u${patchversion}-linux-x64.tar.gz";
-        url = http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html;
-        sha256 = "15sncxhjasv5i6p7hfrr92xq5ph9g6g12i4m52vp45l031bw5y46";
-      }
-    else
-      abort "jdk requires i686-linux or x86_64 linux";
-
-  nativeBuildInputs = [ file ]
-    ++ stdenv.lib.optional installjce unzip;
-
-  installPhase = ''
-    cd ..
-
-    # Set PaX markings
-    exes=$(file $sourceRoot/bin/* $sourceRoot/jre/bin/* 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//')
-    for file in $exes; do
-      paxmark m "$file"
-      # On x86 for heap sizes over 700MB disable SEGMEXEC and PAGEEXEC as well.
-      ${stdenv.lib.optionalString stdenv.isi686 ''paxmark msp "$file"''}
-    done
-
-    if test -z "$installjdk"; then
-      mv $sourceRoot/jre $out
-    else
-      mv $sourceRoot $out
-    fi
-
-    for file in $out/*
-    do
-      if test -f $file ; then
-        rm $file
-      fi
-    done
-
-    if test -n "$installjdk"; then
-      for file in $out/jre/*
-      do
-        if test -f $file ; then
-          rm $file
-        fi
-      done
-    fi
-
-    # construct the rpath
-    rpath=
-    for i in $libraries; do
-        rpath=$rpath''${rpath:+:}$i/lib''${rpath:+:}$i/lib64
-    done
-
-    if test -z "$installjdk"; then
-      jrePath=$out
-    else
-      jrePath=$out/jre
-    fi
-
-    if test -n "${jce}"; then
-      unzip ${jce}
-      cp -v UnlimitedJCEPolicy/*.jar $jrePath/lib/security
-    fi
-
-    rpath=$rpath''${rpath:+:}$jrePath/lib/${architecture}/jli
-    rpath=$rpath''${rpath:+:}$jrePath/lib/${architecture}/server
-    rpath=$rpath''${rpath:+:}$jrePath/lib/${architecture}/xawt
-    rpath=$rpath''${rpath:+:}$jrePath/lib/${architecture}
-
-    # set all the dynamic linkers
-    find $out -type f -perm +100 \
-        -exec patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
-        --set-rpath "$rpath" {} \;
-
-    find $out -name "*.so" -exec patchelf --set-rpath "$rpath" {} \;
-
-    # HACK: For some reason, appending atk to the global patchelf rpath paths causes:
-    #   java: relocation error: java: symbol , version GLIBC_2.2.5 not defined in file libc.so.6 with link time reference
-    # Because only libglass.so needs atk, we put it only in it's rpath.
-    # This seems to work fine.
-    test -f $out/jre/lib/${architecture}/libglass.so && patchelf --set-rpath "$rpath:${atk}/lib" $out/jre/lib/${architecture}/libglass.so
-
-    if test -z "$pluginSupport"; then
-      rm -f $out/bin/javaws
-      if test -n "$installjdk"; then
-        rm -f $out/jre/bin/javaws
-      fi
-    fi
-
-    mkdir $jrePath/lib/${architecture}/plugins
-    ln -s $jrePath/lib/${architecture}/libnpjp2.so $jrePath/lib/${architecture}/plugins
-  '';
-
-  inherit installjdk pluginSupport;
-
-  /**
-   * libXt is only needed on amd64
-   */
-  libraries =
-    [stdenv.gcc.libc glib libxml2 libav_0_8 ffmpeg libxslt mesa_noglu xlibs.libXxf86vm alsaLib fontconfig freetype gnome.pango gnome.gtk cairo gdk_pixbuf] ++
-    (if swingSupport then [xlibs.libX11 xlibs.libXext xlibs.libXtst xlibs.libXi xlibs.libXp xlibs.libXt xlibs.libXrender stdenv.gcc.gcc] else []);
-
-  passthru.mozillaPlugin = if installjdk then "/jre/lib/${architecture}/plugins" else "/lib/${architecture}/plugins";
-
-  meta.license = "unfree";
+import ./jdk-linux-base.nix {
+  productVersion = "7";
+  patchVersion = "60";
+  downloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html;
+  sha256_i686 = "d736fb4fd7c8ef50b76411daa640c6feeb48a5c275d29a90ffeb916a78d47a48";
+  sha256_x86_64 = "c7232b717573b057dbe828d937ee406b7a75fbc6aba7f1de98a049cbd42c6ae8";
+  jceName = "UnlimitedJCEPolicyJDK7.zip";
+  jceDownloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html;
+  sha256JCE = "7a8d790e7bd9c2f82a83baddfae765797a4a56ea603c9150c87b7cdb7800194d";
 }
-
diff --git a/pkgs/development/compilers/jdk/jdk8-linux.nix b/pkgs/development/compilers/jdk/jdk8-linux.nix
new file mode 100644
index 000000000000..0c3eed75f4c2
--- /dev/null
+++ b/pkgs/development/compilers/jdk/jdk8-linux.nix
@@ -0,0 +1,10 @@
+import ./jdk-linux-base.nix {
+  productVersion = "8";
+  patchVersion = "5";
+  downloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html;
+  sha256_i686 = "779f83efb8dc9ce7c1143ba9bbd38fa2d8a1c49dcb61f7d36972d37d109c5fc9";
+  sha256_x86_64 = "44901389e9fb118971534ad0f58558ba8c43f315b369117135bd6617ae631edc";
+  jceName = "jce_policy-8.zip";
+  jceDownloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html;
+  sha256JCE = "f3020a3922efd6626c2fff45695d527f34a8020e938a49292561f18ad1320b59";
+}
diff --git a/pkgs/development/compilers/nasm/default.nix b/pkgs/development/compilers/nasm/default.nix
index 8098b9d278f4..8219882a2a21 100644
--- a/pkgs/development/compilers/nasm/default.nix
+++ b/pkgs/development/compilers/nasm/default.nix
@@ -1,11 +1,12 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "nasm-2.11.01";
+  name = "nasm-${version}";
+  version = "2.11.05";
   
   src = fetchurl {
-    url = "http://www.nasm.us/pub/nasm/releasebuilds/2.11.01/${name}.tar.bz2";
-    sha256 = "0p0rhq18in2hyv3gircgxj72n2b1mvr8bvjlqscpaz8m62cyvam7";
+    url = "http://www.nasm.us/pub/nasm/releasebuilds/${version}/${name}.tar.bz2";
+    sha256 = "1sgspnascc0asmwlv3jm1mq4vzx653sa7vlg48z20pfybk7pnhaa";
   };
 
   meta = {
diff --git a/pkgs/development/compilers/sbcl/bootstrap.nix b/pkgs/development/compilers/sbcl/bootstrap.nix
new file mode 100644
index 000000000000..c3335ea6d22b
--- /dev/null
+++ b/pkgs/development/compilers/sbcl/bootstrap.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name    = "sbcl-bootstrap-${version}";
+  version = "1.1.8";
+
+  src = if stdenv.isDarwin
+    then fetchurl {
+      url = mirror://sourceforge/project/sbcl/sbcl/1.1.8/sbcl-1.1.8-x86-64-darwin-binary.tar.bz2;
+      sha256 = "006pr88053wclvbjfjdypnbiw8wymbzdzi7a6kbkpdfn4zf5943j";
+    }
+    else fetchurl {
+      url = mirror://sourceforge/project/sbcl/sbcl/1.1.8/sbcl-1.1.8-x86-64-linux-binary.tar.bz2;
+      sha256 = "0lh1jglxlfwk4cm6sgwk1jnb6ikhbrkx7p5aha2nbmkd6zl96prx";
+    };
+
+  installPhase = ''
+    ensureDir $out/bin
+    cp -p src/runtime/sbcl $out/bin
+    ensureDir $out/share/sbcl
+    cp -p output/sbcl.core $out/share/sbcl
+  '';
+
+  meta = {
+    description = "Lisp compiler";
+    homepage = "http://www.sbcl.org";
+    license = "bsd";
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix
index e1de4c53de50..579d5ec11eb9 100644
--- a/pkgs/development/compilers/sbcl/default.nix
+++ b/pkgs/development/compilers/sbcl/default.nix
@@ -1,36 +1,18 @@
-a :  
-let 
-  fetchurl = a.fetchurl;
-  s= # Generated upstream information
-  rec {
-    baseName="sbcl";
-    version="1.2.0";
-    name="${baseName}-${version}";
-    hash="13k20sys1v4lvgis8cnbczww6zs93rw176vz07g4jx06418k53x2";
-    url="mirror://sourceforge/project/sbcl/sbcl/1.2.0/sbcl-1.2.0-source.tar.bz2";
-    sha256="13k20sys1v4lvgis8cnbczww6zs93rw176vz07g4jx06418k53x2";
-  };
-  buildInputs = with a; [
-    clisp makeWrapper
-  ];
-in
-rec {
-  src = a.fetchUrlFromSrcInfo s;
+{ stdenv, fetchurl, sbclBootstrap, clisp}:
 
-  inherit buildInputs;
-  configureFlags = [];
+stdenv.mkDerivation rec {
+  name    = "sbcl-${version}";
+  version = "1.2.0";
 
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["setVars" "doFixNewer" "doFixTests" "setVersion" "doPatch" "doBuild" "doInstall" "doWrap"];
+  src = fetchurl {
+    url    = mirror://sourceforge/project/sbcl/sbcl/1.2.0/sbcl-1.2.0-source.tar.bz2;
+    sha256 = "13k20sys1v4lvgis8cnbczww6zs93rw176vz07g4jx06418k53x2";
+  };
 
-  setVars = a.fullDepEntry (''
-    export INSTALL_ROOT=$out
-    mkdir test-home
-    export HOME=$PWD/test-home
-  '') ["minInit"];
+  buildInputs = [ sbclBootstrap ] ++ stdenv.lib.optional stdenv.isLinux clisp;
 
-  setVersion = a.fullDepEntry (''
-    echo '"${s.version}.nixos"' > version.lisp-expr
+  patchPhase = ''
+    echo '"${version}.nixos"' > version.lisp-expr
     echo "
     (lambda (features)
       (flet ((enable (x)
@@ -38,14 +20,11 @@ rec {
              (disable (x)
                (setf features (remove x features))))
         (enable :sb-thread))) " > customize-target-features.lisp
-  '') ["minInit" "doUnpack"];
 
-  /* SBCL checks whether files are up-to-date in many places.. Unfortunately, same timestamp 
-     is not good enought
-  */
-  doFixNewer = a.fullDepEntry(''
     pwd
 
+    # SBCL checks whether files are up-to-date in many places..
+    # Unfortunately, same timestamp is not good enough
     sed -e 's@> x y@>= x y@' -i contrib/sb-aclrepl/repl.lisp
     sed -e '/(date)/i((= date 2208988801) 2208988800)' -i contrib/asdf/asdf.lisp
     sed -i src/cold/slam.lisp -e \
@@ -56,13 +35,8 @@ rec {
       '/date defaulted-fasl/a)'
     sed -i src/code/target-load.lisp -e \
       '/date defaulted-source/i(or (and (= 2208988801 (file-write-date defaulted-source-truename)) (= 2208988801 (file-write-date defaulted-fasl-truename)))'
-  '') ["minInit" "doUnpack"];
 
-  doWrap = a.fullDepEntry (''
-    wrapProgram "$out/bin/sbcl" --set "SBCL_HOME" "$out/lib/sbcl"
-  '') ["minInit" "addInputs"];
-
-  doFixTests = a.fullDepEntry (''
+    # Fix the tests
     sed -e '/deftest pwent/inil' -i contrib/sb-posix/posix-tests.lisp
     sed -e '/deftest grent/inil' -i contrib/sb-posix/posix-tests.lisp
     sed -e '/deftest .*ent.non-existing/,+5d' -i contrib/sb-posix/posix-tests.lisp
@@ -70,24 +44,31 @@ rec {
 
     sed -e '5,$d' -i contrib/sb-bsd-sockets/tests.lisp
     sed -e '5,$d' -i contrib/sb-simple-streams/*test*.lisp
-  '') ["minInit" "doUnpack"];
+  '';
+
+  preBuild = ''
+    export INSTALL_ROOT=$out
+    ensureDir test-home
+    export HOME=$PWD/test-home
+  '';
 
-  doBuild = a.fullDepEntry (''
-    sh make.sh clisp
-  '') ["minInit" "doUnpack" "addInputs"];
+  buildPhase = if stdenv.isLinux
+    then ''
+      sh make.sh clisp --prefix=$out
+    ''
+    else ''
+      sh make.sh --prefix=$out --xc-host='${sbclBootstrap}/bin/sbcl --core ${sbclBootstrap}/share/sbcl/sbcl.core --disable-debugger --no-userinit --no-sysinit'
+    '';
 
-  doInstall = a.fullDepEntry (''
-    sh install.sh
-  '') ["doBuild" "minInit" "addInputs"];
+  installPhase = ''
+    INSTALL_ROOT=$out sh install.sh
+  '';
 
-  inherit(s) name;
-  inherit(s) version;
   meta = {
     description = "Lisp compiler";
-    homepage = "http://www.sbcl.org";
-    license = "bsd";
-    maintainers = [a.lib.maintainers.raskin];
-    platforms = with a.lib.platforms; all;
-    inherit(s) version;
+    homepage = http://www.sbcl.org;
+    license = stdenv.lib.licenses.bsd3;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.all;
   };
 }
diff --git a/pkgs/development/compilers/scala/2.9.nix b/pkgs/development/compilers/scala/2.9.nix
index a7c9dbc90736..41f377dbfa3f 100644
--- a/pkgs/development/compilers/scala/2.9.nix
+++ b/pkgs/development/compilers/scala/2.9.nix
@@ -3,11 +3,11 @@
 # at runtime, need jre or jdk
 
 stdenv.mkDerivation rec {
-  name = "scala-2.9.2";
+  name = "scala-2.9.3";
 
   src = fetchurl {
-    url = "http://www.scala-lang.org/downloads/distrib/files/${name}.tgz";
-    sha256 = "0s1shpzw2hyz7bwxdqq19rcrzbpq4d7b0kvdvjvhy7h05x496b46";
+    url = "http://www.scala-lang.org/files/archive/${name}.tgz";
+    sha256 = "faaab229f78c945063e8fd31c045bc797c731194296d7a4f49863fd87fc4e7b9";
   };
 
   installPhase = ''
diff --git a/pkgs/development/compilers/smlnj/bootstrap.nix b/pkgs/development/compilers/smlnj/bootstrap.nix
new file mode 100644
index 000000000000..27fdf75cc25d
--- /dev/null
+++ b/pkgs/development/compilers/smlnj/bootstrap.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, cpio, rsync, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "smlnj-bootstrap-${version}";
+
+  version = "110.76";
+
+  src = fetchurl {
+    url = "http://smlnj.cs.uchicago.edu/dist/working/${version}/smlnj-x86-${version}.pkg";
+    sha256 = "0n3kdlqffqw97piya7i4lddrhjml2dp1q9hfq2jrd2hbzln8vdjf";
+  };
+
+  buildInputs = [ cpio rsync makeWrapper ];
+
+  unpackPhase = ''
+    /usr/bin/xar -xf $src
+    cd smlnj.pkg
+  '';
+
+  buildPhase = ''
+    cat Payload | gunzip -dc | cpio -i
+  '';
+
+  installPhase = ''
+    ensureDir $out/bin
+    rsync -av bin/ $out/bin/
+
+    ensureDir $out/lib
+    rsync -av lib/ $out/lib/
+  '';
+
+  postInstall = ''
+    wrapProgram "$out/bin/sml" --set "SMLNJ_HOME" "$out"
+  '';
+
+  meta = {
+    description = "Compiler for the Standard ML '97 programming language";
+    homepage    = http://www.smlnj.org;
+    license     = stdenv.lib.licenses.free;
+    platforms   = stdenv.lib.platforms.darwin;
+    maintainers = [ stdenv.lib.maintainers.jwiegley ];
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/interpreters/lua-5/expat.nix b/pkgs/development/interpreters/lua-5/expat.nix
new file mode 100644
index 000000000000..a2b42cb37c53
--- /dev/null
+++ b/pkgs/development/interpreters/lua-5/expat.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, lua5, expat }:
+
+stdenv.mkDerivation rec {
+  version = "1.3.0";
+  name = "lua-expat-${version}";
+  isLibrary = true;
+  src = fetchurl {
+    url = "https://matthewwild.co.uk/projects/luaexpat/luaexpat-${version}.tar.gz";
+    sha256 = "1hvxqngn0wf5642i5p3vcyhg3pmp102k63s9ry4jqyyqc1wkjq6h";
+  };
+
+  buildInputs = [ lua5 expat ];
+
+  preBuild = ''
+    makeFlagsArray=(
+      LUA_LDIR="$out/share/lua/${lua5.luaversion}"
+      LUA_INC="-I${lua5}/include" LUA_CDIR="$out/lib/lua/${lua5.luaversion}"
+      EXPAT_INC="-I${expat}/include");
+  '';
+
+  meta = {
+    homepage = "http://matthewwild.co.uk/projects/luaexpat";
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.flosse ];
+  };
+}
diff --git a/pkgs/development/interpreters/perl/5.20/cpp-precomp.patch b/pkgs/development/interpreters/perl/5.20/cpp-precomp.patch
new file mode 100644
index 000000000000..231853fe51a6
--- /dev/null
+++ b/pkgs/development/interpreters/perl/5.20/cpp-precomp.patch
@@ -0,0 +1,11 @@
+--- a/hints/darwin.sh	2013-05-08 11:13:45.000000000 -0600
++++ b/hints/darwin.sh	2013-05-08 11:15:04.000000000 -0600
+@@ -129,7 +129,7 @@
+ 
+ # Avoid Apple's cpp precompiler, better for extensions
+ if [ "X`echo | ${cc} -no-cpp-precomp -E - 2>&1 >/dev/null`" = "X" ]; then
+-    cppflags="${cppflags} -no-cpp-precomp"
++    #cppflags="${cppflags} -no-cpp-precomp"
+ 
+     # This is necessary because perl's build system doesn't
+     # apply cppflags to cc compile lines as it should.
diff --git a/pkgs/development/interpreters/perl/5.20/default.nix b/pkgs/development/interpreters/perl/5.20/default.nix
new file mode 100644
index 000000000000..d9fb32aa43ea
--- /dev/null
+++ b/pkgs/development/interpreters/perl/5.20/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchurl }:
+
+let
+
+  libc = if stdenv.gcc.libc or null != null then stdenv.gcc.libc else "/usr";
+
+in
+
+with {
+  inherit (stdenv.lib) optional optionalString;
+};
+
+stdenv.mkDerivation rec {
+  name = "perl-5.20.0";
+
+  src = fetchurl {
+    url = "mirror://cpan/src/${name}.tar.gz";
+    sha256 = "00ndpgw4bjing9gy2y6jvs3q46mv2ll6zrxjkhpr12fcdsnji32f";
+  };
+
+  patches =
+    [ # Do not look in /usr etc. for dependencies.
+      ./no-sys-dirs.patch
+    ]
+    ++ optional stdenv.isSunOS ./ld-shared.patch
+    ++ stdenv.lib.optional stdenv.isDarwin [ ./cpp-precomp.patch ./no-libutil.patch ] ;
+
+  # Build a thread-safe Perl with a dynamic libperls.o.  We need the
+  # "installstyle" option to ensure that modules are put under
+  # $out/lib/perl5 - this is the general default, but because $out
+  # contains the string "perl", Configure would select $out/lib.
+  # Miniperl needs -lm. perl needs -lrt.
+  configureFlags =
+    [ "-de"
+      "-Dcc=gcc"
+      "-Uinstallusrbinperl"
+      "-Dinstallstyle=lib/perl5"
+      "-Duseshrplib"
+      "-Dlocincpth=${libc}/include"
+      "-Dloclibpth=${libc}/lib"
+    ]
+    ++ optional (stdenv ? glibc) "-Dusethreads";
+
+  configureScript = "${stdenv.shell} ./Configure";
+
+  dontAddPrefix = true;
+
+  enableParallelBuilding = true;
+
+  preConfigure =
+    ''
+      configureFlags="$configureFlags -Dprefix=$out -Dman1dir=$out/share/man/man1 -Dman3dir=$out/share/man/man3"
+
+      ${optionalString stdenv.isArm ''
+        configureFlagsArray=(-Dldflags="-lm -lrt")
+      ''}
+    '';
+
+  preBuild = optionalString (!(stdenv ? gcc && stdenv.gcc.nativeTools))
+    ''
+      # Make Cwd work on NixOS (where we don't have a /bin/pwd).
+      substituteInPlace dist/PathTools/Cwd.pm --replace "'/bin/pwd'" "'$(type -tP pwd)'"
+    '';
+
+  setupHook = ./setup-hook.sh;
+
+  passthru.libPrefix = "lib/perl5/site_perl";
+}
diff --git a/pkgs/development/interpreters/perl/5.20/ld-shared.patch b/pkgs/development/interpreters/perl/5.20/ld-shared.patch
new file mode 100644
index 000000000000..be45230c8a73
--- /dev/null
+++ b/pkgs/development/interpreters/perl/5.20/ld-shared.patch
@@ -0,0 +1,11 @@
+--- perl-5.16.2/hints/solaris_2.sh.orig	2013-02-14 19:29:49.453988140 +0000
++++ perl-5.16.2/hints/solaris_2.sh	2013-02-14 19:30:31.681631019 +0000
+@@ -568,7 +568,7 @@
+ #		    ccflags="$ccflags -Wa,`getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null`"
+ #		fi
+ 		ldflags="$ldflags -m64"
+-		lddlflags="$lddlflags -G -m64"
++		lddlflags="$lddlflags -shared -m64"
+ 		;;
+ 	    *)
+ 		getconfccflags="`getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null`"
diff --git a/pkgs/development/interpreters/perl/5.20/no-libutil.patch b/pkgs/development/interpreters/perl/5.20/no-libutil.patch
new file mode 100644
index 000000000000..68d44612bfe6
--- /dev/null
+++ b/pkgs/development/interpreters/perl/5.20/no-libutil.patch
@@ -0,0 +1,12 @@
+diff -ru -x '*~' perl-5.14.2-orig/Configure perl-5.14.2/Configure
+--- perl-5.14.2-orig/Configure	2011-09-26 11:44:34.000000000 +0200
++++ perl-5.14.2/Configure	2012-02-16 17:24:50.779839039 +0100
+@@ -1368,7 +1368,7 @@
+ : List of libraries we want.
+ : If anyone needs extra -lxxx, put those in a hint file.
+ libswanted="socket bind inet nsl nm ndbm gdbm dbm db malloc dl ld sun"
+-libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
++libswanted="$libswanted m crypt sec c cposix posix ucb bsd BSD"
+ : We probably want to search /usr/shlib before most other libraries.
+ : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
+ glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
diff --git a/pkgs/development/interpreters/perl/5.20/no-sys-dirs.patch b/pkgs/development/interpreters/perl/5.20/no-sys-dirs.patch
new file mode 100644
index 000000000000..1793273a76f9
--- /dev/null
+++ b/pkgs/development/interpreters/perl/5.20/no-sys-dirs.patch
@@ -0,0 +1,250 @@
+diff -ru -x '*~' -x '*.rej' perl-5.20.0-orig/Configure perl-5.20.0/Configure
+--- perl-5.20.0-orig/Configure	2014-05-26 15:34:18.000000000 +0200
++++ perl-5.20.0/Configure	2014-06-25 10:43:35.368285986 +0200
+@@ -106,15 +106,7 @@
+ fi
+ 
+ : Proper PATH setting
+-paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
+-paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
+-paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
+-paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
+-paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
+-paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
+-paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
+-paths="$paths /sbin /usr/sbin /usr/libexec"
+-paths="$paths /system/gnu_library/bin"
++paths=''
+ 
+ for p in $paths
+ do
+@@ -1337,8 +1329,7 @@
+ archname=''
+ : Possible local include directories to search.
+ : Set locincpth to "" in a hint file to defeat local include searches.
+-locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
+-locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
++locincpth=""
+ :
+ : no include file wanted by default
+ inclwanted=''
+@@ -1349,17 +1340,12 @@
+ 
+ libnames=''
+ : change the next line if compiling for Xenix/286 on Xenix/386
+-xlibpth='/usr/lib/386 /lib/386'
++xlibpth=''
+ : Possible local library directories to search.
+-loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
+-loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
++loclibpth=""
+ 
+ : general looking path for locating libraries
+-glibpth="/lib /usr/lib $xlibpth"
+-glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
+-test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
+-test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
+-test -d /usr/lib64         && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
++glibpth=""
+ 
+ : Private path used by Configure to find libraries.  Its value
+ : is prepended to libpth. This variable takes care of special
+@@ -1391,8 +1377,6 @@
+ libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
+ : We probably want to search /usr/shlib before most other libraries.
+ : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
+-glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
+-glibpth="/usr/shlib $glibpth"
+ : Do not use vfork unless overridden by a hint file.
+ usevfork=false
+ 
+@@ -2446,7 +2430,6 @@
+ zip
+ "
+ pth=`echo $PATH | sed -e "s/$p_/ /g"`
+-pth="$pth $sysroot/lib $sysroot/usr/lib"
+ for file in $loclist; do
+ 	eval xxx=\$$file
+ 	case "$xxx" in
+@@ -4936,7 +4919,7 @@
+ : Set private lib path
+ case "$plibpth" in
+ '') if ./mips; then
+-	plibpth="$incpath/usr/lib $sysroot/usr/local/lib $sysroot/usr/ccs/lib"
++	plibpth="$incpath/usr/lib"
+     fi;;
+ esac
+ case "$libpth" in
+@@ -8600,13 +8583,8 @@
+ echo " "
+ case "$sysman" in
+ '')
+-	syspath='/usr/share/man/man1 /usr/man/man1'
+-	syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
+-	syspath="$syspath /usr/man/u_man/man1"
+-	syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
+-	syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
+-	syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
+-	sysman=`./loc . /usr/man/man1 $syspath`
++	syspath=''
++	sysman=''
+ 	;;
+ esac
+ if $test -d "$sysman"; then
+@@ -19900,9 +19878,10 @@
+ case "$full_ar" in
+ '') full_ar=$ar ;;
+ esac
++full_ar=ar
+ 
+ : Store the full pathname to the sed program for use in the C program
+-full_sed=$sed
++full_sed=sed
+ 
+ : see what type gids are declared as in the kernel
+ echo " "
+Only in perl-5.20.0/: Configure.orig
+diff -ru -x '*~' -x '*.rej' perl-5.20.0-orig/ext/Errno/Errno_pm.PL perl-5.20.0/ext/Errno/Errno_pm.PL
+--- perl-5.20.0-orig/ext/Errno/Errno_pm.PL	2014-05-26 15:34:20.000000000 +0200
++++ perl-5.20.0/ext/Errno/Errno_pm.PL	2014-06-25 10:31:24.317970047 +0200
+@@ -126,11 +126,7 @@
+ 	if ($dep =~ /(\S+errno\.h)/) {
+ 	     $file{$1} = 1;
+ 	}
+-    } elsif ($^O eq 'linux' &&
+-	      $Config{gccversion} ne '' && 
+-	      $Config{gccversion} !~ /intel/i
+-	      # might be using, say, Intel's icc
+-	     ) {
++    } elsif (0) {
+     # When cross-compiling we may store a path for gcc's "sysroot" option:
+     my $sysroot = $Config{sysroot} || '';
+ 	# Some Linuxes have weird errno.hs which generate
+Only in perl-5.20.0/ext/Errno: Errno_pm.PL.orig
+diff -ru -x '*~' -x '*.rej' perl-5.20.0-orig/hints/freebsd.sh perl-5.20.0/hints/freebsd.sh
+--- perl-5.20.0-orig/hints/freebsd.sh	2014-01-31 22:55:51.000000000 +0100
++++ perl-5.20.0/hints/freebsd.sh	2014-06-25 10:25:53.263964680 +0200
+@@ -119,21 +119,21 @@
+         objformat=`/usr/bin/objformat`
+         if [ x$objformat = xaout ]; then
+             if [ -e /usr/lib/aout ]; then
+-                libpth="/usr/lib/aout /usr/local/lib /usr/lib"
+-                glibpth="/usr/lib/aout /usr/local/lib /usr/lib"
++                libpth=""
++                glibpth=""
+             fi
+             lddlflags='-Bshareable'
+         else
+-            libpth="/usr/lib /usr/local/lib"
+-            glibpth="/usr/lib /usr/local/lib"
++            libpth=""
++            glibpth=""
+             ldflags="-Wl,-E "
+             lddlflags="-shared "
+         fi
+         cccdlflags='-DPIC -fPIC'
+         ;;
+ *)
+-       libpth="/usr/lib /usr/local/lib"
+-       glibpth="/usr/lib /usr/local/lib"
++       libpth=""
++       glibpth=""
+        ldflags="-Wl,-E "
+         lddlflags="-shared "
+         cccdlflags='-DPIC -fPIC'
+diff -ru -x '*~' -x '*.rej' perl-5.20.0-orig/hints/linux.sh perl-5.20.0/hints/linux.sh
+--- perl-5.20.0-orig/hints/linux.sh	2014-05-26 15:34:20.000000000 +0200
++++ perl-5.20.0/hints/linux.sh	2014-06-25 10:33:47.354883843 +0200
+@@ -150,25 +150,6 @@
+     ;;
+ esac
+ 
+-# Ubuntu 11.04 (and later, presumably) doesn't keep most libraries
+-# (such as -lm) in /lib or /usr/lib.  So we have to ask gcc to tell us
+-# where to look.  We don't want gcc's own libraries, however, so we
+-# filter those out.
+-# This could be conditional on Unbuntu, but other distributions may
+-# follow suit, and this scheme seems to work even on rather old gcc's.
+-# This unconditionally uses gcc because even if the user is using another
+-# compiler, we still need to find the math library and friends, and I don't
+-# know how other compilers will cope with that situation.
+-# Morever, if the user has their own gcc earlier in $PATH than the system gcc,
+-# we don't want its libraries. So we try to prefer the system gcc
+-# Still, as an escape hatch, allow Configure command line overrides to
+-# plibpth to bypass this check.
+-if [ -x /usr/bin/gcc ] ; then
+-    gcc=/usr/bin/gcc
+-else
+-    gcc=gcc
+-fi
+-
+ case "$plibpth" in
+ '') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries |
+ 	cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'`
+@@ -178,32 +159,6 @@
+     ;;
+ esac
+ 
+-case "$libc" in
+-'')
+-# If you have glibc, then report the version for ./myconfig bug reporting.
+-# (Configure doesn't need to know the specific version since it just uses
+-# gcc to load the library for all tests.)
+-# We don't use __GLIBC__ and  __GLIBC_MINOR__ because they
+-# are insufficiently precise to distinguish things like
+-# libc-2.0.6 and libc-2.0.7.
+-    for p in $plibpth
+-    do
+-        for trylib in libc.so.6 libc.so
+-        do
+-            if $test -e $p/$trylib; then
+-                libc=`ls -l $p/$trylib | awk '{print $NF}'`
+-                if $test "X$libc" != X; then
+-                    break
+-                fi
+-            fi
+-        done
+-        if $test "X$libc" != X; then
+-            break
+-        fi
+-    done
+-    ;;
+-esac
+-
+ # Are we using ELF?  Thanks to Kenneth Albanowski <kjahds@kjahds.com>
+ # for this test.
+ cat >try.c <<'EOM'
+@@ -367,33 +322,6 @@
+ 	;;
+ esac
+ 
+-# SuSE8.2 has /usr/lib/libndbm* which are ld scripts rather than
+-# true libraries. The scripts cause binding against static
+-# version of -lgdbm which is a bad idea. So if we have 'nm'
+-# make sure it can read the file
+-# NI-S 2003/08/07
+-case "$nm" in
+-    '') ;;
+-    *)
+-    for p in $plibpth
+-    do
+-        if $test -r $p/libndbm.so; then
+-            if $nm $p/libndbm.so >/dev/null 2>&1 ; then
+-                echo 'Your shared -lndbm seems to be a real library.'
+-                _libndbm_real=1
+-                break
+-            fi
+-        fi
+-    done
+-    if $test "X$_libndbm_real" = X; then
+-        echo 'Your shared -lndbm is not a real library.'
+-        set `echo X "$libswanted "| sed -e 's/ ndbm / /'`
+-        shift
+-        libswanted="$*"
+-    fi
+-    ;;
+-esac
+-
+ # Linux on Synology.
+ if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then
+     # Tested on Synology DS213 and DS413
diff --git a/pkgs/development/interpreters/perl/5.20/setup-hook.sh b/pkgs/development/interpreters/perl/5.20/setup-hook.sh
new file mode 100644
index 000000000000..6a144a7f7804
--- /dev/null
+++ b/pkgs/development/interpreters/perl/5.20/setup-hook.sh
@@ -0,0 +1,5 @@
+addPerlLibPath () {
+    addToSearchPath PERL5LIB $1/lib/perl5/site_perl
+}
+
+envHooks=(${envHooks[@]} addPerlLibPath)
diff --git a/pkgs/development/interpreters/php/5.4.nix b/pkgs/development/interpreters/php/5.4.nix
index b692e4d8a991..c194c3aa8a07 100644
--- a/pkgs/development/interpreters/php/5.4.nix
+++ b/pkgs/development/interpreters/php/5.4.nix
@@ -9,7 +9,7 @@ in
 
 composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed) version; in {
 
-  version = "5.4.29";
+  version = "5.4.30";
 
   name = "php-${version}";
 
@@ -243,7 +243,7 @@ composableDerivation.composableDerivation {} ( fixed : let inherit (fixed.fixed)
 
   src = fetchurl {
     url = "http://www.php.net/distributions/php-${version}.tar.bz2";
-    sha256 = "19z2n6h1fvj30n6hl2mwhw2f4i1vwhbj3j7abq3gc16gcfh3rkk2";
+    sha256 = "1rkc977b4k0y6qg5nf8729g5zpica31h1isyds6khmrdwi23df1j";
   };
 
   meta = {
diff --git a/pkgs/development/libraries/gloox/default.nix b/pkgs/development/libraries/gloox/default.nix
new file mode 100644
index 000000000000..4e271a8c6783
--- /dev/null
+++ b/pkgs/development/libraries/gloox/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl
+, zlibSupport ? true, zlib ? null
+, sslSupport ? true, openssl ? null
+, idnSupport ? true, libidn ? null
+}:
+
+assert zlibSupport -> zlib != null;
+assert sslSupport -> openssl != null;
+assert idnSupport -> libidn != null;
+
+let
+  version = "1.0.10";
+in
+stdenv.mkDerivation rec {
+  name = "gloox-${version}";
+
+  src = fetchurl {
+    url = "http://camaya.net/download/gloox-${version}.tar.bz2";
+    sha256 = "300e756af97d43f3f70f1e68e4d4c7129d587dface61633f50d2c490876f58a3";
+  };
+
+  buildInputs = [ ]
+    ++ stdenv.lib.optional zlibSupport zlib
+    ++ stdenv.lib.optional sslSupport openssl
+    ++ stdenv.lib.optional idnSupport libidn;
+
+  meta = {
+    description = "A portable high-level Jabber/XMPP library for C++";
+    homepage = "http://camaya.net/gloox";
+    license = [ "GPLv3" ];
+  };
+}
diff --git a/pkgs/development/libraries/gnu-efi/default.nix b/pkgs/development/libraries/gnu-efi/default.nix
index 07c3c668793c..a78d98907291 100644
--- a/pkgs/development/libraries/gnu-efi/default.nix
+++ b/pkgs/development/libraries/gnu-efi/default.nix
@@ -1,23 +1,15 @@
-{ stdenv
-, fetchurl
-}:
+{ stdenv, fetchurl }:
 
-let version = "3.0u"; in stdenv.mkDerivation {
-
-  name = "gnu-efi-${version}";
+stdenv.mkDerivation rec {
+  name = "gnu-efi_${version}";
+  version = "3.0u";
 
   src = fetchurl {
-    url = "mirror://sourceforge/gnu-efi/gnu-efi_${version}.orig.tar.gz";
+    url = "mirror://sourceforge/gnu-efi/${name}.orig.tar.gz";
     sha256 = "0klkdxh1aqwwfm393q67nxww6liffyp2lfybbnh4q819b06la39w";
   };
 
-  meta = {
-    description = "GNU EFI development toolchain";
-    homepage = http://sourceforge.net/projects/gnu-efi/;
-    license = "GPL";
-    maintainers = [ stdenv.lib.maintainers.shlevy ];
-    platforms = ["x86_64-linux" "i686-linux"];
-  };
+  arch = with stdenv.lib; head (splitString "-" stdenv.system);
 
   makeFlags = [
     "CC=gcc"
@@ -34,8 +26,17 @@ let version = "3.0u"; in stdenv.mkDerivation {
   '';
 
   installPhase = ''
+    mkdir -pv $out/include/efi/{protocol,$arch}
     make PREFIX="$out" $makeFlags install
     mkdir -pv $out/share/gnu-efi
     install -D -m644 apps/*.efi $out/share/gnu-efi
   '';
+
+  meta = with stdenv.lib; {
+    description = "GNU EFI development toolchain";
+    homepage = http://sourceforge.net/projects/gnu-efi/;
+    license = licenses.bsd3;
+    maintainers = [ stdenv.lib.maintainers.shlevy ];
+    platforms = platforms.linux;
+  };
 }
diff --git a/pkgs/development/libraries/gperftools/default.nix b/pkgs/development/libraries/gperftools/default.nix
index c7c639f2adb8..9ffccac1e0f4 100644
--- a/pkgs/development/libraries/gperftools/default.nix
+++ b/pkgs/development/libraries/gperftools/default.nix
@@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
     sha256 = "0ks9gsnhxrs2vccc6ha9m8xmj83lmw09xcws4zc0k57q4jcy5bgk";
   };
 
-  buildInputs = [ libunwind ];
+  buildInputs = stdenv.lib.optional stdenv.isLinux libunwind;
 
   # some packages want to link to the static tcmalloc_minimal
   # to drop the runtime dependency on gperftools
@@ -19,6 +19,6 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = https://code.google.com/p/gperftools/;
     description = "Fast, multi-threaded malloc() and nifty performance analysis tools";
-    platforms = stdenv.lib.platforms.linux;
+    platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
   };
 }
diff --git a/pkgs/development/libraries/haskell/SHA2/default.nix b/pkgs/development/libraries/haskell/SHA2/default.nix
new file mode 100644
index 000000000000..435d51ae0fed
--- /dev/null
+++ b/pkgs/development/libraries/haskell/SHA2/default.nix
@@ -0,0 +1,14 @@
+{ cabal, aes, monadsTf, transformers }:
+
+cabal.mkDerivation (self: {
+  pname = "SHA2";
+  version = "0.2.5";
+  sha256 = "1zs79a327x6myfam3p2vr8lmszcaqnkll2qz8n4sy835vz328j40";
+  buildDepends = [ aes monadsTf transformers ];
+  meta = {
+    description = "Fast, incremental SHA hashing for bytestrings";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
+
diff --git a/pkgs/development/libraries/haskell/Yampa/default.nix b/pkgs/development/libraries/haskell/Yampa/default.nix
new file mode 100644
index 000000000000..7d941101eb36
--- /dev/null
+++ b/pkgs/development/libraries/haskell/Yampa/default.nix
@@ -0,0 +1,14 @@
+{ cabal, random }:
+
+cabal.mkDerivation (self: {
+  pname = "Yampa";
+  version = "0.9.5";
+  sha256 = "0r6fm2ccls7gbc5s0vbrzrqv6marnzlzc7zr4afkgfk9jsqfmqjh";
+  buildDepends = [ random ];
+  meta = {
+    homepage = "http://www.haskell.org/haskellwiki/Yampa";
+    description = "Library for programming hybrid systems";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/bson/default.nix b/pkgs/development/libraries/haskell/bson/default.nix
index da4629e93fba..028b2e7d969f 100644
--- a/pkgs/development/libraries/haskell/bson/default.nix
+++ b/pkgs/development/libraries/haskell/bson/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "bson";
-  version = "0.2.4";
-  sha256 = "1fr0xx9q2l3cb72j5lgrwdlr2gba7idh2v80s8d6dr69dhwaccd9";
+  version = "0.3";
+  sha256 = "0787z6970lf93mgrsyqcilnkx5bynny88ag15z2f07l1rhva6ac4";
   buildDepends = [
     binary cryptohash dataBinaryIeee754 mtl network text time
   ];
diff --git a/pkgs/development/libraries/haskell/command-qq/default.nix b/pkgs/development/libraries/haskell/command-qq/default.nix
new file mode 100644
index 000000000000..c48701efe0ef
--- /dev/null
+++ b/pkgs/development/libraries/haskell/command-qq/default.nix
@@ -0,0 +1,16 @@
+{ cabal, doctest, hspec, text }:
+
+cabal.mkDerivation (self: {
+  pname = "command-qq";
+  version = "0.3.0.0";
+  sha256 = "1bqfb4gc5ja9d9jygijqpf6014bmfcxnsvpv7c5n4f1z2aj07jy5";
+  buildDepends = [ text ];
+  testDepends = [ doctest hspec text ];
+  doCheck = false;
+  meta = {
+    homepage = "http://biegunka.github.io/command-qq/";
+    description = "Quasiquoters for external commands";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/deepseq-generics/default.nix b/pkgs/development/libraries/haskell/deepseq-generics/default.nix
new file mode 100644
index 000000000000..6b3edd59ab27
--- /dev/null
+++ b/pkgs/development/libraries/haskell/deepseq-generics/default.nix
@@ -0,0 +1,15 @@
+{ cabal, deepseq, HUnit, testFramework, testFrameworkHunit }:
+
+cabal.mkDerivation (self: {
+  pname = "deepseq-generics";
+  version = "0.1.1.1";
+  sha256 = "1icc2gxsbnjjl150msnyysvr9r14kb6s2gm3izrj5a3mwf6l7s08";
+  buildDepends = [ deepseq ];
+  testDepends = [ deepseq HUnit testFramework testFrameworkHunit ];
+  meta = {
+    homepage = "https://github.com/hvr/deepseq-generics";
+    description = "GHC.Generics-based Control.DeepSeq.rnf implementation";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/extensible-effects/default.nix b/pkgs/development/libraries/haskell/extensible-effects/default.nix
index 8c188bf68203..a4c4f8ecc7c7 100644
--- a/pkgs/development/libraries/haskell/extensible-effects/default.nix
+++ b/pkgs/development/libraries/haskell/extensible-effects/default.nix
@@ -11,6 +11,7 @@ cabal.mkDerivation (self: {
     HUnit QuickCheck testFramework testFrameworkHunit
     testFrameworkQuickcheck2
   ];
+  jailbreak = true;
   meta = {
     homepage = "https://github.com/RobotGymnast/extensible-effects";
     description = "An Alternative to Monad Transformers";
@@ -18,5 +19,4 @@ cabal.mkDerivation (self: {
     platforms = self.ghc.meta.platforms;
     maintainers = [ self.stdenv.lib.maintainers.ocharles ];
   };
-  jailbreak = true;
 })
diff --git a/pkgs/development/libraries/haskell/folds/default.nix b/pkgs/development/libraries/haskell/folds/default.nix
new file mode 100644
index 000000000000..6317182f3050
--- /dev/null
+++ b/pkgs/development/libraries/haskell/folds/default.nix
@@ -0,0 +1,22 @@
+{ cabal, comonad, contravariant, deepseq, doctest, filepath, hlint
+, lens, mtl, pointed, profunctors, reflection, semigroupoids
+, semigroups, tagged, transformers, vector
+}:
+
+cabal.mkDerivation (self: {
+  pname = "folds";
+  version = "0.6.1";
+  sha256 = "13p4kyr48g917ib87n14qpqaka6isp73cwy7mvvsqgprj1fghyj1";
+  buildDepends = [
+    comonad contravariant lens pointed profunctors reflection
+    semigroupoids tagged transformers vector
+  ];
+  testDepends = [ deepseq doctest filepath hlint mtl semigroups ];
+  doCheck = false;
+  meta = {
+    homepage = "http://github.com/ekmett/folds";
+    description = "Beautiful Folding";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/ghc-mod/default.nix b/pkgs/development/libraries/haskell/ghc-mod/default.nix
index 31d1d7689b1e..5d29ec8474e6 100644
--- a/pkgs/development/libraries/haskell/ghc-mod/default.nix
+++ b/pkgs/development/libraries/haskell/ghc-mod/default.nix
@@ -21,6 +21,7 @@ cabal.mkDerivation (self: {
   configureFlags = "--datasubdir=${self.pname}-${self.version}";
   postInstall = ''
     cd $out/share/$pname-$version
+    sed -i -e 's/"-b" "\\n" "-l"/"-l" "-b" "\\"\\\\n\\""/' ghc-process.el
     make
     rm Makefile
     cd ..
diff --git a/pkgs/development/libraries/haskell/hcltest/default.nix b/pkgs/development/libraries/haskell/hcltest/default.nix
index 170c885d2405..fa2ab9a145ae 100644
--- a/pkgs/development/libraries/haskell/hcltest/default.nix
+++ b/pkgs/development/libraries/haskell/hcltest/default.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "hcltest";
-  version = "0.3.1";
-  sha256 = "0qnf6ib01njcbjfbwxff8y4sqmrj6nyy9y9hb0l0kw21cxsgl7c9";
+  version = "0.3.2";
+  sha256 = "0q5b0v2gh0b3a15hg25bqj7scbckrkka2ckk49g2mrdz2gpr28bq";
   buildDepends = [
     dlist either filepath free lens mmorph monadControl mtl
     optparseApplicative randomShuffle split stm tagged tasty temporary
diff --git a/pkgs/development/libraries/haskell/hdaemonize/default.nix b/pkgs/development/libraries/haskell/hdaemonize/default.nix
new file mode 100644
index 000000000000..203eb33844e0
--- /dev/null
+++ b/pkgs/development/libraries/haskell/hdaemonize/default.nix
@@ -0,0 +1,14 @@
+{ cabal, extensibleExceptions, filepath, hsyslog, mtl }:
+
+cabal.mkDerivation (self: {
+  pname = "hdaemonize";
+  version = "0.4.5.0";
+  sha256 = "1b9aic08pgmp95qy74qcrmq9dn33k6knycy7mn1dg8c5svmchb2w";
+  buildDepends = [ extensibleExceptions filepath hsyslog mtl ];
+  meta = {
+    homepage = "http://github.com/madhadron/hdaemonize";
+    description = "Library to handle the details of writing daemons for UNIX";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/ixset/default.nix b/pkgs/development/libraries/haskell/ixset/default.nix
new file mode 100644
index 000000000000..f45e95b5e86f
--- /dev/null
+++ b/pkgs/development/libraries/haskell/ixset/default.nix
@@ -0,0 +1,14 @@
+{ cabal, safecopy, syb, sybWithClass }:
+
+cabal.mkDerivation (self: {
+  pname = "ixset";
+  version = "1.0.5";
+  sha256 = "1hznn7f8f13x5125n76dchayi16z72050qbwifnkrca54nf9q2ns";
+  buildDepends = [ safecopy syb sybWithClass ];
+  meta = {
+    homepage = "http://happstack.com";
+    description = "Efficient relational queries on Haskell sets";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/monadloc-pp/default.nix b/pkgs/development/libraries/haskell/monadloc-pp/default.nix
new file mode 100644
index 000000000000..5ec05316ba0f
--- /dev/null
+++ b/pkgs/development/libraries/haskell/monadloc-pp/default.nix
@@ -0,0 +1,18 @@
+{ cabal, filepath, haskellSrcExts, monadloc, syb }:
+
+cabal.mkDerivation (self: {
+  pname = "monadloc-pp";
+  version = "0.3";
+  sha256 = "0jr9ngcj3l6kd5cscll5kr3a4bp52sdjgrdxd1j5a21jyc3gdyvn";
+  isLibrary = false;
+  isExecutable = true;
+  buildDepends = [ filepath haskellSrcExts monadloc syb ];
+  jailbreak = true;
+  meta = {
+    homepage = "http://github.com/pepeiborra/monadloc";
+    description = "A preprocessor for generating monadic call traces";
+    license = self.stdenv.lib.licenses.publicDomain;
+    platforms = self.ghc.meta.platforms;
+    maintainers = [ self.stdenv.lib.maintainers.tomberek ];
+  };
+})
diff --git a/pkgs/development/libraries/haskell/mongoDB/default.nix b/pkgs/development/libraries/haskell/mongoDB/default.nix
index 259a8e2fc2d5..c97676b64d8b 100644
--- a/pkgs/development/libraries/haskell/mongoDB/default.nix
+++ b/pkgs/development/libraries/haskell/mongoDB/default.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "mongoDB";
-  version = "1.5.0";
-  sha256 = "0dvy8pa79c26hcngds6nnwnayrhsyz1flj18m9bcyrcvwb5q3dd6";
+  version = "2.0";
+  sha256 = "1dspx1x20903i44i825ziwmvaax75m8g08kz97cv34077bdir80h";
   buildDepends = [
     binary bson cryptohash hashtables liftedBase monadControl mtl
     network parsec random randomShuffle text transformersBase
diff --git a/pkgs/development/libraries/haskell/pipes-aeson/default.nix b/pkgs/development/libraries/haskell/pipes-aeson/default.nix
index aa226aa4e3b3..2f4bd30994a2 100644
--- a/pkgs/development/libraries/haskell/pipes-aeson/default.nix
+++ b/pkgs/development/libraries/haskell/pipes-aeson/default.nix
@@ -10,6 +10,7 @@ cabal.mkDerivation (self: {
     aeson attoparsec pipes pipesAttoparsec pipesBytestring pipesParse
     transformers
   ];
+  jailbreak = true;
   meta = {
     homepage = "https://github.com/k0001/pipes-aeson";
     description = "Encode and decode JSON streams using Aeson and Pipes";
diff --git a/pkgs/development/libraries/haskell/pipes-binary/default.nix b/pkgs/development/libraries/haskell/pipes-binary/default.nix
index e48ad2a96a48..55a332a6c298 100644
--- a/pkgs/development/libraries/haskell/pipes-binary/default.nix
+++ b/pkgs/development/libraries/haskell/pipes-binary/default.nix
@@ -13,6 +13,7 @@ cabal.mkDerivation (self: {
     binary lensFamilyCore pipes pipesParse smallcheck tasty tastyHunit
     tastySmallcheck transformers
   ];
+  jailbreak = true;
   doCheck = false;
   meta = {
     homepage = "https://github.com/k0001/pipes-binary";
diff --git a/pkgs/development/libraries/haskell/pipes-bytestring/default.nix b/pkgs/development/libraries/haskell/pipes-bytestring/default.nix
index 348847e6e9ae..4fc5b1993a3a 100644
--- a/pkgs/development/libraries/haskell/pipes-bytestring/default.nix
+++ b/pkgs/development/libraries/haskell/pipes-bytestring/default.nix
@@ -1,5 +1,4 @@
-{ cabal, pipes, pipesGroup, pipesParse, transformers
-}:
+{ cabal, pipes, pipesGroup, pipesParse, transformers }:
 
 cabal.mkDerivation (self: {
   pname = "pipes-bytestring";
diff --git a/pkgs/development/libraries/haskell/pipes-text/default.nix b/pkgs/development/libraries/haskell/pipes-text/default.nix
index 7156b8897893..4b5a7973c525 100644
--- a/pkgs/development/libraries/haskell/pipes-text/default.nix
+++ b/pkgs/development/libraries/haskell/pipes-text/default.nix
@@ -10,6 +10,7 @@ cabal.mkDerivation (self: {
     pipes pipesBytestring pipesGroup pipesParse pipesSafe profunctors
     streamingCommons text transformers
   ];
+  jailbreak = true;
   meta = {
     homepage = "https://github.com/michaelt/text-pipes";
     description = "Text pipes";
diff --git a/pkgs/development/libraries/haskell/quickcheck-property-monad/default.nix b/pkgs/development/libraries/haskell/quickcheck-property-monad/default.nix
index 203f22146b17..0c9a22b5974f 100644
--- a/pkgs/development/libraries/haskell/quickcheck-property-monad/default.nix
+++ b/pkgs/development/libraries/haskell/quickcheck-property-monad/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "quickcheck-property-monad";
-  version = "0.2.1";
-  sha256 = "1ln8bcsc8hd8jyhd9rp2j90p5h5nhmwidb5my91p09h43y4z9xds";
+  version = "0.2.2";
+  sha256 = "1liixl4xxpx9f3877sss16m67y5bkwhxdmr8h40rpqdi7dz9s0mj";
   buildDepends = [ either QuickCheck transformers ];
   testDepends = [ doctest filepath QuickCheck ];
   meta = {
diff --git a/pkgs/development/libraries/haskell/shellmate/default.nix b/pkgs/development/libraries/haskell/shellmate/default.nix
new file mode 100644
index 000000000000..37383792de1f
--- /dev/null
+++ b/pkgs/development/libraries/haskell/shellmate/default.nix
@@ -0,0 +1,14 @@
+{ cabal, filepath, temporary, time, transformers }:
+
+cabal.mkDerivation (self: {
+  pname = "shellmate";
+  version = "0.1.6";
+  sha256 = "17fpl0h58cw5hp6jzrajkl629mw2c6x15cmlcbdxqk9xlxqrg4hr";
+  buildDepends = [ filepath temporary time transformers ];
+  meta = {
+    homepage = "http://github.com/valderman/shellmate";
+    description = "Simple interface for shell scripting in Haskell";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/simple-sendfile/default.nix b/pkgs/development/libraries/haskell/simple-sendfile/default.nix
index 52c5fd7fe684..604f3f065a9f 100644
--- a/pkgs/development/libraries/haskell/simple-sendfile/default.nix
+++ b/pkgs/development/libraries/haskell/simple-sendfile/default.nix
@@ -4,8 +4,8 @@
 
 cabal.mkDerivation (self: {
   pname = "simple-sendfile";
-  version = "0.2.14";
-  sha256 = "00k9cachx7y4811b71f8p468kx018hzvpvw6jgf7zmjhc9v922ni";
+  version = "0.2.15";
+  sha256 = "1fa20h2zcvxwdb5j5a0nnhl38bry1p5ckya1l7lrxx9r2bvjkyj9";
   buildDepends = [ network resourcet ];
   testDepends = [
     conduit conduitExtra hspec HUnit network networkConduit resourcet
diff --git a/pkgs/development/libraries/haskell/snap/server.nix b/pkgs/development/libraries/haskell/snap/server.nix
index a59252fb38cc..b72020b7f861 100644
--- a/pkgs/development/libraries/haskell/snap/server.nix
+++ b/pkgs/development/libraries/haskell/snap/server.nix
@@ -1,5 +1,5 @@
 { cabal, attoparsec, attoparsecEnumerator, blazeBuilder
-, blazeBuilderEnumerator, caseInsensitive, enumerator
+, blazeBuilderEnumerator, caseInsensitive, enumerator, HsOpenSSL
 , MonadCatchIOTransformers, mtl, network, snapCore, text, time
 , unixCompat
 }:
@@ -10,9 +10,10 @@ cabal.mkDerivation (self: {
   sha256 = "09399vlqgic0iwmx31c01bjpbdblw8gayxnz71lwzkixqibkbbip";
   buildDepends = [
     attoparsec attoparsecEnumerator blazeBuilder blazeBuilderEnumerator
-    caseInsensitive enumerator MonadCatchIOTransformers mtl network
-    snapCore text time unixCompat
+    caseInsensitive enumerator HsOpenSSL MonadCatchIOTransformers mtl
+    network snapCore text time unixCompat
   ];
+  configureFlags = "-fopenssl";
   meta = {
     homepage = "http://snapframework.com/";
     description = "A fast, iteratee-based, epoll-enabled web server for the Snap Framework";
diff --git a/pkgs/development/libraries/haskell/tables/default.nix b/pkgs/development/libraries/haskell/tables/default.nix
new file mode 100644
index 000000000000..f97512c7f7f7
--- /dev/null
+++ b/pkgs/development/libraries/haskell/tables/default.nix
@@ -0,0 +1,23 @@
+{ cabal, binary, cereal, comonad, deepseq, doctest, filepath
+, hashable, lens, profunctors, safecopy, transformers
+, transformersCompat, unorderedContainers
+}:
+
+cabal.mkDerivation (self: {
+  pname = "tables";
+  version = "0.4.1";
+  sha256 = "131c97lgni0b9pmkdfd5y0lwrb9yh9qyahknhrim8dzpkkfynk49";
+  buildDepends = [
+    binary cereal comonad deepseq hashable lens profunctors safecopy
+    transformers transformersCompat unorderedContainers
+  ];
+  testDepends = [
+    doctest filepath lens transformers unorderedContainers
+  ];
+  meta = {
+    homepage = "http://github.com/ekmett/tables/";
+    description = "In-memory storage with multiple keys using lenses and traversals";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/haskell/unix-compat/default.nix b/pkgs/development/libraries/haskell/unix-compat/default.nix
index 9742b193e7ba..a43da3b71948 100644
--- a/pkgs/development/libraries/haskell/unix-compat/default.nix
+++ b/pkgs/development/libraries/haskell/unix-compat/default.nix
@@ -2,8 +2,8 @@
 
 cabal.mkDerivation (self: {
   pname = "unix-compat";
-  version = "0.4.1.1";
-  sha256 = "1cjny6zca5wdj7d56kjkaxlad85kknn91pisrizjy6wngszyaigf";
+  version = "0.4.1.3";
+  sha256 = "1vfw3ffzdk9mshhgyp3dnbn8rihkz8qg6n5zqak8966dsdqhm4xb";
   meta = {
     homepage = "http://github.com/jystic/unix-compat";
     description = "Portable POSIX-compatibility layer";
diff --git a/pkgs/development/libraries/haskell/webdriver/default.nix b/pkgs/development/libraries/haskell/webdriver/default.nix
new file mode 100644
index 000000000000..4af61ece80a5
--- /dev/null
+++ b/pkgs/development/libraries/haskell/webdriver/default.nix
@@ -0,0 +1,27 @@
+{ cabal, aeson, attoparsec, base64Bytestring, cond, dataDefault
+, directoryTree, exceptions, filepath, HTTP, liftedBase
+, monadControl, mtl, network, parallel, scientific, temporary, text
+, time, transformers, transformersBase, unorderedContainers, vector
+, zipArchive
+}:
+
+cabal.mkDerivation (self: {
+  pname = "webdriver";
+  version = "0.5.4";
+  sha256 = "0839vw7drjn5iray4ma17f0pfgwx44q10ad8m564jvjgcml4yhvq";
+  buildDepends = [
+    aeson attoparsec base64Bytestring cond dataDefault directoryTree
+    exceptions filepath HTTP liftedBase monadControl mtl network
+    scientific temporary text time transformers transformersBase
+    unorderedContainers vector zipArchive
+  ];
+  testDepends = [ parallel text ];
+  jailbreak = true;
+  doCheck = false;
+  meta = {
+    homepage = "https://github.com/kallisti-dev/hs-webdriver";
+    description = "a Haskell client for the Selenium WebDriver protocol";
+    license = self.stdenv.lib.licenses.bsd3;
+    platforms = self.ghc.meta.platforms;
+  };
+})
diff --git a/pkgs/development/libraries/libatomic_ops/default.nix b/pkgs/development/libraries/libatomic_ops/default.nix
new file mode 100644
index 000000000000..0e8dae7bb911
--- /dev/null
+++ b/pkgs/development/libraries/libatomic_ops/default.nix
@@ -0,0 +1,28 @@
+{stdenv, fetchurl}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="libatomic_ops";
+    version="7.4.2";
+    name="${baseName}-${version}";
+    hash="1pdm0h1y7bgkczr8byg20r6bq15m5072cqm5pny4f9crc9gn3yh4";
+    url="http://www.ivmaisoft.com/_bin/atomic_ops/libatomic_ops-7.4.2.tar.gz";
+    sha256="1pdm0h1y7bgkczr8byg20r6bq15m5072cqm5pny4f9crc9gn3yh4";
+  };
+  buildInputs = [
+  ];
+in
+stdenv.mkDerivation {
+  inherit (s) name version;
+  inherit buildInputs;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
+  meta = {
+    inherit (s) version;
+    description = ''A library for semi-portable access to hardware-provided atomic memory update operations'';
+    license = stdenv.lib.licenses.gpl2Plus ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/libatomic_ops/default.upstream b/pkgs/development/libraries/libatomic_ops/default.upstream
new file mode 100644
index 000000000000..c9fd4554e4a1
--- /dev/null
+++ b/pkgs/development/libraries/libatomic_ops/default.upstream
@@ -0,0 +1 @@
+url https://github.com/ivmai/libatomic_ops/wiki/Download
diff --git a/pkgs/development/libraries/libe-book/0.0.nix b/pkgs/development/libraries/libe-book/0.0.nix
new file mode 100644
index 000000000000..2dc8de670397
--- /dev/null
+++ b/pkgs/development/libraries/libe-book/0.0.nix
@@ -0,0 +1,30 @@
+{stdenv, fetchurl, gperf, pkgconfig, librevenge, libxml2, boost, icu, cppunit
+, libwpd}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="libe-book";
+    version="0.0.3";
+    name="${baseName}-${version}";
+    hash="06xhg319wbqrkj8914npasv5lr7k2904mmy7wa78063mkh31365i";
+    url="mirror://sourceforge/project/libebook/libe-book-0.0.3/libe-book-0.0.3.tar.xz";
+    sha256="06xhg319wbqrkj8914npasv5lr7k2904mmy7wa78063mkh31365i";
+  };
+  buildInputs = [
+    gperf pkgconfig librevenge libxml2 boost icu cppunit libwpd
+  ];
+in
+stdenv.mkDerivation {
+  inherit (s) name version;
+  inherit buildInputs;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
+  meta = {
+    inherit (s) version;
+    description = ''Library for import of reflowable e-book formats'';
+    license = stdenv.lib.licenses.lgpl21Plus ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/libe-book/0.0.upstream b/pkgs/development/libraries/libe-book/0.0.upstream
new file mode 100644
index 000000000000..e2994f526914
--- /dev/null
+++ b/pkgs/development/libraries/libe-book/0.0.upstream
@@ -0,0 +1,4 @@
+url http://sourceforge.net/projects/libebook/files/
+SF_version_dir libe-book-0.0.
+version_link '[.]tar.xz/download$'
+SF_redirect
diff --git a/pkgs/development/libraries/libe-book/default.nix b/pkgs/development/libraries/libe-book/default.nix
new file mode 100644
index 000000000000..6dc384de204b
--- /dev/null
+++ b/pkgs/development/libraries/libe-book/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl, gperf, pkgconfig, librevenge, libxml2, boost, icu, cppunit}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="libe-book";
+    version="0.1.1";
+    name="${baseName}-${version}";
+    hash="0awv96q92qgxk22w2vrf4vg90cab5qfsrkbhgz252722mrkd5p4a";
+    url="mirror://sourceforge/project/libebook/libe-book-0.1.1/libe-book-0.1.1.tar.xz";
+    sha256="0awv96q92qgxk22w2vrf4vg90cab5qfsrkbhgz252722mrkd5p4a";
+  };
+  buildInputs = [
+    gperf pkgconfig librevenge libxml2 boost icu cppunit
+  ];
+in
+stdenv.mkDerivation {
+  inherit (s) name version;
+  inherit buildInputs;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
+  meta = {
+    inherit (s) version;
+    description = ''Library for import of reflowable e-book formats'';
+    license = stdenv.lib.licenses.lgpl21Plus ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/libe-book/default.upstream b/pkgs/development/libraries/libe-book/default.upstream
new file mode 100644
index 000000000000..30a6d3907877
--- /dev/null
+++ b/pkgs/development/libraries/libe-book/default.upstream
@@ -0,0 +1,4 @@
+url http://sourceforge.net/projects/libebook/files/
+SF_version_dir libe-book-
+version_link '[.]tar.xz/download$'
+SF_redirect
diff --git a/pkgs/development/libraries/libmwaw/0.2.nix b/pkgs/development/libraries/libmwaw/0.2.nix
new file mode 100644
index 000000000000..d66414b68142
--- /dev/null
+++ b/pkgs/development/libraries/libmwaw/0.2.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl, boost, pkgconfig, cppunit, zlib, libwpg, libwpd, librevenge}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="libmwaw";
+    version="0.2.1";
+    name="${baseName}-${version}";
+    hash="1fil1ll84pq0k3g6rcc2xfg1yrigkljp4ay5p2wpwd9qlmfvvvqn";
+    url="mirror://sourceforge/project/libmwaw/libmwaw/libmwaw-0.2.1/libmwaw-0.2.1.tar.xz";
+    sha256="1fil1ll84pq0k3g6rcc2xfg1yrigkljp4ay5p2wpwd9qlmfvvvqn";
+  };
+  buildInputs = [
+    boost pkgconfig cppunit zlib libwpg libwpd librevenge
+  ];
+in
+stdenv.mkDerivation {
+  inherit (s) name version;
+  inherit buildInputs;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
+  meta = {
+    inherit (s) version;
+    description = ''Import library for some old mac text documents'';
+    license = stdenv.lib.licenses.mpl20 ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/libmwaw/0.2.upstream b/pkgs/development/libraries/libmwaw/0.2.upstream
new file mode 100644
index 000000000000..8ce00ecf7675
--- /dev/null
+++ b/pkgs/development/libraries/libmwaw/0.2.upstream
@@ -0,0 +1,4 @@
+url http://sourceforge.net/projects/libmwaw/files/libmwaw/
+SF_version_dir libmwaw-0.2.
+version_link '[.]tar.xz/download$'
+SF_redirect
diff --git a/pkgs/development/libraries/libmwaw/default.nix b/pkgs/development/libraries/libmwaw/default.nix
new file mode 100644
index 000000000000..0a7b76edab13
--- /dev/null
+++ b/pkgs/development/libraries/libmwaw/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl, boost, pkgconfig, cppunit, zlib, libwpg, libwpd, librevenge}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="libmwaw";
+    version="0.3.1";
+    name="${baseName}-${version}";
+    hash="0fa6nf4pxl853xnh2kdjw1nk3w6i39diixiampml7g9qygbd0vqb";
+    url="mirror://sourceforge/project/libmwaw/libmwaw/libmwaw-0.3.1/libmwaw-0.3.1.tar.xz";
+    sha256="0fa6nf4pxl853xnh2kdjw1nk3w6i39diixiampml7g9qygbd0vqb";
+  };
+  buildInputs = [
+    boost pkgconfig cppunit zlib libwpg libwpd librevenge
+  ];
+in
+stdenv.mkDerivation {
+  inherit (s) name version;
+  inherit buildInputs;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
+  meta = {
+    inherit (s) version;
+    description = ''Import library for some old mac text documents'';
+    license = stdenv.lib.licenses.mpl20 ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/libmwaw/default.upstream b/pkgs/development/libraries/libmwaw/default.upstream
new file mode 100644
index 000000000000..0db6d23a52f1
--- /dev/null
+++ b/pkgs/development/libraries/libmwaw/default.upstream
@@ -0,0 +1,4 @@
+url http://sourceforge.net/projects/libmwaw/files/libmwaw/
+SF_version_dir libmwaw-
+version_link '[.]tar.xz/download$'
+SF_redirect
diff --git a/pkgs/development/libraries/libodfgen/default.nix b/pkgs/development/libraries/libodfgen/default.nix
new file mode 100644
index 000000000000..2e6c58c804e0
--- /dev/null
+++ b/pkgs/development/libraries/libodfgen/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl, boost, pkgconfig, cppunit, zlib, libwpg, libwpd, librevenge}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="libodfgen";
+    version="0.1.1";
+    name="${baseName}-${version}";
+    hash="1p335m2l19c7glsss30rrm5dxfcyajk9fvj7rsclgn0kmb4y48cm";
+    url="mirror://sourceforge/project/libwpd/libodfgen/libodfgen-0.1.1/libodfgen-0.1.1.tar.xz";
+    sha256="1p335m2l19c7glsss30rrm5dxfcyajk9fvj7rsclgn0kmb4y48cm";
+  };
+  buildInputs = [
+    boost pkgconfig cppunit zlib libwpg libwpd librevenge
+  ];
+in
+stdenv.mkDerivation {
+  inherit (s) name version;
+  inherit buildInputs;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
+  meta = {
+    inherit (s) version;
+    description = ''A base library for generating ODF documents'';
+    license = stdenv.lib.licenses.mpl20 ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/libodfgen/default.upstream b/pkgs/development/libraries/libodfgen/default.upstream
new file mode 100644
index 000000000000..44f66561bd81
--- /dev/null
+++ b/pkgs/development/libraries/libodfgen/default.upstream
@@ -0,0 +1,4 @@
+url http://sourceforge.net/projects/libwpd/files/libodfgen/
+SF_version_dir libodfgen-
+version_link '[.]tar.xz/download$'
+SF_redirect
diff --git a/pkgs/development/libraries/libre/default.nix b/pkgs/development/libraries/libre/default.nix
index cc9139d664ea..c67df46e89c0 100644
--- a/pkgs/development/libraries/libre/default.nix
+++ b/pkgs/development/libraries/libre/default.nix
@@ -1,10 +1,10 @@
 {stdenv, fetchurl, zlib, openssl}:
 stdenv.mkDerivation rec {
-  version = "0.4.2";
+  version = "0.4.9";
   name = "libre-${version}";
   src=fetchurl {
     url = "http://www.creytiv.com/pub/re-${version}.tar.gz";
-    sha256 = "1c99ygs46qhd4a0ardxhdyjaw5p8clhzmsm8jydqxnmbakwy518m";
+    sha256 = "1i98z9qw3jpkaq419189vr8h3qcxqlz40dls77rbn4c0agc69703";
   };
   buildInputs = [zlib openssl];
   makeFlags = [
@@ -19,5 +19,9 @@ stdenv.mkDerivation rec {
     platforms = with stdenv.lib.platforms; linux;
     maintainers = with stdenv.lib.maintainers; [raskin];
     license = with stdenv.lib.licenses; bsd3;
+    inherit version;
+    downloadPage = "http://www.creytiv.com/pub/";
+    updateWalker = true;
+    downloadURLRegexp = "/re-.*[.]tar[.].*";
   };
 }
diff --git a/pkgs/development/libraries/librem/default.nix b/pkgs/development/libraries/librem/default.nix
index 04f3cc97bf33..fe49609ce68d 100644
--- a/pkgs/development/libraries/librem/default.nix
+++ b/pkgs/development/libraries/librem/default.nix
@@ -1,10 +1,10 @@
 {stdenv, fetchurl, zlib, openssl, libre}:
 stdenv.mkDerivation rec {
-  version = "0.4.2";
+  version = "0.4.6";
   name = "librem-${version}";
   src=fetchurl {
     url = "http://www.creytiv.com/pub/rem-${version}.tar.gz";
-    sha256 = "55c66118e3026c5ed42d8b9e0c668149baefe83f1aa76394cddba2d72f45d5c7";
+    sha256 = "0rgqy9pqn730ijxvz1gk0virsf6jwjmq02s99jqqrfm3p0g6zs3w";
   };
   buildInputs = [zlib openssl libre];
   makeFlags = [
@@ -20,5 +20,9 @@ stdenv.mkDerivation rec {
     platforms = with stdenv.lib.platforms; linux;
     maintainers = with stdenv.lib.maintainers; [raskin];
     license = with stdenv.lib.licenses; bsd3;
+    inherit version;
+    downloadPage = "http://www.creytiv.com/pub/";
+    updateWalker = true;
+    downloadURLRegexp = "/rem-.*[.]tar[.].*";
   };
 }
diff --git a/pkgs/development/libraries/librevenge/default.nix b/pkgs/development/libraries/librevenge/default.nix
new file mode 100644
index 000000000000..8ddf026a1bc8
--- /dev/null
+++ b/pkgs/development/libraries/librevenge/default.nix
@@ -0,0 +1,29 @@
+{stdenv, fetchurl, boost, pkgconfig, cppunit, zlib}:
+let
+  s = # Generated upstream information
+  rec {
+    baseName="librevenge";
+    version="0.0.1";
+    name="${baseName}-${version}";
+    hash="0zgfxvbqf11pypyc0vmcan73x197f7ia1ywin9qqy9hvvmrjgchc";
+    url="mirror://sourceforge/project/libwpd/librevenge/librevenge-0.0.1/librevenge-0.0.1.tar.xz";
+    sha256="0zgfxvbqf11pypyc0vmcan73x197f7ia1ywin9qqy9hvvmrjgchc";
+  };
+  buildInputs = [
+    boost pkgconfig cppunit zlib
+  ];
+in
+stdenv.mkDerivation {
+  inherit (s) name version;
+  inherit buildInputs;
+  src = fetchurl {
+    inherit (s) url sha256;
+  };
+  meta = {
+    inherit (s) version;
+    description = ''A base library for writing document import filters'';
+    license = stdenv.lib.licenses.mpl20 ;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/libraries/librevenge/default.upstream b/pkgs/development/libraries/librevenge/default.upstream
new file mode 100644
index 000000000000..48b678a392a4
--- /dev/null
+++ b/pkgs/development/libraries/librevenge/default.upstream
@@ -0,0 +1,4 @@
+url http://sourceforge.net/projects/libwpd/files/librevenge/
+SF_version_dir librevenge-
+version_link '[.]tar.xz/download$'
+SF_redirect
diff --git a/pkgs/development/libraries/mdds/default.nix b/pkgs/development/libraries/mdds/default.nix
index 8ff2cac539cc..296744e1d56c 100644
--- a/pkgs/development/libraries/mdds/default.nix
+++ b/pkgs/development/libraries/mdds/default.nix
@@ -1,15 +1,21 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  version = "0.8.1";
+  version = "0.10.3";
   name = "mdds-${version}";
 
   src = fetchurl {
-    url = "http://multidimalgorithm.googlecode.com/files/mdds_${version}.tar.bz2";
-    sha256 = "12w8rs8kb8yffndsw0g7qfjvy4gpnppkdzc7r7vvc9n800ixl1gn";
+    url = "http://kohei.us/files/mdds/src/mdds_${version}.tar.bz2";
+    sha256 = "1hp0472mcsgzrz1v60jpywxrrqmpb8bchfsi7ydmp6vypqnr646v";
   };
 
+  postInstall = ''
+   mkdir -p "$out/lib/pkgconfig"
+   cp "$out/share/pkgconfig/"* "$out/lib/pkgconfig"
+  '';
+
   meta = {
+    inherit version;
     homepage = https://code.google.com/p/multidimalgorithm/;
     description = "A collection of multi-dimensional data structure and indexing algorithm";
     platforms = stdenv.lib.platforms.all;
diff --git a/pkgs/development/libraries/mdds/default.upstream b/pkgs/development/libraries/mdds/default.upstream
new file mode 100644
index 000000000000..5c07878fdf20
--- /dev/null
+++ b/pkgs/development/libraries/mdds/default.upstream
@@ -0,0 +1,10 @@
+url https://code.google.com/p/multidimalgorithm/wiki/Downloads
+version_link '[.]tar[.][a-z0-9]+$'
+version '.*_([0-9.]+)[.]tar[.].*' '\1'
+
+do_overwrite(){
+  ensure_hash
+  ensure_version
+  set_var_value version $CURRENT_VERSION
+  set_var_value sha256 $CURRENT_HASH
+}
diff --git a/pkgs/development/libraries/nix-plugins/default.nix b/pkgs/development/libraries/nix-plugins/default.nix
new file mode 100644
index 000000000000..3b4f7da94f3d
--- /dev/null
+++ b/pkgs/development/libraries/nix-plugins/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchgit, nix }:
+
+stdenv.mkDerivation {
+  name = "nix-plugins-1.0.0";
+
+  src = fetchgit {
+    url = git://github.com/shlevy/nix-plugins.git;
+    rev = "refs/tags/1.0.0";
+    sha256 = "e624de55cabc9014e77f21978d657089ae94ce161584b3d9dc3c9763658421b3";
+  };
+
+  buildInputs = [ nix ];
+
+  buildFlags = [ "NIX_INCLUDE=${nix}/include" ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = {
+    description = "Collection of miscellaneous plugins for the nix expression language";
+    homepage = https://github.com/shlevy/nix-plugins;
+    license = stdenv.lib.licenses.mit;
+    maintaners = [ stdenv.lib.maintainers.shlevy ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/pkgs/development/libraries/nvidia-texture-tools/default.nix b/pkgs/development/libraries/nvidia-texture-tools/default.nix
new file mode 100644
index 000000000000..852d72cb9aad
--- /dev/null
+++ b/pkgs/development/libraries/nvidia-texture-tools/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchsvn, cmake, libpng, ilmbase, libtiff, zlib, libjpeg
+, mesa, libX11
+}:
+
+stdenv.mkDerivation rec {
+  # No support yet for cg, cuda, glew, glut, openexr.
+
+  name = "nvidia-texture-tools";
+
+  src = fetchsvn {
+    url = "http://nvidia-texture-tools.googlecode.com/svn/trunk";
+    rev = "1388";
+    sha256 = "0pwxqx5l16nqidzm6mwd3rd4gbbknkz6q8cxnvf7sggjpbcvm2d6";
+  };
+
+  buildInputs = [ cmake libpng ilmbase libtiff zlib libjpeg mesa libX11 ];
+
+  patchPhase = ''
+    # Fix build due to missing dependnecies.
+    echo 'target_link_libraries(bc7 nvmath)' >> src/nvtt/bc7/CMakeLists.txt
+    echo 'target_link_libraries(bc6h nvmath)' >> src/nvtt/bc6h/CMakeLists.txt
+
+    # Make a recently added pure virtual function just virtual,
+    # to keep compatibility.
+    sed -i 's/virtual void endImage() = 0;/virtual void endImage() {}/' src/nvtt/nvtt.h
+
+    # Fix building shared libraries.
+    sed -i 's/SET(NVIMAGE_SHARED TRUE)/SET(NVIMAGE_SHARED TRUE)\nSET(NVTHREAD_SHARED TRUE)/' CMakeLists.txt
+  '';
+
+  cmakeFlags = [
+    "-DNVTT_SHARED=TRUE"
+  ];
+
+  meta = {
+    description = "A set of cuda-enabled texture tools and compressors";
+    homepage = "http://developer.nvidia.com/object/texture_tools.html";
+    license = "MIT";
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/development/lisp-modules/lisp-packages.nix b/pkgs/development/lisp-modules/lisp-packages.nix
index f7d6dd2676d6..14c996fa05a8 100644
--- a/pkgs/development/lisp-modules/lisp-packages.nix
+++ b/pkgs/development/lisp-modules/lisp-packages.nix
@@ -37,7 +37,7 @@ let lispPackages = rec {
     src = pkgs.fetchdarcs {
       url = "http://common-lisp.net/project/iterate/darcs/iterate";
       sha256 = "0m3q0s7h5s8varwx584m2akgdslj14df7kg4w1bj1fbgzsag5m1w";
-      tag=version;
+      rev = version;
     };
     overrides = x: {
       configurePhase="buildPhase(){ true; }";
diff --git a/pkgs/development/tools/etcdctl/default.nix b/pkgs/development/tools/etcdctl/default.nix
new file mode 100644
index 000000000000..a37ef26f5412
--- /dev/null
+++ b/pkgs/development/tools/etcdctl/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, go, fetchurl, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  version = "0.4.3";
+  name = "etcdctl-${version}";
+
+  src = import ./deps.nix {
+    inherit stdenv lib fetchgit fetchhg fetchbzr fetchFromGitHub;
+  };
+
+  buildInputs = [ go ];
+
+  buildPhase = ''
+    export GOPATH=$src
+    go build -v -o etcdctl github.com/coreos/etcdctl
+  '';
+
+  installPhase = ''
+    ensureDir $out/bin
+    mv etcdctl $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple command line client for etcd";
+    homepage = http://coreos.com/using-coreos/etcd/;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ cstrahan ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/development/tools/etcdctl/deps.nix b/pkgs/development/tools/etcdctl/deps.nix
new file mode 100644
index 000000000000..98bdda95a433
--- /dev/null
+++ b/pkgs/development/tools/etcdctl/deps.nix
@@ -0,0 +1,27 @@
+{ stdenv, lib, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+
+let
+  goDeps = [
+    {
+      root = "github.com/coreos/etcdctl";
+      src = fetchFromGitHub {
+        owner = "coreos";
+        repo = "etcdctl";
+        rev = "061135b2a02797a6b3c2b6c01183517c1bc76a2c";
+        sha256 = "1hl9cz9ygr2k4d67qj9q1xj0n64b28qjy5sv7zylgg9h9ag2j2p4";
+      };
+    }
+  ];
+
+in
+
+stdenv.mkDerivation rec {
+  name = "go-deps";
+
+  buildCommand =
+    lib.concatStrings
+      (map (dep: ''
+              mkdir -p $out/src/`dirname ${dep.root}`
+              ln -s ${dep.src} $out/src/${dep.root}
+            '') goDeps);
+}
diff --git a/pkgs/development/tools/gocode/default.nix b/pkgs/development/tools/gocode/default.nix
new file mode 100644
index 000000000000..6057c288cf69
--- /dev/null
+++ b/pkgs/development/tools/gocode/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, lib, go, fetchurl, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "gocode";
+
+  src = import ./deps.nix {
+    inherit stdenv lib fetchgit fetchhg fetchbzr fetchFromGitHub;
+  };
+
+  buildInputs = [ go ];
+
+  buildPhase = ''
+    export GOPATH=$src
+    go build -v -o gocode github.com/nsf/gocode
+  '';
+
+  installPhase = ''
+    ensureDir $out/bin
+    mv gocode $out/bin
+  '';
+
+  meta = with lib; {
+    description = "An autocompletion daemon for the Go programming language";
+    homepage = https://github.com/nsf/gocode;
+    license = licenses.mit;
+    maintainers = with maintainers; [ cstrahan ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/development/tools/gocode/deps.nix b/pkgs/development/tools/gocode/deps.nix
new file mode 100644
index 000000000000..4fd0578496d4
--- /dev/null
+++ b/pkgs/development/tools/gocode/deps.nix
@@ -0,0 +1,27 @@
+{ stdenv, lib, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+
+let
+  goDeps = [
+    {
+      root = "github.com/nsf/gocode";
+      src = fetchFromGitHub {
+        owner = "nsf";
+        repo = "gocode";
+        rev = "9b760fdb16f18eafbe0cd274527efd2bd89dfa78";
+        sha256 = "0d1wl0x8jkaav6lcfzs70cr6gy0p88cbk5n3p19l6d0h9xz464ax";
+      };
+    }
+  ];
+
+in
+
+stdenv.mkDerivation rec {
+  name = "go-deps";
+
+  buildCommand =
+    lib.concatStrings
+      (map (dep: ''
+              mkdir -p $out/src/`dirname ${dep.root}`
+              ln -s ${dep.src} $out/src/${dep.root}
+            '') goDeps);
+}
diff --git a/pkgs/development/tools/misc/arcanist/default.nix b/pkgs/development/tools/misc/arcanist/default.nix
index 7e3a3a6d15c9..4236cffadfc9 100644
--- a/pkgs/development/tools/misc/arcanist/default.nix
+++ b/pkgs/development/tools/misc/arcanist/default.nix
@@ -3,18 +3,18 @@
 let
   libphutil = fetchgit {
     url    = "git://github.com/facebook/libphutil.git";
-    rev    = "0027e97cd6cbafcbdc626b4ac6cf315b9508a14f";
-    sha256 = "4781a4e3e1cb72da24e97f89a9b879803be8e1cf6baa2a4517801dfb893eec26";
+    rev    = "8d1b522333caf4984180ac830be8635437bacedb";
+    sha256 = "e83da381cd8845b64a1cd3244d17736fb736aeabce37efd19754447f47cd4fe1";
   };
   arcanist = fetchgit {
     url    = "git://github.com/facebook/arcanist.git";
-    rev    = "680ec3670cd9d9195debf3e9b674b1b232156e61";
-    sha256 = "a70cde586960676c0d69f4d98e6936633e0d79c37c6f6cc5b0213146a6b18c83";
+    rev    = "0971c728fea89ac45a67e06cdb89349ad8040c60";
+    sha256 = "33e595b81dcbef181d3c71072ecf1c22db3f86f49dbb5276c671caefe83c8594";
   };
 in
 stdenv.mkDerivation rec {
   name    = "arcanist-${version}";
-  version = "20140617";
+  version = "20140627";
 
   src = [ arcanist libphutil ];
   buildInputs = [ php makeWrapper flex ];
diff --git a/pkgs/development/tools/misc/openocd/default.nix b/pkgs/development/tools/misc/openocd/default.nix
index 36a57e8fe96e..ea9278c2b3d0 100644
--- a/pkgs/development/tools/misc/openocd/default.nix
+++ b/pkgs/development/tools/misc/openocd/default.nix
@@ -1,43 +1,52 @@
-{ stdenv, fetchurl, libftdi, libusb1 }:
+{ stdenv, fetchurl, libftdi, libusb1, pkgconfig }:
+
+# TODO: Add "hidapi" as dependency to gain access to CMSIS-DAP debuggers.
+# Support should be auto-detected, but if not, pass "--enable-cmsis-dap" to
+# configure.
 
 stdenv.mkDerivation rec {
   name = "openocd-${version}";
-  version = "0.7.0";
+  version = "0.8.0";
 
   src = fetchurl {
     url = "mirror://sourceforge/openocd/openocd-${version}.tar.bz2";
-    sha256 = "0qwfyd821sy5p0agz0ybgn5nd7vplipw4mhm485ldj1hcmw7n8sj";
+    sha256 = "0byk7hnccgmhw0f84qlkfhps38gp2xp628bfrsc03vq08hr6q1sv";
   };
 
-  configureFlags = [ "--enable-ft2232_libftdi"
-                     "--enable-jlink"
-                     "--enable-rlink"
-                     "--enable-ulink"
-                     "--enable-stlink" ];
-
-  buildInputs = [ libftdi libusb1 ];
+  buildInputs = [ libftdi libusb1 pkgconfig ];
+
+  configureFlags = [
+    "--enable-jtag_vpi"
+    "--enable-usb_blaster_libftdi"
+    "--enable-amtjtagaccel"
+    "--enable-gw16012"
+    "--enable-presto_libftdi"
+    "--enable-openjtag_ftdi"
+    "--enable-oocd_trace"
+    "--enable-buspirate"
+    "--enable-sysfsgpio"
+    "--enable-remote-bitbang"
+  ];
 
   postInstall = ''
     mkdir -p "$out/etc/udev/rules.d"
-    ln -s "$out/share/openocd/contrib/openocd.udev" "$out/etc/udev/rules.d/99-openocd.rules"
+    ln -s "$out/share/openocd/contrib/99-openocd.udev" "$out/etc/udev/rules.d/99-openocd.rules"
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
+    description = "Free and Open On-Chip Debugging, In-System Programming and Boundary-Scan Testing";
+    longDescription = ''
+      OpenOCD provides on-chip programming and debugging support with a layered
+      architecture of JTAG interface and TAP support, debug target support
+      (e.g. ARM, MIPS), and flash chip drivers (e.g. CFI, NAND, etc.).  Several
+      network interfaces are available for interactiving with OpenOCD: HTTP,
+      telnet, TCL, and GDB.  The GDB server enables OpenOCD to function as a
+      "remote target" for source-level debugging of embedded systems using the
+      GNU GDB program.
+    '';
     homepage = http://openocd.sourceforge.net/;
-    description = "OpenOCD, an on-chip debugger";
-
-    longDescription =
-      '' OpenOCD provides on-chip programming and debugging support with a
-         layered architecture of JTAG interface and TAP support, debug target
-         support (e.g. ARM, MIPS), and flash chip drivers (e.g. CFI, NAND,
-         etc.).  Several network interfaces are available for interactiving
-         with OpenOCD: HTTP, telnet, TCL, and GDB.  The GDB server enables
-         OpenOCD to function as a "remote target" for source-level debugging
-         of embedded systems using the GNU GDB program.
-      '';
-
-    license = "GPLv2+";
-    maintainers = with stdenv.lib.maintainers; [ viric bjornfor ];
-    platforms = with stdenv.lib.platforms; linux;
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ viric bjornfor ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/tools/ocaml/cppo/default.nix b/pkgs/development/tools/ocaml/cppo/default.nix
new file mode 100644
index 000000000000..04475959f3d9
--- /dev/null
+++ b/pkgs/development/tools/ocaml/cppo/default.nix
@@ -0,0 +1,37 @@
+{stdenv, fetchurl, ocaml, findlib}:
+let
+  pname = "cppo";
+  version = "0.9.4";
+  webpage = "http://mjambon.com/${pname}.html";
+in
+stdenv.mkDerivation rec {
+
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "http://mjambon.com/releases/${pname}/${name}.tar.gz";
+    sha256 = "1m7cbja7cf74l45plqnmjrjjz55v8x65rvx0ikk9mg1ak8lcmvxa";
+  };
+
+  buildInputs = [ ocaml findlib ];
+
+  createFindlibDestdir = true;
+
+  makeFlags = "PREFIX=$(out)";
+
+  preBuild = ''
+    mkdir $out/bin
+  '';
+
+  meta = {
+    description = "The C preprocessor for OCaml";
+    longDescription = ''
+      Cppo is an equivalent of the C preprocessor targeted at the OCaml language and its variants.
+    '';
+    homepage = "${webpage}";
+    license = "bsd";
+  };
+}
+
+
+
diff --git a/pkgs/development/tools/packer/default.nix b/pkgs/development/tools/packer/default.nix
new file mode 100644
index 000000000000..5cea753dd9c3
--- /dev/null
+++ b/pkgs/development/tools/packer/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, lib, gox, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "packer-0.6.0";
+
+  src = import ./deps.nix {
+    inherit stdenv lib fetchgit fetchhg fetchbzr fetchFromGitHub;
+  };
+
+  buildInputs = [ gox ];
+
+  installPhase = ''
+    export GOPATH=$src
+    XC_ARCH=$(go env GOARCH)
+    XC_OS=$(go env GOOS)
+
+    ensureDir $out/bin
+
+    cd $src/src/github.com/mitchellh/packer
+    gox \
+        -os="''${XC_OS}" \
+        -arch="''${XC_ARCH}" \
+        -output "$out/bin/packer-{{.Dir}}" \
+        ./...
+    mv $out/bin/packer{*packer*,}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A tool for creating identical machine images for multiple platforms from a single source configuration";
+    homepage    = "http://www.packer.io";
+    license     = licenses.mpl20;
+    maintainers = with maintainers; [ cstrahan ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/pkgs/development/tools/packer/deps.nix b/pkgs/development/tools/packer/deps.nix
new file mode 100644
index 000000000000..ce56ecad8a28
--- /dev/null
+++ b/pkgs/development/tools/packer/deps.nix
@@ -0,0 +1,307 @@
+{ stdenv, lib, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+
+let
+  goDeps = [
+    {
+      root = "github.com/mitchellh/packer";
+      src = fetchFromGitHub {
+        owner = "mitchellh";
+        repo = "packer";
+        rev = "12e28f257f66299e3bb13a053bf06ccd236e7efd";
+        sha256 = "1r5j864kr7lx137c23kk5s82znk11hsrgq98zfz5r8sbzq1xpbzw";
+      };
+    }
+    {
+      root = "code.google.com/p/go.crypto";
+      src = fetchhg {
+        url = "http://code.google.com/p/go.crypto";
+        rev = "199";
+        sha256 = "0ibrpc6kknzl6a2g2fkxn03mvrd635lcnvf4a9rk1dfrpjbpcixh";
+      };
+    }
+    {
+      root = "code.google.com/p/goauth2";
+      src = fetchhg {
+        url = "http://code.google.com/p/goauth2";
+        rev = "67";
+        sha256 = "053vajj8hd9869by7z9qfgzn84h6avpcjvyxcyw5jml8dsln4bah";
+      };
+    }
+    {
+      root = "code.google.com/p/google-api-go-client";
+      src = fetchhg {
+        url = "http://code.google.com/p/google-api-go-client";
+        rev = "111";
+        sha256 = "1ib8i1c2mb86lkrr5w7bgwb70gkqmp860wa3h1j8080gxdx3yy16";
+      };
+    }
+    {
+      root = "code.google.com/p/gosshold";
+      src = fetchhg {
+        url = "http://code.google.com/p/gosshold";
+        rev = "2";
+        sha256 = "1ljl8pcxxfz5rv89b2ajd31gxxzifl57kzpksvdhyjdxh98gkvg8";
+      };
+    }
+    {
+      root = "github.com/ActiveState/tail";
+      src = fetchFromGitHub {
+        owner = "ActiveState";
+        repo = "tail";
+        rev = "8dcd1ad3e57aa8ce5614a837cbbdb21945fbb55a";
+        sha256 = "1jxj576dd7mawawwg5nzwf6k7sks0r3lp2x8f6kxaps50n3k1wiz";
+      };
+    }
+    {
+      root = "github.com/howeyc/fsnotify";
+      src = fetchFromGitHub {
+        owner = "howeyc";
+        repo = "fsnotify";
+        rev = "441bbc86b167f3c1f4786afae9931403b99fdacf";
+        sha256 = "1v5vrwhmidxjj6sppinyizf85v60zrmn7i6c9xk0pvx6k0kw2mr2";
+      };
+    }
+    {
+      root = "launchpad.net/tomb";
+      src = fetchbzr {
+        url = "https://launchpad.net/tomb";
+        rev = "17";
+        sha256 = "1cjw0sr9hald1darq6n8akfpkzcgrk3mcq59hga3ibf2lrg35ha0";
+      };
+    }
+    {
+      root = "github.com/going/toolkit";
+      src = fetchFromGitHub {
+        owner = "going";
+        repo = "toolkit";
+        rev = "6185c1893604d52d36a97dd6bb1247ace93a9b80";
+        sha256 = "1kzy5yppalcidsmv5yxmr6lpqplqj07kdqpn77fdp6fbb0y0sg11";
+      };
+    }
+    {
+      root = "code.google.com/p/goprotobuf";
+      src = fetchhg {
+        url = "http://code.google.com/p/goprotobuf";
+        rev = "246";
+        sha256 = "0k4wcv1dnkwcp0gdrajj6kr25f1lg4lgpbi0h5v9l9n7sdwzplf4";
+      };
+    }
+    {
+      root = "github.com/bmizerany/assert";
+      src = fetchFromGitHub {
+        owner = "bmizerany";
+        repo = "assert";
+        rev = "e17e99893cb6509f428e1728281c2ad60a6b31e3";
+        sha256 = "1lfrvqqmb09y6pcr76yjv4r84cshkd4s7fpmiy7268kfi2cvqnpc";
+      };
+    }
+    {
+      root = "github.com/kr/pretty";
+      src = fetchFromGitHub {
+        owner = "kr";
+        repo = "pretty";
+        rev = "bc9499caa0f45ee5edb2f0209fbd61fbf3d9018f";
+        sha256 = "1m61y592qsnwsqn76v54mm6h2pcvh4wlzbzscc1ag645x0j33vvl";
+      };
+    }
+    {
+      root = "github.com/kr/text";
+      src = fetchFromGitHub {
+        owner = "kr";
+        repo = "text";
+        rev = "6807e777504f54ad073ecef66747de158294b639";
+        sha256 = "1wkszsg08zar3wgspl9sc8bdsngiwdqmg3ws4y0bh02sjx5a4698";
+      };
+    }
+    {
+      root = "github.com/kr/pty";
+      src = fetchFromGitHub {
+        owner = "kr";
+        repo = "pty";
+        rev = "67e2db24c831afa6c64fc17b4a143390674365ef";
+        sha256 = "1l3z3wbb112ar9br44m8g838z0pq2gfxcp5s3ka0xvm1hjvanw2d";
+      };
+    }
+    {
+      root = "github.com/xiocode/toolkit";
+      src = fetchFromGitHub {
+        owner = "xiocode";
+        repo = "toolkit";
+        rev = "352fd7c6700074a81056cdfc9e82b3e8c5681ac5";
+        sha256 = "0p33zh57xpxyk2wyp9xahdxyrkq48ysihpr0n9kj713q0dh7x4a3";
+      };
+    }
+    {
+      root = "launchpad.net/gocheck";
+      src = fetchbzr {
+        url = "https://launchpad.net/gocheck";
+        rev = "87";
+        sha256 = "1y9fa2mv61if51gpik9isls48idsdz87zkm1p3my7swjdix7fcl0";
+      };
+    }
+    {
+      root = "github.com/hashicorp/go-version";
+      src = fetchFromGitHub {
+        owner = "hashicorp";
+        repo = "go-version";
+        rev = "bb92dddfa9792e738a631f04ada52858a139bcf7";
+        sha256 = "0fl5a6j6nk1xsxwjdpa24a24fxvgnvm3jjlgpyrnmbdn380zil3m";
+      };
+    }
+    {
+      root = "github.com/mitchellh/go-fs";
+      src = fetchFromGitHub {
+        owner = "mitchellh";
+        repo = "go-fs";
+        rev = "faaa223588dd7005e49bf66fa2d19e35c8c4d761";
+        sha256 = "19jsvy35g14f18ckymzxasy0zfd6n99zlqg6grpj1yqdfxfvqn9b";
+      };
+    }
+    {
+      root = "github.com/mitchellh/go-vnc";
+      src = fetchFromGitHub {
+        owner = "mitchellh";
+        repo = "go-vnc";
+        rev = "fc93dd80f5da4ccde0a9d97f0c73e56e04e0cf72";
+        sha256 = "03rwsp1frvfx6c7yxr711lq7jdgsr1gcwg14jw26xvbzzxwjvnsf";
+      };
+    }
+    {
+      root = "github.com/mitchellh/goamz";
+      src = fetchFromGitHub {
+        owner = "mitchellh";
+        repo = "goamz";
+        rev = "c3ff5f734c89f1ea1f290c6aadbbceeeb19a623c";
+        sha256 = "1nyi1p5yh21r161icnwkcgmj2y38b4m1jis47vvjbqinrp45w1gq";
+      };
+    }
+    {
+      root = "github.com/motain/gocheck";
+      src = fetchFromGitHub {
+        owner = "motain";
+        repo = "gocheck";
+        rev = "9beb271d26e640863a5bf4a3c5ea40ccdd466b84";
+        sha256 = "07arpwfdb51b5f7kzqnm5s5ndfmxv5j793hpn30nbdcya46diwjd";
+      };
+    }
+    {
+      root = "github.com/mitchellh/iochan";
+      src = fetchFromGitHub {
+        owner = "mitchellh";
+        repo = "iochan";
+        rev = "b584a329b193e206025682ae6c10cdbe03b0cd77";
+        sha256 = "1fcwdhfci41ibpng2j4c1bqfng578cwzb3c00yw1lnbwwhaq9r6b";
+      };
+    }
+    {
+      root = "github.com/mitchellh/mapstructure";
+      src = fetchFromGitHub {
+        owner = "mitchellh";
+        repo = "mapstructure";
+        rev = "743fcf103ac7cdbc159e540d9d0e3a7889b87d68";
+        sha256 = "1qqxsnxabd7c04n0ip1wmpr2g913qchqrbmblq0shrf5p1hnszgn";
+      };
+    }
+    {
+      root = "github.com/mitchellh/multistep";
+      src = fetchFromGitHub {
+        owner = "mitchellh";
+        repo = "multistep";
+        rev = "162146fc57112954184d90266f4733e900ed05a5";
+        sha256 = "0ydhbxziy9204qr43pjdh88y2jg34g2mhzdapjyfpf8a1rin6dn3";
+      };
+    }
+    {
+      root = "github.com/mitchellh/osext";
+      src = fetchFromGitHub {
+        owner = "mitchellh";
+        repo = "osext";
+        rev = "0dd3f918b21bec95ace9dc86c7e70266cfc5c702";
+        sha256 = "02pczqml6p1mnfdrygm3rs02g0r65qx8v1bi3x24dx8wv9dr5y23";
+      };
+    }
+    {
+      root = "github.com/mitchellh/panicwrap";
+      src = fetchFromGitHub {
+        owner = "mitchellh";
+        repo = "panicwrap";
+        rev = "1aedff2aaa8b8ff7f65ab58e94ef9f593e2e3bf4";
+        sha256 = "05brbpc7kizzbs1a128fmjddh7rdyg0jzzxgbvrl58cgklh4yzaa";
+      };
+    }
+    {
+      root = "github.com/rackspace/gophercloud";
+      src = fetchFromGitHub {
+        owner = "rackspace";
+        repo = "gophercloud";
+        rev = "2285a429874c1365ef6c6d3ceb08b1d428e26aca";
+        sha256 = "0py3h64r4wkl2r9j7xlh81nazpg2b0r5ba9iblh6d1380yk4fa7f";
+      };
+    }
+    {
+      root = "github.com/racker/perigee";
+      src = fetchFromGitHub {
+        owner = "racker";
+        repo = "perigee";
+        rev = "01db3191866051f2ec854c2d876ac1a179d3049c";
+        sha256 = "05pmlgwjynbr59bw50zhrklzhr5pgnij9ym5hqvijjrpw3qd9ivf";
+      };
+    }
+    {
+      root = "github.com/ugorji/go";
+      src = fetchFromGitHub {
+        owner = "ugorji";
+        repo = "go";
+        rev = "71c2886f5a673a35f909803f38ece5810165097b";
+        sha256 = "157f24xnkhclrjwwa1b7lmpj112ynlbf7g1cfw0c657iqny5720j";
+      };
+    }
+    {
+      root = "github.com/vmihailenco/msgpack";
+      src = fetchFromGitHub {
+        owner = "vmihailenco";
+        repo = "msgpack";
+        rev = "20c1b88a6c7fc5432037439f4e8c582e236fb205";
+        sha256 = "1dj5scpfhgnw0yrh0w6jlrb9d03halvsv4l3wgjhazrrimdqf0q0";
+      };
+    }
+    {
+      root = "github.com/ugorji/go-msgpack";
+      src = fetchFromGitHub {
+        owner = "ugorji";
+        repo = "go-msgpack";
+        rev = "75092644046c5e38257395b86ed26c702dc95b92";
+        sha256 = "1bmqi16bfiqw7qhb3d5hbh0dfzhx2bbq1g15nh2pxwxckwh80x98";
+      };
+    }
+    {
+      root = "launchpad.net/mgo";
+      src = fetchbzr {
+        url = "https://launchpad.net/mgo";
+        rev = "2";
+        sha256 = "0h1dxzyx5c4r4gfnmjxv92hlhjxrgx9p4g53p4fhmz6x2fdglb0x";
+      };
+    }
+    {
+      root = "github.com/vmihailenco/bufio";
+      src = fetchFromGitHub {
+        owner = "vmihailenco";
+        repo = "bufio";
+        rev = "24e7e48f60fc2d9e99e43c07485d9fff42051e66";
+        sha256 = "0x46qnf2f15v7m0j2dcb16raxjamk5rdc7hqwgyxfr1sqmmw3983";
+      };
+    }
+  ];
+
+in
+
+stdenv.mkDerivation rec {
+  name = "go-deps";
+
+  buildCommand =
+    lib.concatStrings
+      (map (dep: ''
+              mkdir -p $out/src/`dirname ${dep.root}`
+              ln -s ${dep.src} $out/src/${dep.root}
+            '') goDeps);
+}
diff --git a/pkgs/development/tools/selenium/chromedriver/default.nix b/pkgs/development/tools/selenium/chromedriver/default.nix
index 90f7647aa05f..30430671342d 100644
--- a/pkgs/development/tools/selenium/chromedriver/default.nix
+++ b/pkgs/development/tools/selenium/chromedriver/default.nix
@@ -10,8 +10,8 @@ stdenv.mkDerivation rec {
   name = "chromedriver_linux64";
 
   src = fetchurl {
-    url = "http://chromedriver.storage.googleapis.com/2.9/${name}.zip";
-    sha256 = "1m5xl5pz445igvhj31hby97xbizlw05b8fc6w53zq7faw7mzm665";
+    url = "http://chromedriver.storage.googleapis.com/2.10/${name}.zip";
+    sha256 = "1949lhrv4hrmgapvypsgwzyr75w7vpy7nkkkwjkjxn61dkwmx4jw";
   };
 
   buildInputs = [ unzip makeWrapper ];
diff --git a/pkgs/development/web/nodejs/default.nix b/pkgs/development/web/nodejs/default.nix
index 4b79a500b1f0..c53cee4a20e3 100644
--- a/pkgs/development/web/nodejs/default.nix
+++ b/pkgs/development/web/nodejs/default.nix
@@ -6,7 +6,7 @@ let
     ln -sv /usr/sbin/dtrace $out/bin
   '';
 
-  version = "0.10.28";
+  version = "0.10.29";
 
   # !!! Should we also do shared libuv?
   deps = {
@@ -30,7 +30,7 @@ in stdenv.mkDerivation {
 
   src = fetchurl {
     url = "http://nodejs.org/dist/v${version}/node-v${version}.tar.gz";
-    sha256 = "043pc6sb3y2b0aiakmmjvzvafgki7wly0id0v1p8y80g3r2cdpdb";
+    sha256 = "0pdib215ldypc149ad03wlfj0i8fwdfydd4q2hd7ry35yw0rsds7";
   };
 
   configureFlags = concatMap sharedConfigureFlags (builtins.attrNames deps);
diff --git a/pkgs/games/0ad/data.nix b/pkgs/games/0ad/data.nix
new file mode 100644
index 000000000000..6f3c85183da5
--- /dev/null
+++ b/pkgs/games/0ad/data.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, version, releaseType }:
+
+stdenv.mkDerivation rec {
+  name = "0ad-data-${version}";
+
+  src = fetchurl {
+    url = "http://releases.wildfiregames.com/0ad-${version}-${releaseType}-unix-data.tar.xz";
+    sha256 = "0f16d41e81d7349fb16490f3abbfd38bcb3f2b89648355b2b281c5045ddafadc";
+  };
+
+  patchPhase = ''
+    rm binaries/data/tools/fontbuilder/fonts/*.txt
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/0ad
+    cp -r binaries/data/* $out/share/0ad/
+  '';
+}
diff --git a/pkgs/games/0ad/default.nix b/pkgs/games/0ad/default.nix
new file mode 100644
index 000000000000..efbd59dbbe3f
--- /dev/null
+++ b/pkgs/games/0ad/default.nix
@@ -0,0 +1,120 @@
+{ stdenv, stdenvType, callPackage, fetchurl, python27
+, pkgconfig, spidermonkey_24, boost, icu, libxml2, libpng
+, libjpeg, zlib, curl, libogg, libvorbis, enet, miniupnpc
+, openalSoft, mesa, xproto, libX11, libXcursor, nspr, SDL
+, gloox, nvidia-texture-tools
+, withEditor ? true, wxGTK ? null
+}:
+
+assert withEditor -> wxGTK != null;
+
+let
+  version = "0.0.16";
+
+  releaseType = "alpha";
+
+  zeroadData = callPackage ./data.nix { inherit version releaseType; };
+
+  archForPremake =
+    if stdenv.lib.hasPrefix "x86_64-" stdenvType then "x64" else
+    if stdenv.lib.hasPrefix "i686-" stdenvType then "x32" else "ERROR";
+
+in
+stdenv.mkDerivation rec {
+  name = "0ad-${version}";
+
+  src = fetchurl {
+    url = "http://releases.wildfiregames.com/0ad-${version}-${releaseType}-unix-build.tar.xz";
+    sha256 = "cb965ef7e292bc3a2f1f598a9695e16ff4d786398f384a1ec7d5f9bfe2626de5";
+  };
+
+  buildInputs = [
+    zeroadData python27 pkgconfig spidermonkey_24 boost icu
+    libxml2 libpng libjpeg zlib curl libogg libvorbis enet
+    miniupnpc openalSoft mesa xproto libX11 libXcursor nspr
+    SDL gloox nvidia-texture-tools
+  ] ++ stdenv.lib.optional withEditor wxGTK;
+
+  NIX_CFLAGS_COMPILE = [
+    "-I${xproto}/include/X11"
+    "-I${libX11}/include/X11"
+    "-I${libXcursor}/include/X11"
+  ];
+
+  configurePhase = ''
+    # Delete shipped libraries which we don't need.
+    rm -rf libraries/source/{enet,miniupnpc,nvtt,spidermonkey}
+
+    # Build shipped premake.
+    make -C build/premake/premake4/build/gmake.unix
+
+    # Run premake.
+    pushd build/premake
+    ./premake4/bin/release/premake4 \
+      --file="premake4.lua" \
+      --outpath="../workspaces/gcc/" \
+      --platform=${archForPremake} \
+      --os=linux \
+      --with-system-nvtt \
+      --with-system-enet \
+      --with-system-miniupnpc \
+      --with-system-mozjs24 \
+      ${ if withEditor then "--atlas" else "" } \
+      --collada \
+      --bindir="$out"/bin \
+      --libdir="$out"/lib/0ad \
+      --datadir="$out"/share/0ad \
+      gmake
+    popd
+  '';
+
+  buildPhase = ''
+    # Build bundled fcollada.
+    make -C libraries/source/fcollada/src
+
+    # Build 0ad.
+    make -C build/workspaces/gcc verbose=1
+  '';
+
+  installPhase = ''
+    # Copy executables.
+    mkdir -p "$out"/bin
+    cp binaries/system/pyrogenesis "$out"/bin/
+    ((${ toString withEditor })) && cp binaries/system/ActorEditor "$out"/bin/
+
+    # Copy l10n data.
+    mkdir -p "$out"/share/0ad
+    cp -r binaries/data/l10n "$out"/share/0ad/
+
+    # Copy libraries.
+    mkdir -p "$out"/lib/0ad
+    cp binaries/system/libCollada.so "$out"/lib/0ad/
+    ((${ toString withEditor })) && cp binaries/system/libAtlasUI.so "$out"/lib/0ad/
+
+    # Create links to data files.
+    ln -s -t "$out"/share/0ad "${zeroadData}"/share/0ad/*
+
+    # Copy icon.
+    mkdir -p "$out"/share/icons
+    cp build/resources/0ad.png "$out"/share/icons/
+
+    # Copy/fix desktop item.
+    mkdir -p "$out"/share/applications
+    while read LINE; do
+      if [[ $LINE = "Exec=0ad" ]]; then
+        echo "Exec=$out/bin/pyrogenesis"
+      elif [[ $LINE = "Icon=0ad" ]]; then
+        echo "Icon=$out/share/icons/0ad.png"
+      else
+        echo "$LINE"
+      fi
+    done <build/resources/0ad.desktop >"$out"/share/applications/0ad.desktop
+  '';
+
+  meta = {
+    description = "A free, open-source game of ancient warfare";
+    homepage = "http://wildfiregames.com/0ad/";
+    license = [ "GPLv2" "LGPLv2.1" "MIT" "CC BY-SA 3.0" "zlib" ];
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/pkgs/games/blobby/default.nix b/pkgs/games/blobby/default.nix
index faf7366f2494..801b7ea72770 100644
--- a/pkgs/games/blobby/default.nix
+++ b/pkgs/games/blobby/default.nix
@@ -1,17 +1,18 @@
-{stdenv, fetchurl, SDL, SDL_image, mesa, cmake, physfs, boost, zip, zlib}:
+{stdenv, fetchurl, SDL2, SDL2_image, mesa, cmake, physfs, boost, zip, zlib
+, pkgconfig}:
 stdenv.mkDerivation rec {
-  version = "1.0-rc3";
+  version = "1.0";
   name = "blobby-volley-${version}";
 
   src = fetchurl {
-    url = "mirror://sourceforge/project/blobby/Blobby%20Volley%202%20%28Linux%29/1.0RC3/blobby2-linux-1.0rc3.tar.gz";
-    sha256 = "10f50b2ygw8cb9mp33wpdwv9p6lc10qlwc1xd44bbcby1d9v5ga5";
+    url = "http://softlayer-ams.dl.sourceforge.net/project/blobby/Blobby%20Volley%202%20%28Linux%29/1.0/blobby2-linux-1.0.tar.gz";
+    sha256 = "1qpmbdlyhfbrdsq4vkb6cb3b8mh27fpizb71q4a21ala56g08yms";
   };
 
-  buildInputs = [SDL SDL_image mesa cmake physfs boost zip zlib];
+  buildInputs = [SDL2 SDL2_image mesa cmake physfs boost zip zlib pkgconfig];
 
-  preConfigure = ''
-    sed -re '1i#include <cassert>' -i src/CrossCorrelation.h
+  preConfigure=''
+    sed -e '1i#include <iostream>' -i src/NetworkMessage.cpp
   '';
 
   meta = {
@@ -19,5 +20,8 @@ stdenv.mkDerivation rec {
     license = with stdenv.lib.licenses; bsd3;
     platforms = with stdenv.lib.platforms; linux;
     maintainers = with stdenv.lib.maintainers; [raskin];
+    homepage = "http://blobby.sourceforge.net/";
+    downloadPage = "http://sourceforge.net/projects/blobby/files/Blobby%20Volley%202%20%28Linux%29/";
+    inherit version;
   };
 }
diff --git a/pkgs/games/blobby/default.upstream b/pkgs/games/blobby/default.upstream
new file mode 100644
index 000000000000..e9ab417f5d20
--- /dev/null
+++ b/pkgs/games/blobby/default.upstream
@@ -0,0 +1,8 @@
+url http://sourceforge.net/projects/blobby/files/Blobby%20Volley%202%20%28Linux%29/
+SF_version_dir
+version_link '[.]tar[.][^.]+/download$'
+SF_redirect
+do_overwrite(){
+  do_overwrite_just_version
+  set_var_value url $CURRENT_URL
+}
diff --git a/pkgs/games/dwarf-therapist/default.nix b/pkgs/games/dwarf-therapist/default.nix
index c7e594f89bda..1a026132e525 100644
--- a/pkgs/games/dwarf-therapist/default.nix
+++ b/pkgs/games/dwarf-therapist/default.nix
@@ -6,7 +6,7 @@ stdenv.mkDerivation rec {
 
   src = fetchhg {
     url = "https://code.google.com/r/splintermind-attributes/";
-    tag = rev;
+    inherit rev;
     sha256 = "0a9m967q6p2q3plrl6qysg1xrdmg65jzil6awjh2wr3g10x2x15z";
   };
 
diff --git a/pkgs/games/openspades/default.nix b/pkgs/games/openspades/default.nix
new file mode 100644
index 000000000000..7f11fc829032
--- /dev/null
+++ b/pkgs/games/openspades/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, cmake, curl, glew, makeWrapper, mesa, SDL2,
+  SDL2_image, unzip, wget, zlib, withOpenal ? true, openal ? null }:
+
+assert withOpenal -> openal != null;
+
+stdenv.mkDerivation rec {
+  name = "openspades-${version}";
+  version = "0.0.12";
+
+  src = fetchurl {
+    url = "https://github.com/yvt/openspades/archive/v${version}.tar.gz";
+    sha256 = "1aa848cck8qrp67ha9vrkzm3k24r2aiv1v4dxla6pi22rw98yxzm";
+  };
+
+  nativeBuildInputs = 
+    with stdenv.lib;
+    [ cmake curl glew makeWrapper mesa SDL2 SDL2_image unzip wget zlib ]
+    ++ optional withOpenal openal;
+
+  cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" "-DOPENSPADES_INSTALL_BINARY=bin" ];
+
+  # OpenAL is loaded dynamicly
+  postInstall = 
+    if withOpenal then ''
+      wrapProgram "$out/bin/openspades" \
+        --prefix LD_LIBRARY_PATH : "${openal}/lib"
+    '' 
+    else null;
+
+  meta = with stdenv.lib; {
+    description = "OpenSpades is a compatible client of Ace of Spades 0.75";
+    homepage    = "https://github.com/yvt/openspades/";
+    license     = licenses.gpl3;
+    platforms   = platforms.linux;
+  };
+}
diff --git a/pkgs/games/opentyrian/default.nix b/pkgs/games/opentyrian/default.nix
index 5e2ecdbcc5c7..cfae6a4bb3e8 100644
--- a/pkgs/games/opentyrian/default.nix
+++ b/pkgs/games/opentyrian/default.nix
@@ -6,7 +6,7 @@ stdenv.mkDerivation rec {
 
   src = fetchhg {
     url = "https://opentyrian.googlecode.com/hg/";
-    tag = "13ef8ce47362";
+    rev = "13ef8ce47362";
     md5 = "95c8f9e7ff3d4207f1c692c7cec6c9b0";
   };
 
diff --git a/pkgs/misc/emulators/wine/winetricks.nix b/pkgs/misc/emulators/wine/winetricks.nix
index f47902cd0bf1..3dd3d4bc7311 100644
--- a/pkgs/misc/emulators/wine/winetricks.nix
+++ b/pkgs/misc/emulators/wine/winetricks.nix
@@ -2,13 +2,13 @@
 , cabextract, unzip, p7zip, gnused, gnugrep, bash } :
 
 stdenv.mkDerivation rec {
-  rev = "1083";
+  rev = "1199";
   name = "winetricks-${rev}";
 
   src = fetchsvn {
     url = "http://winetricks.googlecode.com/svn/trunk";
     inherit rev;
-    sha256 = "0zakwn7g2ni6xw92i1y3pngyaxsr93714s4jy11adf7rxdkj0a32";
+    sha256 = "1kji1n6ps09g8xnl9m7vqk3vkl03abzwnc43c52i8p0adnv06khb";
   };
 
   buildInputs = [ perl which ];
@@ -28,4 +28,3 @@ stdenv.mkDerivation rec {
     maintainers = with stdenv.lib.maintainers; [ the-kenny ];
   };
 }
-
diff --git a/pkgs/os-specific/linux/broadcom-sta/cfg80211_ibss_joined-channel-parameter.patch b/pkgs/os-specific/linux/broadcom-sta/cfg80211_ibss_joined-channel-parameter.patch
new file mode 100644
index 000000000000..5596c0ebcf2e
--- /dev/null
+++ b/pkgs/os-specific/linux/broadcom-sta/cfg80211_ibss_joined-channel-parameter.patch
@@ -0,0 +1,17 @@
+Add channel parameter to cfg80211_ibss_joined call
+
+--- a/src/wl/sys/wl_cfg80211_hybrid.c
++++ b/src/wl/sys/wl_cfg80211_hybrid.c
+@@ -1841,7 +1841,12 @@ wl_notify_connect_status(struct wl_cfg80211_priv *wl, struct net_device *ndev,
+ 			wl_get_assoc_ies(wl);
+ 			memcpy(&wl->bssid, &e->addr, ETHER_ADDR_LEN);
+ 			wl_update_bss_info(wl);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0)
+ 			cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid, GFP_KERNEL);
++#else
++			cfg80211_ibss_joined(ndev, (u8 *)&wl->bssid,
++			                     &wl->conf->channel, GFP_KERNEL);
++#endif
+ 			set_bit(WL_STATUS_CONNECTED, &wl->status);
+ 			wl->profile->active = true;
+ 		}
diff --git a/pkgs/os-specific/linux/broadcom-sta/default.nix b/pkgs/os-specific/linux/broadcom-sta/default.nix
index 5955543f8e1e..1ed13c2e4501 100644
--- a/pkgs/os-specific/linux/broadcom-sta/default.nix
+++ b/pkgs/os-specific/linux/broadcom-sta/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation {
   patches = [
     ./linux-recent.patch
     ./license.patch
+    ./cfg80211_ibss_joined-channel-parameter.patch
   ];
 
   makeFlags = "KBASE=${kernel.dev}/lib/modules/${kernel.modDirVersion}";
diff --git a/pkgs/os-specific/linux/iomelt/default.nix b/pkgs/os-specific/linux/iomelt/default.nix
new file mode 100644
index 000000000000..df267d304c15
--- /dev/null
+++ b/pkgs/os-specific/linux/iomelt/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, lib, fetchurl }:
+
+let version = "0.7";
+in stdenv.mkDerivation {
+  name = "iomelt-${version}";
+  src = fetchurl {
+    url = "http://iomelt.com/s/iomelt-${version}.tar.gz";
+    sha256 = "1jhrdm5b7f1bcbrdwcc4yzg26790jxl4d2ndqiwd9brl2g5537im";
+  };
+
+  preBuild = ''
+    ensureDir $out/bin
+    ensureDir $out/share/man/man1
+
+    substituteInPlace Makefile \
+      --replace /usr $out
+  '';
+
+  meta = with lib; {
+    description = "A simple yet effective way to benchmark disk IO in Linux systems";
+    homepage    = http://www.iomelt.com;
+    maintainers = with maintainers; [ cstrahan ];
+    platforms   = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix
index b089e962397d..7e7dd2dfda9d 100644
--- a/pkgs/os-specific/linux/kernel/common-config.nix
+++ b/pkgs/os-specific/linux/kernel/common-config.nix
@@ -78,17 +78,17 @@ with stdenv.lib;
   CLS_U32_MARK y
 
   # Wireless networking.
-  CFG80211_WEXT y # Without it, ipw2200 drivers don't build
-  IPW2100_MONITOR y # support promiscuous mode
-  IPW2200_MONITOR y # support promiscuous mode
-  HOSTAP_FIRMWARE y # Support downloading firmware images with Host AP driver
-  HOSTAP_FIRMWARE_NVRAM y
-  ATH9K_PCI y # Detect Atheros AR9xxx cards on PCI(e) bus
-  ATH9K_AHB y # Ditto, AHB bus
+  CFG80211_WEXT? y # Without it, ipw2200 drivers don't build
+  IPW2100_MONITOR? y # support promiscuous mode
+  IPW2200_MONITOR? y # support promiscuous mode
+  HOSTAP_FIRMWARE? y # Support downloading firmware images with Host AP driver
+  HOSTAP_FIRMWARE_NVRAM? y
+  ATH9K_PCI? y # Detect Atheros AR9xxx cards on PCI(e) bus
+  ATH9K_AHB? y # Ditto, AHB bus
   ${optionalString (versionAtLeast version "3.2") ''
-    B43_PHY_HT y
+    B43_PHY_HT? y
   ''}
-  BCMA_HOST_PCI y
+  BCMA_HOST_PCI? y
 
   # Enable various FB devices.
   FB y
@@ -110,7 +110,7 @@ with stdenv.lib;
   # Enable KMS for devices whose X.org driver supports it.
   DRM_I915_KMS y
   ${optionalString (versionOlder version "3.9") ''
-    DRM_RADEON_KMS y
+    DRM_RADEON_KMS? y
   ''}
   # Hybrid graphics support
   VGA_SWITCHEROO y
@@ -145,18 +145,18 @@ with stdenv.lib;
   EXT2_FS_XIP y # Ext2 execute in place support
   EXT4_FS_POSIX_ACL y
   EXT4_FS_SECURITY y
-  REISERFS_FS_XATTR y
-  REISERFS_FS_POSIX_ACL y
-  REISERFS_FS_SECURITY y
-  JFS_POSIX_ACL y
-  JFS_SECURITY y
-  XFS_QUOTA y
-  XFS_POSIX_ACL y
-  XFS_RT y # XFS Realtime subvolume support
-  OCFS2_DEBUG_MASKLOG n
+  REISERFS_FS_XATTR? y
+  REISERFS_FS_POSIX_ACL? y
+  REISERFS_FS_SECURITY? y
+  JFS_POSIX_ACL? y
+  JFS_SECURITY? y
+  XFS_QUOTA? y
+  XFS_POSIX_ACL? y
+  XFS_RT? y # XFS Realtime subvolume support
+  OCFS2_DEBUG_MASKLOG? n
   BTRFS_FS_POSIX_ACL y
   UBIFS_FS_XATTR? y
-  UBIFS_FS_ADVANCED_COMPR y
+  UBIFS_FS_ADVANCED_COMPR? y
   NFSD_V2_ACL y
   NFSD_V3 y
   NFSD_V3_ACL y
@@ -192,14 +192,14 @@ with stdenv.lib;
   ${optionalString (versionAtLeast version "3.3" && versionOlder version "3.13") ''
     AUDIT_LOGINUID_IMMUTABLE y
   ''}
-  B43_PCMCIA y
+  B43_PCMCIA? y
   BLK_DEV_CMD640_ENHANCED y # CMD640 enhanced support
   BLK_DEV_IDEACPI y # IDE ACPI support
   BLK_DEV_INTEGRITY y
   BSD_PROCESS_ACCT_V3 y
-  BT_HCIUART_BCSP y
-  BT_HCIUART_H4 y # UART (H4) protocol support
-  BT_HCIUART_LL y
+  BT_HCIUART_BCSP? y
+  BT_HCIUART_H4? y # UART (H4) protocol support
+  BT_HCIUART_LL? y
   BT_RFCOMM_TTY? y # RFCOMM TTY support
   CRASH_DUMP? n
   ${optionalString (versionOlder version "3.1") ''
@@ -213,10 +213,10 @@ with stdenv.lib;
   FUSION y # Fusion MPT device support
   IDE_GD_ATAPI y # ATAPI floppy support
   IRDA_ULTRA y # Ultra (connectionless) protocol
-  JOYSTICK_IFORCE_232 y # I-Force Serial joysticks and wheels
-  JOYSTICK_IFORCE_USB y # I-Force USB joysticks and wheels
-  JOYSTICK_XPAD_FF y # X-Box gamepad rumble support
-  JOYSTICK_XPAD_LEDS y # LED Support for Xbox360 controller 'BigX' LED
+  JOYSTICK_IFORCE_232? y # I-Force Serial joysticks and wheels
+  JOYSTICK_IFORCE_USB? y # I-Force USB joysticks and wheels
+  JOYSTICK_XPAD_FF? y # X-Box gamepad rumble support
+  JOYSTICK_XPAD_LEDS? y # LED Support for Xbox360 controller 'BigX' LED
   LDM_PARTITION y # Windows Logical Disk Manager (Dynamic Disk) support
   LEDS_TRIGGER_IDE_DISK y # LED IDE Disk Trigger
   LOGIRUMBLEPAD2_FF y # Logitech Rumblepad 2 force feedback
@@ -315,8 +315,8 @@ with stdenv.lib;
   ''}
 
   # Enable the 9P cache to speed up NixOS VM tests.
-  9P_FSCACHE y
-  9P_FS_POSIX_ACL y
+  9P_FSCACHE? y
+  9P_FS_POSIX_ACL? y
 
   # Enable transparent support for huge pages.
   TRANSPARENT_HUGEPAGE? y
diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix
index 8ba677d6dfe9..08611e448562 100644
--- a/pkgs/os-specific/linux/kernel/generic.nix
+++ b/pkgs/os-specific/linux/kernel/generic.nix
@@ -95,6 +95,8 @@ let
     '';
 
     installPhase = "mv .config $out";
+
+    enableParallelBuilding = true;
   };
 
   kernel = buildLinux {
diff --git a/pkgs/os-specific/linux/kernel/linux-3.10.nix b/pkgs/os-specific/linux/kernel/linux-3.10.nix
index a08ad5ea53d1..6ee5345f498c 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.10.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.10.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "3.10.44";
+  version = "3.10.45";
   extraMeta.branch = "3.10";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
-    sha256 = "06brvvxkgx4im4jzyl08y8hifgqb8ndxlhdkczwlqx3cgs6769c0";
+    sha256 = "0bsmqszc86d33g6qpwgrdckgrd1x37087br3vsc5151s2p22rk1f";
   };
 
   features.iwlwifi = true;
diff --git a/pkgs/os-specific/linux/kernel/linux-3.12.nix b/pkgs/os-specific/linux/kernel/linux-3.12.nix
index 33bed4213b41..7d5ff606eb98 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.12.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.12.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "3.12.22";
+  version = "3.12.23";
   extraMeta.branch = "3.12";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
-    sha256 = "0c9rw11iihjimqb6mdmwn4q67ds7jg4qibj5ijj5pdmkdqzj7g54";
+    sha256 = "0aa9vnyk4p6hg4fp4rm4a95cn4p16j2dfrhc3cfznpcdkpi5q9m7";
   };
 
   features.iwlwifi = true;
diff --git a/pkgs/os-specific/linux/kernel/linux-3.13.nix b/pkgs/os-specific/linux/kernel/linux-3.13.nix
deleted file mode 100644
index d84cec235cec..000000000000
--- a/pkgs/os-specific/linux/kernel/linux-3.13.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{ stdenv, fetchurl, ... } @ args:
-
-import ./generic.nix (args // rec {
-  version = "3.13.11";
-  extraMeta.branch = "3.13";
-
-  src = fetchurl {
-    url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
-    sha256 = "1nhi5m0nnrb7v2gqpa3181p32k5hm5jwkf647vs80r14750gxlpw";
-  };
-
-  features.iwlwifi = true;
-  features.efiBootStub = true;
-  features.needsCifsUtils = true;
-  features.canDisableNetfilterConntrackHelpers = true;
-  features.netfilterRPFilter = true;
-} // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-3.14.nix b/pkgs/os-specific/linux/kernel/linux-3.14.nix
index 4fbca05501d3..f867309529f1 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.14.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.14.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "3.14.8";
+  version = "3.14.9";
   extraMeta.branch = "3.14";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
-    sha256 = "0l2k7c8i3vzcs8mwdy3h1yzlqli6vr56wbn6bxp4nyvxkwxlhs5d";
+    sha256 = "0rm68hzkxzzh6a1nw6fsxbg43d4b88957ail7b9ga589cagf3p94";
   };
 
   features.iwlwifi = true;
diff --git a/pkgs/os-specific/linux/kernel/linux-3.15.nix b/pkgs/os-specific/linux/kernel/linux-3.15.nix
index 531b85b789aa..68f58f83a2f7 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.15.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.15.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "3.15.1";
+  version = "3.15.2";
   extraMeta.branch = "3.15";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
-    sha256 = "0bmzag945bb9v20xc2f6i4syx456prai3qj5cxhm8cb76wby4s8b";
+    sha256 = "09nq8q84xn6lwzdnn36pzfiqhn1lapi60yxn4hifb7v9ymhc5sv6";
   };
 
   features.iwlwifi = true;
diff --git a/pkgs/os-specific/linux/kernel/linux-3.4.nix b/pkgs/os-specific/linux/kernel/linux-3.4.nix
index 8308340f3f5e..27efaac44889 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.4.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.4.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "3.4.94";
+  version = "3.4.95";
   extraMeta.branch = "3.4";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
-    sha256 = "0kc1s38zij39z8mrk9x29wizhbn4i7c7gyd796s1ib4826p3k48k";
+    sha256 = "1rv2jsfc2m12nk293v12rvvqnicyh73pwp6bcb28jdqdhm95k6l6";
   };
 
   kernelPatches = args.kernelPatches ++
diff --git a/pkgs/os-specific/linux/kernel/linux-testing.nix b/pkgs/os-specific/linux/kernel/linux-testing.nix
index bafac2fc58df..f44f3d327921 100644
--- a/pkgs/os-specific/linux/kernel/linux-testing.nix
+++ b/pkgs/os-specific/linux/kernel/linux-testing.nix
@@ -2,13 +2,13 @@
 
 import ./generic.nix (args // rec {
   # Reason to add:  RTL8192EE
-  version = "3.16-rc2";
-  modDirVersion = "3.16.0-rc2";
+  version = "3.16-rc3";
+  modDirVersion = "3.16.0-rc3";
   extraMeta.branch = "3.16";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v3.x/testing/linux-${version}.tar.xz";
-    sha256 = "12bxf62qqsf471ak6rj4gbvvjsybsamgwj9p8bphr98dp14js27w";
+    sha256 = "17jgv1hnx2im68f8721x11yfg8mpas7lsxg0j00qxv2fc6km2glm";
   };
 
   features.iwlwifi = true;
diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix
index eb4d7a100be9..5a6a7d15c3c9 100644
--- a/pkgs/os-specific/linux/kernel/patches.nix
+++ b/pkgs/os-specific/linux/kernel/patches.nix
@@ -60,17 +60,17 @@ rec {
   };
 
   grsecurity_stable = grsecPatch
-    { kversion  = "3.14.8";
-      revision  = "201406222110";
+    { kversion  = "3.14.9";
+      revision  = "201406262057";
       branch    = "stable";
-      sha256    = "0jar710hqpjkp4g3ldrbcpgc170v9qp8ykajq5fi8mxx4j54gjwa";
+      sha256    = "0rrcmlaz69028fwl45xnif1dc9wnl7lnrry1280mdg764wrc6g0n";
     };
 
   grsecurity_unstable = grsecPatch
-    { kversion  = "3.15.1";
-      revision  = "201406222112";
+    { kversion  = "3.15.2";
+      revision  = "201406262058";
       branch    = "test";
-      sha256    = "04sbpmzgfgn7hjiln9baynpgr7k67lm0b5wn2z8i2jsjigfmv0r4";
+      sha256    = "02r9xasg1hiw3bynwh50r9cqjzwffmhsyg4gmiyzs58izivl1hvd";
     };
 
   grsec_fix_path =
diff --git a/pkgs/os-specific/linux/keyutils/default.nix b/pkgs/os-specific/linux/keyutils/default.nix
index 8673981ecd50..fc05fc234525 100644
--- a/pkgs/os-specific/linux/keyutils/default.nix
+++ b/pkgs/os-specific/linux/keyutils/default.nix
@@ -1,29 +1,28 @@
 { stdenv, fetchurl, gnumake, file }:
 
 stdenv.mkDerivation rec {
-  name = "keyutils-1.5.8";
+  name = "keyutils-1.5.9";
   
   src = fetchurl {
     url = "http://people.redhat.com/dhowells/keyutils/${name}.tar.bz2";
-    sha256 = "17419fr7mph8wlhxpqb1bdrghz0db15bmjdgxg1anfgbf9ra6zbc";
+    sha256 = "1bl3w03ygxhc0hz69klfdlwqn33jvzxl1zfl2jmnb2v85iawb8jd";
   };
 
   buildInputs = [ file ];
 
   patchPhase = ''
-    sed -i -e "s,/usr/bin/make,${gnumake}/bin/make," \
-        -e "s, /etc, $out/etc," \
-        -e "s, /bin, $out/bin," \
-        -e "s, /sbin, $out/sbin," \
-        -e "s, /lib, $out/lib," \
-        -e "s, /lib64, $out/lib64," \
-        -e "s,/usr,$out," \
+    sed -i -e "s, /usr/bin/make, ${gnumake}/bin/make," \
+        -e "s, /usr, ," \
+        -e "s,\$(LNS) \$(LIBDIR)/\$(SONAME),\$(LNS) \$(SONAME)," \
         Makefile
   '';
+
+  installPhase = "make install DESTDIR=$out";
   
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://people.redhat.com/dhowells/keyutils/;
     description = "Tools used to control the Linux kernel key management system";
-    license = "GPLv2+";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/os-specific/linux/syslinux/default.nix b/pkgs/os-specific/linux/syslinux/default.nix
index 95f482a82305..734613c44ac8 100644
--- a/pkgs/os-specific/linux/syslinux/default.nix
+++ b/pkgs/os-specific/linux/syslinux/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, nasm, perl, libuuid }:
 
 stdenv.mkDerivation rec {
-  name = "syslinux-4.07";
+  name = "syslinux-6.02";
 
   src = fetchurl {
-    url = "mirror://kernel/linux/utils/boot/syslinux/4.xx/${name}.tar.bz2";
-    sha256 = "0nm0lx45h4c5nxnsr538bvryzvqvj1p1p4vqxzd8nlcv47ja8h0j";
+    url = "mirror://kernel/linux/utils/boot/syslinux/${name}.tar.xz";
+    sha256 = "0y2ld2s64s6vc5pf8rj36w71rq2cfax3c1iafp0w1qbjpxy1p8xg";
   };
 
   patches = [ ./perl-deps.patch ];
@@ -14,15 +14,27 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
-  preBuild =
-    ''
-      substituteInPlace gpxe/src/Makefile.housekeeping --replace /bin/echo $(type -P echo)
-      substituteInPlace gpxe/src/Makefile --replace /usr/bin/perl $(type -P perl)
-      makeFlagsArray=(BINDIR=$out/bin SBINDIR=$out/sbin LIBDIR=$out/lib INCDIR=$out/include DATADIR=$out/share MANDIR=$out/share/man PERL=perl)
-    '';
+  preBuild = ''
+    substituteInPlace Makefile --replace /bin/pwd $(type -P pwd)
+    substituteInPlace gpxe/src/Makefile.housekeeping --replace /bin/echo $(type -P echo)
+    substituteInPlace gpxe/src/Makefile --replace /usr/bin/perl $(type -P perl)
+  '';
 
-  meta = {
+  makeFlags = [
+    "BINDIR=$(out)/bin"
+    "SBINDIR=$(out)/sbin"
+    "LIBDIR=$(out)/lib"
+    "INCDIR=$(out)/include"
+    "DATADIR=$(out)/share"
+    "MANDIR=$(out)/share/man"
+    "PERL=perl"
+    "bios"
+  ];
+
+  meta = with stdenv.lib; {
     homepage = http://www.syslinux.org/;
     description = "A lightweight bootloader";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/servers/etcd/default.nix b/pkgs/servers/etcd/default.nix
new file mode 100644
index 000000000000..1fb21f2b8ab6
--- /dev/null
+++ b/pkgs/servers/etcd/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, go, fetchurl, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  version = "0.4.3";
+  name = "etcd-${version}";
+
+  src = import ./deps.nix {
+    inherit stdenv lib fetchgit fetchhg fetchbzr fetchFromGitHub;
+  };
+
+  buildInputs = [ go ];
+
+  buildPhase = ''
+    export GOPATH=$src
+    go build -v -o etcd github.com/coreos/etcd
+  '';
+
+  installPhase = ''
+    ensureDir $out/bin
+    mv etcd $out/bin/etcd
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A highly-available key value store for shared configuration and service discovery";
+    homepage = http://coreos.com/using-coreos/etcd/;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ cstrahan ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/servers/etcd/deps.nix b/pkgs/servers/etcd/deps.nix
new file mode 100644
index 000000000000..e9fd4a50d3e0
--- /dev/null
+++ b/pkgs/servers/etcd/deps.nix
@@ -0,0 +1,54 @@
+{ stdenv, lib, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+
+let
+  goDeps = [
+    {
+      root = "github.com/coreos/etcd";
+      src = fetchFromGitHub {
+        owner = "coreos";
+        repo = "etcd";
+        rev = "9970141f76241c909977af7bafe7b6f2c4923de8";
+        sha256 = "1bva46gfy4rkfw8k8pb3lsfzfg16csds01f0nvfrkh99pr7sp0sy";
+      };
+    }
+    {
+      root = "github.com/stathat/go";
+      src = fetchFromGitHub {
+        owner = "stathat";
+        repo = "go";
+        rev = "01d012b9ee2ecc107cb28b6dd32d9019ed5c1d77";
+        sha256 = "0mrn70wjfcs4rfkmga3hbfqmbjk33skcsc8pyqxp02bzpwdpc4bi";
+      };
+    }
+    {
+      root = "github.com/stretchr/objx";
+      src = fetchFromGitHub {
+        owner = "stretchr";
+        repo = "objx";
+        rev = "cbeaeb16a013161a98496fad62933b1d21786672";
+        sha256 = "1xn7iibjik77h6h0jilfvcjkkzaqz45baf44p3rb2i03hbmkqkp1";
+      };
+    }
+    {
+      root = "github.com/stretchr/testify";
+      src = fetchFromGitHub {
+        owner = "stretchr";
+        repo = "testify";
+        rev = "3e03dde72495487a4deb74152ac205d0619fbc8d";
+        sha256 = "1xd9sbi6y68cfwkxgybcz0dbfx4r6jmxq51wjj6six3wm9p7m8ls";
+      };
+    }
+  ];
+
+in
+
+stdenv.mkDerivation rec {
+  name = "go-deps";
+
+  buildCommand =
+    lib.concatStrings
+      (map (dep: ''
+              mkdir -p $out/src/`dirname ${dep.root}`
+              ln -s ${dep.src} $out/src/${dep.root}
+            '') goDeps);
+}
diff --git a/pkgs/servers/fleet/default.nix b/pkgs/servers/fleet/default.nix
new file mode 100644
index 000000000000..627c1ff0cf90
--- /dev/null
+++ b/pkgs/servers/fleet/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, go, fetchurl, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  version = "0.5.0";
+  name = "fleet-${version}";
+
+  src = import ./deps.nix {
+    inherit stdenv lib fetchgit fetchhg fetchbzr fetchFromGitHub;
+  };
+
+  buildInputs = [ go ];
+
+  buildPhase = ''
+    export GOPATH=$src
+    go build -v -o fleet github.com/coreos/fleet
+  '';
+
+  installPhase = ''
+    ensureDir $out/bin
+    mv fleet $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A distributed init system";
+    homepage = http://coreos.com/using-coreos/clustering/;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ cstrahan ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/servers/fleet/deps.nix b/pkgs/servers/fleet/deps.nix
new file mode 100644
index 000000000000..d0529db37a2f
--- /dev/null
+++ b/pkgs/servers/fleet/deps.nix
@@ -0,0 +1,81 @@
+{ stdenv, lib, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+
+let
+  goDeps = [
+    {
+      root = "code.google.com/p/gogoprotobuf";
+      src = fetchgit {
+        url = "https://code.google.com/p/gogoprotobuf";
+        rev = "7fd1620f09261338b6b1ca1289ace83aee0ec946";
+        sha256 = "0f13y29zpxkv7b7kwnszygvg04fd5m9r8vpkl1wa3gxnc6az54i9";
+      };
+    }
+    {
+      root = "github.com/coreos/etcd";
+      src = fetchFromGitHub {
+        owner = "coreos";
+        repo = "etcd";
+        rev = "1359d29fa451b059bb76b51260610d92853e7316";
+        sha256 = "0iz3vmf3nfp1i5r8al207wm0jvj68i47a814w90b1jl8g4f2amp7";
+      };
+    }
+    {
+      root = "github.com/coreos/fleet";
+      src = fetchFromGitHub {
+        owner = "coreos";
+        repo = "fleet";
+        rev = "da0a02ed3b07d83b0b542dcdee56e08d2457ab9c";
+        sha256 = "0b8aq4ppyv1fjvf3f2qjq80mvjvf9r104bf4048wgsrs0pccs6s8";
+      };
+    }
+    {
+      root = "github.com/coreos/raft";
+      src = fetchFromGitHub {
+        owner = "coreos";
+        repo = "raft";
+        rev = "67dca7288f1665b59860421673d46314f4348e45";
+        sha256 = "1l27kjkwcxgx89d2m537plagbp1wh6qlzxirza6lliblrgxry6mw";
+      };
+    }
+    {
+      root = "github.com/stathat/go";
+      src = fetchFromGitHub {
+        owner = "stathat";
+        repo = "go";
+        rev = "01d012b9ee2ecc107cb28b6dd32d9019ed5c1d77";
+        sha256 = "0mrn70wjfcs4rfkmga3hbfqmbjk33skcsc8pyqxp02bzpwdpc4bi";
+      };
+    }
+    {
+      root = "github.com/stretchr/objx";
+      src = fetchFromGitHub {
+        owner = "stretchr";
+        repo = "objx";
+        rev = "cbeaeb16a013161a98496fad62933b1d21786672";
+        sha256 = "1xn7iibjik77h6h0jilfvcjkkzaqz45baf44p3rb2i03hbmkqkp1";
+      };
+    }
+    {
+      root = "github.com/stretchr/testify";
+      src = fetchFromGitHub {
+        owner = "stretchr";
+        repo = "testify";
+        rev = "3e03dde72495487a4deb74152ac205d0619fbc8d";
+        sha256 = "1xd9sbi6y68cfwkxgybcz0dbfx4r6jmxq51wjj6six3wm9p7m8ls";
+      };
+    }
+  ];
+
+in
+
+stdenv.mkDerivation rec {
+  name = "go-deps";
+
+  buildCommand =
+    lib.concatStrings
+      (map (dep: ''
+              mkdir -p $out/src/`dirname ${dep.root}`
+              ln -s ${dep.src} $out/src/${dep.root}
+            '') goDeps);
+}
+
diff --git a/pkgs/servers/http/nix-binary-cache/default.nix b/pkgs/servers/http/nix-binary-cache/default.nix
new file mode 100644
index 000000000000..b007c09b0560
--- /dev/null
+++ b/pkgs/servers/http/nix-binary-cache/default.nix
@@ -0,0 +1,61 @@
+{stdenv, fetchurl
+, coreutils, findutils, nix, xz, bzip2, gnused, gnugrep, openssl
+, lighttpd, iproute }:
+stdenv.mkDerivation rec {
+  version = "2014-06-29-1";
+  name = "nix-binary-cache-${version}";
+
+  phases = ["installPhase"];
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    substitute "${./nix-binary-cache.cgi.in}" "$out"/bin/nix-binary-cache.cgi \
+      --replace @out@ "$out/bin" \
+      --replace @shell@ "${stdenv.shell}" \
+      --replace @coreutils@ "${coreutils}/bin" \
+      --replace @findutils@ "${findutils}/bin" \
+      --replace @nix@ "${nix}/bin" \
+      --replace @xz@ "${xz}/bin" \
+      --replace @bzip2@ "${bzip2}/bin" \
+      --replace @gnused@ "${gnused}/bin" \
+      --replace @gnugrep@ "${gnugrep}/bin" \
+      --replace @openssl@ "${openssl}/bin" \
+      --replace @lighttpd@ "${lighttpd}/sbin" \
+      --replace @iproute@ "${iproute}/sbin" \
+      --replace "xXxXx" "xXxXx"
+
+    chmod a+x "$out/bin/nix-binary-cache.cgi"
+
+    substitute "${./nix-binary-cache-start.in}" "$out"/bin/nix-binary-cache-start \
+      --replace @out@ "$out/bin" \
+      --replace @shell@ "${stdenv.shell}" \
+      --replace @coreutils@ "${coreutils}/bin" \
+      --replace @findutils@ "${findutils}/bin" \
+      --replace @nix@ "${nix}/bin" \
+      --replace @xz@ "${xz}/bin" \
+      --replace @bzip2@ "${bzip2}/bin" \
+      --replace @gnused@ "${gnused}/bin" \
+      --replace @gnugrep@ "${gnugrep}/bin" \
+      --replace @openssl@ "${openssl}/bin" \
+      --replace @lighttpd@ "${lighttpd}/sbin" \
+      --replace @iproute@ "${iproute}/sbin" \
+      --replace "xXxXx" "xXxXx"
+
+    chmod a+x "$out/bin/nix-binary-cache-start"
+  '';
+
+  meta = {
+    description = ''A set of scripts to serve the Nix store as a binary cache'';
+    longDescription = ''
+      This package installs a CGI script that serves Nix store path in the 
+      binary cache format. It also installs a launcher called 
+      nix-binary-cache-start that can be run without any setup to launch
+      a binary cache and get the example arguments for its usage.
+    '';
+    maintainers = [stdenv.lib.maintainers.raskin];
+    license = stdenv.lib.licenses.gpl2Plus;
+    inherit version;
+    platforms = stdenv.lib.platforms.all;
+    hydraPlatforms = [];
+  };
+}
diff --git a/pkgs/servers/http/nix-binary-cache/nix-binary-cache-start.in b/pkgs/servers/http/nix-binary-cache/nix-binary-cache-start.in
new file mode 100644
index 000000000000..2a2356f39ab2
--- /dev/null
+++ b/pkgs/servers/http/nix-binary-cache/nix-binary-cache-start.in
@@ -0,0 +1,105 @@
+#! @shell@
+
+parse_opts () {
+  while @coreutils@/test -n "$1" && @coreutils@/test "x$1" != x-- ; do 
+    case "$1" in
+      --store-dir)
+        shift;
+        echo "STORE_DIR='$1'"
+        shift;
+        ;;
+      --priority)
+        shift;
+        echo "PRIORITY=$1";
+        shift;
+        ;;
+      --compression)
+        shift;
+        echo "COMPRESSION=$1";
+        shift;
+        ;;
+      --key)
+        shift;
+        echo "KEY=${1#*:}"
+        echo "KEYNAME=${1%%:*}"
+        shift;
+        ;;
+      --nix-remote)
+        shift;
+        echo "NIX_REMOTE=$1"
+        shift;
+        ;;
+      --mass-query)
+        shift;
+        echo "MASS_QUERY=$1"
+        shift;
+        ;;
+      --port)
+        shift;
+        echo "PORT=$1"
+        shift;
+        ;;
+      --help)
+        cat <<EOF >&2
+"$0": start the Nix binary cache serving the Nix store dynamically.
+
+Recognized options:
+
+--port           server port
+--store-dir      served Nix store
+
+--priority       binary cache priority
+--mass-query     0 or 1 - whether binary cache expects queries for nix-env -qas
+
+--compression    compression to use: bzip2 or xz
+--key            name:/path/to/key - key to use for narinfo signing
+
+--nix-remote     'daemon' or empty string '' - whether to use daemon for store
+                   operations
+
+--help           show help and exit
+EOF
+	exit 1;
+        ;;
+      *) shift ;;
+    esac;
+  done
+}
+
+workingdir="$(@coreutils@/mktemp -d)"
+cd "$workingdir"
+
+PORT=8080
+(echo "STORE_DIR=${NIX_STORE_DIR:-/nix/store}"; parse_opts "$@" 
+  ) > nix-binary-cache.conf || exit
+. "$workingdir/nix-binary-cache.conf"
+
+echo "
+server.port = $PORT
+server.modules = ( \"mod_cgi\", \"mod_setenv\", )
+server.document-root = \"$workingdir\"
+cgi.assign = ( \".cgi\" => \"@shell@\" )
+setenv.add-request-header = ( \"NIX_BINARY_CACHE_CONFIG\" => \"$workingdir/nix-binary-cache.conf\" )
+" > lighttpd.conf
+
+cp @out@/nix-binary-cache.cgi . 
+cp @out@/nix-binary-cache.cgi ./nix-bc.cgi 
+
+ip="$(@iproute@/ip a | @gnugrep@/grep 'inet .* scope global' | @coreutils@/head -n 1)"
+ip="${ip%%/*}"
+ip="${ip##* }"
+
+url="http://$ip:$PORT/nix-bc.cgi?"
+
+echo "Working directory: $workingdir"
+echo
+echo "Address of the binary cache: $url"
+echo
+echo "Usage example: NIX_REMOTE= nix-store --option binary-caches '$url'"
+echo
+echo
+
+@lighttpd@/lighttpd -D -f "$workingdir/lighttpd.conf"
+
+cd /
+@coreutils@/rm -rf "$workingdir"
diff --git a/pkgs/servers/http/nix-binary-cache/nix-binary-cache.cgi.in b/pkgs/servers/http/nix-binary-cache/nix-binary-cache.cgi.in
new file mode 100644
index 000000000000..219ab9763ada
--- /dev/null
+++ b/pkgs/servers/http/nix-binary-cache/nix-binary-cache.cgi.in
@@ -0,0 +1,97 @@
+#! @shell@
+
+STORE_DIR="${NIX_STORE_DIR:-/nix/store}"
+MASS_QUERY=0
+PRIORITY=75
+COMPRESSION=bzip2
+KEY=
+KEYNAME=na
+
+export NIX_REMOTE=daemon
+
+config="${NIX_BINARY_CACHE_CONFIG:-${HTTP_NIX_BINARY_CACHE_CONFIG:-/etc/nix/nix-binary-cache.cgi.conf}}"
+config="$(cd "$(@coreutils@/dirname "$config")"; 
+  @coreutils@/pwd)/$(@coreutils@/basename "$config")"
+@coreutils@/test -e "$config" && . "$config"
+
+header(){
+	echo "Content-Type: text/plain; charset=utf-8"
+	echo 
+}
+
+clean_path() {
+	@gnused@/sed -re "s@^$STORE_DIR/?@@" | @findutils@/xargs
+}
+
+storeq(){
+	@nix@/nix-store -q "$@"
+}
+
+sign(){
+	test -n "$1" && 
+	  @coreutils@/sha256sum | @gnused@/sed -e 's/ .*//' | 
+	  @openssl@/openssl rsautl -sign -inkey "$@" | @coreutils@/base64 -w 0
+}
+
+case "$QUERY_STRING" in 
+	"")
+		header
+		echo "Hello, this is a dynamically-generated Nix binary cache"
+		;;
+	/debug)
+		header
+		set
+		;;
+	/nix-cache-info)
+		header
+		echo "StoreDir: $STORE_DIR"
+		echo "WantMassQuery: $MASS_QUERY"
+		echo "Priority: $PRIORITY"
+		;;
+	*.narinfo)
+		hash=${QUERY_STRING%.narinfo}
+		hash=${hash#/}
+		path="$(echo "$STORE_DIR/$hash-"* )"
+		if [ -n "$path" ] && [ -e "$path" ]; then
+			header
+			info="$(
+			echo "StorePath: $path"
+			echo "URL: $(@coreutils@/basename "$path"
+			  ).nar.$COMPRESSION"
+			echo "Compression: $COMPRESSION"
+			echo "NarHash: $(storeq --hash "$path")"
+			echo "NarSize: $(storeq --size "$path")"
+			echo "References: $(storeq --references "$path" | 
+			  @coreutils@/tac | clean_path )"
+			echo "Deriver: $(storeq --deriver "$path" | 
+			  clean_path )"
+			)"
+			signature="$(echo "$info" | sign "$KEY")"
+
+			echo "$info"
+			echo "Signature: 1;$KEYNAME;$signature"
+
+		else
+			exit 1
+		fi
+		;;
+	*.nar.xz)
+		path="$STORE_DIR${QUERY_STRING%.nar.xz}"
+		if [ -n "$path" ] && [ -e "$path" ]; then
+			header
+			@nix@/nix-store --dump "$path" | @xz@/xz
+		else
+			exit 1
+		fi
+		;;
+	*.nar.bzip2)
+		path="$STORE_DIR${QUERY_STRING%.nar.bzip2}"
+		echo "$path" >&2;
+		if [ -n "$path" ] && [ -e "$path" ]; then
+			header
+			@nix@/nix-store --dump "$path" | @bzip2@/bzip2
+		else
+			exit 1
+		fi
+		;;
+esac
diff --git a/pkgs/servers/nsq/default.nix b/pkgs/servers/nsq/default.nix
new file mode 100644
index 000000000000..b1570d96c7b6
--- /dev/null
+++ b/pkgs/servers/nsq/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, lib, go, fetchurl, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  version = "0.2.28";
+  name = "nsq-${version}";
+
+  src = import ./deps.nix {
+    inherit stdenv lib fetchgit fetchhg fetchbzr fetchFromGitHub;
+  };
+
+  buildInputs = [ go ];
+
+  buildPhase = ''
+    export GOPATH=$src
+    apps=(nsq_pubsub nsq_stat nsq_tail nsq_to_file nsq_to_http nsq_to_nsq nsqd nsqlookupd)
+
+    mkdir build
+
+    go build -v -o build/nsqadmin github.com/bitly/nsq/nsqadmin
+    for app in "''${apps[@]}"; do
+      go build -v -o build/$app github.com/bitly/nsq/apps/$app
+    done
+  '';
+
+  installPhase = ''
+    ensureDir $out/bin
+    mv build/* $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A realtime distributed messaging platform";
+    homepage = http://nsq.io/;
+    license = licenses.mit;
+    maintainers = with maintainers; [ cstrahan ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/servers/nsq/deps.nix b/pkgs/servers/nsq/deps.nix
new file mode 100644
index 000000000000..bd98357ece62
--- /dev/null
+++ b/pkgs/servers/nsq/deps.nix
@@ -0,0 +1,134 @@
+{ stdenv, lib, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+
+let
+  goDeps = [
+    {
+      root = "code.google.com/p/snappy-go";
+      src = fetchhg {
+        url = "http://code.google.com/p/snappy-go";
+        rev = "14";
+        sha256 = "0ywa52kcii8g2a9lbqcx8ghdf6y56lqq96sl5nl9p6h74rdvmjr7";
+      };
+    }
+    {
+      root = "github.com/BurntSushi/toml";
+      src = fetchFromGitHub {
+        owner = "BurntSushi";
+        repo = "toml";
+        rev = "f87ce853111478914f0bcffa34d43a93643e6eda";
+        sha256 = "0g8203y9ycf34j2q3ymxb8nh4habgwdrjn9vdgrginllx73yq565";
+      };
+    }
+    {
+      root = "github.com/bitly/go-hostpool";
+      src = fetchFromGitHub {
+        owner = "bitly";
+        repo = "go-hostpool";
+        rev = "fed86fae5cacdc77e7399937e2f8836563620a2e";
+        sha256 = "0nbssfp5ksj4hhc0d8lfq54afd9nqv6qzk3vi6rinxr3fgplrj44";
+      };
+    }
+    {
+      root = "github.com/bitly/go-nsq";
+      src = fetchFromGitHub {
+        owner = "bitly";
+        repo = "go-nsq";
+        rev = "c79a282f05364e340eadc2ce2f862a3d44eea9c0";
+        sha256 = "19jlwj5419p5xwjzfnzlddjnbh5g7ifnqhd00i5p0b6ww1gk011p";
+      };
+    }
+    {
+      root = "github.com/bitly/go-simplejson";
+      src = fetchFromGitHub {
+        owner = "bitly";
+        repo = "go-simplejson";
+        rev = "1cfceb0e12f47ec02665ef480212d7b531d6f4c5";
+        sha256 = "1d8x0himl58qn87lv418djy6mbs66p9ai3zpqq13nhkfl67fj3bi";
+      };
+    }
+    {
+      root = "github.com/bitly/nsq";
+      src = fetchFromGitHub {
+        owner = "bitly";
+        repo = "nsq";
+        rev = "048691a8242c9ec224fc46bf7d05f321026b69f8";
+        sha256 = "0drmf1j5w3q4l6f7xjy3y7d7cl50gcx0qwci6mahxsyaaclx60yx";
+      };
+    }
+    {
+      root = "github.com/bmizerany/assert";
+      src = fetchFromGitHub {
+        owner = "bmizerany";
+        repo = "assert";
+        rev = "e17e99893cb6509f428e1728281c2ad60a6b31e3";
+        sha256 = "1lfrvqqmb09y6pcr76yjv4r84cshkd4s7fpmiy7268kfi2cvqnpc";
+      };
+    }
+    {
+      root = "github.com/bmizerany/perks";
+      src = fetchFromGitHub {
+        owner = "bmizerany";
+        repo = "perks";
+        rev = "aac9e2eab5a334037057336897fd10b0289a5ae8";
+        sha256 = "1d027jgc327qz5xmal0hrpqvsj45i9yqmm9pxk3xp3hancvz3l3k";
+      };
+    }
+    {
+      root = "github.com/kr/pretty";
+      src = fetchFromGitHub {
+        owner = "kr";
+        repo = "pretty";
+        rev = "bc9499caa0f45ee5edb2f0209fbd61fbf3d9018f";
+        sha256 = "1m61y592qsnwsqn76v54mm6h2pcvh4wlzbzscc1ag645x0j33vvl";
+      };
+    }
+    {
+      root = "github.com/kr/pty";
+      src = fetchFromGitHub {
+        owner = "kr";
+        repo = "pty";
+        rev = "67e2db24c831afa6c64fc17b4a143390674365ef";
+        sha256 = "1l3z3wbb112ar9br44m8g838z0pq2gfxcp5s3ka0xvm1hjvanw2d";
+      };
+    }
+    {
+      root = "github.com/kr/text";
+      src = fetchFromGitHub {
+        owner = "kr";
+        repo = "text";
+        rev = "6807e777504f54ad073ecef66747de158294b639";
+        sha256 = "1wkszsg08zar3wgspl9sc8bdsngiwdqmg3ws4y0bh02sjx5a4698";
+      };
+    }
+    {
+      root = "github.com/mreiferson/go-options";
+      src = fetchFromGitHub {
+        owner = "mreiferson";
+        repo = "go-options";
+        rev = "896a539cd709f4f39d787562d1583c016ce7517e";
+        sha256 = "0hg0n5grcjcj5719rqchz0plp39wfk3znqxw8y354k4jwsqwmn17";
+      };
+    }
+    {
+      root = "github.com/mreiferson/go-snappystream";
+      src = fetchFromGitHub {
+        owner = "mreiferson";
+        repo = "go-snappystream";
+        rev = "97c96e6648e99c2ce4fe7d169aa3f7368204e04d";
+        sha256 = "08ylvx9r6b1fi76v6cqjvny4yqsvcqjfsg93jdrgs7hi4mxvxynn";
+      };
+    }
+  ];
+
+in
+
+stdenv.mkDerivation rec {
+  name = "go-deps";
+
+  buildCommand =
+    lib.concatStrings
+      (map (dep: ''
+              mkdir -p $out/src/`dirname ${dep.root}`
+              ln -s ${dep.src} $out/src/${dep.root}
+            '') goDeps);
+}
diff --git a/pkgs/servers/restund/default.nix b/pkgs/servers/restund/default.nix
index e817151e778d..d6952e9700ee 100644
--- a/pkgs/servers/restund/default.nix
+++ b/pkgs/servers/restund/default.nix
@@ -24,5 +24,9 @@ stdenv.mkDerivation rec {
     platforms = with stdenv.lib.platforms; linux;
     maintainers = with stdenv.lib.maintainers; [raskin];
     license = with stdenv.lib.licenses; bsd3;
+    inherit version;
+    downloadPage = "http://www.creytiv.com/pub/";
+    updateWalker = true;
+    downloadURLRegexp = "/restund-.*[.]tar[.]";
   };
 }
diff --git a/pkgs/servers/samba/default.nix b/pkgs/servers/samba/default.nix
index ade79e2c99cd..08f12d975062 100644
--- a/pkgs/servers/samba/default.nix
+++ b/pkgs/servers/samba/default.nix
@@ -18,11 +18,11 @@
 assert useKerberos -> kerberos != null;
 
 stdenv.mkDerivation rec {
-  name = "samba-3.6.22";
+  name = "samba-3.6.24";
 
   src = fetchurl {
-    url = "http://us3.samba.org/samba/ftp/stable/${name}.tar.gz";
-    sha256 = "1sny3irf1p4fjli5qa29swr3l217grg90cva35rmay48fw7g5g9h";
+    url = "http://samba.org/samba/ftp/stable/${name}.tar.gz";
+    sha256 = "19rln8m1k359bz6dhmlv39kzyjg7p296dz4y4mq1jwrlnw2bvl0i";
   };
 
   buildInputs = [ readline pam openldap popt iniparser libunwind fam acl cups ]
diff --git a/pkgs/servers/serfdom/default.nix b/pkgs/servers/serfdom/default.nix
index 9274ba86a707..2c11372ee316 100644
--- a/pkgs/servers/serfdom/default.nix
+++ b/pkgs/servers/serfdom/default.nix
@@ -1,126 +1,30 @@
-{ stdenv, fetchurl, fetchgit, fetchhg, go, lib }:
+{ stdenv, lib, go, fetchurl, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
 
-let
-  goDeps = [
-    {
-      dir     = "github.com/hashicorp";
-      name    = "serf";
-      rev     = "c5b41a9d1d261135117a8d501d3293efade3cc74";
-      sha256  = "a314d3c13fb370842a8f7c6650abfa907b51172a09c64f9184a240fab05b43df";
-      fetcher = git;
-    }
-    {
-      dir     = "github.com/armon";
-      name    = "go-metrics";
-      rev     = "e12c3591b520e819e8234bd585d592774f2b2ad5";
-      sha256  = "79476efefb68876fcad7e71e76d95f4a7eece2cfcdc5a9c10f998af3178230ba";
-      fetcher = git;
-    }
-    {
-      dir     = "github.com/hashicorp";
-      name    = "logutils";
-      rev     = "8e0820fe7ac5eb2b01626b1d99df47c5449eb2d8";
-      sha256  = "184lnn7x1v3xvj6zz1rg9s0252wkkd59kij2iyrrm7y80bym2jys";
-      fetcher = git;
-    }
-    {
-      dir     = "github.com/hashicorp";
-      name    = "memberlist";
-      rev     = "d5be01d1f4d75b086eba4ae808f2767c08cbbf73";
-      sha256  = "4ab2b610d439e96c169d9caf9ac0e009d71d3ef9a2fd2c812870b71eb6b27dfc";
-      fetcher = git;
-    }
-    {
-      dir     = "github.com/ugorji";
-      name    = "go";
-      rev     = "71c2886f5a673a35f909803f38ece5810165097b";
-      sha256  = "128853bcc5f114c300772cbce316b55e84206fa56705c5b9cc94c1693b11ee94";
-      fetcher = git;
-    }
-    {
-      dir     = "github.com/mitchellh";
-      name    = "cli";
-      rev     = "69f0b65ce53b27f729b1b807b88dc88007f41dd3";
-      sha256  = "0hnnqd8vg5ca2hglkrj141ba2akdh7crl2lsrgz8d6ipw6asszx3";
-      fetcher = git;
-    }
-    {
-      dir     = "github.com/armon";
-      name    = "mdns";
-      rev     = "8be7e3ac4e941555169a99d01abcabd3c982d87a";
-      sha256  = "87cd3a0ada3b094ee8fc4c4742158e0d051cde893da1ea320158a47d6254f69d";
-      fetcher = git;
-    }
-    {
-      dir     = "github.com/miekg";
-      name    = "dns";
-      rev     = "7ebb4c59b39d5984952a355086606dd91f6cfe86";
-      sha256  = "8418ad2d27e607cef1dc0003471416294443e467f2de9df135e3a2ab411e2512";
-      fetcher = git;
-    }
-    {
-      dir     = "github.com/mitchellh";
-      name    = "mapstructure";
-      rev     = "57bb2fa7a7e00b26c80e4c4b0d4f15a210d94039";
-      sha256  = "13lvd5vw8y6h5zl3samkrb7237kk778cky7k7ys1cm46mfd957zy";
-      fetcher = git;
-    }
-    {
-      dir     = "github.com/ryanuber";
-      name    = "columnize";
-      rev     = "d066e113d6e13232f45bda646a915dffeee7f1a4";
-      sha256  = "2aaec396a223fc4b45117a595e74c0a874bd5cd9604c742b8c4747436b4721e9";
-      fetcher = git;
-    }
-    {
-      dir     = "code.google.com/p";
-      name    = "go.net";
-      rev     = "89dbba2db2d4";
-      sha256  = "0168inai10nkdrz4g0rjlj8b5v34mv135v8bhyvh501vnqql50jn";
-      fetcher = hg;
-    }
-  ];
-  git = desc: fetchgit { url = "https://${desc.dir}/${desc.name}";
-                         inherit (desc) rev sha256; };
-  hg = desc: fetchhg { url = "https://${desc.dir}/${desc.name}";
-                       tag = desc.rev;
-                       inherit (desc) sha256; };
-  createGoPathCmds =
-    lib.concatStrings
-      (map (desc:
-            let fetched = desc.fetcher desc; in ''
-              mkdir -p $GOPATH/src/${desc.dir}
-              ln -s ${fetched} $GOPATH/src/${desc.dir}/${desc.name}
-            '') goDeps);
-in
-  stdenv.mkDerivation rec {
-    version = "0.5.0";
-    name = "serfdom-${version}";
+stdenv.mkDerivation rec {
+  version = "0.6.2";
+  name = "serfdom-${version}";
 
-    src = fetchurl {
-      url = "https://github.com/hashicorp/serf/archive/v${version}.tar.gz";
-      sha256 = "1p2cpkdx0gck1ypxc98im7gsv3275avpkizhsif3nxvl1xd8g1qp";
-    };
+  src = import ./deps.nix {
+    inherit stdenv lib fetchgit fetchhg fetchbzr fetchFromGitHub;
+  };
 
-    buildInputs = [ go ];
+  buildInputs = [ go ];
 
-    buildPhase = ''
-      mkdir $TMPDIR/go
-      export GOPATH=$TMPDIR/go
-      ${createGoPathCmds}
-      go build -v -o bin/serf
-    '';
+  buildPhase = ''
+    export GOPATH=$src
+    go build -v -o serf github.com/hashicorp/serf
+  '';
 
-    installPhase = ''
-      mkdir -p $out/bin
-      cp bin/serf $out/bin
-    '';
+  installPhase = ''
+    mkdir -p $out/bin
+    mv serf $out/bin/serf
+  '';
 
-    meta = with stdenv.lib; {
-      description = "Serf is a service discovery and orchestration tool that is decentralized, highly available, and fault tolerant";
-      homepage = http://www.serfdom.io/;
-      license = licenses.mpl20;
-      maintainers = [ maintainers.msackman ];
-      platforms = platforms.linux;
-    };
-  }
+  meta = with stdenv.lib; {
+    description = "A service discovery and orchestration tool that is decentralized, highly available, and fault tolerant";
+    homepage = http://www.serfdom.io/;
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ msackman cstrahan ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/servers/serfdom/deps.nix b/pkgs/servers/serfdom/deps.nix
new file mode 100644
index 000000000000..b933c6088244
--- /dev/null
+++ b/pkgs/servers/serfdom/deps.nix
@@ -0,0 +1,185 @@
+{ stdenv, lib, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+
+let
+  goDeps = [
+    {
+      root = "code.google.com/p/go.net";
+      src = fetchhg {
+        url = "http://code.google.com/p/go.net";
+        rev = "134";
+        sha256 = "1jycpgrfwgkfac60zjbx6babcz7sgyn9xgy6cr3l811j6k8r2pbv";
+      };
+    }
+    {
+      root = "code.google.com/p/go.text";
+      src = fetchhg {
+        url = "http://code.google.com/p/go.text";
+        rev = "85";
+        sha256 = "1x8h6vq9g5gbi7iiwla6dkaaqqf7wmkdm4szj7wvzlsijf2x8dwr";
+      };
+    }
+    {
+      root = "github.com/armon/circbuf";
+      src = fetchFromGitHub {
+        owner = "armon";
+        repo = "circbuf";
+        rev = "f092b4f207b6e5cce0569056fba9e1a2735cb6cf";
+        sha256 = "06kwwdwa3hskdh6ws7clj1vim80dyc3ldim8k9y5qpd30x0avn5s";
+      };
+    }
+    {
+      root = "github.com/armon/go-metrics";
+      src = fetchFromGitHub {
+        owner = "armon";
+        repo = "go-metrics";
+        rev = "02567bbc4f518a43853d262b651a3c8257c3f141";
+        sha256 = "08fk3zmw0ywmdfp2qhrpv0vrk1y97hzqczrgr3y2yip3x8sr37ar";
+      };
+    }
+    {
+      root = "github.com/armon/mdns";
+      src = fetchFromGitHub {
+        owner = "armon";
+        repo = "mdns";
+        rev = "70462deb060d44247356ee238ebafd7699ddcffe";
+        sha256 = "0xkm3d0hsixdm1yrkx9c39723kfjkb3wvrzrmx3np9ylcwn6h5p5";
+      };
+    }
+    {
+      root = "github.com/hashicorp/go-syslog";
+      src = fetchFromGitHub {
+        owner = "hashicorp";
+        repo = "go-syslog";
+        rev = "ac3963b72ac367e48b1e68a831e62b93fb69091c";
+        sha256 = "1r9s1gsa4azcs05gx1179ixk7qvrkrik3v92wr4s8gwm00m0gf81";
+      };
+    }
+    {
+      root = "github.com/hashicorp/logutils";
+      src = fetchFromGitHub {
+        owner = "hashicorp";
+        repo = "logutils";
+        rev = "8e0820fe7ac5eb2b01626b1d99df47c5449eb2d8";
+        sha256 = "033rbkc066g657r0dnzysigjz2bs4biiz0kmiypd139d34jvslwz";
+      };
+    }
+    {
+      root = "github.com/hashicorp/memberlist";
+      src = fetchFromGitHub {
+        owner = "hashicorp";
+        repo = "memberlist";
+        rev = "17d39b695094be943bfb98442a80b082e6b9ac47";
+        sha256 = "0nvgjnwmfqhv2wvr77d2q5mq1bfw4xbpil6wgyj4fyrmhsfzrv3g";
+      };
+    }
+    {
+      root = "github.com/hashicorp/serf";
+      src = fetchFromGitHub {
+        owner = "hashicorp";
+        repo = "serf";
+        rev = "4232a3f7b52f755084caf6b2cc2789efa2948555";
+        sha256 = "1hxxqrjz08882d205ylakhvvwciahiqdzkwi2a7zwrmx6sxna7sr";
+      };
+    }
+    {
+      root = "github.com/miekg/dns";
+      src = fetchFromGitHub {
+        owner = "miekg";
+        repo = "dns";
+        rev = "fc67c4b981930a377f8a26a5a1f2c0ccd5dd1514";
+        sha256 = "1csjmkx0gl34r4hmkhdbdxb0693f1p10yrjaj8f2jwli9p9sl4mg";
+      };
+    }
+    {
+      root = "github.com/mitchellh/cli";
+      src = fetchFromGitHub {
+        owner = "mitchellh";
+        repo = "cli";
+        rev = "8262fe3f76f0da53b5674eb35c8c6436430794c3";
+        sha256 = "0pqkxh1q49kkxihggrfjs8174d927g4c5qqx00ggw8sqqsgrw6vn";
+      };
+    }
+    {
+      root = "github.com/mitchellh/mapstructure";
+      src = fetchFromGitHub {
+        owner = "mitchellh";
+        repo = "mapstructure";
+        rev = "6fb2c832bcac61d01212ab1d172f7a14a8585b07";
+        sha256 = "0mx855lwhv0rk461wmbnbzbpkhmq5p2ipmrm5bhzimagrr1w17hw";
+      };
+    }
+    {
+      root = "github.com/ryanuber/columnize";
+      src = fetchFromGitHub {
+        owner = "ryanuber";
+        repo = "columnize";
+        rev = "785d943a7b6886e0bb2f139a60487b823dd8d9de";
+        sha256 = "1h3sxzhiwz65vf3cvclirlf6zhdr97v01dpn5cmf3m09rxxpnp3f";
+      };
+    }
+    {
+      root = "github.com/ugorji/go";
+      src = fetchFromGitHub {
+        owner = "ugorji";
+        repo = "go";
+        rev = "71c2886f5a673a35f909803f38ece5810165097b";
+        sha256 = "157f24xnkhclrjwwa1b7lmpj112ynlbf7g1cfw0c657iqny5720j";
+      };
+    }
+    {
+      root = "github.com/ugorji/go-msgpack";
+      src = fetchFromGitHub {
+        owner = "ugorji";
+        repo = "go-msgpack";
+        rev = "75092644046c5e38257395b86ed26c702dc95b92";
+        sha256 = "1bmqi16bfiqw7qhb3d5hbh0dfzhx2bbq1g15nh2pxwxckwh80x98";
+      };
+    }
+    {
+      root = "github.com/vmihailenco/bufio";
+      src = fetchFromGitHub {
+        owner = "vmihailenco";
+        repo = "bufio";
+        rev = "24e7e48f60fc2d9e99e43c07485d9fff42051e66";
+        sha256 = "0x46qnf2f15v7m0j2dcb16raxjamk5rdc7hqwgyxfr1sqmmw3983";
+      };
+    }
+    {
+      root = "github.com/vmihailenco/msgpack";
+      src = fetchFromGitHub {
+        owner = "vmihailenco";
+        repo = "msgpack";
+        rev = "20c1b88a6c7fc5432037439f4e8c582e236fb205";
+        sha256 = "1dj5scpfhgnw0yrh0w6jlrb9d03halvsv4l3wgjhazrrimdqf0q0";
+      };
+    }
+    {
+      root = "launchpad.net/gocheck";
+      src = fetchbzr {
+        url = "https://launchpad.net/gocheck";
+        rev = "87";
+        sha256 = "1y9fa2mv61if51gpik9isls48idsdz87zkm1p3my7swjdix7fcl0";
+      };
+    }
+    {
+      root = "launchpad.net/mgo";
+      src = fetchbzr {
+        url = "https://launchpad.net/mgo";
+        rev = "2";
+        sha256 = "0h1dxzyx5c4r4gfnmjxv92hlhjxrgx9p4g53p4fhmz6x2fdglb0x";
+      };
+    }
+  ];
+
+in
+
+stdenv.mkDerivation rec {
+  name = "go-deps";
+
+  buildCommand =
+    lib.concatStrings
+      (map (dep: ''
+              mkdir -p $out/src/`dirname ${dep.root}`
+              ln -s ${dep.src} $out/src/${dep.root}
+            '') goDeps);
+}
diff --git a/pkgs/shells/fish/default.nix b/pkgs/shells/fish/default.nix
index e69c033cf404..adfe44b3bac1 100644
--- a/pkgs/shells/fish/default.nix
+++ b/pkgs/shells/fish/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ncurses, python27, which, groff, gettext, man_db, bc }:
+{ stdenv, fetchurl, ncurses, python, which, groff, gettext, man_db, bc }:
 
 stdenv.mkDerivation rec {
   name = "fish-${version}";
@@ -12,8 +12,8 @@ stdenv.mkDerivation rec {
   buildInputs = [ ncurses ];
 
   # Required binaries during execution
-  # Python27: Autocompletion generated from manpages and config editing
-  propagatedBuildInputs = [ python27 which groff gettext man_db bc ];
+  # Python: Autocompletion generated from manpages and config editing
+  propagatedBuildInputs = [ python which groff gettext man_db bc ];
 
   postInstall = ''
     sed -i "s|bc|${bc}/bin/bc|" "$out/share/fish/functions/seq.fish"
diff --git a/pkgs/tools/filesystems/ceph/default.nix b/pkgs/tools/filesystems/ceph/default.nix
new file mode 100644
index 000000000000..7a8b85a8945f
--- /dev/null
+++ b/pkgs/tools/filesystems/ceph/default.nix
@@ -0,0 +1,37 @@
+{stdenv, fetchgit, libatomic_ops, autoconf, automake, boost, btrfsProgs, cryptopp, curl, expat,
+ fcgi, fuse, gperftools, keyutils, leveldb, libaio, libedit, libtool,
+ libuuid, linuxHeaders, openssl, pkgconfig, python, snappy, which, xfsprogs, xz}:
+
+stdenv.mkDerivation rec {
+  baseName="ceph";
+  version="0.79";
+  name="${baseName}-${version}";
+  buildInputs = [
+    fuse linuxHeaders pkgconfig libatomic_ops autoconf automake boost btrfsProgs cryptopp expat
+    fcgi fuse gperftools keyutils leveldb libaio libedit libtool libuuid openssl pkgconfig
+    python snappy which xfsprogs.lib xz
+  ];
+
+  preConfigure = ''
+    ./autogen.sh
+  '';
+
+  installFlags = "DESTDIR=\${out}";
+
+  enableParallelBuilding = true;
+  src = fetchgit {
+    url = "https://github.com/ceph/ceph";
+    rev = "4c2d73a5095f527c3a2168deb5fa54b3c8991a6e";
+    sha256 = "0850m817wqqmw2qdnwm5jvbdgifzlc7kcd05jv526pdvmq1x92rf";
+  };
+
+  meta = {
+    inherit version;
+    description = "Distributed storage system";
+    maintainers = [
+      stdenv.lib.maintainers.ak
+    ];
+    platforms = with stdenv.lib.platforms; 
+      linux;
+  };
+}
diff --git a/pkgs/tools/filesystems/xfsprogs/default.nix b/pkgs/tools/filesystems/xfsprogs/default.nix
index 400890e95f30..7c9cd05009d6 100644
--- a/pkgs/tools/filesystems/xfsprogs/default.nix
+++ b/pkgs/tools/filesystems/xfsprogs/default.nix
@@ -12,11 +12,26 @@ stdenv.mkDerivation rec {
     sed -i s,/bin/bash,`type -P bash`, install-sh
   '';
 
+  outputs = ["out" "lib"];
+
+  postInstall = ''
+    (cd include; make install-dev)
+    # The make install-dev target is broken when --disable-shared
+    mkdir -p $lib/lib $lib/include
+    cp ./libhandle/.libs/libhandle.a \
+       ./libxcmd/.libs/libxcmd.a \
+       ./libxlog/.libs/libxlog.a \
+       ./libxfs/.libs/libxfs.a $lib/lib
+    mv $out/include/* $lib/include
+  '';
+
+  enableParallelBuilding = true;
+
   buildInputs = [ libtool gettext libuuid ];
 
   configureFlags = "MAKE=make MSGFMT=msgfmt MSGMERGE=msgmerge XGETTEXT=xgettext ZIP=gzip AWK=gawk --disable-shared";
   preConfigure = ''
-    configureFlags="$configureFlags root_sbindir=$out/sbin root_libdir=$out/lib"
+    configureFlags="$configureFlags root_sbindir=$out/sbin root_libdir=$lib/lib"
   '';
   disableStatic = false;
 
diff --git a/pkgs/tools/graphics/povray/default.nix b/pkgs/tools/graphics/povray/default.nix
index 12f307ca9def..6272bdae7803 100644
--- a/pkgs/tools/graphics/povray/default.nix
+++ b/pkgs/tools/graphics/povray/default.nix
@@ -4,8 +4,8 @@ stdenv.mkDerivation {
   name = "povray-3.6";
 
   src = fetchurl {
-    url = http://www.povray.org/redirect/www.povray.org/ftp/pub/povray/Official/Unix/povray-3.6.tar.bz2;
-    sha256 = "0wvsfgkybx28mj2p76nnsq9rdq50192g5qb7d0xk81s8skn7z2jf";
+    url = http://www.povray.org/ftp/pub/povray/Old-Versions/Official-3.62/Unix/povray-3.6.tar.bz2;
+    sha256 = "4e8a7fecd44807343b6867e1f2440aa0e09613d6d69a7385ac48f4e5e7737a73";
   };
 
   # the installPhase wants to put files into $HOME. I let it put the files
diff --git a/pkgs/tools/misc/gummiboot/default.nix b/pkgs/tools/misc/gummiboot/default.nix
index 502d9044c5d1..2d0b0015f9dc 100644
--- a/pkgs/tools/misc/gummiboot/default.nix
+++ b/pkgs/tools/misc/gummiboot/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, gnu-efi, unzip, pkgconfig, utillinux, libxslt, docbook_xsl, docbook_xml_dtd_42 }:
 
 stdenv.mkDerivation rec {
-  name = "gummiboot-43";
+  name = "gummiboot-45";
 
   buildInputs = [ gnu-efi pkgconfig libxslt utillinux ];
 
@@ -13,8 +13,8 @@ stdenv.mkDerivation rec {
   ];
 
   src = fetchurl {
-    url = http://pkgs.fedoraproject.org/repo/pkgs/gummiboot/gummiboot-43.tar.xz/c9b46a3504a2f7e335404a1475818d98/gummiboot-43.tar.xz;
-    sha256 = "1hwaan3985ap9r5ncf9bykbaixbm0xn4x09silssngwfl2srn4iv";
+    url = http://pkgs.fedoraproject.org/repo/pkgs/gummiboot/gummiboot-45.tar.xz/5d4957390e959cb9f325b87712ddd3f1/gummiboot-45.tar.xz;
+    md5 = "5d4957390e959cb9f325b87712ddd3f1";
   };
 
   meta = {
diff --git a/pkgs/tools/misc/ngrok/default.nix b/pkgs/tools/misc/ngrok/default.nix
index e517dba7c550..6435923b48a7 100644
--- a/pkgs/tools/misc/ngrok/default.nix
+++ b/pkgs/tools/misc/ngrok/default.nix
@@ -30,16 +30,16 @@ let
     url = "https://launchpad.net/goyaml";
     sha256 = "03is37cgw62cha316xrs5h7q97im46ry5qldkfvbhimjq3ww0swj";
     # Branch: "branch:lp:goyaml"
-    revision = 47;
+    rev = 47;
   };
   log4go = fetchhg {
     url = "https://code.google.com/p/log4go/";
-    tag = "c3294304d93f";
+    rev = "c3294304d93f";
     sha256 = "0q906sxrmwir295virfibqvdzlaj340qh2r4ysx1ccjrjazc0q5p";
   };
   osext = fetchhg {
     url = "https://bitbucket.org/kardianos/osext";
-    tag = "364fb57";
+    rev = "364fb57";
     sha256 = "1w9x2zj716agfd5x5497ajb9nz3ljar74768vjidsyly143vzjws";
   };
 in stdenv.mkDerivation rec {
diff --git a/pkgs/tools/networking/network-manager-applet/default.nix b/pkgs/tools/networking/network-manager-applet/default.nix
index 352a908c1d7e..850981c5d338 100644
--- a/pkgs/tools/networking/network-manager-applet/default.nix
+++ b/pkgs/tools/networking/network-manager-applet/default.nix
@@ -2,7 +2,7 @@
 , libnotify, libsecret, dbus_glib, polkit, isocodes, libgnome_keyring 
 , mobile_broadband_provider_info, glib_networking, gsettings_desktop_schemas
 , makeWrapper, networkmanager_openvpn, networkmanager_vpnc
-, networkmanager_openconnect, networkmanager_pptp, udev, hicolor_icon_theme }:
+, networkmanager_openconnect, networkmanager_pptp, udev, hicolor_icon_theme, dconf }:
 
 let
   pn = "network-manager-applet";
@@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
 
   preFixup = ''
     wrapProgram "$out/bin/nm-applet" \
-      --prefix GIO_EXTRA_MODULES : "${glib_networking}/lib/gio/modules" \
+      --prefix GIO_EXTRA_MODULES : "${glib_networking}/lib/gio/modules:${dconf}/lib/gio/modules" \
       --prefix XDG_DATA_DIRS : "${gnome3.gtk}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" \
       --set GCONF_CONFIG_SOURCE "xml::~/.gconf" \
       --prefix PATH ":" "${gnome3.gconf}/bin"
diff --git a/pkgs/tools/package-management/cabal-install/1.20.0.2.nix b/pkgs/tools/package-management/cabal-install/1.20.0.3.nix
index dba92ab9321b..ffcaee203b7d 100644
--- a/pkgs/tools/package-management/cabal-install/1.20.0.2.nix
+++ b/pkgs/tools/package-management/cabal-install/1.20.0.3.nix
@@ -5,8 +5,8 @@
 
 cabal.mkDerivation (self: {
   pname = "cabal-install";
-  version = "1.20.0.2";
-  sha256 = "1nsc8qklhlg2xpaj7k158gg45rlrp7mn15zyfsgjpaqf3rjm9dl4";
+  version = "1.20.0.3";
+  sha256 = "050b9dc4khfc1fs283p1635zni25z4b55gi5ffwvg4mfpkrmdgfj";
   isLibrary = false;
   isExecutable = true;
   buildDepends = [
diff --git a/pkgs/tools/package-management/nix-prefetch-scripts/default.nix b/pkgs/tools/package-management/nix-prefetch-scripts/default.nix
index d7210b2f616b..84439136d49e 100644
--- a/pkgs/tools/package-management/nix-prefetch-scripts/default.nix
+++ b/pkgs/tools/package-management/nix-prefetch-scripts/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, makeWrapper, git, subversion, mercurial, bazaar, cvs }:
+{ stdenv, makeWrapper, git, subversion, mercurial, bazaar, cvs, unzip, curl, gnused }:
 
 stdenv.mkDerivation {
   name = "nix-prefetch-scripts";
@@ -11,9 +11,13 @@ stdenv.mkDerivation {
     function copyScript {
       local name=nix-prefetch-$1;
       local src=$2;
-      local exe=$3/bin;
+      local wrapArgs=""
       cp $src $out/bin/$name;
-      wrapProgram $out/bin/$name --suffix PATH : "$exe"
+      for dep in ''${@:3}; do
+        wrapArgs="$wrapArgs --prefix PATH : $dep/bin"
+      done
+      wrapArgs="$wrapArgs --prefix PATH : ${gnused}/bin"
+      wrapProgram $out/bin/$name $wrapArgs
     }
 
     copyScript "hg" ${../../../build-support/fetchhg/nix-prefetch-hg} ${mercurial}
@@ -21,6 +25,7 @@ stdenv.mkDerivation {
     copyScript "svn" ${../../../build-support/fetchsvn/nix-prefetch-svn} ${subversion}
     copyScript "bzr" ${../../../build-support/fetchbzr/nix-prefetch-bzr} ${bazaar}
     copyScript "cvs" ${../../../build-support/fetchcvs/nix-prefetch-cvs} ${cvs}
+    copyScript "zip" ${../../../build-support/fetchzip/nix-prefetch-zip} ${unzip} ${curl}
   '';
 
   meta = with stdenv.lib; {
@@ -30,4 +35,4 @@ stdenv.mkDerivation {
     # Quicker to build than to download, I hope
     hydraPlatforms = [];
   };
-}
\ No newline at end of file
+}
diff --git a/pkgs/tools/package-management/nix/unstable.nix b/pkgs/tools/package-management/nix/unstable.nix
index f61b9eb818ae..b81ab7cad424 100644
--- a/pkgs/tools/package-management/nix/unstable.nix
+++ b/pkgs/tools/package-management/nix/unstable.nix
@@ -14,7 +14,9 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ perl pkgconfig ];
 
-  buildInputs = [ curl openssl boehmgc sqlite ];
+  buildInputs = [ curl openssl sqlite ];
+
+  propagatedBuildInputs = [ boehmgc ];
 
   # Note: bzip2 is not passed as a build input, because the unpack phase
   # would end up using the wrong bzip2 when cross-compiling.
diff --git a/pkgs/tools/security/ecryptfs/default.nix b/pkgs/tools/security/ecryptfs/default.nix
index d1ed6f420ec3..13046aa0b2d1 100644
--- a/pkgs/tools/security/ecryptfs/default.nix
+++ b/pkgs/tools/security/ecryptfs/default.nix
@@ -1,18 +1,37 @@
-{stdenv, fetchurl, fuse, python, perl, keyutils, pam, nss, nspr}:
+{ stdenv, fetchurl, pkgconfig, perl, keyutils, nss, nspr, python, pam
+, intltool, makeWrapper, coreutils, gettext, cryptsetup, lvm2, rsync, which }:
+
 stdenv.mkDerivation {
-  name = "ecryptfs-82";
+  name = "ecryptfs-104";
 
   src = fetchurl {
-    url = http://launchpad.net/ecryptfs/trunk/82/+download/ecryptfs-utils_82.orig.tar.gz;
-    sha256 = "1w3swispgp71prz8h56hqby2wwnvam5vllqvc69rn8cf605i69a6";
+    url = http://launchpad.net/ecryptfs/trunk/104/+download/ecryptfs-utils_104.orig.tar.gz;
+    sha256 = "0f3lzpjw97vcdqzzgii03j3knd6pgwn1y0lpaaf46iidaiv0282a";
   };
 
-  NIX_CFLAGS_COMPILE = "-I${nspr}/include/nspr -I${nss}/include/nss";
+  buildInputs = [ pkgconfig perl nss nspr python pam intltool makeWrapper ];
+  propagatedBuildInputs = [ coreutils gettext cryptsetup lvm2 rsync keyutils which ];
 
-  buildInputs = [ python perl keyutils pam nss nspr ];
+  postInstall = ''
+    FILES="$(grep -r '/bin/sh' $out/bin | sed 's,:.*,,' | uniq)"
+    for file in $FILES; do
+      sed -i $file -e "s,\(/sbin/u\?mount.ecryptfs\(_private\)\?\),$out\1," \
+        -e "s,\(/sbin/cryptsetup\),${cryptsetup}\1," \
+        -e "s,\(/sbin/dmsetup\),${lvm2}\1," \
+        -e 's,/sbin/\(unix_chkpwd\),\1,'
+      wrapProgram $file \
+        --prefix PATH ":" "${coreutils}/bin" \
+        --prefix PATH ":" "${gettext}/bin" \
+        --prefix PATH ":" "${rsync}/bin" \
+        --prefix PATH ":" "${keyutils}/bin" \
+        --prefix PATH ":" "${which}/bin" \
+        --prefix PATH ":" "$out/bin"
+    done
+  '';
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "Enterprise-class stacked cryptographic filesystem";
-    license = "GPLv2+";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/security/gnupg/default.nix b/pkgs/tools/security/gnupg/default.nix
index f242c3f323ae..9b8d33b6b696 100644
--- a/pkgs/tools/security/gnupg/default.nix
+++ b/pkgs/tools/security/gnupg/default.nix
@@ -13,11 +13,11 @@ assert useUsb -> (libusb != null);
 assert useCurl -> (curl != null);
 
 stdenv.mkDerivation rec {
-  name = "gnupg-2.0.22";
+  name = "gnupg-2.0.24";
 
   src = fetchurl {
     url = "mirror://gnupg/gnupg/${name}.tar.bz2";
-    sha256 = "0lg210acj2rxq291q4cwamg9gx6gh2prb1xa93y5jhw5b6r0lza3";
+    sha256 = "0ch2hbindk832cy7ca00a7whw84ndm0nhqrl24a5fw4ldkca2x6r";
   };
 
   buildInputs
diff --git a/pkgs/tools/security/gnupg1/default.nix b/pkgs/tools/security/gnupg1/default.nix
index 362ec3a25bbd..a25ae35b6cc9 100644
--- a/pkgs/tools/security/gnupg1/default.nix
+++ b/pkgs/tools/security/gnupg1/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, readline, bzip2 }:
 
 stdenv.mkDerivation rec {
-  name = "gnupg-1.4.16";
+  name = "gnupg-1.4.17";
 
   src = fetchurl {
     url = "mirror://gnupg/gnupg/${name}.tar.bz2";
-    sha256 = "0bsa1yqa3ybhvmc4ys73amdpcmckrlq1fsxjl2980cxada778fvv";
+    sha256 = "0nvv1bd8v13gh2m1429azws7ks0ix9y1yv87ak9k9i1dsqcrvpg6";
   };
 
   buildInputs = [ readline bzip2 ];
diff --git a/pkgs/tools/security/meo/default.nix b/pkgs/tools/security/meo/default.nix
index 820919d1a2ef..2dfdf466c28a 100644
--- a/pkgs/tools/security/meo/default.nix
+++ b/pkgs/tools/security/meo/default.nix
@@ -5,7 +5,7 @@ stdenv.mkDerivation {
   
   src = fetchhg {
     url = http://oss.stamfest.net/hg/meo;
-    tag = "b48e5f16cff8";
+    rev = "b48e5f16cff8";
     sha256 = "0ifg7y28s89i9gwda6fyj1jbrykbcvq8bf1m6rxmdcv5afi3arbq";
   };
 
diff --git a/pkgs/tools/security/sudo/default.nix b/pkgs/tools/security/sudo/default.nix
index b4c2d7f1c1fa..ab46af5a1cd9 100644
--- a/pkgs/tools/security/sudo/default.nix
+++ b/pkgs/tools/security/sudo/default.nix
@@ -11,39 +11,43 @@ stdenv.mkDerivation rec {
     sha256 = "002l6h27pnhb77b65frhazbhknsxvrsnkpi43j7i0qw1lrgi7nkf";
   };
 
-  postConfigure = ''
-    cat >> pathnames.h <<EOF
-    #undef  _PATH_SUDO_LOGFILE
-    #define _PATH_SUDO_LOGFILE "/var/log/sudo.log"
-    #undef  _PATH_SUDO_TIMEDIR
-    #define _PATH_SUDO_TIMEDIR "/run/sudo"
-    #undef  _PATH_VI
-    #define _PATH_VI "/run/current-system/sw/bin/nano"
-    #undef  _PATH_MV
-    #define _PATH_MV "${coreutils}/bin/mv"
+  configureFlags = [
+    "--with-env-editor"
+    "--with-editor=/run/current-system/sw/bin/nano"
+    "--with-rundir=/var/run"
+    "--with-vardir=/var/db/sudo"
+    "--with-logpath=/var/log/sudo.log"
+  ];
+
+  postConfigure =
+    ''
+    cat >> pathnames.h <<'EOF'
+      #undef _PATH_MV
+      #define _PATH_MV "${coreutils}/bin/mv"
     EOF
-
     makeFlags="install_uid=$(id -u) install_gid=$(id -g)"
-    installFlags="sudoers_uid=$(id -u) sudoers_gid=$(id -g) sysconfdir=$out/etc timedir=$TMPDIR/dummy"
-  '';
+    installFlags="sudoers_uid=$(id -u) sudoers_gid=$(id -g) sysconfdir=$out/etc rundir=$TMPDIR/dummy vardir=$TMPDIR/dummy"
+    '';
 
   buildInputs = [ coreutils pam groff ];
 
   enableParallelBuilding = true;
 
-  postInstall = ''
-    rm $out/share/doc/sudo/ChangeLog
-  '';
+  postInstall = 
+    ''
+    rm -f $out/share/doc/sudo/ChangeLog
+    '';
 
   meta = {
     description = "A command to run commands as root";
 
-    longDescription = ''
+    longDescription = 
+      ''
       Sudo (su "do") allows a system administrator to delegate
       authority to give certain users (or groups of users) the ability
       to run some (or all) commands as root or another user while
       providing an audit trail of the commands and their arguments.
-    '';
+      '';
 
     homepage = http://www.sudo.ws/;
 
diff --git a/pkgs/tools/system/storebrowse/default.nix b/pkgs/tools/system/storebrowse/default.nix
index a997e38ba4a3..ccb0f26e4358 100644
--- a/pkgs/tools/system/storebrowse/default.nix
+++ b/pkgs/tools/system/storebrowse/default.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   # This source has license BSD
   srcGoSqlite = fetchhg {
     url = "https://code.google.com/p/gosqlite/";
-    tag = "5baefb109e18";
+    rev = "5baefb109e18";
     sha256 = "0mqfnx06jj15cs8pq9msny2z18x99hgk6mchnaxpg343nzdiz4zk";
   };
 
diff --git a/pkgs/tools/system/syslog-ng/default.nix b/pkgs/tools/system/syslog-ng/default.nix
index cbffd8648d47..9102482d3d63 100644
--- a/pkgs/tools/system/syslog-ng/default.nix
+++ b/pkgs/tools/system/syslog-ng/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, eventlog, pkgconfig, glib, python }:
+{ stdenv, fetchurl, eventlog, pkgconfig, glib, python, systemd, perl }:
 
 stdenv.mkDerivation {
   name = "syslog-ng-3.5.4.1";
@@ -8,8 +8,13 @@ stdenv.mkDerivation {
     sha256 = "0rkgrmnyx1x6m3jw5n49k7r1dcg79lxh900g74rgvd3j86g9dilj";
   };
 
-  buildInputs = [ eventlog pkgconfig glib python ];
-  configureFlags = "--enable-dynamic-linking";
+  buildInputs = [ eventlog pkgconfig glib python systemd perl ];
+
+  configureFlags = [
+    "--enable-dynamic-linking"
+    "--enable-systemd"
+    "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
+  ];
 
   meta = {
     homepage = "http://www.balabit.com/network-security/syslog-ng/";
diff --git a/pkgs/tools/text/diffstat/default.nix b/pkgs/tools/text/diffstat/default.nix
index 94c2df9aabe0..e70dfaedddf5 100644
--- a/pkgs/tools/text/diffstat/default.nix
+++ b/pkgs/tools/text/diffstat/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
     '';
     homepage = http://invisible-island.net/diffstat/;
     license = licenses.mit;
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     maintainers = [ maintainers.bjornfor ];
   };
 }
diff --git a/pkgs/tools/typesetting/djvu2pdf/default.nix b/pkgs/tools/typesetting/djvu2pdf/default.nix
new file mode 100644
index 000000000000..c7729ac676f8
--- /dev/null
+++ b/pkgs/tools/typesetting/djvu2pdf/default.nix
@@ -0,0 +1,28 @@
+{stdenv, fetchurl, pkgconfig, djvulibre, ghostscript }:
+
+stdenv.mkDerivation rec {
+  version = "0.9.2";
+  name = "djvu2pdf-${version}";
+
+  src = fetchurl {
+    url = "http://0x2a.at/site/projects/djvu2pdf/djvu2pdf-${version}.tar.gz";
+    sha256 = "0v2ax30m7j1yi4m02nzn9rc4sn4vzqh5vywdh96r64j4pwvn5s5g";
+  };
+
+  buildInputs = [ pkgconfig ];
+  propagatedUserEnvPkgs = [ djvulibre ghostscript ];
+
+  installPhase = ''
+    ensureDir $out/bin
+    cp -p djvu2pdf $out/bin
+    ensureDir $out/man/man1
+    cp -p djvu2pdf.1.gz $out/man/man1
+  '';
+
+  meta = {
+    description = "Creates djvu files from PDF files";
+    homepage = http://0x2a.at/s/projects/djvu2pdf;
+    license = stdenv.lib.licenses.gpl2;
+    inherit version;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index d61c789cb4f0..bd5bb4f1832f 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -320,6 +320,8 @@ let
 
   fetchmtn = callPackage ../build-support/fetchmtn (config.fetchmtn or {});
 
+  packer = callPackage ../development/tools/packer { };
+
   fetchpatch = callPackage ../build-support/fetchpatch { };
 
   fetchsvn = import ../build-support/fetchsvn {
@@ -726,6 +728,8 @@ let
 
   cdrkit = callPackage ../tools/cd-dvd/cdrkit { };
 
+  ceph = callPackage ../tools/filesystems/ceph { };
+
   cfdg = builderDefsPackage ../tools/graphics/cfdg {
     inherit libpng bison flex ffmpeg;
   };
@@ -1594,7 +1598,7 @@ let
 
   networkmanager_openconnect = callPackage ../tools/networking/network-manager/openconnect.nix { };
 
-  networkmanagerapplet = newScope gnome ../tools/networking/network-manager-applet { };
+  networkmanagerapplet = newScope gnome ../tools/networking/network-manager-applet { dconf = gnome3.dconf; };
 
   newsbeuter = callPackage ../applications/networking/feedreaders/newsbeuter { };
 
@@ -2474,7 +2478,9 @@ let
 
   dash = callPackage ../shells/dash { };
 
-  fish = callPackage ../shells/fish { };
+  fish = callPackage ../shells/fish {
+    python = python27Full;
+  };
 
   tcsh = callPackage ../shells/tcsh { };
 
@@ -2971,6 +2977,8 @@ let
 
   go = go_1_3;
 
+  gox = callPackage ../development/compilers/go/gox.nix { };
+
   gprolog = callPackage ../development/compilers/gprolog { };
 
   gwt240 = callPackage ../development/compilers/gwt/2.4.0.nix { };
@@ -3012,7 +3020,7 @@ let
   jdk = if stdenv.isDarwin || stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"
     then pkgs.openjdk
     else pkgs.oraclejdk;
-  jre = if stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"
+  jre = if stdenv.isDarwin || stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"
     then pkgs.openjre
     else pkgs.oraclejre;
 
@@ -3020,10 +3028,14 @@ let
 
   oraclejdk7 = pkgs.oraclejdk7distro true false;
 
+  oraclejdk8 = pkgs.oraclejdk8distro true false;
+
   oraclejre = lowPrio (pkgs.jdkdistro false false);
 
   oraclejre7 = lowPrio (pkgs.oraclejdk7distro false false);
 
+  oraclejre8 = lowPrio (pkgs.oraclejdk8distro false false);
+
   jrePlugin = lowPrio (pkgs.jdkdistro false true);
 
   supportsJDK =
@@ -3040,6 +3052,11 @@ let
     (if pluginSupport then appendToName "with-plugin" else x: x)
       (callPackage ../development/compilers/jdk/jdk7-linux.nix { inherit installjdk; });
 
+  oraclejdk8distro = installjdk: pluginSupport:
+    assert supportsJDK;
+    (if pluginSupport then appendToName "with-plugin" else x: x)
+      (callPackage ../development/compilers/jdk/jdk8-linux.nix { inherit installjdk; });
+
   jikes = callPackage ../development/compilers/jikes { };
 
   juliaGit = callPackage ../development/compilers/julia/git-20131013.nix {
@@ -3162,6 +3179,8 @@ let
 
     ocaml_cairo = callPackage ../development/ocaml-modules/ocaml-cairo { };
 
+    cppo = callPackage ../development/tools/ocaml/cppo { };
+
     cryptokit = callPackage ../development/ocaml-modules/cryptokit { };
 
     deriving = callPackage ../development/tools/ocaml/deriving { };
@@ -3278,8 +3297,8 @@ let
 
   rust = callPackage ../development/compilers/rust {};
 
-  sbcl = builderDefsPackage (import ../development/compilers/sbcl) {
-    inherit makeWrapper;
+  sbclBootstrap = callPackage ../development/compilers/sbcl/bootstrap.nix {};
+  sbcl = callPackage ../development/compilers/sbcl {
     clisp = clisp_2_44_1;
   };
 
@@ -3290,6 +3309,7 @@ let
 
   sdcc = callPackage ../development/compilers/sdcc { };
 
+  smlnjBootstrap = callPackage ../development/compilers/smlnj/bootstrap.nix { };
   smlnj = callPackage_i686 ../development/compilers/smlnj { };
 
   stalin = callPackage ../development/compilers/stalin { };
@@ -3435,6 +3455,7 @@ let
   lua5 = lua5_1;
 
   lua5_sockets = callPackage ../development/interpreters/lua-5/sockets.nix {};
+  lua5_expat = callPackage ../development/interpreters/lua-5/expat.nix {};
 
   luarocks = callPackage ../development/tools/misc/luarocks {
      lua = lua5;
@@ -3483,6 +3504,8 @@ let
     fetchurl = fetchurlBoot;
   };
 
+  perl520 = callPackage ../development/interpreters/perl/5.20 { };
+
   perl = if system != "i686-cygwin" then perl516 else sysPerl;
 
   php = php54;
@@ -4605,6 +4628,15 @@ let
         ln -s $glibc32/lib $out/lib/32
         ln -s lib $out/lib64
 
+        # fixing ldd RLTDLIST
+        rm $out/bin
+        cp -rs $glibc64/bin $out
+        chmod u+w $out/bin
+        rm $out/bin/ldd
+        sed -e "s|^RTLDLIST=.*$|RTLDLIST=\"$out/lib/ld-2.19.so $out/lib/32/ld-linux.so.2\"|g" \
+            $glibc64/bin/ldd > $out/bin/ldd
+        chmod 555 $out/bin/ldd
+
         rm $out/include
         cp -rs $glibc32/include $out
         chmod -R u+w $out/include
@@ -4616,6 +4648,8 @@ let
 
   glog = callPackage ../development/libraries/glog { };
 
+  gloox = callPackage ../development/libraries/gloox { };
+
   glpk = callPackage ../development/libraries/glpk { };
 
   glsurf = callPackage ../applications/science/math/glsurf {
@@ -4949,6 +4983,8 @@ let
 
   libassuan2_1 = callPackage ../development/libraries/libassuan/git.nix { };
 
+  libatomic_ops = callPackage ../development/libraries/libatomic_ops {};
+
   libav = libav_10;
   libav_all = callPackage ../development/libraries/libav { };
   inherit (libav_all) libav_0_8 libav_9 libav_10;
@@ -5081,6 +5117,9 @@ let
 
   liblscp = callPackage ../development/libraries/liblscp { };
 
+  libe-book = callPackage ../development/libraries/libe-book {};
+  libe-book_00 = callPackage ../development/libraries/libe-book/0.0.nix {};
+
   libev = builderDefsPackage ../development/libraries/libev { };
 
   libevent14 = callPackage ../development/libraries/libevent/1.4.nix { };
@@ -5179,6 +5218,8 @@ let
 
   libresample = callPackage ../development/libraries/libresample {};
 
+  librevenge = callPackage ../development/libraries/librevenge {};
+
   librevisa = callPackage ../development/libraries/librevisa { };
 
   libsamplerate = callPackage ../development/libraries/libsamplerate {
@@ -5287,6 +5328,9 @@ let
 
   libmusicbrainz = libmusicbrainz3;
 
+  libmwaw = callPackage ../development/libraries/libmwaw { };
+  libmwaw_02 = callPackage ../development/libraries/libmwaw/0.2.nix { };
+
   libmx = callPackage ../development/libraries/libmx { };
 
   libnet = callPackage ../development/libraries/libnet { };
@@ -5303,6 +5347,8 @@ let
 
   libnxml = callPackage ../development/libraries/libnxml { };
 
+  libodfgen = callPackage ../development/libraries/libodfgen { };
+
   libofa = callPackage ../development/libraries/libofa { };
 
   libofx = callPackage ../development/libraries/libofx { };
@@ -5680,6 +5726,10 @@ let
 
   newt = callPackage ../development/libraries/newt { };
 
+  nix-plugins = callPackage ../development/libraries/nix-plugins {
+    nix = pkgs.nixUnstable;
+  };
+
   nspr = callPackage ../development/libraries/nspr { };
 
   nss = lowPrio (callPackage ../development/libraries/nss { });
@@ -5690,6 +5740,8 @@ let
 
   ntrack = callPackage ../development/libraries/ntrack { };
 
+  nvidia-texture-tools = callPackage ../development/libraries/nvidia-texture-tools { };
+
   ode = builderDefsPackage (import ../development/libraries/ode) { };
 
   ogre = callPackage ../development/libraries/ogre {};
@@ -5748,6 +5800,8 @@ let
     ffmpeg = ffmpeg_0_10;
   };
 
+  openspades = callPackage ../games/openspades {};
+
   openssl = callPackage ../development/libraries/openssl {
     fetchurl = fetchurlBoot;
     cryptodevHeaders = linuxPackages.cryptodev.override {
@@ -6631,12 +6685,16 @@ let
 
   dovecot_pigeonhole = callPackage ../servers/mail/dovecot-pigeonhole { };
 
+  etcd = callPackage ../servers/etcd { };
+
   ejabberd = callPackage ../servers/xmpp/ejabberd {
     erlang = erlangR16;
   };
 
   elasticmq = callPackage ../servers/elasticmq { };
 
+  etcdctl = callPackage ../development/tools/etcdctl { };
+
   fcgiwrap = callPackage ../servers/fcgiwrap { };
 
   felix = callPackage ../servers/felix { };
@@ -6648,6 +6706,8 @@ let
   firebird = callPackage ../servers/firebird { icu = null; };
   firebirdSuper = callPackage ../servers/firebird { superServer = true; };
 
+  fleet = callPackage ../servers/fleet { };
+
   freepops = callPackage ../servers/mail/freepops { };
 
   freeswitch = callPackage ../servers/sip/freeswitch { };
@@ -6708,8 +6768,12 @@ let
 
   ngircd = callPackage ../servers/irc/ngircd { };
 
+  nix-binary-cache = callPackage ../servers/http/nix-binary-cache {};
+
   nsd = callPackage ../servers/dns/nsd { };
 
+  nsq = callPackage ../servers/nsq { };
+
   opensmtpd = callPackage ../servers/mail/opensmtpd { };
 
   petidomo = callPackage ../servers/mail/petidomo { };
@@ -7103,6 +7167,8 @@ let
 
   ifplugd = callPackage ../os-specific/linux/ifplugd { };
 
+  iomelt = callPackage ../os-specific/linux/iomelt { };
+
   iotop = callPackage ../os-specific/linux/iotop { };
 
   iproute = callPackage ../os-specific/linux/iproute { };
@@ -7215,15 +7281,6 @@ let
       ];
   };
 
-  linux_3_13 = makeOverridable (import ../os-specific/linux/kernel/linux-3.13.nix) {
-    inherit fetchurl stdenv perl buildLinux;
-    kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips")
-      [ kernelPatches.mips_fpureg_emu
-        kernelPatches.mips_fpu_sigill
-        kernelPatches.mips_ext3_n32
-      ];
-  };
-
   linux_3_14 = makeOverridable (import ../os-specific/linux/kernel/linux-3.14.nix) {
     inherit fetchurl stdenv perl buildLinux;
     kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips")
@@ -7388,7 +7445,6 @@ let
   linuxPackages_3_10 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_10 linuxPackages_3_10);
   linuxPackages_3_10_tuxonice = linuxPackagesFor pkgs.linux_3_10_tuxonice linuxPackages_3_10_tuxonice;
   linuxPackages_3_12 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_12 linuxPackages_3_12);
-  linuxPackages_3_13 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_13 linuxPackages_3_13);
   linuxPackages_3_14 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_14 linuxPackages_3_14);
   linuxPackages_3_15 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_15 linuxPackages_3_15);
   linuxPackages_testing = recurseIntoAttrs (linuxPackagesFor pkgs.linux_testing linuxPackages_testing);
@@ -7481,6 +7537,8 @@ let
 
   numactl = callPackage ../os-specific/linux/numactl { };
 
+  gocode = callPackage ../development/tools/gocode { };
+
   gogoclient = callPackage ../os-specific/linux/gogoclient { };
 
   nss_ldap = callPackage ../os-specific/linux/nss_ldap { };
@@ -7843,8 +7901,14 @@ let
 
   inconsolata = callPackage ../data/fonts/inconsolata {};
 
+  ipafont = callPackage ../data/fonts/ipafont {};
+
   junicode = callPackage ../data/fonts/junicode { };
 
+  kochi-substitute = callPackage ../data/fonts/kochi-substitute {};
+
+  kochi-substitute-naga10 = callPackage ../data/fonts/kochi-substitute-naga10 {};
+
   liberation_ttf = callPackage ../data/fonts/redhat-liberation-fonts { };
 
   libertine = builderDefsPackage (import ../data/fonts/libertine) {
@@ -8065,6 +8129,8 @@ let
 
   calibre = callPackage ../applications/misc/calibre { };
 
+  camlistore = callPackage ../applications/misc/camlistore { };
+
   carrier = builderDefsPackage (import ../applications/networking/instant-messengers/carrier/2.5.0.nix) {
     inherit fetchurl stdenv pkgconfig perl perlXMLParser libxml2 openssl nss
       gtkspell aspell gettext ncurses avahi dbus dbus_glib python
@@ -8188,6 +8254,8 @@ let
 
   djvulibre = callPackage ../applications/misc/djvulibre { };
 
+  djvu2pdf = callPackage ../tools/typesetting/djvu2pdf { };
+
   djview = callPackage ../applications/graphics/djview { };
   djview4 = pkgs.djview;
 
@@ -8212,7 +8280,7 @@ let
 
   dvdauthor = callPackage ../applications/video/dvdauthor { };
 
-  dwb = callPackage ../applications/networking/browsers/dwb { };
+  dwb = callPackage ../applications/networking/browsers/dwb { dconf = gnome3.dconf; };
 
   dwm = callPackage ../applications/window-managers/dwm {
     patches = config.dwm.patches or [];
@@ -8542,6 +8610,13 @@ let
 
   firefoxWrapper = wrapFirefox { browser = firefoxPkgs.firefox; };
 
+  firefox-bin = callPackage ../applications/networking/browsers/firefox-bin {
+    gconf = pkgs.gnome.GConf;
+    inherit (pkgs.gnome) libgnome libgnomeui;
+    inherit (pkgs.xlibs) libX11 libXScrnSaver libXext
+      libXinerama libXrender libXt;
+  };
+
   flac = callPackage ../applications/audio/flac { };
 
   flashplayer = callPackage ../applications/networking/browsers/mozilla-plugins/flashplayer-11 {
@@ -8607,6 +8682,8 @@ let
     python = python27;
   };
 
+  gitolite = callPackage ../applications/version-management/gitolite { };
+
   inherit (gnome3) gitg;
 
   giv = callPackage ../applications/graphics/giv {
@@ -8924,7 +9001,7 @@ let
     inherit (perlPackages) ArchiveZip CompressZlib;
     inherit (gnome) GConf ORBit2 gnome_vfs;
     zip = zip.override { enableNLS = false; };
-    boost = boost149;
+    boost = boost155;
     jdk = openjdk;
     fontsConf = makeFontsConf {
       fontDirectories = [
@@ -8933,7 +9010,9 @@ let
     };
     clucene_core = clucene_core_2;
     lcms = lcms2;
-    mdds = mdds_0_7_1;
+    harfbuzz = harfbuzz.override {
+      withIcu = true; withGraphite2 = true;
+    };
   };
 
   liferea = callPackage ../applications/networking/newsreaders/liferea { };
@@ -9417,9 +9496,7 @@ let
 
   siproxd = callPackage ../applications/networking/siproxd { };
 
-  skype = callPackage_i686 ../applications/networking/instant-messengers/skype {
-    usePulseAudio = config.pulseaudio or true;
-  };
+  skype = callPackage_i686 ../applications/networking/instant-messengers/skype { };
 
   skype4pidgin = callPackage ../applications/networking/instant-messengers/pidgin-plugins/skype4pidgin { };
 
@@ -9618,6 +9695,8 @@ let
 
   toxic = callPackage ../applications/networking/instant-messengers/toxic { };
 
+  transcode = callPackage ../applications/audio/transcode { };
+
   transmission = callPackage ../applications/networking/p2p/transmission { };
   transmission_gtk = transmission.override { enableGTK3 = true; };
 
@@ -9999,9 +10078,7 @@ let
 
   blackshadeselite = callPackage ../games/blackshadeselite { };
 
-  blobby = callPackage ../games/blobby {
-    boost = boost149;
-  };
+  blobby = callPackage ../games/blobby { };
 
   bsdgames = callPackage ../games/bsdgames { };
 
@@ -10317,6 +10394,7 @@ let
 
   keen4 = callPackage ../games/keen4 { };
 
+  zeroad = callPackage ../games/0ad { };
 
   ### DESKTOP ENVIRONMENTS
 
@@ -10712,6 +10790,12 @@ let
 
   tptp = callPackage ../applications/science/logic/tptp {};
 
+  twelf = callPackage ../applications/science/logic/twelf {
+    smlnj = if stdenv.isDarwin
+      then smlnjBootstrap
+      else smlnj;
+  };
+
   verifast = callPackage ../applications/science/logic/verifast {};
 
   why3 = callPackage ../applications/science/logic/why3 {};
diff --git a/pkgs/top-level/haskell-defaults.nix b/pkgs/top-level/haskell-defaults.nix
index a770cbdda8f7..ba785f3ef555 100644
--- a/pkgs/top-level/haskell-defaults.nix
+++ b/pkgs/top-level/haskell-defaults.nix
@@ -15,13 +15,13 @@
   # Older compilers inherit the overrides from newer ones.
 
   ghcHEADPrefs = self : super : super // {
-    cabalInstall_1_20_0_2 = super.cabalInstall_1_20_0_2.override { Cabal = null; };
+    cabalInstall_1_20_0_3 = super.cabalInstall_1_20_0_3.override { Cabal = null; };
     mtl = self.mtl_2_2_1;
     transformersCompat = super.transformersCompat_0_3_3;
   };
 
   ghc782Prefs = self : super : ghcHEADPrefs self super // {
-    cabalInstall_1_20_0_2 = super.cabalInstall_1_20_0_2.override { Cabal = self.Cabal_1_20_0_1; };
+    cabalInstall_1_20_0_3 = super.cabalInstall_1_20_0_3.override { Cabal = self.Cabal_1_20_0_1; };
     codex = super.codex.override { hackageDb = super.hackageDb.override { Cabal = self.Cabal_1_20_0_1; }; };
     mtl = self.mtl_2_1_2;
   };
diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix
index 608108a18474..560b0b77ce68 100644
--- a/pkgs/top-level/haskell-packages.nix
+++ b/pkgs/top-level/haskell-packages.nix
@@ -437,7 +437,9 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   compactStringFix = callPackage ../development/libraries/haskell/compact-string-fix {};
 
-  compdata = callPackage ../development/libraries/haskell/compdata {};
+  compdata = if (pkgs.stdenv.lib.versionOlder "7.8" ghc.version)
+               then callPackage ../development/libraries/haskell/compdata {}
+               else null;
 
   composition = callPackage ../development/libraries/haskell/composition {};
 
@@ -587,6 +589,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   deepseq_1_3_0_2 = callPackage ../development/libraries/haskell/deepseq/1.3.0.2.nix {};
   deepseq = null;               # core package since ghc >= 7.4.x
 
+  deepseqGenerics = callPackage ../development/libraries/haskell/deepseq-generics {};
+
   deepseqTh = callPackage ../development/libraries/haskell/deepseq-th {};
 
   derive = callPackage ../development/libraries/haskell/derive {};
@@ -636,7 +640,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   directoryTree = callPackage ../development/libraries/haskell/directory-tree {};
 
   distributedStatic = callPackage ../development/libraries/haskell/distributed-static {};
-  
+
   distributedProcess = callPackage ../development/libraries/haskell/distributed-process {};
 
   distributive = callPackage ../development/libraries/haskell/distributive {};
@@ -799,6 +803,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   foldl = callPackage ../development/libraries/haskell/foldl {};
 
+  folds = callPackage ../development/libraries/haskell/folds {};
+
   forceLayout = callPackage ../development/libraries/haskell/force-layout {};
 
   free = callPackage ../development/libraries/haskell/free {};
@@ -1066,6 +1072,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   HaXml = callPackage ../development/libraries/haskell/HaXml {};
 
+  hdaemonize = callPackage ../development/libraries/haskell/hdaemonize {};
+
   HDBC = callPackage ../development/libraries/haskell/HDBC/HDBC.nix {};
 
   HDBCOdbc = callPackage ../development/libraries/haskell/HDBC/HDBC-odbc.nix {
@@ -1280,6 +1288,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
     preprocessorTools = self.preprocessorTools_0_1_3;
   };
 
+  ixset = callPackage ../development/libraries/haskell/ixset {};
+
   ixShapable = callPackage ../development/libraries/haskell/ix-shapable {};
 
   jack = callPackage ../development/libraries/haskell/jack {};
@@ -1466,6 +1476,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   monadloc = callPackage ../development/libraries/haskell/monadloc {};
 
+  monadlocPp = callPackage ../development/libraries/haskell/monadloc-pp {};
+
   monadLoops = callPackage ../development/libraries/haskell/monad-loops {};
 
   monadLogger = callPackage ../development/libraries/haskell/monad-logger {};
@@ -1960,6 +1972,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   setlocale = callPackage ../development/libraries/haskell/setlocale {};
 
+  shellmate = callPackage ../development/libraries/haskell/shellmate {};
+
   shelly_0_15_4_1 = callPackage ../development/libraries/haskell/shelly/0.15.4.1.nix {};
   shelly_1_5_3_1 = callPackage ../development/libraries/haskell/shelly {};
   shelly = self.shelly_1_5_3_1;
@@ -2080,6 +2094,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   SHA = callPackage ../development/libraries/haskell/SHA {};
 
+  SHA2 = callPackage ../development/libraries/haskell/SHA2 {};
+
   shake = callPackage ../development/libraries/haskell/shake {};
 
   shakespeare = callPackage ../development/libraries/haskell/shakespeare {};
@@ -2160,6 +2176,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   TableAlgebra = callPackage ../development/libraries/haskell/TableAlgebra {};
 
+  tables = callPackage ../development/libraries/haskell/tables {};
+
   tabular = callPackage ../development/libraries/haskell/tabular {};
 
   tagged = callPackage ../development/libraries/haskell/tagged {};
@@ -2462,6 +2480,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   wcwidth = callPackage ../development/libraries/haskell/wcwidth {};
 
+  webdriver = callPackage ../development/libraries/haskell/webdriver {};
+
   webRoutes = callPackage ../development/libraries/haskell/web-routes {};
 
   webRoutesBoomerang = callPackage ../development/libraries/haskell/web-routes-boomerang {};
@@ -2547,6 +2567,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   xssSanitize = callPackage ../development/libraries/haskell/xss-sanitize {};
 
+  Yampa = callPackage ../development/libraries/haskell/Yampa {};
+
   yaml = callPackage ../development/libraries/haskell/yaml {};
 
   yamlLight = callPackage ../development/libraries/haskell/yaml-light {};
@@ -2785,9 +2807,10 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   cabalDelete = callPackage ../development/tools/haskell/cabal-delete {};
 
   cabalBounds = callPackage ../development/tools/haskell/cabal-bounds {
-    Cabal = if pkgs.stdenv.lib.versionOlder "7.7" ghc.version
-              then null
-              else self.Cabal_1_18_1_3;
+    Cabal = self.Cabal_1_20_0_1;
+    cabalLenses = self.cabalLenses.override {
+      Cabal = self.Cabal_1_20_0_1;
+    };
   };
 
   cabalMeta = callPackage ../development/tools/haskell/cabal-meta {};
@@ -2803,11 +2826,13 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   cabalInstall_0_14_0 = callPackage ../tools/package-management/cabal-install/0.14.0.nix {};
   cabalInstall_1_16_0_2 = callPackage ../tools/package-management/cabal-install/1.16.0.2.nix { Cabal = self.Cabal_1_16_0_3; };
   cabalInstall_1_18_0_3 = callPackage ../tools/package-management/cabal-install/1.18.0.3.nix { Cabal = self.Cabal_1_18_1_3; };
-  cabalInstall_1_20_0_2 = callPackage ../tools/package-management/cabal-install/1.20.0.2.nix { Cabal = self.Cabal_1_20_0_1; };
-  cabalInstall = self.cabalInstall_1_20_0_2;
+  cabalInstall_1_20_0_3 = callPackage ../tools/package-management/cabal-install/1.20.0.3.nix { Cabal = self.Cabal_1_20_0_1; };
+  cabalInstall = self.cabalInstall_1_20_0_3;
 
   codex = callPackage ../development/tools/haskell/codex {};
 
+  commandQq = callPackage ../development/libraries/haskell/command-qq {};
+
   gitAnnex = callPackage ../applications/version-management/git-and-tools/git-annex {};
 
   githubBackup = callPackage ../applications/version-management/git-and-tools/github-backup {};
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index f21bf4f4df93..2db19dbdf8bc 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -67,6 +67,28 @@ rec {
     inherit python;
   };
 
+  discid = buildPythonPackage rec {
+    name = "discid-1.1.0";
+
+    meta = with stdenv.lib; {
+      description = "Python binding of libdiscid";
+      homepage    = "https://python-discid.readthedocs.org/";
+      license     = licenses.lgpl3Plus;
+      platforms   = platforms.linux;
+      maintainer  = with maintainers; [ iyzsong ];
+    };
+
+    src = fetchurl {
+      url = "https://pypi.python.org/packages/source/d/discid/${name}.tar.gz";
+      md5 = "2ad2141452dd10b03ad96ccdad075235";
+    };
+
+    patchPhase = ''
+      substituteInPlace discid/libdiscid.py \
+        --replace '_open_library(_LIB_NAME)' "_open_library('${pkgs.libdiscid}/lib/libdiscid.so.0')"
+    '';
+  };
+
   ipython = import ../shells/ipython {
     inherit (pkgs) stdenv fetchurl sip pyqt4;
     inherit buildPythonPackage pythonPackages;
@@ -2264,6 +2286,37 @@ rec {
     };
   };
 
+  radicale = buildPythonPackage rec {
+    name = "radicale-${version}";
+    namePrefix = "";
+    version = "0.9b1";
+
+    src = fetchurl {
+      url = "http://pypi.python.org/packages/source/R/Radicale/Radicale-${version}.tar.gz";
+      sha256 = "3a8451909de849f173f577ddec0a085f19040dbb6aa13d5256208a0f8e11d88d";
+    };
+
+    propagatedBuildInputs = with pythonPackages; [
+      flup
+      ldap
+      sqlalchemy
+    ];
+
+    doCheck = false;
+
+    meta = {
+      homepage = "http://www.radicale.org/";
+      longDescription = ''
+        The Radicale Project is a complete CalDAV (calendar) and CardDAV
+        (contact) server solution. Calendars and address books are available for
+        both local and remote access, possibly limited through authentication
+        policies. They can be viewed and edited by calendar and contact clients
+        on mobile phones or computers.
+      '';
+      license = stdenv.lib.licenses.gpl3Plus;
+      maintainers = [ stdenv.lib.maintainers.edwtjo ];
+    };
+  };
 
   raven = buildPythonPackage rec {
     name = "raven-3.4.1";