about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLluís Batlle i Rossell <viric@vicerveza.homeunix.net>2010-05-25 20:38:18 +0000
committerLluís Batlle i Rossell <viric@vicerveza.homeunix.net>2010-05-25 20:38:18 +0000
commitfa1a414aeea9926721ed2b87b74e3f3755538e3b (patch)
tree5e4d6aea8bcd00c53b71a564ce9e0fe001751a84
parentd15811bf78eda2aacfa5274822ba07a911d9bca6 (diff)
parentc5098ff56e44ab8eeae3a067838cf4e139196d52 (diff)
downloadnixlib-fa1a414aeea9926721ed2b87b74e3f3755538e3b.tar
nixlib-fa1a414aeea9926721ed2b87b74e3f3755538e3b.tar.gz
nixlib-fa1a414aeea9926721ed2b87b74e3f3755538e3b.tar.bz2
nixlib-fa1a414aeea9926721ed2b87b74e3f3755538e3b.tar.lz
nixlib-fa1a414aeea9926721ed2b87b74e3f3755538e3b.tar.xz
nixlib-fa1a414aeea9926721ed2b87b74e3f3755538e3b.tar.zst
nixlib-fa1a414aeea9926721ed2b87b74e3f3755538e3b.zip
Merging from trunk - I had to resolve conflicts on coreutils; I hope I resolved that
well


svn path=/nixpkgs/branches/stdenv-updates/; revision=21975
-rw-r--r--pkgs/applications/editors/zile/default.nix3
-rw-r--r--pkgs/applications/networking/p2p/transmission/default.nix15
-rw-r--r--pkgs/applications/office/openoffice/builder.sh4
-rw-r--r--pkgs/applications/office/openoffice/default.nix5
-rw-r--r--pkgs/applications/office/openoffice/go-oo.nix140
-rw-r--r--pkgs/applications/office/openoffice/src.nix141
-rw-r--r--pkgs/applications/video/MPlayer/default.nix8
-rw-r--r--pkgs/build-support/fetchgit/builder.sh11
-rw-r--r--pkgs/desktops/kde-4.4/default.nix5
-rw-r--r--pkgs/desktops/kde-4.4/extragear/yakuake/default.nix19
-rw-r--r--pkgs/development/compilers/gcc-4.5/builder.sh32
-rw-r--r--pkgs/development/compilers/gcc-4.5/default.nix62
-rw-r--r--pkgs/development/compilers/gcc-4.5/softfp-hurd.patch32
-rw-r--r--pkgs/development/libraries/aspell/dictionaries.nix9
-rw-r--r--pkgs/development/libraries/consolekit/0001-Don-t-daemonize-when-activated.patch28
-rw-r--r--pkgs/development/libraries/consolekit/0002-Don-t-take-bus-name-until-ready.patch62
-rw-r--r--pkgs/development/libraries/consolekit/default.nix2
-rw-r--r--pkgs/development/libraries/ffmpeg/default.nix6
-rw-r--r--pkgs/development/libraries/glibc-2.11/builder2.sh58
-rw-r--r--pkgs/development/libraries/glibc-2.11/common.nix7
-rw-r--r--pkgs/development/libraries/glibc-2.11/default.nix16
-rw-r--r--pkgs/development/libraries/gpgme/default.nix13
-rw-r--r--pkgs/development/libraries/gss/default.nix14
-rw-r--r--pkgs/development/libraries/hwloc/default.nix13
-rw-r--r--pkgs/development/libraries/libassuan/default.nix8
-rw-r--r--pkgs/development/libraries/libassuan1/default.nix28
-rw-r--r--pkgs/development/libraries/libksba/default.nix8
-rw-r--r--pkgs/development/libraries/libvpx/default.nix32
-rw-r--r--pkgs/development/python-modules/pycrypto/default.nix31
-rw-r--r--pkgs/lib/customisation.nix10
-rw-r--r--pkgs/misc/misc.nix28
-rw-r--r--pkgs/os-specific/gnu/hurd/default.nix48
-rw-r--r--pkgs/os-specific/gnu/libpthread/default.nix65
-rw-r--r--pkgs/os-specific/gnu/mach/default.nix8
-rw-r--r--pkgs/os-specific/gnu/mig/default.nix (renamed from pkgs/development/tools/misc/mig/default.nix)17
-rw-r--r--pkgs/os-specific/linux/ati-drivers/default.nix2
-rw-r--r--pkgs/os-specific/linux/iptables/default.nix16
-rw-r--r--pkgs/os-specific/linux/qemu-kvm/default.nix4
-rw-r--r--pkgs/tools/compression/gzip/gnulib-futimens.patch0
-rw-r--r--pkgs/tools/misc/coreutils/default.nix8
-rw-r--r--pkgs/tools/misc/pinentry/default.nix17
-rw-r--r--pkgs/tools/networking/aria2/default.nix17
-rw-r--r--pkgs/tools/networking/miniupnpd/default.nix37
-rw-r--r--pkgs/tools/package-management/nix/sqlite.nix6
-rw-r--r--pkgs/tools/package-management/nix/unstable.nix6
-rw-r--r--pkgs/tools/security/dirmngr/default.nix11
-rw-r--r--pkgs/tools/security/gnupg/default.nix66
-rw-r--r--pkgs/tools/security/gnupg1/default.nix36
-rw-r--r--pkgs/tools/security/gnupg1compat/default.nix20
-rw-r--r--pkgs/tools/security/gnupg2/default.nix51
-rw-r--r--pkgs/tools/security/opensc/0.11.7.nix6
-rw-r--r--pkgs/tools/security/tor/default.nix42
-rw-r--r--pkgs/top-level/all-packages.nix135
-rw-r--r--pkgs/top-level/perl-packages.nix4
-rw-r--r--pkgs/top-level/python-packages.nix6
-rw-r--r--pkgs/top-level/release-cross.nix10
-rw-r--r--pkgs/top-level/release-lib.nix23
-rw-r--r--pkgs/top-level/release.nix2
58 files changed, 1264 insertions, 249 deletions
diff --git a/pkgs/applications/editors/zile/default.nix b/pkgs/applications/editors/zile/default.nix
index 3cc8d984a8cd..7f5ae134a3db 100644
--- a/pkgs/applications/editors/zile/default.nix
+++ b/pkgs/applications/editors/zile/default.nix
@@ -8,7 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "1lm24sw2ziqsib11sddz7gcqzw5iwfnsx65m1i461kxq218xl59h";
   };
 
-  buildInputs = [ ncurses help2man ];
+  buildInputs = [ ncurses ];
+  buildNativeInputs = [ help2man ];
 
   # Tests can't be run because most of them rely on the ability to
   # fiddle with the terminal.
diff --git a/pkgs/applications/networking/p2p/transmission/default.nix b/pkgs/applications/networking/p2p/transmission/default.nix
index 1ef88f560105..6d3d501887e6 100644
--- a/pkgs/applications/networking/p2p/transmission/default.nix
+++ b/pkgs/applications/networking/p2p/transmission/default.nix
@@ -1,14 +1,19 @@
 { stdenv, fetchurl, pkgconfig, openssl, curl, intltool, gtkClient ? true, gtk }:
+
 stdenv.mkDerivation rec {
-  name = "transmission-1.92";
+  name = "transmission-1.93";
+  
   src = fetchurl {
     url = "http://mirrors.m0k.org/transmission/files/${name}.tar.bz2";
-    sha256 = "1vdvl3aza5cip4skhd2y4ip2vjci7q3y3qi3008ykk28ga93gw6s";
+    sha256 = "0w0nsyw10h4lm57qc09ja4iqqwvzcjldnqxi4zp0ha5dkbxv3dz9";
   };
+  
   buildInputs = [ pkgconfig openssl curl intltool ] ++ stdenv.lib.optional gtkClient gtk;
+  
   configureFlags = if gtkClient then "--enable-gtk" else "--disable-gtk";
+  
   meta = {
-    description = "A fast, easy and free BitTorrent client.";
+    description = "A fast, easy and free BitTorrent client";
     longDescription = ''
       Transmission is a BitTorrent client which features a simple interface
       on top of a cross-platform back-end.
@@ -22,7 +27,7 @@ stdenv.mkDerivation rec {
     '';
     homepage = http://www.transmissionbt.com/;
     license = [ "GPLv2" ];
-    maintainers = with stdenv.lib.maintainers; [ astsmtl ];
-    platforms = with stdenv.lib.platforms; linux;
+    maintainers = [ stdenv.lib.maintainers.astsmtl ];
+    platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/applications/office/openoffice/builder.sh b/pkgs/applications/office/openoffice/builder.sh
index 848afe962109..131e85de5bf6 100644
--- a/pkgs/applications/office/openoffice/builder.sh
+++ b/pkgs/applications/office/openoffice/builder.sh
@@ -33,7 +33,8 @@ postConfigure() {
 buildPhase() {
     source LinuxX86*Env.Set.sh
     ./bootstrap
-    dmake # wait a few hours...
+    # bootstrap defines the alias 'build', that mostly runs this perl script:
+    (cd instsetoo_native; perl ../solenv/bin/build.pl --all) # wait a few hours... add -P4 for quadcores
 }
 
 wrapSOffice() {
@@ -57,6 +58,7 @@ installPhase() {
     ooFiles=$out/lib/openoffice
 
     # This was all borrowed from ooo-build-2.2.1's bin/ooinstall.
+    # This needs the ./bootstrap having run in the buildPhase to get some env vars.
     eval $(grep 'BUILD\|LAST_MINOR' $SOLARENV/inc/minor.mk)
     export PYTHONPATH=$SOLARVERSION/$INPATH/lib:$SRC_ROOT/instsetoo_native/$INPATH/bin:$PYTHONPATH 
     export OUT=../$INPATH
diff --git a/pkgs/applications/office/openoffice/default.nix b/pkgs/applications/office/openoffice/default.nix
index 5c1e34a4425c..9c8b7cdb3626 100644
--- a/pkgs/applications/office/openoffice/default.nix
+++ b/pkgs/applications/office/openoffice/default.nix
@@ -67,11 +67,6 @@ stdenv.mkDerivation rec {
     --without-system-graphite
   ";
 
-  # Double make - I don't know why a single make reports error, and two, do not.
-  buildPhase = ''
-    make || make
-  '';
-
   LD_LIBRARY_PATH = "${libXext}/lib:${libX11}/lib:${libXtst}/lib:${libXi}/lib:${libjpeg}/lib";
 
   buildInputs = [
diff --git a/pkgs/applications/office/openoffice/go-oo.nix b/pkgs/applications/office/openoffice/go-oo.nix
new file mode 100644
index 000000000000..bdf0939d64e1
--- /dev/null
+++ b/pkgs/applications/office/openoffice/go-oo.nix
@@ -0,0 +1,140 @@
+{ stdenv, fetchurl, pam, python, tcsh, libxslt, perl, ArchiveZip
+, CompressZlib, zlib, libjpeg, expat, pkgconfig, freetype, libwpd
+, libxml2, db4, sablotron, curl, libXaw, fontconfig, libsndfile, neon
+, bison, flex, zip, unzip, gtk, libmspack, getopt, file, cairo, which
+, icu, boost, jdk, ant, libXext, libX11, libXtst, libXi, cups
+, libXinerama, openssl, gperf, cppunit, GConf, ORBit2
+, autoconf, openldap, postgresql
+, langs ? [ "en-US" "ca" "ru" "eo" "fr" "nl" "de" "en-GB" ]
+}:
+
+let version = "3.2.0"; in
+stdenv.mkDerivation rec {
+  name = "go-oo-3.2.0.10";
+  # builder = ./builder.sh;
+
+  downloadRoot = "http://download.services.openoffice.org/files/stable";
+  versionDirs = true;
+
+  src = fetchurl {
+      url = "http://download.go-oo.org/OOO320/ooo-build-3.2.0.10.tar.gz";
+      sha256 = "0g6n0m9pibn6cx12zslmknzy1p764nqj8vdf45l5flyls9aj3x21";
+    };
+
+  srcs_download = (import ./src.nix) fetchurl;
+
+  # Multi-CPU: --with-num-cpus=4 
+  configurePhase = ''
+    sed -i -e '1s,/bin/bash,${stdenv.bash}/bin/bash,' $(find bin -type f)
+    sed -i -e '1s,/usr/bin/perl,${perl}/bin/perl,' download.in bin/ooinstall bin/generate-bash-completion
+    echo "$distroFlags" > distro-configs/SUSE-11.1.conf.in
+
+    ./configure --with-distro=SUSE-11.1 --with-system-libwpd --without-git --with-system-cairo \
+      --with-lang="${langsSpaces}"
+  '';
+
+  buildPhase = ''
+    for a in $srcs_download; do
+      FILE=$(basename $a)
+      # take out the hash
+      cp -v $a src/$(echo $FILE | sed 's/[^-]*-//')
+    done
+    sed '/-x $WGET/d' -i download
+    ./download
+    # Needed to find genccode
+    PATH=$PATH:${icu}/sbin
+
+    make build.prepare
+
+    set -x
+    pushd build/ooo3*-*/
+    # Fix svtools: hardcoded jpeg path
+    sed -i -e 's,^JPEG3RDLIB=.*,JPEG3RDLIB=${libjpeg}/lib/libjpeg.so,' solenv/inc/libs.mk
+    # Fix sysui: wants to create a tar for root
+    sed -i -e 's,--own.*root,,' sysui/desktop/slackware/makefile.mk
+    # Fix libtextcat: wants to set rpath to /usr/local/lib
+    sed -i -e 's,^CONFIGURE_FLAGS.*,& --prefix='$TMPDIR, libtextcat/makefile.mk
+    # Fix hunspell: the checks fail due to /bin/bash missing, and I find this fix easier
+    sed -i -e 's,make && make check,make,' hunspell/makefile.mk
+    # Fix redland: wants to set rpath to /usr/local/lib
+    sed -i -e 's,^CONFIGURE_FLAGS.*,& --prefix='$TMPDIR, redland/redland/makefile.mk \
+      redland/raptor/makefile.mk redland/rasqal/makefile.mk
+    popd
+    set +x
+    make
+  '';
+
+  installPhase = ''
+    bin/ooinstall $out
+    ensureDir $out/bin
+    for a in $out/program/{sbase,scalc,sdraw,simpress,smath,soffice,swriter,soffice.bin}; do
+      ln -s $a $out/bin
+    done
+  '';
+
+  distroFlags = ''
+    --with-vendor=NixPkgs
+    --with-package-format=native
+    --disable-epm
+    --disable-fontooo
+    --disable-gnome-vfs
+    --disable-gnome-vfs
+    --disable-mathmldtd
+    --disable-mozilla
+    --disable-odk
+    --disable-pasf
+    --disable-dbus
+    --disable-kde
+    --disable-kde4
+    --disable-mono
+    --disable-gstreamer
+    --with-cairo
+    --with-system-libs
+    --with-system-python
+    --with-system-boost
+    --with-system-db
+    --with-jdk-home=${jdk}
+    --with-ant-home=${ant}
+    --without-afms
+    --without-dict
+    --without-fonts
+    --without-myspell-dicts
+    --without-nas
+    --without-ppds
+    --without-system-agg
+    --without-system-beanshell
+    --without-system-hsqldb
+    --without-system-xalan
+    --without-system-xerces
+    --without-system-xml-apis
+    --without-system-xt
+    --without-system-jars
+    --without-system-hunspell
+    --without-system-altlinuxhyph
+    --without-system-lpsolve
+    --without-system-graphite
+    --without-system-mozilla
+    --without-system-libwps
+    --without-system-libwpg
+  '';
+
+  buildInputs = [
+    pam python tcsh libxslt perl ArchiveZip CompressZlib zlib 
+    libjpeg expat pkgconfig freetype libwpd libxml2 db4 sablotron curl 
+    libXaw fontconfig libsndfile neon bison flex zip unzip gtk libmspack 
+    getopt file jdk cairo which icu boost libXext libX11 libXtst libXi
+    cups libXinerama openssl gperf GConf ORBit2
+
+    ant autoconf openldap postgresql
+  ];
+
+  langsSpaces = stdenv.lib.concatStringsSep " " langs;
+
+  meta = {
+    description = "Go-oo - Novell variant of OpenOffice.org";
+    homepage = http://go-oo.org/;
+    license = "LGPL";
+    maintainers = [ stdenv.lib.maintainers.viric ];
+    platforms = [ stdenv.lib.platforms.linux ];
+  };
+}
diff --git a/pkgs/applications/office/openoffice/src.nix b/pkgs/applications/office/openoffice/src.nix
new file mode 100644
index 000000000000..69c35bf9683f
--- /dev/null
+++ b/pkgs/applications/office/openoffice/src.nix
@@ -0,0 +1,141 @@
+fetchurl:
+[
+  (fetchurl {
+    url = "http://download.go-oo.org//DEV300/ooo-cli-prebuilt-3.2.tar.bz2";
+    sha256 = "1v55fl0n8zisn6gih99fn1c5vp6wl6cf0qh1nwlcx9ia76jnjj9k";
+  })
+/*
+  (fetchurl {
+    url = "http://cairographics.org/releases//cairo-1.4.10.tar.gz";
+    sha256 = "0cji7shlnd3yg3939233p8imnrivykx4g39p3qr8r2a4c2k7hkjr";
+  })
+*/
+  (fetchurl {
+    url = "http://download.go-oo.org//SRC680/mdbtools-0.6pre1.tar.gz";
+    sha256 = "1lz33lmqifjszad7rl1r7rpxbziprrm5rkb27wmswyl5v98dqsbi";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/artwork/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-artwork.tar.bz2";
+    sha256 = "1zfn1gjdbxychxb9xvfi9hchzqbp20f15nf06badgga5klllir8b";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/base/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-base.tar.bz2";
+    sha256 = "07gmicn9c2x16qzcfi0jh2z8mx0iz76vhskml7xkwv99vryy48im";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/bootstrap/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-bootstrap.tar.bz2";
+    sha256 = "070zmd25wysmf2rka07b8w02wkyxz7qa30kscd9b3pc8m0cgq0fl";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/calc/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-calc.tar.bz2";
+    sha256 = "0iwgmvffljmm1vbkjv36fq0riy7alk7r4gnfl5x9nrw7zic0xh29";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/components/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-components.tar.bz2";
+    sha256 = "19x6lhdbcazkicp4h3zs8sq7n9gc7z9c3xkx6266m15n2k4c8ms9";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/extras/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-extras.tar.bz2";
+    sha256 = "1lr8l0nxaqrhgcbb1vn08a8d4wzq032q2zl9a12dgjrnmgcx76s7";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/filters/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-filters.tar.bz2";
+    sha256 = "1p13w9gngc5wz40nhsx8igk8zygnwcacd3bgas3m2jv9ifazk9v3";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/help/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-help.tar.bz2";
+    sha256 = "0fqg8fpivgpyfqf0s085mjm09cmfzy684q1b58y62hg0f01wwr0k";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/impress/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-impress.tar.bz2";
+    sha256 = "1dhrdsak1jqydjfkylj6r7w1h886gbcn1g4wjh1kgkwk50bdamh5";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/libs-gui/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-libs-gui.tar.bz2";
+    sha256 = "0x5jf8bwzqkd76dpd7rh0fj1p4hmh8h9yshn8rfq6ss26bgwnmwr";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/libs-core/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-libs-core.tar.bz2";
+    sha256 = "1qaa1g9mrlpjv7fkv0c8qarbl162l99w0a92ydsj1lv86jg01xvx";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/libs-extern/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-libs-extern.tar.bz2";
+    sha256 = "0hxkba5yb1c09yyrqpw4llrr7xhpf5x08mnwgfdcfks690p1rzc9";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/postprocess/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-postprocess.tar.bz2";
+    sha256 = "1jkkxpc199y64a41y13s6ib6gyp6gas8gl4w95sx506xvj90qxi3";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/sdk/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-sdk.tar.bz2";
+    sha256 = "0211ak14sblmzswwa605q430gxxdjrqa5a2924r4lb1knrc9vlns";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/testing/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-testing.tar.bz2";
+    sha256 = "0i7bcxd791id2bbgnsakwnmr4xnzd5hdcydlnqx50mni5mcd13v1";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/ure/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-ure.tar.bz2";
+    sha256 = "16957l2npcbaizs29ly0xxfqaxinchnrvi720gggwhfp2mbl05ql";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/writer/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-writer.tar.bz2";
+    sha256 = "0lcdlwy2scs01glj8fi1q1ysmyvn7j70b91ciad3m32lrxmr8s67";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/libs-extern-sys/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-libs-extern-sys.tar.bz2";
+    sha256 = "0my3wh90xil3xpcjxi1q76v1bwi0rf62pzrf3pi3angd5y3hmysd";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/extensions/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-extensions.tar.bz2";
+    sha256 = "1qmyc2vb0n6fdl7p92cpvp972zm6ilafq5s5m21wgicqwfr34chv";
+  })
+  (fetchurl {
+    url = "http://download.go-oo.org//SRC680/extras-3.tar.bz2";
+    sha256 = "1s6cz92b2amfn135l6a2hras4qrd04kw5yyqli7xmb8xqa0m3y3c";
+  })
+  (fetchurl {
+    url = "http://download.go-oo.org//SRC680/biblio.tar.bz2";
+    sha256 = "02v2xbq771zi09qw3k4zih95m1rjns4pwwpl51n0m34c0a00lhf0";
+  })
+  (fetchurl {
+    url = "http://tools.openoffice.org/unowinreg_prebuild/680//unowinreg.dll";
+    sha256 = "0g3529nr0nfhn3cygn8x931pqxnqq88nfc5h829xncr1j8ifaqzm";
+  })
+  (fetchurl {
+    url = "http://cgit.freedesktop.org/ooo-build/l10n/snapshot/ooo/OOO320_m12.tar.bz2";
+    name = "ooo320-m12-l10n.tar.bz2";
+    sha256 = "0lknxxl0n4f383gxkljl1294zggfgaf2hbg3f6p4q6vr1byf3lww";
+  })
+  (fetchurl {
+    url = "http://download.go-oo.org//SRC680/libwps-0.1.2.tar.gz";
+    sha256 = "1cdjmgpy0igrwlb5i1sm4s2yxvzbmqz6j7xnmmv3kpbx7z43zw78";
+  })
+  (fetchurl {
+    url = "http://download.go-oo.org//SRC680/libwpg-0.1.3.tar.gz";
+    sha256 = "1qv5qqycaqrm8arprwf3vyk76fm6v7qabpx5qq58knp1xm72z98r";
+  })
+  (fetchurl {
+    url = "http://download.go-oo.org//DEV300/ooo_oxygen_images-2009-06-17.tar.gz";
+    sha256 = "0jhgjhm63cmjr59nhvdln1szgm36v6kkazy2388l7z6xjjrhxk1z";
+  })
+]
diff --git a/pkgs/applications/video/MPlayer/default.nix b/pkgs/applications/video/MPlayer/default.nix
index 7ce8f0ed789d..e2c25c3360ce 100644
--- a/pkgs/applications/video/MPlayer/default.nix
+++ b/pkgs/applications/video/MPlayer/default.nix
@@ -8,7 +8,8 @@
 , jackaudioSupport ? false, jackaudio ? null
 , x264Support ? false, x264 ? null
 , xvidSupport ? false, xvidcore ? null
-, mesa, pkgconfig, unzip
+, lameSupport ? true, lame ? null
+, mesa, pkgconfig, unzip, yasm
 }:
 
 assert alsaSupport -> alsa != null;
@@ -53,7 +54,7 @@ stdenv.mkDerivation {
   };
 
   buildInputs =
-    [ x11 libXv freetype zlib mesa pkgconfig ]
+    [ x11 libXv freetype zlib mesa pkgconfig yasm ]
     ++ stdenv.lib.optional alsaSupport alsa
     ++ stdenv.lib.optional xvSupport libXv
     ++ stdenv.lib.optional theoraSupport libtheora
@@ -65,7 +66,8 @@ stdenv.mkDerivation {
     ++ stdenv.lib.optional jackaudioSupport jackaudio
     ++ stdenv.lib.optionals amrSupport [ amrnb amrwb ]
     ++ stdenv.lib.optional x264Support x264
-    ++ stdenv.lib.optional xvidSupport xvidcore;
+    ++ stdenv.lib.optional xvidSupport xvidcore
+    ++ stdenv.lib.optional lameSupport lame;
 
   configureFlags = ''
     ${if cacaSupport then "--enable-caca" else "--disable-caca"}
diff --git a/pkgs/build-support/fetchgit/builder.sh b/pkgs/build-support/fetchgit/builder.sh
index ba06aed90e18..794b690341e3 100644
--- a/pkgs/build-support/fetchgit/builder.sh
+++ b/pkgs/build-support/fetchgit/builder.sh
@@ -5,7 +5,16 @@ header "exporting $url (rev $rev) into $out"
 git clone "$url" $out
 if test -n "$rev"; then
   cd $out
-  git checkout $rev
+
+  # Track all remote branches so that revisions like
+  # `t/foo@{2010-05-12}' are correctly resolved.  Failing to do that,
+  # Git bails out with an "invalid reference" error.
+  for branch in $(git branch -rl | grep -v ' origin/master$')
+  do
+    git branch --track "$(echo $branch | sed -es,origin/,,g)" "$branch"
+  done
+
+  git checkout "$rev" --
 fi
 
 if test -z "$leaveDotGit"; then
diff --git a/pkgs/desktops/kde-4.4/default.nix b/pkgs/desktops/kde-4.4/default.nix
index 3982301c8d13..36c30bc9124f 100644
--- a/pkgs/desktops/kde-4.4/default.nix
+++ b/pkgs/desktops/kde-4.4/default.nix
@@ -311,6 +311,11 @@ pkgs.recurseIntoAttrs (rec {
     inherit automoc4 phonon;
   };
 
+  yakuake = import ./extragear/yakuake {
+    inherit (pkgs) stdenv fetchurl cmake perl gettext;
+    inherit kdelibs automoc4 qt4 phonon;
+  };
+
 ### LOCALIZATION
 
   l10n = pkgs.recurseIntoAttrs (import ./l10n {
diff --git a/pkgs/desktops/kde-4.4/extragear/yakuake/default.nix b/pkgs/desktops/kde-4.4/extragear/yakuake/default.nix
new file mode 100644
index 000000000000..30d3d6a9c2c2
--- /dev/null
+++ b/pkgs/desktops/kde-4.4/extragear/yakuake/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, kdelibs, cmake, gettext, perl, automoc4, qt4, phonon }:
+
+stdenv.mkDerivation rec {
+  name = "yakuake-2.9.6";
+
+  src = fetchurl {
+    url = "http://download.berlios.de/yakuake/${name}.tar.bz2";
+    sha256 = "08n6kdzk205rq1bs4yx5f2qawz6xigdhn9air0pbjsi1j630yfzq";
+  };
+
+  buildInputs = [ kdelibs cmake gettext perl automoc4 qt4 phonon stdenv.gcc.libc ];
+
+  meta = with stdenv.lib; {
+    homepage = http://yakuake.kde.org;
+    description = "Quad-style terminal emulator for KDE";
+    maintainers = [ maintainers.urkud ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/compilers/gcc-4.5/builder.sh b/pkgs/development/compilers/gcc-4.5/builder.sh
index 3be8e7951627..6c3ced85d754 100644
--- a/pkgs/development/compilers/gcc-4.5/builder.sh
+++ b/pkgs/development/compilers/gcc-4.5/builder.sh
@@ -15,6 +15,12 @@ else
     EXTRA_LDFLAGS=""
 fi
 
+# GCC interprets empty paths as ".", which we don't want.
+if test -z "$CPATH"; then unset CPATH; fi
+if test -z "$LIBRARY_PATH"; then unset LIBRARY_PATH; fi
+echo "\$CPATH is \`$CPATH'"
+echo "\$LIBRARY_PATH is \`$LIBRARY_PATH'"
+
 if test "$noSysDirs" = "1"; then
 
     if test -e $NIX_GCC/nix-support/orig-libc; then
@@ -48,21 +54,9 @@ if test "$noSysDirs" = "1"; then
         EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,$i"
     done
 
-    if test -n "$targetConfig"; then
-        # Cross-compiling, we need gcc not to read ./specs in order to build
-        # the g++ compiler (after the specs for the cross-gcc are created).
-        # Having LIBRARY_PATH= makes gcc read the specs from ., and the build
-        # breaks. Having this variable comes from the default.nix code to bring
-        # gcj in.
-        unset LIBRARY_PATH
-        unset CPATH
-        if test -z "$crossStageStatic" -o -n "$crossMingw"; then
-            EXTRA_FLAGS_TARGET="-g0 -O2 -B${libcCross}/lib -idirafter ${libcCross}/include"
-            EXTRA_LDFLAGS_TARGET="-Wl,-L${libcCross}/lib"
-        fi
-    else
-        EXTRA_FLAGS_TARGET="$EXTRA_FLAGS"
-        EXTRA_LDFLAGS_TARGET="$EXTRA_LDFLAGS"
+    if test -z "$targetConfig"; then
+        EXTRA_TARGET_CFLAGS="$EXTRA_FLAGS"
+        EXTRA_TARGET_LDFLAGS="$EXTRA_LDFLAGS"
     fi
 
     # CFLAGS_FOR_TARGET are needed for the libstdc++ configure script to find
@@ -74,17 +68,17 @@ if test "$noSysDirs" = "1"; then
         NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \
         SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \
         CFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
-        CFLAGS_FOR_TARGET="$EXTRA_FLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \
-        FLAGS_FOR_TARGET="$EXTRA_FLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \
+        CFLAGS_FOR_TARGET="$EXTRA_TARGET_CFLAGS" \
+        FLAGS_FOR_TARGET="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \
         LDFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
-        LDFLAGS_FOR_TARGET="$EXTRA_FLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \
+        LDFLAGS_FOR_TARGET="$EXTRA_TARGET_LDFLAGS" \
         )
 
     if test -z "$targetConfig"; then
         makeFlagsArray=( \
             "${makeFlagsArray[@]}" \
             BOOT_CFLAGS="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
-            BOOT_LDFLAGS="$EXTRA_FLAGS_TARGET $EXTRA_LDFLAGS_TARGET" \
+            BOOT_LDFLAGS="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
             )
     fi
 
diff --git a/pkgs/development/compilers/gcc-4.5/default.nix b/pkgs/development/compilers/gcc-4.5/default.nix
index 9ef82293242f..855ac76aebbe 100644
--- a/pkgs/development/compilers/gcc-4.5/default.nix
+++ b/pkgs/development/compilers/gcc-4.5/default.nix
@@ -7,6 +7,7 @@
 , staticCompiler ? false
 , enableShared ? true
 , texinfo ? null
+, perl ? null # optional, for texi2pod (then pod2man); required for Java
 , gmp, mpfr, mpc, gettext, which
 , libelf                      # optional, for link-time optimizations (LTO)
 , ppl ? null, cloogppl ? null # optional, for the Graphite optimization framework
@@ -24,11 +25,13 @@
 , libcCross ? null
 , crossStageStatic ? true
 , gnat ? null
+, libpthread ? null, libpthreadCross ? null  # required for GNU/Hurd
 }:
 
 assert langTreelang -> bison != null && flex != null;
 assert langJava     -> zip != null && unzip != null
-                       && zlib != null && boehmgc != null;
+                       && zlib != null && boehmgc != null
+                       && perl != null;  # for `--enable-java-home'
 assert langAda      -> gnatboot != null;
 assert langVhdl     -> gnat != null;
 
@@ -36,6 +39,7 @@ assert langVhdl     -> gnat != null;
 assert libelf != null -> zlib != null;
 
 with stdenv.lib;
+with builtins;
 
 let version = "4.5.0";
     javaEcj = fetchurl {
@@ -132,7 +136,7 @@ stdenv.mkDerivation ({
   };
 
   patches =
-    [ ]
+    [ ./softfp-hurd.patch ]
     ++ optional (cross != null) ./libstdc++-target.patch
     ++ optional noSysDirs ./no-sys-dirs.patch
     # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its
@@ -141,10 +145,32 @@ stdenv.mkDerivation ({
     ++ optional langVhdl ./ghdl-ortho-cflags.patch
     ;
 
+  postPatch =
+    if (stdenv.system == "i586-pc-gnu"
+        || (cross != null && cross.config == "i586-pc-gnu"
+            && libcCross != null))
+    then
+      # On GNU/Hurd glibc refers to Hurd & Mach headers so add the right `-I'
+      # flags to the default spec string.
+      let
+        libc = if cross != null then libcCross else stdenv.glibc;
+        config_h = "gcc/config/i386/gnu.h";
+        extraCPPSpec =
+          concatStrings (intersperse " "
+                          (map (x: "-I${x}/include")
+                               libc.propagatedBuildInputs));
+      in
+        '' echo "augmenting \`CPP_SPEC' in \`${config_h}' with \`${extraCPPSpec}'..."
+           sed -i "${config_h}" \
+               -es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
+        ''
+    else null;
+
   inherit noSysDirs profiledCompiler staticCompiler langJava crossStageStatic
     libcCross crossMingw;
 
   buildInputs = [ texinfo gmp mpfr mpc libelf gettext which ]
+    ++ (optional (perl != null) perl)
     ++ (optional (ppl != null) ppl)
     ++ (optional (cloogppl != null) cloogppl)
     ++ (optionals langTreelang [bison flex])
@@ -162,7 +188,11 @@ stdenv.mkDerivation ({
     ${if enableShared then "" else "--disable-shared"}
     ${if ppl != null then "--with-ppl=${ppl}" else ""}
     ${if cloogppl != null then "--with-cloog=${cloogppl}" else ""}
-    ${if langJava then "--with-ecj-jar=${javaEcj}" else ""}
+    ${if langJava then
+      "--with-ecj-jar=${javaEcj} " +
+      "--enable-java-home --with-java-home=\${prefix} " +
+      "--with-jvm-root-dir=\${prefix}/jdk"
+      else ""}
     ${if javaAwtGtk then "--enable-java-awt=gtk" else ""}
     ${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr}" else ""}
     --with-gmp=${gmp}
@@ -212,15 +242,35 @@ stdenv.mkDerivation ({
                                   (optionals (zlib != null) [ zlib ]
                                    ++ optionals langJava [ boehmgc ]
                                    ++ optionals javaAwtGtk xlibs
-                                   ++ optionals javaAwtGtk [ gmp mpfr ])));
+                                   ++ optionals javaAwtGtk [ gmp mpfr ]
+                                   ++ optional (libpthread != null) libpthread
+                                   ++ optional (libpthreadCross != null) libpthreadCross
+
+                                   # On GNU/Hurd glibc refers to Mach & Hurd
+                                   # headers.
+                                   ++ optionals (libcCross != null &&
+                                                 hasAttr "propagatedBuildInputs" libcCross)
+                                        libcCross.propagatedBuildInputs)));
 
   LIBRARY_PATH = concatStrings
                    (intersperse ":" (map (x: x + "/lib")
                                          (optionals (zlib != null) [ zlib ]
                                           ++ optionals langJava [ boehmgc ]
                                           ++ optionals javaAwtGtk xlibs
-                                          ++ optionals javaAwtGtk [ gmp mpfr ])));
-
+                                          ++ optionals javaAwtGtk [ gmp mpfr ]
+                                          ++ optional (libpthread != null) libpthread)));
+
+  EXTRA_TARGET_CFLAGS =
+    if cross != null && libcCross != null
+    then "-g0 -O2 -idirafter ${libcCross}/include"
+    else null;
+
+  EXTRA_TARGET_LDFLAGS =
+    if cross != null && libcCross != null
+    then "-B${libcCross}/lib -Wl,-L${libcCross}/lib" +
+         (optionalString (libpthreadCross != null)
+           " -L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}")
+    else null;
 
   passthru = { inherit langC langCC langAda langFortran langTreelang langVhdl
       enableMultilib; };
diff --git a/pkgs/development/compilers/gcc-4.5/softfp-hurd.patch b/pkgs/development/compilers/gcc-4.5/softfp-hurd.patch
new file mode 100644
index 000000000000..7e2a8a9c2900
--- /dev/null
+++ b/pkgs/development/compilers/gcc-4.5/softfp-hurd.patch
@@ -0,0 +1,32 @@
+This patch fixes undefined references to softp symbols (__multf3, __fixunstfsi,
+__subtf3, etc.) in libgcc_s.so on GNU/Hurd.
+
+Taken from <http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00602.html>, with second
+hunk adjusted so that it applies to GCC 4.5.0.
+
+diff --git a/gcc/config.gcc b/gcc/config.gcc
+index 9e499cb..9aec392 100644
+--- a/gcc/config.gcc
++++ b/gcc/config.gcc
+@@ -3070,7 +3070,9 @@ case ${target} in
+ 	i[34567]86-*-darwin* | x86_64-*-darwin*)
+ 		tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp"
+ 		;;
+-	i[34567]86-*-linux* | x86_64-*-linux* | i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
++	i[34567]86-*-linux* | x86_64-*-linux* | \
++	  i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
++	  i[34567]86-*-gnu*)
+ 		tmake_file="${tmake_file} i386/t-fprules-softfp soft-fp/t-softfp i386/t-linux"
+ 		;;
+ 	ia64*-*-linux*)
+diff --git a/libgcc/config.host b/libgcc/config.host
+--- a/libgcc/config.host
++++ b/libgcc/config.host
+@@ -600,6 +600,7 @@ case ${host} in
+ i[34567]86-*-darwin* | x86_64-*-darwin* | \
+   i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu | \
+   i[34567]86-*-linux* | x86_64-*-linux* | \
++  i[34567]86-*-gnu* | \
+   i[34567]86-*-solaris2* | \
+   i[34567]86-*-cygwin* | i[34567]86-*-mingw* | x86_64-*-mingw*)
+ 	if test "${host_address}" = 32; then
diff --git a/pkgs/development/libraries/aspell/dictionaries.nix b/pkgs/development/libraries/aspell/dictionaries.nix
index 97a8e961b411..0d1ee3d838f3 100644
--- a/pkgs/development/libraries/aspell/dictionaries.nix
+++ b/pkgs/development/libraries/aspell/dictionaries.nix
@@ -72,6 +72,15 @@ in {
     };
   };
     
+  it = buildDict {
+    shortName = "it-0.53-0";
+    fullName = "Italian";
+    src = fetchurl {
+      url = mirror://gnu/aspell/dict/it/aspell-it-0.53-0.tar.bz2;
+      sha256 = "0vzs2mk0h2znx0jjs5lqiwdrc4nf6v3f8xbrsni8pfnxhh5ik1rv";
+    };
+  };
+    
   la = buildDict {
     shortName = "la-20020503-0";
     fullName = "Latin";
diff --git a/pkgs/development/libraries/consolekit/0001-Don-t-daemonize-when-activated.patch b/pkgs/development/libraries/consolekit/0001-Don-t-daemonize-when-activated.patch
new file mode 100644
index 000000000000..30f3ab4907b0
--- /dev/null
+++ b/pkgs/development/libraries/consolekit/0001-Don-t-daemonize-when-activated.patch
@@ -0,0 +1,28 @@
+Upstream patch
+
+From fc2870a65f6b3ed3b71bcac69c5faf3a9c759c64 Mon Sep 17 00:00:00 2001
+From: Matthias Clasen <mclasen@redhat.com>
+Date: Mon, 21 Dec 2009 11:13:23 -0500
+Subject: [PATCH 1/2] Don't daemonize when activated
+
+It confuses some versions of D-Bus and isn't needed
+(or wanted it).
+
+http://bugs.freedesktop.org/show_bug.cgi?id=25642
+---
+ data/org.freedesktop.ConsoleKit.service.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/data/org.freedesktop.ConsoleKit.service.in b/data/org.freedesktop.ConsoleKit.service.in
+index ec2128c..d716a36 100644
+--- a/data/org.freedesktop.ConsoleKit.service.in
++++ b/data/org.freedesktop.ConsoleKit.service.in
+@@ -1,4 +1,4 @@
+ [D-BUS Service]
+ Name=org.freedesktop.ConsoleKit
+-Exec=@sbindir@/console-kit-daemon
++Exec=@sbindir@/console-kit-daemon --no-daemon
+ User=root
+-- 
+1.7.1
+
diff --git a/pkgs/development/libraries/consolekit/0002-Don-t-take-bus-name-until-ready.patch b/pkgs/development/libraries/consolekit/0002-Don-t-take-bus-name-until-ready.patch
new file mode 100644
index 000000000000..2af59ac8d1e5
--- /dev/null
+++ b/pkgs/development/libraries/consolekit/0002-Don-t-take-bus-name-until-ready.patch
@@ -0,0 +1,62 @@
+Upstream patch
+
+From 2418840248f07025ad0edc96ed17e03ce5e47f3e Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Mon, 21 Dec 2009 11:14:54 -0500
+Subject: [PATCH 2/2] Don't take bus name until ready
+
+Previously, we would take a bus name right away, but
+not register the manager object until later.  This
+causes a race when being activated by a method call
+on the manager object, where ConsoleKit gets started
+but the method call fails.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=25744
+---
+ src/main.c |   16 ++++++++--------
+ 1 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/src/main.c b/src/main.c
+index 809c6d6..b8f698f 100644
+--- a/src/main.c
++++ b/src/main.c
+@@ -294,11 +294,19 @@ main (int    argc,
+ 
+         setup_debug_log (debug);
+ 
++        g_debug ("initializing console-kit-daemon %s", VERSION);
++
+         connection = get_system_bus ();
+         if (connection == NULL) {
+                 goto out;
+         }
+ 
++        manager = ck_manager_new ();
++
++        if (manager == NULL) {
++                goto out;
++        }
++
+         bus_proxy = get_bus_proxy (connection);
+         if (bus_proxy == NULL) {
+                 g_warning ("Could not construct bus_proxy object; bailing out");
+@@ -310,16 +318,8 @@ main (int    argc,
+                 goto out;
+         }
+ 
+-        g_debug ("initializing console-kit-daemon %s", VERSION);
+-
+         create_pid_file ();
+ 
+-        manager = ck_manager_new ();
+-
+-        if (manager == NULL) {
+-                goto out;
+-        }
+-
+         loop = g_main_loop_new (NULL, FALSE);
+ 
+         g_signal_connect (bus_proxy,
+-- 
+1.7.1
+
diff --git a/pkgs/development/libraries/consolekit/default.nix b/pkgs/development/libraries/consolekit/default.nix
index d6ea4a9e79bd..5cebc5874bd7 100644
--- a/pkgs/development/libraries/consolekit/default.nix
+++ b/pkgs/development/libraries/consolekit/default.nix
@@ -10,6 +10,8 @@ stdenv.mkDerivation rec {
   };
   
   buildInputs = [ pkgconfig dbus_glib zlib pam glib libX11 polkit expat ];
+  patches = [ ./0001-Don-t-daemonize-when-activated.patch
+    ./0002-Don-t-take-bus-name-until-ready.patch ];
 
   # For console-kit to get the rpath to libgcc_s, needed for pthread_cancel to work
   NIX_LDFLAGS = "-lgcc_s";
diff --git a/pkgs/development/libraries/ffmpeg/default.nix b/pkgs/development/libraries/ffmpeg/default.nix
index 70f7feaaf1a9..2cc24d32c3ab 100644
--- a/pkgs/development/libraries/ffmpeg/default.nix
+++ b/pkgs/development/libraries/ffmpeg/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, faad2, libtheora, speex, libvorbis, x264, pkgconfig, xvidcore}:
+{stdenv, fetchurl, faad2, libtheora, speex, libvorbis, x264, pkgconfig, xvidcore, lame, yasm}:
 
 stdenv.mkDerivation {
   name = "ffmpeg-0.5.1";
@@ -24,9 +24,11 @@ stdenv.mkDerivation {
     --enable-libspeex
     --enable-libx264
     --enable-libxvid
+    --enable-libmp3lame
+    --enable-runtime-cpudetect
   '';
 
-  buildInputs = [faad2 libtheora speex libvorbis x264 pkgconfig xvidcore];
+  buildInputs = [faad2 libtheora speex libvorbis x264 pkgconfig xvidcore lame yasm];
 
   meta = {
     homepage = http://www.ffmpeg.org/;
diff --git a/pkgs/development/libraries/glibc-2.11/builder2.sh b/pkgs/development/libraries/glibc-2.11/builder2.sh
new file mode 100644
index 000000000000..f156e647e0b4
--- /dev/null
+++ b/pkgs/development/libraries/glibc-2.11/builder2.sh
@@ -0,0 +1,58 @@
+### XXX: This file should replace `builder.sh' in the `stdenv-updates'
+### branch!
+
+# Glibc cannot have itself in its RPATH.
+export NIX_NO_SELF_RPATH=1
+
+source $stdenv/setup
+
+postConfigure() {
+    # Hack: get rid of the `-static' flag set by the bootstrap stdenv.
+    # This has to be done *after* `configure' because it builds some
+    # test binaries.
+    export NIX_CFLAGS_LINK=
+    export NIX_LDFLAGS_BEFORE=
+
+    export NIX_DONT_SET_RPATH=1
+    unset CFLAGS
+}
+
+
+postInstall() {
+    if test -n "$installLocales"; then
+        make localedata/install-locales
+    fi
+    
+    test -f $out/etc/ld.so.cache && rm $out/etc/ld.so.cache
+
+    # FIXME: Use `test -n $linuxHeaders' when `kernelHeaders' has been
+    # renamed.
+    if test -z "$hurdHeaders"; then
+        # Include the Linux kernel headers in Glibc, except the `scsi'
+        # subdirectory, which Glibc provides itself.
+	(cd $out/include && \
+	 ln -sv $(ls -d $kernelHeaders/include/* | grep -v 'scsi$') .)
+    fi
+
+    if test -f "$out/lib/libhurduser.so"; then
+	# libc.so, libhurduser.so, and libmachuser.so depend on each
+	# other, so add them to libc.so (a RUNPATH on libc.so.0.3
+	# would be ignored by the cross-linker.)
+	echo "adding \`libhurduser.so' and \`libmachuser.so' to the \`libc.so' linker script..."
+	sed -i "$out/lib/libc.so" \
+	    -e"s|\(libc\.so\.[^ ]\+\>\)|\1 $out/lib/libhurduser.so $out/lib/libmachuser.so|g"
+    fi
+	
+    # Fix for NIXOS-54 (ldd not working on x86_64).  Make a symlink
+    # "lib64" to "lib".
+    if test -n "$is64bit"; then
+        ln -s lib $out/lib64
+    fi
+
+    # This file, that should not remain in the glibc derivation,
+    # may have not been created during the preInstall
+    rm -f $out/lib/libgcc_s.so.1
+}
+
+
+genericBuild
diff --git a/pkgs/development/libraries/glibc-2.11/common.nix b/pkgs/development/libraries/glibc-2.11/common.nix
index e7e9738140aa..f227db3c632d 100644
--- a/pkgs/development/libraries/glibc-2.11/common.nix
+++ b/pkgs/development/libraries/glibc-2.11/common.nix
@@ -10,8 +10,9 @@ cross :
 , preConfigure ? "", ... }@args :
 
 let
-  rev = "df4c3faf0ccc848b5a8086c222bdb42679a9798f";
-  version = if hurdHeaders != null then "0.0-pre" + rev else "2.11.1";
+  date = "2010-05-12";
+  rev = "tschwinge/Roger_Whittaker@{${date}}";
+  version = if hurdHeaders != null then date else "2.11.1";
 in
 
 assert (cross != null) -> (gccCross != null);
@@ -100,6 +101,8 @@ stdenv.mkDerivation ({
   NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (stdenv.system == "i686-linux") "-U__i686";
 }
 
+# FIXME: This is way too broad and causes the *native* glibc to have a
+# different store path dependending on whether `cross' is null or not.
 // args //
 
 {
diff --git a/pkgs/development/libraries/glibc-2.11/default.nix b/pkgs/development/libraries/glibc-2.11/default.nix
index 7c92a0fe41b4..a9d82e677b17 100644
--- a/pkgs/development/libraries/glibc-2.11/default.nix
+++ b/pkgs/development/libraries/glibc-2.11/default.nix
@@ -39,7 +39,21 @@ in
   //
 
   (if hurdHeaders != null
-   then { inherit machHeaders hurdHeaders mig fetchgit; }
+   then rec {
+     inherit machHeaders hurdHeaders mig fetchgit;
+
+     propagatedBuildInputs = [ machHeaders hurdHeaders ];
+
+     passthru = {
+       # When building GCC itself `propagatedBuildInputs' above is not
+       # honored, so we pass it here so that the GCC builder can do the right
+       # thing.
+       inherit propagatedBuildInputs;
+     };
+
+     # XXX: Remove this hack in `stdenv-updates'.
+     builder = ./builder2.sh;
+   }
    else { })
 
   //
diff --git a/pkgs/development/libraries/gpgme/default.nix b/pkgs/development/libraries/gpgme/default.nix
index 64f1a746b03c..42a592bf2dcc 100644
--- a/pkgs/development/libraries/gpgme/default.nix
+++ b/pkgs/development/libraries/gpgme/default.nix
@@ -1,10 +1,11 @@
-args: with args;
+{stdenv, fetchurl, libgpgerror, gnupg, pkgconfig, glib, pth, libassuan}:
 
-stdenv.mkDerivation {
-  name = "gpgme-1.1.4";
+stdenv.mkDerivation rec {
+  name = "gpgme-1.3.0";
   src = fetchurl {
-    url = ftp://ftp.gnupg.org/gcrypt/gpgme/gpgme-1.1.4.tar.bz2;
-    sha256 = "0ncrv7p33rjq1avkxpp9x0gz6wna9y3b3dmw6nv366n5mgvxmpg8";
+    url = "ftp://ftp.gnupg.org/gcrypt/gpgme/${name}.tar.bz2";
+    sha256 = "18g6wgiacnbj437yfsczbjxaf041ljia48dnv2qgcqb0sky41q3l";
   };
-  buildInputs = [libgpgerror gnupg gnupg2 pkgconfig glib pth];
+  buildInputs = [libgpgerror gnupg pkgconfig glib pth libassuan];
+  configureFlags = "--with-gpg=${gnupg}/bin/gpg2";
 }
diff --git a/pkgs/development/libraries/gss/default.nix b/pkgs/development/libraries/gss/default.nix
index bf47c79f7506..ca92fe307980 100644
--- a/pkgs/development/libraries/gss/default.nix
+++ b/pkgs/development/libraries/gss/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv }:
+{ fetchurl, stdenv, shishi }:
 
 stdenv.mkDerivation rec {
   name = "gss-1.0.0";
@@ -8,16 +8,22 @@ stdenv.mkDerivation rec {
     sha256 = "0rcbzg19m7bddvbhjqv1iwyydkj61czb0xr691mkj0i5p4d4bakk";
   };
 
+  buildInputs = [ shishi ];
+
   doCheck = true;
 
+  # Work around the lack of `-lshishi' for `krb5context'.  See
+  # <http://lists.gnu.org/archive/html/help-gsasl/2010-05/msg00005.html>.
+  checkPhase = "make check LDFLAGS=-lshishi";
+
   meta = {
     description = "GNU GSS Generic Security Service";
 
     longDescription =
       '' GSS is an implementation of the Generic Security Service Application
-         Program Interface (GSS-API). GSS-API is used by network servers to 
-         provide security services, e.g., to authenticate SMTP/IMAP clients 
-         against SMTP/IMAP servers. 
+	 Program Interface (GSS-API). GSS-API is used by network servers to
+	 provide security services, e.g., to authenticate SMTP/IMAP clients
+	 against SMTP/IMAP servers.
        '';
 
     homepage = http://www.gnu.org/software/gss/;
diff --git a/pkgs/development/libraries/hwloc/default.nix b/pkgs/development/libraries/hwloc/default.nix
index 53c33787da59..5c3d37729e6d 100644
--- a/pkgs/development/libraries/hwloc/default.nix
+++ b/pkgs/development/libraries/hwloc/default.nix
@@ -1,19 +1,14 @@
-{ stdenv, fetchurl, pkgconfig, cairo, expat, ncurses
-, autoconf, automake, libtool }:
+{ stdenv, fetchurl, pkgconfig, cairo, expat, ncurses }:
 
 stdenv.mkDerivation rec {
-  name = "hwloc-1.0rc1";
+  name = "hwloc-1.0";
 
   src = fetchurl {
     url = "http://www.open-mpi.org/software/hwloc/v1.0/downloads/${name}.tar.bz2";
-    sha256 = "0mgjlyfwp1pbl2312l9diwjw53yb9hb62slmvcb3xvhqdwvj0d7s";
+    sha256 = "1s64w026idxrkf0y56q4cybapz7yldn1xycnfh1d5bj7v7ncds21";
   };
 
-  patches = [ ./ncurses.patch ];
-
-  preConfigure = "autoreconf -vfi";
-
-  buildInputs = [ autoconf automake libtool pkgconfig cairo expat ncurses ];
+  buildInputs = [ pkgconfig cairo expat ncurses ];
 
   doCheck = true;
 
diff --git a/pkgs/development/libraries/libassuan/default.nix b/pkgs/development/libraries/libassuan/default.nix
index 9a161ec170f4..90ee45865ed4 100644
--- a/pkgs/development/libraries/libassuan/default.nix
+++ b/pkgs/development/libraries/libassuan/default.nix
@@ -1,14 +1,14 @@
-{ fetchurl, stdenv, pth }:
+{ fetchurl, stdenv, pth, libgpgerror }:
 
 stdenv.mkDerivation rec {
-  name = "libassuan-1.0.5";
+  name = "libassuan-2.0.0";
 
   src = fetchurl {
     url = "mirror://gnupg/libassuan/${name}.tar.bz2";
-    sha256 = "1xar8i5jmah75wa9my4x7vkc5b6nmzd2p6k9kmpdg9hsv04292y5";
+    sha256 = "13vzs4jxscnlskwzd3wpqwnfb5f0hwqc75rbi8j9f42bs6q08apx";
   };
 
-  propagatedBuildInputs = [ pth ];
+  propagatedBuildInputs = [ pth libgpgerror ];
 
   doCheck = true;
 
diff --git a/pkgs/development/libraries/libassuan1/default.nix b/pkgs/development/libraries/libassuan1/default.nix
new file mode 100644
index 000000000000..9a161ec170f4
--- /dev/null
+++ b/pkgs/development/libraries/libassuan1/default.nix
@@ -0,0 +1,28 @@
+{ fetchurl, stdenv, pth }:
+
+stdenv.mkDerivation rec {
+  name = "libassuan-1.0.5";
+
+  src = fetchurl {
+    url = "mirror://gnupg/libassuan/${name}.tar.bz2";
+    sha256 = "1xar8i5jmah75wa9my4x7vkc5b6nmzd2p6k9kmpdg9hsv04292y5";
+  };
+
+  propagatedBuildInputs = [ pth ];
+
+  doCheck = true;
+
+  meta = {
+    description = "Libassuan, the IPC library used by GnuPG and related software";
+
+    longDescription = ''
+      Libassuan is a small library implementing the so-called Assuan
+      protocol.  This protocol is used for IPC between most newer
+      GnuPG components.  Both, server and client side functions are
+      provided.
+    '';
+
+    homepage = http://gnupg.org;
+    license = "LGPLv2+";
+  };
+}
diff --git a/pkgs/development/libraries/libksba/default.nix b/pkgs/development/libraries/libksba/default.nix
index 513afc474ea0..ec2468aca1d3 100644
--- a/pkgs/development/libraries/libksba/default.nix
+++ b/pkgs/development/libraries/libksba/default.nix
@@ -1,11 +1,11 @@
-args: with args;
+{ stdenv, fetchurl, libgpgerror }:
 
 stdenv.mkDerivation rec {
-  name = "libksba-1.0.2";
+  name = "libksba-1.0.7";
 
   src = fetchurl {
-    url = "ftp://ftp.gnupg.org/gcrypt/libksba/${name}.tar.bz2";
-    sha256 = "1jkjh1daaykkrfq0s4vv8ddf0w8agdvspg9qm0ghjidlrfnsfiwh";
+    url = "mirror://gnupg/libksba/${name}.tar.bz2";
+    sha256 = "1biabl4ijaf0jyl4zf3qrhcs0iaq9pypjibp8wgnim3n3kg0bdda";
   };
 
   propagatedBuildInputs = [libgpgerror];
diff --git a/pkgs/development/libraries/libvpx/default.nix b/pkgs/development/libraries/libvpx/default.nix
new file mode 100644
index 000000000000..43c29524d58c
--- /dev/null
+++ b/pkgs/development/libraries/libvpx/default.nix
@@ -0,0 +1,32 @@
+{stdenv, fetchurl, bash}:
+
+stdenv.mkDerivation rec {
+  name = "libvpx-0.9.0";
+  
+  src = fetchurl {
+    url = http://webm.googlecode.com/files/libvpx-0.9.0.tar.bz2;
+    sha256 = "1p5rl7r8zpw43n8i38wv73na8crkkakw16yx0v7n3ywwhp36l2d0";
+  };
+
+  patchPhase = ''
+    sed -e 's,/bin/bash,${bash}/bin/bash,' -i configure build/make/version.sh \
+      examples/gen_example_code.sh
+  '';
+
+  configurePhase = ''
+    mkdir -p build
+    cd build
+    ../configure --disable-install-srcs --disable-examples --enable-vp8 --enable-runtime-cpu-detect
+  '';
+
+  installPhase = ''
+    make quiet=false DIST_DIR=$out install
+  '';
+
+  meta = {
+    description = "VP8 video encoder";
+    homepage = http://code.google.com/p/webm;
+    license = "BSD";
+  };
+}
+
diff --git a/pkgs/development/python-modules/pycrypto/default.nix b/pkgs/development/python-modules/pycrypto/default.nix
index 67413fa93708..09f8591e9719 100644
--- a/pkgs/development/python-modules/pycrypto/default.nix
+++ b/pkgs/development/python-modules/pycrypto/default.nix
@@ -1,15 +1,26 @@
-{stdenv, fetchurl, python, gmp}:
+{ stdenv, fetchurl, python, gmp }:
 
-stdenv.mkDerivation {
-  name = "pycrypto-2.0.1";
+stdenv.mkDerivation rec {
+  name = "pycrypto-2.1.0";
+  
   src = fetchurl {
-    url = http://www.amk.ca/files/python/crypto/pycrypto-2.0.1.tar.gz;
-    md5 = "4d5674f3898a573691ffb335e8d749cd";
+    url = "http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/${name}.tar.gz";
+    sha256 = "18nq49l8wplg54hz9h26n61rq49vjzmy5xzlkm1g0j82x8i1qgi5";
   };
-  buildInputs = [python gmp];
+  
+  buildInputs = [ python gmp ];
+  
   buildPhase = "true";
-  installPhase = "
-    python ./setup.py build_ext --library-dirs=${gmp}/lib
-    python ./setup.py install --prefix=$out
-  ";
+  
+  installPhase =
+    ''
+      python ./setup.py build_ext --library-dirs=${gmp}/lib
+      python ./setup.py install --prefix=$out
+    '';
+
+  meta = {
+    homepage = http://www.dlitz.net/software/pycrypto/;
+    description = "Python Cryptography Toolkit";
+    platforms = stdenv.lib.platforms.linux;
+  };
 }
diff --git a/pkgs/lib/customisation.nix b/pkgs/lib/customisation.nix
index e6a26958ae2e..334c80366275 100644
--- a/pkgs/lib/customisation.nix
+++ b/pkgs/lib/customisation.nix
@@ -1,4 +1,7 @@
-let lib = import ./default.nix; in
+let lib = import ./default.nix;
+    inherit (builtins) getAttr attrNames isFunction;
+
+in
 
 rec {
 
@@ -31,7 +34,10 @@ rec {
   overrideDerivation = drv: f:
     let
       # Filter out special attributes.
-      attrs = removeAttrs drv ["meta" "passthru" "outPath" "drvPath" "hostDrv" "buildDrv" "type" "override" "deepOverride" "origArgs"];
+      drop = ["meta" "passthru" "outPath" "drvPath" "hostDrv" "buildDrv" "type" "override" "deepOverride" "origArgs"]
+              # also drop functions such as .merge .override etc
+             ++ lib.filter (n: isFunction (getAttr n drv)) (attrNames drv);
+      attrs = removeAttrs drv drop;
       newDrv = derivation (attrs // (f drv));
     in newDrv //
       { meta = if drv ? meta then drv.meta else {};
diff --git a/pkgs/misc/misc.nix b/pkgs/misc/misc.nix
index fc8ab43d52ff..3e4e94fbc78d 100644
--- a/pkgs/misc/misc.nix
+++ b/pkgs/misc/misc.nix
@@ -1,6 +1,6 @@
 { pkgs, stdenv } :
 
-let inherit (pkgs) stdenv runCommand perl;
+let inherit (pkgs) stdenv runCommand perl lib;
 
 in
 
@@ -106,4 +106,30 @@ in
       echo "''${PATH}" > $target/PATH
     '';
   };
+
+
+  # build a debug version of a package
+  debugVersion = pkg: lib.overrideDerivation pkg (attrs: {
+
+    prePhases = ["preHook"] ++ lib.optionals (pkgs ? prePhases) pkgs.prePhases;
+
+    dontStrip = true;
+
+    NIX_STRIP_DEBUG=0;
+    CFLAGS="-ggdb -O0";
+    CXXFLAGS="-ggdb -O0";
+
+    preHook = ''
+      s=$out/src
+      mkdir -p $s; cd $s;
+      export TMP=$s
+      export TEMP=$s
+
+      for var in CFLAGS CXXFLAGS NIX_CFLAGS_COMPILE; do
+        declare -x "$var=''${!var} -ggdb -O0"
+      done
+      echo "file should tell that executable has not been strippee"
+    '';
+
+  });
 }
diff --git a/pkgs/os-specific/gnu/hurd/default.nix b/pkgs/os-specific/gnu/hurd/default.nix
index c9e1a1e6cab0..88203a31d3b1 100644
--- a/pkgs/os-specific/gnu/hurd/default.nix
+++ b/pkgs/os-specific/gnu/hurd/default.nix
@@ -1,9 +1,21 @@
 { fetchgit, stdenv, autoconf, automake, libtool, texinfo
-, machHeaders, mig, headersOnly ? true }:
+, machHeaders, mig, headersOnly ? true
+, cross ? null, gccCross ? null, glibcCross ? null
+, buildTarget ? "all", installTarget ? "install" }:
 
-let rev = "7913beaef3e6a2c4f7f315a8db7a31dbe1f713e0"; in
-stdenv.mkDerivation (rec {
-  name = "hurd-0.4-${rev}";
+assert (cross != null) -> (gccCross != null);
+
+let
+  date   = "2010-05-12";
+  rev    = "master@{${date}}";
+  suffix = if headersOnly
+           then "-headers"
+           else (if buildTarget != "all"
+                 then "-minimal"
+                 else "");
+in
+stdenv.mkDerivation ({
+  name = "hurd${suffix}-${date}";
 
   src = fetchgit {
     url = "git://git.sv.gnu.org/hurd/hurd.git";
@@ -11,13 +23,27 @@ stdenv.mkDerivation (rec {
     inherit rev;
   };
 
-  buildInputs = [ autoconf automake libtool texinfo mig ];
+  buildInputs = [ autoconf automake libtool texinfo mig ]
+    ++ stdenv.lib.optional (gccCross != null) gccCross
+    ++ stdenv.lib.optional (glibcCross != null) glibcCross;
+
   propagatedBuildInputs = [ machHeaders ];
 
-  configureFlags = "--build=i586-pc-gnu";
+  configureFlags = stdenv.lib.optionals headersOnly [ "--build=i586-pc-gnu" ];
 
   preConfigure = "autoreconf -vfi";
 
+  patchPhase =
+    '' echo "removing \`-o root' from makefiles..."
+       for mf in {utils,daemons}/Makefile
+       do
+         sed -i "$mf" -e's/-o root//g'
+       done
+    '';
+
+  buildPhase = "make ${buildTarget}";
+  installPhase = "make ${installTarget}";
+
   meta = {
     description = "The GNU Hurd, GNU project's replacement for the Unix kernel";
 
@@ -41,4 +67,12 @@ stdenv.mkDerivation (rec {
 
 (if headersOnly
  then { buildPhase = ":"; installPhase = "make install-headers"; }
- else {}))
+ else (if (cross != null)
+       then {
+         crossConfig = cross.config;
+
+         # The `configure' script wants to build executables so tell it where
+         # to find `crt1.o' et al.
+         LDFLAGS = "-B${glibcCross}/lib";
+       }
+       else { })))
diff --git a/pkgs/os-specific/gnu/libpthread/default.nix b/pkgs/os-specific/gnu/libpthread/default.nix
new file mode 100644
index 000000000000..11adc6187912
--- /dev/null
+++ b/pkgs/os-specific/gnu/libpthread/default.nix
@@ -0,0 +1,65 @@
+{ fetchgit, stdenv, autoconf, automake, libtool
+, machHeaders, hurdHeaders, hurd
+, cross ? null, gccCross ? null, glibcCross ? null }:
+
+assert (cross != null) -> (gccCross != null) && (glibcCross != null);
+
+let
+  date = "2010-05-12";
+
+  # Use the weird branch prescribed in
+  # <http://www.gnu.org/software/hurd/hurd/building/cross-compiling.html>.
+  rev = "tschwinge/Peter_Herbolzheimer@{${date}}";
+in
+stdenv.mkDerivation ({
+  name = "libpthread-hurd-${date}";
+
+  src = fetchgit {
+    url = "git://git.sv.gnu.org/hurd/libpthread.git";
+    sha256 = "1wya9kfmqgn04l995a25p4hxfwddjahfmhdzljb4cribw0bqdizg";
+    inherit rev;
+  };
+
+  buildNativeInputs = [ autoconf automake libtool ];
+  buildInputs = [ machHeaders hurdHeaders hurd ]
+   ++ stdenv.lib.optional (gccCross != null) gccCross;
+
+  preConfigure = "autoreconf -vfi";
+
+  meta = {
+    description = "GNU Hurd's libpthread";
+
+    license = "LGPLv2+";
+
+    maintainers = [ stdenv.lib.maintainers.ludo ];
+  };
+}
+
+//
+
+(if cross != null
+ then {
+   crossConfig = cross.config;
+
+   # Tell gcc where to find `crt1.o' et al.  This is specified in two
+   # different ways: one for gcc as run from `configure', and one for linking
+   # libpthread.so (by default `libtool --mode=link' swallows `-B', hence
+   # this workaround; see
+   # <http://lists.gnu.org/archive/html/bug-libtool/2010-05/msg00012.html>.)
+   LDFLAGS = "-B${glibcCross}/lib";
+   makeFlags = [ "LDFLAGS=-Wc,-B${glibcCross}/lib" ];
+
+   # Help the linker find glibc.
+   CPATH = "${glibcCross}/include";
+   LIBRARY_PATH = "${glibcCross}/lib";
+
+   passthru = {
+     # Extra target LDFLAGS to allow the cross-linker to find the
+     # dependencies of the cross libpthread.so, namely libihash.so.
+     #
+     # This is actually only useful while building the final cross-gcc, since
+     # afterwards gcc-cross-wrapper should add the relevant flags.
+     TARGET_LDFLAGS = "-Wl,-rpath-link=${hurd}/lib";
+   };
+ }
+ else { }))
diff --git a/pkgs/os-specific/gnu/mach/default.nix b/pkgs/os-specific/gnu/mach/default.nix
index 9bb08ef36fba..49f1f4883a3b 100644
--- a/pkgs/os-specific/gnu/mach/default.nix
+++ b/pkgs/os-specific/gnu/mach/default.nix
@@ -3,10 +3,12 @@
 
 assert (!headersOnly) -> (mig != null);
 
-let rev = "7987a711e8f13c0543e87a0211981f4b40ef6d94";
+let
+  date = "2010-05-12";
+  rev = "master@{${date}}";
 in
-stdenv.mkDerivation (rec {
-  name = "gnumach-1.4-${rev}";
+stdenv.mkDerivation ({
+  name = "gnumach${if headersOnly then "-headers" else ""}-${date}";
 
   src = fetchgit {
     url = "git://git.sv.gnu.org/hurd/gnumach.git";
diff --git a/pkgs/development/tools/misc/mig/default.nix b/pkgs/os-specific/gnu/mig/default.nix
index d09dc9dd4b03..68951e84e2d5 100644
--- a/pkgs/development/tools/misc/mig/default.nix
+++ b/pkgs/os-specific/gnu/mig/default.nix
@@ -1,9 +1,11 @@
-{ fetchgit, stdenv, autoconf, automake, flex, bison, machHeaders
-, cross ? null }:
+{ fetchgit, stdenv, autoconf, automake, flex, bison, machHeaders }:
 
-let rev = "4fee6a5652f609cb68cdbd9049d4da7a194f15f8"; in
-stdenv.mkDerivation rec {
-  name = "mig-1.4-${rev}";
+let
+  date = "2010-05-12";
+  rev = "master@{${date}}";
+in
+stdenv.mkDerivation {
+  name = "mig-${date}";
 
   src = fetchgit {
     url = "git://git.sv.gnu.org/hurd/mig.git";
@@ -15,8 +17,9 @@ stdenv.mkDerivation rec {
 
   preConfigure = "autoreconf -vfi";
 
-  configureFlags =
-    stdenv.lib.optionalString (cross != null) "--build=${cross.config}";
+  configureFlags = [ "--build=i586-pc-gnu" ];
+
+  doCheck = true;
 
   meta = {
     description = "GNU MIG, the Mach interface generator";
diff --git a/pkgs/os-specific/linux/ati-drivers/default.nix b/pkgs/os-specific/linux/ati-drivers/default.nix
index 9c936544034c..be5eff7e56e2 100644
--- a/pkgs/os-specific/linux/ati-drivers/default.nix
+++ b/pkgs/os-specific/linux/ati-drivers/default.nix
@@ -53,7 +53,7 @@ stdenv.mkDerivation {
     homepage = http://support.amd.com/us/gpudownload/Pages/index.aspx;
     license = "unfree";
     maintainers = [stdenv.lib.maintainers.marcweber];
-    platforms = stdenv.lib.platforms.linux;
+    platforms = [ "x86_64-linux" ];
   };
 
   # moved assertions here because the name is evaluated when the NixOS manual is generated
diff --git a/pkgs/os-specific/linux/iptables/default.nix b/pkgs/os-specific/linux/iptables/default.nix
index 2dc3217f2905..0b4b492d3180 100644
--- a/pkgs/os-specific/linux/iptables/default.nix
+++ b/pkgs/os-specific/linux/iptables/default.nix
@@ -1,13 +1,25 @@
 {stdenv, fetchurl}:
 
 stdenv.mkDerivation rec {
-  name = "iptables-1.4.6";
+  name = "iptables-1.4.8";
 
   src = fetchurl {
     url = "http://www.netfilter.org/projects/iptables/files/${name}.tar.bz2";
-    sha256 = "193jdplnkzikrmk0y313d9alc4kp5gi55aikw3b668fnrac2fwvf";
+    sha256 = "1d6wykz1x2h0hp03akpm5gdgnamb1ij1nxzx3w3lhdvbzjwpbaxq";
   };
 
+  # Install header files required by miniupnpd.
+  postInstall =
+    ''
+      cp include/iptables.h $out/include
+      cp include/libiptc/libiptc.h include/libiptc/ipt_kernel_headers.h $out/include/libiptc
+      mkdir $out/include/iptables
+      cp include/iptables/internal.h $out/include/iptables
+      mkdir $out/include/net
+      cp -prd include/net/netfilter $out/include/net/netfilter
+      mkdir $out/include/linux
+    '';
+
   meta = {
     description = "A program to configure the Linux IP packet filtering ruleset";
     homepage = http://www.netfilter.org/projects/iptables/index.html;
diff --git a/pkgs/os-specific/linux/qemu-kvm/default.nix b/pkgs/os-specific/linux/qemu-kvm/default.nix
index a5f975033665..55a51a752c2b 100644
--- a/pkgs/os-specific/linux/qemu-kvm/default.nix
+++ b/pkgs/os-specific/linux/qemu-kvm/default.nix
@@ -3,11 +3,11 @@
 assert stdenv.isLinux;
    
 stdenv.mkDerivation rec {
-  name = "qemu-kvm-0.12.3";
+  name = "qemu-kvm-0.12.4";
    
   src = fetchurl {
     url = "mirror://sourceforge/kvm/${name}.tar.gz";
-    sha256 = "1cn20jsmf27h23ynm804bz41i2fmmbg02gbnfknz6cwbjg4cvk3p";
+    sha256 = "07hqcjg97i8j4cvpq3nicwhnc8dvd23rjyl1arr8ayzg1mdgx28l";
   };
 
   patches = [ ./unix-domain.patch ./smb-tmpdir.patch ];
diff --git a/pkgs/tools/compression/gzip/gnulib-futimens.patch b/pkgs/tools/compression/gzip/gnulib-futimens.patch
deleted file mode 100644
index e69de29bb2d1..000000000000
--- a/pkgs/tools/compression/gzip/gnulib-futimens.patch
+++ /dev/null
diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix
index 6f7c0923d99f..2bd24b302bea 100644
--- a/pkgs/tools/misc/coreutils/default.nix
+++ b/pkgs/tools/misc/coreutils/default.nix
@@ -1,6 +1,8 @@
-{stdenv, fetchurl, aclSupport ? false, acl, perl, gmp}:
+{ stdenv, fetchurl, aclSupport ? false, acl ? null, perl, gmp ? null}:
 
-stdenv.mkDerivation rec {
+assert aclSupport -> acl != null;
+
+stdenv.mkDerivation (rec {
   name = "coreutils-8.4";
 
   src = fetchurl {
@@ -26,7 +28,7 @@ stdenv.mkDerivation rec {
   # (http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19025),
   # Darwin (http://thread.gmane.org/gmane.comp.gnu.core-utils.bugs/19351),
   # and {Open,Free}BSD.
-  doCheck = (stdenv ? glibc);
+  doCheck = (stdenv ? glibc) && (cross == null);
 
   meta = {
     homepage = http://www.gnu.org/software/coreutils/;
diff --git a/pkgs/tools/misc/pinentry/default.nix b/pkgs/tools/misc/pinentry/default.nix
index 900370d0f8e4..004f3afa9b77 100644
--- a/pkgs/tools/misc/pinentry/default.nix
+++ b/pkgs/tools/misc/pinentry/default.nix
@@ -1,16 +1,21 @@
-{ fetchurl, stdenv, glib, pkgconfig, gtk, ncurses }:
+{ fetchurl, stdenv, pkgconfig, glib
+, useGtk ? true, gtk ? null
+, useNcurses ? true, ncurses ? null
+, useQt4 ? false, qt4 ? null }:
+
+assert useGtk -> (gtk != null);
+assert useNcurses -> (ncurses != null);
+assert useQt4 -> (qt4 != null);
 
 stdenv.mkDerivation rec {
-  name = "pinentry-0.7.5";
+  name = "pinentry-0.8.0";
 
   src = fetchurl {
     url = "mirror://gnupg/pinentry/${name}.tar.gz";
-    sha256 = "cb269ac058793b2df343a12a65e3402abc4b68503e105b12e4ca903d8d8e3172";
+    sha256 = "06phs3gbs6gf0z9g28z3jgsw312dhhpdgzrx4hhps53xrbwpyv22";
   };
 
-  patches = [ ./duplicate-glib-defs.patch ];
-
-  buildInputs = [ glib pkgconfig gtk ncurses ];
+  buildInputs = [ glib pkgconfig gtk ncurses ] ++ stdenv.lib.optional useQt4 qt4;
 
   meta = { 
     description = "GnuPG's interface to passphrase input";
diff --git a/pkgs/tools/networking/aria2/default.nix b/pkgs/tools/networking/aria2/default.nix
new file mode 100644
index 000000000000..5d433fdee391
--- /dev/null
+++ b/pkgs/tools/networking/aria2/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, fetchurl, openssl, libxml2, zlib }:
+
+stdenv.mkDerivation rec {
+  name = "aria2-1.9.3";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/aria2/stable/${name}/${name}.tar.bz2";
+    sha256 = "04vnvq5f797bbyrrv1kzvnv8h02f4wbhvsl34syi4gygimfrwkrn";
+  };
+
+  buildInputs = [ openssl libxml2 zlib ];
+
+  meta = {
+    homepage = http://aria2.sourceforge.net/;
+    description = "A lightweight, multi-protocol, multi-source, command-line download utility";
+  };
+}
diff --git a/pkgs/tools/networking/miniupnpd/default.nix b/pkgs/tools/networking/miniupnpd/default.nix
new file mode 100644
index 000000000000..5d62222d1419
--- /dev/null
+++ b/pkgs/tools/networking/miniupnpd/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, iptables }:
+
+assert stdenv.isLinux;
+
+stdenv.mkDerivation rec {
+  name = "miniupnpd-1.4";
+
+  src = fetchurl {
+    url = "http://miniupnp.free.fr/files/download.php?file=${name}.tar.gz";
+    sha256 = "06q5agkzv2snjxcsszpm27h8bqv41jijahs8jqnarxdrik97rfl5";
+  };
+
+  buildInputs = [ iptables ];
+
+  NIX_CFLAGS_COMPILE = "-DIPTABLES_143";
+
+  NIX_CFLAGS_LINK = "-liptc";
+  
+  makefile = "Makefile.linux";
+
+  makeFlags = "LIBS=";
+
+  postBuild = "cat config.h";
+
+  installFlags = "PREFIX=$(out) INSTALLPREFIX=$(out)";
+
+  postInstall =
+    ''
+      ensureDir $out/share/man/man1
+      cp miniupnpd.1 $out/share/man/man1/
+    '';
+
+  meta = {
+    homepage = http://miniupnp.free.fr/;
+    description = "A daemon that implements the UPnP Internet Gateway Device (IGD) specification";
+  };
+}
diff --git a/pkgs/tools/package-management/nix/sqlite.nix b/pkgs/tools/package-management/nix/sqlite.nix
index 5ea3a934bab8..526b956d0d11 100644
--- a/pkgs/tools/package-management/nix/sqlite.nix
+++ b/pkgs/tools/package-management/nix/sqlite.nix
@@ -4,11 +4,11 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "nix-0.16pre21802";
+  name = "nix-0.16pre21920";
   
   src = fetchurl {
-    url = "http://hydra.nixos.org/build/410078/download/4/${name}.tar.bz2";
-    sha256 = "dec142f401fd0aab771eebcddf8354edc57d9a05f63f07f0e74dd7c499df8cf8";
+    url = "http://hydra.nixos.org/build/413218/download/4/${name}.tar.bz2";
+    sha256 = "7d978a5d48a329c01d2af763ce6fc2038dbc24318e4ee57d873fa0c68d30f7ae";
   };
 
   buildInputs = [ perl curl openssl ];
diff --git a/pkgs/tools/package-management/nix/unstable.nix b/pkgs/tools/package-management/nix/unstable.nix
index adcac62070e1..6c6cbbea2b52 100644
--- a/pkgs/tools/package-management/nix/unstable.nix
+++ b/pkgs/tools/package-management/nix/unstable.nix
@@ -4,11 +4,11 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "nix-0.16pre21778";
+  name = "nix-0.16pre21832";
 
   src = fetchurl {
-    url = "http://hydra.nixos.org/build/408983/download/4/${name}.tar.bz2";
-    sha256 = "54e154776efe05973aaf75b33f6e00987cd147d1cb7a2a132f4386d4b51c6bdc";
+    url = "http://hydra.nixos.org/build/410867/download/4/${name}.tar.bz2";
+    sha256 = "c9ab6723859e07982a83c89f8863069c5c5ca9eea21591b194acd838f0de63b9";
   };
 
   buildNativeInputs = [ perl ];
diff --git a/pkgs/tools/security/dirmngr/default.nix b/pkgs/tools/security/dirmngr/default.nix
new file mode 100644
index 000000000000..be6d184a4f2c
--- /dev/null
+++ b/pkgs/tools/security/dirmngr/default.nix
@@ -0,0 +1,11 @@
+{ stdenv, fetchurl, libgpgerror, libgcrypt, libassuan, libksba, openldap }:
+
+stdenv.mkDerivation rec {
+  name = "dirmngr-1.0.3";
+  src = fetchurl {
+    url = "mirror://gnupg/${name}.tar.bz2";
+    sha256 = "03f54582caxgwjdv1b71azyk612a738ckgk2k05bmg466r1cw8jd";
+  };
+
+  buildInputs = [ libgpgerror libgcrypt libassuan libksba openldap ];
+}
diff --git a/pkgs/tools/security/gnupg/default.nix b/pkgs/tools/security/gnupg/default.nix
index dc396d9f35b3..7b89dcb25b87 100644
--- a/pkgs/tools/security/gnupg/default.nix
+++ b/pkgs/tools/security/gnupg/default.nix
@@ -1,36 +1,58 @@
-{ # Support for the IDEA cipher (used by the old PGP) should only be
-  # enabled if it is legal for you to do so.
-  ideaSupport ? false
+# Remember to install Pinentry and
+# 'echo "pinentry-program `which pinentry-gtk-2`" >> ~/.gnupg/gpg-agent.conf'.
 
-, stdenv, fetchurl, readline, bzip2
+{ fetchurl, stdenv, readline, zlib, libgpgerror, pth, libgcrypt, libassuan
+, libksba, coreutils, useLdap ? true, openldap ? null
+, useBzip2 ? true, bzip2 ? null, useUsb ? true, libusb ? null
+, useCurl ? true, curl ? null
 }:
 
-let
-
-  idea = fetchurl {
-    url = http://nixos.org/tarballs/idea.c.gz;
-    md5 = "9dc3bc086824a8c7a331f35e09a3e57f";
-  };
-
-in
+assert useLdap -> (openldap != null);
+assert useBzip2 -> (bzip2 != null);
+assert useUsb -> (libusb != null);
+assert useCurl -> (curl != null);
 
 stdenv.mkDerivation rec {
-  name = "gnupg-1.4.10";
+  name = "gnupg-2.0.15";
 
   src = fetchurl {
     url = "mirror://gnupg/gnupg/${name}.tar.bz2";
-    sha256 = "0f5v8c8fkxcnrlmnijaq2sqfqq6xhmbyi2p44pj98y6n6927z452";
+    sha256 = "070diybdiwf45d8xqbb5lwf3jjvhja1lcr6sf4fcw8519lpqi0aq";
   };
 
-  buildInputs = [ readline bzip2 ];
+  buildInputs = [ readline zlib libgpgerror pth libgcrypt libassuan libksba ]
+    ++ stdenv.lib.optional useLdap openldap
+    ++ stdenv.lib.optional useBzip2 bzip2
+    ++ stdenv.lib.optional useUsb libusb
+    ++ stdenv.lib.optional useCurl curl;
+
+  patchPhase = ''
+    find tests -type f | xargs sed -e 's@/bin/pwd@${coreutils}&@g' -i
+  '';
+
+  checkPhase="GNUPGHOME=`pwd` ./agent/gpg-agent --daemon make check";
+
+  doCheck = true;
 
-  preConfigure = stdenv.lib.optionalString ideaSupport
-    ''
-      gunzip < ${idea} > ./cipher/idea.c
-    '';
-  
   meta = {
-    description = "A free implementation of the OpenPGP standard for encrypting and signing data";
-    homepage = http://www.gnupg.org/;
+    description = "GNU Privacy Guard (GnuPG), GNU Project's implementation of the OpenPGP standard";
+
+    longDescription = ''
+      GnuPG is the GNU project's complete and free implementation of
+      the OpenPGP standard as defined by RFC4880.  GnuPG allows to
+      encrypt and sign your data and communication, features a
+      versatile key managment system as well as access modules for all
+      kind of public key directories.  GnuPG, also known as GPG, is a
+      command line tool with features for easy integration with other
+      applications.  A wealth of frontend applications and libraries
+      are available.  Version 2 of GnuPG also provides support for
+      S/MIME.
+    '';
+
+    homepage = http://gnupg.org/;
+
+    license = "GPLv3+";
+
+    maintainers = with stdenv.lib.maintainers; [ ludo urkud ];
   };
 }
diff --git a/pkgs/tools/security/gnupg1/default.nix b/pkgs/tools/security/gnupg1/default.nix
new file mode 100644
index 000000000000..dc396d9f35b3
--- /dev/null
+++ b/pkgs/tools/security/gnupg1/default.nix
@@ -0,0 +1,36 @@
+{ # Support for the IDEA cipher (used by the old PGP) should only be
+  # enabled if it is legal for you to do so.
+  ideaSupport ? false
+
+, stdenv, fetchurl, readline, bzip2
+}:
+
+let
+
+  idea = fetchurl {
+    url = http://nixos.org/tarballs/idea.c.gz;
+    md5 = "9dc3bc086824a8c7a331f35e09a3e57f";
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  name = "gnupg-1.4.10";
+
+  src = fetchurl {
+    url = "mirror://gnupg/gnupg/${name}.tar.bz2";
+    sha256 = "0f5v8c8fkxcnrlmnijaq2sqfqq6xhmbyi2p44pj98y6n6927z452";
+  };
+
+  buildInputs = [ readline bzip2 ];
+
+  preConfigure = stdenv.lib.optionalString ideaSupport
+    ''
+      gunzip < ${idea} > ./cipher/idea.c
+    '';
+  
+  meta = {
+    description = "A free implementation of the OpenPGP standard for encrypting and signing data";
+    homepage = http://www.gnupg.org/;
+  };
+}
diff --git a/pkgs/tools/security/gnupg1compat/default.nix b/pkgs/tools/security/gnupg1compat/default.nix
new file mode 100644
index 000000000000..9bd71467f0ea
--- /dev/null
+++ b/pkgs/tools/security/gnupg1compat/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, gnupg, coreutils, writeScript }:
+
+stdenv.mkDerivation {
+  name = "gnupg1compat-0";
+
+  builder = writeScript "gnupg1compat-builder" ''
+    # First symlink all top-level dirs
+    ${coreutils}/bin/mkdir -p $out
+    ${coreutils}/bin/ln -s ${gnupg}/* $out
+
+    # Replace bin with directory and symlink it contents
+    ${coreutils}/bin/rm $out/bin
+    ${coreutils}/bin/mkdir -p $out/bin
+    ${coreutils}/bin/ln -s ${gnupg}/bin/* $out/bin
+
+    # Add gpg->gpg2 and gpgv->gpgv2 symlinks
+    ${coreutils}/bin/ln -s gpg2 $out/bin/gpg
+    ${coreutils}/bin/ln -s gpgv2 $out/bin/gpgv
+  '';
+}
diff --git a/pkgs/tools/security/gnupg2/default.nix b/pkgs/tools/security/gnupg2/default.nix
deleted file mode 100644
index b52d8bcf56ab..000000000000
--- a/pkgs/tools/security/gnupg2/default.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-# Remember to install Pinentry and
-# 'echo "pinentry-program `which pinentry-gtk-2`" >> ~/.gnupg/gpg-agent.conf'.
-
-{ fetchurl, stdenv, readline, openldap, bzip2, zlib, libgpgerror
-, pth, libgcrypt, libassuan, libksba, libusb, curl }:
-
-stdenv.mkDerivation rec {
-  name = "gnupg-2.0.12";
-
-  src = fetchurl {
-    url = "mirror://gnupg/gnupg/${name}.tar.bz2";
-    sha256 = "1klw3m32s6d81qkslin4pibb2f84yz8l6n6fkwfdxyhrql2f2cwn";
-  };
-
-  buildInputs = [ readline openldap bzip2 zlib libgpgerror pth libgcrypt
-    libassuan libksba libusb curl ];
-
-  patchPhase = ''
-    for file in tests/pkits/*
-    do
-      if [ -f "$file" ]
-      then
-          sed -i "$file" -es'|/bin/pwd|pwd|g'
-      fi
-    done
-  '';
-
-  doCheck = true;
-
-  meta = {
-    description = "GNU Privacy Guard (GnuPG), GNU Project's implementation of the OpenPGP standard";
-
-    longDescription = ''
-      GnuPG is the GNU project's complete and free implementation of
-      the OpenPGP standard as defined by RFC4880.  GnuPG allows to
-      encrypt and sign your data and communication, features a
-      versatile key managment system as well as access modules for all
-      kind of public key directories.  GnuPG, also known as GPG, is a
-      command line tool with features for easy integration with other
-      applications.  A wealth of frontend applications and libraries
-      are available.  Version 2 of GnuPG also provides support for
-      S/MIME.
-    '';
-
-    homepage = http://gnupg.org/;
-
-    license = "GPLv3+";
-
-    maintainers = [ stdenv.lib.maintainers.ludo ];
-  };
-}
diff --git a/pkgs/tools/security/opensc/0.11.7.nix b/pkgs/tools/security/opensc/0.11.7.nix
index af0bc5144a87..e18858363013 100644
--- a/pkgs/tools/security/opensc/0.11.7.nix
+++ b/pkgs/tools/security/opensc/0.11.7.nix
@@ -1,5 +1,5 @@
-{stdenv, fetchurl, libtool, readline, zlib, openssl, libiconv, pcsclite, libassuan, pkgconfig,
-libXt, pinentry}:
+{stdenv, fetchurl, libtool, readline, zlib, openssl, libiconv, pcsclite,
+  libassuan1, pkgconfig, libXt, pinentry}:
 
 stdenv.mkDerivation rec {
   name = "opensc-0.11.7";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
     "--with-pcsc-provider=${pcsclite}/lib/libpcsclite.so.1"
     "--with-pinentry=${pinentry}/bin/pinentry" ];
 
-  buildInputs = [ libtool readline zlib openssl pcsclite libassuan pkgconfig
+  buildInputs = [ libtool readline zlib openssl pcsclite libassuan1 pkgconfig
     libXt ] ++
     stdenv.lib.optional (! stdenv.isLinux) libiconv;
 
diff --git a/pkgs/tools/security/tor/default.nix b/pkgs/tools/security/tor/default.nix
index 136a6efe7a1e..d896e4429597 100644
--- a/pkgs/tools/security/tor/default.nix
+++ b/pkgs/tools/security/tor/default.nix
@@ -1,30 +1,42 @@
-{stdenv, fetchurl, libevent, openssl, zlib}:
+{ stdenv, fetchurl, libevent, openssl, zlib }:
 
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   name = "tor-0.2.1.26";
 
   src = fetchurl {
-    url = "http://www.torproject.org/dist/tor-0.2.1.26.tar.gz";
+    url = "http://www.torproject.org/dist/${name}.tar.gz";
     sha256 = "18kz1hs6lvckkddy4y36gi7ly03ar2il2xzkrf8bfgif1gnn1p3c";
   };
 
-  buildInputs = [libevent openssl zlib];
- 
+  patchPhase =
+    # DNS lookups fail in chroots.
+    '' sed -i "src/or/test.c" -es/localhost/127.0.0.1/g
+    '';
+
+  buildInputs = [ libevent openssl zlib ];
+
   doCheck = true;
 
   meta = {
     homepage = http://www.torproject.org/;
-    description = "Tor is an onion router enabling Internet anonymity by thwarting network traffic analysis";
+    description = "Tor, an anonymous network router to improve privacy on the Internet";
+
     longDescription=''
-     Tor protects you by bouncing your communications around a distributed 
-     network of relays run by volunteers all around the world: it prevents 
-     somebody watching your Internet connection from learning what sites you 
-     visit, and it prevents the sites you visit from learning your physical 
-     location. Tor works with many of your existing applications, including 
-     web browsers, instant messaging clients, remote login, and other 
-     applications based on the TCP protocol. 
+      Tor protects you by bouncing your communications around a distributed
+      network of relays run by volunteers all around the world: it prevents
+      somebody watching your Internet connection from learning what sites you
+      visit, and it prevents the sites you visit from learning your physical
+      location. Tor works with many of your existing applications, including
+      web browsers, instant messaging clients, remote login, and other
+      applications based on the TCP protocol.
     '';
-    license="bsd";
-  };
 
+    license="mBSD";
+
+    maintainers =
+      [ # Russell O’Connor <roconnor@theorem.ca> ?
+	stdenv.lib.maintainers.ludo
+      ];
+    platforms = stdenv.lib.platforms.gnu;  # arbitrary choice
+  };
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 8afede97c855..c50acf1ef8c7 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -371,6 +371,10 @@ let
   aria = builderDefsPackage (import ../tools/networking/aria) {
   };
 
+  aria2 = import ../tools/networking/aria2 {
+    inherit fetchurl stdenv openssl libxml2 zlib;
+  };
+
   at = import ../tools/system/at {
     inherit fetchurl stdenv bison flex pam ssmtp;
   };
@@ -542,7 +546,9 @@ let
       else import ../tools/misc/coreutils)
     {
       inherit fetchurl stdenv acl perl gmp;
-      aclSupport = stdenv.isLinux;
+
+      # TODO: Add ACL support for cross-Linux.
+      aclSupport = (crossSystem == null) && stdenv.isLinux;
     };
 
   coreutils = useFromStdenv "coreutils" coreutils_real;
@@ -628,6 +634,10 @@ let
       inherit fetchurl stdenv coreutils;
     });
 
+  dirmngr = import ../tools/security/dirmngr {
+    inherit stdenv fetchurl libgpgerror libgcrypt libassuan libksba openldap;
+  };
+
   docbook2x = import ../tools/typesetting/docbook2x {
     inherit fetchurl stdenv texinfo perl
             gnused groff libxml2 libxslt makeWrapper;
@@ -646,8 +656,9 @@ let
   };
 
   duplicity = import ../tools/backup/duplicity {
-    inherit fetchurl stdenv librsync gnupg makeWrapper python;
+    inherit fetchurl stdenv librsync makeWrapper python;
     inherit (pythonPackages) boto;
+    gnupg = gnupg1;
   };
 
   dvdplusrwtools = import ../tools/cd-dvd/dvd+rw-tools {
@@ -807,14 +818,21 @@ let
     inherit fetchurl stdenv ed;
   });
 
-  gnupg = makeOverridable (import ../tools/security/gnupg) {
+  gnupg1orig = makeOverridable (import ../tools/security/gnupg1) {
     inherit fetchurl stdenv readline bzip2;
     ideaSupport = false;
   };
 
-  gnupg2 = makeOverridable (import ../tools/security/gnupg2) {
+  gnupg1compat = import ../tools/security/gnupg1compat {
+    inherit stdenv gnupg writeScript coreutils;
+  };
+
+  # use config.packageOverrides if you prefer original gnupg1
+  gnupg1 = gnupg1compat;
+
+  gnupg = makeOverridable (import ../tools/security/gnupg) {
     inherit fetchurl stdenv readline libgpgerror libgcrypt libassuan pth libksba zlib
-      openldap bzip2 libusb curl;
+      openldap bzip2 libusb curl coreutils;
   };
 
   gnuplot = makeOverridable (import ../tools/graphics/gnuplot) {
@@ -1078,6 +1096,10 @@ let
     flex = flex2535;
   };
 
+  miniupnpd = import ../tools/networking/miniupnpd {
+    inherit fetchurl stdenv iptables;
+  };
+
   mjpegtools = import ../tools/video/mjpegtools {
     inherit fetchurl stdenv libjpeg;
     inherit (xlibs) libX11;
@@ -1271,7 +1293,7 @@ let
 
   opensc_0_11_7 = import ../tools/security/opensc/0.11.7.nix {
     inherit fetchurl stdenv libtool readline zlib openssl libiconv pcsclite
-      libassuan pkgconfig pinentry;
+      libassuan1 pkgconfig pinentry;
     inherit (xlibs) libXt;
   };
 
@@ -1369,8 +1391,8 @@ let
     inherit (xlibs) libX11;
   };
 
-  pinentry = import ../tools/misc/pinentry {
-    inherit fetchurl stdenv pkgconfig ncurses;
+  pinentry = makeOverridable (import ../tools/misc/pinentry) {
+    inherit fetchurl stdenv pkgconfig ncurses qt4;
     inherit (gnome) glib gtk;
   };
 
@@ -2091,7 +2113,13 @@ let
   };
 
   gccCrossStageFinal = wrapGCCCross {
-    gcc = forceBuildDrv gcc_realCross;
+    gcc = forceBuildDrv (gcc_realCross.override {
+      libpthreadCross =
+        # FIXME: Don't explicitly refer to `i586-pc-gnu'.
+        if crossSystem != null && crossSystem.config == "i586-pc-gnu"
+        then hurdLibpthreadCross
+        else null;
+     });
     libc = libcCross;
     binutils = binutilsCross;
     cross = assert crossSystem != null; crossSystem;
@@ -2110,7 +2138,7 @@ let
   }));
 
   gcc45 = lowPrio (wrapGCC (makeOverridable (import ../development/compilers/gcc-4.5) {
-    inherit fetchurl stdenv texinfo gmp mpfr mpc libelf zlib
+    inherit fetchurl stdenv texinfo gmp mpfr mpc libelf zlib perl
       ppl cloogppl
       gettext which noSysDirs;
     profiledCompiler = true;
@@ -2190,7 +2218,7 @@ let
     langCC = true;
     langC = false;
     profiledCompiler = false;
-    inherit zip unzip zlib boehmgc gettext pkgconfig;
+    inherit zip unzip zlib boehmgc gettext pkgconfig perl;
     inherit (gtkLibs) gtk;
     inherit (gnome) libart_lgpl;
     inherit (xlibs) libX11 libXt libSM libICE libXtst libXi libXrender
@@ -3244,10 +3272,9 @@ let
     inherit fetchurl stdenv builderDefs stringsWithDeps lib elfutils;
   };
 
-  migCross = forceBuildDrv (import ../development/tools/misc/mig {
+  mig = import ../os-specific/gnu/mig {
     inherit fetchgit stdenv autoconf automake flex bison machHeaders;
-    cross = assert crossSystem != null; crossSystem;
-  });
+  };
 
   mk = import ../development/tools/build-managers/mk {
     inherit fetchurl stdenv;
@@ -3711,7 +3738,8 @@ let
   };
 
   ffmpeg = import ../development/libraries/ffmpeg {
-    inherit fetchurl stdenv faad2 libvorbis speex libtheora x264 pkgconfig xvidcore;
+    inherit fetchurl stdenv faad2 libvorbis speex libtheora x264 pkgconfig xvidcore
+      lame yasm;
   };
 
   fftw = import ../development/libraries/fftw {
@@ -3901,10 +3929,7 @@ let
      //
 
      (if crossGNU
-      then {
-        inherit machHeaders hurdHeaders fetchgit;
-        mig = migCross;
-      }
+      then { inherit machHeaders hurdHeaders mig fetchgit; }
       else { }))));
 
   glibcCross = glibc211Cross;
@@ -4030,7 +4055,7 @@ let
   };
 
   gpgme = import ../development/libraries/gpgme {
-    inherit fetchurl stdenv libgpgerror pkgconfig pth gnupg gnupg2 glib;
+    inherit fetchurl stdenv libgpgerror pkgconfig pth gnupg glib libassuan;
   };
 
   gsasl = import ../development/libraries/gsasl {
@@ -4046,7 +4071,7 @@ let
   };
 
   gss = import ../development/libraries/gss {
-    inherit stdenv fetchurl;
+    inherit stdenv fetchurl shishi;
   };
 
   gtkimageview = import ../development/libraries/gtkimageview {
@@ -4181,8 +4206,7 @@ let
   };
 
   hwloc = import ../development/libraries/hwloc {
-    inherit fetchurl stdenv pkgconfig cairo expat ncurses
-      autoconf automake libtool;
+    inherit fetchurl stdenv pkgconfig cairo expat ncurses;
   };
 
   hydraAntLogger = import ../development/libraries/java/hydra-ant-logger {
@@ -4300,10 +4324,14 @@ let
       openssl attr;
   };
 
-  libassuan = import ../development/libraries/libassuan {
+  libassuan1 = import ../development/libraries/libassuan1 {
     inherit fetchurl stdenv pth;
   };
 
+  libassuan = import ../development/libraries/libassuan {
+    inherit fetchurl stdenv pth libgpgerror;
+  };
+
   libavc1394 = import ../development/libraries/libavc1394 {
     inherit fetchurl stdenv pkgconfig libraw1394;
   };
@@ -4713,6 +4741,10 @@ let
     inherit fetchurl stdenv pkgconfig ncurses gpm glib;
   };
 
+  libvpx = import ../development/libraries/libvpx {
+    inherit fetchurl stdenv bash;
+  };
+
   libvterm = import ../development/libraries/libvterm {
     inherit fetchurl stdenv pkgconfig ncurses glib;
   };
@@ -6069,13 +6101,47 @@ let
     inherit fetchurl stdenv ncurses;
   };
 
+  hurdCross = forceBuildDrv(import ../os-specific/gnu/hurd {
+    inherit fetchgit stdenv autoconf libtool texinfo machHeaders
+      mig glibcCross;
+    automake = automake111x;
+    headersOnly = false;
+    cross = assert crossSystem != null; crossSystem;
+    gccCross = gccCrossStageFinal;
+  });
+
+  hurdCrossIntermediate = forceBuildDrv(import ../os-specific/gnu/hurd {
+    inherit fetchgit stdenv autoconf libtool texinfo machHeaders
+      mig glibcCross;
+    automake = automake111x;
+    headersOnly = false;
+    cross = assert crossSystem != null; crossSystem;
+
+    # The "final" GCC needs glibc and the Hurd libraries (libpthread in
+    # particular) so we first need an intermediate Hurd built with the
+    # intermediate GCC.
+    gccCross = gccCrossStageStatic;
+
+    # This intermediate Hurd is only needed to build libpthread, which really
+    # only needs libihash.
+    buildTarget = "libihash";
+    installTarget = "libihash-install";
+  });
+
   hurdHeaders = import ../os-specific/gnu/hurd {
-    inherit fetchgit stdenv autoconf libtool texinfo machHeaders;
-    mig = migCross;
+    inherit fetchgit stdenv autoconf libtool texinfo mig machHeaders;
     automake = automake111x;
     headersOnly = true;
   };
 
+  hurdLibpthreadCross = forceBuildDrv(import ../os-specific/gnu/libpthread {
+    inherit fetchgit stdenv autoconf automake libtool
+      machHeaders hurdHeaders glibcCross;
+    hurd = hurdCrossIntermediate;
+    gccCross = gccCrossStageStatic;
+    cross = assert crossSystem != null; crossSystem;
+  });
+
   hwdata = import ../os-specific/linux/hwdata {
     inherit fetchurl stdenv;
   };
@@ -8123,7 +8189,7 @@ let
 
   MPlayer = import ../applications/video/MPlayer {
     inherit fetchurl stdenv freetype fontconfig x11 zlib libtheora libcaca libdvdnav
-      cdparanoia mesa pkgconfig unzip amrnb amrwb jackaudio x264 xvidcore;
+      cdparanoia mesa pkgconfig unzip amrnb amrwb jackaudio x264 xvidcore lame yasm;
     inherit (xlibs) libX11 libXv libXinerama libXrandr;
     alsaSupport = true;
     alsa = alsaLib;
@@ -8203,6 +8269,21 @@ let
     stdenv = stdenv2;
   };
 
+  go_oo = import ../applications/office/openoffice/go-oo.nix {
+    inherit fetchurl pam python tcsh libxslt perl zlib libjpeg
+      expat pkgconfig freetype fontconfig libwpd libxml2 db4 sablotron
+      curl libsndfile flex zip unzip libmspack getopt file cairo
+      which icu jdk ant cups openssl bison boost gperf cppunit;
+    inherit (xlibs) libXaw libXext libX11 libXtst libXi libXinerama;
+    inherit (gtkLibs) gtk;
+    inherit (perlPackages) ArchiveZip CompressZlib;
+    inherit (gnome) GConf ORBit2;
+    neon = neon026;
+    stdenv = stdenv2;
+
+    inherit autoconf openldap postgresql;
+  };
+
   opera = import ../applications/networking/browsers/opera {
     inherit fetchurl zlib glibc stdenv makeDesktopItem;
     inherit (xlibs) libX11 libSM libICE libXt libXext;
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index 421684be43b5..7df0c8248612 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -1879,8 +1879,8 @@ rec {
       url = mirror://cpan/authors/id/G/GB/GBARR/libnet-1.22.tar.gz;
       sha256 = "113c36qilbvd69yhkm2i2ba20ajff7cdpgvlqx96j9bb1hfmhb1p";
     };
-    # Test perform network access
-    doCheck = false;
+    patchPhase = "chmod a-x Configure";
+    doCheck = false; # The test suite fails, because it requires network access.
   };
 
   NetSMTPSSL = buildPerlPackage {
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 48cdf1f143a9..5f9947ecd86a 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -685,11 +685,11 @@ rec {
   };
 
   twisted = buildPythonPackage {
-    name = "twisted-8.2.0";
+    name = "twisted-10.0.0";
 
     src = fetchurl {
-      url = http://tmrc.mit.edu/mirror/twisted/Twisted/8.2/Twisted-8.2.0.tar.bz2;
-      sha256 = "1c6zplisjdnjzkfs0ld3a0f7m7xbjgx5rcwsdw5i1xiibsq2nq70";
+      url = http://tmrc.mit.edu/mirror/twisted/Twisted/10.0/Twisted-10.0.0.tar.bz2;
+      sha256 = "1cbqpvwdwsc2av43fyqqdyyxs2j3drbagnl9m5vk7fl9k5q8q4fv";
     };
 
     propagatedBuildInputs = [ zopeInterface ];
diff --git a/pkgs/top-level/release-cross.nix b/pkgs/top-level/release-cross.nix
index 0845d73175cc..d4daf2652c35 100644
--- a/pkgs/top-level/release-cross.nix
+++ b/pkgs/top-level/release-cross.nix
@@ -6,6 +6,7 @@ let
   basicHostDrv = {
     bison.hostDrv = nativePlatforms;
     busybox.hostDrv = nativePlatforms;
+    coreutils_real.hostDrv = nativePlatforms;
     dropbear.hostDrv = nativePlatforms;
     tightvnc.hostDrv = nativePlatforms;
     #openoffice.hostDrv = nativePlatforms;
@@ -152,5 +153,14 @@ let
 in {
   crossGNU = mapTestOnCross crossSystem {
     gccCrossStageFinal = nativePlatforms;
+    hurdCross = nativePlatforms;
+
+    coreutils_real.hostDrv = nativePlatforms;
+    ed.hostDrv = nativePlatforms;
+    grub2.hostDrv = nativePlatforms;
+    inetutils.hostDrv = nativePlatforms;
+    nixUnstable.hostDrv = nativePlatforms;
+    patch.hostDrv = nativePlatforms;
+    zile.hostDrv = nativePlatforms;
   };
 })
diff --git a/pkgs/top-level/release-lib.nix b/pkgs/top-level/release-lib.nix
index 64530930ee50..be60de14ed81 100644
--- a/pkgs/top-level/release-lib.nix
+++ b/pkgs/top-level/release-lib.nix
@@ -3,7 +3,26 @@ rec {
 
   pkgs = allPackages {};
 
-  /* The working or failing letters for cross builds will be sent only to
+  /* !!! Hack: poor man's memoisation function.  Necessary for prevent
+     Nixpkgs from being evaluated again and again for every
+     job/platform pair. */
+  pkgsFor = system:
+    if system == "x86_64-linux" then pkgs_x86_64_linux
+    else if system == "i686-linux" then pkgs_i686_linux
+    else if system == "x86_64-darwin" then pkgs_x86_64_darwin
+    else if system == "i686-darwin" then pkgs_i686_darwin
+    else if system == "i686-freebsd" then pkgs_i686_freebsd
+    else if system == "i686-cygwin" then pkgs_i686_cygwin
+    else abort "unsupported system type: ${system}";
+
+  pkgs_x86_64_linux = allPackages { system = "x86_64-linux"; };
+  pkgs_i686_linux = allPackages { system = "i686-linux"; };
+  pkgs_x86_64_darwin = allPackages { system = "x86_64-darwin"; };
+  pkgs_i686_darwin = allPackages { system = "i686-darwin"; };
+  pkgs_i686_freebsd = allPackages { system = "i686-freebsd"; };
+  pkgs_i686_cygwin = allPackages { system = "i686-cygwin"; };
+
+  /* The working or failing mails for cross builds will be sent only to
      the following maintainers, as most package maintainers will not be
      interested in the result of cross building a package. */
   crossMaintainers = with pkgs.lib.maintainers; [ viric ];
@@ -23,7 +42,7 @@ rec {
      to build on that platform.  `f' is passed the Nixpkgs collection
      for the platform in question. */
   testOn = systems: f: {system ? builtins.currentSystem}:
-    if pkgs.lib.elem system systems then f (allPackages {inherit system;}) else {};
+    if pkgs.lib.elem system systems then f (pkgsFor system) else {};
 
   /* Similar to the testOn function, but with an additional 'crossSystem'
    * parameter for allPackages, defining the target platform for cross builds */
diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix
index edb82944508f..47db7f587196 100644
--- a/pkgs/top-level/release.nix
+++ b/pkgs/top-level/release.nix
@@ -120,7 +120,7 @@ with (import ./release-lib.nix);
   gnum4 = all;
   gnumake = all;
   gnupatch = all;
-  gnupg2 = linux;
+  gnupg = linux;
   gnuplot = allBut "i686-cygwin";
   gnused = all;
   gnutar = all;