summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nixos/doc/manual/default.nix2
-rw-r--r--nixos/lib/make-iso9660-image.sh4
-rw-r--r--nixos/lib/make-system-tarball.sh4
-rw-r--r--nixos/modules/services/amqp/activemq/default.nix2
-rw-r--r--nixos/modules/services/hardware/acpid.nix2
-rw-r--r--nixos/modules/services/monitoring/nagios.nix2
-rw-r--r--nixos/modules/services/monitoring/systemhealth.nix2
-rw-r--r--nixos/modules/services/network-filesystems/openafs-client/default.nix2
-rw-r--r--nixos/modules/services/networking/ircd-hybrid/builder.sh4
-rw-r--r--nixos/modules/services/system/dbus.nix2
-rw-r--r--nixos/modules/services/web-servers/apache-httpd/default.nix4
-rw-r--r--nixos/modules/services/web-servers/apache-httpd/mediawiki.nix4
-rw-r--r--nixos/modules/services/web-servers/apache-httpd/mercurial.nix2
-rw-r--r--nixos/modules/services/x11/display-managers/lightdm.nix2
-rw-r--r--nixos/modules/services/x11/display-managers/slim.nix2
-rw-r--r--nixos/modules/system/boot/stage-1.nix2
-rw-r--r--nixos/modules/tasks/tty-backgrounds-combine.sh2
-rw-r--r--nixos/modules/virtualisation/qemu-vm.nix2
-rw-r--r--pkgs/applications/audio/espeak/edit.nix2
-rw-r--r--pkgs/applications/audio/mixxx/default.nix2
-rw-r--r--pkgs/applications/audio/praat/default.nix2
-rw-r--r--pkgs/applications/editors/atom/default.nix4
-rw-r--r--pkgs/applications/editors/dhex/default.nix6
-rw-r--r--pkgs/applications/editors/emacs-modes/calfw/default.nix4
-rw-r--r--pkgs/applications/editors/emacs-modes/ocaml/default.nix2
-rw-r--r--pkgs/applications/editors/emacs-modes/tuareg/default.nix2
-rw-r--r--pkgs/applications/editors/vim/macvim.nix2
-rw-r--r--pkgs/applications/graphics/alchemy/default.nix2
-rw-r--r--pkgs/applications/misc/keepass/default.nix4
-rw-r--r--pkgs/applications/misc/librecad/2.0.nix2
-rw-r--r--pkgs/applications/misc/librecad/default.nix2
-rw-r--r--pkgs/applications/misc/synergy/default.nix2
-rw-r--r--pkgs/applications/misc/vanitygen/default.nix2
-rw-r--r--pkgs/applications/networking/bittorrentsync/default.nix2
-rw-r--r--pkgs/applications/networking/browsers/chromium/browser.nix2
-rw-r--r--pkgs/applications/networking/browsers/chromium/default.nix2
-rw-r--r--pkgs/applications/networking/browsers/chromium/plugins.nix6
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/default.nix2
-rw-r--r--pkgs/applications/networking/dropbox-cli/default.nix2
-rw-r--r--pkgs/applications/networking/dropbox/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix2
-rw-r--r--pkgs/applications/networking/irc/irssi/fish/default.nix2
-rw-r--r--pkgs/applications/networking/p2p/freenet/default.nix2
-rw-r--r--pkgs/applications/networking/syncthing/default.nix2
-rw-r--r--pkgs/applications/office/zotero/default.nix4
-rw-r--r--pkgs/applications/science/math/gap/default.nix2
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-bz/default.nix4
-rw-r--r--pkgs/applications/version-management/git-and-tools/svn2git-kde/default.nix2
-rw-r--r--pkgs/applications/video/makemkv/builder.sh6
-rw-r--r--pkgs/applications/video/omxplayer/default.nix2
-rw-r--r--pkgs/build-support/cabal/default.nix4
-rw-r--r--pkgs/build-support/clang-wrapper/add-flags2
-rw-r--r--pkgs/build-support/clang-wrapper/clang-wrapper.sh6
-rw-r--r--pkgs/build-support/clang-wrapper/default.nix4
-rw-r--r--pkgs/build-support/clang-wrapper/ld-wrapper.sh164
-rw-r--r--pkgs/build-support/clang-wrapper/utils.sh24
-rw-r--r--pkgs/build-support/gcc-wrapper/gcc-wrapper.sh1
-rw-r--r--pkgs/build-support/gcc-wrapper/ld-wrapper.sh9
-rw-r--r--pkgs/build-support/kdewrapper/default.nix2
-rw-r--r--pkgs/build-support/make-startupitem/default.nix2
-rw-r--r--pkgs/build-support/release/functions.sh2
-rw-r--r--pkgs/build-support/vm/windows/bootstrap.nix2
-rw-r--r--pkgs/build-support/vm/windows/install/default.nix4
-rw-r--r--pkgs/data/misc/tzdata/default.nix2
-rw-r--r--pkgs/development/compilers/gcc/4.8/builder.sh27
-rw-r--r--pkgs/development/compilers/gcc/4.8/default.nix26
-rw-r--r--pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch41
-rw-r--r--pkgs/development/compilers/ghdl/default.nix6
-rw-r--r--pkgs/development/compilers/gwt/2.4.0.nix2
-rw-r--r--pkgs/development/compilers/mercury/default.nix2
-rw-r--r--pkgs/development/compilers/ocaml/3.11.2.nix2
-rw-r--r--pkgs/development/compilers/pakcs/default.nix8
-rw-r--r--pkgs/development/interpreters/perl/5.16/default.nix24
-rw-r--r--pkgs/development/libraries/aacskeys/default.nix2
-rw-r--r--pkgs/development/libraries/apache-activemq/default.nix2
-rw-r--r--pkgs/development/libraries/boost/1.55.nix1
-rw-r--r--pkgs/development/libraries/bwidget/default.nix2
-rw-r--r--pkgs/development/libraries/gdk-pixbuf/setup-hook.sh2
-rw-r--r--pkgs/development/libraries/haskell/ghc-heap-view/default.nix2
-rw-r--r--pkgs/development/libraries/haskell/ghc-mod/default.nix2
-rw-r--r--pkgs/development/libraries/haskell/ghc-vis/default.nix2
-rw-r--r--pkgs/development/libraries/haskell/hoogle/local.nix2
-rw-r--r--pkgs/development/libraries/readline/no-arch_only.patch14
-rw-r--r--pkgs/development/libraries/readline/readline6.nix4
-rw-r--r--pkgs/development/mobile/androidenv/androidsdk.nix2
-rw-r--r--pkgs/development/mobile/xcodeenv/simulate-app.nix2
-rw-r--r--pkgs/development/mobile/xcodeenv/xcodewrapper.nix2
-rw-r--r--pkgs/development/ocaml-modules/ocamlmake/default.nix2
-rw-r--r--pkgs/development/tools/apktool/default.nix2
-rw-r--r--pkgs/development/tools/literate-programming/noweb/default.nix2
-rw-r--r--pkgs/development/tools/misc/distcc/masq.nix2
-rw-r--r--pkgs/development/tools/misc/grafana/default.nix2
-rw-r--r--pkgs/development/tools/misc/opengrok/default.nix2
-rw-r--r--pkgs/development/tools/node-webkit/default.nix4
-rw-r--r--pkgs/development/tools/ocaml/deriving/default.nix2
-rw-r--r--pkgs/development/tools/yuicompressor/default.nix2
-rw-r--r--pkgs/games/0ad/default.nix6
-rw-r--r--pkgs/games/andyetitmoves/default.nix2
-rw-r--r--pkgs/games/crafty/default.nix6
-rw-r--r--pkgs/games/gsb/default.nix4
-rw-r--r--pkgs/games/openlierox/default.nix2
-rw-r--r--pkgs/games/opentyrian/default.nix4
-rw-r--r--pkgs/games/vessel/default.nix4
-rw-r--r--pkgs/games/worldofgoo/default.nix4
-rw-r--r--pkgs/misc/emulators/bsod/default.nix2
-rw-r--r--pkgs/misc/vim-plugins/default.nix2
-rw-r--r--pkgs/os-specific/darwin/xcode/default.nix4
-rw-r--r--pkgs/os-specific/linux/apparmor/default.nix2
-rw-r--r--pkgs/os-specific/linux/bbswitch/default.nix4
-rw-r--r--pkgs/os-specific/linux/frandom/default.nix4
-rw-r--r--pkgs/os-specific/linux/gogoclient/default.nix2
-rw-r--r--pkgs/os-specific/linux/google-authenticator/default.nix2
-rw-r--r--pkgs/os-specific/linux/i7z/default.nix2
-rw-r--r--pkgs/os-specific/linux/mcelog/default.nix2
-rw-r--r--pkgs/os-specific/linux/microcode/converter.nix2
-rw-r--r--pkgs/os-specific/linux/netatop/default.nix4
-rw-r--r--pkgs/os-specific/linux/otpw/default.nix2
-rw-r--r--pkgs/os-specific/linux/rfkill/udev.nix4
-rw-r--r--pkgs/os-specific/linux/util-linux/default.nix4
-rw-r--r--pkgs/os-specific/linux/x86info/default.nix2
-rw-r--r--pkgs/servers/dict/dictd-wiktionary.nix2
-rw-r--r--pkgs/servers/dict/dictd-wordnet.nix2
-rw-r--r--pkgs/servers/http/thttpd/default.nix2
-rw-r--r--pkgs/servers/monitoring/seyren/default.nix2
-rw-r--r--pkgs/servers/nosql/influxdb/default.nix2
-rw-r--r--pkgs/servers/serfdom/default.nix4
-rw-r--r--pkgs/shells/bash/bash-4.2-patches.nix2
-rw-r--r--pkgs/stdenv/default.nix34
-rw-r--r--pkgs/stdenv/generic/default.nix3
-rw-r--r--pkgs/stdenv/generic/setup.sh1
-rw-r--r--pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix2
-rwxr-xr-xpkgs/stdenv/mingw/builder.sh18
-rwxr-xr-xpkgs/stdenv/mingw/cygpath/builder.sh5
-rw-r--r--pkgs/stdenv/mingw/cygpath/default.nix9
-rwxr-xr-xpkgs/stdenv/mingw/default-builder.sh2
-rw-r--r--pkgs/stdenv/mingw/default.nix233
-rwxr-xr-xpkgs/stdenv/mingw/fetchurl/builder.sh34
-rw-r--r--pkgs/stdenv/mingw/fetchurl/default.nix28
-rwxr-xr-xpkgs/stdenv/mingw/fix-builder.sh23
-rw-r--r--pkgs/stdenv/mingw/msys-builder.sh15
-rw-r--r--pkgs/stdenv/mingw/pkgs/bin-builder.sh5
-rwxr-xr-xpkgs/stdenv/mingw/pkgs/curl.exebin240128 -> 0 bytes
-rw-r--r--pkgs/stdenv/mingw/pkgs/default.nix157
-rw-r--r--pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh8
-rw-r--r--pkgs/stdenv/mingw/pkgs/single-exe-builder.sh12
-rw-r--r--pkgs/stdenv/mingw/pkgs/src-builder.sh7
-rwxr-xr-xpkgs/stdenv/mingw/setup.sh759
-rw-r--r--pkgs/stdenv/mingw/simple-stdenv/builder.sh80
-rw-r--r--pkgs/stdenv/mingw/simple-stdenv/default.nix31
-rw-r--r--pkgs/stdenv/nix/default.nix23
-rw-r--r--pkgs/tools/backup/store-backup/default.nix2
-rw-r--r--pkgs/tools/filesystems/unionfs-fuse/default.nix2
-rw-r--r--pkgs/tools/misc/debootstrap/default.nix6
-rw-r--r--pkgs/tools/misc/megacli/default.nix2
-rw-r--r--pkgs/tools/misc/multitail/default.nix2
-rw-r--r--pkgs/tools/misc/picocom/default.nix2
-rw-r--r--pkgs/tools/misc/rkflashtool/default.nix2
-rw-r--r--pkgs/tools/misc/sl/default.nix2
-rw-r--r--pkgs/tools/networking/connect/default.nix2
-rw-r--r--pkgs/tools/networking/filegive/default.nix2
-rw-r--r--pkgs/tools/networking/reaver-wps/default.nix2
-rw-r--r--pkgs/tools/networking/udptunnel/default.nix2
-rw-r--r--pkgs/tools/security/fprot/default.nix12
-rw-r--r--pkgs/tools/security/meo/default.nix2
-rw-r--r--pkgs/tools/security/tor/torbrowser.nix4
-rw-r--r--pkgs/tools/system/storebrowse/default.nix2
-rw-r--r--pkgs/tools/system/vboot_reference/default.nix2
-rw-r--r--pkgs/tools/typesetting/tex/pgfplots/default.nix2
-rw-r--r--pkgs/top-level/all-packages.nix31
-rw-r--r--pkgs/top-level/mingw.nix27
170 files changed, 276 insertions, 1978 deletions
diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix
index a79a77f40df1..e118f8b89437 100644
--- a/nixos/doc/manual/default.nix
+++ b/nixos/doc/manual/default.nix
@@ -67,7 +67,7 @@ in rec {
 
       # Generate the HTML manual.
       dst=$out/share/doc/nixos
-      ensureDir $dst
+      mkdir -p $dst
       xsltproc $xsltFlags --nonet --xinclude \
         --output $dst/manual.html \
         ${pkgs.docbook5_xsl}/xml/xsl/docbook/xhtml/docbook.xsl \
diff --git a/nixos/lib/make-iso9660-image.sh b/nixos/lib/make-iso9660-image.sh
index 89b681ed2cd5..675b5bb35148 100644
--- a/nixos/lib/make-iso9660-image.sh
+++ b/nixos/lib/make-iso9660-image.sh
@@ -78,7 +78,7 @@ done
 cat pathlist | sed -e 's/=\(.*\)=\(.*\)=/\\=\1=\2\\=/' | tee pathlist.safer
 
 
-ensureDir $out/iso
+mkdir -p $out/iso
 genCommand="genisoimage -iso-level 4 -r -J $bootFlags -hide-rr-moved -graft-points -path-list pathlist.safer ${volumeID:+-V $volumeID}"
 if test -z "$compressImage"; then
     $genCommand -o $out/iso/$isoName
@@ -87,5 +87,5 @@ else
 fi
 
 
-ensureDir $out/nix-support
+mkdir -p $out/nix-support
 echo $system > $out/nix-support/system
diff --git a/nixos/lib/make-system-tarball.sh b/nixos/lib/make-system-tarball.sh
index aadd0f6428c8..096d96ac1c81 100644
--- a/nixos/lib/make-system-tarball.sh
+++ b/nixos/lib/make-system-tarball.sh
@@ -48,11 +48,11 @@ for ((n = 0; n < ${#objects[*]}; n++)); do
     fi
 done
 
-ensureDir $out/tarball
+mkdir -p $out/tarball
 
 tar cvJf $out/tarball/$fileName.tar.xz *
 
-ensureDir $out/nix-support
+mkdir -p $out/nix-support
 echo $system > $out/nix-support/system
 echo "file system-tarball $out/tarball/$fileName.tar.xz" > $out/nix-support/hydra-build-products
 
diff --git a/nixos/modules/services/amqp/activemq/default.nix b/nixos/modules/services/amqp/activemq/default.nix
index f731900070e4..261f97617664 100644
--- a/nixos/modules/services/amqp/activemq/default.nix
+++ b/nixos/modules/services/amqp/activemq/default.nix
@@ -12,7 +12,7 @@ let
     phases = [ "installPhase" ];
     buildInputs = [ jdk ];
     installPhase = ''
-      ensureDir $out/lib
+      mkdir -p $out/lib
       source ${activemq}/lib/classpath.env
       export CLASSPATH
       ln -s "${./ActiveMQBroker.java}" ActiveMQBroker.java
diff --git a/nixos/modules/services/hardware/acpid.nix b/nixos/modules/services/hardware/acpid.nix
index b87899e45983..a20b1a1ee3ad 100644
--- a/nixos/modules/services/hardware/acpid.nix
+++ b/nixos/modules/services/hardware/acpid.nix
@@ -6,7 +6,7 @@ let
 
   acpiConfDir = pkgs.runCommand "acpi-events" {}
     ''
-      ensureDir $out
+      mkdir -p $out
       ${
         # Generate a configuration file for each event. (You can't have
         # multiple events in one config file...)
diff --git a/nixos/modules/services/monitoring/nagios.nix b/nixos/modules/services/monitoring/nagios.nix
index 97d153153a55..c1f7ba0eca74 100644
--- a/nixos/modules/services/monitoring/nagios.nix
+++ b/nixos/modules/services/monitoring/nagios.nix
@@ -12,7 +12,7 @@ let
   nagiosObjectDefs = cfg.objectDefs;
 
   nagiosObjectDefsDir = pkgs.runCommand "nagios-objects" {inherit nagiosObjectDefs;}
-    "ensureDir $out; ln -s $nagiosObjectDefs $out/";
+    "mkdir -p $out; ln -s $nagiosObjectDefs $out/";
 
   nagiosCfgFile = pkgs.writeText "nagios.cfg"
     ''
diff --git a/nixos/modules/services/monitoring/systemhealth.nix b/nixos/modules/services/monitoring/systemhealth.nix
index b0e59595e133..20d1dadd3bf2 100644
--- a/nixos/modules/services/monitoring/systemhealth.nix
+++ b/nixos/modules/services/monitoring/systemhealth.nix
@@ -13,7 +13,7 @@ let
     };
     buildInputs = [ python ];
     installPhase = ''
-      ensureDir $out/bin
+      mkdir -p $out/bin
       # Make it work for kernels 3.x, not so different than 2.6
       sed -i 's/2\.6/4.0/' system_health.py
       cp system_health.py $out/bin
diff --git a/nixos/modules/services/network-filesystems/openafs-client/default.nix b/nixos/modules/services/network-filesystems/openafs-client/default.nix
index 23ab39eb05f3..0297da9e865f 100644
--- a/nixos/modules/services/network-filesystems/openafs-client/default.nix
+++ b/nixos/modules/services/network-filesystems/openafs-client/default.nix
@@ -11,7 +11,7 @@ let
   };
 
   afsConfig = pkgs.runCommand "afsconfig" {} ''
-    ensureDir $out
+    mkdir -p $out
     echo ${cfg.cellName} > $out/ThisCell
     cp ${cellServDB} $out/CellServDB
     echo "/afs:${cfg.cacheDirectory}:${cfg.cacheSize}" > $out/cacheinfo
diff --git a/nixos/modules/services/networking/ircd-hybrid/builder.sh b/nixos/modules/services/networking/ircd-hybrid/builder.sh
index b8cb836db95e..f2c92878a4dc 100644
--- a/nixos/modules/services/networking/ircd-hybrid/builder.sh
+++ b/nixos/modules/services/networking/ircd-hybrid/builder.sh
@@ -3,7 +3,7 @@ source $stdenv/setup
 doSub() {
     local src=$1
     local dst=$2
-    ensureDir $(dirname $dst)
+    mkdir -p $(dirname $dst)
     substituteAll $src $dst
 }
 
@@ -28,4 +28,4 @@ for i in $substFiles; do
     fi
 done
 
-ensureDir $out/bin
+mkdir -p $out/bin
diff --git a/nixos/modules/services/system/dbus.nix b/nixos/modules/services/system/dbus.nix
index 8d02a6404ac1..928f16c94489 100644
--- a/nixos/modules/services/system/dbus.nix
+++ b/nixos/modules/services/system/dbus.nix
@@ -14,7 +14,7 @@ let
     name = "dbus-conf";
     preferLocalBuild = true;
     buildCommand = ''
-      ensureDir $out
+      mkdir -p $out
 
       cp -v ${pkgs.dbus.daemon}/etc/dbus-1/system.conf $out/system.conf
 
diff --git a/nixos/modules/services/web-servers/apache-httpd/default.nix b/nixos/modules/services/web-servers/apache-httpd/default.nix
index 6d0416fbb155..729825681b57 100644
--- a/nixos/modules/services/web-servers/apache-httpd/default.nix
+++ b/nixos/modules/services/web-servers/apache-httpd/default.nix
@@ -80,7 +80,7 @@ let
 
   # !!! should be in lib
   writeTextInDir = name: text:
-    pkgs.runCommand name {inherit text;} "ensureDir $out; echo -n \"$text\" > $out/$name";
+    pkgs.runCommand name {inherit text;} "mkdir -p $out; echo -n \"$text\" > $out/$name";
 
 
   enableSSL = any (vhost: vhost.enableSSL) allHosts;
@@ -194,7 +194,7 @@ let
     ) null ([ cfg ] ++ subservices);
 
     documentRoot = if maybeDocumentRoot != null then maybeDocumentRoot else
-      pkgs.runCommand "empty" {} "ensureDir $out";
+      pkgs.runCommand "empty" {} "mkdir -p $out";
 
     documentRootConf = ''
       DocumentRoot "${documentRoot}"
diff --git a/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix b/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix
index 7984294e6315..d562bc50c82f 100644
--- a/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix
+++ b/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix
@@ -90,7 +90,7 @@ let
 
     installPhase =
       ''
-        ensureDir $out
+        mkdir -p $out
         cp -r * $out
         cp ${mediawikiConfig} $out/LocalSettings.php
         sed -i \
@@ -104,7 +104,7 @@ let
   mediawikiScripts = pkgs.runCommand "mediawiki-${config.id}-scripts"
     { buildInputs = [ pkgs.makeWrapper ]; }
     ''
-      ensureDir $out/bin
+      mkdir -p $out/bin
       for i in changePassword.php createAndPromote.php userOptions.php edit.php nukePage.php update.php; do
         makeWrapper ${php}/bin/php $out/bin/mediawiki-${config.id}-$(basename $i .php) \
           --add-flags ${mediawikiRoot}/maintenance/$i
diff --git a/nixos/modules/services/web-servers/apache-httpd/mercurial.nix b/nixos/modules/services/web-servers/apache-httpd/mercurial.nix
index 1d4303b75b35..6dd91be00a73 100644
--- a/nixos/modules/services/web-servers/apache-httpd/mercurial.nix
+++ b/nixos/modules/services/web-servers/apache-httpd/mercurial.nix
@@ -9,7 +9,7 @@ let
   cgi = pkgs.stdenv.mkDerivation {
     name = "mercurial-cgi";
     buildCommand = ''
-      ensureDir $out
+      mkdir -p $out
       cp -v ${mercurial}/share/cgi-bin/hgweb.cgi $out
       sed -i "s|/path/to/repo/or/config|$out/hgweb.config|" $out/hgweb.cgi
       echo "
diff --git a/nixos/modules/services/x11/display-managers/lightdm.nix b/nixos/modules/services/x11/display-managers/lightdm.nix
index d459c59b0483..f8ce06738fee 100644
--- a/nixos/modules/services/x11/display-managers/lightdm.nix
+++ b/nixos/modules/services/x11/display-managers/lightdm.nix
@@ -26,7 +26,7 @@ let
     buildInputs = [ pkgs.makeWrapper ];
 
     buildCommand = ''
-      ensureDir $out/gtk-3.0/
+      mkdir -p $out/gtk-3.0/
 
       # This wrapper ensures that we actually get fonts
       makeWrapper ${pkgs.lightdm_gtk_greeter}/sbin/lightdm-gtk-greeter \
diff --git a/nixos/modules/services/x11/display-managers/slim.nix b/nixos/modules/services/x11/display-managers/slim.nix
index 48feb12d044c..9ee4e0dc7cb0 100644
--- a/nixos/modules/services/x11/display-managers/slim.nix
+++ b/nixos/modules/services/x11/display-managers/slim.nix
@@ -27,7 +27,7 @@ let
       unpackedTheme = pkgs.stdenv.mkDerivation {
         name = "slim-theme";
         buildCommand = ''
-          ensureDir $out
+          mkdir -p $out
           cd $out
           unpackFile ${cfg.theme}
           ln -s * default
diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix
index b6249b6c0915..f894f5bfbc1b 100644
--- a/nixos/modules/system/boot/stage-1.nix
+++ b/nixos/modules/system/boot/stage-1.nix
@@ -140,7 +140,7 @@ let
   udevRules = pkgs.stdenv.mkDerivation {
     name = "udev-rules";
     buildCommand = ''
-      ensureDir $out
+      mkdir -p $out
 
       echo 'ENV{LD_LIBRARY_PATH}="${extraUtils}/lib"' > $out/00-env.rules
 
diff --git a/nixos/modules/tasks/tty-backgrounds-combine.sh b/nixos/modules/tasks/tty-backgrounds-combine.sh
index 1e0d8758a6ee..55c3a1ebfa8a 100644
--- a/nixos/modules/tasks/tty-backgrounds-combine.sh
+++ b/nixos/modules/tasks/tty-backgrounds-combine.sh
@@ -3,7 +3,7 @@ source $stdenv/setup
 ttys=($ttys)
 themes=($themes)
 
-ensureDir $out
+mkdir -p $out
 
 defaultName=$(cd $default && ls | grep -v default)
 echo $defaultName
diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix
index bccf6583e47d..16c3836887cc 100644
--- a/nixos/modules/virtualisation/qemu-vm.nix
+++ b/nixos/modules/virtualisation/qemu-vm.nix
@@ -379,7 +379,7 @@ in
 
     system.build.vm = pkgs.runCommand "nixos-vm" { preferLocalBuild = true; }
       ''
-        ensureDir $out/bin
+        mkdir -p $out/bin
         ln -s ${config.system.build.toplevel} $out/system
         ln -s ${pkgs.writeScript "run-nixos-vm" startVM} $out/bin/run-${vmName}-vm
       '';
diff --git a/pkgs/applications/audio/espeak/edit.nix b/pkgs/applications/audio/espeak/edit.nix
index eb34335721f0..6627c6eb0e52 100644
--- a/pkgs/applications/audio/espeak/edit.nix
+++ b/pkgs/applications/audio/espeak/edit.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation {
   '';
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp espeakedit $out/bin
   '';
 
diff --git a/pkgs/applications/audio/mixxx/default.nix b/pkgs/applications/audio/mixxx/default.nix
index b76eecc9e4ad..e3422d4ba069 100644
--- a/pkgs/applications/audio/mixxx/default.nix
+++ b/pkgs/applications/audio/mixxx/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
 
   buildPhase = ''
     runHook preBuild
-    ensureDir "$out"
+    mkdir -p "$out"
     scons \
       -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES \
       $sconsFlags "prefix=$out"
diff --git a/pkgs/applications/audio/praat/default.nix b/pkgs/applications/audio/praat/default.nix
index b8a283125fc4..c7a40bf85a7c 100644
--- a/pkgs/applications/audio/praat/default.nix
+++ b/pkgs/applications/audio/praat/default.nix
@@ -13,7 +13,7 @@ stdenv.mkDerivation {
   '';
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp praat $out/bin
   '';
 
diff --git a/pkgs/applications/editors/atom/default.nix b/pkgs/applications/editors/atom/default.nix
index 725b4520e699..51844f641794 100644
--- a/pkgs/applications/editors/atom/default.nix
+++ b/pkgs/applications/editors/atom/default.nix
@@ -43,8 +43,8 @@ in stdenv.mkDerivation rec {
   phases = [ "installPhase" ];
 
   installPhase = ''
-    ensureDir $out/share/atom
-    ensureDir $out/bin
+    mkdir -p $out/share/atom
+    mkdir -p $out/bin
     tar -C $out/share/atom -xvf $src
     patchelf --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
       $out/share/atom/atom
diff --git a/pkgs/applications/editors/dhex/default.nix b/pkgs/applications/editors/dhex/default.nix
index 45b7de900e26..7a0e9e59d7e5 100644
--- a/pkgs/applications/editors/dhex/default.nix
+++ b/pkgs/applications/editors/dhex/default.nix
@@ -12,9 +12,9 @@ stdenv.mkDerivation rec {
   buildInputs = [ ncurses ];
  
   installPhase = ''
-    ensureDir $out/bin
-    ensureDir $out/share/man/man1
-    ensureDir $out/share/man/man5
+    mkdir -p $out/bin
+    mkdir -p $out/share/man/man1
+    mkdir -p $out/share/man/man5
 
     cp dhex $out/bin
     cp dhex.1 $out/share/man/man1
diff --git a/pkgs/applications/editors/emacs-modes/calfw/default.nix b/pkgs/applications/editors/emacs-modes/calfw/default.nix
index 8934238ffa3a..3015865e3bf8 100644
--- a/pkgs/applications/editors/emacs-modes/calfw/default.nix
+++ b/pkgs/applications/editors/emacs-modes/calfw/default.nix
@@ -16,10 +16,10 @@ stdenv.mkDerivation rec {
 
   installPhase =
     ''
-       ensureDir "$out/share/doc/${name}"
+       mkdir -p "$out/share/doc/${name}"
        cp -v readme.md "$out/share/doc/${name}"
 
-       ensureDir "$out/share/emacs/site-lisp/"
+       mkdir -p "$out/share/emacs/site-lisp/"
        cp *.el "$out/share/emacs/site-lisp/"
     '';
 
diff --git a/pkgs/applications/editors/emacs-modes/ocaml/default.nix b/pkgs/applications/editors/emacs-modes/ocaml/default.nix
index 1d81a0b7ff1e..9e4496ff1a48 100644
--- a/pkgs/applications/editors/emacs-modes/ocaml/default.nix
+++ b/pkgs/applications/editors/emacs-modes/ocaml/default.nix
@@ -18,7 +18,7 @@ in stdenv.mkDerivation {
 
   installPhase = ''
     cd emacs;
-    ensureDir "$out/share/emacs/site-lisp" "$out/bin"
+    mkdir -p "$out/share/emacs/site-lisp" "$out/bin"
     EMACSDIR=$out/share/emacs/site-lisp make simple-install install-ocamltags
   '';
 
diff --git a/pkgs/applications/editors/emacs-modes/tuareg/default.nix b/pkgs/applications/editors/emacs-modes/tuareg/default.nix
index 17957ffc276b..3fd592f3dba6 100644
--- a/pkgs/applications/editors/emacs-modes/tuareg/default.nix
+++ b/pkgs/applications/editors/emacs-modes/tuareg/default.nix
@@ -15,7 +15,7 @@ in stdenv.mkDerivation {
   buildInputs = [ emacs ];
 
   installPhase = ''
-    ensureDir "$out/share/emacs/site-lisp"
+    mkdir -p "$out/share/emacs/site-lisp"
     cp *.el *.elc  "$out/share/emacs/site-lisp"
   '';
 
diff --git a/pkgs/applications/editors/vim/macvim.nix b/pkgs/applications/editors/vim/macvim.nix
index e48cb2590f9c..8b8f08b6fd73 100644
--- a/pkgs/applications/editors/vim/macvim.nix
+++ b/pkgs/applications/editors/vim/macvim.nix
@@ -62,7 +62,7 @@ in mkDerivation rec {
   '';
 
   postInstall = ''
-    ensureDir $out/Applications
+    mkdir -p $out/Applications
     cp -r src/MacVim/build/Release/MacVim.app $out/Applications
 
     rm $out/bin/{Vimdiff,Vimtutor,Vim,ex,rVim,rview,view}
diff --git a/pkgs/applications/graphics/alchemy/default.nix b/pkgs/applications/graphics/alchemy/default.nix
index ee8543f7039a..263c411a8dbf 100644
--- a/pkgs/applications/graphics/alchemy/default.nix
+++ b/pkgs/applications/graphics/alchemy/default.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
   };
 
   installPhase = ''
-    ensureDir $out/bin $out/share
+    mkdir -p $out/bin $out/share
     cp -a . $out/share/alchemy
     cat >> $out/bin/alchemy << EOF
     #!/bin/sh
diff --git a/pkgs/applications/misc/keepass/default.nix b/pkgs/applications/misc/keepass/default.nix
index 0098e626b424..89f794850d27 100644
--- a/pkgs/applications/misc/keepass/default.nix
+++ b/pkgs/applications/misc/keepass/default.nix
@@ -24,12 +24,12 @@ stdenv.mkDerivation rec {
 
 
   installPhase = ''
-    ensureDir "$out/bin"
+    mkdir -p "$out/bin"
     echo "${mono}/bin/mono $out/KeePass.exe" > $out/bin/keepass
     chmod +x $out/bin/keepass
     echo $out
     cp -r ./* $out/
-    ensureDir "$out/share/applications"
+    mkdir -p "$out/share/applications"
     cp ${desktopItem}/share/applications/* $out/share/applications
   '';
 
diff --git a/pkgs/applications/misc/librecad/2.0.nix b/pkgs/applications/misc/librecad/2.0.nix
index 2f140db93973..f7743feddbb2 100644
--- a/pkgs/applications/misc/librecad/2.0.nix
+++ b/pkgs/applications/misc/librecad/2.0.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation {
   '';
 
   installPhase = ''
-    ensureDir $out/bin $out/share
+    mkdir -p $out/bin $out/share
     cp -R unix/librecad $out/bin
     cp -R unix/resources $out/share/librecad
   '';
diff --git a/pkgs/applications/misc/librecad/default.nix b/pkgs/applications/misc/librecad/default.nix
index b225519f4868..6e368f6fb10d 100644
--- a/pkgs/applications/misc/librecad/default.nix
+++ b/pkgs/applications/misc/librecad/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation {
   configurePhase = "qmake PREFIX=$out";
 
   installPhase = ''
-    ensureDir $out/bin $out/share
+    mkdir -p $out/bin $out/share
     cp -R unix/librecad $out/bin
     cp -R unix/resources $out/share/librecad
   '';
diff --git a/pkgs/applications/misc/synergy/default.nix b/pkgs/applications/misc/synergy/default.nix
index 834b514148b6..d975d171518d 100644
--- a/pkgs/applications/misc/synergy/default.nix
+++ b/pkgs/applications/misc/synergy/default.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
   # http://synergy-foss.org/spit/issues/details/3317/
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp ../bin/synergyc $out/bin
     cp ../bin/synergys $out/bin
     cp ../bin/synergyd $out/bin
diff --git a/pkgs/applications/misc/vanitygen/default.nix b/pkgs/applications/misc/vanitygen/default.nix
index e16767d4c261..99b0e70c898f 100644
--- a/pkgs/applications/misc/vanitygen/default.nix
+++ b/pkgs/applications/misc/vanitygen/default.nix
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ openssl pcre ];
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp vanitygen $out/bin
     cp keyconv $out/bin/vanitygen-keyconv
   '';
diff --git a/pkgs/applications/networking/bittorrentsync/default.nix b/pkgs/applications/networking/bittorrentsync/default.nix
index abb94a32bd71..989ceb235b02 100644
--- a/pkgs/applications/networking/bittorrentsync/default.nix
+++ b/pkgs/applications/networking/bittorrentsync/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ patchelf ];
 
   installPhase = ''
-    ensureDir "$out/bin/"
+    mkdir -p "$out/bin/"
     cp -r "btsync" "$out/bin/"
 
     patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix
index d425c3f07384..ffc23a9d968d 100644
--- a/pkgs/applications/networking/browsers/chromium/browser.nix
+++ b/pkgs/applications/networking/browsers/chromium/browser.nix
@@ -8,7 +8,7 @@ mkChromiumDerivation (base: rec {
   buildTargets = [ "mksnapshot" "chrome" ];
 
   installPhase = ''
-    ensureDir "$libExecPath"
+    mkdir -p "$libExecPath"
     cp -v "$buildPath/"*.pak "$libExecPath/"
     cp -v "$buildPath/icudtl.dat" "$libExecPath/"
     cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/"
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index 44fd3c69e537..4dfdca882bc8 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -67,7 +67,7 @@ in stdenv.mkDerivation {
     browserBinary = "${chromium.browser}/libexec/chromium/chromium";
     sandboxBinary = "${chromium.sandbox}/bin/chromium-sandbox";
   in ''
-    ensureDir "$out/bin" "$out/share/applications"
+    mkdir -p "$out/bin" "$out/share/applications"
 
     ln -s "${chromium.browser}/share" "$out/share"
     makeWrapper "${browserBinary}" "$out/bin/chromium" \
diff --git a/pkgs/applications/networking/browsers/chromium/plugins.nix b/pkgs/applications/networking/browsers/chromium/plugins.nix
index f760b06fe24b..e0c45f910751 100644
--- a/pkgs/applications/networking/browsers/chromium/plugins.nix
+++ b/pkgs/applications/networking/browsers/chromium/plugins.nix
@@ -22,7 +22,7 @@ let
         else if source.channel == "stable" then "chrome"
         else "chrome-${source.channel}";
     in ''
-      ensureDir plugins
+      mkdir -p plugins
       ar p "$src" data.tar.lzma | tar xJ -C plugins --strip-components=4 \
         ./opt/google/${chan}/PepperFlash \
         ./opt/google/${chan}/libpdf.so
@@ -53,7 +53,7 @@ let
       pdfInfo = "#${pdfName}#${pdfDescription};${pdfMimeTypes}";
     in ''
       install -vD libpdf.so "$pdf/lib/libpdf.so"
-      ensureDir "$pdf/nix-support"
+      mkdir -p "$pdf/nix-support"
       echo "--register-pepper-plugins='$pdf/lib/libpdf.so${pdfInfo}'" \
         > "$pdf/nix-support/chromium-flags"
 
@@ -63,7 +63,7 @@ let
 
       install -vD PepperFlash/libpepflashplayer.so \
         "$flash/lib/libpepflashplayer.so"
-      ensureDir "$flash/nix-support"
+      mkdir -p "$flash/nix-support"
       echo "--ppapi-flash-path='$flash/lib/libpepflashplayer.so'" \
            "--ppapi-flash-version=$flashVersion" \
            > "$flash/nix-support/chromium-flags"
diff --git a/pkgs/applications/networking/browsers/chromium/source/default.nix b/pkgs/applications/networking/browsers/chromium/source/default.nix
index 6a6b299ee511..0d8a4156703e 100644
--- a/pkgs/applications/networking/browsers/chromium/source/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/source/default.nix
@@ -44,7 +44,7 @@ stdenv.mkDerivation {
 
   outputs = [ "out" "sandbox" "bundled" "main" ];
   installPhase = ''
-    ensureDir "$out" "$sandbox" "$bundled" "$main"
+    mkdir -p "$out" "$sandbox" "$bundled" "$main"
 
     header "copying browser main sources to $main"
     find . -mindepth 1 -maxdepth 1 \
diff --git a/pkgs/applications/networking/dropbox-cli/default.nix b/pkgs/applications/networking/dropbox-cli/default.nix
index 5262c121bb28..51f3ae2ac8d9 100644
--- a/pkgs/applications/networking/dropbox-cli/default.nix
+++ b/pkgs/applications/networking/dropbox-cli/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation {
   phases = "unpackPhase installPhase";
 
   installPhase = ''
-    ensureDir "$out/bin/" "$out/share/applications"
+    mkdir -p "$out/bin/" "$out/share/applications"
     cp data/dropbox.desktop "$out/share/applications"
     substitute "dropbox.in" "$out/bin/dropbox" \
       --replace '@PACKAGE_VERSION@' ${version} \
diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix
index 62dce4c42127..55b7bd7486b4 100644
--- a/pkgs/applications/networking/dropbox/default.nix
+++ b/pkgs/applications/networking/dropbox/default.nix
@@ -70,9 +70,9 @@ in stdenv.mkDerivation {
   '';
 
   installPhase = ''
-    ensureDir "$out/${appdir}"
+    mkdir -p "$out/${appdir}"
     cp -r ".dropbox-dist/"* "$out/${appdir}/"
-    ensureDir "$out/bin"
+    mkdir -p "$out/bin"
     ln -s "$out/${appdir}/dropbox" "$out/bin/dropbox"
 
     patchelf --set-interpreter ${stdenv.glibc}/lib/${interpreter} \
@@ -83,7 +83,7 @@ in stdenv.mkDerivation {
     find "$out/${appdir}" -type f -a -perm +0100 \
       -print -exec patchelf --force-rpath --set-rpath "$RPATH" {} \;
 
-    ensureDir "$out/share/applications"
+    mkdir -p "$out/share/applications"
     cp "${desktopItem}/share/applications/"* $out/share/applications
   '';
 
diff --git a/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix b/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix
index 544aa06877ad..339e36321b33 100644
--- a/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix
+++ b/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   buildPhase  = "make libskype.so libskype_dbus.so";
 
   installPhase = ''
-    ensureDir $out/pixmaps/pidgin/protocols/{16,22,48} $out/bin $out/lib/pidgin
+    mkdir -p $out/pixmaps/pidgin/protocols/{16,22,48} $out/bin $out/lib/pidgin
     cp icons/16/skypeout.png $out/pixmaps/pidgin/protocols/16
     cp icons/22/skypeout.png $out/pixmaps/pidgin/protocols/22
     cp icons/48/skypeout.png $out/pixmaps/pidgin/protocols/48
diff --git a/pkgs/applications/networking/irc/irssi/fish/default.nix b/pkgs/applications/networking/irc/irssi/fish/default.nix
index 98d5afa0ba9f..2471c4885af8 100644
--- a/pkgs/applications/networking/irc/irssi/fish/default.nix
+++ b/pkgs/applications/networking/irc/irssi/fish/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    ensureDir $out/lib/irssi/modules
+    mkdir -p $out/lib/irssi/modules
     cp src/.libs/libfish.so $out/lib/irssi/modules
   '';
   
diff --git a/pkgs/applications/networking/p2p/freenet/default.nix b/pkgs/applications/networking/p2p/freenet/default.nix
index 4c74c2c32de0..cb53f4b5aa31 100644
--- a/pkgs/applications/networking/p2p/freenet/default.nix
+++ b/pkgs/applications/networking/p2p/freenet/default.nix
@@ -34,7 +34,7 @@ stdenv.mkDerivation {
   buildPhase = "ant package-only";
 
   installPhase = ''
-    ensureDir $out/share/freenet $out/bin
+    mkdir -p $out/share/freenet $out/bin
     cp lib/bcprov.jar $out/share/freenet
     cp lib/freenet/freenet-ext.jar $out/share/freenet
     cp dist/freenet.jar $out/share/freenet
diff --git a/pkgs/applications/networking/syncthing/default.nix b/pkgs/applications/networking/syncthing/default.nix
index 8f169180dd5e..226b7f6d097b 100644
--- a/pkgs/applications/networking/syncthing/default.nix
+++ b/pkgs/applications/networking/syncthing/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp -r ./bin $out
   '';
 
diff --git a/pkgs/applications/office/zotero/default.nix b/pkgs/applications/office/zotero/default.nix
index f0f7d801d8fd..b6636cef6418 100644
--- a/pkgs/applications/office/zotero/default.nix
+++ b/pkgs/applications/office/zotero/default.nix
@@ -23,10 +23,10 @@ stdenv.mkDerivation {
 
   inherit bash xulrunner;
   installPhase = ''
-    ensureDir "$out/libexec/zotero"
+    mkdir -p "$out/libexec/zotero"
     cp -vR * "$out/libexec/zotero/"
 
-    ensureDir "$out/bin"
+    mkdir -p "$out/bin"
     substituteAll "${./zotero.sh}" "$out/bin/zotero"
     chmod +x "$out/bin/zotero"
   '';
diff --git a/pkgs/applications/science/math/gap/default.nix b/pkgs/applications/science/math/gap/default.nix
index f76640567f60..e7766fab5815 100644
--- a/pkgs/applications/science/math/gap/default.nix
+++ b/pkgs/applications/science/math/gap/default.nix
@@ -38,7 +38,7 @@ rec {
   phaseNames = ["doConfigure" "doMake" "doDeploy"];
 
   doDeploy = a.fullDepEntry ''
-    ensureDir "$out/bin" "$out/share/gap/"
+    mkdir -p "$out/bin" "$out/share/gap/"
 
     cp -r . "$out/share/gap/build-dir"
 
diff --git a/pkgs/applications/version-management/git-and-tools/git-bz/default.nix b/pkgs/applications/version-management/git-and-tools/git-bz/default.nix
index 3a2270cf972d..4c4ff62901e5 100644
--- a/pkgs/applications/version-management/git-and-tools/git-bz/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-bz/default.nix
@@ -21,8 +21,8 @@ stdenv.mkDerivation {
   '';
 
   installPhase = ''
-    ensureDir $out
-    ensureDir $out/bin
+    mkdir -p $out
+    mkdir -p $out/bin
     cp git-bz $out/bin
     wrapProgram $out/bin/git-bz \
       --prefix PYTHONPATH : "$(toPythonPath $python):$(toPythonPath $pysqlite)"
diff --git a/pkgs/applications/version-management/git-and-tools/svn2git-kde/default.nix b/pkgs/applications/version-management/git-and-tools/svn2git-kde/default.nix
index c44f2dbcbb6b..94c819e711b5 100644
--- a/pkgs/applications/version-management/git-and-tools/svn2git-kde/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/svn2git-kde/default.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp svn-all-fast-export $out/bin
   '';
 
diff --git a/pkgs/applications/video/makemkv/builder.sh b/pkgs/applications/video/makemkv/builder.sh
index 0e1898a45564..e4cfcf3d9068 100644
--- a/pkgs/applications/video/makemkv/builder.sh
+++ b/pkgs/applications/video/makemkv/builder.sh
@@ -30,9 +30,9 @@ for i in ${bin} ; do
     ${i}
 done 
 
-ensureDir $out/bin
-ensureDir $out/lib
-ensureDir $out/share/MakeMKV
+mkdir -p $out/bin
+mkdir -p $out/lib
+mkdir -p $out/share/MakeMKV
 cp ${lib} ${out}/lib
 cp ${bin} ${out}/bin
 cp makemkv-bin-${ver}/src/share/* $out/share/MakeMKV
diff --git a/pkgs/applications/video/omxplayer/default.nix b/pkgs/applications/video/omxplayer/default.nix
index b3880067cac4..6bc982efa128 100644
--- a/pkgs/applications/video/omxplayer/default.nix
+++ b/pkgs/applications/video/omxplayer/default.nix
@@ -71,7 +71,7 @@ stdenv.mkDerivation rec {
     export INCLUDES="-I${raspberrypifw}/include/interface/vcos/pthreads -I${raspberrypifw}/include/interface/vmcs_host/linux/"
   '';
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp omxplayer.bin $out/bin
   '';
   buildInputs = [ raspberrypifw ffmpeg pcre boostHeaders freetype zlib ];
diff --git a/pkgs/build-support/cabal/default.nix b/pkgs/build-support/cabal/default.nix
index bb349b3a1f57..6f454dc2b581 100644
--- a/pkgs/build-support/cabal/default.nix
+++ b/pkgs/build-support/cabal/default.nix
@@ -248,12 +248,12 @@ assert !enableStaticLibraries -> versionOlder "7.7" ghc.version;
 
               ./Setup copy
 
-              ensureDir $out/bin # necessary to get it added to PATH
+              mkdir -p $out/bin # necessary to get it added to PATH
 
               local confDir=$out/lib/ghc-${ghc.ghc.version}/package.conf.d
               local installedPkgConf=$confDir/${self.fname}.installedconf
               local pkgConf=$confDir/${self.fname}.conf
-              ensureDir $confDir
+              mkdir -p $confDir
               ./Setup register --gen-pkg-config=$pkgConf
               if test -f $pkgConf; then
                 echo '[]' > $installedPkgConf
diff --git a/pkgs/build-support/clang-wrapper/add-flags b/pkgs/build-support/clang-wrapper/add-flags
index 3b0645471531..7a9711290aa1 100644
--- a/pkgs/build-support/clang-wrapper/add-flags
+++ b/pkgs/build-support/clang-wrapper/add-flags
@@ -21,4 +21,4 @@ if test -e @out@/nix-support/libc-ldflags-before; then
     export NIX_LDFLAGS_BEFORE="$(cat @out@/nix-support/libc-ldflags-before) $NIX_LDFLAGS_BEFORE"
 fi
 
-export NIX_CLANG_WRAPPER_FLAGS_SET=1
+export NIX_GCC_WRAPPER_FLAGS_SET=1
diff --git a/pkgs/build-support/clang-wrapper/clang-wrapper.sh b/pkgs/build-support/clang-wrapper/clang-wrapper.sh
index b39aa2d721e8..57715274f1e2 100644
--- a/pkgs/build-support/clang-wrapper/clang-wrapper.sh
+++ b/pkgs/build-support/clang-wrapper/clang-wrapper.sh
@@ -1,10 +1,10 @@
 #! @shell@ -e
 
-if test -n "$NIX_CLANG_WRAPPER_START_HOOK"; then
-    source "$NIX_CLANG_WRAPPER_START_HOOK"
+if test -n "$NIX_GCC_WRAPPER_START_HOOK"; then
+    source "$NIX_GCC_WRAPPER_START_HOOK"
 fi
 
-if test -z "$NIX_CLANG_WRAPPER_FLAGS_SET"; then
+if test -z "$NIX_GCC_WRAPPER_FLAGS_SET"; then
     source @out@/nix-support/add-flags.sh
 fi
 
diff --git a/pkgs/build-support/clang-wrapper/default.nix b/pkgs/build-support/clang-wrapper/default.nix
index 4b2a5a1182ea..7a5d87127d90 100644
--- a/pkgs/build-support/clang-wrapper/default.nix
+++ b/pkgs/build-support/clang-wrapper/default.nix
@@ -29,8 +29,8 @@ stdenv.mkDerivation {
   builder = ./builder.sh;
   setupHook = ./setup-hook.sh;
   clangWrapper = ./clang-wrapper.sh;
-  ldWrapper = ./ld-wrapper.sh;
-  utils = ./utils.sh;
+  ldWrapper = ../gcc-wrapper/ld-wrapper.sh;
+  utils = ../gcc-wrapper/utils.sh;
   addFlags = ./add-flags;
 
   inherit nativeTools nativeLibc nativePrefix clang clangVersion libcxx;
diff --git a/pkgs/build-support/clang-wrapper/ld-wrapper.sh b/pkgs/build-support/clang-wrapper/ld-wrapper.sh
deleted file mode 100644
index ae45c62d460a..000000000000
--- a/pkgs/build-support/clang-wrapper/ld-wrapper.sh
+++ /dev/null
@@ -1,164 +0,0 @@
-#! @shell@ -e
-
-if test -n "$NIX_LD_WRAPPER_START_HOOK"; then
-    source "$NIX_LD_WRAPPER_START_HOOK"
-fi
-
-if test -z "$NIX_CLANG_WRAPPER_FLAGS_SET"; then
-    source @out@/nix-support/add-flags.sh
-fi
-
-source @out@/nix-support/utils.sh
-
-
-# Optionally filter out paths not refering to the store.
-params=("$@")
-if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE" \
-        -a \( -z "$NIX_IGNORE_LD_THROUGH_CLANG" -o -z "$NIX_LDFLAGS_SET" \); then
-    rest=()
-    n=0
-    while test $n -lt ${#params[*]}; do
-        p=${params[n]}
-        p2=${params[$((n+1))]}
-        if test "${p:0:3}" = "-L/" && badPath "${p:2}"; then
-            skip $p
-        elif test "$p" = "-L" && badPath "$p2"; then
-            n=$((n + 1)); skip $p2
-        elif test "$p" = "-rpath" && badPath "$p2"; then
-            n=$((n + 1)); skip $p2
-        elif test "$p" = "-dynamic-linker" && badPath "$p2"; then
-            n=$((n + 1)); skip $p2
-        elif test "${p:0:1}" = "/" && badPath "$p"; then
-            # We cannot skip this; barf.
-            echo "impure path \`$p' used in link" >&2
-            exit 1
-        elif test "${p:0:9}" = "--sysroot"; then
-            # Our ld is not built with sysroot support (Can we fix that?)
-            :
-        else
-            rest=("${rest[@]}" "$p")
-        fi
-        n=$((n + 1))
-    done
-    params=("${rest[@]}")
-fi
-
-
-extra=()
-extraBefore=()
-
-if test -z "$NIX_LDFLAGS_SET"; then
-    extra=(${extra[@]} $NIX_LDFLAGS)
-    extraBefore=(${extraBefore[@]} $NIX_LDFLAGS_BEFORE)
-fi
-
-
-# Add all used dynamic libraries to the rpath.
-if test "$NIX_DONT_SET_RPATH" != "1"; then
-
-    libPath=""
-    addToLibPath() {
-        local path="$1"
-        if test "${path:0:1}" != "/"; then return 0; fi
-        case "$path" in
-            *..*|*./*|*/.*|*//*)
-                local path2
-                if path2=$(readlink -f "$path"); then
-                    path="$path2"
-                fi
-                ;;
-        esac
-        case $libPath in
-            *\ $path\ *) return 0 ;;
-        esac
-        libPath="$libPath $path "
-    }
-    
-    addToRPath() {
-        # If the path is not in the store, don't add it to the rpath.
-        # This typically happens for libraries in /tmp that are later
-        # copied to $out/lib.  If not, we're screwed.
-        if test "${1:0:${#NIX_STORE}}" != "$NIX_STORE"; then return 0; fi
-        case $rpath in
-            *\ $1\ *) return 0 ;;
-        esac
-        rpath="$rpath $1 "
-    }
-
-    libs=""
-    addToLibs() {
-        libs="$libs $1"
-    }
-
-    rpath=""
-
-    # First, find all -L... switches.
-    allParams=("${params[@]}" ${extra[@]})
-    n=0
-    while test $n -lt ${#allParams[*]}; do
-        p=${allParams[n]}
-        p2=${allParams[$((n+1))]}
-        if test "${p:0:3}" = "-L/"; then
-            addToLibPath ${p:2}
-        elif test "$p" = "-L"; then
-            addToLibPath ${p2}
-            n=$((n + 1))
-        elif test "$p" = "-l"; then
-            addToLibs ${p2}
-            n=$((n + 1))
-        elif test "${p:0:2}" = "-l"; then
-            addToLibs ${p:2}
-        elif test "$p" = "-dynamic-linker"; then
-            # Ignore the dynamic linker argument, or it 
-            # will get into the next 'elif'. We don't want
-            # the dynamic linker path rpath to go always first.
-            n=$((n + 1))
-        elif [[ "$p" =~ ^[^-].*\.so($|\.) ]]; then
-            # This is a direct reference to a shared library, so add
-            # its directory to the rpath.
-            path="$(dirname "$p")";
-            addToRPath "${path}"
-        fi
-        n=$((n + 1))
-    done
-
-    # Second, for each directory in the library search path (-L...),
-    # see if it contains a dynamic library used by a -l... flag.  If
-    # so, add the directory to the rpath.
-    # It's important to add the rpath in the order of -L..., so
-    # the link time chosen objects will be those of runtime linking.
-    
-    for i in $libPath; do
-        for j in $libs; do
-            if test -f "$i/lib$j.so"; then
-                addToRPath $i
-                break
-            fi
-        done
-    done
-    
-
-    # Finally, add `-rpath' switches.
-    for i in $rpath; do
-        extra=(${extra[@]} -rpath $i)
-    done
-fi
-
-
-# Optionally print debug info.
-if test "$NIX_DEBUG" = "1"; then
-  echo "original flags to @ld@:" >&2
-  for i in "${params[@]}"; do
-      echo "  $i" >&2
-  done
-  echo "extra flags to @ld@:" >&2
-  for i in ${extra[@]}; do
-      echo "  $i" >&2
-  done
-fi
-
-if test -n "$NIX_LD_WRAPPER_EXEC_HOOK"; then
-    source "$NIX_LD_WRAPPER_EXEC_HOOK"
-fi
-
-exec @ld@ ${extraBefore[@]} "${params[@]}" ${extra[@]}
diff --git a/pkgs/build-support/clang-wrapper/utils.sh b/pkgs/build-support/clang-wrapper/utils.sh
deleted file mode 100644
index 753b3772e956..000000000000
--- a/pkgs/build-support/clang-wrapper/utils.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-skip () {
-    if test "$NIX_DEBUG" = "1"; then
-        echo "skipping impure path $1" >&2
-    fi
-}
-
-
-# Checks whether a path is impure.  E.g., `/lib/foo.so' is impure, but
-# `/nix/store/.../lib/foo.so' isn't.
-badPath() {
-    local p=$1
-    
-    # Relative paths are okay (since they're presumably relative to
-    # the temporary build directory).
-    if test "${p:0:1}" != "/"; then return 1; fi
-    
-    # Otherwise, the path should refer to the store or some temporary
-    # directory (including the build directory).
-    test \
-        "$p" != "/dev/null" -a \
-        "${p:0:${#NIX_STORE}}" != "$NIX_STORE" -a \
-        "${p:0:4}" != "/tmp" -a \
-        "${p:0:${#NIX_BUILD_TOP}}" != "$NIX_BUILD_TOP"
-}
diff --git a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh
index 2ad7783a442c..c53fd44207d0 100644
--- a/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh
+++ b/pkgs/build-support/gcc-wrapper/gcc-wrapper.sh
@@ -77,6 +77,7 @@ if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE"; then
         n=$((n + 1))
     done
     params=("${rest[@]}")
+    NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE --sysroot=/var/empty"
 fi
 
 
diff --git a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh
index 74b6273848ed..822c4a03a218 100644
--- a/pkgs/build-support/gcc-wrapper/ld-wrapper.sh
+++ b/pkgs/build-support/gcc-wrapper/ld-wrapper.sh
@@ -32,6 +32,9 @@ if test "$NIX_ENFORCE_PURITY" = "1" -a -n "$NIX_STORE" \
             # We cannot skip this; barf.
             echo "impure path \`$p' used in link" >&2
             exit 1
+        elif test "${p:0:9}" = "--sysroot"; then
+            # Our ld is not built with sysroot support (Can we fix that?)
+            :
         else
             rest=("${rest[@]}" "$p")
         fi
@@ -45,10 +48,12 @@ extra=()
 extraBefore=()
 
 if test -z "$NIX_LDFLAGS_SET"; then
-    extra=(${extra[@]} $NIX_LDFLAGS)
-    extraBefore=(${extraBefore[@]} $NIX_LDFLAGS_BEFORE)
+    extra+=($NIX_LDFLAGS)
+    extraBefore+=($NIX_LDFLAGS_BEFORE)
 fi
 
+extra+=($NIX_LDFLAGS_AFTER)
+
 
 # Add all used dynamic libraries to the rpath.
 if test "$NIX_DONT_SET_RPATH" != "1"; then
diff --git a/pkgs/build-support/kdewrapper/default.nix b/pkgs/build-support/kdewrapper/default.nix
index 6dcf68a324a2..64dfd7d0ca6b 100644
--- a/pkgs/build-support/kdewrapper/default.nix
+++ b/pkgs/build-support/kdewrapper/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation {
   inherit libs;
 
   buildCommand = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
 
     KDEDIRS=${program}
     QT_PLUGIN_PATH=${program}/lib/qt4/plugins:${program}/lib/kde4/plugins
diff --git a/pkgs/build-support/make-startupitem/default.nix b/pkgs/build-support/make-startupitem/default.nix
index dc78b8a704e2..fad6f00d8211 100644
--- a/pkgs/build-support/make-startupitem/default.nix
+++ b/pkgs/build-support/make-startupitem/default.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation {
   priority = 5;
 
   buildCommand = ''
-    ensureDir $out/share/autostart
+    mkdir -p $out/share/autostart
     target=${name}.desktop
     cp ${package}/share/applications/${srcPrefix}${name}.desktop $target
     chmod +rw $target
diff --git a/pkgs/build-support/release/functions.sh b/pkgs/build-support/release/functions.sh
index 9f2d03519c8c..8ac67a196721 100644
--- a/pkgs/build-support/release/functions.sh
+++ b/pkgs/build-support/release/functions.sh
@@ -9,6 +9,6 @@ findTarballs() {
 }
 
 propagateImageName() {
-    ensureDir $out/nix-support
+    mkdir -p $out/nix-support
     cat "$diskImage"/nix-support/full-name > $out/nix-support/full-name
 }
diff --git a/pkgs/build-support/vm/windows/bootstrap.nix b/pkgs/build-support/vm/windows/bootstrap.nix
index e3b44d1b6ab7..ebea819b1910 100644
--- a/pkgs/build-support/vm/windows/bootstrap.nix
+++ b/pkgs/build-support/vm/windows/bootstrap.nix
@@ -69,7 +69,7 @@ in rec {
         -b "${installedVM}/disk.img" \
         -f qcow2 winvm.img
       ${runAndSuspend}
-      ensureDir "$out"
+      mkdir -p "$out"
       cp winvm.img "$out/disk.img"
       cp state.gz "$out/state.gz"
     '';
diff --git a/pkgs/build-support/vm/windows/install/default.nix b/pkgs/build-support/vm/windows/install/default.nix
index 10690bf6b287..fe8e8f61de02 100644
--- a/pkgs/build-support/vm/windows/install/default.nix
+++ b/pkgs/build-support/vm/windows/install/default.nix
@@ -22,7 +22,7 @@ let
   cygwinSshKey = stdenv.mkDerivation {
     name = "snakeoil-ssh-cygwin";
     buildCommand = ''
-      ensureDir "$out"
+      mkdir -p "$out"
       ${openssh}/bin/ssh-keygen -t ecdsa -f "$out/key" -N ""
     '';
   };
@@ -65,7 +65,7 @@ in stdenv.mkDerivation {
   buildCommand = ''
     ${qemu}/bin/qemu-img create -f qcow2 winvm.img 2G
     ${installController}
-    ensureDir "$out"
+    mkdir -p "$out"
     cp winvm.img "$out/disk.img"
   '';
   passthru = {
diff --git a/pkgs/data/misc/tzdata/default.nix b/pkgs/data/misc/tzdata/default.nix
index afee316d0bf8..71153d884991 100644
--- a/pkgs/data/misc/tzdata/default.nix
+++ b/pkgs/data/misc/tzdata/default.nix
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
       ln -s . $out/share/zoneinfo/posix
       mv $out/share/zoneinfo-leaps $out/share/zoneinfo/right
 
-      ensureDir "$lib/include"
+      mkdir -p "$lib/include"
       cp tzfile.h "$lib/include/tzfile.h"
     '';
 
diff --git a/pkgs/development/compilers/gcc/4.8/builder.sh b/pkgs/development/compilers/gcc/4.8/builder.sh
index 7c9b9420ddaa..3d24d34a2f26 100644
--- a/pkgs/development/compilers/gcc/4.8/builder.sh
+++ b/pkgs/development/compilers/gcc/4.8/builder.sh
@@ -109,13 +109,11 @@ if test "$noSysDirs" = "1"; then
         fi
     fi
 
-
     # CFLAGS_FOR_TARGET are needed for the libstdc++ configure script to find
     # the startfiles.
     # FLAGS_FOR_TARGET are needed for the target libraries to receive the -Bxxx
     # for the startfiles.
-    makeFlagsArray=( \
-        "${makeFlagsArray[@]}" \
+    makeFlagsArray+=( \
         NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \
         SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \
         CFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
@@ -128,8 +126,7 @@ if test "$noSysDirs" = "1"; then
         )
 
     if test -z "$targetConfig"; then
-        makeFlagsArray=( \
-            "${makeFlagsArray[@]}" \
+        makeFlagsArray+=( \
             BOOT_CFLAGS="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
             BOOT_LDFLAGS="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \
             )
@@ -138,13 +135,11 @@ if test "$noSysDirs" = "1"; then
     if test -n "$targetConfig" -a "$crossStageStatic" == 1; then
         # We don't want the gcc build to assume there will be a libc providing
         # limits.h in this stagae
-        makeFlagsArray=( \
-            "${makeFlagsArray[@]}" \
+        makeFlagsArray+=( \
             LIMITS_H_TEST=false \
             )
     else
-        makeFlagsArray=( \
-            "${makeFlagsArray[@]}" \
+        makeFlagsArray+=( \
             LIMITS_H_TEST=true \
             )
     fi
@@ -163,6 +158,7 @@ preConfigure() {
         # Patch to get armvt5el working:
         sed -i -e 's/ arm)/ arm*)/' newlib/configure.host
     fi
+
     # Bug - they packaged zlib
     if test -d "zlib"; then
         # This breaks the build without-headers, which should build only
@@ -189,8 +185,8 @@ preConfigure() {
     fi
 
     # Eval the preConfigure script from nix expression.
-    eval $providedPreConfigure;
-    env;
+    eval "$providedPreConfigure"
+
     # Perform the build in a different directory.
     mkdir ../build
     cd ../build
@@ -204,6 +200,15 @@ postConfigure() {
 }
 
 
+preInstall() {
+    # Make ‘lib64’ a symlink to ‘lib’.
+    if [ -n "$is64bit" -a -z "$enableMultilib" ]; then
+        mkdir -p $out/lib
+        ln -s lib $out/lib64
+    fi
+}
+
+
 postInstall() {
     # Remove precompiled headers for now.  They are very big and
     # probably not very useful yet.
diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix
index 58732f1a0be2..8865ca7c9550 100644
--- a/pkgs/development/compilers/gcc/4.8/default.nix
+++ b/pkgs/development/compilers/gcc/4.8/default.nix
@@ -67,7 +67,6 @@ let version = "4.8.3";
     patches = []
       ++ optional enableParallelBuilding ./parallel-bconfig.patch
       ++ optional (cross != null) ./libstdc++-target.patch
-      # ++ optional noSysDirs ./no-sys-dirs.patch
       # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its
       # target libraries and tools.
       ++ optional langAda ./gnat-cflags.patch
@@ -304,14 +303,21 @@ stdenv.mkDerivation ({
         "\"--with-host-libstdcxx=-Wl,-rpath,\$prefix/lib/amd64 -lstdc++\"
          \"--with-boot-ldflags=-L../prev-x86_64-pc-solaris2.11/libstdc++-v3/src/.libs\""}
     );
-    ${stdenv.lib.optionalString (stdenv.isSunOS && stdenv.is64bit)
-      ''
-        export NIX_LDFLAGS=`echo $NIX_LDFLAGS | sed -e s~$prefix/lib~$prefix/lib/amd64~g`
-        export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET"
-        export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET"
-        export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET"
-      ''}
-    '';
+  '' + stdenv.lib.optionalString (stdenv.isSunOS && stdenv.is64bit) ''
+    export NIX_LDFLAGS=`echo $NIX_LDFLAGS | sed -e s~$prefix/lib~$prefix/lib/amd64~g`
+    export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET"
+    export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET"
+    export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET"
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    if xcodePath=$(/usr/bin/xcrun --show-sdk-path); then
+      configureFlagsArray+=(--with-native-system-header-dir=$xcodePath/usr/include)
+      makeFlagsArray+=( \
+       CFLAGS_FOR_BUILD=-F$xcodePath/System/Library/Frameworks \
+       CFLAGS_FOR_TARGET=-F$xcodePath/System/Library/Frameworks \
+       FLAGS_FOR_TARGET=-F$xcodePath/System/Library/Frameworks \
+      )
+    fi
+  '';
 
   dontDisableStatic = true;
 
@@ -498,6 +504,8 @@ stdenv.mkDerivation ({
 
   inherit enableParallelBuilding;
 
+  inherit (stdenv) is64bit;
+
   meta = {
     homepage = http://gcc.gnu.org/;
     license = "GPLv3+";  # runtime support libraries are typically LGPLv3+
diff --git a/pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch b/pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch
deleted file mode 100644
index 79901703cb82..000000000000
--- a/pkgs/development/compilers/gcc/4.8/no-sys-dirs.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-diff -ru gcc-4.3.1-orig/gcc/cppdefault.c gcc-4.3.1/gcc/cppdefault.c
---- gcc-4.3.1-orig/gcc/cppdefault.c	2007-07-26 10:37:01.000000000 +0200
-+++ gcc-4.3.1/gcc/cppdefault.c	2008-06-25 17:48:23.000000000 +0200
-@@ -41,6 +41,10 @@
- # undef CROSS_INCLUDE_DIR
- #endif
- 
-+#undef LOCAL_INCLUDE_DIR
-+#undef SYSTEM_INCLUDE_DIR
-+#undef STANDARD_INCLUDE_DIR
-+
- const struct default_include cpp_include_defaults[]
- #ifdef INCLUDE_DEFAULTS
- = INCLUDE_DEFAULTS;
-diff -ru gcc-4.3.1-orig/gcc/gcc.c gcc-4.3.1/gcc/gcc.c
---- gcc-4.3.1-orig/gcc/gcc.c	2008-03-02 23:55:19.000000000 +0100
-+++ gcc-4.3.1/gcc/gcc.c	2008-06-25 17:52:53.000000000 +0200
-@@ -1478,10 +1478,10 @@
- /* Default prefixes to attach to command names.  */
- 
- #ifndef STANDARD_STARTFILE_PREFIX_1
--#define STANDARD_STARTFILE_PREFIX_1 "/lib/"
-+#define STANDARD_STARTFILE_PREFIX_1 ""
- #endif
- #ifndef STANDARD_STARTFILE_PREFIX_2
--#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/"
-+#define STANDARD_STARTFILE_PREFIX_2 ""
- #endif
- 
- #ifdef CROSS_DIRECTORY_STRUCTURE  /* Don't use these prefixes for a cross compiler.  */
---- gcc-4.3.1-orig/gcc/Makefile.in	2008-05-11 20:54:15.000000000 +0200
-+++ gcc-4.3.1/gcc/Makefile.in	2008-06-25 17:48:23.000000000 +0200
-@@ -3277,7 +3281,7 @@
-   -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
-   -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \
-   -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \
--  -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \
-+  -DLOCAL_INCLUDE_DIR=\"/no-such-dir\" \
-   -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \
-   -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \
-   -DPREFIX=\"$(prefix)/\" \
diff --git a/pkgs/development/compilers/ghdl/default.nix b/pkgs/development/compilers/ghdl/default.nix
index cd33d3d79a70..7b103805def3 100644
--- a/pkgs/development/compilers/ghdl/default.nix
+++ b/pkgs/development/compilers/ghdl/default.nix
@@ -34,14 +34,14 @@ stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp ghdl_mcode $out/bin
 
-    ensureDir $out/share/ghdl_mcode/translate
+    mkdir -p $out/share/ghdl_mcode/translate
     cp -R ../lib $out/share/ghdl_mcode/translate
     cp -R ../../libraries $out/share/ghdl_mcode
 
-    ensureDir $out/share/man/man1
+    mkdir -p $out/share/man/man1
     cp ../../doc/ghdl.1 $out/share/man/man1/ghdl_mcode.1
 
     # Ghdl has some timestamps checks, storing file timestamps in '.cf' files.
diff --git a/pkgs/development/compilers/gwt/2.4.0.nix b/pkgs/development/compilers/gwt/2.4.0.nix
index 65208b062c25..f0dc9378c4f0 100644
--- a/pkgs/development/compilers/gwt/2.4.0.nix
+++ b/pkgs/development/compilers/gwt/2.4.0.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
   buildInputs = [ unzip ];
 
   installPhase = ''
-    ensureDir $out
+    mkdir -p $out
     unzip $src
     mv gwt-2.4.0 $out/bin
   '';
diff --git a/pkgs/development/compilers/mercury/default.nix b/pkgs/development/compilers/mercury/default.nix
index 5ea922a371a7..21af582c594b 100644
--- a/pkgs/development/compilers/mercury/default.nix
+++ b/pkgs/development/compilers/mercury/default.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
   '';
 
   preConfigure = ''
-    ensureDir $out/lib/mercury/cgi-bin ;
+    mkdir -p $out/lib/mercury/cgi-bin ;
     configureFlags="--enable-deep-profiler=$out/lib/mercury/cgi-bin";
   '';
 
diff --git a/pkgs/development/compilers/ocaml/3.11.2.nix b/pkgs/development/compilers/ocaml/3.11.2.nix
index cffd7c3f54a4..64cf8a9f9f7b 100644
--- a/pkgs/development/compilers/ocaml/3.11.2.nix
+++ b/pkgs/development/compilers/ocaml/3.11.2.nix
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
     patch -p0 < ${./mips64.patch}
   '';
   postBuild = ''
-    ensureDir $out/include
+    mkdir -p $out/include
     ln -sv $out/lib/ocaml/caml $out/include/caml
   '';
 
diff --git a/pkgs/development/compilers/pakcs/default.nix b/pkgs/development/compilers/pakcs/default.nix
index 60071a8f6fa9..1fb4318ebb92 100644
--- a/pkgs/development/compilers/pakcs/default.nix
+++ b/pkgs/development/compilers/pakcs/default.nix
@@ -54,13 +54,13 @@ stdenv.mkDerivation rec {
     export LC_ALL=en_US.UTF-8
 
     # Set up link to cymake, which has been built already.
-    ensureDir bin/.local
+    mkdir -p bin/.local
     ln -s ${curryFront}/bin/cymake bin/.local/
   '';
 
   installPhase = ''
     # Prepare PAKCSHOME directory.
-    ensureDir $out/pakcs
+    mkdir -p $out/pakcs
     for d in bin curry2prolog currytools lib tools cpns include www examples docs ; do
       cp -r $d $out/pakcs ;
     done
@@ -80,7 +80,7 @@ stdenv.mkDerivation rec {
     (cd $out/pakcs/www ; make)
 
     # Install bin.
-    ensureDir $out/bin
+    mkdir -p $out/bin
     for b in makecurrycgi .makesavedstate pakcs parsecurry cleancurry \
              addtypes cass currybrowse currycreatemake currydoc currytest \
              dataToXml erd2curry ; do
@@ -88,7 +88,7 @@ stdenv.mkDerivation rec {
     done
 
     # Place emacs lisp files in expected locations.
-    ensureDir $out/share/emacs/site-lisp/curry-pakcs
+    mkdir -p $out/share/emacs/site-lisp/curry-pakcs
     for e in "tools/emacs/"*.el ; do
       cp $e $out/share/emacs/site-lisp/curry-pakcs/ ;
     done
diff --git a/pkgs/development/interpreters/perl/5.16/default.nix b/pkgs/development/interpreters/perl/5.16/default.nix
index bbd9e003b2c7..600884db5e67 100644
--- a/pkgs/development/interpreters/perl/5.16/default.nix
+++ b/pkgs/development/interpreters/perl/5.16/default.nix
@@ -64,29 +64,5 @@ stdenv.mkDerivation rec {
 
   setupHook = ./setup-hook.sh;
 
-  doCheck = !stdenv.isDarwin;
-
-  # some network-related tests don't work, mostly probably due to our sandboxing
-  testsToSkip = ''
-    lib/Net/hostent.t \
-    dist/IO/t/{io_multihomed.t,io_sock.t} \
-    dist/Net-Ping/t/*.t \
-    cpan/autodie/t/truncate.t \
-    t/porting/{maintainers.t,regen.t} \
-    cpan/Socket/t/get{name,addr}info.t \
-  '' + optionalString stdenv.isFreeBSD ''
-    cpan/CPANPLUS/t/04_CPANPLUS-Module.t \
-    cpan/CPANPLUS/t/20_CPANPLUS-Dist-MM.t \
-  '' + " ";
-
-  postPatch = optionalString (!stdenv.isDarwin) /* this failed on Darwin, no idea why */ ''
-    for test in ${testsToSkip}; do
-      echo "Removing test" $test
-      rm "$test"
-      pat=`echo "$test" | sed 's,/,\\\\/,g'` # just escape slashes
-      sed "/^$pat/d" -i MANIFEST
-    done
-  '';
-
   passthru.libPrefix = "lib/perl5/site_perl";
 }
diff --git a/pkgs/development/libraries/aacskeys/default.nix b/pkgs/development/libraries/aacskeys/default.nix
index 088f2cc4b1e0..0b20d8a41ea1 100644
--- a/pkgs/development/libraries/aacskeys/default.nix
+++ b/pkgs/development/libraries/aacskeys/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation {
   buildInputs = [openssl jdk premake3];
 
   installPhase = ''
-    ensureDir $out/{bin,lib,share/${baseName}}
+    mkdir -p $out/{bin,lib,share/${baseName}}
 
     # Install lib
     install -Dm444 lib/linux/libaacskeys.so $out/lib
diff --git a/pkgs/development/libraries/apache-activemq/default.nix b/pkgs/development/libraries/apache-activemq/default.nix
index d55ff9049eda..2f2792dec140 100644
--- a/pkgs/development/libraries/apache-activemq/default.nix
+++ b/pkgs/development/libraries/apache-activemq/default.nix
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
   phases = [ "unpackPhase" "installPhase" ];
 
   installPhase = ''
-    ensureDir $out
+    mkdir -p $out
     mv * $out/
     for j in `find $out/lib -name "*.jar"`; do
       cp="''${cp:+"$cp:"}$j";
diff --git a/pkgs/development/libraries/boost/1.55.nix b/pkgs/development/libraries/boost/1.55.nix
index df29b2402f8d..bf355f7169c6 100644
--- a/pkgs/development/libraries/boost/1.55.nix
+++ b/pkgs/development/libraries/boost/1.55.nix
@@ -75,6 +75,7 @@ stdenv.mkDerivation {
     ./b2 -j$NIX_BUILD_CORES -sEXPAT_INCLUDE=${expat}/include -sEXPAT_LIBPATH=${expat}/lib --layout=${layout} variant=${variant} threading=${threading} link=${link} ${cflags} install${withToolset}
     rm $out/bin/bjam
     ln -s $out/bin/b2 $out/bin/bjam
+    rm -rf $out/share/boost-build/example
   '';
 
   crossAttrs = rec {
diff --git a/pkgs/development/libraries/bwidget/default.nix b/pkgs/development/libraries/bwidget/default.nix
index 81f4f9a287ec..0d1913bc8e7a 100644
--- a/pkgs/development/libraries/bwidget/default.nix
+++ b/pkgs/development/libraries/bwidget/default.nix
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
   dontBuild = true;
 
   installPhase = ''
-    ensureDir "$out/lib/${passthru.libPrefix}"
+    mkdir -p "$out/lib/${passthru.libPrefix}"
     cp -R *.tcl lang images "$out/lib/${passthru.libPrefix}"
   '';
 
diff --git a/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh b/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh
index c983f9f6a612..06e820633b84 100644
--- a/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh
+++ b/pkgs/development/libraries/gdk-pixbuf/setup-hook.sh
@@ -1,6 +1,6 @@
 findGdkPixbufLoaders() {
 
-	if [ -z "$IN_NIX_SHELL" ]; then
+	if [ -n "$out" ] && [ -z "$IN_NIX_SHELL" ]; then
 
 		# set pixbuf loaders.cache for this package
 
diff --git a/pkgs/development/libraries/haskell/ghc-heap-view/default.nix b/pkgs/development/libraries/haskell/ghc-heap-view/default.nix
index 679ced622d9b..38220eeb05ea 100644
--- a/pkgs/development/libraries/haskell/ghc-heap-view/default.nix
+++ b/pkgs/development/libraries/haskell/ghc-heap-view/default.nix
@@ -6,7 +6,7 @@ cabal.mkDerivation (self: {
   sha256 = "1qi7f3phj2j63x1wd2cvk36945cxd84s12zs03hlrn49wzx2pf1n";
   buildDepends = [ binary transformers ];
   postInstall = ''
-    ensureDir "$out/share/ghci"
+    mkdir -p "$out/share/ghci"
     ln -s "$out/share/$pname-$version/ghci" "$out/share/ghci/$pname"
   '';
   meta = {
diff --git a/pkgs/development/libraries/haskell/ghc-mod/default.nix b/pkgs/development/libraries/haskell/ghc-mod/default.nix
index ee2cbdbd2032..5d29ec8474e6 100644
--- a/pkgs/development/libraries/haskell/ghc-mod/default.nix
+++ b/pkgs/development/libraries/haskell/ghc-mod/default.nix
@@ -25,7 +25,7 @@ cabal.mkDerivation (self: {
     make
     rm Makefile
     cd ..
-    ensureDir "$out/share/emacs"
+    mkdir -p "$out/share/emacs"
     mv $pname-$version emacs/site-lisp
 
     mv $out/bin/ghc-mod $out/bin/.ghc-mod-wrapped
diff --git a/pkgs/development/libraries/haskell/ghc-vis/default.nix b/pkgs/development/libraries/haskell/ghc-vis/default.nix
index a15ed9d1c47c..d8edd81cda65 100644
--- a/pkgs/development/libraries/haskell/ghc-vis/default.nix
+++ b/pkgs/development/libraries/haskell/ghc-vis/default.nix
@@ -12,7 +12,7 @@ cabal.mkDerivation (self: {
   ];
   jailbreak = true;
   postInstall = ''
-    ensureDir "$out/share/ghci"
+    mkdir -p "$out/share/ghci"
     ln -s "$out/share/$pname-$version/ghci" "$out/share/ghci/$pname"
   '';
   meta = {
diff --git a/pkgs/development/libraries/haskell/hoogle/local.nix b/pkgs/development/libraries/haskell/hoogle/local.nix
index 67f38f260e07..eebfd0224d26 100644
--- a/pkgs/development/libraries/haskell/hoogle/local.nix
+++ b/pkgs/development/libraries/haskell/hoogle/local.nix
@@ -65,7 +65,7 @@ cabal.mkDerivation (self: rec {
         exit 1
     fi
 
-    ensureDir $out/share/hoogle/doc
+    mkdir -p $out/share/hoogle/doc
     export HOOGLE_DOC_PATH=$out/share/hoogle/doc
 
     cd $out/share/hoogle
diff --git a/pkgs/development/libraries/readline/no-arch_only.patch b/pkgs/development/libraries/readline/no-arch_only.patch
new file mode 100644
index 000000000000..b23eab5d9d73
--- /dev/null
+++ b/pkgs/development/libraries/readline/no-arch_only.patch
@@ -0,0 +1,14 @@
+diff -ru -x '*~' readline-6.2-orig/support/shobj-conf readline-6.2/support/shobj-conf
+--- support/shobj-conf	2009-10-28 14:20:21.000000000 +0100
++++ support/shobj-conf	2014-07-01 13:03:28.000000000 +0200
+@@ -168,8 +168,8 @@
+ 	SHLIB_LIBVERSION='$(SHLIB_MAJOR)$(SHLIB_MINOR).$(SHLIB_LIBSUFF)'
+ 	SHLIB_LIBSUFF='dylib'
+ 
+-	SHOBJ_LDFLAGS='-dynamiclib -dynamic -undefined dynamic_lookup -arch_only `/usr/bin/arch`'
+-	SHLIB_XLDFLAGS='-dynamiclib -arch_only `/usr/bin/arch` -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
++	SHOBJ_LDFLAGS='-dynamiclib -dynamic -undefined dynamic_lookup'
++	SHLIB_XLDFLAGS='-dynamiclib -install_name $(libdir)/$@ -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR) -v'
+ 
+ 	SHLIB_LIBS='-lncurses'	# see if -lcurses works on MacOS X 10.1 
+ 	;;
diff --git a/pkgs/development/libraries/readline/readline6.nix b/pkgs/development/libraries/readline/readline6.nix
index 0826e6c5f7cb..e6b49e413b8c 100644
--- a/pkgs/development/libraries/readline/readline6.nix
+++ b/pkgs/development/libraries/readline/readline6.nix
@@ -12,7 +12,9 @@ stdenv.mkDerivation (rec {
 
   patchFlags = "-p0";
   patches =
-    [ ./link-against-ncurses.patch ]
+    [ ./link-against-ncurses.patch
+      ./no-arch_only.patch
+    ]
     ++
     (let
        patch = nr: sha256:
diff --git a/pkgs/development/mobile/androidenv/androidsdk.nix b/pkgs/development/mobile/androidenv/androidsdk.nix
index 1a2124754a20..3c9327f1c594 100644
--- a/pkgs/development/mobile/androidenv/androidsdk.nix
+++ b/pkgs/development/mobile/androidenv/androidsdk.nix
@@ -178,7 +178,7 @@ stdenv.mkDerivation rec {
     
     # Create wrappers to the most important tools and platform tools so that we can run them if the SDK is in our PATH
     
-    ensureDir $out/bin
+    mkdir -p $out/bin
 
     for i in $out/libexec/android-sdk-*/tools/*
     do
diff --git a/pkgs/development/mobile/xcodeenv/simulate-app.nix b/pkgs/development/mobile/xcodeenv/simulate-app.nix
index d25ef0f8e431..c999497d8c09 100644
--- a/pkgs/development/mobile/xcodeenv/simulate-app.nix
+++ b/pkgs/development/mobile/xcodeenv/simulate-app.nix
@@ -10,7 +10,7 @@ in
 stdenv.mkDerivation {
   name = stdenv.lib.replaceChars [" "] [""] name;
   buildCommand = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cat > $out/bin/run-test-simulator << "EOF"
     #! ${stdenv.shell} -e
 
diff --git a/pkgs/development/mobile/xcodeenv/xcodewrapper.nix b/pkgs/development/mobile/xcodeenv/xcodewrapper.nix
index 71e34ee5127d..fd375d6213c6 100644
--- a/pkgs/development/mobile/xcodeenv/xcodewrapper.nix
+++ b/pkgs/development/mobile/xcodeenv/xcodewrapper.nix
@@ -3,7 +3,7 @@
 stdenv.mkDerivation {
   name = "xcode-wrapper-"+version;
   buildCommand = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cd $out/bin
     ln -s /usr/bin/xcode-select
     ln -s /usr/bin/xcodebuild
diff --git a/pkgs/development/ocaml-modules/ocamlmake/default.nix b/pkgs/development/ocaml-modules/ocamlmake/default.nix
index 0170119d94e0..3f91901d9b64 100644
--- a/pkgs/development/ocaml-modules/ocamlmake/default.nix
+++ b/pkgs/development/ocaml-modules/ocamlmake/default.nix
@@ -14,7 +14,7 @@ in stdenv.mkDerivation {
   };
 
   installPhase = ''
-    ensureDir "$out/include/"
+    mkdir -p "$out/include/"
     cp OCamlMakefile "$out/include/"
   '';
 
diff --git a/pkgs/development/tools/apktool/default.nix b/pkgs/development/tools/apktool/default.nix
index a415ffd152d7..239416535755 100644
--- a/pkgs/development/tools/apktool/default.nix
+++ b/pkgs/development/tools/apktool/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
 
   installPhase = ''
     install -D apktool.jar "$out/libexec/apktool/apktool.jar"
-    ensureDir "$out/bin"
+    mkdir -p "$out/bin"
     makeWrapper "${jre}/bin/java" "$out/bin/apktool" \
         --add-flags "-jar $out/libexec/apktool/apktool.jar" \
         --prefix PATH : "${buildTools}/build-tools/android-4.3/"
diff --git a/pkgs/development/tools/literate-programming/noweb/default.nix b/pkgs/development/tools/literate-programming/noweb/default.nix
index 291bc29e1b70..4f8691c40adb 100644
--- a/pkgs/development/tools/literate-programming/noweb/default.nix
+++ b/pkgs/development/tools/literate-programming/noweb/default.nix
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
     sha256 = "10hdd6mrk26kyh4bnng4ah5h1pnanhsrhqa7qwqy6dyv3rng44y9";
   };
   preBuild = ''
-    ensureDir $out/lib/noweb
+    mkdir -p $out/lib/noweb
     cd src
     makeFlags="BIN=$out/bin LIB=$out/lib/noweb MAN=$out/share/man TEXINPUTS=$out/share/texmf/tex/latex"
   '';
diff --git a/pkgs/development/tools/misc/distcc/masq.nix b/pkgs/development/tools/misc/distcc/masq.nix
index 117480670c39..753c35b5d3a2 100644
--- a/pkgs/development/tools/misc/distcc/masq.nix
+++ b/pkgs/development/tools/misc/distcc/masq.nix
@@ -5,7 +5,7 @@ stdenv.mkDerivation {
 
   phases = [ "installPhase" ];
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
 
     bin=${gccRaw}/bin
 
diff --git a/pkgs/development/tools/misc/grafana/default.nix b/pkgs/development/tools/misc/grafana/default.nix
index 346c7fb6ad29..b1566684cf0b 100644
--- a/pkgs/development/tools/misc/grafana/default.nix
+++ b/pkgs/development/tools/misc/grafana/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   phases = ["unpackPhase" "installPhase"];
   installPhase = ''
-    ensureDir $out && cp -R * $out
+    mkdir -p $out && cp -R * $out
     ${optionalString (conf!=null) ''cp ${conf} $out/config.js''}
   '';
 
diff --git a/pkgs/development/tools/misc/opengrok/default.nix b/pkgs/development/tools/misc/opengrok/default.nix
index 8f77b3d7283a..d38c862ecfb1 100644
--- a/pkgs/development/tools/misc/opengrok/default.nix
+++ b/pkgs/development/tools/misc/opengrok/default.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ makeWrapper ];
 
   installPhase = ''
-    ensureDir $out
+    mkdir -p $out
     cp -a * $out/
     substituteInPlace $out/bin/OpenGrok --replace /bin/uname ${coreutils}/bin/uname
     wrapProgram $out/bin/OpenGrok \
diff --git a/pkgs/development/tools/node-webkit/default.nix b/pkgs/development/tools/node-webkit/default.nix
index be125801bd50..1c891ddf8765 100644
--- a/pkgs/development/tools/node-webkit/default.nix
+++ b/pkgs/development/tools/node-webkit/default.nix
@@ -33,8 +33,8 @@ in stdenv.mkDerivation rec {
   installPhase = let
     LD_LIBRARY_PATH = "${nwEnv}/lib:${nwEnv}/lib64:$out/share/node-webkit";
   in ''
-    ensureDir $out/bin
-    ensureDir $out/share/node-webkit
+    mkdir -p $out/bin
+    mkdir -p $out/share/node-webkit
     cp -R * $out/share/node-webkit
 
     ln -s ${udev}/lib/libudev.so $out/share/node-webkit/libudev.so.0
diff --git a/pkgs/development/tools/ocaml/deriving/default.nix b/pkgs/development/tools/ocaml/deriving/default.nix
index d53f41b5da5c..55bbf3748ea9 100644
--- a/pkgs/development/tools/ocaml/deriving/default.nix
+++ b/pkgs/development/tools/ocaml/deriving/default.nix
@@ -52,7 +52,7 @@ versionedDerivation "ocaml-deriving" version {
     # not all tests compile !?
     # (cd tests; make)
 
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp -a lib $out/
     cp -a syntax $out
 
diff --git a/pkgs/development/tools/yuicompressor/default.nix b/pkgs/development/tools/yuicompressor/default.nix
index 5dcc30811e22..1a5485af541d 100644
--- a/pkgs/development/tools/yuicompressor/default.nix
+++ b/pkgs/development/tools/yuicompressor/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
   };
 
   buildCommand = ''
-    ensureDir $out/lib
+    mkdir -p $out/lib
     ln -s $src $out/lib/yuicompressor.jar
   '';
 }
diff --git a/pkgs/games/0ad/default.nix b/pkgs/games/0ad/default.nix
index efbd59dbbe3f..39124d28f0a2 100644
--- a/pkgs/games/0ad/default.nix
+++ b/pkgs/games/0ad/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, stdenvType, callPackage, fetchurl, python27
+{ stdenv, callPackage, fetchurl, python27
 , pkgconfig, spidermonkey_24, boost, icu, libxml2, libpng
 , libjpeg, zlib, curl, libogg, libvorbis, enet, miniupnpc
 , openalSoft, mesa, xproto, libX11, libXcursor, nspr, SDL
@@ -16,8 +16,8 @@ let
   zeroadData = callPackage ./data.nix { inherit version releaseType; };
 
   archForPremake =
-    if stdenv.lib.hasPrefix "x86_64-" stdenvType then "x64" else
-    if stdenv.lib.hasPrefix "i686-" stdenvType then "x32" else "ERROR";
+    if stdenv.lib.hasPrefix "x86_64-" stdenv.system then "x64" else
+    if stdenv.lib.hasPrefix "i686-" stdenv.system then "x32" else "ERROR";
 
 in
 stdenv.mkDerivation rec {
diff --git a/pkgs/games/andyetitmoves/default.nix b/pkgs/games/andyetitmoves/default.nix
index cf3f6e1563b8..ec14325e3d9e 100644
--- a/pkgs/games/andyetitmoves/default.nix
+++ b/pkgs/games/andyetitmoves/default.nix
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
   phases = "unpackPhase installPhase";
 
   installPhase = ''
-    ensureDir $out/{opt/andyetitmoves,bin}
+    mkdir -p $out/{opt/andyetitmoves,bin}
     cp -r * $out/opt/andyetitmoves/
 
     fullPath=${stdenv.gcc.gcc}/lib64
diff --git a/pkgs/games/crafty/default.nix b/pkgs/games/crafty/default.nix
index 54deae2ecfe1..0e2796df22d8 100644
--- a/pkgs/games/crafty/default.nix
+++ b/pkgs/games/crafty/default.nix
@@ -621,10 +621,10 @@ stdenv.mkDerivation rec {
            else "make";
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp -p ./crafty $out/bin
 
-    ensureDir $out/share/crafty
+    mkdir -p $out/share/crafty
     cd $out/share/crafty
 
     $out/bin/crafty "books create ${startPgn} 60"
@@ -635,7 +635,7 @@ stdenv.mkDerivation rec {
         $out/bin/crafty "book create enormous.pgn 60"
         rm -f *.001 enormous.pgn
         
-        ensureDir $out/share/crafty/TB
+        mkdir -p $out/share/crafty/TB
         ${stdenv.lib.fold
           (tb: acc: acc + "\nln -s "
                         + toString tb
diff --git a/pkgs/games/gsb/default.nix b/pkgs/games/gsb/default.nix
index 52c3830c22a4..757d3cf7681e 100644
--- a/pkgs/games/gsb/default.nix
+++ b/pkgs/games/gsb/default.nix
@@ -32,8 +32,8 @@ stdenv.mkDerivation rec {
     + ":" + stdenv.gcc.gcc + "/lib64";
 
   installPhase = ''
-    ensureDir $out/libexec/positech/GSB/
-    ensureDir $out/bin
+    mkdir -p $out/libexec/positech/GSB/
+    mkdir -p $out/bin
 
     patchelf \
       --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \
diff --git a/pkgs/games/openlierox/default.nix b/pkgs/games/openlierox/default.nix
index 0c7e46ae0740..ede7b6fdac43 100644
--- a/pkgs/games/openlierox/default.nix
+++ b/pkgs/games/openlierox/default.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation {
   '';
 
   installPhase = ''
-    ensureDir $out/bin $out/share/OpenLieroX
+    mkdir -p $out/bin $out/share/OpenLieroX
     cp bin/* $out/bin
     cp -R ../share/gamedir/* $out/share/OpenLieroX
   '';
diff --git a/pkgs/games/opentyrian/default.nix b/pkgs/games/opentyrian/default.nix
index 6b9c48473673..cfae6a4bb3e8 100644
--- a/pkgs/games/opentyrian/default.nix
+++ b/pkgs/games/opentyrian/default.nix
@@ -22,9 +22,9 @@ stdenv.mkDerivation rec {
   ";
   buildPhase = "make release";
   installPhase = "
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp ./opentyrian $out/bin
-    ensureDir $out/share/opentyrian/data
+    mkdir -p $out/share/opentyrian/data
     unzip -j $data -d $out/share/opentyrian/data
   ";
 
diff --git a/pkgs/games/vessel/default.nix b/pkgs/games/vessel/default.nix
index 9b9dd6c1f43f..8a92490b6e0c 100644
--- a/pkgs/games/vessel/default.nix
+++ b/pkgs/games/vessel/default.nix
@@ -24,8 +24,8 @@ stdenv.mkDerivation rec {
     + ":" + stdenv.lib.makeLibraryPath [ SDL pulseaudio alsaLib ] ;
 
   installPhase = ''
-    ensureDir $out/libexec/strangeloop/vessel/
-    ensureDir $out/bin
+    mkdir -p $out/libexec/strangeloop/vessel/
+    mkdir -p $out/bin
 
     # allow scripting of the mojoinstaller
     gcc -fPIC -shared -o isatty.so $ld_preload
diff --git a/pkgs/games/worldofgoo/default.nix b/pkgs/games/worldofgoo/default.nix
index 13e7e487c8f0..c39ffb1de058 100644
--- a/pkgs/games/worldofgoo/default.nix
+++ b/pkgs/games/worldofgoo/default.nix
@@ -50,8 +50,8 @@ stdenv.mkDerivation rec {
     + ":" + stdenv.gcc.gcc + "/lib64";
 
   installPhase = ''
-    ensureDir $out/libexec/2dboy/WorldOfGoo/
-    ensureDir $out/bin
+    mkdir -p $out/libexec/2dboy/WorldOfGoo/
+    mkdir -p $out/bin
 
     patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" --set-rpath $libPath ./WorldOfGoo.bin64
 
diff --git a/pkgs/misc/emulators/bsod/default.nix b/pkgs/misc/emulators/bsod/default.nix
index 181a89b66677..a6cb42d5c679 100644
--- a/pkgs/misc/emulators/bsod/default.nix
+++ b/pkgs/misc/emulators/bsod/default.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
   buildInputs = [ ncurses ];
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp bsod $out/bin
   '';
 
diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix
index 976e4dc687f3..4bc9a11a5894 100644
--- a/pkgs/misc/vim-plugins/default.nix
+++ b/pkgs/misc/vim-plugins/default.nix
@@ -89,7 +89,7 @@ let vimHelpTags = ''
 
     installPhase = ''
       target=$out/vim-plugins/$path
-      ensureDir $out/vim-plugins
+      mkdir -p $out/vim-plugins
       cp -r . $target
       ${vimHelpTags}
       vimHelpTags $target
diff --git a/pkgs/os-specific/darwin/xcode/default.nix b/pkgs/os-specific/darwin/xcode/default.nix
index 73585d59c0b3..2a48590154e4 100644
--- a/pkgs/os-specific/darwin/xcode/default.nix
+++ b/pkgs/os-specific/darwin/xcode/default.nix
@@ -31,12 +31,12 @@ in stdenv.mkDerivation rec {
   patches = optional (osxVersion == "10.9") ./gcc-fix-enum-attributes.patch;
 
   installPhase = ''
-    ensureDir "$out/share/sysroot"
+    mkdir -p "$out/share/sysroot"
     cp -a * "$out/share/sysroot/"
     ln -s "$out/share/sysroot/usr/lib" "$out/lib"
     ln -s "$out/share/sysroot/usr/include" "$out/include"
 
-    ensureDir "$toolchain"
+    mkdir -p "$toolchain"
     pushd "$toolchain"
     ${xpwn}/bin/hfsplus "$(dirs +1)/../main.hfs" extractall \
       Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr \
diff --git a/pkgs/os-specific/linux/apparmor/default.nix b/pkgs/os-specific/linux/apparmor/default.nix
index 12173e20f3f9..8048419a93ba 100644
--- a/pkgs/os-specific/linux/apparmor/default.nix
+++ b/pkgs/os-specific/linux/apparmor/default.nix
@@ -48,7 +48,7 @@ stdenv.mkDerivation rec {
     make
     make check
     make install
-    ensureDir $out/lib/perl5/site_perl/
+    mkdir -p $out/lib/perl5/site_perl/
     cp swig/perl/LibAppArmor.pm $out/lib/perl5/site_perl/
     cp swig/perl/LibAppArmor.bs $out/lib/perl5/site_perl/
     # this is automatically copied elsewhere....
diff --git a/pkgs/os-specific/linux/bbswitch/default.nix b/pkgs/os-specific/linux/bbswitch/default.nix
index e12c80e08864..6c7d6d5330e2 100644
--- a/pkgs/os-specific/linux/bbswitch/default.nix
+++ b/pkgs/os-specific/linux/bbswitch/default.nix
@@ -22,10 +22,10 @@ stdenv.mkDerivation {
   '';
 
   installPhase = ''
-    ensureDir $out/lib/modules/${kernel.modDirVersion}/misc
+    mkdir -p $out/lib/modules/${kernel.modDirVersion}/misc
     cp bbswitch.ko $out/lib/modules/${kernel.modDirVersion}/misc
 
-    ensureDir $out/bin
+    mkdir -p $out/bin
     tee $out/bin/discrete_vga_poweroff << EOF
     #!/bin/sh
 
diff --git a/pkgs/os-specific/linux/frandom/default.nix b/pkgs/os-specific/linux/frandom/default.nix
index 419207882f83..1814a72667a6 100644
--- a/pkgs/os-specific/linux/frandom/default.nix
+++ b/pkgs/os-specific/linux/frandom/default.nix
@@ -20,10 +20,10 @@ stdenv.mkDerivation rec {
  
   installPhase = ''
     kernelVersion=${kernel.modDirVersion}
-    ensureDir $out/lib/modules/$kernelVersion/misc
+    mkdir -p $out/lib/modules/$kernelVersion/misc
     cp frandom.ko $out/lib/modules/$kernelVersion/misc
 
-    ensureDir $out/lib/udev/rules.d
+    mkdir -p $out/lib/udev/rules.d
     tee $out/lib/udev/rules.d/10-frandom.rules <<-EOF
     #
     # These are the rules for the frandom devices. In theory, we could let
diff --git a/pkgs/os-specific/linux/gogoclient/default.nix b/pkgs/os-specific/linux/gogoclient/default.nix
index 09a449bbede9..a627a8cbcc94 100644
--- a/pkgs/os-specific/linux/gogoclient/default.nix
+++ b/pkgs/os-specific/linux/gogoclient/default.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
   buildInputs = [openssl];
 
   preFixup = ''
-    ensureDir $out/share/${name}
+    mkdir -p $out/share/${name}
     chmod 444 $out/bin/gogoc.conf
     mv $out/bin/gogoc.conf $out/share/${name}/gogoc.conf.sample
     rm $out/bin/gogoc.conf.sample
diff --git a/pkgs/os-specific/linux/google-authenticator/default.nix b/pkgs/os-specific/linux/google-authenticator/default.nix
index a9278f0c7ce0..7667b330f231 100644
--- a/pkgs/os-specific/linux/google-authenticator/default.nix
+++ b/pkgs/os-specific/linux/google-authenticator/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    ensureDir $out/bin $out/lib/security
+    mkdir -p $out/bin $out/lib/security
     cp pam_google_authenticator.so $out/lib/security
     cp google-authenticator $out/bin
   '';
diff --git a/pkgs/os-specific/linux/i7z/default.nix b/pkgs/os-specific/linux/i7z/default.nix
index 33ac05aef478..80e43f17b3c6 100644
--- a/pkgs/os-specific/linux/i7z/default.nix
+++ b/pkgs/os-specific/linux/i7z/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    ensureDir $out/sbin
+    mkdir -p $out/sbin
     make install prefix=$out
     install -Dm755 GUI/i7z_GUI $out/sbin/i7z-gui
   '';
diff --git a/pkgs/os-specific/linux/mcelog/default.nix b/pkgs/os-specific/linux/mcelog/default.nix
index 5c36bb097812..463722d2c961 100644
--- a/pkgs/os-specific/linux/mcelog/default.nix
+++ b/pkgs/os-specific/linux/mcelog/default.nix
@@ -26,7 +26,7 @@ in stdenv.mkDerivation {
   makeFlags = "prefix=$(out) etcprefix=$(out) DOCDIR=$(out)/share/doc";
 
   preInstall = ''
-    ensureDir $out/share/doc
+    mkdir -p $out/share/doc
   '';
 
   meta = {
diff --git a/pkgs/os-specific/linux/microcode/converter.nix b/pkgs/os-specific/linux/microcode/converter.nix
index 49babc6ca57b..da4d96772171 100644
--- a/pkgs/os-specific/linux/microcode/converter.nix
+++ b/pkgs/os-specific/linux/microcode/converter.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation {
   '';
 
   installPhase = ''
-    ensureDir "$out/bin"
+    mkdir -p "$out/bin"
     cp intel-microcode2ucode "$out/bin/"
   '';
 
diff --git a/pkgs/os-specific/linux/netatop/default.nix b/pkgs/os-specific/linux/netatop/default.nix
index a863ee8a4d04..e1cdd919e935 100644
--- a/pkgs/os-specific/linux/netatop/default.nix
+++ b/pkgs/os-specific/linux/netatop/default.nix
@@ -22,8 +22,8 @@ stdenv.mkDerivation {
   '';
 
   preInstall = ''
-    ensureDir $out/bin $out/sbin $out/share/man/man{4,8}
-    ensureDir $out/lib/modules/${kernel.modDirVersion}/extra
+    mkdir -p $out/bin $out/sbin $out/share/man/man{4,8}
+    mkdir -p $out/lib/modules/${kernel.modDirVersion}/extra
   '';
       
   meta = {
diff --git a/pkgs/os-specific/linux/otpw/default.nix b/pkgs/os-specific/linux/otpw/default.nix
index fe5f938b75b3..c270f0dd0c69 100644
--- a/pkgs/os-specific/linux/otpw/default.nix
+++ b/pkgs/os-specific/linux/otpw/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    ensureDir $out/bin $out/lib/security $out/share/man/man{1,8}
+    mkdir -p $out/bin $out/lib/security $out/share/man/man{1,8}
     cp pam_*.so $out/lib/security
     cp otpw-gen $out/bin
     cp *.1 $out/share/man/man1
diff --git a/pkgs/os-specific/linux/rfkill/udev.nix b/pkgs/os-specific/linux/rfkill/udev.nix
index 6cf6e4adfa07..054ed471eaaf 100644
--- a/pkgs/os-specific/linux/rfkill/udev.nix
+++ b/pkgs/os-specific/linux/rfkill/udev.nix
@@ -31,12 +31,12 @@ stdenv.mkDerivation {
   dontBuild = true;
 
   installPhase = ''
-    ensureDir "$out/etc/udev/rules.d/";
+    mkdir -p "$out/etc/udev/rules.d/";
     cat > "$out/etc/udev/rules.d/90-rfkill.rules" << EOF
       SUBSYSTEM=="rfkill", ATTR{type}=="wlan", RUN+="$out/bin/rfkill-hook.sh" 
     EOF
 
-    ensureDir "$out/bin/";
+    mkdir -p "$out/bin/";
     cp ${./rfkill-hook.sh} "$out/bin/rfkill-hook.sh"
     chmod +x "$out/bin/rfkill-hook.sh";
   '';
diff --git a/pkgs/os-specific/linux/util-linux/default.nix b/pkgs/os-specific/linux/util-linux/default.nix
index cdc384f3ee8c..1dd7c0c089fa 100644
--- a/pkgs/os-specific/linux/util-linux/default.nix
+++ b/pkgs/os-specific/linux/util-linux/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, zlib, ncurses ? null, perl ? null, pam }:
 
 stdenv.mkDerivation rec {
-  name = "util-linux-2.24.1";
+  name = "util-linux-2.24.2";
 
   src = fetchurl {
     url = "http://www.kernel.org/pub/linux/utils/util-linux/v2.24/${name}.tar.xz";
-    sha256 = "0444xhfm9525v3aagyfbp38mp7xsw2fn9zg4ya713c7s5hivcpl3";
+    sha256 = "1w0g8q5aj5pjdf8l52g0mxyvlk62f4dch51q9jm3hnqwgz0dchqj";
   };
 
   crossAttrs = {
diff --git a/pkgs/os-specific/linux/x86info/default.nix b/pkgs/os-specific/linux/x86info/default.nix
index 6cd2a431a605..eaec63f98bfc 100644
--- a/pkgs/os-specific/linux/x86info/default.nix
+++ b/pkgs/os-specific/linux/x86info/default.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ pciutils python ];
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp x86info lsmsr $out/bin
   '';
 
diff --git a/pkgs/servers/dict/dictd-wiktionary.nix b/pkgs/servers/dict/dictd-wiktionary.nix
index 9e9c05d2f915..370bfd39137a 100644
--- a/pkgs/servers/dict/dictd-wiktionary.nix
+++ b/pkgs/servers/dict/dictd-wiktionary.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   builder = writeScript "wiktionary-builder.sh" ''
     source $stdenv/setup
 
-    ensureDir $out/share/dictd/
+    mkdir -p $out/share/dictd/
     cd $out/share/dictd
 
     export LOCALE_ARCHIVE=${glibcLocales}/lib/locale/locale-archive
diff --git a/pkgs/servers/dict/dictd-wordnet.nix b/pkgs/servers/dict/dictd-wordnet.nix
index 063868ddc6e8..b6680e8b21c4 100644
--- a/pkgs/servers/dict/dictd-wordnet.nix
+++ b/pkgs/servers/dict/dictd-wordnet.nix
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
 
   builder = writeScript "builder.sh" ''
     . ${stdenv}/setup
-    ensureDir $out/share/dictd/
+    mkdir -p $out/share/dictd/
     cd $out/share/dictd
 
     for i in ${wordnet}/dict/data.*; do
diff --git a/pkgs/servers/http/thttpd/default.nix b/pkgs/servers/http/thttpd/default.nix
index e03183cbe49d..0bb3d96b37b7 100644
--- a/pkgs/servers/http/thttpd/default.nix
+++ b/pkgs/servers/http/thttpd/default.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   '';
 
   preInstall = ''
-    ensureDir "$out/man/man1"
+    mkdir -p "$out/man/man1"
     sed -i -e 's/-o bin -g bin *//' Makefile
     sed -i -e '/chgrp/d' extras/Makefile
   '';
diff --git a/pkgs/servers/monitoring/seyren/default.nix b/pkgs/servers/monitoring/seyren/default.nix
index 541c377c4049..e6e151295687 100644
--- a/pkgs/servers/monitoring/seyren/default.nix
+++ b/pkgs/servers/monitoring/seyren/default.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ makeWrapper jre src ];
 
   installPhase = ''
-    ensureDir "$out"/bin
+    mkdir -p "$out"/bin
     makeWrapper "${jre}/bin/java" "$out"/bin/seyren --add-flags "-jar $src"
   '';
 
diff --git a/pkgs/servers/nosql/influxdb/default.nix b/pkgs/servers/nosql/influxdb/default.nix
index fa9c48c6ea92..77852b6d2ed9 100644
--- a/pkgs/servers/nosql/influxdb/default.nix
+++ b/pkgs/servers/nosql/influxdb/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     wrapProgram "$out/bin/influxdb" \
         --prefix LD_LIBRARY_PATH : "${stdenv.gcc.gcc}/lib:${stdenv.gcc.gcc}/lib64"
 
-    ensureDir $out/share/influxdb
+    mkdir -p $out/share/influxdb
     cp -R admin scripts config.toml $out/share/influxdb
   '';
 
diff --git a/pkgs/servers/serfdom/default.nix b/pkgs/servers/serfdom/default.nix
index 40b41c8f9d39..2c11372ee316 100644
--- a/pkgs/servers/serfdom/default.nix
+++ b/pkgs/servers/serfdom/default.nix
@@ -16,12 +16,12 @@ stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     mv serf $out/bin/serf
   '';
 
   meta = with stdenv.lib; {
-    description = "Serf is a service discovery and orchestration tool that is decentralized, highly available, and fault tolerant";
+    description = "A service discovery and orchestration tool that is decentralized, highly available, and fault tolerant";
     homepage = http://www.serfdom.io/;
     license = licenses.mpl20;
     maintainers = with maintainers; [ msackman cstrahan ];
diff --git a/pkgs/shells/bash/bash-4.2-patches.nix b/pkgs/shells/bash/bash-4.2-patches.nix
index ac6e9e97f180..567ec3c551cf 100644
--- a/pkgs/shells/bash/bash-4.2-patches.nix
+++ b/pkgs/shells/bash/bash-4.2-patches.nix
@@ -46,4 +46,6 @@ patch: [
 (patch "043" "0mswgjk3z80qm1mb93jmbql27nbczxk86cw5byf0m29y1y2869nw")
 (patch "044" "1rk6jywzfvg1crvhib1zk37rsps73minhr7l4vcb3vfdkin2vlqh")
 (patch "045" "0vcqn9rb26bahhrarbwhpa0ny0nrf4vyrzh97d44lfcxypqfzdyx")
+(patch "046" "0vc1ngkxkamwr022ww3vjp9ww9c647az4pjn175c1v60d0xk5hcm")
+(patch "047" "0ymgimqz65sx2izg1dvm1h5cc01arl3j9j5137212l1ls00r55y1")
 ]
diff --git a/pkgs/stdenv/default.nix b/pkgs/stdenv/default.nix
index a2723f5575c0..47d1fb6d9f75 100644
--- a/pkgs/stdenv/default.nix
+++ b/pkgs/stdenv/default.nix
@@ -5,14 +5,7 @@
 # Posix utilities, the GNU C compiler, and so on.  On other systems,
 # we use the native C library.
 
-
-# stdenvType exists to support multiple kinds of stdenvs on the same
-# system, e.g., cygwin and mingw builds on i686-cygwin.  Most people
-# can ignore it.
-
-{ system, stdenvType ? system, allPackages ? import ../.., platform, config }:
-
-assert system != "i686-cygwin" -> system == stdenvType;
+{ system, allPackages ? import ../.., platform, config }:
 
 
 rec {
@@ -45,23 +38,16 @@ rec {
   stdenvLinux = (import ./linux { inherit system allPackages platform config;}).stdenvLinux;
 
 
-  # MinGW/MSYS standard environment.
-  stdenvMinGW = import ./mingw {
-    inherit system;
-  };
-
-
   # Select the appropriate stdenv for the platform `system'.
   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 == "armv6l-linux" then stdenvLinux else
-    if stdenvType == "armv7l-linux" then stdenvLinux else
-    if stdenvType == "mips64el-linux" then stdenvLinux else
-    if stdenvType == "powerpc-linux" then /* stdenvLinux */ stdenvNative else
-    if stdenvType == "i686-mingw" then stdenvMinGW else
-    if stdenvType == "x86_64-darwin" then stdenvNix else
-    if stdenvType == "x86_64-solaris" then stdenvNix else
+    if system == "i686-linux" then stdenvLinux else
+    if system == "x86_64-linux" then stdenvLinux else
+    if system == "armv5tel-linux" then stdenvLinux else
+    if system == "armv6l-linux" then stdenvLinux else
+    if system == "armv7l-linux" then stdenvLinux else
+    if system == "mips64el-linux" then stdenvLinux else
+    if system == "powerpc-linux" then /* stdenvLinux */ stdenvNative else
+    if system == "x86_64-darwin" then stdenvNix else
+    if system == "x86_64-solaris" then stdenvNix else
     stdenvNative;
 }
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index 6047ecf853c5..0d8355e89cc3 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -55,8 +55,6 @@ let
 
       propagatedUserEnvPkgs = [gcc] ++
         lib.filter lib.isDerivation initialPath;
-
-      __ignoreNulls = true;
     }
 
     // rec {
@@ -103,6 +101,7 @@ let
               stdenv = result;
               system = result.system;
               userHook = config.stdenv.userHook or null;
+              __ignoreNulls = true;
 
               # Inputs built by the cross compiler.
               buildInputs = lib.optionals (crossConfig != null) (buildInputs ++ extraBuildInputs);
diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh
index ce83b1f69610..4f78713a5494 100644
--- a/pkgs/stdenv/generic/setup.sh
+++ b/pkgs/stdenv/generic/setup.sh
@@ -120,6 +120,7 @@ fi
 
 # Ensure that the given directories exists.
 ensureDir() {
+    echo "warning: ‘ensureDir’ is deprecated; use ‘mkdir’ instead" >&2
     local dir
     for dir in "$@"; do
         if ! [ -x "$dir" ]; then mkdir -p "$dir"; fi
diff --git a/pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix b/pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix
index 9ea63a46be3e..3abffc469269 100644
--- a/pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix
+++ b/pkgs/stdenv/linux/make-bootstrap-tools-crosspi.nix
@@ -116,7 +116,7 @@ rec {
 
       buildCommand = ''
 	set -x
-        ensureDir $out/bin $out/lib $out/libexec
+        mkdir -p $out/bin $out/lib $out/libexec
 
         # Copy what we need of Glibc.
         cp -d ${glibc}/lib/ld-*.so* $out/lib
diff --git a/pkgs/stdenv/mingw/builder.sh b/pkgs/stdenv/mingw/builder.sh
deleted file mode 100755
index 5a9f9749a4f8..000000000000
--- a/pkgs/stdenv/mingw/builder.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-# the other stdenv could change the SHELL variable,
-# so we have to remember its value.
-origShell=$SHELL
-origGcc=$GCC
-
-source $STDENV/setup
-
-mkdir $OUT
-
-SHELL=$origShell
-GCC=$origGcc
-
-export NIX_BUILD_TOP=$(pwd)
-
-substitute "$SETUP" "$OUT/setup" \
-    --subst-var INITIALPATH \
-    --subst-var GCC \
-    --subst-var SHELL
diff --git a/pkgs/stdenv/mingw/cygpath/builder.sh b/pkgs/stdenv/mingw/cygpath/builder.sh
deleted file mode 100755
index 3061900ee0c9..000000000000
--- a/pkgs/stdenv/mingw/cygpath/builder.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-source $stdenv/setup
-
-mkdir $out
-result="$(cygpath --mixed $path)"
-echo "\"$result\"" > $out/default.nix
diff --git a/pkgs/stdenv/mingw/cygpath/default.nix b/pkgs/stdenv/mingw/cygpath/default.nix
deleted file mode 100644
index a0554c1d41de..000000000000
--- a/pkgs/stdenv/mingw/cygpath/default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-{stdenv}: path :
-
-import (
-  stdenv.mkDerivation {
-    name = "cygpath";
-    builder = ./builder.sh;
-    inherit path;
-  }
-)
diff --git a/pkgs/stdenv/mingw/default-builder.sh b/pkgs/stdenv/mingw/default-builder.sh
deleted file mode 100755
index 422699971ed6..000000000000
--- a/pkgs/stdenv/mingw/default-builder.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-source $STDENV/setup
-genericBuild
diff --git a/pkgs/stdenv/mingw/default.nix b/pkgs/stdenv/mingw/default.nix
deleted file mode 100644
index 947db5f10a89..000000000000
--- a/pkgs/stdenv/mingw/default.nix
+++ /dev/null
@@ -1,233 +0,0 @@
-{system} :
-
-let {
-  body =
-    stdenvFinal;
-
-  /**
-   * Initial standard environment based on native Cygwin tools.
-   * GCC is not required.
-   * Required (approx): bash, mkdir, gnu tar, curl.
-   */
-  stdenvInit1 =
-    import ./simple-stdenv {
-      inherit system;
-      name = "stdenv-init1-mingw";
-      shell = "/bin/bash.exe";
-      path = ["/usr/bin" "/bin" "/usr/local/bin"];
-    };
-
-  /**
-   * Initial standard environment based on MSYS tools.
-   */
-  stdenvInit2 =
-    import ./simple-stdenv {
-      inherit system;
-      name = "stdenv-init2-mingw";
-      shell = msysShell;
-      path = [(msys + "/bin")];
-    };
-
-  /**
-   * Initial standard environment with the most basic MinGW packages.
-   */
-  stdenvInit3 =
-    (import ./simple-stdenv) {
-      inherit system;
-      name = "stdenv-init3-mingw";
-      shell = msysShell;
-      path = [
-        (make + "/bin")
-        (tar + "/bin")
-        (binutils + "/bin")
-        (gccFull + "/bin")
-        (mingwRuntimeBin + "/bin")
-        (w32apiBin + "/bin")
-        (msys + "/bin")
-      ];
-
-      extraEnv = {
-        C_INCLUDE_PATH = mingwRuntimeBin + "/include" + ":" + w32apiBin + "/include";
-        LIBRARY_PATH = mingwRuntimeBin + "/lib" + ":" + w32apiBin + "/lib";
-      };
-    };
-
-  /**
-   * Final standard environment, based on generic stdenv.
-   * It would be better to make the generic stdenv usable on
-   * MINGW (i.e. make all environment variables CAPS).
-   */
-  stdenvFinal =
-    let {
-      body =
-        stdenv // mkDerivationFun // {
-          inherit fetchurl;
-          overrides.pkgconfig = pkgconfigBin;
-        };
-
-      shell =
-        msys + "/bin/sh.exe";
-
-      stdenv =
-        stdenvInit2.mkDerivation {
-          name = "stdenv-mingw";
-          builder = ./builder.sh;
-          setup = ./setup.sh;
-
-          /**
-           * binutils is on the path because it contains dlltool, which
-           * is invoked on the PATH by some packages.
-           */
-          initialPath = [make tar binutils gccFull mingwRuntimeSrc w32apiSrc msys];
-          gcc = gccFull;
-          shell = msysShell;
-          inherit curl;
-          isDarwin = false;
-          isMinGW = true;
-        };
-
-      mkDerivationFun = {
-        mkDerivation = attrs:
-          (derivation (
-            (removeAttrs attrs ["meta"])
-            //
-            {
-              builder =
-                if attrs ? realBuilder then attrs.realBuilder else shell;
-              args =
-                if attrs ? args then
-                  attrs.args
-                 else
-                  ["-e"] ++ (
-                    if attrs ? builder then
-                      [./fix-builder.sh attrs.builder]
-                    else
-                      [./fix-builder.sh ./default-builder.sh]
-                    );
-              inherit stdenv system;
-              C_INCLUDE_PATH = mingwRuntimeSrc + "/include" + ":" + w32apiSrc + "/include";
-              CPLUS_INCLUDE_PATH = mingwRuntimeSrc + "/include" + ":" + w32apiSrc + "/include";
-              LIBRARY_PATH = mingwRuntimeSrc + "/lib" + ":" + w32apiSrc + "/lib";
-            })
-          )
-          // { meta = if attrs ? meta then attrs.meta else {}; };
-       };
-     };
-
-  /**
-   * fetchurl
-   */
-  fetchurlInit1 =
-    import ../../build-support/fetchurl {
-      stdenv = stdenvInit1;
-      curl =
-        (import ./pkgs).curl {
-          stdenv = stdenvInit1;
-        };
-    };
-
-  cygpath =
-    import ./cygpath {
-      stdenv = stdenvInit1;
-    };
-
-  /**
-   * Hack: we need the cygpath of the Cygwin chmod.
-   */
-  fetchurl =
-    import ./fetchurl {
-      stdenv = stdenvInit2;
-      curl = curl + "/bin/curl.exe";
-      chmod = cygpath "/usr/bin/chmod";
-    };
-
-  /**
-   * MSYS, installed using stdenvInit1
-   *
-   * @todo Maybe remove the make of msys?
-   */
-  msys =
-    stdenvInit1.mkDerivation {
-      name = "msys-1.0.11";
-      builder = ./msys-builder.sh;
-      src =
-        fetchurlInit1 {
-          url = ftp://ftp.strategoxt.org/pub/mingw/msys-1.0.11.tar.gz;
-          sha256 = "08qp4jk279i66q6ngksg58fx3cfv1r6p5n394h2kfrs56qs9zvz4";
-        };
-    };
-
-  msysShell = 
-    msys + "/bin/sh.exe";
-
-  /**
-   * Binary packages, based on stdenvInit2
-   */
-  curl =
-    (import ./pkgs).curl {
-      stdenv = stdenvInit2;
-    };
-
-  gccFull =
-    (import ./pkgs).gccFull {
-      stdenv = stdenvInit2;
-      inherit fetchurl;
-    };
-
-  make =
-   (import ./pkgs).make {
-     stdenv = stdenvInit2;
-     inherit fetchurl;
-   };
-
-  tar =
-   (import ./pkgs).tar {
-     stdenv = stdenvInit2;
-     inherit fetchurl;
-   };
-
-  binutils =
-   (import ./pkgs).binutils {
-     stdenv = stdenvInit2;
-     inherit fetchurl;
-    };
-
-  mingwRuntimeBin =
-    (import ./pkgs).mingwRuntimeBin {
-      stdenv = stdenvInit2;
-      inherit fetchurl;
-    };
-
-  w32apiBin =
-    (import ./pkgs).w32apiBin {
-      stdenv = stdenvInit2;
-      inherit fetchurl;
-    };
-
-  pkgconfigBin =
-    (import ./pkgs).pkgconfigBin {
-      stdenv = stdenvInit3;
-      inherit fetchurl;
-    };
-
-  /**
-   * Source packages, based on stdenvInit3
-   */
-  mingwRuntimeSrc =
-    (import ./pkgs).mingwRuntimeSrc {
-      stdenv = stdenvInit3;
-      inherit fetchurl;
-    };
-
-  w32apiSrc =
-    (import ./pkgs).w32apiSrc {
-      stdenv = stdenvInit3;
-      inherit fetchurl;
-    };
-
-  replace =
-    (import ./pkgs).replace {
-      stdenv = stdenvInit3;
-      inherit fetchurl;
-    };
-}
diff --git a/pkgs/stdenv/mingw/fetchurl/builder.sh b/pkgs/stdenv/mingw/fetchurl/builder.sh
deleted file mode 100755
index e9f2669a097f..000000000000
--- a/pkgs/stdenv/mingw/fetchurl/builder.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-if test -z "$out"; then
-  stdenv="$STDENV"
-  url="$URL"
-  id="$ID"
-  outputHashAlgo="$OUTPUTHASHALGO"
-  outputHash="$OUTPUTHASH"
-  chmod=$CHMOD
-  curl=$CURL
-fi
-
-source $stdenv/setup
-
-if test -z "$out"; then
-  out="$OUT"
-fi
-
-header "downloading $out from $url"
-$curl --fail --location --max-redirs 20 "$url" > "$out"
-
-if test "$NIX_OUTPUT_CHECKED" != "1"; then
-    if test "$outputHashAlgo" != "md5"; then
-        echo "hashes other than md5 are unsupported in Nix <= 0.7, upgrade to Nix 0.8"
-        exit 1
-    fi
-    actual=$(md5sum -b "$out" | cut -c1-32)
-    if test "$actual" != "$id"; then
-        echo "hash is $actual, expected $id"
-        exit 1
-    fi
-fi
-
-$chmod a-x $out
-
-stopNest
diff --git a/pkgs/stdenv/mingw/fetchurl/default.nix b/pkgs/stdenv/mingw/fetchurl/default.nix
deleted file mode 100644
index b4d278b2686f..000000000000
--- a/pkgs/stdenv/mingw/fetchurl/default.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-{stdenv, curl, chmod}:
-
-{url, outputHash ? "", outputHashAlgo ? "", md5 ? "", sha1 ? "", sha256 ? ""}:
-
-assert (outputHash != "" && outputHashAlgo != "")
-    || md5 != "" || sha1 != "" || sha256 != "";
-
-stdenv.mkDerivation {
-  name = baseNameOf (toString url);
-  builder = ./builder.sh;
-
-  # Compatibility with Nix <= 0.7.
-  id = md5;
-
-  # New-style output content requirements.
-  outputHashAlgo = if outputHashAlgo != "" then outputHashAlgo else
-      if sha256 != "" then "sha256" else if sha1 != "" then "sha1" else "md5";
-  outputHash = if outputHash != "" then outputHash else
-      if sha256 != "" then sha256 else if sha1 != "" then sha1 else md5;
-  
-  inherit url chmod curl;
-
-  # We borrow these environment variables from the caller to allow
-  # easy proxy configuration.  This is impure, but a fixed-output
-  # derivation like fetchurl is allowed to do so since its result is
-  # by definition pure.
-  impureEnvVars = ["http_proxy" "https_proxy" "ftp_proxy" "all_proxy" "no_proxy"];
-}
diff --git a/pkgs/stdenv/mingw/fix-builder.sh b/pkgs/stdenv/mingw/fix-builder.sh
deleted file mode 100755
index 09d933bd17b2..000000000000
--- a/pkgs/stdenv/mingw/fix-builder.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-# Workaround MSYS shell problem
-
-if test -z "$out"; then
-  buildInputs=$BUILDINPUTS
-  buildUtilities=$BUILDUTILITIES
-  configureFlags=$CONFIGUREFLAGS
-  doCheck=$DOCHECK
-  doCoverageAnalysis=$DOCOVERAGEANALYSIS
-  dontInstall=$DONTINSTALL
-  dontLogThroughTee=$DONTLOGTHROUGHTEE
-  lcov=$LCOV
-  logPhases=$LOGPHASES
-  out=$OUT
-  patches=$PATCHES
-  propagatedBuildInputs=$PROPAGATEDBUILDINPUTS
-  stdenv=$STDENV
-  src=$SRC
-  srcs=$SRCS
-  succeedOnFailure=$SUCCEEDONFAILURE
-  system=$SYSTEM
-fi
-
-source $@
diff --git a/pkgs/stdenv/mingw/msys-builder.sh b/pkgs/stdenv/mingw/msys-builder.sh
deleted file mode 100644
index a801e7fbcab1..000000000000
--- a/pkgs/stdenv/mingw/msys-builder.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-source $stdenv/setup
-
-mkdir $out
-cd $out
-tar zxvf $src
-
-# Make the Nix store available to MSYS.
-# Hack: we are assuming that the stdenv is based on Cygwin.
-
-nixdir="$(cygpath --windows /nix)"
-mkdir $out/nix
-cat > $out/etc/fstab <<EOF
-#Win32_Path      Mount_Point
-$nixdir          /nix
-EOF
diff --git a/pkgs/stdenv/mingw/pkgs/bin-builder.sh b/pkgs/stdenv/mingw/pkgs/bin-builder.sh
deleted file mode 100644
index f4f21d50a458..000000000000
--- a/pkgs/stdenv/mingw/pkgs/bin-builder.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-source $STDENV/setup
-
-mkdir $OUT
-cd $OUT
-tar zxvf $SRC
diff --git a/pkgs/stdenv/mingw/pkgs/curl.exe b/pkgs/stdenv/mingw/pkgs/curl.exe
deleted file mode 100755
index 0a02fa0af5ca..000000000000
--- a/pkgs/stdenv/mingw/pkgs/curl.exe
+++ /dev/null
Binary files differdiff --git a/pkgs/stdenv/mingw/pkgs/default.nix b/pkgs/stdenv/mingw/pkgs/default.nix
deleted file mode 100644
index 5add5b6546e8..000000000000
--- a/pkgs/stdenv/mingw/pkgs/default.nix
+++ /dev/null
@@ -1,157 +0,0 @@
-/**
- * MinGW packages.
- */
-rec {
-
-  /**
-   * Curl, binary
-   */
-  curl =  {stdenv} :
-    stdenv.mkDerivation {
-      name = "curl-7.15.4";
-      exename = "curl.exe";
-      builder = ./single-exe-builder.sh;
-      src = ./curl.exe;
-    };
-
-  /**
-   * Make. Binary.
-   */
-  make = {stdenv, fetchurl} :
-    stdenv.mkDerivation {
-      name = "mingw-make-3.81";
-      builder = ./bin-builder.sh;
-      src = 
-        fetchurl {
-          url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/mingw32-make-3.81-1.tar.gz;
-          md5 = "74c2f44ecc699b318edeb07d838feae5";
-        };
-    };
-
-  /**
-   * Tar
-   */
-  tar = {stdenv, fetchurl} :
-    stdenv.mkDerivation {
-      name = "mingw-tar";
-      builder = ./bin-builder.sh;
-      src = 
-        fetchurl {
-          url = ftp://ftp.strategoxt.org/pub/mingw/tar-1.22-1-msys-1.0.11-bin.tar.gz;
-          sha256 = "17rbv159g56q3bp8rh5vzv8hw8clxs7vk731cgqg0vy1fzls6yfq";
-        };
-    };
-
-  /**
-   * GCC. Binary
-   */
-  gccFull =  {stdenv, fetchurl} :
-    stdenv.mkDerivation {
-      name = "gcc-full-4.4.0-mingw32";
-      builder = ./bin-builder.sh;
-      src = 
-        fetchurl {
-          url = ftp://ftp.strategoxt.org/pub/mingw/gcc-full-4.4.0-mingw32-bin-2.tar.gz;
-          sha256= "6c5a125591837817c940f4c66140cd7393b3f5837dd738c7ed315157e6270a60";
-        };
-    };
-
-  /**
-   * binutils. Binary.
-   */
-  binutils =  {stdenv, fetchurl} :
-    stdenv.mkDerivation {
-      name = "binutils-2.19.1-mingw32";
-      builder = ./bin-builder.sh;
-      src = 
-        fetchurl {
-          url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/GNU%20Binutils/Current%20Release_%20GNU%20binutils-2.19.1/binutils-2.19.1-mingw32-bin.tar.gz;
-          sha256 = "037vh2n9iv2vccvplk48vd3al91p7yhc73p5nkfsrb6sg977shj2";
-        };
-    };
-
-  mingwRuntimeBin = {stdenv, fetchurl} :
-    stdenv.mkDerivation {
-      name = "mingwrt-3.16";
-      builder = ./bin-builder.sh;
-      src = 
-        fetchurl {
-          url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/MinGW%20Runtime/mingwrt-3.16/mingwrt-3.16-mingw32-dev.tar.gz;
-          sha256 = "1xqpp7lvsj88grs6jlk0fnlkvis2y4avcqrpwsaxxrpjlg5bwzci";
-        };
-    };
-
-  mingwRuntimeSrc = {stdenv, fetchurl} :
-    stdenv.mkDerivation {
-      name = "mingwrt-3.16-mingw32";
-      builder = ./src-builder.sh;
-      src =
-        fetchurl {
-          url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/MinGW%20Runtime/mingwrt-3.16/mingwrt-3.16-mingw32-src.tar.gz;
-          sha256 = "0rljw3v94z9wzfa63b7lvyprms5l5jgf11lws8vm8z7x7q7h1k38";
-        };
-    };
-
-  w32apiBin = {stdenv, fetchurl} :
-    stdenv.mkDerivation {
-      name = "w32api-3.13-mingw32";
-      builder = ./bin-builder.sh;
-      src = 
-        fetchurl {
-          url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/MinGW%20API%20for%20MS-Windows/Current%20Release_%20w32api-3.13/w32api-3.13-mingw32-dev.tar.gz;
-          sha256 = "19jm2hdym5ixi9b874xmmilixlpxvfdpi5y3bx0bs88fdah03gvx";
-        };
-    };
-
-  w32apiSrc = {stdenv, fetchurl} :
-    stdenv.mkDerivation {
-      name = "w32api-3.13-mingw32";
-      builder = ./src-builder.sh;
-      src = 
-        fetchurl {
-          url = http://surfnet.dl.sourceforge.net/sourceforge/mingw/files/MinGW%20API%20for%20MS-Windows/Current%20Release_%20w32api-3.13/w32api-3.13-mingw32-src.tar.gz;
-          sha256 = "1i1gpwilfc21s3yr4sx39i0w4g7lbij427wwxa34gjfgz0awdkh2";
-        };
-    };
-
-  /**
-   * We need a binary pkg-config to bootstrap the compilation of
-   * glib and pkg-config: pkg-config needs glib, glib needs pkg-config.
-   *
-   * This tarball contains pkg-config and all its dependencies. Once we
-   * have bootstrapped pkg-config we really need to use a statically linked
-   * pkg-config (and provide this .exe at the web: it is really missing
-   * on the web).
-   */
-  pkgconfigBin =  {stdenv, fetchurl} :
-    stdenv.mkDerivation {
-      name = "pkgconfig-0.23";
-      builder = ./pkgconfig-builder.sh;
-      setupHook = ../../../development/tools/misc/pkgconfig/setup-hook.sh;
-      src =
-        fetchurl {
-          url = ftp://ftp.strategoxt.org/pub/mingw/pkg-config-0.23.tar.gz;
-          sha256 = "1vab3rdnw16nhma1bln41bbrn6phbpcv9wiz79map8y5znaiv6mq";
-        };
-    };
-
-  replace = {stdenv, fetchurl} :
-    import ../../../tools/text/replace {
-      inherit fetchurl stdenv;
-    };
-
-  /*
-  pkgs.coreutils
-  pkgs.findutils
-  pkgs.diffutils
-  pkgs.gnused
-  pkgs.gnugrep
-  pkgs.gawk
-  pkgs.gnutar
-  pkgs.gzip
-  pkgs.bzip2
-  pkgs.gnumake
-  pkgs.bash
-  pkgs.patch
-  */
-}
diff --git a/pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh b/pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh
deleted file mode 100644
index c7f456951e3f..000000000000
--- a/pkgs/stdenv/mingw/pkgs/pkgconfig-builder.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-source $STDENV/setup
-
-mkdir $OUT
-cd $OUT
-tar zxvf $SRC
-
-test -x $OUT/nix-support || mkdir $OUT/nix-support
-cp $SETUPHOOK $OUT/nix-support/setup-hook
diff --git a/pkgs/stdenv/mingw/pkgs/single-exe-builder.sh b/pkgs/stdenv/mingw/pkgs/single-exe-builder.sh
deleted file mode 100644
index 660f8175afc5..000000000000
--- a/pkgs/stdenv/mingw/pkgs/single-exe-builder.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-if test -z "$out"; then
-  stdenv=$STDENV
-  out=$OUT
-  src=$SRC
-  exename=$EXENAME
-fi
-
-source $stdenv/setup
-
-mkdir $out
-mkdir $out/bin
-cp $src $out/bin/$exename
diff --git a/pkgs/stdenv/mingw/pkgs/src-builder.sh b/pkgs/stdenv/mingw/pkgs/src-builder.sh
deleted file mode 100644
index 09dbb152772a..000000000000
--- a/pkgs/stdenv/mingw/pkgs/src-builder.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-source $STDENV/setup
-
-tar zxvf $SRC
-cd $NAME
-./configure --prefix=$OUT
-make
-make install
diff --git a/pkgs/stdenv/mingw/setup.sh b/pkgs/stdenv/mingw/setup.sh
deleted file mode 100755
index c757eb7ae54c..000000000000
--- a/pkgs/stdenv/mingw/setup.sh
+++ /dev/null
@@ -1,759 +0,0 @@
-# Run the named hook, either by calling the function with that name or
-# by evaluating the variable with that name.  This allows convenient
-# setting of hooks both from Nix expressions (as attributes /
-# environment variables) and from shell scripts (as functions). 
-runHook() {
-    local hookName="$1"
-    if test "$(type -t $hookName)" = function; then
-        $hookName
-    else
-        eval "${!hookName}"
-    fi
-}
-
-
-exitHandler() {
-    exitCode=$?
-    set +e
-
-    closeNest
-
-    if test -n "$showBuildStats"; then
-        times > "$NIX_BUILD_TOP/.times"
-        local -a times=($(cat "$NIX_BUILD_TOP/.times"))
-        # Print the following statistics:
-        # - user time for the shell
-        # - system time for the shell
-        # - user time for all child processes
-        # - system time for all child processes
-        echo "build time elapsed: " ${times[*]}
-    fi
-    
-    if test $exitCode != 0; then
-        runHook failureHook
-    
-        # If the builder had a non-zero exit code and
-        # $succeedOnFailure is set, create the file
-        # `$out/nix-support/failed' to signal failure, and exit
-        # normally.  Otherwise, return the original exit code.
-        if test -n "$succeedOnFailure"; then
-            echo "build failed with exit code $exitCode (ignored)"
-            mkdir -p "$out/nix-support"
-            echo -n $exitCode > "$out/nix-support/failed"
-            exit 0
-        fi
-        
-    else
-        runHook exitHook
-    fi
-    
-    exit $exitCode
-}
-
-trap "exitHandler" EXIT
-
-
-######################################################################
-# Helper functions that might be useful in setup hooks.
-
-
-addToSearchPathWithCustomDelimiter() {
-    local delimiter=$1
-    local varName=$2
-    local dir=$3
-    if [ -d "$dir" ]; then
-        eval export ${varName}=${!varName}${!varName:+$delimiter}${dir}
-    fi
-}
-
-PATH_DELIMITER=':'
-
-addToSearchPath() {
-    addToSearchPathWithCustomDelimiter "${PATH_DELIMITER}" "$@"
-}
-
-
-######################################################################
-# Initialisation.
-
-set -e
-
-test -z $NIX_GCC && NIX_GCC=@GCC@
-
-
-# Wildcard expansions that don't match should expand to an empty list.
-# This ensures that, for instance, "for i in *; do ...; done" does the
-# right thing.
-shopt -s nullglob
-
-
-# Set up the initial path.
-PATH=
-for i in $NIX_GCC @INITIALPATH@; do
-    if test "$i" = /; then i=; fi
-    addToSearchPath PATH $i/bin
-done
-
-# Hack: the /tmp of Cygwin is different from the /tmp in MSYS
-if test -d $NIX_BUILD_TOP; then
-  echo "Nix build top already exists. Strange."
-else
-  mkdir $NIX_BUILD_TOP
-  cd $NIX_BUILD_TOP
-fi
-
-if test "$NIX_DEBUG" = "1"; then
-    echo "initial path: $PATH"
-fi
-
-
-# Execute the pre-hook.
-export SHELL=@SHELL@
-if test -z "$shell"; then
-    export shell=@SHELL@
-fi
-
-# Check that the pre-hook initialised SHELL.
-if test -z "$SHELL"; then echo "SHELL not set"; exit 1; fi
-
-
-# Hack: run gcc's setup hook.
-envHooks=()
-if test -f $NIX_GCC/nix-support/setup-hook; then
-    source $NIX_GCC/nix-support/setup-hook
-fi
-
-
-# Ensure that the given directories exists.
-ensureDir() {
-    local dir
-    for dir in "$@"; do
-        if ! test -x "$dir"; then mkdir -p "$dir"; fi
-    done
-}
-
-installBin() {
-    mkdir -p $out/bin
-    cp "$@" $out/bin
-}
-
-
-# Allow the caller to augment buildInputs (it's not always possible to
-# do this before the call to setup.sh, since the PATH is empty at that
-# point; here we have a basic Unix environment).
-runHook addInputsHook
-
-
-# Recursively find all build inputs.
-findInputs() {
-    local pkg=$1
-
-    case $pkgs in
-        *\ $pkg\ *)
-            return 0
-            ;;
-    esac
-
-    pkgs="$pkgs $pkg "
-
-    if test -f $pkg/nix-support/setup-hook; then
-        source $pkg/nix-support/setup-hook
-    fi
-
-    if test -f $pkg/nix-support/propagated-build-inputs; then
-        for i in $(cat $pkg/nix-support/propagated-build-inputs); do
-            findInputs $i
-        done
-    fi
-}
-
-pkgs=""
-for i in $buildInputs $propagatedBuildInputs; do
-    findInputs $i
-done
-
-
-# Set the relevant environment variables to point to the build inputs
-# found above.
-addToEnv() {
-    local pkg=$1
-
-    if test -d $1/bin; then
-        addToSearchPath _PATH $1/bin
-    fi
-
-    # Run the package-specific hooks set by the setup-hook scripts.
-    for i in "${envHooks[@]}"; do
-        $i $pkg
-    done
-}
-
-for i in $pkgs; do
-    addToEnv $i
-done
-
-
-# Add the output as an rpath.
-if test "$NIX_NO_SELF_RPATH" != "1"; then
-    export NIX_LDFLAGS="-rpath $out/lib $NIX_LDFLAGS"
-    if test -n "$NIX_LIB64_IN_SELF_RPATH"; then
-        export NIX_LDFLAGS="-rpath $out/lib64 $NIX_LDFLAGS"
-    fi
-fi
-
-
-# Set the TZ (timezone) environment variable, otherwise commands like
-# `date' will complain (e.g., `Tue Mar 9 10:01:47 Local time zone must
-# be set--see zic manual page 2004').
-export TZ=UTC
-
-
-# Set the prefix.  This is generally $out, but it can be overriden,
-# for instance if we just want to perform a test build/install to a
-# temporary location and write a build report to $out.
-if test -z "$prefix"; then
-    prefix="$out";
-fi
-
-if test "$useTempPrefix" = "1"; then
-    prefix="$NIX_BUILD_TOP/tmp_prefix";
-fi
-
-
-PATH=$_PATH${_PATH:+:}$PATH
-if test "$NIX_DEBUG" = "1"; then
-    echo "final path: $PATH"
-fi
-
-
-# Make GNU Make produce nested output.
-export NIX_INDENT_MAKE=1
-
-
-######################################################################
-# Misc. helper functions.
-
-
-stripDirs() {
-    local dirs="$1"
-    local stripFlags="$2"
-    local dirsNew=
-
-    for d in ${dirs}; do
-        if test -d "$prefix/$d"; then
-            dirsNew="${dirsNew} $prefix/$d "
-        fi
-    done
-    dirs=${dirsNew}
-
-    if test -n "${dirs}"; then
-        header "stripping (with flags $stripFlags) in $dirs"
-        find $dirs -type f -print0 | xargs -0 ${xargsFlags:--r} strip $stripFlags || true
-        stopNest
-    fi
-}
-
-
-######################################################################
-# Textual substitution functions.
-
-
-substitute() {
-    local input="$1"
-    local output="$2"
-
-    local -a params=("$@")
-    local -a args=()
-
-    local n p pattern replacement varName
-
-    for ((n = 2; n < ${#params[*]}; n += 1)); do
-        p=${params[$n]}
-
-        if test "$p" = "--replace"; then
-            pattern="${params[$((n + 1))]}"
-            replacement="${params[$((n + 2))]}"
-            n=$((n + 2))
-        fi
-
-        if test "$p" = "--subst-var"; then
-            varName="${params[$((n + 1))]}"
-            pattern="@$varName@"
-            replacement="${!varName}"
-            n=$((n + 1))
-        fi
-
-        if test "$p" = "--subst-var-by"; then
-            pattern="@${params[$((n + 1))]}@"
-            replacement="${params[$((n + 2))]}"
-            n=$((n + 2))
-        fi
-
-        if test ${#args[@]} != 0; then
-            args[${#args[@]}]="-a"
-        fi
-        args[${#args[@]}]="$pattern"
-        args[${#args[@]}]="$replacement"
-    done
-
-    replace-literal -e -s -- "${args[@]}" < "$input" > "$output".tmp
-    if test -x "$output"; then
-        chmod +x "$output".tmp
-    fi
-    mv -f "$output".tmp "$output"
-}
-
-
-substituteInPlace() {
-    local fileName="$1"
-    shift
-    substitute "$fileName" "$fileName" "$@"
-}
-
-
-substituteAll() {
-    local input="$1"
-    local output="$2"
-
-    # Select all environment variables that start with a lowercase character.
-    for envVar in $(env | sed "s/^[^a-z].*//" | sed "s/^\([^=]*\)=.*/\1/"); do
-        if test "$NIX_DEBUG" = "1"; then
-            echo "$envVar -> ${!envVar}"
-        fi
-        args="$args --subst-var $envVar"
-    done
-
-    substitute "$input" "$output" $args
-}
-
-
-######################################################################
-# What follows is the generic builder.
-
-
-nestingLevel=0
-
-startNest() {
-    nestingLevel=$(($nestingLevel + 1))
-    echo -en "\e[$1p"
-}
-
-stopNest() {
-    nestingLevel=$(($nestingLevel - 1))
-    echo -en "\e[q"
-}
-
-header() {
-    startNest "$2"
-    echo "$1"
-}
-
-# Make sure that even when we exit abnormally, the original nesting
-# level is properly restored.
-closeNest() {
-    while test $nestingLevel -gt 0; do
-        stopNest
-    done
-}
-
-
-# This function is useful for debugging broken Nix builds.  It dumps
-# all environment variables to a file `env-vars' in the build
-# directory.  If the build fails and the `-K' option is used, you can
-# then go to the build directory and source in `env-vars' to reproduce
-# the environment used for building.
-dumpVars() {  
-    echo  "Dumping env-vars to $NIX_BUILD_TOP/env-vars"
-    if test "$noDumpEnvVars" != "1"; then
-        export > "$NIX_BUILD_TOP/env-vars"
-    fi
-}
-
-
-# Utility function: return the base name of the given path, with the
-# prefix `HASH-' removed, if present.
-stripHash() {
-    strippedName=$(basename $1);
-    if echo "$strippedName" | grep -q '^[a-z0-9]\{32\}-'; then
-        strippedName=$(echo "$strippedName" | cut -c34-)
-    fi
-}
-
-
-unpackFile() {
-    curSrc="$1"
-    local cmd
-
-    header "unpacking source archive $curSrc" 3
-
-    case "$curSrc" in
-        *.tar)
-            tar xvf $curSrc
-            ;;
-        *.tar.gz | *.tgz | *.tar.Z)
-            gzip -d < $curSrc | tar xvf -
-            ;;
-        *.tar.bz2 | *.tbz2)
-            bzip2 -d < $curSrc | tar xvf -
-            ;;
-        *.zip)
-            unzip $curSrc
-            ;;
-        *)
-            if test -d "$curSrc"; then
-                stripHash $curSrc
-                cp -prvd $curSrc $strippedName
-            else
-                if test -z "$unpackCmd"; then
-                    echo "source archive $curSrc has unknown type"
-                    exit 1
-                fi
-                runHook unpackCmd
-            fi
-            ;;
-    esac
-
-    stopNest
-}
-
-
-unpackPhase() {
-    runHook preUnpack
-    
-    if test -z "$srcs"; then
-        if test -z "$src"; then
-            echo 'variable $src or $srcs should point to the source'
-            exit 1
-        fi
-        srcs="$src"
-    fi
-
-    # To determine the source directory created by unpacking the
-    # source archives, we record the contents of the current
-    # directory, then look below which directory got added.  Yeah,
-    # it's rather hacky.
-    local dirsBefore=""
-    for i in *; do
-        if test -d "$i"; then
-            dirsBefore="$dirsBefore $i "
-        fi
-    done
-
-    # Unpack all source archives.
-    for i in $srcs; do
-        unpackFile $i
-    done
-
-    # Find the source directory.
-    if test -n "$setSourceRoot"; then
-        runHook setSourceRoot
-    elif test -z "$sourceRoot"; then
-        sourceRoot=
-        for i in *; do
-            if test -d "$i"; then
-                case $dirsBefore in
-                    *\ $i\ *)
-                        ;;
-                    *)
-                        if test -n "$sourceRoot"; then
-                            echo "unpacker produced multiple directories"
-                            exit 1
-                        fi
-                        sourceRoot="$i"
-                        ;;
-                esac
-            fi
-        done
-    fi
-
-    if test -z "$sourceRoot"; then
-        echo "unpacker appears to have produced no directories"
-        exit 1
-    fi
-
-    echo "source root is $sourceRoot"
-
-    # By default, add write permission to the sources.  This is often
-    # necessary when sources have been copied from other store
-    # locations.
-    if test "$dontMakeSourcesWritable" != 1; then
-        chmod -R u+w "$sourceRoot"
-    fi
-
-    runHook postUnpack
-}
-
-
-patchPhase() {
-    runHook prePatch
-
-    for i in $patches; do
-        header "applying patch $i" 3
-        local uncompress=cat
-        case $i in
-            *.gz)
-                uncompress="gzip -d"
-                ;;
-            *.bz2)
-                uncompress="bzip2 -d"
-                ;;
-        esac
-        $uncompress < $i | patch ${patchFlags:--p1}
-        stopNest
-    done
-
-    runHook postPatch
-}
-
-
-configurePhase() {
-    runHook preConfigure
-
-    if test -z "$configureScript"; then
-        configureScript=./configure
-        if ! test -x $configureScript; then
-            echo "no configure script, doing nothing"
-            return
-        fi
-    fi
-
-    if test -z "$dontAddPrefix"; then
-        configureFlags="${prefixKey:---prefix=}$prefix $configureFlags"
-    fi
-
-    # Add --disable-dependency-tracking to speed up some builds.
-    if test -z "$dontAddDisableDepTrack"; then
-        if grep -q dependency-tracking $configureScript; then
-            configureFlags="--disable-dependency-tracking $configureFlags"
-        fi
-    fi
-
-    # By default, disable static builds.
-    if test -z "$dontDisableStatic"; then
-        if grep -q enable-static $configureScript; then
-            configureFlags="--disable-static $configureFlags"
-        fi
-    fi
-
-    echo "configure flags: $configureFlags ${configureFlagsArray[@]}"
-    $configureScript $configureFlags "${configureFlagsArray[@]}"
-
-    runHook postConfigure
-}
-
-
-buildPhase() {
-    runHook preBuild
-
-    if test -z "$makeFlags" && ! test -n "$makefile" -o -e "Makefile" -o -e "makefile" -o -e "GNUmakefile"; then
-        echo "no Makefile, doing nothing"
-        return
-    fi
-
-    echo "make flags: $makeFlags ${makeFlagsArray[@]} $buildFlags ${buildFlagsArray[@]}"
-    make ${makefile:+-f $makefile} \
-        $makeFlags "${makeFlagsArray[@]}" \
-        $buildFlags "${buildFlagsArray[@]}"
-
-    runHook postBuild
-}
-
-
-checkPhase() {
-    runHook preCheck
-
-    echo "check flags: $makeFlags ${makeFlagsArray[@]} $checkFlags ${checkFlagsArray[@]}"
-    make ${makefile:+-f $makefile} \
-        $makeFlags "${makeFlagsArray[@]}" \
-        $checkFlags "${checkFlagsArray[@]}" ${checkTarget:-check}
-
-    runHook postCheck
-}
-
-
-patchELF() {
-    # Patch all ELF executables and shared libraries.
-    header "patching ELF executables and libraries"
-    if test -e "$prefix"; then
-        find "$prefix" \( \
-            \( -type f -a -name "*.so*" \) -o \
-            \( -type f -a -perm +0100 \) \
-            \) -print -exec patchelf --shrink-rpath {} \;
-    fi
-    stopNest
-}
-
-
-patchShebangs() {
-    # Rewrite all script interpreter file names (`#! /path') under the
-    # specified  directory tree to paths found in $PATH.  E.g.,
-    # /bin/sh will be rewritten to /nix/store/<hash>-some-bash/bin/sh.
-    # Interpreters that are already in the store are left untouched.
-    header "patching script interpreter paths"
-    local dir="$1"
-    local f
-    for f in $(find "$dir" -type f -perm +0100); do
-        local oldPath=$(sed -ne '1 s,^#![ ]*\([^ ]*\).*$,\1,p' "$f")
-        if test -n "$oldPath" -a "${oldPath:0:${#NIX_STORE}}" != "$NIX_STORE"; then
-            local newPath=$(type -P $(basename $oldPath) || true)
-            if test -n "$newPath" -a "$newPath" != "$oldPath"; then
-                echo "$f: interpreter changed from $oldPath to $newPath"
-                sed -i -e "1 s,$oldPath,$newPath," "$f"
-            fi
-        fi
-    done
-    stopNest
-}
-
-
-installPhase() {
-    runHook preInstall
-
-    mkdir -p "$prefix"
-
-    installTargets=${installTargets:-install}
-    echo "install flags: $installTargets $makeFlags ${makeFlagsArray[@]} $installFlags ${installFlagsArray[@]}"
-    make ${makefile:+-f $makefile} $installTargets \
-        $makeFlags "${makeFlagsArray[@]}" \
-        $installFlags "${installFlagsArray[@]}"
-
-    runHook postInstall
-}
-
-
-# The fixup phase performs generic, package-independent, Nix-related
-# stuff, like running patchelf and setting the
-# propagated-build-inputs.  It should rarely be overriden.
-fixupPhase() {
-    runHook preFixup
-
-    # Put man/doc/info under $out/share.
-    forceShare=${forceShare:=man doc info}
-    if test -n "$forceShare"; then
-        for d in $forceShare; do
-            if test -d "$prefix/$d"; then
-                if test -d "$prefix/share/$d"; then
-                    echo "both $d/ and share/$d/ exists!"
-                else
-                    echo "fixing location of $d/ subdirectory"
-                    mkdir -p $prefix/share
-                    if test -w $prefix/share; then
-                        mv -v $prefix/$d $prefix/share
-                        ln -sv $prefix/share/$d $prefix/$d
-                    fi
-                fi
-            fi
-        done;
-    fi
-
-    # TODO: strip _only_ ELF executables, and return || fail here...
-    if test -z "$dontStrip"; then
-        stripDebugList=${stripDebugList:-lib lib64 libexec bin sbin}
-        if test -n "$stripDebugList"; then
-            stripDirs "$stripDebugList" "${stripDebugFlags:--S}"
-        fi
-        
-        stripAllList=${stripAllList:-}
-        if test -n "$stripAllList"; then
-            stripDirs "$stripAllList" "${stripAllFlags:--s}"
-        fi
-    fi
-
-    if test "$havePatchELF" = 1 -a -z "$dontPatchELF"; then
-        patchELF "$prefix"
-    fi
-
-    if test -z "$dontPatchShebangs"; then
-        patchShebangs "$prefix"
-    fi
-
-    if test -n "$propagatedBuildInputs"; then
-        mkdir -p "$out/nix-support"
-        echo "$propagatedBuildInputs" > "$out/nix-support/propagated-build-inputs"
-    fi
-
-    if test -n "$setupHook"; then
-        mkdir -p "$out/nix-support"
-        substituteAll "$setupHook" "$out/nix-support/setup-hook"
-    fi
-
-    runHook postFixup
-}
-
-
-distPhase() {
-    runHook preDist
-
-    echo "dist flags: $distFlags ${distFlagsArray[@]}"
-    make ${makefile:+-f $makefile} $distFlags "${distFlagsArray[@]}" ${distTarget:-dist}
-
-    if test "$dontCopyDist" != 1; then
-        mkdir -p "$out/tarballs"
-
-        # Note: don't quote $tarballs, since we explicitly permit
-        # wildcards in there.
-        cp -pvd ${tarballs:-*.tar.gz} $out/tarballs
-    fi
-
-    runHook postDist
-}
-
-
-showPhaseHeader() {
-    local phase="$1"
-    case $phase in
-        unpackPhase) header "unpacking sources";;
-        patchPhase) header "patching sources";;
-        configurePhase) header "configuring";;
-        buildPhase) header "building";;
-        checkPhase) header "running tests";;
-        installPhase) header "installing";;
-        fixupPhase) header "post-installation fixup";;
-        *) header "$phase";;
-    esac
-}
-
-
-genericBuild() {
-    header "building $out"
-
-    if test -n "$buildCommand"; then
-        eval "$buildCommand"
-        return
-    fi
-
-    if test -z "$phases"; then
-        phases="$prePhases unpackPhase patchPhase $preConfigurePhases \
-            configurePhase $preBuildPhases buildPhase checkPhase \
-            $preInstallPhases installPhase $preFixupPhases fixupPhase \
-            $preDistPhases distPhase $postPhases";
-    fi
-
-    for curPhase in $phases; do
-        if test "$curPhase" = buildPhase -a -n "$dontBuild"; then continue; fi
-        if test "$curPhase" = checkPhase -a -z "$doCheck"; then continue; fi
-        if test "$curPhase" = installPhase -a -n "$dontInstall"; then continue; fi
-        if test "$curPhase" = fixupPhase -a -n "$dontFixup"; then continue; fi
-        if test "$curPhase" = distPhase -a -z "$doDist"; then continue; fi
-        
-        showPhaseHeader "$curPhase"
-        dumpVars
-        
-        # Evaluate the variable named $curPhase if it exists, otherwise the
-        # function named $curPhase.
-        eval "${!curPhase:-$curPhase}"
-
-        if test "$curPhase" = unpackPhase; then
-            cd "${sourceRoot:-.}"
-        fi
-        
-        stopNest
-    done
-
-    stopNest
-}
-
-
-
-
-dumpVars
diff --git a/pkgs/stdenv/mingw/simple-stdenv/builder.sh b/pkgs/stdenv/mingw/simple-stdenv/builder.sh
deleted file mode 100644
index 0cbc13e4fab3..000000000000
--- a/pkgs/stdenv/mingw/simple-stdenv/builder.sh
+++ /dev/null
@@ -1,80 +0,0 @@
-if test -z "$out"; then
-  out="$OUT"
-  initialPath="$INITIALPATH"
-  shell="$SHELL"
-fi
-
-setupPath=
-for i in $initialPath; do
-  setupPath=$setupPath${setupPath:+:}$i
-done
-
-PATH=$setupPath
-export PATH
-
-mkdir $out
-
-cat > $out/setup <<EOF
-PATH=$setupPath
-export PATH
-
-SHELL=$shell
-export SHELL
-
-# make fetchurl usable
-header() {
-  echo "\$1"
-}
-
-stopNest() {
-  echo "Nothing to do"
-}
-
-# !!! Awful copy&paste.
-substitute() {
-    local input="\$1"
-    local output="\$2"
-
-    local -a params=("\$@")
-
-    local sedScript=\$NIX_BUILD_TOP/.sedargs
-    rm -f \$sedScript
-    touch \$sedScript
-
-    local n p pattern replacement varName
-    
-    for ((n = 2; n < \${#params[*]}; n += 1)); do
-        p=\${params[\$n]}
-
-        if test "\$p" = "--replace"; then
-            pattern=\${params[\$((n + 1))]}
-            replacement=\${params[\$((n + 2))]}
-            n=\$((n + 2))
-            echo "s^\$pattern^\$replacement^g" >> \$sedScript
-            sedArgs=("\${sedArgs[@]}" "-e" )
-        fi
-
-        if test "\$p" = "--subst-var"; then
-            varName=\${params[\$((n + 1))]}
-            n=\$((n + 1))
-            echo "s^@\${varName}@^\${!varName}^g" >> \$sedScript
-        fi
-
-        if test "\$p" = "--subst-var-by"; then
-            varName=\${params[\$((n + 1))]}
-            replacement=\${params[\$((n + 2))]}
-            n=\$((n + 2))
-            echo "s^@\${varName}@^\$replacement^g" >> \$sedScript
-        fi
-
-    done
-
-    sed -f \$sedScript < "\$input" > "\$output".tmp
-    if test -x "\$output"; then
-        chmod +x "\$output".tmp
-    fi
-    mv -f "\$output".tmp "\$output"
-}
-EOF
-
-chmod +x $out/setup
diff --git a/pkgs/stdenv/mingw/simple-stdenv/default.nix b/pkgs/stdenv/mingw/simple-stdenv/default.nix
deleted file mode 100644
index 379cda0a598b..000000000000
--- a/pkgs/stdenv/mingw/simple-stdenv/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ system
-, name
-, shell
-, path
-, extraEnv ? {}
-, extraShellOptions ? []
-}:
-
-let {
-  body = 
-    derivation ({
-      inherit system name;
-      initialPath = path;
-      builder = shell;
-      args = extraShellOptions ++ ["-e" ./builder.sh];
-    } // extraEnv)
-
-    // {
-      mkDerivation = attrs:
-        derivation ((removeAttrs attrs ["meta"]) // {
-          builder = shell;
-          args = extraShellOptions ++ ["-e" ] ++ [attrs.builder]; # (if attrs ? builder then [attrs.builder] else [ ../fix-builder.sh ../default-builder.sh] ) ;
-          stdenv = body;
-          system = body.system;
-        }
-
-        // extraEnv);
-
-      inherit shell;
-    };
-}
diff --git a/pkgs/stdenv/nix/default.nix b/pkgs/stdenv/nix/default.nix
index 78e5b84a841e..cb4c0fd0a61b 100644
--- a/pkgs/stdenv/nix/default.nix
+++ b/pkgs/stdenv/nix/default.nix
@@ -7,16 +7,19 @@ import ../generic rec {
     ''
       export NIX_ENFORCE_PURITY=1
       export NIX_IGNORE_LD_THROUGH_GCC=1
-
-      if [ "$system" = "i686-darwin" -o "$system" = "powerpc-darwin" -o "$system" = "x86_64-darwin" ]; then
-        export NIX_ENFORCE_PURITY=
-        export NIX_DONT_SET_RPATH=1
-        export NIX_NO_SELF_RPATH=1
-        dontFixLibtool=1
-        stripAllFlags=" " # the Darwin "strip" command doesn't know "-s"
-        xargsFlags=" "
-      fi
-    '';
+    '' + (if stdenv.isDarwin then ''
+      export NIX_ENFORCE_PURITY=
+      export NIX_DONT_SET_RPATH=1
+      export NIX_NO_SELF_RPATH=1
+      dontFixLibtool=1
+      stripAllFlags=" " # the Darwin "strip" command doesn't know "-s"
+      xargsFlags=" "
+      export MACOSX_DEPLOYMENT_TARGET=10.6
+      export NIX_CFLAGS_COMPILE+=" --sysroot=/var/empty"
+      xcodePath=$(/usr/bin/xcrun --show-sdk-path 2> /dev/null || true)
+      export NIX_CFLAGS_COMPILE+=" -idirafter $xcodePath/usr/include -F$xcodePath/System/Library/Frameworks"
+      export NIX_LDFLAGS_AFTER+=" -L$xcodePath/usr/lib"
+    '' else "");
 
   initialPath = (import ../common-path.nix) {pkgs = pkgs;};
 
diff --git a/pkgs/tools/backup/store-backup/default.nix b/pkgs/tools/backup/store-backup/default.nix
index e9b98fec7100..c986adeafdcc 100644
--- a/pkgs/tools/backup/store-backup/default.nix
+++ b/pkgs/tools/backup/store-backup/default.nix
@@ -26,7 +26,7 @@ stdenv.mkDerivation {
   };
 
   installPhase = ''
-    ensureDir $out/scripts
+    mkdir -p $out/scripts
     mv * $out
     mv $out/_ATTENTION_ $out/doc
     mv $out/{correct.sh,cron-storebackup} $out/scripts
diff --git a/pkgs/tools/filesystems/unionfs-fuse/default.nix b/pkgs/tools/filesystems/unionfs-fuse/default.nix
index bff5aaf242ba..23340f88376b 100644
--- a/pkgs/tools/filesystems/unionfs-fuse/default.nix
+++ b/pkgs/tools/filesystems/unionfs-fuse/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
   # This must be done in preConfigure because the build process removes
   # helper from the source directory during the build.
   preConfigure = ''
-    ensureDir $out/sbin
+    mkdir -p $out/sbin
     cp -a mount.unionfs $out/sbin/mount.unionfs-fuse
     substituteInPlace $out/sbin/mount.unionfs-fuse --replace mount.fuse ${fuse}/sbin/mount.fuse
     substituteInPlace $out/sbin/mount.unionfs-fuse --replace unionfs $out/bin/unionfs
diff --git a/pkgs/tools/misc/debootstrap/default.nix b/pkgs/tools/misc/debootstrap/default.nix
index aac7855827cc..a76a57864d94 100644
--- a/pkgs/tools/misc/debootstrap/default.nix
+++ b/pkgs/tools/misc/debootstrap/default.nix
@@ -20,7 +20,7 @@ let
     ];
     # TODO install man
     installPhase = ''
-      ensureDir $out/sbin
+      mkdir -p $out/sbin
       ls -l
       t=$out/sbin/MAKEDEV
       cp MAKEDEV $t
@@ -78,7 +78,7 @@ stdenv.mkDerivation {
       functions
 
     d=$out/share/debootstrap
-    ensureDir $out/{share/debootstrap,bin}
+    mkdir -p $out/{share/debootstrap,bin}
 
     ${fakeroot}/bin/fakeroot -- make devices.tar.gz MAKEDEV=${makedev}/sbin/MAKEDEV
 
@@ -94,7 +94,7 @@ stdenv.mkDerivation {
     EOF
     chmod +x $out/bin/debootstrap
 
-    ensureDir $out/man/man8
+    mkdir -p $out/man/man8
     mv debootstrap.8 $out/man/man8
   '';
 
diff --git a/pkgs/tools/misc/megacli/default.nix b/pkgs/tools/misc/megacli/default.nix
index 2b15d4470c36..ef85c3994a8e 100644
--- a/pkgs/tools/misc/megacli/default.nix
+++ b/pkgs/tools/misc/megacli/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
        [ stdenv.gcc.gcc stdenv.gcc.libc ncurses ];
 
   buildCommand = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cd $out
     unzip ${src}
     rpm2cpio linux/MegaCli-8.07.07-1.noarch.rpm | cpio -idmv
diff --git a/pkgs/tools/misc/multitail/default.nix b/pkgs/tools/misc/multitail/default.nix
index 96d3764abd46..831bc532c331 100644
--- a/pkgs/tools/misc/multitail/default.nix
+++ b/pkgs/tools/misc/multitail/default.nix
@@ -13,7 +13,7 @@ stdenv.mkDerivation {
   makeFlags = stdenv.lib.optionalString stdenv.isDarwin "-f makefile.macosx";
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp multitail $out/bin
   '';
 
diff --git a/pkgs/tools/misc/picocom/default.nix b/pkgs/tools/misc/picocom/default.nix
index bb08091ad57a..126725eaafcb 100644
--- a/pkgs/tools/misc/picocom/default.nix
+++ b/pkgs/tools/misc/picocom/default.nix
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
   };
 
   installPhase = ''
-    ensureDir $out/bin $out/share/man/man8
+    mkdir -p $out/bin $out/share/man/man8
     cp picocom $out/bin
     cp picocom.8 $out/share/man/man8
   '';
diff --git a/pkgs/tools/misc/rkflashtool/default.nix b/pkgs/tools/misc/rkflashtool/default.nix
index c985183c1c00..6b74f9ac5d34 100644
--- a/pkgs/tools/misc/rkflashtool/default.nix
+++ b/pkgs/tools/misc/rkflashtool/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp rkunpack rkcrc rkflashtool $out/bin
   '';
 
diff --git a/pkgs/tools/misc/sl/default.nix b/pkgs/tools/misc/sl/default.nix
index 14cc6c4260f7..2ed8d89d43e4 100644
--- a/pkgs/tools/misc/sl/default.nix
+++ b/pkgs/tools/misc/sl/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation {
   buildInputs = [ ncurses ];
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp sl $out/bin
   '';
 
diff --git a/pkgs/tools/networking/connect/default.nix b/pkgs/tools/networking/connect/default.nix
index c6291efad312..8723c53c3229 100644
--- a/pkgs/tools/networking/connect/default.nix
+++ b/pkgs/tools/networking/connect/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   '';
 
   buildPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     gcc -o $out/bin/connect connect.c
   '';
 
diff --git a/pkgs/tools/networking/filegive/default.nix b/pkgs/tools/networking/filegive/default.nix
index a47a0397bf5a..f9efc6815b67 100644
--- a/pkgs/tools/networking/filegive/default.nix
+++ b/pkgs/tools/networking/filegive/default.nix
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp filegive $out/bin
   '';
 
diff --git a/pkgs/tools/networking/reaver-wps/default.nix b/pkgs/tools/networking/reaver-wps/default.nix
index a057985b48cc..65d681fdc224 100644
--- a/pkgs/tools/networking/reaver-wps/default.nix
+++ b/pkgs/tools/networking/reaver-wps/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   '';
 
   preInstall = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
   '';
 
   meta = {
diff --git a/pkgs/tools/networking/udptunnel/default.nix b/pkgs/tools/networking/udptunnel/default.nix
index 88ee926e4065..0cb777b01af3 100644
--- a/pkgs/tools/networking/udptunnel/default.nix
+++ b/pkgs/tools/networking/udptunnel/default.nix
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
   };
 
   installPhase = ''
-    ensureDir $out/bin $out/share/udptunnel
+    mkdir -p $out/bin $out/share/udptunnel
     cp udptunnel $out/bin
     cp README COPYING* $out/share/udptunnel
   '';
diff --git a/pkgs/tools/security/fprot/default.nix b/pkgs/tools/security/fprot/default.nix
index 2a8531a17954..b43ea402f6dc 100644
--- a/pkgs/tools/security/fprot/default.nix
+++ b/pkgs/tools/security/fprot/default.nix
@@ -11,10 +11,10 @@ stdenv.mkDerivation rec {
   };
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp fpscan $out/bin
 
-    ensureDir $out/opt/f-prot
+    mkdir -p $out/opt/f-prot
     cp fpupdate $out/opt/f-prot
     cp product.data.default $out/opt/f-prot/product.data
     cp license.key $out/opt/f-prot/
@@ -23,12 +23,12 @@ stdenv.mkDerivation rec {
 
     patchelf --interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" $out/opt/f-prot/fpupdate
 
-    ensureDir $out/share/man/
-    ensureDir $out/share/man/man1
+    mkdir -p $out/share/man/
+    mkdir -p $out/share/man/man1
     cp doc/man/fpscan.1 $out/share/man/man1
-    ensureDir $out/share/man/man5
+    mkdir -p $out/share/man/man5
     cp doc/man/f-prot.conf.5 $out/share/man/man5
-    ensureDir $out/share/man/man8
+    mkdir -p $out/share/man/man8
     cp doc/man/fpupdate.8 $out/share/man/man8
   '';
 
diff --git a/pkgs/tools/security/meo/default.nix b/pkgs/tools/security/meo/default.nix
index 31736123a9f2..2dfdf466c28a 100644
--- a/pkgs/tools/security/meo/default.nix
+++ b/pkgs/tools/security/meo/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation {
   '';
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp tools/{meo,p11} $out/bin
     cp meo-gui/meo-gui $out/bin
     cp meo-gui/meo-gui $out/bin
diff --git a/pkgs/tools/security/tor/torbrowser.nix b/pkgs/tools/security/tor/torbrowser.nix
index 7be7c79888ea..f220a46bddcf 100644
--- a/pkgs/tools/security/tor/torbrowser.nix
+++ b/pkgs/tools/security/tor/torbrowser.nix
@@ -45,8 +45,8 @@ in stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    ensureDir $out/share/tor-browser
-    ensureDir $out/bin
+    mkdir -p $out/share/tor-browser
+    mkdir -p $out/bin
     cp -R * $out/share/tor-browser
 
     cat > "$out/bin/tor-browser" << EOF
diff --git a/pkgs/tools/system/storebrowse/default.nix b/pkgs/tools/system/storebrowse/default.nix
index 1a3bfa69d1ad..ccb0f26e4358 100644
--- a/pkgs/tools/system/storebrowse/default.nix
+++ b/pkgs/tools/system/storebrowse/default.nix
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp storebrowse $out/bin
   '';
 
diff --git a/pkgs/tools/system/vboot_reference/default.nix b/pkgs/tools/system/vboot_reference/default.nix
index e1c4734bbdaf..087a3212fc2e 100644
--- a/pkgs/tools/system/vboot_reference/default.nix
+++ b/pkgs/tools/system/vboot_reference/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    ensureDir $out/bin
+    mkdir -p $out/bin
     cp build/cgpt/cgpt $out/bin
     cp build/utility/vbutil_kernel $out/bin
     cp build/utility/vbutil_key $out/bin
diff --git a/pkgs/tools/typesetting/tex/pgfplots/default.nix b/pkgs/tools/typesetting/tex/pgfplots/default.nix
index bc47244a5fa8..67739350c6f6 100644
--- a/pkgs/tools/typesetting/tex/pgfplots/default.nix
+++ b/pkgs/tools/typesetting/tex/pgfplots/default.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation {
   buildPhase = "true";
   
   installPhase = "
-    ensureDir $out/share/texmf-nix
+    mkdir -p $out/share/texmf-nix
     cp -prd * $out/share/texmf-nix
   ";
 }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f017c39bb75f..5be835ae1391 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -8,15 +8,6 @@
 { # The system (e.g., `i686-linux') for which to build the packages.
   system ? builtins.currentSystem
 
-  # Usually, the system type uniquely determines the stdenv and thus
-  # how to build the packages.  But on some platforms we have
-  # different stdenvs, leading to different ways to build the
-  # packages.  For instance, on Windows we support both Cygwin and
-  # Mingw builds.  In both cases, `system' is `i686-cygwin'.  The
-  # attribute `stdenvType' is used to select the specific kind of
-  # stdenv to use, e.g., `i686-mingw'.
-, stdenvType ? system
-
 , # The standard environment to use.  Only used for bootstrapping.  If
   # null, the default standard environment is used.
   bootStdenv ? null
@@ -137,7 +128,7 @@ let
     self_ = with self; helperFunctions // {
 
   # Make some arguments passed to all-packages.nix available
-  inherit system stdenvType platform;
+  inherit system platform;
 
   # Allow callPackage to fill in the pkgs argument
   inherit pkgs;
@@ -213,7 +204,7 @@ let
 
 
   allStdenvs = import ../stdenv {
-    inherit system stdenvType platform config;
+    inherit system platform config;
     allPackages = args: import ./all-packages.nix ({ inherit config system; } // args);
   };
 
@@ -5985,23 +5976,9 @@ let
 
   readline5 = callPackage ../development/libraries/readline/readline5.nix { };
 
-  readline6 = callPackage ../development/libraries/readline/readline6.nix {
-    stdenv =
-      # On Darwin, Readline uses `-arch_only', which is specific to
-      # Apple-GCC.  So give it what it expects.
-      if stdenv.isDarwin
-      then overrideGCC stdenv gccApple
-      else stdenv;
-  };
+  readline6 = callPackage ../development/libraries/readline/readline6.nix { };
 
-  readline63 = callPackage ../development/libraries/readline/readline6.3.nix {
-    stdenv =
-      # On Darwin, Readline uses `-arch_only', which is specific to
-      # Apple-GCC.  So give it what it expects.
-      if stdenv.isDarwin
-      then overrideGCC stdenv gccApple
-      else stdenv;
-  };
+  readline63 = callPackage ../development/libraries/readline/readline6.3.nix { };
 
   librdf_raptor = callPackage ../development/libraries/librdf/raptor.nix { };
 
diff --git a/pkgs/top-level/mingw.nix b/pkgs/top-level/mingw.nix
deleted file mode 100644
index 6c744bfd8612..000000000000
--- a/pkgs/top-level/mingw.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-let {
-  pkgs =
-    import ./all-packages.nix {
-      stdenvType = "i686-mingw";
-    };
-
-  body = {
-    inherit (pkgs)
-      aterm
-      getopt
-      pkgconfig
-      realCurl
-      strategoLibraries
-      zlib;
-#    inherit profileTest;
-  };
-
-#  profileTest =
-#    pkgs.stdenv.mkDerivation {
-#      name = "profile-test";
-#      src = ./char-test.c;
-#      builder = ./profile-builder.sh;
-#      strlib = pkgs.strategoLibraries;
-#      aterm = pkgs.aterm;
-#      buildInputs = [pkgs.aterm pkgs.strategoLibraries];
-#    };
-}