summary refs log tree commit diff
diff options
context:
space:
mode:
authorLluís Batlle i Rossell2009-11-08 00:32:12 +0000
committerLluís Batlle i Rossell2009-11-08 00:32:12 +0000
commit4b27d2870197b26b7c170caa333944231715d4a3 (patch)
tree6b781861cb96e9ce0660ca0b904ed3dda1cc6905
parent6e86ca940f9cb7fdbbf8663bc5c19af45fbc1e17 (diff)
Porting changes from stdenv-updates into this branch. backups/stdenv-updates2@18273
This comes from:
svn diff  ^/nixpkgs/trunk/@18255 ^/nixpkgs/branches/stdenv-updates/ > diff
patch -p0 < diff
and then adding into svn all files new from the patch.

trunk@18255 comes from the last time I updated stdenv-updates from trunk.


svn path=/nixpkgs/stdenv-updates2/; revision=18272
-rw-r--r--pkgs/applications/networking/p2p/mldonkey/default.nix16
-rw-r--r--pkgs/build-support/gcc-wrapper/builder.sh24
-rw-r--r--pkgs/build-support/gcc-wrapper/default.nix7
-rw-r--r--pkgs/build-support/gcc-wrapper/setup-hook.sh4
-rw-r--r--pkgs/build-support/kernel/make-initrd.nix9
-rw-r--r--pkgs/build-support/kernel/make-initrd.sh5
-rw-r--r--pkgs/build-support/kernel/modules-closure.sh2
-rw-r--r--pkgs/development/compilers/gcc-4.3/default.nix12
-rw-r--r--pkgs/development/compilers/ocaml/3.11.1.nix13
-rw-r--r--pkgs/development/compilers/ocaml/cvs.nix31
-rw-r--r--pkgs/development/interpreters/perl-5.10/default.nix30
-rw-r--r--pkgs/development/libraries/eglibc/builder.sh63
-rw-r--r--pkgs/development/libraries/eglibc/default.nix32
-rw-r--r--pkgs/development/libraries/freetype/default.nix8
-rw-r--r--pkgs/development/libraries/glibc-2.9/binutils-2.20.patch42
-rw-r--r--pkgs/development/libraries/glibc-2.9/builder.sh9
-rw-r--r--pkgs/development/libraries/glibc-2.9/default.nix33
-rw-r--r--pkgs/development/libraries/glibc-2.9/info.nix5
-rw-r--r--pkgs/development/libraries/glibc-2.9/locales.nix32
-rw-r--r--pkgs/development/libraries/glibc-2.9/localesbuilder.sh50
-rw-r--r--pkgs/development/libraries/icu/default.nix3
-rw-r--r--pkgs/development/libraries/libxcrypt/default.nix3
-rw-r--r--pkgs/development/libraries/readline/link-against-ncurses.patch18
-rw-r--r--pkgs/development/libraries/readline/readline-patches.nix8
-rw-r--r--pkgs/development/libraries/readline/readline6.nix17
-rw-r--r--pkgs/development/tools/misc/binutils/default.nix12
-rw-r--r--pkgs/development/tools/misc/strace/default.nix2
-rw-r--r--pkgs/development/tools/misc/strace/strace-4.5.18-arm-syscalls.patch162
-rw-r--r--pkgs/misc/uboot/default.nix53
-rw-r--r--pkgs/misc/uboot/gas220.patch18
-rw-r--r--pkgs/os-specific/linux/hal/default.nix7
-rw-r--r--pkgs/os-specific/linux/kernel-headers/2.6.28.nix1
-rw-r--r--pkgs/os-specific/linux/kernel/builder.sh16
-rw-r--r--pkgs/os-specific/linux/kernel/config-2.6.31-armv5tel1786
-rw-r--r--pkgs/os-specific/linux/kernel/generic.nix10
-rw-r--r--pkgs/os-specific/linux/kernel/linux-2.6.28.nix1
-rw-r--r--pkgs/os-specific/linux/kernel/linux-2.6.29.nix1
-rw-r--r--pkgs/os-specific/linux/kernel/linux-2.6.31.nix7
-rw-r--r--pkgs/os-specific/linux/klibc/default.nix2
-rw-r--r--pkgs/os-specific/linux/pam_unix2/default.nix4
-rw-r--r--pkgs/os-specific/linux/uclibc/default.nix38
-rw-r--r--pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix97
-rw-r--r--pkgs/shells/bash/bash-patches.nix37
-rw-r--r--pkgs/shells/bash/default.nix39
-rw-r--r--pkgs/shells/bash/update-patch-set.sh47
-rw-r--r--pkgs/stdenv/default.nix1
-rw-r--r--pkgs/stdenv/generic/default.nix3
-rw-r--r--pkgs/stdenv/linux/bootstrap/armv5tel/default.nix13
-rw-r--r--pkgs/stdenv/linux/default.nix18
-rw-r--r--pkgs/stdenv/linux/make-bootstrap-tools.nix19
-rw-r--r--pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh48
-rw-r--r--pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh19
-rw-r--r--pkgs/tools/compression/bzip2/default.nix8
-rw-r--r--pkgs/tools/compression/gzip/default.nix36
-rw-r--r--pkgs/tools/compression/gzip/getopt.patch54
-rw-r--r--pkgs/tools/compression/gzip/gnulib-futimens.patch42
-rw-r--r--pkgs/tools/misc/coreutils/7.5.nix28
-rw-r--r--pkgs/tools/misc/coreutils/default.nix10
-rw-r--r--pkgs/tools/networking/curl/default.nix10
-rw-r--r--pkgs/tools/networking/wget/default.nix43
-rw-r--r--pkgs/tools/networking/wget/gnutls-support.patch16
-rw-r--r--pkgs/tools/text/gawk/default.nix32
-rw-r--r--pkgs/top-level/all-packages.nix69
63 files changed, 3086 insertions, 199 deletions
diff --git a/pkgs/applications/networking/p2p/mldonkey/default.nix b/pkgs/applications/networking/p2p/mldonkey/default.nix
index 6e950df0a75e..02a5e22eb23f 100644
--- a/pkgs/applications/networking/p2p/mldonkey/default.nix
+++ b/pkgs/applications/networking/p2p/mldonkey/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, ocaml, zlib, ncurses}:
+{stdenv, fetchurl, ocaml, zlib, ncurses, gd, libpng}:
 
 stdenv.mkDerivation {
   name = "mldonkey-3.0.0";
@@ -13,6 +13,16 @@ stdenv.mkDerivation {
     homepage = http://mldonkey.sourceforge.net/;
   };
 
-  buildInputs = [ ocaml zlib ncurses ];
-  configureFlags = "--disable-gd --disable-gui";
+  buildInputs = [ ocaml zlib ncurses gd libpng ];
+  configureFlags = [ "--disable-gui" "--enable-ocamlver=3.11.1" ];
+
+  # Byte code compilation (the ocaml opt compiler is not supported in many platforms)
+  buildPhase = "make mlnet.byte";
+  installPhase = ''
+    ensureDir $out/bin
+    cp mlnet.byte $out/bin/mlnet
+  '';
+
+  # ocaml bytecode selfcontained binaries loose the bytecode if stripped
+  dontStrip = true;
 }
diff --git a/pkgs/build-support/gcc-wrapper/builder.sh b/pkgs/build-support/gcc-wrapper/builder.sh
index 0fe3f3768f2a..cf4d6dfed963 100644
--- a/pkgs/build-support/gcc-wrapper/builder.sh
+++ b/pkgs/build-support/gcc-wrapper/builder.sh
@@ -83,7 +83,7 @@ mkGccWrapper() {
 
     if ! test -f "$src"; then
         echo "$src does not exist (skipping)"
-        return
+        return 1
     fi
 
     gccProg="$src"
@@ -91,18 +91,24 @@ mkGccWrapper() {
     chmod +x "$dst"
 }
 
-mkGccWrapper $out/bin/gcc $gccPath/gcc
-ln -s gcc $out/bin/cc
+if mkGccWrapper $out/bin/gcc $gccPath/gcc
+then
+    ln -sv gcc $out/bin/cc
+fi
 
-mkGccWrapper $out/bin/g++ $gccPath/g++
-ln -s g++ $out/bin/c++
+if mkGccWrapper $out/bin/g++ $gccPath/g++
+then
+    ln -sv g++ $out/bin/c++
+fi
 
-if test -e $gccPath/gfortran; then
-    mkGccWrapper $out/bin/gfortran $gccPath/gfortran
-    ln -s gfortran $out/bin/g77
-    ln -s gfortran $out/bin/f77
+if mkGccWrapper $out/bin/gfortran $gccPath/gfortran
+then
+    ln -sv gfortran $out/bin/g77
+    ln -sv gfortran $out/bin/f77
 fi
 
+mkGccWrapper $out/bin/gcj $gccPath/gcj || true
+
 
 # Create a symlink to as (the assembler).  This is useful when a
 # gcc-wrapper is installed in a user environment, as it ensures that
diff --git a/pkgs/build-support/gcc-wrapper/default.nix b/pkgs/build-support/gcc-wrapper/default.nix
index d517a472d747..339aba74288e 100644
--- a/pkgs/build-support/gcc-wrapper/default.nix
+++ b/pkgs/build-support/gcc-wrapper/default.nix
@@ -6,11 +6,11 @@
 # variables so that the compiler and the linker just "work".
 
 { name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? ""
-, gcc ? null, libc ? null, binutils ? null, shell ? ""
+, gcc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? ""
 }:
 
 assert nativeTools -> nativePrefix != "";
-assert !nativeTools -> gcc != null && binutils != null;
+assert !nativeTools -> gcc != null && binutils != null && coreutils != null;
 assert !nativeLibc -> libc != null;
 
 let
@@ -35,6 +35,8 @@ stdenv.mkDerivation {
   inherit nativeTools nativeLibc nativePrefix gcc;
   libc = if nativeLibc then null else libc;
   binutils = if nativeTools then null else binutils;
+  # The wrapper scripts use 'cat', so we may need coreutils
+  coreutils = if nativeTools then null else coreutils;
   
   langC = if nativeTools then true else gcc.langC;
   langCC = if nativeTools then true else gcc.langCC;
@@ -54,6 +56,7 @@ stdenv.mkDerivation {
     if !nativeLibc then
       (if stdenv.system == "i686-linux" then "ld-linux.so.2" else
        if stdenv.system == "x86_64-linux" then "ld-linux-x86-64.so.2" else
+       if stdenv.system == "armv5tel-linux" then "ld-linux.so.3" else
        if stdenv.system == "powerpc-linux" then "ld.so.1" else
        abort "don't know the name of the dynamic linker for this platform")
     else "";
diff --git a/pkgs/build-support/gcc-wrapper/setup-hook.sh b/pkgs/build-support/gcc-wrapper/setup-hook.sh
index 76167df3c31c..513ab8053a7e 100644
--- a/pkgs/build-support/gcc-wrapper/setup-hook.sh
+++ b/pkgs/build-support/gcc-wrapper/setup-hook.sh
@@ -27,3 +27,7 @@ fi
 if test -n "@libc@"; then
     addToSearchPath PATH @libc@/bin
 fi
+
+if test -n "@coreutils@"; then
+    addToSearchPath PATH @coreutils@/bin
+fi
diff --git a/pkgs/build-support/kernel/make-initrd.nix b/pkgs/build-support/kernel/make-initrd.nix
index b62ed9840456..92142b5ef43e 100644
--- a/pkgs/build-support/kernel/make-initrd.nix
+++ b/pkgs/build-support/kernel/make-initrd.nix
@@ -12,12 +12,17 @@
 # `contents = {object = ...; symlink = /init;}' is a typical
 # argument.
 
-{stdenv, perl, cpio, contents}:
+{stdenv, perl, cpio, contents, uboot ? null}:
+
+assert stdenv.system == "armv5tel-linux" -> uboot != null;
 
 stdenv.mkDerivation {
   name = "initrd";
   builder = ./make-initrd.sh;
-  buildInputs = [perl cpio];
+  buildInputs = [perl cpio]
+    ++ stdenv.lib.optional (stdenv.system == "armv5tel-linux") [ uboot ];
+
+  makeUInitrd = if (stdenv.system == "armv5tel-linux") then true else false;
 
   # !!! should use XML.
   objects = map (x: x.object) contents;
diff --git a/pkgs/build-support/kernel/make-initrd.sh b/pkgs/build-support/kernel/make-initrd.sh
index d930e51a03f9..69931bad113c 100644
--- a/pkgs/build-support/kernel/make-initrd.sh
+++ b/pkgs/build-support/kernel/make-initrd.sh
@@ -37,3 +37,8 @@ storePaths=$(perl $pathsFromGraph closure-*)
 # Put the closure in a gzipped cpio archive.
 ensureDir $out
 (cd root && find * -print0 | cpio -ov -H newc --null | gzip -9 > $out/initrd)
+
+if [ -n "$makeUInitrd" ]; then
+    mv $out/initrd $out/initrd.gz
+    mkimage -A arm -O linux -T ramdisk -C gzip -d $out/initrd.gz $out/initrd
+fi
diff --git a/pkgs/build-support/kernel/modules-closure.sh b/pkgs/build-support/kernel/modules-closure.sh
index e75ef927baae..af1faa7708ce 100644
--- a/pkgs/build-support/kernel/modules-closure.sh
+++ b/pkgs/build-support/kernel/modules-closure.sh
@@ -22,7 +22,7 @@ for module in $rootModules; do
 done
 
 echo "closure:"
-ensureDir $out
+ensureDir $out/lib/modules/"$version"
 for module in $closure; do
     target=$(echo $module | sed "s^/nix/store/.*/lib/modules/^$out/lib/modules/^")
     if test -e "$target"; then continue; fi
diff --git a/pkgs/development/compilers/gcc-4.3/default.nix b/pkgs/development/compilers/gcc-4.3/default.nix
index aad9f8207446..9823fc820517 100644
--- a/pkgs/development/compilers/gcc-4.3/default.nix
+++ b/pkgs/development/compilers/gcc-4.3/default.nix
@@ -3,6 +3,7 @@
 , langJava ? false
 , profiledCompiler ? false
 , staticCompiler ? false
+, enableShared ? true
 , texinfo ? null
 , gmp, mpfr
 , bison ? null, flex ? null
@@ -15,7 +16,7 @@ assert langTreelang -> bison != null && flex != null;
 
 with stdenv.lib;
 
-let version = "4.3.3"; in
+let version = "4.3.4"; in
 
 stdenv.mkDerivation ({
   name = "${name}-${version}";
@@ -25,19 +26,19 @@ stdenv.mkDerivation ({
   src =
     optional /*langC*/ true (fetchurl {
       url = "mirror://gcc/releases/gcc-${version}/gcc-core-${version}.tar.bz2";
-      sha256 = "08yksvipnqmqbmif30rwjkg3y0m6ray5r84wa2argv8q0bpz9426";
+      sha256 = "1yk80nwyw8vkpw8d3x7lkg3zrv3ngjqlvj0i8zslzgj7a27q729i";
     }) ++
     optional langCC (fetchurl {
       url = "mirror://gcc/releases/gcc-${version}/gcc-g++-${version}.tar.bz2";
-      sha256 = "12z2zh03yq214qs2cqzh8c64jjfz544nk1lzi9rygjwm8yjsvzm9";
+      sha256 = "0d8pyk5c9zmph25f4fl63vd8vhljj6ildbxpz2hr594g5i6pplpq";
     }) ++
     optional langFortran (fetchurl {
       url = "mirror://gcc/releases/gcc-${version}/gcc-fortran-${version}.tar.bz2";
-      sha256 = "1b2wbysviyh7l9fqbd6zy5y6y89xgysy99gr8wx8xkc1hy2nwdsq";
+      sha256 = "1xf2njykv1qcgxiqwj693dxjf77ss1rcxirylvnsp5hs89mdlj12";
     }) ++
     optional langJava (fetchurl {
       url = "mirror://gcc/releases/gcc-${version}/gcc-java-${version}.tar.bz2";
-      sha256 = "1mlazpydd9qv7zwxkbb5sw3clfawfndhcc3f5lzycminvn6qmfkb";
+      sha256 = "1v3krhxi3zyaqfj0x8dbxvg67fjp29cr1psyf71r9zf757p3vqsw";
     });
     
   patches =
@@ -56,6 +57,7 @@ stdenv.mkDerivation ({
 
   configureFlags = "
     ${if enableMultilib then "" else "--disable-multilib"}
+    ${if enableShared then "" else "--disable-shared"}
     --disable-libstdcxx-pch
     --with-system-zlib
     --enable-languages=${
diff --git a/pkgs/development/compilers/ocaml/3.11.1.nix b/pkgs/development/compilers/ocaml/3.11.1.nix
index f5955c7c78c2..d7053d583c23 100644
--- a/pkgs/development/compilers/ocaml/3.11.1.nix
+++ b/pkgs/development/compilers/ocaml/3.11.1.nix
@@ -1,5 +1,10 @@
 args: with args;
 
+let
+   useX11 = (stdenv.system != "armv5tel-linux");
+   useNativeCompilers = (stdenv.system != "armv5tel-linux");
+   inherit (stdenv.lib) optionals optionalString;
+in
 stdenv.mkDerivation (rec {
   
   name = "ocaml-3.11.1";
@@ -10,10 +15,10 @@ stdenv.mkDerivation (rec {
   };
 
   prefixKey = "-prefix ";
-  configureFlags = ["-no-tk" "-x11lib" x11];
-  buildFlags = "world bootstrap world.opt";
-  buildInputs = [x11 ncurses];
-  installTargets = "install installopt"; 
+  configureFlags = ["-no-tk"] ++ optionals useX11 [ "-x11lib" x11 ];
+  buildFlags = "world" + optionalString useNativeCompilers " bootstrap world.opt";
+  buildInputs = [ncurses] ++ optionals useX11 [ x11 ];
+  installTargets = "install" + optionalString useNativeCompilers " installopt";
   patchPhase = ''
     CAT=$(type -tp cat)
     sed -e "s@/bin/cat@$CAT@" -i config/auto-aux/sharpbang
diff --git a/pkgs/development/compilers/ocaml/cvs.nix b/pkgs/development/compilers/ocaml/cvs.nix
new file mode 100644
index 000000000000..475a1d46d589
--- /dev/null
+++ b/pkgs/development/compilers/ocaml/cvs.nix
@@ -0,0 +1,31 @@
+args: with args;
+
+stdenv.mkDerivation (rec {
+  
+  name = "ocaml-cvs-2009-09-24";
+  
+  src = fetchcvs {
+    cvsRoot = ":pserver:anoncvs@camlcvs.inria.fr:/caml";
+    module = "ocaml";
+    date = "2009-09-24";
+    sha256 = "3909bffebc9ce36ca51711d7d95596cba94376ebb1975c6ed46b09c9892c3ef1";
+  };
+
+  prefixKey = "-prefix ";
+  configureFlags = ["-no-tk"];
+  buildFlags = "world" +
+    (if (stdenv.system != "armv5tel-linux") then "bootstrap world.opt" else "");
+  buildInputs = [ncurses];
+  installTargets = "install" + (if (stdenv.system != "armv5tel-linux") then "installopt" else ""); 
+  patchPhase = ''
+    CAT=$(type -tp cat)
+    sed -e "s@/bin/cat@$CAT@" -i config/auto-aux/sharpbang
+  '';
+
+  meta = {
+    homepage = http://caml.inria.fr/ocaml;
+    license = "QPL, LGPL2 (library part)";
+    desctiption = "Most popular variant of the Caml language";
+  };
+
+})
diff --git a/pkgs/development/interpreters/perl-5.10/default.nix b/pkgs/development/interpreters/perl-5.10/default.nix
index 442f428ac6f4..94fda842bb15 100644
--- a/pkgs/development/interpreters/perl-5.10/default.nix
+++ b/pkgs/development/interpreters/perl-5.10/default.nix
@@ -2,6 +2,13 @@
 , impureLibcPath ? null
 }:
 
+let
+  preBuildNoNative = ''
+      # Make Cwd work on NixOS (where we don't have a /bin/pwd).
+      substituteInPlace lib/Cwd.pm --replace "'/bin/pwd'" "'$(type -tP pwd)'"
+    '';
+  preBuildNative = "";
+in
 stdenv.mkDerivation {
   name = "perl-5.10.0";
 
@@ -24,16 +31,21 @@ stdenv.mkDerivation {
   # "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.
-  configureFlags = ''
-    -de -Dcc=gcc -Uinstallusrbinperl -Dinstallstyle=lib/perl5 -Duseshrplib
-    ${if stdenv ? glibc then "-Dusethreads" else ""}
-  '';
+  # Miniperl needs -lm. perl needs -lrt.
+  configureFlags = [
+    "-de"
+    "-Dcc=gcc"
+    "-Uinstallusrbinperl"
+    "-Dinstallstyle=lib/perl5"
+    "-Duseshrplib"
+    (if stdenv ? glibc then "-Dusethreads" else "")
+  ];
 
   configureScript = "${stdenv.shell} ./Configure";
 
   dontAddPrefix = true;
 
-  preConfigure =
+  configurePhase =
     ''
       configureFlags="$configureFlags -Dprefix=$out -Dman1dir=$out/share/man/man1 -Dman3dir=$out/share/man/man3"
 
@@ -41,13 +53,11 @@ stdenv.mkDerivation {
         GLIBC=${if impureLibcPath == null then "$(cat $NIX_GCC/nix-support/orig-libc)" else impureLibcPath}
         configureFlags="$configureFlags -Dlocincpth=$GLIBC/include -Dloclibpth=$GLIBC/lib"
       fi
+      ${stdenv.shell} ./Configure $configureFlags \
+      ${if stdenv.system == "armv5tel-linux" then "-Dldflags=\"-lm -lrt\"" else ""};
     '';
 
-  preBuild =
-    ''
-      # Make Cwd work on NixOS (where we don't have a /bin/pwd).
-      ${if stdenv.system == "i686-darwin" then "" else "substituteInPlace lib/Cwd.pm --replace \"'/bin/pwd'\" \"'$(type -tP pwd)'\""}
-    '';
+  preBuild = if (stdenv.gcc.nativeTools) then preBuildNative else preBuildNoNative;
 
   setupHook = ./setup-hook.sh;
 }
diff --git a/pkgs/development/libraries/eglibc/builder.sh b/pkgs/development/libraries/eglibc/builder.sh
new file mode 100644
index 000000000000..47cd1b5e252f
--- /dev/null
+++ b/pkgs/development/libraries/eglibc/builder.sh
@@ -0,0 +1,63 @@
+# Glibc cannot have itself in its RPATH.
+export NIX_NO_SELF_RPATH=1
+
+source $stdenv/setup
+
+# Explicitly tell glibc to use our pwd, not /bin/pwd.
+export PWD_P=$(type -tP pwd)
+
+# Needed to install share/zoneinfo/zone.tab.  Set to impure /bin/sh to
+# prevent a retained dependency on the bootstrap tools in the
+# stdenv-linux bootstrap.
+export BASH_SHELL=/bin/sh
+
+preConfigure() {
+
+    for i in libc/configure libc/io/ftwtest-sh; do
+        # Can't use substituteInPlace here because replace hasn't been
+        # built yet in the bootstrap.
+        sed -i "$i" -e "s^/bin/pwd^$PWD_P^g"
+    done
+
+    # Include source for debugging
+    ensureDir $out/src
+    cp -R libc ports $out/src
+    ln -s $out/src/ports $out/src/libc/ports
+    # glibc wants -O2 minimum
+    export CFLAGS="-pipe -g -O2"
+
+    mkdir $NIX_BUILD_TOP/build
+    cd $NIX_BUILD_TOP/build
+    
+    configureScript=$out/src/libc/configure
+}
+
+
+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
+    rm $out/etc/ld.so.cache
+    (cd $out/include && ln -s $kernelHeaders/include/* .) || exit 1
+
+    # 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
+}
+
+
+genericBuild
diff --git a/pkgs/development/libraries/eglibc/default.nix b/pkgs/development/libraries/eglibc/default.nix
new file mode 100644
index 000000000000..a27d0f53fbf8
--- /dev/null
+++ b/pkgs/development/libraries/eglibc/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchsvn, kernelHeaders
+, installLocales ? true
+, profilingLibraries ? false
+}:
+
+stdenv.mkDerivation rec {
+  name = "eglibc-2.10";
+
+  src = fetchsvn {
+    url = svn://svn.eglibc.org/branches/eglibc-2_10;
+    rev = 8690;
+    sha256 = "029hklrx2rlhsb5r2csd0gapjm0rbr8n28ib6jnnhms12x302viq";
+  };
+
+  inherit kernelHeaders installLocales;
+
+  configureFlags = [
+    "--with-headers=${kernelHeaders}/include"
+    "--without-fp"
+    "--enable-add-ons=libidn,ports,nptl"
+    "--disable-profile"
+    "--host=arm-linux-gnueabi"
+    "--build=arm-linux-gnueabi"
+  ];
+
+  builder = ./builder.sh;
+
+  meta = {
+    homepage = http://www.gnu.org/software/libc/;
+    description = "The GNU C Library";
+  };
+}
diff --git a/pkgs/development/libraries/freetype/default.nix b/pkgs/development/libraries/freetype/default.nix
index 0bf2db03cd82..d3814bdb9724 100644
--- a/pkgs/development/libraries/freetype/default.nix
+++ b/pkgs/development/libraries/freetype/default.nix
@@ -1,5 +1,4 @@
 { stdenv, fetchurl
-
 , # FreeType supports hinting using a TrueType bytecode interpreter,
   # as well as sub-pixel rendering.  These are patented by Apple and
   # Microsoft, respectively, so they are disabled by default.  This
@@ -8,7 +7,7 @@
   useEncumberedCode ? false
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (rec {
   name = "freetype-2.3.11";
   
   src = fetchurl {
@@ -26,4 +25,7 @@ stdenv.mkDerivation rec {
     homepage = http://www.freetype.org/;
     license = "GPLv2+"; # or the FreeType License (BSD + advertising clause)
   };
-}
+} //
+# The asm for armel is written with the 'asm' keyword.
+(if (stdenv.system == "armv5tel-linux") then 
+    {CFLAGS = "-std=gnu99";} else {}))
diff --git a/pkgs/development/libraries/glibc-2.9/binutils-2.20.patch b/pkgs/development/libraries/glibc-2.9/binutils-2.20.patch
new file mode 100644
index 000000000000..ab3d6144d6ee
--- /dev/null
+++ b/pkgs/development/libraries/glibc-2.9/binutils-2.20.patch
@@ -0,0 +1,42 @@
+Support GNU Binutils 2.20 and beyond.  Patch from
+http://sourceware.org/ml/libc-alpha/2009-09/msg00009.html .
+
+diff --git a/configure b/configure
+index 48e6952..b1d84d7 100755
+--- a/configure
++++ b/configure
+@@ -4841,7 +4841,7 @@ $as_echo_n "checking version of $AS... " >&6; }
+   ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
+   case $ac_prog_version in
+     '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+-    2.1[3-9]*)
++    2.1[3-9]*|[2-9].[2-9]*)
+        ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+     *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+ 
+@@ -4904,7 +4904,7 @@ $as_echo_n "checking version of $LD... " >&6; }
+   ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
+   case $ac_prog_version in
+     '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+-    2.1[3-9]*)
++    2.1[3-9]*|[2-9].[2-9]*)
+        ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+     *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+ 
+diff --git a/configure.in b/configure.in
+index 4584afe..7c4f71f 100644
+--- a/configure.in
++++ b/configure.in
+@@ -897,10 +897,10 @@ AC_SUBST(MIG)dnl Needed by sysdeps/mach/configure.in
+ # Accept binutils 2.13 or newer.
+ AC_CHECK_PROG_VER(AS, $AS, --version,
+ 		  [GNU assembler.* \([0-9]*\.[0-9.]*\)],
+-		  [2.1[3-9]*], AS=: critic_missing="$critic_missing as")
++		  [2.1[3-9]*|[2-9].[2-9]*], AS=: critic_missing="$critic_missing as")
+ AC_CHECK_PROG_VER(LD, $LD, --version,
+ 		  [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
+-		  [2.1[3-9]*], LD=: critic_missing="$critic_missing ld")
++		  [2.1[3-9]*|[2-9].[2-9]*], LD=: critic_missing="$critic_missing ld")
+ 
+ # We need the physical current working directory.  We cannot use the
+ # "pwd -P" shell builtin since that's not portable.  Instead we try to
diff --git a/pkgs/development/libraries/glibc-2.9/builder.sh b/pkgs/development/libraries/glibc-2.9/builder.sh
index 8cc6be4cf738..adb73656c2a2 100644
--- a/pkgs/development/libraries/glibc-2.9/builder.sh
+++ b/pkgs/development/libraries/glibc-2.9/builder.sh
@@ -26,11 +26,13 @@ preConfigure() {
     # don't want as a dependency in the Nixpkgs bootstrap.  So force
     # the output file to be newer.
     touch locale/C-translit.h
+
+    tar xvjf "$srcPorts"
     
-    mkdir ../build
-    cd ../build
+    mkdir build
+    cd build
     
-    configureScript=../$sourceRoot/configure
+    configureScript=../configure
 }
 
 
@@ -42,6 +44,7 @@ postConfigure() {
     export NIX_LDFLAGS_BEFORE=
 
     export NIX_DONT_SET_RPATH=1
+    unset CFLAGS
 }
 
 
diff --git a/pkgs/development/libraries/glibc-2.9/default.nix b/pkgs/development/libraries/glibc-2.9/default.nix
index c94cedab018c..33f93befb218 100644
--- a/pkgs/development/libraries/glibc-2.9/default.nix
+++ b/pkgs/development/libraries/glibc-2.9/default.nix
@@ -9,8 +9,13 @@ stdenv.mkDerivation rec {
   builder = ./builder.sh;
 
   src = fetchurl {
-    url = http://nixos.org/tarballs/glibc-2.9-20081208.tar.bz2;
-    sha256 = "0zhxbgcsl97pf349m0lz8d5ljvvzrcqc23yf08d888xlk4ms8m3h";
+    url = http://ftp.gnu.org/gnu/glibc/glibc-2.9.tar.bz2;
+    sha256 = "0v53m7flx6qcx7cvrvvw6a4dx4x3y6k8nvpc4wfv5xaaqy2am2q9";
+  };
+
+  srcPorts = fetchurl {
+    url = http://ftp.gnu.org/gnu/glibc/glibc-ports-2.9.tar.bz2;
+    sha256 = "0r2sn527wxqifi63di7ns9wbjh1cainxn978w178khhy7yw9fk42";
   };
 
   inherit kernelHeaders installLocales;
@@ -46,12 +51,28 @@ stdenv.mkDerivation rec {
 
     /* Have rpcgen(1) look for cpp(1) in $PATH.  */
     ./rpcgen-path.patch
+
+    /* Support GNU Binutils 2.20 and above.  */
+    ./binutils-2.20.patch
   ];
 
-  configureFlags = ''
-    --enable-add-ons
-    --with-headers=${kernelHeaders}/include
-    ${if profilingLibraries then "--enable-profile" else "--disable-profile"}
+  configureFlags = [
+    "--enable-add-ons"
+    "--with-headers=${kernelHeaders}/include"
+    (if profilingLibraries then "--enable-profile" else "--disable-profile")
+  ] ++ (if (stdenv.system == "armv5tel-linux") then [
+    "--host=arm-linux-gnueabi"
+    "--build=arm-linux-gnueabi"
+    "--without-fp"
+  ] else []);
+
+  preInstall = ''
+    ensureDir $out/lib
+    ln -s ${stdenv.gcc.gcc}/lib/libgcc_s.so.1 $out/lib/libgcc_s.so.1
+  '';
+
+  postInstall = ''
+    rm $out/lib/libgcc_s.so.1
   '';
 
   # Workaround for this bug:
diff --git a/pkgs/development/libraries/glibc-2.9/info.nix b/pkgs/development/libraries/glibc-2.9/info.nix
index 9653690606ab..3201bb474405 100644
--- a/pkgs/development/libraries/glibc-2.9/info.nix
+++ b/pkgs/development/libraries/glibc-2.9/info.nix
@@ -8,6 +8,11 @@ stdenv.mkDerivation rec {
     sha256 = "0zhxbgcsl97pf349m0lz8d5ljvvzrcqc23yf08d888xlk4ms8m3h";
   };
 
+  patches = [
+    /* Support GNU Binutils 2.20 and above.  */
+    ./binutils-2.20.patch
+  ];
+
   preConfigure = ''
     export PWD_P=$(type -tP pwd)
     for i in configure io/ftwtest-sh; do
diff --git a/pkgs/development/libraries/glibc-2.9/locales.nix b/pkgs/development/libraries/glibc-2.9/locales.nix
index a5ef4797810b..3046374ca345 100644
--- a/pkgs/development/libraries/glibc-2.9/locales.nix
+++ b/pkgs/development/libraries/glibc-2.9/locales.nix
@@ -10,13 +10,35 @@
 
 stdenv.mkDerivation rec {
   name = "glibc-locales-2.9";
-  
+
+  builder = ./localesbuilder.sh;
+
   src = fetchurl {
-    url = http://nixos.org/tarballs/glibc-2.9-20081208.tar.bz2;
-    sha256 = "0zhxbgcsl97pf349m0lz8d5ljvvzrcqc23yf08d888xlk4ms8m3h";
+    url = http://ftp.gnu.org/gnu/glibc/glibc-2.9.tar.bz2;
+    sha256 = "0v53m7flx6qcx7cvrvvw6a4dx4x3y6k8nvpc4wfv5xaaqy2am2q9";
+  };
+
+  srcPorts = fetchurl {
+    url = http://ftp.gnu.org/gnu/glibc/glibc-ports-2.9.tar.bz2;
+    sha256 = "0r2sn527wxqifi63di7ns9wbjh1cainxn978w178khhy7yw9fk42";
   };
 
-  configurePhase = "true";
+  inherit (stdenv) is64bit;
+
+  configureFlags = [
+    "--enable-add-ons"
+    "--without-headers"
+    "--disable-profile"
+  ] ++ (if (stdenv.system == "armv5tel-linux") then [
+    "--host=arm-linux-gnueabi"
+    "--build=arm-linux-gnueabi"
+    "--without-fp"
+  ] else []);
+
+  patches = [
+    /* Support GNU Binutils 2.20 and above.  */
+    ./binutils-2.20.patch
+  ];
 
   # Awful hack: `localedef' doesn't allow the path to `locale-archive'
   # to be overriden, but you *can* specify a prefix, i.e. it will use
@@ -25,8 +47,6 @@ stdenv.mkDerivation rec {
   # $TMPDIR/nix/store/...-glibc-.../lib/locale/locale-archive.
   buildPhase =
     ''
-      touch config.make
-      touch config.status
       mkdir -p $TMPDIR/"$(dirname $(readlink -f $(type -p localedef)))/../lib/locale"
       make localedata/install-locales \
           LOCALEDEF="localedef --prefix=$TMPDIR" \
diff --git a/pkgs/development/libraries/glibc-2.9/localesbuilder.sh b/pkgs/development/libraries/glibc-2.9/localesbuilder.sh
new file mode 100644
index 000000000000..a28f6bcbaeb3
--- /dev/null
+++ b/pkgs/development/libraries/glibc-2.9/localesbuilder.sh
@@ -0,0 +1,50 @@
+# Glibc cannot have itself in its RPATH.
+export NIX_NO_SELF_RPATH=1
+
+source $stdenv/setup
+
+# Explicitly tell glibc to use our pwd, not /bin/pwd.
+export PWD_P=$(type -tP pwd)
+
+# Needed to install share/zoneinfo/zone.tab.  Set to impure /bin/sh to
+# prevent a retained dependency on the bootstrap tools in the
+# stdenv-linux bootstrap.
+export BASH_SHELL=/bin/sh
+
+
+preConfigure() {
+
+    for i in configure io/ftwtest-sh; do
+        # Can't use substituteInPlace here because replace hasn't been
+        # built yet in the bootstrap.
+        sed -i "$i" -e "s^/bin/pwd^$PWD_P^g"
+    done
+
+    # In the glibc 2.6/2.7 tarballs C-translit.h is a little bit older
+    # than C-translit.h.in, forcing Make to rebuild it unnecessarily.
+    # This wouldn't be problem except that it requires Perl, which we
+    # don't want as a dependency in the Nixpkgs bootstrap.  So force
+    # the output file to be newer.
+    touch locale/C-translit.h
+
+    tar xvjf "$srcPorts"
+    
+    mkdir build
+    cd build
+    
+    configureScript=../configure
+}
+
+
+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
+}
+
+genericBuild
diff --git a/pkgs/development/libraries/icu/default.nix b/pkgs/development/libraries/icu/default.nix
index 82ea06508f07..47217d7fa98a 100644
--- a/pkgs/development/libraries/icu/default.nix
+++ b/pkgs/development/libraries/icu/default.nix
@@ -10,6 +10,9 @@ stdenv.mkDerivation {
 
   patchFlags = "-p0";
 
+  CFLAGS = "-O0";
+  CXXFLAGS = "-O0";
+
   patches = [
     (fetchurl {
       url = "http://sources.gentoo.org/viewcvs.py/*checkout*/gentoo-x86/dev-libs/icu/files/icu-3.8-setBreakType-public.diff?rev=1.1";
diff --git a/pkgs/development/libraries/libxcrypt/default.nix b/pkgs/development/libraries/libxcrypt/default.nix
index 7124fc72eeed..1ae5d3054f48 100644
--- a/pkgs/development/libraries/libxcrypt/default.nix
+++ b/pkgs/development/libraries/libxcrypt/default.nix
@@ -1,4 +1,7 @@
 {stdenv, fetchurl}:
+
+# I could not build it in armv5tel-linux
+assert stdenv.system != "armv5tel-linux";
    
 stdenv.mkDerivation {
   name = "libxcrypt-3.0.2";
diff --git a/pkgs/development/libraries/readline/link-against-ncurses.patch b/pkgs/development/libraries/readline/link-against-ncurses.patch
new file mode 100644
index 000000000000..0fd0598f4650
--- /dev/null
+++ b/pkgs/development/libraries/readline/link-against-ncurses.patch
@@ -0,0 +1,18 @@
+This patch is to make sure that `libncurses' is among the `NEEDED'
+dependencies of `libreadline.so' and `libhistory.so'.
+
+Failing to do that, applications linking against Readline are
+forced to explicitly link against libncurses as well; in addition,
+this trick doesn't work when using GNU ld's `--as-needed'.
+
+--- shlib/Makefile.in	2009-01-06 18:03:22.000000000 +0100
++++ shlib/Makefile.in	2009-07-27 14:43:25.000000000 +0200
+@@ -84,7 +84,7 @@ SHOBJ_LDFLAGS = @SHOBJ_LDFLAGS@
+ SHOBJ_XLDFLAGS = @SHOBJ_XLDFLAGS@
+ SHOBJ_LIBS = @SHOBJ_LIBS@
+ 
+-SHLIB_XLDFLAGS = @LDFLAGS@ @SHLIB_XLDFLAGS@
++SHLIB_XLDFLAGS = @LDFLAGS@ @SHLIB_XLDFLAGS@ -lncurses
+ SHLIB_LIBS = @SHLIB_LIBS@
+ 
+ SHLIB_DOT = @SHLIB_DOT@
diff --git a/pkgs/development/libraries/readline/readline-patches.nix b/pkgs/development/libraries/readline/readline-patches.nix
new file mode 100644
index 000000000000..701d5fc94cec
--- /dev/null
+++ b/pkgs/development/libraries/readline/readline-patches.nix
@@ -0,0 +1,8 @@
+# Automatically generated by `update-patch-set.sh'; do not edit.
+
+patch: [
+(patch "001" "1wbqnsxm4nd8rjckl8mdqcb82pphnsj2yxs4f2nf88kyhwzy544i")
+(patch "002" "070c3jz8fs5q17yy3l70wxklgnw6hp5ac9zhb0jdnrr9hf0wi6kl")
+(patch "003" "1gwssafy42hcijcynmlpqsasch7kqxbv2cqw0p7f9p2y6vp9ng2j")
+(patch "004" "1yzaycdfqjs5jdl0k7qg9cx47bdlq9xs0m6lfq42ys3yscmb1jzm")
+]
diff --git a/pkgs/development/libraries/readline/readline6.nix b/pkgs/development/libraries/readline/readline6.nix
index fcf89207da3c..60232a8b80bd 100644
--- a/pkgs/development/libraries/readline/readline6.nix
+++ b/pkgs/development/libraries/readline/readline6.nix
@@ -9,7 +9,20 @@ stdenv.mkDerivation rec {
   };
 
   propagatedBuildInputs = [ncurses];
-  
+
+  patchFlags = "-p0";
+  patches =
+    [ ./link-against-ncurses.patch ]
+    ++
+    (let
+       patch = nr: sha256:
+         fetchurl {
+           url = "mirror://gnu/readline/readline-6.0-patches/readline60-${nr}";
+           inherit sha256;
+         };
+     in
+       import ./readline-patches.nix patch);
+
   meta = {
     description = "GNU Readline, a library for interactive line editing";
 
@@ -31,5 +44,7 @@ stdenv.mkDerivation rec {
     homepage = http://savannah.gnu.org/projects/readline/;
 
     license = "GPLv3+";
+
+    maintainers = [ stdenv.lib.maintainers.ludo ];
   };
 }
diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix
index 5bf14919f851..4987dafd5114 100644
--- a/pkgs/development/tools/misc/binutils/default.nix
+++ b/pkgs/development/tools/misc/binutils/default.nix
@@ -1,11 +1,11 @@
 {stdenv, fetchurl, noSysDirs}:
 
 stdenv.mkDerivation rec {
-  name = "binutils-2.19.1";
-  
+  name = "binutils-2.20";
+
   src = fetchurl {
     url = "mirror://gnu/binutils/${name}.tar.bz2";
-    sha256 = "1xirhxwc94bk6hn2k6i5ly4knbcjsqgy2lp7kl1s5q5csys2b0iy";
+    sha256 = "1c3m789p5rwmmnck5ms4zcnc40axss3gxzivz571al1vmbq0kpz1";
   };
 
   patches = [
@@ -14,16 +14,16 @@ stdenv.mkDerivation rec {
     # RUNPATH can be overriden using LD_LIBRARY_PATH at runtime.
     ./new-dtags.patch
   ];
-  
+
   inherit noSysDirs;
 
   preConfigure = ''
     # Clear the default library search path.
     if test "$noSysDirs" = "1"; then
-        echo 'NATIVE_LIB_DIRS=' >> ld/configure.tgt
+	echo 'NATIVE_LIB_DIRS=' >> ld/configure.tgt
     fi
   '';
-  
+
   configureFlags = "--disable-werror"; # needed for dietlibc build
 
   meta = {
diff --git a/pkgs/development/tools/misc/strace/default.nix b/pkgs/development/tools/misc/strace/default.nix
index 38c4445d2200..6300304cf6bf 100644
--- a/pkgs/development/tools/misc/strace/default.nix
+++ b/pkgs/development/tools/misc/strace/default.nix
@@ -3,6 +3,8 @@
 stdenv.mkDerivation {
   name = "strace-4.5.18";
 
+  patches = [ ./strace-4.5.18-arm-syscalls.patch ];
+
   src = fetchurl {
     url = mirror://sourceforge/strace/strace-4.5.18.tar.bz2;
     sha256 = "1l16vax3mn2wak288g1inmn30i49vlghnvfwr0z2rwh41r3vgrwm";
diff --git a/pkgs/development/tools/misc/strace/strace-4.5.18-arm-syscalls.patch b/pkgs/development/tools/misc/strace/strace-4.5.18-arm-syscalls.patch
new file mode 100644
index 000000000000..a2f50fd152f1
--- /dev/null
+++ b/pkgs/development/tools/misc/strace/strace-4.5.18-arm-syscalls.patch
@@ -0,0 +1,162 @@
+From f5da8d0c38ea0eb660cb17de7aa62cda6899eb75 Mon Sep 17 00:00:00 2001
+From: ldv <ldv>
+Date: Thu, 1 Jan 2009 23:20:38 +0000
+Subject: [PATCH] 2008-11-13  Kirill A. Shutemov  <kirill@shutemov.name>
+
+	* linux/arm/syscallent.h: Fix build on ARM EABI which does not
+	provide syscalls socketcall and ipc.
+---
+ ChangeLog              |    5 +++++
+ linux/arm/syscallent.h |    4 +++-
+ 2 files changed, 8 insertions(+), 1 deletions(-)
+
+diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h
+index 5ccef2f..edc3641 100644
+--- a/linux/arm/syscallent.h
++++ b/linux/arm/syscallent.h
+@@ -431,6 +431,7 @@
+ 	{ 5,	0,	printargs,		"SYS_398"	}, /* 398 */
+ 	{ 5,	0,	printargs,		"SYS_399"	}, /* 399 */
+ 
++#ifndef __ARM_EABI__
+ #if SYS_socket_subcall != 400
+  #error fix me
+ #endif
+@@ -481,3 +482,4 @@
+ 	{ 4,	TI,	sys_shmdt,		"shmdt"		}, /* 440 */
+ 	{ 4,	TI,	sys_shmget,		"shmget"	}, /* 441 */
+ 	{ 4,	TI,	sys_shmctl,		"shmctl"	}, /* 442 */
++#endif
+-- 
+1.6.1.3
+
+From 885d06bc92bae2f6aad85ef2fe0b806a06f60712 Mon Sep 17 00:00:00 2001
+From: ldv <ldv>
+Date: Thu, 1 Jan 2009 23:23:47 +0000
+Subject: [PATCH] 2008-11-13  Kirill A. Shutemov  <kirill@shutemov.name>
+
+	* linux/arm/syscallent.h: Update syscalls.
+	Based on patch by Enrico Scholz.
+---
+ ChangeLog              |    3 +
+ linux/arm/syscallent.h |   98 ++++++++++++++++++++++++------------------------
+ 2 files changed, 52 insertions(+), 49 deletions(-)
+
+diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h
+index edc3641..6dd783a 100644
+--- a/linux/arm/syscallent.h
++++ b/linux/arm/syscallent.h
+@@ -328,63 +328,63 @@
+ 	{ 5,	TN,	sys_getsockopt,		"getsockopt"	}, /* 295 */
+ 	{ 3,	TN,	sys_sendmsg,		"sendmsg"	}, /* 296 */
+ 	{ 3,	TN,	sys_recvmsg,		"recvmsg"	}, /* 297 */
+-	{ 5,	0,	printargs,		"SYS_298"	}, /* 298 */
+-	{ 5,	0,	printargs,		"SYS_299"	}, /* 299 */
+-	{ 5,	0,	printargs,		"SYS_300"	}, /* 300 */
+-	{ 5,	0,	printargs,		"SYS_301"	}, /* 301 */
+-	{ 5,	0,	printargs,		"SYS_302"	}, /* 302 */
+-	{ 5,	0,	printargs,		"SYS_303"	}, /* 303 */
+-	{ 5,	0,	printargs,		"SYS_304"	}, /* 304 */
+-	{ 5,	0,	printargs,		"SYS_305"	}, /* 305 */
+-	{ 5,	0,	printargs,		"SYS_306"	}, /* 306 */
+-	{ 5,	0,	printargs,		"SYS_307"	}, /* 307 */
+-	{ 5,	0,	printargs,		"SYS_308"	}, /* 308 */
+-	{ 5,	0,	printargs,		"SYS_309"	}, /* 309 */
+-	{ 5,	0,	printargs,		"SYS_310"	}, /* 310 */
+-	{ 5,	0,	printargs,		"SYS_311"	}, /* 311 */
+-	{ 5,	0,	printargs,		"SYS_312"	}, /* 312 */
+-	{ 5,	0,	printargs,		"SYS_313"	}, /* 313 */
+-	{ 5,	0,	printargs,		"SYS_314"	}, /* 314 */
+-	{ 5,	0,	printargs,		"SYS_315"	}, /* 315 */
+-	{ 5,	0,	printargs,		"SYS_316"	}, /* 316 */
+-	{ 5,	0,	printargs,		"SYS_317"	}, /* 317 */
+-	{ 5,	0,	printargs,		"SYS_318"	}, /* 318 */
+-	{ 5,	0,	printargs,		"SYS_319"	}, /* 319 */
+-	{ 5,	0,	printargs,		"SYS_320"	}, /* 320 */
+-	{ 5,	0,	printargs,		"SYS_321"	}, /* 321 */
+-	{ 5,	0,	printargs,		"SYS_322"	}, /* 322 */
+-	{ 5,	0,	printargs,		"SYS_323"	}, /* 323 */
+-	{ 5,	0,	printargs,		"SYS_324"	}, /* 324 */
+-	{ 5,	0,	printargs,		"SYS_325"	}, /* 325 */
+-	{ 5,	0,	printargs,		"SYS_326"	}, /* 326 */
+-	{ 5,	0,	printargs,		"SYS_327"	}, /* 327 */
+-	{ 5,	0,	printargs,		"SYS_328"	}, /* 328 */
+-	{ 5,	0,	printargs,		"SYS_329"	}, /* 329 */
+-	{ 5,	0,	printargs,		"SYS_330"	}, /* 330 */
+-	{ 5,	0,	printargs,		"SYS_331"	}, /* 331 */
+-	{ 5,	0,	printargs,		"SYS_332"	}, /* 332 */
+-	{ 5,	0,	printargs,		"SYS_333"	}, /* 333 */
+-	{ 5,	0,	printargs,		"SYS_334"	}, /* 334 */
++	{ 4,	TI,	sys_semop,		"semop"		}, /* 298 */
++	{ 4,	TI,	sys_semget,		"semget"	}, /* 299 */
++	{ 4,	TI,	sys_semctl,		"semctl"	}, /* 300 */
++	{ 4,	TI,	sys_msgsnd,		"msgsnd"	}, /* 301 */
++	{ 4,	TI,	sys_msgrcv,		"msgrcv"	}, /* 302 */
++	{ 4,	TI,	sys_msgget,		"msgget"	}, /* 303 */
++	{ 4,	TI,	sys_msgctl,		"msgctl"	}, /* 304 */
++	{ 4,	TI,	sys_shmat,		"shmat"		}, /* 305 */
++	{ 4,	TI,	sys_shmdt,		"shmdt"		}, /* 306 */
++	{ 4,	TI,	sys_shmget,		"shmget"	}, /* 307 */
++	{ 4,	TI,	sys_shmctl,		"shmctl"	}, /* 308 */
++	{ 5,	0,	printargs,		"add_key"	}, /* 309 */
++	{ 4,	0,	printargs,		"request_key"	}, /* 310 */
++	{ 5,	0,	printargs,		"keyctl"	}, /* 311 */
++	{ 5,	TI,	sys_semtimedop,		"semtimedop"	}, /* 312 */
++	{ 5,	0,	printargs,		"vserver"	}, /* 313 */
++	{ 3,	0,	printargs,		"ioprio_set"	}, /* 314 */
++	{ 2,	0,	printargs,		"ioprio_get"	}, /* 315 */
++	{ 0,	TD,	printargs,		"inotify_init"	}, /* 316 */
++	{ 3,	TD,	sys_inotify_add_watch,	"inotify_add_watch" }, /* 317 */
++	{ 2,	TD,	sys_inotify_rm_watch,	"inotify_rm_watch" }, /* 318 */
++	{ 6,	0,	sys_mbind,		"mbind"		}, /* 319 */
++	{ 3,	0,	sys_set_mempolicy,	"set_mempolicy"	}, /* 320 */
++	{ 5,	0,	sys_get_mempolicy,	"get_mempolicy"	}, /* 321 */
++	{ 4,	TD|TF,	sys_openat,		"openat"	}, /* 322 */
++	{ 3,	TD|TF,	sys_mkdirat,		"mkdirat"	}, /* 323 */
++	{ 4,	TD|TF,	sys_mknodat,		"mknodat"	}, /* 324 */
++	{ 5,	TD|TF,	sys_fchownat,		"fchownat"	}, /* 325 */
++	{ 3,	TD|TF,	sys_futimesat,		"futimesat"	}, /* 326 */
++	{ 4,	TD|TD,	sys_newfstatat,		"newfstatat"	}, /* 327 */
++	{ 3,	TD|TF,	sys_unlinkat,		"unlinkat"	}, /* 328 */
++	{ 4,	TD|TF,	sys_renameat,		"renameat"	}, /* 329 */
++	{ 5,	TD|TF,	sys_linkat,		"linkat"	}, /* 330 */
++	{ 3,	TD|TF,	sys_symlinkat,		"symlinkat"	}, /* 331 */
++	{ 4,	TD|TF,	sys_readlinkat,		"readlinkat"	}, /* 332 */
++	{ 3,	TD|TF,	sys_fchmodat,		"fchmodat"	}, /* 333 */
++	{ 3,	TD|TF,	sys_faccessat,		"faccessat"	}, /* 334 */
+ 	{ 5,	0,	printargs,		"SYS_335"	}, /* 335 */
+ 	{ 5,	0,	printargs,		"SYS_336"	}, /* 336 */
+-	{ 5,	0,	printargs,		"SYS_337"	}, /* 337 */
+-	{ 5,	0,	printargs,		"SYS_338"	}, /* 338 */
+-	{ 5,	0,	printargs,		"SYS_339"	}, /* 339 */
+-	{ 5,	0,	printargs,		"SYS_340"	}, /* 340 */
++	{ 1,	TP,	sys_unshare,		"unshare"	}, /* 337 */
++	{ 2,	0,	printargs,		"set_robust_list" }, /* 338 */
++	{ 3,	0,	printargs,		"get_robust_list" }, /* 339 */
++	{ 6,	TD,	printargs,		"splice"	}, /* 340 */
+ 	{ 5,	0,	printargs,		"SYS_341"	}, /* 341 */
+-	{ 5,	0,	printargs,		"SYS_342"	}, /* 342 */
+-	{ 5,	0,	printargs,		"SYS_343"	}, /* 343 */
++	{ 4,	TD,	printargs,		"tee"		}, /* 342 */
++	{ 4,	TD,	printargs,		"vmsplice"	}, /* 343 */
+ 	{ 6,	0,	sys_move_pages,		"move_pages"	}, /* 344 */
+ 	{ 3,	0,	sys_getcpu,		"getcpu"	}, /* 345 */
+ 	{ 5,	0,	printargs,		"SYS_346"	}, /* 346 */
+-	{ 5,	0,	printargs,		"SYS_347"	}, /* 347 */
+-	{ 5,	0,	printargs,		"SYS_348"	}, /* 348 */
++	{ 5,	0,	printargs,		"kexec_load"	}, /* 347 */
++	{ 4,	TD|TF,	sys_utimensat,		"utimensat"	}, /* 348 */
+ 	{ 3,	TD|TS,	sys_signalfd,		"signalfd"	}, /* 349 */
+ 	{ 4,	TD,	sys_timerfd,		"timerfd"	}, /* 350 */
+ 	{ 1,	TD,	sys_eventfd,		"eventfd"	}, /* 351 */
+-	{ 5,	0,	printargs,		"SYS_352"	}, /* 352 */
+-	{ 5,	0,	printargs,		"SYS_353"	}, /* 353 */
+-	{ 5,	0,	printargs,		"SYS_354"	}, /* 354 */
++	{ 6,	TF,	sys_fallocate,		"fallocate"	}, /* 352 */
++	{ 4,	TD,	sys_timerfd_settime,	"timerfd_settime"}, /* 353 */
++	{ 2,	TD,	sys_timerfd_gettime,	"timerfd_gettime"}, /* 354 */
+ 	{ 5,	0,	printargs,		"SYS_355"	}, /* 355 */
+ 	{ 5,	0,	printargs,		"SYS_356"	}, /* 356 */
+ 	{ 5,	0,	printargs,		"SYS_357"	}, /* 357 */
+-- 
+1.6.1.3
diff --git a/pkgs/misc/uboot/default.nix b/pkgs/misc/uboot/default.nix
new file mode 100644
index 000000000000..eeb76df62212
--- /dev/null
+++ b/pkgs/misc/uboot/default.nix
@@ -0,0 +1,53 @@
+{stdenv, fetchurl, unzip}:
+
+assert stdenv.system == "armv5tel-linux";
+
+# All this file is made for the Marvell Sheevaplug
+   
+stdenv.mkDerivation {
+  name = "uboot-sheevaplug-3.4.19";
+   
+  src = fetchurl {
+    url = "ftp://ftp.denx.de/pub/u-boot/u-boot-1.1.4.tar.bz2";
+    sha256 = "19vp4rlikz7h72pqsjhgz7nmgjy4c6vabvxkw67wni70vy5ddy8s";
+  };
+
+  srcAddon = fetchurl {
+    url = "http://www.plugcomputer.org/data/uboot/u-boot-3.4.19.zip";
+    sha256 = "1wag1l6agr8dbnnfaw6bgcrwynwwgry4ihb3gp438699wmkmy91k";
+  };
+
+  postUnpack = ''
+    mv u-boot-1.1.4 u-boot-3.4.19
+    unzip -o $srcAddon
+    sourceRoot=u-boot-3.4.19
+  '';
+
+  patches = [ ./gas220.patch ];
+
+  # Remove the cross compiler prefix, and add reiserfs support
+  configurePhase = ''
+    make mrproper
+    make rd88f6281Sheevaplug_config NBOOT=1 LE=1
+    sed -i /CROSS_COMPILE/d include/config.mk
+  '';
+
+  buildPhase = ''
+    unset src
+    make clean all
+  '';
+
+  buildInputs = [ unzip ];
+
+  dontStrip = true;
+  NIX_STRIP_DEBUG = false;
+
+  installPhase = ''
+    ensureDir $out
+    cp u-boot-rd88f6281Sheevaplug_400db_nand.bin $out
+    cp u-boot u-boot.map $out
+
+    ensureDir $out/bin
+    cp tools/{envcrc,mkimage} $out/bin
+  '';
+}
diff --git a/pkgs/misc/uboot/gas220.patch b/pkgs/misc/uboot/gas220.patch
new file mode 100644
index 000000000000..c5a91b0f3d00
--- /dev/null
+++ b/pkgs/misc/uboot/gas220.patch
@@ -0,0 +1,18 @@
+Patch to allow assembling with binutils 2.20. It worked without this patch in 2.19.1
+diff --git a/board/mv_feroceon/USP/jump.S b/board/mv_feroceon/USP/jump.S
+index 4b6b9ee..58037fc 100644
+--- a/board/mv_feroceon/USP/jump.S
++++ b/board/mv_feroceon/USP/jump.S
+@@ -29,9 +29,11 @@ disclaimer.
+ #include "sys/mvCpuIfRegs.h"
+ 
+ 
+-jumpStart:
+ 
+ .section	".reset_vector_sect",#alloc, #execinstr
++
++jumpStart:
++
+ #if defined(MV_88F6082) || defined(MV_88F6183) || defined(DB_88F5181_OLD) || defined(DB_FPGA) || \
+ 	defined(MV88F6281) || defined(MV88F6192) || defined(MV88F6180)  || defined(MV_88F6183L) || \
+     defined(MV88F6190)
diff --git a/pkgs/os-specific/linux/hal/default.nix b/pkgs/os-specific/linux/hal/default.nix
index 1cce0334dc27..2ca2d32ab412 100644
--- a/pkgs/os-specific/linux/hal/default.nix
+++ b/pkgs/os-specific/linux/hal/default.nix
@@ -13,9 +13,9 @@ stdenv.mkDerivation rec {
   buildInputs = [
     pkgconfig python pciutils expat libusb dbus.libs dbus_glib glib
     libuuid perl perlXMLParser gettext zlib gperf
-    consolekit policykit libsmbios
+    consolekit policykit
     # !!! libsmbios is broken; it doesn't install headers.
-  ];
+  ] ++ stdenv.lib.optional (stdenv.system != "armv5tel-linux") [ libsmbios ];
 
   # !!! Hm, maybe the pci/usb.ids location should be in /etc, so that
   # we don't have to rebuild HAL when we update the PCI/USB IDs.  
@@ -28,7 +28,8 @@ stdenv.mkDerivation rec {
     --enable-umount-helper
   '';
 
-  propagatedBuildInputs = [libusb libsmbios];
+  propagatedBuildInputs = [ libusb ]
+    ++ stdenv.lib.optional (stdenv.system != "armv5tel-linux") [ libsmbios ];
 
   preConfigure = ''
     for i in hald/linux/probing/probe-smbios.c hald/linux/osspec.c \
diff --git a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix
index 3136f52db8e8..37891e6325b8 100644
--- a/pkgs/os-specific/linux/kernel-headers/2.6.28.nix
+++ b/pkgs/os-specific/linux/kernel-headers/2.6.28.nix
@@ -16,6 +16,7 @@ stdenv.mkDerivation {
     if stdenv.system == "i686-linux" then "i386" else
     if stdenv.system == "x86_64-linux" then "x86_64" else
     if stdenv.system == "powerpc-linux" then "powerpc" else
+    if stdenv.system == "armv5tel-linux" then "arm" else
     abort "don't know what the kernel include directory is called for this platform";
 
   buildInputs = [perl];
diff --git a/pkgs/os-specific/linux/kernel/builder.sh b/pkgs/os-specific/linux/kernel/builder.sh
index 89d464189245..88946b4a18f4 100644
--- a/pkgs/os-specific/linux/kernel/builder.sh
+++ b/pkgs/os-specific/linux/kernel/builder.sh
@@ -54,6 +54,11 @@ configurePhase() {
     cat .config
 }
 
+postBuild() {
+   if [ -n "$makeUImage" ]; then
+       make uImage
+   fi
+}
 
 installPhase() {
 
@@ -65,15 +70,24 @@ installPhase() {
         archDir=x86
     fi
 
+
     # Copy the bzImage and System.map.
     cp System.map $out
     if test "$arch" = um; then
         ensureDir $out/bin
         cp linux $out/bin
     else
-        cp arch/$archDir/boot/bzImage $out/vmlinuz
+       if [ -n "$makeUImage" ]; then
+           image=arch/$archDir/boot/uImage
+           cp arch/$archDir/boot/uImage $out
+       else
+           cp arch/$archDir/boot/bzImage $out/vmlinuz
+       fi
+
     fi
 
+    cp vmlinux $out
+
     # Install the modules in $out/lib/modules with matching paths
     # in modules.dep (i.e., refererring to $out/lib/modules, not
     # /lib/modules).  The depmod_opts= is to prevent the kernel
diff --git a/pkgs/os-specific/linux/kernel/config-2.6.31-armv5tel b/pkgs/os-specific/linux/kernel/config-2.6.31-armv5tel
new file mode 100644
index 000000000000..827f9711511f
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/config-2.6.31-armv5tel
@@ -0,0 +1,1786 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.31
+# Tue Sep 22 01:20:57 2009
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_CONSTRUCTORS=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_CLASSIC_RCU=y
+# CONFIG_TREE_RCU is not set
+# CONFIG_PREEMPT_RCU is not set
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_PREEMPT_RCU_TRACE is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=19
+# CONFIG_GROUP_SCHED is not set
+# CONFIG_CGROUPS is not set
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
+# CONFIG_RELAY is not set
+CONFIG_NAMESPACES=y
+# CONFIG_UTS_NS is not set
+# CONFIG_IPC_NS is not set
+# CONFIG_USER_NS is not set
+# CONFIG_PID_NS is not set
+# CONFIG_NET_NS is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+
+#
+# Performance Counters
+#
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_PCI_QUIRKS=y
+CONFIG_SLUB_DEBUG=y
+# CONFIG_STRIP_ASM_SYMS is not set
+CONFIG_COMPAT_BRK=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+CONFIG_TRACEPOINTS=y
+CONFIG_MARKERS=y
+CONFIG_OPROFILE=y
+CONFIG_HAVE_OPROFILE=y
+CONFIG_KPROBES=y
+CONFIG_KRETPROBES=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+# CONFIG_SLOW_WORK is not set
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+# CONFIG_FREEZER is not set
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_GEMINI is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_STMP3XXX is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+CONFIG_ARCH_KIRKWOOD=y
+# CONFIG_ARCH_LOKI is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_MMP is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_W90X900 is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_MSM is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_S3C64XX is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_U300 is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP is not set
+
+#
+# Marvell Kirkwood Implementations
+#
+CONFIG_MACH_DB88F6281_BP=y
+CONFIG_MACH_RD88F6192_NAS=y
+CONFIG_MACH_RD88F6281=y
+CONFIG_MACH_MV88F6281GTW_GE=y
+CONFIG_MACH_SHEEVAPLUG=y
+CONFIG_MACH_TS219=y
+CONFIG_PLAT_ORION=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_FEROCEON=y
+# CONFIG_CPU_FEROCEON_OLD_ID is not set
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5T=y
+CONFIG_CPU_PABRT_NOIFAR=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_FEROCEON=y
+CONFIG_CPU_TLB_FEROCEON=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+CONFIG_OUTER_CACHE=y
+CONFIG_CACHE_FEROCEON_L2=y
+# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set
+
+#
+# Bus support
+#
+CONFIG_PCI=y
+CONFIG_PCI_SYSCALL=y
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+CONFIG_PCI_LEGACY=y
+# CONFIG_PCI_DEBUG is not set
+# CONFIG_PCI_STUB is not set
+# CONFIG_PCI_IOV is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_PREEMPT=y
+CONFIG_HZ=100
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+# CONFIG_HIGHMEM is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_VIRT_TO_BUS=y
+CONFIG_HAVE_MLOCK=y
+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_UACCESS_WITH_MEMCPY=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=""
+# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+
+#
+# CPU Power Management
+#
+CONFIG_CPU_IDLE=y
+CONFIG_CPU_IDLE_GOV_LADDER=y
+CONFIG_CPU_IDLE_GOV_MENU=y
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+# CONFIG_VFP is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_HAVE_AOUT=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_LRO=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+CONFIG_NET_DSA=y
+# CONFIG_NET_DSA_TAG_DSA is not set
+CONFIG_NET_DSA_TAG_EDSA=y
+# CONFIG_NET_DSA_TAG_TRAILER is not set
+CONFIG_NET_DSA_MV88E6XXX=y
+# CONFIG_NET_DSA_MV88E6060 is not set
+# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
+# CONFIG_NET_DSA_MV88E6131 is not set
+CONFIG_NET_DSA_MV88E6123_61_65=y
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_PHONET is not set
+# CONFIG_IEEE802154 is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+CONFIG_NET_PKTGEN=m
+# CONFIG_NET_TCPPROBE is not set
+# CONFIG_NET_DROP_MONITOR is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+CONFIG_WIRELESS=y
+CONFIG_CFG80211=y
+# CONFIG_CFG80211_REG_DEBUG is not set
+# CONFIG_CFG80211_DEBUGFS is not set
+CONFIG_WIRELESS_OLD_REGULATORY=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WIRELESS_EXT_SYSFS=y
+CONFIG_LIB80211=y
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_MAC80211=y
+CONFIG_MAC80211_DEFAULT_PS=y
+CONFIG_MAC80211_DEFAULT_PS_VALUE=1
+
+#
+# Rate control algorithm selection
+#
+CONFIG_MAC80211_RC_MINSTREL=y
+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
+CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT="minstrel"
+# CONFIG_MAC80211_LEDS is not set
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_TESTS is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_GEN_PROBE=y
+CONFIG_MTD_CFI_ADV_OPTIONS=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+CONFIG_MTD_CFI_STAA=y
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+# CONFIG_MTD_PHYSMAP_COMPAT is not set
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_IMPA7 is not set
+# CONFIG_MTD_INTEL_VR_NOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_DATAFLASH is not set
+CONFIG_MTD_M25P80=y
+CONFIG_M25PXX_USE_FAST_READ=y
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_GPIO is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_CAFE is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+CONFIG_MTD_NAND_ORION=y
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+
+#
+# UBI - Unsorted block images
+#
+CONFIG_MTD_UBI=y
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_MG_DISK is not set
+# CONFIG_MISC_DEVICES is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_SCSI_PROC_FS is not set
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+# CONFIG_CHR_DEV_SCH is not set
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_BNX2_ISCSI is not set
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_3W_9XXX is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC94XX is not set
+# CONFIG_SCSI_MVSAS is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_ARCMSR is not set
+# CONFIG_MEGARAID_NEWGEN is not set
+# CONFIG_MEGARAID_LEGACY is not set
+# CONFIG_MEGARAID_SAS is not set
+# CONFIG_SCSI_MPT2SAS is not set
+# CONFIG_SCSI_HPTIOP is not set
+# CONFIG_LIBFC is not set
+# CONFIG_LIBFCOE is not set
+# CONFIG_FCOE is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_STEX is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_IPR is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_QLA_FC is not set
+# CONFIG_SCSI_QLA_ISCSI is not set
+# CONFIG_SCSI_LPFC is not set
+# CONFIG_SCSI_DC395x is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_SRP is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_SCSI_OSD_INITIATOR is not set
+CONFIG_ATA=y
+# CONFIG_ATA_NONSTANDARD is not set
+CONFIG_SATA_PMP=y
+CONFIG_SATA_AHCI=y
+# CONFIG_SATA_SIL24 is not set
+CONFIG_ATA_SFF=y
+# CONFIG_SATA_SVW is not set
+# CONFIG_ATA_PIIX is not set
+CONFIG_SATA_MV=y
+# CONFIG_SATA_NV is not set
+# CONFIG_PDC_ADMA is not set
+# CONFIG_SATA_QSTOR is not set
+# CONFIG_SATA_PROMISE is not set
+# CONFIG_SATA_SX4 is not set
+# CONFIG_SATA_SIL is not set
+# CONFIG_SATA_SIS is not set
+# CONFIG_SATA_ULI is not set
+# CONFIG_SATA_VIA is not set
+# CONFIG_SATA_VITESSE is not set
+# CONFIG_SATA_INIC162X is not set
+# CONFIG_PATA_ALI is not set
+# CONFIG_PATA_AMD is not set
+# CONFIG_PATA_ARTOP is not set
+# CONFIG_PATA_ATIIXP is not set
+# CONFIG_PATA_CMD640_PCI is not set
+# CONFIG_PATA_CMD64X is not set
+# CONFIG_PATA_CS5520 is not set
+# CONFIG_PATA_CS5530 is not set
+# CONFIG_PATA_CYPRESS is not set
+# CONFIG_PATA_EFAR is not set
+# CONFIG_ATA_GENERIC is not set
+# CONFIG_PATA_HPT366 is not set
+# CONFIG_PATA_HPT37X is not set
+# CONFIG_PATA_HPT3X2N is not set
+# CONFIG_PATA_HPT3X3 is not set
+# CONFIG_PATA_IT821X is not set
+# CONFIG_PATA_IT8213 is not set
+# CONFIG_PATA_JMICRON is not set
+# CONFIG_PATA_TRIFLEX is not set
+# CONFIG_PATA_MARVELL is not set
+# CONFIG_PATA_MPIIX is not set
+# CONFIG_PATA_OLDPIIX is not set
+# CONFIG_PATA_NETCELL is not set
+# CONFIG_PATA_NINJA32 is not set
+# CONFIG_PATA_NS87410 is not set
+# CONFIG_PATA_NS87415 is not set
+# CONFIG_PATA_OPTI is not set
+# CONFIG_PATA_OPTIDMA is not set
+# CONFIG_PATA_PDC_OLD is not set
+# CONFIG_PATA_RADISYS is not set
+# CONFIG_PATA_RZ1000 is not set
+# CONFIG_PATA_SC1200 is not set
+# CONFIG_PATA_SERVERWORKS is not set
+# CONFIG_PATA_PDC2027X is not set
+# CONFIG_PATA_SIL680 is not set
+# CONFIG_PATA_SIS is not set
+# CONFIG_PATA_VIA is not set
+# CONFIG_PATA_WINBOND is not set
+# CONFIG_PATA_SCH is not set
+# CONFIG_MD is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# You can enable one or both FireWire driver stacks.
+#
+
+#
+# See the help texts for more information.
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
+# CONFIG_ARCNET is not set
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+CONFIG_MARVELL_PHY=y
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_NATIONAL_PHY is not set
+# CONFIG_STE10XP is not set
+# CONFIG_LSI_ET1011C_PHY is not set
+# CONFIG_FIXED_PHY is not set
+# CONFIG_MDIO_BITBANG is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_AX88796 is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_CASSINI is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_ENC28J60 is not set
+# CONFIG_ETHOC is not set
+# CONFIG_SMC911X is not set
+# CONFIG_SMSC911X is not set
+# CONFIG_DNET is not set
+# CONFIG_NET_TULIP is not set
+# CONFIG_HP100 is not set
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_B44 is not set
+# CONFIG_FORCEDETH is not set
+# CONFIG_E100 is not set
+# CONFIG_FEALNX is not set
+# CONFIG_NATSEMI is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_8139CP is not set
+# CONFIG_8139TOO is not set
+# CONFIG_R6040 is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SMSC9420 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_TLAN is not set
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851 is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_SC92031 is not set
+# CONFIG_ATL2 is not set
+CONFIG_NETDEV_1000=y
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_E1000E is not set
+# CONFIG_IP1000 is not set
+# CONFIG_IGB is not set
+# CONFIG_IGBVF is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_VIA_VELOCITY is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_CNIC is not set
+CONFIG_MV643XX_ETH=y
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+# CONFIG_ATL1E is not set
+# CONFIG_ATL1C is not set
+# CONFIG_JME is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_LIBERTAS=y
+# CONFIG_LIBERTAS_USB is not set
+CONFIG_LIBERTAS_SDIO=y
+# CONFIG_LIBERTAS_SPI is not set
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_LIBERTAS_THINFIRM is not set
+# CONFIG_ATMEL is not set
+# CONFIG_AT76C50X_USB is not set
+# CONFIG_PRISM54 is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_USB_NET_RNDIS_WLAN is not set
+# CONFIG_RTL8180 is not set
+# CONFIG_RTL8187 is not set
+# CONFIG_ADM8211 is not set
+# CONFIG_MAC80211_HWSIM is not set
+# CONFIG_MWL8K is not set
+# CONFIG_P54_COMMON is not set
+# CONFIG_ATH5K is not set
+# CONFIG_ATH9K is not set
+# CONFIG_AR9170_USB is not set
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+# CONFIG_IWLWIFI is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_B43 is not set
+# CONFIG_B43LEGACY is not set
+# CONFIG_ZD1211RW is not set
+# CONFIG_RT2X00 is not set
+# CONFIG_HERMES is not set
+# CONFIG_WL12XX is not set
+# CONFIG_IWM is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_GPIO=y
+# CONFIG_KEYBOARD_MATRIX is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+# CONFIG_SERIO_PCIPS2 is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_DEVKMEM is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_NOZOMI is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_PCI=y
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=2
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_MAX3100 is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=16
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_ISCH is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_MV64XXX=y
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_SIMTEC is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Graphics adapter I2C/DDC channel drivers
+#
+# CONFIG_I2C_VOODOO3 is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_GPIO is not set
+CONFIG_SPI_ORION=y
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+# CONFIG_GPIO_SYSFS is not set
+
+#
+# Memory mapped GPIO expanders:
+#
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+
+#
+# PCI GPIO expanders:
+#
+# CONFIG_GPIO_BT8XX is not set
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_THERMAL is not set
+# CONFIG_THERMAL_HWMON is not set
+# CONFIG_WATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_AB3100_CORE is not set
+# CONFIG_EZX_PCAP is not set
+# CONFIG_MEDIA_SUPPORT is not set
+
+#
+# Graphics support
+#
+# CONFIG_DRM is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+# CONFIG_FB is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_SOUND is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_HID_PID is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# Special HID drivers
+#
+CONFIG_HID_A4TECH=y
+CONFIG_HID_APPLE=y
+CONFIG_HID_BELKIN=y
+CONFIG_HID_CHERRY=y
+CONFIG_HID_CHICONY=y
+CONFIG_HID_CYPRESS=y
+CONFIG_HID_DRAGONRISE=y
+# CONFIG_DRAGONRISE_FF is not set
+CONFIG_HID_EZKEY=y
+CONFIG_HID_KYE=y
+CONFIG_HID_GYRATION=y
+CONFIG_HID_KENSINGTON=y
+CONFIG_HID_LOGITECH=y
+# CONFIG_LOGITECH_FF is not set
+# CONFIG_LOGIRUMBLEPAD2_FF is not set
+CONFIG_HID_MICROSOFT=y
+CONFIG_HID_MONTEREY=y
+CONFIG_HID_NTRIG=y
+CONFIG_HID_PANTHERLORD=y
+# CONFIG_PANTHERLORD_FF is not set
+CONFIG_HID_PETALYNX=y
+CONFIG_HID_SAMSUNG=y
+CONFIG_HID_SONY=y
+CONFIG_HID_SUNPLUS=y
+CONFIG_HID_GREENASIA=y
+# CONFIG_GREENASIA_FF is not set
+CONFIG_HID_SMARTJOYPLUS=y
+# CONFIG_SMARTJOYPLUS_FF is not set
+CONFIG_HID_TOPSEED=y
+CONFIG_HID_THRUSTMASTER=y
+# CONFIG_THRUSTMASTER_FF is not set
+CONFIG_HID_ZEROPLUS=y
+# CONFIG_ZEROPLUS_FF is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+# CONFIG_USB_MON is not set
+# CONFIG_USB_WUSB is not set
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+# CONFIG_USB_XHCI_HCD is not set
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1760_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
+# CONFIG_USB_UHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_WHCI_HCD is not set
+# CONFIG_USB_HWA_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+CONFIG_USB_PRINTER=m
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+CONFIG_USB_STORAGE_DATAFAB=y
+CONFIG_USB_STORAGE_FREECOM=y
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+CONFIG_USB_STORAGE_SDDR09=y
+CONFIG_USB_STORAGE_SDDR55=y
+CONFIG_USB_STORAGE_JUMPSHOT=y
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_VST is not set
+# CONFIG_USB_GADGET is not set
+
+#
+# OTG and related infrastructure
+#
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_NOP_USB_XCEIV is not set
+# CONFIG_UWB is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+# CONFIG_MMC_UNSAFE_RESUME is not set
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=y
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+# CONFIG_MMC_SDHCI is not set
+# CONFIG_MMC_TIFM_SD is not set
+CONFIG_MMC_MVSDIO=y
+# CONFIG_MMC_SPI is not set
+# CONFIG_MMC_CB710 is not set
+# CONFIG_MMC_VIA_SDMMC is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_ACCESSIBILITY is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_PCA9532 is not set
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_GPIO_PLATFORM=y
+# CONFIG_LEDS_LP3944 is not set
+# CONFIG_LEDS_PCA955X is not set
+# CONFIG_LEDS_DAC124S085 is not set
+# CONFIG_LEDS_BD2802 is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
+# CONFIG_LEDS_TRIGGER_GPIO is not set
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+CONFIG_RTC_DRV_S35390A=y
+# CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_RX8581 is not set
+# CONFIG_RTC_DRV_RX8025 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_DS1390 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_DS3234 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1286 is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T35 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_MV=y
+CONFIG_DMADEVICES=y
+
+#
+# DMA Devices
+#
+CONFIG_MV_XOR=y
+CONFIG_DMA_ENGINE=y
+
+#
+# DMA Clients
+#
+# CONFIG_NET_DMA is not set
+# CONFIG_ASYNC_TX_DMA is not set
+# CONFIG_DMATEST is not set
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_REGULATOR is not set
+# CONFIG_UIO is not set
+# CONFIG_STAGING is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_REISERFS_FS=y
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=y
+
+#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=y
+CONFIG_JOLIET=y
+# CONFIG_ZISOFS is not set
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=y
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=y
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+CONFIG_NLS_ISO8859_2=y
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_DETECT_HUNG_TASK=y
+# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
+CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_TIMER_STATS is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_PREEMPT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+CONFIG_STACKTRACE=y
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_KPROBES_SANITY_TEST is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_LKDTM is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_SYSCTL_SYSCALL_CHECK=y
+# CONFIG_PAGE_POISONING is not set
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_TRACING=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+# CONFIG_FUNCTION_TRACER is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_PREEMPT_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_ENABLE_DEFAULT_TRACERS is not set
+# CONFIG_BOOT_TRACER is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_KMEMTRACE is not set
+# CONFIG_WORKQUEUE_TRACER is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_RING_BUFFER_BENCHMARK is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+CONFIG_ARM_UNWIND=y
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_STACK_USAGE is not set
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+# CONFIG_CRYPTO_FIPS is not set
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+# CONFIG_CRYPTO_GF128MUL is not set
+# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_WORKQUEUE=y
+# CONFIG_CRYPTO_CRYPTD is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_SEQIV is not set
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=m
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=y
+# CONFIG_CRYPTO_LRW is not set
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+# CONFIG_CRYPTO_HMAC is not set
+# CONFIG_CRYPTO_XCBC is not set
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA256 is not set
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_ARC4=y
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+
+#
+# Compression
+#
+# CONFIG_CRYPTO_DEFLATE is not set
+# CONFIG_CRYPTO_ZLIB is not set
+# CONFIG_CRYPTO_LZO is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_DEV_HIFN_795X is not set
+CONFIG_BINARY_PRINTF=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRC16=y
+# CONFIG_CRC_T10DIF is not set
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_NLATTR=y
diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix
index 909efca247ed..31af236ffae6 100644
--- a/pkgs/os-specific/linux/kernel/generic.nix
+++ b/pkgs/os-specific/linux/kernel/generic.nix
@@ -37,10 +37,12 @@
 
 , preConfigure ? ""
 , extraMeta ? {}
+, platform ? { uboot = null; }
 , ...
 }:
 
-assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
+assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"
+  || stdenv.system == "armv5tel-linux";
 
 let
 
@@ -71,13 +73,15 @@ stdenv.mkDerivation {
           map (p: if p ? extraConfig then p.extraConfig else "") kernelPatches;
     in lib.concatStrings (addNewlines (configFromPatches ++ extraConfig));
 
-  buildInputs = [perl mktemp];
+  buildInputs = [perl mktemp]
+    ++ lib.optional (platform.uboot != null) [platform.uboot];
   
   arch =
     if xen then "xen" else
     if userModeLinux then "um" else
     if stdenv.system == "i686-linux" then "i386" else
     if stdenv.system == "x86_64-linux" then "x86_64" else
+    if stdenv.system == "armv5tel-linux" then "arm" else
     abort "Platform ${stdenv.system} is not supported.";
 
   makeFlags = if userModeLinux then "ARCH=um SHELL=bash" else "";
@@ -87,6 +91,8 @@ stdenv.mkDerivation {
   allowLocalVersion = false; # don't allow patches to set a suffix
   inherit localVersion; # but do allow the user to set one.
 
+  makeUImage = if (platform.uboot != null) then true else false;
+
   meta = {
     description =
       (if userModeLinux then
diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.28.nix b/pkgs/os-specific/linux/kernel/linux-2.6.28.nix
index 8ec7fd0c07b7..eefa0303d923 100644
--- a/pkgs/os-specific/linux/kernel/linux-2.6.28.nix
+++ b/pkgs/os-specific/linux/kernel/linux-2.6.28.nix
@@ -19,6 +19,7 @@ import ./generic.nix (
     config =
       if stdenv.system == "i686-linux" then ./config-2.6.28-i686-smp else
       if stdenv.system == "x86_64-linux" then ./config-2.6.28-x86_64-smp else
+      if stdenv.system == "armv5tel-linux" then ./config-2.6.28-arm else
       abort "No kernel configuration for your platform!";
   }
 
diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.29.nix b/pkgs/os-specific/linux/kernel/linux-2.6.29.nix
index f9a55dd1f2c5..793d1bd74c7a 100644
--- a/pkgs/os-specific/linux/kernel/linux-2.6.29.nix
+++ b/pkgs/os-specific/linux/kernel/linux-2.6.29.nix
@@ -19,6 +19,7 @@ import ./generic.nix (
     config =
       if stdenv.system == "i686-linux" then ./config-2.6.29-i686-smp else
       if stdenv.system == "x86_64-linux" then ./config-2.6.29-x86_64-smp else
+      if stdenv.system == "armv5tel-linux" then ./config-2.6.29-arm else
       abort "No kernel configuration for your platform!";
   }
 
diff --git a/pkgs/os-specific/linux/kernel/linux-2.6.31.nix b/pkgs/os-specific/linux/kernel/linux-2.6.31.nix
index 8be1f2023327..70022c6abd3f 100644
--- a/pkgs/os-specific/linux/kernel/linux-2.6.31.nix
+++ b/pkgs/os-specific/linux/kernel/linux-2.6.31.nix
@@ -20,7 +20,7 @@ import ./generic.nix (
       iwlwifi = true;
     };
 
-    preConfigure = ''
+    preConfigure = if (stdenv.system != "armv5tel-linux") then ''
         killOption () {
           sed -re 's/^('"$1"')=[ym]/# \1 is not set/' -i .config
         }
@@ -55,9 +55,10 @@ import ./generic.nix (
         setOptionYes CONFIG_PREEMPT_VOLUNTARY
         
         cp .config ${config}
-    '';
+    '' else "";
 
-    config = "./kernel-config";
+    config = if (stdenv.system == "armv5tel-linux") then 
+      (./config-2.6.31-armv5tel) else "./kernel-config";
   }
 
   // args
diff --git a/pkgs/os-specific/linux/klibc/default.nix b/pkgs/os-specific/linux/klibc/default.nix
index 7f4229efe85a..bfb76f32821f 100644
--- a/pkgs/os-specific/linux/klibc/default.nix
+++ b/pkgs/os-specific/linux/klibc/default.nix
@@ -15,6 +15,8 @@ stdenv.mkDerivation {
   makeFlags = ["V=1" "prefix=$out" "SHLIBDIR=$out/lib"];
   
   preBuild = ''
+    sed -i /CONFIG_AEABI/d defconfig
+    echo "CONFIG_AEABI=y" >> defconfig
     makeFlags=$(eval "echo $makeFlags")
 
     mkdir linux
diff --git a/pkgs/os-specific/linux/pam_unix2/default.nix b/pkgs/os-specific/linux/pam_unix2/default.nix
index f215d69ea8ab..090c3e9e5419 100644
--- a/pkgs/os-specific/linux/pam_unix2/default.nix
+++ b/pkgs/os-specific/linux/pam_unix2/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, pam, libxcrypt}:
+{stdenv, fetchurl, pam, libxcrypt ? null}:
    
 stdenv.mkDerivation {
   name = "pam_unix2-2.6";
@@ -8,5 +8,5 @@ stdenv.mkDerivation {
     sha256 = "067xnyd3q8ik73glxwyx1lydk4bgl78lzq44mnqqp4jrpnpd04ml";
   };
 
-  buildInputs = [pam libxcrypt];
+  buildInputs = [pam ];
 }
diff --git a/pkgs/os-specific/linux/uclibc/default.nix b/pkgs/os-specific/linux/uclibc/default.nix
new file mode 100644
index 000000000000..1edcc933e575
--- /dev/null
+++ b/pkgs/os-specific/linux/uclibc/default.nix
@@ -0,0 +1,38 @@
+{stdenv, fetchurl, kernelHeaders}:
+
+assert stdenv.isLinux;
+
+stdenv.mkDerivation {
+  name = "uclibc-0.9.30.1";
+  src = fetchurl {
+    url = http://www.uclibc.org/downloads/uClibc-0.9.30.1.tar.bz2;
+    sha256 = "132cf27hkgi0q4qlwbiyj4ffj76sja0jcxm0aqzzgks65jh6k5rd";
+  };
+
+  configurePhase = ''
+    make defconfig
+    sed -e s@/usr/include@${kernelHeaders}@ \
+      -e 's@^RUNTIME_PREFIX.*@RUNTIME_PREFIX="/"@' \
+      -e 's@^DEVEL_PREFIX.*@DEVEL_PREFIX="/"@' \
+      ${if stdenv.system=="armv5tel-linux" then
+      ''-e 's/.*CONFIG_ARM_OABI.*//' \
+        -e 's/.*CONFIG_ARM_EABI.*/CONFIG_ARM_EABI=y/' \
+        -e 's/.*ARCH_BIG_ENDIAN.*/#ARCH_BIG_ENDIAN=y/' \
+        -e 's/.*ARCH_WANTS_BIG_ENDIAN.*/#ARCH_WANTS_BIG_ENDIAN=y/' \
+        -e 's/.*ARCH_WANTS_LITTLE_ENDIAN.*/ARCH_WANTS_LITTLE_ENDIAN=y/' '' else ""} \
+      -i .config
+    make oldconfig
+  '';
+
+  installPhase = ''
+    mkdir -p $out
+    make PREFIX=$out install
+    (cd $out/include && ln -s ${kernelHeaders}/include/* .) || exit 1
+  '';
+  
+  meta = {
+    homepage = http://www.uclibc.org/;
+    description = "A small implementation of the C library";
+    license = "LGPLv2";
+  };
+}
diff --git a/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix b/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix
index c736396a8e3e..cb0a07ec289f 100644
--- a/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix
+++ b/pkgs/os-specific/linux/zen-kernel/2.6.31-zen5.nix
@@ -3,7 +3,10 @@ let
   s = import ./src-for-2.6.31-zen5.nix;
   in 
 (import ../kernel/generic.nix) (rec {
-  inherit (a) stdenv fetchurl perl mktemp module_init_tools;
+  inherit (a) stdenv fetchurl perl mktemp module_init_tools platform;
+
+  uboot = if (platform.name == "sheevaplug") then
+    platform.uboot else null;
 
   src = a.builderDefs.fetchGitFromSrcInfo s;
   version = "2.6.31-zen5";
@@ -11,7 +14,7 @@ let
   features = {
     iwlwifi = true;
     zen = true;
-    fbConDecor = true;
+    fbConDecor = if (platform.name == "pc") then true else false;
     aufs = true;
   };
 
@@ -23,7 +26,7 @@ let
       linux;
   };
 
-  preConfigure = '' 
+  configFunctions = '' 
     killOption () {
       sed -re 's/^('"$1"')=.*/# \1 is not set/' -i .config
     }
@@ -38,7 +41,10 @@ let
     setOptionYes () {
       setOptionVal "$1" y
     }
+  '';
+
 
+  configurePC = ''
     make allmodconfig
 
     killOption CONFIG_CMDLINE_OVERRIDE
@@ -99,4 +105,89 @@ let
   ''
     cp .config ${config}
   '';
+
+  configureBaseSheevaplug = '' 
+    ARCH=arm make kirkwood_defconfig
+  '';
+
+  configureBaseVersatileARM = '' 
+    ARCH=arm make versatile_defconfig
+  '';
+
+  configureARM = '' 
+    killOption CONFIG_CMDLINE_OVERRIDE
+
+    killOption 'CONFIG_.*_DEBUG.*'
+    killOption 'CONFIG_DEBUG.*'
+    killOption CONFIG_AUDIT_ARCH
+    killOption CONFIG_PERF_COUNTERS
+    killOption 'CONFIG_GCOV.*'
+    killOption 'CONFIG_KGDB.*'
+    killOption 'CONFIG_.*_TEST'
+    killOption CONFIG_TASKSTATS
+
+    killOption CONFIG_SLQB
+    killOption CONFIG_SLQB_ALLOCATOR
+    setOptionYes CONFIG_SLUB_ALLOCATOR
+    setOptionYes CONFIG_SLUB
+    killOption CONFIG_ACPI_CUSTOM_DSDT_INITRD
+    killOption CONFIG_DEVTMPFS
+    killOption CONFIG_DEVTMPFS_MOUNT
+
+    killOption CONFIG_IMA
+  '' +
+  ''
+    killOption CONFIG_USB_OTG_BLACKLIST_HUB
+  ''+
+  ''
+    killOption CONFIG_KERNEL_BZIP2
+    killOption CONFIG_KERNEL_LZMA
+    setOptionYes CONFIG_KERNEL_GZIP
+  ''+
+  ''
+    killOption CONFIG_FB_TILEBLITTING
+    killOption CONFIG_FB_S3
+    killOption CONFIG_FB_VT8623
+    killOption CONFIG_FB_ARK
+    killOption CONFIG_FRAMEBUFFER_CONSOLE
+    killOption CONFIG_FB
+    make oldconfig
+    killOption CONFIG_FB_CON_DECOR
+    killOption CONFIG_FB_VESA
+  ''+
+  ''
+    killOption CONFIG_PREEMPT_NONE
+    setOptionYes CONFIG_PREEMPT_VOLUNTARY
+  ''+
+  ''
+    killOption CONFIG_PRAMFS
+  ''+
+  ''
+    setOptionYes CONFIG_MTD_UBI
+    setOptionYes CONFIG_REISERFS_FS
+    setOptionYes CONFIG_FUSE_FS
+    setOptionYes CONFIG_ISO9660_FS
+  ''+
+  (if a.lib.attrByPath ["ckSched"] false a then ''
+    killOption CONFIG_CPU_CFS
+    setOptionYes CONFIG_CPU_BFS
+    killOption CONFIG_NO_HZ
+    killOption CONFIG_HZ_1000
+    setOptionYes CONFIG_HZ_250
+    setOptionVal CONFIG_HZ 250
+  ''else "") +
+  ''
+    cp .config ${config}
+  '';
+
+
+  preConfigure = configFunctions +
+    (if (platform.name == "pc") then
+       (configureBaseSheevaplug + configureARM)
+    else if (platform.name == "sheevaplug") then
+       (configureBaseSheevaplug + configureARM)
+    else if (platform.name == "versatileARM") then
+       (configureBaseVersatileARM + configureARM)
+    else throw "platform not supported"
+    );
 })
diff --git a/pkgs/shells/bash/bash-patches.nix b/pkgs/shells/bash/bash-patches.nix
new file mode 100644
index 000000000000..93a4f982e172
--- /dev/null
+++ b/pkgs/shells/bash/bash-patches.nix
@@ -0,0 +1,37 @@
+# Automatically generated by `update-patch-set.sh'; do not edit.
+
+patch: [
+(patch "001" "06q3y3i2kp09bnjd99lxa95psdmj2haril7pxhdbz9sx9qh19dg3")
+(patch "002" "1x2w3mmz1qga30zf95wmnpjsdp8cnd2ljl29mfq9r6q1cvjifla9")
+(patch "003" "1n3vg6p4nc7kd896s0fp48y9f6ddf3bkpdqzgmdpgqxi243c8073")
+(patch "004" "1bnja962g9isrqhrw8dzxsx7ssvc2ayk1a9vmg2dx6gai8gys0sb")
+(patch "005" "0l4l62riap2kqy20789x7f6bfx361yvixds0gnh10rli4v05h1j2")
+(patch "006" "1r429n2b5cs2gi5zjv1hlr8k7jplnjg3y563369z799x1x9651y7")
+(patch "007" "0vb11vy8r5ayr88hrlli8xj2qcird1qg8l99nknrwnni4jg5b3am")
+(patch "008" "1z6q0lq1yxwpf6nf1z39jbyycv6cfv6gwpaqmgg7pnw31z029nw7")
+(patch "009" "0avyvz8rkj66x715zf1b3w2pgbwwzaj977v9pcrscjksc50c4iq0")
+(patch "010" "05j8xq2s1wnii1za1s6nglzga9xp7q1dmcs1bqqrlggz8mmnyhgj")
+(patch "011" "1m2lhfhy6bl3j88qi9kcn6n1qb439n8pmhl4cqsmi2g8xwli9j7z")
+(patch "012" "1ww327ga4s7607jgr0xd6nh8bg4xgf2vk63p2yy9b1iaq7lxdi5j")
+(patch "013" "0fjc3qj4q6q2zfq1qmiarp6s4hhbh80q47xwws0mvgpks7wwl33n")
+(patch "014" "16n3l7627n8b1p9s9ss9fcj7nbn1s6yndwmlh3v751knj73c9v8k")
+(patch "015" "0548fm4vd3sv3y4g3csysm1mm7jk5hvyfwglw1c0pj2lvyzf583v")
+(patch "016" "06fmf6jmgzl0x1vd7pkyi90sa1wjywkd42gi1phqmrwgj9p96flg")
+(patch "017" "08gh63spac39z90n1d8gpx571x7n4bwzp2yqm3ik9c1rcgz2mvib")
+(patch "018" "0cg6q3fn0j8kzd9w7plnwrbyxv8hzwx9vjp3ij9vx1p3n26vpcqx")
+(patch "019" "0xbl1f5l04pmrs5dsq2nbpcs58zgz0f48nj4hqic143h0y7r8jah")
+(patch "020" "11371hsarqc5czij1lmkj79c0h1b7hninkzrzmqpr1hnwgmrm6hw")
+(patch "021" "0k8ii0yb4zhxmc90n3y2wpkczrxh7j1avjflnsi42j8hidpjsiq2")
+(patch "022" "04lh6n91bif6wbcmizps40yc9qwfw720xq3vmmrkz1m13b3isnh4")
+(patch "023" "11nwbnp4gmsjw46gq9gahzlbdagl3r1vdvcxvxfwlqppflim42sq")
+(patch "024" "1aqp6z2mlp1m921ckgiiqd42fnvjrhil4bkkw58vjcgygv2bm7m5")
+(patch "025" "023aixd4v3adsvnni9jf2qcfgpsza544k76k2ny78d036vb00ygp")
+(patch "026" "1jzn8185iw49126mngbz8007dd6ca9m04n5yhhc5c9b6ki0g9gd9")
+(patch "027" "1wkp9ci0ccvgmnjyg5z3qkcfh2z7p3rgdm8cc5k8mk5sn5mw4pgn")
+(patch "028" "06id09sb9rvlw7phibs6aw7ncjddikia0mjr9jdis75byfx2q8jv")
+(patch "029" "0rpsam2m9mxnxcgcdr461sijprqi9wv6i9gg5c7c46gwj4gs5x8m")
+(patch "030" "1wwajl7fb5vy25m08fp4jshgqdh02m66zj7yq8i0j65675ldx1bz")
+(patch "031" "037viyi9n9hnc5yyfgrr1ssvqr2vkasn08x3qvyxak7f0s4k2gv0")
+(patch "032" "1pma7w85vq831izaqc4p9831hfsfl31s4n155azkrxywpqv4fsza")
+(patch "033" "1x845nfqg8wr1x4wls9jdrzdq1lbig02w07wpmfr4h4r6bhgd5n4")
+]
diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/default.nix
index 8a58f7aec00a..02736dec2855 100644
--- a/pkgs/shells/bash/default.nix
+++ b/pkgs/shells/bash/default.nix
@@ -3,7 +3,7 @@
 assert interactive -> readline != null;
 
 stdenv.mkDerivation rec {
-  name = "bash-4.0-p17";
+  name = "bash-4.0-p28";
 
   src = fetchurl {
     url = "mirror://gnu/bash/bash-4.0.tar.gz";
@@ -19,8 +19,6 @@ stdenv.mkDerivation rec {
     -DSSH_SOURCE_BASHRC
   '';
 
-  postInstall = "ln -s bash $out/bin/sh";
-
   patchFlags = "-p0";
 
   patches =
@@ -30,25 +28,8 @@ stdenv.mkDerivation rec {
           url = "mirror://gnu/bash/bash-4.0-patches/bash40-${nr}";
           inherit sha256;
         };
-    in [
-      (patch "001" "06q3y3i2kp09bnjd99lxa95psdmj2haril7pxhdbz9sx9qh19dg3")
-      (patch "002" "1x2w3mmz1qga30zf95wmnpjsdp8cnd2ljl29mfq9r6q1cvjifla9")
-      (patch "003" "1n3vg6p4nc7kd896s0fp48y9f6ddf3bkpdqzgmdpgqxi243c8073")
-      (patch "004" "1bnja962g9isrqhrw8dzxsx7ssvc2ayk1a9vmg2dx6gai8gys0sb")
-      (patch "005" "0l4l62riap2kqy20789x7f6bfx361yvixds0gnh10rli4v05h1j2")
-      (patch "006" "1r429n2b5cs2gi5zjv1hlr8k7jplnjg3y563369z799x1x9651y7")
-      (patch "007" "0vb11vy8r5ayr88hrlli8xj2qcird1qg8l99nknrwnni4jg5b3am")
-      (patch "008" "1z6q0lq1yxwpf6nf1z39jbyycv6cfv6gwpaqmgg7pnw31z029nw7")
-      (patch "009" "0avyvz8rkj66x715zf1b3w2pgbwwzaj977v9pcrscjksc50c4iq0")
-      (patch "010" "05j8xq2s1wnii1za1s6nglzga9xp7q1dmcs1bqqrlggz8mmnyhgj")
-      (patch "011" "1m2lhfhy6bl3j88qi9kcn6n1qb439n8pmhl4cqsmi2g8xwli9j7z")
-      (patch "012" "1ww327ga4s7607jgr0xd6nh8bg4xgf2vk63p2yy9b1iaq7lxdi5j")
-      (patch "013" "0fjc3qj4q6q2zfq1qmiarp6s4hhbh80q47xwws0mvgpks7wwl33n")
-      (patch "014" "16n3l7627n8b1p9s9ss9fcj7nbn1s6yndwmlh3v751knj73c9v8k")
-      (patch "015" "0548fm4vd3sv3y4g3csysm1mm7jk5hvyfwglw1c0pj2lvyzf583v")
-      (patch "016" "06fmf6jmgzl0x1vd7pkyi90sa1wjywkd42gi1phqmrwgj9p96flg")
-      (patch "017" "08gh63spac39z90n1d8gpx571x7n4bwzp2yqm3ik9c1rcgz2mvib")
-    ];
+    in
+      import ./bash-patches.nix patch;
 
   # Note: Bison is needed because the patches above modify parse.y.
   buildInputs = [bison]
@@ -57,6 +38,18 @@ stdenv.mkDerivation rec {
 
   configureFlags = "--with-installed-readline";
 
+  postInstall = ''
+    # Add an `sh' -> `bash' symlink.
+    ln -s bash "$out/bin/sh"
+
+    # Install the completion examples.
+    ensureDir "$out/etc"
+    cp -v "examples/complete/bash_completion" "$out/etc"
+
+    ensureDir "$out/etc/bash_completion.d"
+    cp -v "examples/complete/complete.gnu-longopt" "$out/etc/bash_completion.d"
+  '';
+
   meta = {
     homepage = http://www.gnu.org/software/bash/;
     description =
@@ -75,5 +68,7 @@ stdenv.mkDerivation rec {
     '';
 
     license = "GPLv3+";
+
+    maintainers = [ stdenv.lib.maintainers.ludo ];
   };
 }
diff --git a/pkgs/shells/bash/update-patch-set.sh b/pkgs/shells/bash/update-patch-set.sh
new file mode 100644
index 000000000000..ded684571b0a
--- /dev/null
+++ b/pkgs/shells/bash/update-patch-set.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+# Update patch set for GNU Bash or Readline.
+
+if [ $# -ne 2 ]
+then
+    echo "Usage: $(basename $0) PROJECT VERSION"
+    echo ""
+    echo "Update the patch set for PROJECT (one of \`bash' or \`readline') for"
+    echo "the given version (e.g., \`4.0').  Produce \`PROJECT-patches.nix'."
+    exit 1
+fi
+
+PROJECT="$1"
+VERSION="$2"
+VERSION_CONDENSED="$(echo $VERSION | sed -es/\\.//g)"
+
+GPG="$(if $(type -P gpg2 > /dev/null); then echo gpg2; else echo gpg; fi)"
+PATCH_LIST="$PROJECT-patches.nix"
+
+set -e
+
+start=1
+end=100 # must be > 99 for correct padding
+
+rm -vf "$PATCH_LIST"
+
+( echo "# Automatically generated by \`$(basename $0)'; do not edit." ;	\
+  echo "" ;								\
+  echo "patch: [" )							\
+>> "$PATCH_LIST"
+
+for i in `seq -w $start $end`
+do
+    wget ftp.gnu.org/gnu/$PROJECT/$PROJECT-$VERSION-patches/$PROJECT$VERSION_CONDENSED-$i || break
+    wget ftp.gnu.org/gnu/$PROJECT/$PROJECT-$VERSION-patches/$PROJECT$VERSION_CONDENSED-$i.sig
+    "$GPG" --verify $PROJECT$VERSION_CONDENSED-$i.sig
+    echo "(patch \"$i\" \"$(nix-hash --flat --type sha256 --base32 $PROJECT$VERSION_CONDENSED-$i)\")"	\
+    >> "$PATCH_LIST"
+
+    rm -f $PROJECT$VERSION_CONDENSED-$i{,.sig}
+done
+
+echo "]" >> "$PATCH_LIST"
+
+echo "Got $(expr $i - 1) patches."
+echo "Patch list has been written to \`$PATCH_LIST'."
diff --git a/pkgs/stdenv/default.nix b/pkgs/stdenv/default.nix
index 7f44037c7019..ed8f0e39f5f8 100644
--- a/pkgs/stdenv/default.nix
+++ b/pkgs/stdenv/default.nix
@@ -54,6 +54,7 @@ rec {
   stdenv =
     if stdenvType == "i686-linux" then stdenvLinux else
     if stdenvType == "x86_64-linux" then stdenvLinux else
+    if stdenvType == "armv5tel-linux" then stdenvLinux else
     if stdenvType == "powerpc-linux" then /* stdenvLinux */ stdenvNative else
     if stdenvType == "i686-mingw" then stdenvMinGW else
     if stdenvType == "i686-darwin" then stdenvNix else
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index 6513c9be7e7b..de525d479f95 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -71,7 +71,8 @@ let
         isDarwin = result.system == "i686-darwin" || result.system == "powerpc-darwin";
         isLinux = result.system == "i686-linux"
                || result.system == "x86_64-linux"
-               || result.system == "powerpc-linux";
+               || result.system == "powerpc-linux"
+               || result.system == "armv5tel-linux";
         isi686 = result.system == "i686-linux"
                || result.system == "i686-darwin"
                || result.system == "i686-freebsd"
diff --git a/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix b/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix
new file mode 100644
index 000000000000..4369777d18db
--- /dev/null
+++ b/pkgs/stdenv/linux/bootstrap/armv5tel/default.nix
@@ -0,0 +1,13 @@
+{
+  sh = ./sh;
+  bzip2 = ./bzip2;
+  mkdir = ./mkdir;
+  cpio = ./cpio;
+  ln = ./ln;
+  curl = ./curl.bz2;
+
+  bootstrapTools = {
+    url = "http://vicerveza.homeunix.net/~viric/tmp/bootstrap-tools-armv5tel-linux.cpio.bz2";
+    sha256 = "0b7mrcl7naj1xpqx1qnlmd825dxzikzhxir3mw4pr3dy28n0b2ka";
+  };
+}
diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix
index b74258120b3c..05f92825733a 100644
--- a/pkgs/stdenv/linux/default.nix
+++ b/pkgs/stdenv/linux/default.nix
@@ -13,6 +13,7 @@ rec {
     if system == "i686-linux" then import ./bootstrap/i686
     else if system == "x86_64-linux" then import ./bootstrap/x86_64
     else if system == "powerpc-linux" then import ./bootstrap/powerpc
+    else if system == "armv5tel-linux" then import ./bootstrap/armv5tel
     else abort "unsupported platform for the pure Linux stdenv";
 
 
@@ -50,7 +51,10 @@ rec {
     
     builder = bootstrapFiles.sh;
     
-    args = [ ./scripts/unpack-bootstrap-tools.sh ];
+    args = if (system == "armv5tel-linux") then
+      ([ ./scripts/unpack-bootstrap-tools-arm.sh ])
+      else 
+      ([ ./scripts/unpack-bootstrap-tools.sh ]);
     
     inherit (bootstrapFiles) bzip2 mkdir curl cpio;
     
@@ -120,12 +124,12 @@ rec {
 
   # A helper function to call gcc-wrapper.
   wrapGCC =
-    {gcc ? bootstrapTools, libc, binutils, shell ? "", name ? "bootstrap-gcc"}:
+    {gcc ? bootstrapTools, libc, binutils, coreutils, shell ? "", name ? "bootstrap-gcc-wrapper"}:
     
     import ../../build-support/gcc-wrapper {
       nativeTools = false;
       nativeLibc = false;
-      inherit gcc binutils libc shell name;
+      inherit gcc binutils coreutils libc shell name;
       stdenv = stdenvLinuxBoot0;
     };
 
@@ -134,7 +138,8 @@ rec {
   # of bootstrap tools only, and a minimal Glibc to keep the GCC
   # configure script happy.
   stdenvLinuxBoot1 = stdenvBootFun {
-    gcc = wrapGCC {libc = bootstrapGlibc; binutils = bootstrapTools;};
+    gcc = wrapGCC {libc = bootstrapGlibc; binutils = bootstrapTools;
+      coreutils = bootstrapTools; };
     inherit fetchurl;
   };
   
@@ -156,7 +161,8 @@ rec {
   #    this one uses the Glibc built in step 3.  It still uses
   #    the rest of the bootstrap tools, including GCC.
   stdenvLinuxBoot2 = removeAttrs (stdenvBootFun {
-    gcc = wrapGCC {binutils = bootstrapTools; libc = stdenvLinuxGlibc;};
+    gcc = wrapGCC {binutils = bootstrapTools; coreutils = bootstrapTools;
+      libc = stdenvLinuxGlibc;};
     extraAttrs = {glibc = stdenvLinuxGlibc;};
     inherit fetchurl;
   }) ["gcc" "binutils"];
@@ -176,6 +182,7 @@ rec {
   stdenvLinuxBoot3 = stdenvBootFun {
     gcc = wrapGCC rec {
       inherit (stdenvLinuxBoot2Pkgs) binutils;
+      coreutils = bootstrapTools;
       libc = stdenvLinuxGlibc;
       gcc = stdenvLinuxBoot2Pkgs.gcc.gcc;
       name = "";
@@ -210,6 +217,7 @@ rec {
 
     gcc = wrapGCC rec {
       inherit (stdenvLinuxBoot2Pkgs) binutils;
+      inherit (stdenvLinuxBoot3Pkgs) coreutils;
       libc = stdenvLinuxGlibc;
       gcc = stdenvLinuxBoot2Pkgs.gcc.gcc;
       shell = stdenvLinuxBoot3Pkgs.bash + "/bin/bash";
diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.nix b/pkgs/stdenv/linux/make-bootstrap-tools.nix
index de8a25c6f64c..0a19adbdbb47 100644
--- a/pkgs/stdenv/linux/make-bootstrap-tools.nix
+++ b/pkgs/stdenv/linux/make-bootstrap-tools.nix
@@ -10,20 +10,26 @@ rec {
     aclSupport = false;
   });
 
+  gccLinkStatic = wrapGCCWith (import ../../build-support/gcc-wrapper) uclibc
+    stdenv.gcc.gcc;
+  stdenvLinkStatic = overrideGCC stdenv gccLinkStatic;
 
-  curlDiet = import ../../tools/networking/curl {
+  curlStatic = import ../../tools/networking/curl {
+    stdenv = stdenvLinkStatic;
     inherit fetchurl;
-    stdenv = useDietLibC stdenv;
     zlibSupport = false;
     sslSupport = false;
+    linkStatic = true;
   };
 
 
-  bzip2Diet = import ../../tools/compression/bzip2 {
+  bzip2Static = import ../../tools/compression/bzip2 {
+    stdenv = stdenvLinkStatic;
     inherit fetchurl;
-    stdenv = useDietLibC stdenv;
+    linkStatic = true;
   };
 
+  #gccNoShared = wrapGCC ( gcc.gcc.override { enableShared = false; } );
 
   build = 
 
@@ -33,6 +39,7 @@ rec {
       buildInputs = [nukeReferences cpio];
 
       buildCommand = ''
+	set -x
         ensureDir $out/bin $out/lib $out/libexec
 
         # Copy what we need of Glibc.
@@ -132,8 +139,8 @@ rec {
         cp ${klibc}/lib/klibc/bin.static/cpio $out/in-nixpkgs
         cp ${klibc}/lib/klibc/bin.static/mkdir $out/in-nixpkgs
         cp ${klibc}/lib/klibc/bin.static/ln $out/in-nixpkgs
-        cp ${curlDiet}/bin/curl $out/in-nixpkgs
-        cp ${bzip2Diet}/bin/bzip2 $out/in-nixpkgs
+        cp ${curlStatic}/bin/curl $out/in-nixpkgs
+        cp ${bzip2Static}/bin/bzip2 $out/in-nixpkgs
         chmod u+w $out/in-nixpkgs/*
         strip $out/in-nixpkgs/*
         nuke-refs $out/in-nixpkgs/*
diff --git a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh
new file mode 100644
index 000000000000..0f4ad24f0cba
--- /dev/null
+++ b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh
@@ -0,0 +1,48 @@
+set -e
+
+# Unpack the bootstrap tools tarball.
+echo Unpacking the bootstrap tools...
+$mkdir $out
+$bzip2 -d < $tarball | (cd $out && $cpio -V -i)
+
+# Set the ELF interpreter / RPATH in the bootstrap binaries.
+echo Patching the bootstrap tools...
+
+# On x86_64, ld-linux-x86-64.so.2 barfs on patchelf'ed programs.  So
+# use a copy of patchelf.
+LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? $out/bin/cp $out/bin/patchelf .
+
+for i in $out/bin/* $out/libexec/gcc/*/*/*; do
+    echo patching $i
+    if ! test -L $i; then
+         LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \
+             $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i
+         LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \
+             $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i
+    fi
+done
+for i in $out/lib/librt* ; do
+    echo patching $i
+    if ! test -L $i; then
+         LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \
+             $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i
+         LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \
+             $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i
+    fi
+done
+
+# Fix the libc linker script.
+export PATH=$out/bin
+cat $out/lib/libc.so | sed "s|/nix/store/e*-[^/]*/|$out/|g" > $out/lib/libc.so.tmp
+mv $out/lib/libc.so.tmp $out/lib/libc.so
+cat $out/lib/libpthread.so | sed "s|/nix/store/e*-[^/]*/|$out/|g" > $out/lib/libpthread.so.tmp
+mv $out/lib/libpthread.so.tmp $out/lib/libpthread.so
+
+# Provide some additional symlinks.
+ln -s bash $out/bin/sh
+
+ln -s bzip2 $out/bin/bunzip2
+
+# fetchurl needs curl.
+bzip2 -d < $curl > $out/bin/curl
+chmod +x $out/bin/curl
diff --git a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh
index c1fa8582ed8a..0f4ad24f0cba 100644
--- a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh
+++ b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools.sh
@@ -10,13 +10,24 @@ echo Patching the bootstrap tools...
 
 # On x86_64, ld-linux-x86-64.so.2 barfs on patchelf'ed programs.  So
 # use a copy of patchelf.
-LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.2 $out/bin/cp $out/bin/patchelf .
+LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? $out/bin/cp $out/bin/patchelf .
 
 for i in $out/bin/* $out/libexec/gcc/*/*/*; do
     echo patching $i
     if ! test -L $i; then
-         LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.2 \
-             ./patchelf --set-interpreter $out/lib/ld-linux*.so.2 --set-rpath $out/lib --force-rpath $i
+         LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \
+             $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i
+         LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \
+             $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i
+    fi
+done
+for i in $out/lib/librt* ; do
+    echo patching $i
+    if ! test -L $i; then
+         LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \
+             $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i
+         LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \
+             $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i
     fi
 done
 
@@ -24,6 +35,8 @@ done
 export PATH=$out/bin
 cat $out/lib/libc.so | sed "s|/nix/store/e*-[^/]*/|$out/|g" > $out/lib/libc.so.tmp
 mv $out/lib/libc.so.tmp $out/lib/libc.so
+cat $out/lib/libpthread.so | sed "s|/nix/store/e*-[^/]*/|$out/|g" > $out/lib/libpthread.so.tmp
+mv $out/lib/libpthread.so.tmp $out/lib/libpthread.so
 
 # Provide some additional symlinks.
 ln -s bash $out/bin/sh
diff --git a/pkgs/tools/compression/bzip2/default.nix b/pkgs/tools/compression/bzip2/default.nix
index ddc31de6196b..0523067cbade 100644
--- a/pkgs/tools/compression/bzip2/default.nix
+++ b/pkgs/tools/compression/bzip2/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl}:
+{stdenv, fetchurl, linkStatic ? false}:
 
 stdenv.mkDerivation {
   name = "bzip2-1.0.5";
@@ -11,7 +11,11 @@ stdenv.mkDerivation {
   };
 
   sharedLibrary =
-    !stdenv.isDarwin && !(stdenv ? isDietLibC) && !(stdenv ? isStatic) && stdenv.system != "i686-cygwin";
+    !stdenv.isDarwin && !(stdenv ? isDietLibC) && !(stdenv ? isStatic) && stdenv.system != "i686-cygwin" && !linkStatic;
+
+  makeFlags = if linkStatic then "LDFLAGS=-static" else "";
+
+  inherit linkStatic;
     
   meta = {
     homepage = http://www.bzip.org;
diff --git a/pkgs/tools/compression/gzip/default.nix b/pkgs/tools/compression/gzip/default.nix
index 0a2afd053729..7a25b69c013d 100644
--- a/pkgs/tools/compression/gzip/default.nix
+++ b/pkgs/tools/compression/gzip/default.nix
@@ -1,17 +1,35 @@
 {stdenv, fetchurl}:
 
-stdenv.mkDerivation {
-  name = "gzip-1.3.12";
-  
+stdenv.mkDerivation rec {
+  name = "gzip-1.3.13";
+
   src = fetchurl {
-    url = http://ftp.gnu.org/gnu/gzip/gzip-1.3.12.tar.gz;
-    sha256 = "1bw7sm68xjlnlzgcx66hnw80ac1qqyvhw0vw27zilgbzbzh5nmiz";
+    url = "mirror://gnu/gzip/${name}.tar.gz";
+    sha256 = "18vwa7x0b1sql9bs2d15n94fx3him1m6xpnwsfz52djjbjgzy1hx";
   };
 
+  patches = [ ./getopt.patch ];
+
+  doCheck = true;
+
   meta = {
-    homepage = http://www.gzip.org/;
-    description = "The gzip compression program";
+    homepage = http://www.gnu.org/software/gzip/;
+    description = "Gzip, the GNU zip compression program";
+
+    longDescription =
+      ''gzip (GNU zip) is a popular data compression program written by
+        Jean-loup Gailly for the GNU project.  Mark Adler wrote the
+        decompression part.
+
+        We developed this program as a replacement for compress because of
+        the Unisys and IBM patents covering the LZW algorithm used by
+        compress.  These patents made it impossible for us to use compress,
+        and we needed a replacement.  The superior compression ratio of gzip
+        is just a bonus.
+      '';
+
+    license = "GPLv3+";
+
+    maintainers = [ stdenv.lib.maintainers.ludo ];
   };
-  
-  patches = [./gnulib-futimens.patch];
 }
diff --git a/pkgs/tools/compression/gzip/getopt.patch b/pkgs/tools/compression/gzip/getopt.patch
new file mode 100644
index 000000000000..e61dd9778107
--- /dev/null
+++ b/pkgs/tools/compression/gzip/getopt.patch
@@ -0,0 +1,54 @@
+See http://lists.gnu.org/archive/html/bug-gnulib/2009-10/msg00089.html .
+
+From dd0ebefe4fe761f6f422a400430db53c64dbffd7 Mon Sep 17 00:00:00 2001
+From: Eric Blake <ebb9@byu.net>
+Date: Tue, 6 Oct 2009 20:44:13 -0600
+Subject: [PATCH] getopt: fix compilation on darwin
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+* lib/getopt.in.h (includes): Leave breadcrumbs during system
+include.
+* lib/unistd.in.h (getopt): Use them to avoid recursive include.
+Reported by Ludovic Courtès.
+
+Signed-off-by: Eric Blake <ebb9@byu.net>
+---
+ ChangeLog       |    5 +++++
+ lib/getopt.in.h |    6 +++++-
+ lib/unistd.in.h |    2 +-
+ 3 files changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/lib/getopt.in.h b/lib/getopt.in.h
+index 9de467a..7377f3c 100644
+--- a/lib/getopt.in.h
++++ b/lib/getopt.in.h
+@@ -22,9 +22,13 @@
+ @PRAGMA_SYSTEM_HEADER@
+ #endif
+
+-/* The include_next requires a split double-inclusion guard.  */
++/* The include_next requires a split double-inclusion guard.  We must
++   also inform the replacement unistd.h to not recursively use
++   <getopt.h>; our definitions will be present soon enough.  */
+ #if @HAVE_GETOPT_H@
++# define _GL_SYSTEM_GETOPT
+ # @INCLUDE_NEXT@ @NEXT_GETOPT_H@
++# undef _GL_SYSTEM_GETOPT
+ #endif
+
+ #ifndef _GL_GETOPT_H
+diff --git a/lib/unistd.in.h b/lib/unistd.in.h
+index 38e2e13..b6ea889 100644
+--- a/lib/unistd.in.h
++++ b/lib/unistd.in.h
+@@ -49,7 +49,7 @@
+ #endif
+
+ /* Get getopt(), optarg, optind, opterr, optopt.  */
+-#if @GNULIB_UNISTD_H_GETOPT@
++#if @GNULIB_UNISTD_H_GETOPT@ && !defined _GL_SYSTEM_GETOPT
+ # include <getopt.h>
+ #endif
+
diff --git a/pkgs/tools/compression/gzip/gnulib-futimens.patch b/pkgs/tools/compression/gzip/gnulib-futimens.patch
index 5804bf27ff3f..e69de29bb2d1 100644
--- a/pkgs/tools/compression/gzip/gnulib-futimens.patch
+++ b/pkgs/tools/compression/gzip/gnulib-futimens.patch
@@ -1,42 +0,0 @@
-now hat glibc-2.6  declares futimens.
-http://lists.gnu.org/archive/html/bug-gnulib/2007-05/msg00089.html
-
-diff -ru cpio-2.7.orig/lib/utimens.c cpio-2.7/lib/utimens.c
---- cpio-2.7.orig/lib/utimens.c	2007-05-20 21:23:57.000000000 +0900
-+++ cpio-2.7/lib/utimens.c	2007-05-21 08:40:22.000000000 +0900
-@@ -73,7 +73,7 @@
-    Return 0 on success, -1 (setting errno) on failure.  */
- 
- int
--futimens (int fd ATTRIBUTE_UNUSED,
-+gl_futimens (int fd ATTRIBUTE_UNUSED,
- 	  char const *file, struct timespec const timespec[2])
- {
-   /* There's currently no interface to set file timestamps with
-@@ -166,5 +166,5 @@
- int
- utimens (char const *file, struct timespec const timespec[2])
- {
--  return futimens (-1, file, timespec);
-+  return gl_futimens (-1, file, timespec);
- }
-diff -ru cpio-2.7.orig/lib/utimens.h cpio-2.7/lib/utimens.h
---- cpio-2.7.orig/lib/utimens.h	2007-05-20 21:23:57.000000000 +0900
-+++ cpio-2.7/lib/utimens.h	2007-05-21 08:39:57.000000000 +0900
-@@ -1,3 +1,3 @@
- #include "timespec.h"
--int futimens (int, char const *, struct timespec const [2]);
-+int gl_futimens (int, char const *, struct timespec const [2]);
- int utimens (char const *, struct timespec const [2]);
-diff -ur gzip-1.3.12.orig/gzip.c gzip-1.3.12/gzip.c
---- gzip-1.3.12.orig/gzip.c	2007-05-21 09:12:46.000000000 +0900
-+++ gzip-1.3.12/gzip.c	2007-05-21 09:13:14.000000000 +0900
-@@ -1637,7 +1637,7 @@
- 	}
-       }
- 
--    if (futimens (ofd, ofname, timespec) != 0)
-+    if (gl_futimens (ofd, ofname, timespec) != 0)
-       {
- 	int e = errno;
- 	WARN ((stderr, "%s: ", program_name));
diff --git a/pkgs/tools/misc/coreutils/7.5.nix b/pkgs/tools/misc/coreutils/7.5.nix
new file mode 100644
index 000000000000..90223c35483b
--- /dev/null
+++ b/pkgs/tools/misc/coreutils/7.5.nix
@@ -0,0 +1,28 @@
+{stdenv, fetchurl, aclSupport ? false, acl}:
+
+stdenv.mkDerivation rec {
+  name = "coreutils-7.5";
+
+  src = fetchurl {
+    url = "mirror://gnu/coreutils/${name}.tar.gz";
+    sha256 = "1hf333y85fm0q7f1apx2zjjhivwj620nc8kcifdcm0sg8fwlj7rl";
+  };
+
+  buildInputs = stdenv.lib.optional aclSupport acl;
+
+  meta = {
+    homepage = http://www.gnu.org/software/coreutils/;
+    description = "The basic file, shell and text manipulation utilities of the GNU operating system";
+
+    longDescription = ''
+      The GNU Core Utilities are the basic file, shell and text
+      manipulation utilities of the GNU operating system.  These are
+      the core utilities which are expected to exist on every
+      operating system.
+    '';
+
+    license = "GPLv3+";
+
+    maintainers = [ stdenv.lib.maintainers.ludo ];
+  };
+}
diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix
index 5cff1d5712ee..d1cccfa71960 100644
--- a/pkgs/tools/misc/coreutils/default.nix
+++ b/pkgs/tools/misc/coreutils/default.nix
@@ -1,15 +1,15 @@
 {stdenv, fetchurl, aclSupport ? false, acl}:
 
 stdenv.mkDerivation rec {
-  name = "coreutils-7.2";
-  
+  name = "coreutils-7.6";
+
   src = fetchurl {
     url = "mirror://gnu/coreutils/${name}.tar.gz";
-    sha256 = "1cpx66kwcg5w78by8i27wb24j0flz2ivv9fqmd4av8z5jbnbyxyx";
+    sha256 = "1m153jmnrg9v4x6qiw7azd3cjms13s32yihbzb7zi9bw8a5zx6qx";
   };
 
   buildInputs = stdenv.lib.optional aclSupport acl;
-  
+
   meta = {
     homepage = http://www.gnu.org/software/coreutils/;
     description = "The basic file, shell and text manipulation utilities of the GNU operating system";
@@ -22,5 +22,7 @@ stdenv.mkDerivation rec {
     '';
 
     license = "GPLv3+";
+
+    maintainers = [ stdenv.lib.maintainers.ludo ];
   };
 }
diff --git a/pkgs/tools/networking/curl/default.nix b/pkgs/tools/networking/curl/default.nix
index a29b8de1987d..4a5fe228b22c 100644
--- a/pkgs/tools/networking/curl/default.nix
+++ b/pkgs/tools/networking/curl/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, zlibSupport ? false, zlib ? null, sslSupport ? false, openssl ? null}:
+{stdenv, fetchurl, zlibSupport ? false, zlib ? null, sslSupport ? false, openssl ? null, linkStatic ? false}:
 
 assert zlibSupport -> zlib != null;
 assert sslSupport -> openssl != null;
@@ -20,12 +20,20 @@ stdenv.mkDerivation rec {
     
   configureFlags = ''
     ${if sslSupport then "--with-ssl=${openssl}" else "--without-ssl"}
+    ${if linkStatic then "--enable-static --disable-shared" else ""}
   '';
+
+  dontDisableStatic = if linkStatic then true else false;
   
   CFLAGS = if stdenv ? isDietLibC then "-DHAVE_INET_NTOA_R_2_ARGS=1" else "";
+  LDFLAGS = if linkStatic then "-static" else "";
   CXX = "g++";
   CXXCPP = "g++ -E";
 
+  # libtool hack to get a static binary. Notice that to 'configure' I passed
+  # other LDFLAGS, because it doesn't use libtool for linking in the tests.
+  makeFlags = if linkStatic then "LDFLAGS=-all-static" else "";
+
   passthru = {
     inherit sslSupport openssl;
   };
diff --git a/pkgs/tools/networking/wget/default.nix b/pkgs/tools/networking/wget/default.nix
index a4618a53452d..1e3171da00b0 100644
--- a/pkgs/tools/networking/wget/default.nix
+++ b/pkgs/tools/networking/wget/default.nix
@@ -1,17 +1,46 @@
-{stdenv, fetchurl, gettext, openssl ? null}:
+{ stdenv, fetchurl, gettext, perl, gnutls ? null }:
 
 stdenv.mkDerivation rec {
-  name = "wget-1.11.4";
-  
+  name = "wget-1.12";
+
   src = fetchurl {
     url = "mirror://gnu/wget/${name}.tar.bz2";
-    sha256 = "1yr7w182n7lvkajvq07wnw65sw2vmxjkc3611kpc728vhvi54zwb";
+    sha256 = "16msgly5xn0qj6ngsw34q9j7ag8jkci6020w21d30jgqw8wdj8y8";
   };
 
-  buildInputs = [gettext openssl];
+  patches = [ ./gnutls-support.patch ];
+
+  preConfigure =
+    '' for i in "doc/texi2pod.pl" "tests/run-px" "util/rmold.pl"
+       do
+         sed -i "$i" -e 's|/usr/bin.*perl|${perl}/bin/perl|g'
+       done
+    '';
+
+  buildInputs = [ gettext perl ]
+    ++ stdenv.lib.optional (gnutls != null) gnutls;
+
+  configureFlags =
+    if gnutls != null
+    then "--with-ssl=gnutls"
+    else "";
+
+  doCheck = true;
 
   meta = {
-    description = "A console downloading program. Has some features for mirroring sites.";
-    homepage = http://www.gnu.org/software/wget;
+    description = "GNU Wget, a tool for retrieving files using HTTP, HTTPS, and FTP";
+
+    longDescription =
+      '' GNU Wget is a free software package for retrieving files using HTTP,
+         HTTPS and FTP, the most widely-used Internet protocols.  It is a
+         non-interactive commandline tool, so it may easily be called from
+         scripts, cron jobs, terminals without X-Windows support, etc.
+      '';
+
+    license = "GPLv3+";
+
+    homepage = http://www.gnu.org/software/wget/;
+
+    maintainers = [ stdenv.lib.maintainers.ludo ];
   };
 }
diff --git a/pkgs/tools/networking/wget/gnutls-support.patch b/pkgs/tools/networking/wget/gnutls-support.patch
new file mode 100644
index 000000000000..fa0c5cc06c0f
--- /dev/null
+++ b/pkgs/tools/networking/wget/gnutls-support.patch
@@ -0,0 +1,16 @@
+This patch fixes GnuTLS support:
+
+  http.o: In function `gethttp':
+  http.c:(.text+0x26c6): undefined reference to `ssl_connect_wget'
+
+--- wget-1.12/src/http.c	2009-09-22 05:02:18.000000000 +0200
++++ wget-1.12/src/http.c	2009-10-03 17:24:46.000000000 +0200
+@@ -1762,7 +1762,7 @@ gethttp (struct url *u, struct http_stat
+ 
+       if (conn->scheme == SCHEME_HTTPS)
+         {
+-          if (!ssl_connect_wget (sock))
++          if (!ssl_connect (sock))
+             {
+               fd_close (sock);
+               return CONSSLERR;
diff --git a/pkgs/tools/text/gawk/default.nix b/pkgs/tools/text/gawk/default.nix
index 10dd08214aff..138b4e01f78b 100644
--- a/pkgs/tools/text/gawk/default.nix
+++ b/pkgs/tools/text/gawk/default.nix
@@ -1,15 +1,35 @@
 {stdenv, fetchurl}:
 
-stdenv.mkDerivation {
-  name = "gawk-3.1.6";
-  
+stdenv.mkDerivation rec {
+  name = "gawk-3.1.7";
+
   src = fetchurl {
-    url = mirror://gnu/gawk/gawk-3.1.6.tar.bz2;
-    sha256 = "0v6ba4hxfiiy3bny5japd3zmzxlh8vdkmswk96yngd6i1dddsgsi";
+    url = "mirror://gnu/gawk/${name}.tar.bz2";
+    sha256 = "0wfyiqc28cxb5wjbdph4y33h1fdf56nj6cm7as546niwjsw7cazi";
   };
 
+  doCheck = true;
+
   meta = {
     homepage = http://www.gnu.org/software/gawk/;
-    description = "GNU implementation of the AWK programming language";
+    description = "GNU implementation of the Awk programming language";
+
+    longDescription = ''
+      Many computer users need to manipulate text files: extract and then
+      operate on data from parts of certain lines while discarding the rest,
+      make changes in various text files wherever certain patterns appear,
+      and so on.  To write a program to do these things in a language such as
+      C or Pascal is a time-consuming inconvenience that may take many lines
+      of code.  The job is easy with awk, especially the GNU implementation:
+      Gawk.
+
+      The awk utility interprets a special-purpose programming language that
+      makes it possible to handle many data-reformatting jobs with just a few
+      lines of code.
+    '';
+
+    license = "GPLv3+";
+
+    maintainers = [ stdenv.lib.maintainers.ludo ];
   };
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f27dfab74340..18ec7f4f1897 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -321,7 +321,7 @@ let
   };
 
   makeInitrd = {contents}: import ../build-support/kernel/make-initrd.nix {
-    inherit stdenv perl cpio contents;
+    inherit stdenv perl cpio contents uboot;
   };
 
   makeSetupHook = script: runCommand "hook" {} ''
@@ -409,6 +409,23 @@ let
     '';
 
 
+  platformPC = assert system == "i686-linux" || system == "x86_64-linux"; {
+    name = "pc";
+    uboot = null;
+  };
+
+  platformSheevaplug = assert system == "armv5tel-linux"; {
+    name = "sheevaplug";
+    inherit uboot;
+  };
+
+  platformVersatileARM = assert system == "armv5tel-linux"; {
+    name = "versatileARM";
+    uboot = null;
+  };
+
+  platform = platformPC;
+
   ### TOOLS
 
   darwinArchUtility = import ../os-specific/darwin/arch {
@@ -589,14 +606,22 @@ let
     inherit fetchurl stdenv ppl;
   };
 
-  coreutils = useFromStdenv "coreutils"
-    (makeOverridable (if stdenv ? isDietLibC
+  coreutils75_real = makeOverridable (import ../tools/misc/coreutils/7.5.nix) {
+    inherit fetchurl stdenv acl;
+    aclSupport = stdenv.isLinux;
+  };
+
+  coreutils_real = makeOverridable (if stdenv ? isDietLibC
       then import ../tools/misc/coreutils-5
       else import ../tools/misc/coreutils)
     {
       inherit fetchurl stdenv acl;
       aclSupport = stdenv.isLinux;
-    });
+    };
+
+  coreutils = useFromStdenv "coreutils"
+    (if system == "armv5tel-linux" then coreutils75_real
+    else coreutils_real);
 
   cpio = import ../tools/archivers/cpio {
     inherit fetchurl stdenv;
@@ -1096,7 +1121,7 @@ let
   };
 
   mldonkey = import ../applications/networking/p2p/mldonkey {
-    inherit fetchurl stdenv ocaml zlib ncurses;
+    inherit fetchurl stdenv ocaml zlib ncurses gd libpng;
   };
 
   monit = builderDefsPackage ../tools/system/monit {
@@ -1682,7 +1707,7 @@ let
   };
 
   wget = import ../tools/networking/wget {
-    inherit fetchurl stdenv gettext openssl;
+    inherit fetchurl stdenv gettext gnutls perl;
   };
 
   which = import ../tools/system/which {
@@ -2171,7 +2196,7 @@ let
   ocaml = ocaml_3_11_1;
 
   ocaml_3_08_0 = import ../development/compilers/ocaml/3.08.0.nix {
-    inherit fetchurl stdenv x11 ncurses;
+    inherit fetchurl stdenv fetchcvs x11 ncurses;
   };
 
   ocaml_3_09_1 = import ../development/compilers/ocaml/3.09.1.nix {
@@ -2264,7 +2289,7 @@ let
     nativePrefix = if stdenv ? gcc then stdenv.gcc.nativePrefix else "";
     gcc = baseGCC;
     libc = glibc;
-    inherit stdenv binutils;
+    inherit stdenv binutils coreutils;
   };
 
   wrapGCC = wrapGCCWith (import ../build-support/gcc-wrapper) glibc;
@@ -3446,11 +3471,16 @@ let
     #installLocales = false;
   };
 
-  glibc29 = import ../development/libraries/glibc-2.9 {
+  glibc29 = makeOverridable (import ../development/libraries/glibc-2.9) {
     inherit fetchurl stdenv kernelHeaders;
     installLocales = getPkgConfig "glibc" "locales" false;
   };
 
+  eglibc = import ../development/libraries/eglibc {
+    inherit fetchsvn stdenv kernelHeaders;
+    installLocales = getPkgConfig "glibc" "locales" false;
+  };
+
   glibcLocales = makeOverridable (import ../development/libraries/glibc-2.9/locales.nix) {
     inherit fetchurl stdenv;
   };
@@ -3491,13 +3521,11 @@ let
 
   gmp = import ../development/libraries/gmp {
     inherit fetchurl stdenv m4;
-    cxx = false;
   };
 
-  gmpxx = import ../development/libraries/gmp {
-    inherit fetchurl stdenv m4;
-    cxx = true;
-  };
+  # `gmpxx' used to mean "GMP with C++ bindings".  Now `gmp' has C++ bindings
+  # by default, so that distinction is obsolete.
+  gmpxx = gmp;
 
   goffice = import ../development/libraries/goffice {
     inherit fetchurl stdenv pkgconfig libgsf libxml2 cairo
@@ -5550,13 +5578,14 @@ let
   };
 
   kernel_2_6_31 = makeOverridable (import ../os-specific/linux/kernel/linux-2.6.31.nix) {
-    inherit fetchurl stdenv perl mktemp module_init_tools;
+    inherit fetchurl stdenv perl mktemp module_init_tools platform;
     kernelPatches = [];
   };
 
   kernel_2_6_31_zen5 = makeOverridable (import ../os-specific/linux/zen-kernel/2.6.31-zen5.nix) {
     inherit fetchurl stdenv perl mktemp module_init_tools
       lib builderDefs;
+    inherit platform;
   };
 
   kernel_2_6_31_zen5_bfs = kernel_2_6_31_zen5.override {
@@ -5860,7 +5889,7 @@ let
   };
 
   pam_unix2 = import ../os-specific/linux/pam_unix2 {
-    inherit stdenv fetchurl pam libxcrypt;
+    inherit stdenv fetchurl pam;
   };
 
   pcmciaUtils = composedArgsAndFun (import ../os-specific/linux/pcmciautils) {
@@ -5984,6 +6013,14 @@ let
     inherit (xlibs) libX11 xproto;
   };*/
 
+  uboot = import ../misc/uboot {
+    inherit fetchurl stdenv unzip;
+  };
+
+  uclibc = import ../os-specific/linux/uclibc {
+    inherit fetchurl stdenv kernelHeaders;
+  };
+
   udev = makeOverridable (import ../os-specific/linux/udev) {
     inherit fetchurl stdenv gperf pkgconfig acl libusb usbutils pciutils glib;
   };