about summary refs log tree commit diff
path: root/pkgs/development/compilers
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2016-03-08 09:57:58 +0100
committerVladimír Čunát <vcunat@gmail.com>2016-03-08 09:58:19 +0100
commit09af15654f0c8091f1b9e0bbb2e523cdee194442 (patch)
treee648edef1ce4c64c533f2593aa22b8015cf0e506 /pkgs/development/compilers
parentf306e67e15bdbe9a8358c9f81319fc4fcbadc2eb (diff)
parent0ee75214f336474e127c2e3546c0406a0c4d5fa7 (diff)
downloadnixlib-09af15654f0c8091f1b9e0bbb2e523cdee194442.tar
nixlib-09af15654f0c8091f1b9e0bbb2e523cdee194442.tar.gz
nixlib-09af15654f0c8091f1b9e0bbb2e523cdee194442.tar.bz2
nixlib-09af15654f0c8091f1b9e0bbb2e523cdee194442.tar.lz
nixlib-09af15654f0c8091f1b9e0bbb2e523cdee194442.tar.xz
nixlib-09af15654f0c8091f1b9e0bbb2e523cdee194442.tar.zst
nixlib-09af15654f0c8091f1b9e0bbb2e523cdee194442.zip
Merge master into closure-size
The kde-5 stuff still didn't merge well.
I hand-fixed what I saw, but there may be more problems.
Diffstat (limited to 'pkgs/development/compilers')
-rw-r--r--pkgs/development/compilers/as31/default.nix9
-rw-r--r--pkgs/development/compilers/closure/default.nix4
-rw-r--r--pkgs/development/compilers/colm/default.nix5
-rw-r--r--pkgs/development/compilers/coreclr/default.nix2
-rw-r--r--pkgs/development/compilers/cudatoolkit/5.5.nix6
-rw-r--r--pkgs/development/compilers/cudatoolkit/6.0.nix6
-rw-r--r--pkgs/development/compilers/cudatoolkit/6.5.nix6
-rw-r--r--pkgs/development/compilers/cudatoolkit/7.0.nix7
-rw-r--r--pkgs/development/compilers/cudatoolkit/default.nix109
-rw-r--r--pkgs/development/compilers/cudatoolkit/generic.nix75
-rw-r--r--pkgs/development/compilers/ecl/default.nix8
-rw-r--r--pkgs/development/compilers/elm/packages/elm-compiler.nix6
-rw-r--r--pkgs/development/compilers/elm/packages/elm-make.nix4
-rw-r--r--pkgs/development/compilers/elm/packages/elm-reactor.nix4
-rwxr-xr-xpkgs/development/compilers/elm/update-elm.rb1
-rw-r--r--pkgs/development/compilers/fpc/lazarus.nix8
-rw-r--r--pkgs/development/compilers/gcc/4.9/default.nix6
-rw-r--r--pkgs/development/compilers/gcc/builder.sh2
-rw-r--r--pkgs/development/compilers/gcc/gfortran-darwin-NXConstStr.patch27
-rw-r--r--pkgs/development/compilers/gcc/gfortran-darwin.nix2
-rw-r--r--pkgs/development/compilers/ghc/7.10.2.nix7
-rw-r--r--pkgs/development/compilers/ghc/7.10.3.nix7
-rw-r--r--pkgs/development/compilers/ghc/8.0.1.nix10
-rw-r--r--pkgs/development/compilers/ghc/head.nix11
-rw-r--r--pkgs/development/compilers/ghc/nokinds.nix7
-rw-r--r--pkgs/development/compilers/ghcjs/default.nix42
-rw-r--r--pkgs/development/compilers/ghcjs/ghcjs-boot.nix32
-rw-r--r--pkgs/development/compilers/ghcjs/node-packages-generated.nix943
-rw-r--r--pkgs/development/compilers/ghcjs/node-packages.json1
-rw-r--r--pkgs/development/compilers/ghcjs/shims.nix4
-rw-r--r--pkgs/development/compilers/ghcjs/wrapper.nix77
-rw-r--r--pkgs/development/compilers/ghdl/default.nix46
-rw-r--r--pkgs/development/compilers/go/1.4.nix3
-rw-r--r--pkgs/development/compilers/go/1.5.nix1
-rw-r--r--pkgs/development/compilers/go/1.6.nix140
-rw-r--r--pkgs/development/compilers/go/cacert-1.4.patch14
-rw-r--r--pkgs/development/compilers/go/cacert-1.5.patch8
-rw-r--r--pkgs/development/compilers/ios-cross-compile/9.2.nix64
-rw-r--r--pkgs/development/compilers/ios-cross-compile/9.2_builder.sh153
-rw-r--r--pkgs/development/compilers/ios-cross-compile/alt_wrapper.c212
-rw-r--r--pkgs/development/compilers/jsonnet/default.nix4
-rw-r--r--pkgs/development/compilers/julia/0001.1-use-system-utf8proc.patch29
-rw-r--r--pkgs/development/compilers/julia/git.nix170
-rw-r--r--pkgs/development/compilers/kotlin/default.nix8
-rw-r--r--pkgs/development/compilers/llvm/3.3/clang-purity.patch162
-rw-r--r--pkgs/development/compilers/llvm/3.3/clang-tablegen-dir.patch9
-rw-r--r--pkgs/development/compilers/llvm/3.3/clang.nix45
-rw-r--r--pkgs/development/compilers/llvm/3.3/llvm.nix63
-rw-r--r--pkgs/development/compilers/llvm/3.3/more-memory-for-bugpoint.patch15
-rw-r--r--pkgs/development/compilers/llvm/3.3/no-rule-aarch64.patch8
-rw-r--r--pkgs/development/compilers/polyml/default.nix4
-rw-r--r--pkgs/development/compilers/rustc/generic.nix6
-rw-r--r--pkgs/development/compilers/rustc/head.nix6
-rw-r--r--pkgs/development/compilers/sbcl/default.nix4
-rw-r--r--pkgs/development/compilers/uhc/default.nix25
55 files changed, 2013 insertions, 624 deletions
diff --git a/pkgs/development/compilers/as31/default.nix b/pkgs/development/compilers/as31/default.nix
index 24cba18254f2..a7f37976ec40 100644
--- a/pkgs/development/compilers/as31/default.nix
+++ b/pkgs/development/compilers/as31/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchurl, yacc }:
 
 let
 
@@ -11,10 +11,17 @@ in stdenv.mkDerivation {
     url = "http://wiki.erazor-zone.de/_media/wiki:projects:linux:as31:as31-${version}.tar.gz";
     sha256 = "0mbk6z7z03xb0r0ccyzlgkjdjmdzknck4yxxmgr9k7v8f5c348fd";
   };
+
+  buildInputs = [ yacc ];
+
   preConfigure = ''
     chmod +x ./configure
   '';
 
+  postConfigure = ''
+    rm as31/parser.c
+  '';
+
   meta = with stdenv.lib; {
     homepage = "http://wiki.erazor-zone.de/wiki:projects:linux:as31";
     description = "An 8031/8051 assembler by Ken Stauffer and Theo Deraadt which produces a variety of object code output formats";
diff --git a/pkgs/development/compilers/closure/default.nix b/pkgs/development/compilers/closure/default.nix
index 1c684c21bf40..949008d990f8 100644
--- a/pkgs/development/compilers/closure/default.nix
+++ b/pkgs/development/compilers/closure/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "closure-compiler-${version}";
-  version = "20151015";
+  version = "20160208";
 
   src = fetchurl {
     url = "http://dl.google.com/closure-compiler/compiler-${version}.tar.gz";
-    sha256 = "0idb0qrzca8j2nj0zxfpnsspmdkmda864rr5m05xxgcvn7150x0h";
+    sha256 = "19v9z8lfxfmhc4cl9fys7vnaslqiznjy1jpk5mcv468p7vysg46p";
   };
 
   phases = [ "installPhase" ];
diff --git a/pkgs/development/compilers/colm/default.nix b/pkgs/development/compilers/colm/default.nix
index ebfee6c4188e..3a3670279c62 100644
--- a/pkgs/development/compilers/colm/default.nix
+++ b/pkgs/development/compilers/colm/default.nix
@@ -2,17 +2,16 @@
 
 stdenv.mkDerivation rec {
   name = "colm-${version}";
-  version = "0.12.0";
+  version = "0.13.0.3";
 
   src = fetchurl {
     url = "http://www.colm.net/files/colm/${name}.tar.gz";
-    sha256 = "0kbfipxv3nvggd1a2nahk3jg22iifp2l7lkm55i5r7qkpms5sm3v";
+    sha256 = "0dadfsnkbxcrf5kihvncbprb6w64jz2myylfmj952gdmcsim4zj2";
   };
 
   buildInputs = [ makeWrapper ];
 
   doCheck = true;
-  checkPhase = ''sh ./test/runtests.sh'';
 
   postInstall = ''
     wrapProgram $out/bin/colm \
diff --git a/pkgs/development/compilers/coreclr/default.nix b/pkgs/development/compilers/coreclr/default.nix
index 629d981893d9..cf2833c5c6cb 100644
--- a/pkgs/development/compilers/coreclr/default.nix
+++ b/pkgs/development/compilers/coreclr/default.nix
@@ -59,7 +59,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = http://dotnet.github.io/core/;
-    description = ".NET is a general purpose development platform.";
+    description = ".NET is a general purpose development platform";
     platforms = [ "x86_64-linux" ];
     maintainers = with stdenv.lib.maintainers; [ obadz ];
     license = stdenv.lib.licenses.mit;
diff --git a/pkgs/development/compilers/cudatoolkit/5.5.nix b/pkgs/development/compilers/cudatoolkit/5.5.nix
deleted file mode 100644
index c3eb1b6efcf6..000000000000
--- a/pkgs/development/compilers/cudatoolkit/5.5.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ callPackage, ... } @ args:
-
-callPackage ./generic.nix (args // rec {
-  version = "5.5.22";
-  sha256 = "b997e1dbe95704e0e806e0cedc5fd370a385351fef565c7bae0917baf3a29aa4";
-})
diff --git a/pkgs/development/compilers/cudatoolkit/6.0.nix b/pkgs/development/compilers/cudatoolkit/6.0.nix
deleted file mode 100644
index 200311703a0a..000000000000
--- a/pkgs/development/compilers/cudatoolkit/6.0.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ callPackage, ... } @ args:
-
-callPackage ./generic.nix (args // rec {
-  version = "6.0.37";
-  sha256 = "991e436c7a6c94ec67cf44204d136adfef87baa3ded270544fa211179779bc40";
-})
diff --git a/pkgs/development/compilers/cudatoolkit/6.5.nix b/pkgs/development/compilers/cudatoolkit/6.5.nix
deleted file mode 100644
index 3d9a3a503494..000000000000
--- a/pkgs/development/compilers/cudatoolkit/6.5.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ callPackage, ... } @ args:
-
-callPackage ./generic.nix (args // rec {
-  version = "6.5.19";
-  sha256 = "1x9zdmk8z784d3d35vr2ak1l4h5v4jfjhpxfi9fl9dvjkcavqyaj";
-})
diff --git a/pkgs/development/compilers/cudatoolkit/7.0.nix b/pkgs/development/compilers/cudatoolkit/7.0.nix
deleted file mode 100644
index 152dd6e92743..000000000000
--- a/pkgs/development/compilers/cudatoolkit/7.0.nix
+++ /dev/null
@@ -1,7 +0,0 @@
-{ callPackage, ... } @ args:
-
-callPackage ./generic.nix (args // rec {
-  version = "7.0.28";
-  sha256 = "1km5hpiimx11jcazg0h3mjzk220klwahs2vfqhjavpds5ff2wafi";
-  url = "http://developer.download.nvidia.com/compute/cuda/7_0/Prod/local_installers/cuda_7.0.28_linux.run";
-})
diff --git a/pkgs/development/compilers/cudatoolkit/default.nix b/pkgs/development/compilers/cudatoolkit/default.nix
new file mode 100644
index 000000000000..0ab3f52f2bff
--- /dev/null
+++ b/pkgs/development/compilers/cudatoolkit/default.nix
@@ -0,0 +1,109 @@
+{ lib, stdenv, fetchurl, patchelf, perl, ncurses, expat, python26, python27, zlib
+, xorg, gtk2, glib, fontconfig, freetype, unixODBC, alsaLib, glibc
+}:
+
+let
+
+  common =
+    { version, url, sha256
+    , python ? python27
+    }:
+
+    stdenv.mkDerivation rec {
+      name = "cudatoolkit-${version}";
+
+      dontPatchELF = true;
+      dontStrip = true;
+
+      src =
+        if stdenv.system == "x86_64-linux" then
+          fetchurl {
+            inherit url sha256;
+          }
+        else throw "cudatoolkit does not support platform ${stdenv.system}";
+
+      outputs = [ "out" "sdk" ];
+
+      buildInputs = [ perl ];
+
+      runtimeDependencies = [
+        ncurses expat python zlib glibc
+        xorg.libX11 xorg.libXext xorg.libXrender xorg.libXt xorg.libXtst xorg.libXi xorg.libXext
+        gtk2 glib fontconfig freetype unixODBC alsaLib
+      ];
+
+      rpath = "${stdenv.lib.makeLibraryPath runtimeDependencies}:${stdenv.cc.cc}/lib64";
+
+      unpackPhase = ''
+        sh $src --keep --noexec
+        cd pkg/run_files
+        sh cuda-linux64-rel-${version}-*.run --keep --noexec
+        sh cuda-samples-linux-${version}-*.run --keep --noexec
+        cd pkg
+      '';
+
+      buildPhase = ''
+        find . -type f -executable -exec patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          '{}' \; || true
+        find . -type f -exec patchelf \
+          --set-rpath $rpath:$out/jre/lib/amd64/jli:$out/lib:$out/lib64:$out/nvvm/lib:$out/nvvm/lib64:$(cat $NIX_CC/nix-support/orig-cc)/lib \
+          --force-rpath \
+          '{}' \; || true
+      '';
+
+      installPhase = ''
+        mkdir $out $sdk
+        perl ./install-linux.pl --prefix="$out"
+        rm $out/tools/CUDA_Occupancy_Calculator.xls
+        perl ./install-sdk-linux.pl --prefix="$sdk" --cudaprefix="$out"
+
+        # let's remove the 32-bit libraries, they confuse the lib64->lib mover
+        rm -rf $out/lib
+
+        # Fixup path to samples (needed for cuda 6.5 or else nsight will not find them)
+        if [ -d "$out"/cuda-samples ]; then
+            mv "$out"/cuda-samples "$out"/samples
+        fi
+      '';
+
+      meta = {
+        license = lib.licenses.unfree;
+      };
+    };
+
+in {
+
+  cudatoolkit5 = common {
+    version = "5.5.22";
+    url = http://developer.download.nvidia.com/compute/cuda/5_5/rel/installers/cuda_5.5.22_linux_64.run;
+    sha256 = "b997e1dbe95704e0e806e0cedc5fd370a385351fef565c7bae0917baf3a29aa4";
+    python = python26;
+  };
+
+  cudatoolkit6 = common {
+    version = "6.0.37";
+    url = http://developer.download.nvidia.com/compute/cuda/6_0/rel/installers/cuda_6.0.37_linux_64.run;
+    sha256 = "991e436c7a6c94ec67cf44204d136adfef87baa3ded270544fa211179779bc40";
+  };
+
+  cudatoolkit65 = common {
+    version = "6.5.19";
+    url = http://developer.download.nvidia.com/compute/cuda/6_5/rel/installers/cuda_6.5.19_linux_64.run;
+    sha256 = "1x9zdmk8z784d3d35vr2ak1l4h5v4jfjhpxfi9fl9dvjkcavqyaj";
+  };
+
+  cudatoolkit7 = common {
+    version = "7.0.28";
+    url = http://developer.download.nvidia.com/compute/cuda/7_0/Prod/local_installers/cuda_7.0.28_linux.run;
+    sha256 = "1km5hpiimx11jcazg0h3mjzk220klwahs2vfqhjavpds5ff2wafi";
+  };
+
+  cudatoolkit75 = common {
+    version = "7.5.18";
+    url = http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/cuda_7.5.18_linux.run;
+    sha256 = "1v2ylzp34ijyhcxyh5p6i0cwawwbbdhni2l5l4qm21s1cx9ish88";
+  };
+
+}
+
diff --git a/pkgs/development/compilers/cudatoolkit/generic.nix b/pkgs/development/compilers/cudatoolkit/generic.nix
deleted file mode 100644
index a02c917ab24a..000000000000
--- a/pkgs/development/compilers/cudatoolkit/generic.nix
+++ /dev/null
@@ -1,75 +0,0 @@
-{ lib, stdenv, fetchurl, patchelf, perl, ncurses, expat, python, zlib
-, xorg, gtk2, glib, fontconfig, freetype, unixODBC, alsaLib, glibc
-# generic inputs
-, version, sha256, url ? null, ...
-} :
-
-let
-  # eg, 5.5.22 => 5_5
-  mkShort = let str  = stdenv.lib.strings;
-                take = stdenv.lib.lists.take;
-            in v: str.concatStringsSep "_" (take 2 (str.splitString "." v));
-  shortVer = mkShort version;
-in stdenv.mkDerivation rec {
-  name = "cudatoolkit-${version}";
-
-  dontPatchELF = true;
-  dontStrip = true;
-
-  src =
-    if stdenv.system == "x86_64-linux" then
-      fetchurl {
-        url = if url != null then url else "http://developer.download.nvidia.com/compute/cuda/${shortVer}/rel/installers/cuda_${version}_linux_64.run";
-        sha256 = sha256;
-      }
-    else throw "cudatoolkit does not support platform ${stdenv.system}";
-
-  outputs = [ "out" "sdk" ];
-
-  buildInputs = [ perl ];
-
-  runtimeDependencies = [
-    ncurses expat python zlib glibc
-    xorg.libX11 xorg.libXext xorg.libXrender xorg.libXt xorg.libXtst xorg.libXi xorg.libXext
-    gtk2 glib fontconfig freetype unixODBC alsaLib
-  ];
-
-  rpath = "${stdenv.lib.makeLibraryPath runtimeDependencies}:${stdenv.cc.cc}/lib64";
-
-  unpackPhase = ''
-    sh $src --keep --noexec
-    cd pkg/run_files
-    sh cuda-linux64-rel-${version}-*.run --keep --noexec
-    sh cuda-samples-linux-${version}-*.run --keep --noexec
-    cd pkg
-  '';
-
-  buildPhase = ''
-    find . -type f -executable -exec patchelf \
-      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-      '{}' \; || true
-    find . -type f -exec patchelf \
-      --set-rpath $rpath:$out/jre/lib/amd64/jli:$out/lib:$out/lib64:$out/nvvm/lib:$out/nvvm/lib64:$(cat $NIX_CC/nix-support/orig-cc)/lib \
-      --force-rpath \
-      '{}' \; || true
-  '';
-
-  installPhase = ''
-    mkdir $out $sdk
-    perl ./install-linux.pl --prefix="$out"
-    rm $out/tools/CUDA_Occupancy_Calculator.xls
-    perl ./install-sdk-linux.pl --prefix="$sdk" --cudaprefix="$out"
-
-    # let's remove the 32-bit libraries, they confuse the lib64->lib mover
-    rm -rf $out/lib
-
-    # Fixup path to samples (needed for cuda 6.5 or else nsight will not find them)
-    if [ -d "$out"/cuda-samples ]; then
-        mv "$out"/cuda-samples "$out"/samples
-    fi
-  '';
-
-  meta = {
-    license = lib.licenses.unfree;
-  };
-}
diff --git a/pkgs/development/compilers/ecl/default.nix b/pkgs/development/compilers/ecl/default.nix
index f863565ab072..a04ec454cae3 100644
--- a/pkgs/development/compilers/ecl/default.nix
+++ b/pkgs/development/compilers/ecl/default.nix
@@ -7,11 +7,11 @@ let
   s = # Generated upstream information
   rec {
     baseName="ecl";
-    version="16.0.0";
+    version="16.1.2";
     name="${baseName}-${version}";
-    hash="0czh78z9i5b7jc241mq1h1gdscvdw5fbhfb0g9sn4rchwk1x8gil";
-    url="https://common-lisp.net/project/ecl/files/ecl-16.0.0.tgz";
-    sha256="0czh78z9i5b7jc241mq1h1gdscvdw5fbhfb0g9sn4rchwk1x8gil";
+    hash="16ab8qs3awvdxy8xs8jy82v8r04x4wr70l9l2j45vgag18d2nj1d";
+    url="https://common-lisp.net/project/ecl/files/release/16.1.2/ecl-16.1.2.tgz";
+    sha256="16ab8qs3awvdxy8xs8jy82v8r04x4wr70l9l2j45vgag18d2nj1d";
   };
   buildInputs = [
     libtool autoconf automake
diff --git a/pkgs/development/compilers/elm/packages/elm-compiler.nix b/pkgs/development/compilers/elm/packages/elm-compiler.nix
index 2c390ee406f3..38913e501b05 100644
--- a/pkgs/development/compilers/elm/packages/elm-compiler.nix
+++ b/pkgs/development/compilers/elm/packages/elm-compiler.nix
@@ -10,8 +10,8 @@ mkDerivation {
   version = "0.16";
   src = fetchgit {
     url = "https://github.com/elm-lang/elm-compiler";
-    sha256 = "696413b69fa5e66f878ed189094be5f74dfaced42121c82ac88bbab1c2bb9861";
-    rev = "cb1bad3b6ebaa02d5af47e9b98eab7d475a3a48d";
+    sha256 = "b3bcdca469716f3a4195469549a9e9bc53a6030aff132ec620b9c93958a5ffe6";
+    rev = "df86c1c9b3cf06de3ccb78f26b4d2fac0129ce5a";
   };
   isLibrary = true;
   isExecutable = true;
@@ -33,6 +33,6 @@ mkDerivation {
   ];
   jailbreak = true;
   homepage = "http://elm-lang.org";
-  description = "Values to help with elm-package, elm-make, and elm-lang.org.";
+  description = "Values to help with elm-package, elm-make, and elm-lang.org";
   license = stdenv.lib.licenses.bsd3;
 }
diff --git a/pkgs/development/compilers/elm/packages/elm-make.nix b/pkgs/development/compilers/elm/packages/elm-make.nix
index 953039ec0a83..923caf8e4c86 100644
--- a/pkgs/development/compilers/elm/packages/elm-make.nix
+++ b/pkgs/development/compilers/elm/packages/elm-make.nix
@@ -8,8 +8,8 @@ mkDerivation {
   version = "0.16";
   src = fetchgit {
     url = "https://github.com/elm-lang/elm-make";
-    sha256 = "bae1206c8066fb4e191345a3da79b89a5ec488929370b210203c8b4dcb35cebc";
-    rev = "e3bfc3e3d04c9b47e18fac289c796caec88d4fef";
+    sha256 = "fc0a6ed08b236dfab43e9af73f8e83a3b88a155695a9671a2b291dc596a75116";
+    rev = "54e0b33fea0cd72400ac6a3dec7643bf1b900741";
   };
   isLibrary = false;
   isExecutable = true;
diff --git a/pkgs/development/compilers/elm/packages/elm-reactor.nix b/pkgs/development/compilers/elm/packages/elm-reactor.nix
index 7715523a88c0..90fdb68480ca 100644
--- a/pkgs/development/compilers/elm/packages/elm-reactor.nix
+++ b/pkgs/development/compilers/elm/packages/elm-reactor.nix
@@ -8,8 +8,8 @@ mkDerivation {
   version = "0.16";
   src = fetchgit {
     url = "https://github.com/elm-lang/elm-reactor";
-    sha256 = "dbf881808ff00772d464675f1dd88a40273569ab0e9298805133a3b8f3ed4f26";
-    rev = "ff4ad13ea6b55c63b2d2099b738fd1d5ec2d29b4";
+    sha256 = "55605b8443dad20c78e297ce35a603cb107b0c1e57bf1c4710faaebc60396de0";
+    rev = "b03166296d11e240fa04cdb748e1f3c4af7afc83";
   };
   isLibrary = false;
   isExecutable = true;
diff --git a/pkgs/development/compilers/elm/update-elm.rb b/pkgs/development/compilers/elm/update-elm.rb
index 4a8001059c98..363655415a95 100755
--- a/pkgs/development/compilers/elm/update-elm.rb
+++ b/pkgs/development/compilers/elm/update-elm.rb
@@ -14,6 +14,7 @@ for pkg, ver in $elm_packages
 end
 
 File.open("release.nix", 'w') do |file|
+  file.puts "{ callPackage }:"
   file.puts "{"
   file.puts "  version = \"#{$elm_version}\";"
   file.puts "  packages = {"
diff --git a/pkgs/development/compilers/fpc/lazarus.nix b/pkgs/development/compilers/fpc/lazarus.nix
index c579ba5612a2..0db5f03a1ab9 100644
--- a/pkgs/development/compilers/fpc/lazarus.nix
+++ b/pkgs/development/compilers/fpc/lazarus.nix
@@ -8,10 +8,10 @@ stdenv, fetchurl
 let
   s =
   rec {
-    version = "1.4.4";
-    versionSuffix = "-0";
+    version = "1.6";
+    versionSuffix = ".0-0";
     url = "mirror://sourceforge/lazarus/Lazarus%20Zip%20_%20GZip/Lazarus%20${version}/lazarus-${version}${versionSuffix}.tar.gz";
-    sha256 = "12w3xwqif96a65b0ygi4riqrp0122wsp0ykb1j7k8hjfyk91x91a";
+    sha256 = "1a1w9yibi0rsr51bl7csnq6mr59x0934850kiabs80nr3sz05knb";
     name = "lazarus-${version}";
   };
   buildInputs = [
@@ -33,7 +33,7 @@ stdenv.mkDerivation {
     "bigide"
   ];
   preBuild = ''
-    export makeFlags="$makeFlags LAZARUS_INSTALL_DIR=$out/lazarus/ INSTALL_PREFIX=$out/"
+    export makeFlags="$makeFlags LAZARUS_INSTALL_DIR=$out/share/lazarus/ INSTALL_PREFIX=$out/"
     export NIX_LDFLAGS="$NIX_LDFLAGS -L${stdenv.cc.cc}/lib -lXi -lX11 -lglib-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -lc -lXext -lpango-1.0 -latk-1.0 -lgdk_pixbuf-2.0 -lcairo -lgcc_s"
     export LCL_PLATFORM=gtk2
     mkdir -p $out/share "$out/lazarus"
diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix
index b163b8fc9e92..d478196af518 100644
--- a/pkgs/development/compilers/gcc/4.9/default.nix
+++ b/pkgs/development/compilers/gcc/4.9/default.nix
@@ -71,8 +71,10 @@ let version = "4.9.3";
       # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its
       # target libraries and tools.
       ++ optional langAda ../gnat-cflags.patch
-      ++ optional langFortran ../gfortran-driving.patch;
-
+      ++ optional langFortran ../gfortran-driving.patch
+      # The NXConstStr.patch can be removed at 4.9.4
+      ++ optional stdenv.isDarwin ../gfortran-darwin-NXConstStr.patch; 
+	  
     javaEcj = fetchurl {
       # The `$(top_srcdir)/ecj.jar' file is automatically picked up at
       # `configure' time.
diff --git a/pkgs/development/compilers/gcc/builder.sh b/pkgs/development/compilers/gcc/builder.sh
index 8d33f88de171..3190c5f5739f 100644
--- a/pkgs/development/compilers/gcc/builder.sh
+++ b/pkgs/development/compilers/gcc/builder.sh
@@ -25,7 +25,7 @@ if test "$noSysDirs" = "1"; then
         # Figure out what extra flags to pass to the gcc compilers
         # being generated to make sure that they use our glibc.
         extraFlags="$(cat $NIX_CC/nix-support/libc-cflags)"
-        extraLDFlags="$(cat $NIX_CC/nix-support/libc-ldflags) $(cat $NIX_CC/nix-support/libc-ldflags-before)"
+        extraLDFlags="$(cat $NIX_CC/nix-support/libc-ldflags) $(cat $NIX_CC/nix-support/libc-ldflags-before || true)"
 
         # Use *real* header files, otherwise a limits.h is generated
         # that does not include Glibc's limits.h (notably missing
diff --git a/pkgs/development/compilers/gcc/gfortran-darwin-NXConstStr.patch b/pkgs/development/compilers/gcc/gfortran-darwin-NXConstStr.patch
new file mode 100644
index 000000000000..a7e158ca364b
--- /dev/null
+++ b/pkgs/development/compilers/gcc/gfortran-darwin-NXConstStr.patch
@@ -0,0 +1,27 @@
+From 82f81877458ea372176eabb5de36329431dce99b Mon Sep 17 00:00:00 2001
+From: Iain Sandoe <iain@codesourcery.com>
+Date: Sat, 21 Dec 2013 00:30:18 +0000
+Subject: [PATCH] don't try to mark local symbols as no-dead-strip
+
+---
+ gcc/config/darwin.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
+index 40804b8..0080299 100644
+--- a/gcc/config/darwin.c
++++ b/gcc/config/darwin.c
+@@ -1259,6 +1259,11 @@ darwin_encode_section_info (tree decl, rtx rtl, int first ATTRIBUTE_UNUSED)
+ void
+ darwin_mark_decl_preserved (const char *name)
+ {
++  /* Actually we shouldn't mark any local symbol this way, but for now
++     this only happens with ObjC meta-data.  */
++  if (darwin_label_is_anonymous_local_objc_name (name))
++    return;
++
+   fprintf (asm_out_file, "\t.no_dead_strip ");
+   assemble_name (asm_out_file, name);
+   fputc ('\n', asm_out_file);
+-- 
+2.2.1
diff --git a/pkgs/development/compilers/gcc/gfortran-darwin.nix b/pkgs/development/compilers/gcc/gfortran-darwin.nix
index ee405c6fb655..66f273482cfb 100644
--- a/pkgs/development/compilers/gcc/gfortran-darwin.nix
+++ b/pkgs/development/compilers/gcc/gfortran-darwin.nix
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
   makeFlags = ["CC=clang"];
   passthru.cc = stdenv.cc.cc;
   meta = with stdenv.lib; {
-    description = "GNU Fortran compiler, part of the GNU Compiler Collection.";
+    description = "GNU Fortran compiler, part of the GNU Compiler Collection";
     homepage    = "https://gcc.gnu.org/fortran/";
     license     = licenses.gpl3Plus;
     platforms   = platforms.darwin;
diff --git a/pkgs/development/compilers/ghc/7.10.2.nix b/pkgs/development/compilers/ghc/7.10.2.nix
index 7a1f7ec8c6bf..935834474542 100644
--- a/pkgs/development/compilers/ghc/7.10.2.nix
+++ b/pkgs/development/compilers/ghc/7.10.2.nix
@@ -1,8 +1,9 @@
-{ stdenv, fetchurl, fetchpatch, ghc, perl, gmp, ncurses, libiconv, binutils, coreutils
+{ stdenv, fetchurl, fetchpatch, bootPkgs, perl, gmp, ncurses, libiconv, binutils, coreutils
 , libxml2, libxslt, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42, hscolour
 }:
 
 let
+  inherit (bootPkgs) ghc;
 
   buildMK = ''
     libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-gmp-libraries="${gmp.out}/lib"
@@ -60,6 +61,10 @@ stdenv.mkDerivation rec {
     done
   '';
 
+  passthru = {
+    inherit bootPkgs;
+  };
+
   meta = {
     homepage = "http://haskell.org/ghc";
     description = "The Glasgow Haskell Compiler";
diff --git a/pkgs/development/compilers/ghc/7.10.3.nix b/pkgs/development/compilers/ghc/7.10.3.nix
index 68ac1a9d99e4..f3be40e145dd 100644
--- a/pkgs/development/compilers/ghc/7.10.3.nix
+++ b/pkgs/development/compilers/ghc/7.10.3.nix
@@ -1,8 +1,9 @@
-{ stdenv, fetchurl, fetchpatch, ghc, perl, gmp, ncurses, libiconv, binutils, coreutils
+{ stdenv, fetchurl, fetchpatch, bootPkgs, perl, gmp, ncurses, libiconv, binutils, coreutils
 , libxml2, libxslt, docbook_xsl, docbook_xml_dtd_45, docbook_xml_dtd_42, hscolour
 }:
 
 let
+  inherit (bootPkgs) ghc;
 
   docFixes = fetchurl {
     url = "https://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3a.patch";
@@ -61,6 +62,10 @@ stdenv.mkDerivation rec {
     done
   '';
 
+  passthru = {
+    inherit bootPkgs;
+  };
+
   meta = {
     homepage = "http://haskell.org/ghc";
     description = "The Glasgow Haskell Compiler";
diff --git a/pkgs/development/compilers/ghc/8.0.1.nix b/pkgs/development/compilers/ghc/8.0.1.nix
index ec397d9cc524..3a451204eead 100644
--- a/pkgs/development/compilers/ghc/8.0.1.nix
+++ b/pkgs/development/compilers/ghc/8.0.1.nix
@@ -1,7 +1,11 @@
-{ stdenv, fetchurl, fetchpatch, ghc, perl, gmp, ncurses, libiconv, binutils, coreutils
+{ stdenv, fetchurl, fetchpatch, bootPkgs, perl, gmp, ncurses, libiconv, binutils, coreutils
 , hscolour
 }:
 
+let
+  inherit (bootPkgs) ghc;
+
+in 
 stdenv.mkDerivation rec {
   version = "8.0.0.20160204";
   name = "ghc-${version}";
@@ -51,6 +55,10 @@ stdenv.mkDerivation rec {
     done
   '';
 
+  passthru = {
+    inherit bootPkgs;
+  };
+
   meta = {
     homepage = "http://haskell.org/ghc";
     description = "The Glasgow Haskell Compiler";
diff --git a/pkgs/development/compilers/ghc/head.nix b/pkgs/development/compilers/ghc/head.nix
index 8b6c371537bc..ffb6512000ce 100644
--- a/pkgs/development/compilers/ghc/head.nix
+++ b/pkgs/development/compilers/ghc/head.nix
@@ -1,8 +1,11 @@
-{ stdenv, fetchgit, ghc, perl, gmp, ncurses, libiconv, binutils, coreutils
+{ stdenv, fetchgit, bootPkgs, perl, gmp, ncurses, libiconv, binutils, coreutils
 , autoconf, automake, happy, alex
 }:
 
-stdenv.mkDerivation rec {
+let
+  inherit (bootPkgs) ghc;
+
+in stdenv.mkDerivation rec {
   version = "7.11.20151216";
   name = "ghc-${version}";
   rev = "28638dfe79e915f33d75a1b22c5adce9e2b62b97";
@@ -62,6 +65,10 @@ stdenv.mkDerivation rec {
     done
   '';
 
+  passthru = {
+    inherit bootPkgs;
+  };
+
   meta = {
     homepage = "http://haskell.org/ghc";
     description = "The Glasgow Haskell Compiler";
diff --git a/pkgs/development/compilers/ghc/nokinds.nix b/pkgs/development/compilers/ghc/nokinds.nix
index cad827060adf..27e7346714e6 100644
--- a/pkgs/development/compilers/ghc/nokinds.nix
+++ b/pkgs/development/compilers/ghc/nokinds.nix
@@ -1,6 +1,7 @@
-{ stdenv, fetchgit, ghc, perl, gmp, ncurses, libiconv, autoconf, automake, happy, alex }:
+{ stdenv, fetchgit, bootPkgs, perl, gmp, ncurses, libiconv, autoconf, automake, happy, alex }:
 
 let
+  inherit (bootPkgs) ghc;
 
   buildMK = ''
     libraries/integer-gmp_CONFIGURE_OPTS += --configure-option=--with-gmp-libraries="${gmp.out}/lib"
@@ -66,6 +67,10 @@ stdenv.mkDerivation rec {
   # that in turn causes GHCi to abort
   stripDebugFlags = [ "-S" ] ++ stdenv.lib.optional (!stdenv.isDarwin) "--keep-file-symbols";
 
+  passthru = {
+    inherit bootPkgs;
+  };
+
   meta = {
     homepage = "http://haskell.org/ghc";
     description = "The dependently-typed 'nokinds' branch of the Glasgow Haskell Compiler by Richard Eisenberg";
diff --git a/pkgs/development/compilers/ghcjs/default.nix b/pkgs/development/compilers/ghcjs/default.nix
index 91570752380e..e18c3213a3c0 100644
--- a/pkgs/development/compilers/ghcjs/default.nix
+++ b/pkgs/development/compilers/ghcjs/default.nix
@@ -20,9 +20,10 @@
 , ghcjs-prim
 , regex-posix
 
-, ghc, gmp
+, bootPkgs, gmp
 , jailbreak-cabal
 
+, runCommand
 , nodejs, stdenv, filepath, HTTP, HUnit, mtl, network, QuickCheck, random, stm
 , time
 , zlib, aeson, attoparsec, bzlib, hashable
@@ -37,18 +38,30 @@
 , coreutils
 , libiconv
 
-, ghcjsBoot ? import ./ghcjs-boot.nix { inherit fetchgit; }
+, ghcjsBootSrc ? fetchgit {
+    url = git://github.com/ghcjs/ghcjs-boot.git;
+    rev = "97dea5c4145bf80a1e7cffeb1ecd4d0ecacd5a2f";
+    sha256 = "1cgjzm595l2dx6fibzbkyv23bp1857qia0hb9d8aghf006al558j";
+    fetchSubmodules = true;
+  }
+, ghcjsBoot ? import ./ghcjs-boot.nix {
+    inherit runCommand;
+    src = ghcjsBootSrc;
+  }
 , shims ? import ./shims.nix { inherit fetchFromGitHub; }
 }:
-let version = "0.2.0"; in
-mkDerivation (rec {
+let
+  inherit (bootPkgs) ghc;
+  version = "0.2.0";
+
+in mkDerivation (rec {
   pname = "ghcjs";
   inherit version;
   src = fetchFromGitHub {
     owner = "ghcjs";
     repo = "ghcjs";
-    rev = "561365ba1667053b5dc5846e2a8edb33eaa3f6dd";
-    sha256 = "1vfa7j0ql3sng29m944iznjw9hcmyl57nfkgxa33dvi2ival8dl2";
+    rev = "13a99c6da40e3700e070e430d4c0f2ea96217b24";
+    sha256 = "01yg6babmhn2bfbmgkddisfj9ai7fc4r08s6acd49s9amcw7g5ld";
   };
   isLibrary = true;
   isExecutable = true;
@@ -100,18 +113,29 @@ mkDerivation (rec {
       sed -i -e 's@ \(a\|b\)/boot/[^/]\+@ \1@g' $patch
     done
   '';
+  # We build with --quick so we can build stage 2 packages separately.
+  # This is necessary due to: https://github.com/haskell/cabal/commit/af19fb2c2d231d8deff1cb24164a2bf7efb8905a
+  # Cabal otherwise fails to build: http://hydra.nixos.org/build/31824079/nixlog/1/raw
   postInstall = ''
     PATH=$out/bin:$PATH LD_LIBRARY_PATH=${gmp.out}/lib:${stdenv.cc}/lib64:$LD_LIBRARY_PATH \
       env -u GHC_PACKAGE_PATH $out/bin/ghcjs-boot \
         --dev \
+        --quick \
         --with-cabal ${cabal-install}/bin/cabal \
         --with-gmp-includes ${gmp.dev}/include \
         --with-gmp-libraries ${gmp.out}/lib
   '';
-  passthru = {
+  passthru = let
+    ghcjsNodePkgs = pkgs.nodePackages.override {
+      generated = ./node-packages-generated.nix;
+      self = ghcjsNodePkgs;
+    };
+  in {
+    inherit bootPkgs;
+    isCross = true;
     isGhcjs = true;
-    nativeGhc = ghc;
-    inherit nodejs;
+    inherit nodejs ghcjsBoot;
+    inherit (ghcjsNodePkgs) "socket.io";
   };
 
   homepage = "https://github.com/ghcjs/ghcjs";
diff --git a/pkgs/development/compilers/ghcjs/ghcjs-boot.nix b/pkgs/development/compilers/ghcjs/ghcjs-boot.nix
index cbf21cb8f5bc..c00e13a92404 100644
--- a/pkgs/development/compilers/ghcjs/ghcjs-boot.nix
+++ b/pkgs/development/compilers/ghcjs/ghcjs-boot.nix
@@ -1,7 +1,25 @@
-{ fetchgit }:
-fetchgit {
-  url = git://github.com/ghcjs/ghcjs-boot.git;
-  rev = "97dea5c4145bf80a1e7cffeb1ecd4d0ecacd5a2f";
-  sha256 = "1cgjzm595l2dx6fibzbkyv23bp1857qia0hb9d8aghf006al558j";
-  fetchSubmodules = true;
-}
+{ runCommand, src }:
+
+# we remove the patches so ghcjs-boot doesn't try to apply them again.
+runCommand "${src.name}-patched" {} ''
+  cp -r ${src} $out
+  chmod -R +w $out
+
+  # Make the patches be relative their corresponding package's directory.
+  # See: https://github.com/ghcjs/ghcjs-boot/pull/12
+  for patch in $out/patches/*.patch; do
+    echo ">> fixing patch: $patch"
+    sed -i -e 's@ \(a\|b\)/boot/[^/]\+@ \1@g' $patch
+  done
+
+  for package in $(cd $out/boot; echo *); do
+    patch=$out/patches/$package.patch
+    if [[ -e $patch ]]; then
+      echo ">> patching package: $package"
+      pushd $out/boot/$package
+      patch -p1 < $patch
+      rm $patch
+      popd
+    fi
+  done
+''
diff --git a/pkgs/development/compilers/ghcjs/node-packages-generated.nix b/pkgs/development/compilers/ghcjs/node-packages-generated.nix
new file mode 100644
index 000000000000..a3c882ff76c8
--- /dev/null
+++ b/pkgs/development/compilers/ghcjs/node-packages-generated.nix
@@ -0,0 +1,943 @@
+{ self, fetchurl, fetchgit ? null, lib }:
+
+{
+  by-spec."accepts"."1.1.4" =
+    self.by-version."accepts"."1.1.4";
+  by-version."accepts"."1.1.4" = self.buildNodePackage {
+    name = "accepts-1.1.4";
+    version = "1.1.4";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/accepts/-/accepts-1.1.4.tgz";
+      name = "accepts-1.1.4.tgz";
+      sha1 = "d71c96f7d41d0feda2c38cd14e8a27c04158df4a";
+    };
+    deps = {
+      "mime-types-2.0.14" = self.by-version."mime-types"."2.0.14";
+      "negotiator-0.4.9" = self.by-version."negotiator"."0.4.9";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."after"."0.8.1" =
+    self.by-version."after"."0.8.1";
+  by-version."after"."0.8.1" = self.buildNodePackage {
+    name = "after-0.8.1";
+    version = "0.8.1";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/after/-/after-0.8.1.tgz";
+      name = "after-0.8.1.tgz";
+      sha1 = "ab5d4fb883f596816d3515f8f791c0af486dd627";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."arraybuffer.slice"."0.0.6" =
+    self.by-version."arraybuffer.slice"."0.0.6";
+  by-version."arraybuffer.slice"."0.0.6" = self.buildNodePackage {
+    name = "arraybuffer.slice-0.0.6";
+    version = "0.0.6";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz";
+      name = "arraybuffer.slice-0.0.6.tgz";
+      sha1 = "f33b2159f0532a3f3107a272c0ccfbd1ad2979ca";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."backo2"."1.0.2" =
+    self.by-version."backo2"."1.0.2";
+  by-version."backo2"."1.0.2" = self.buildNodePackage {
+    name = "backo2-1.0.2";
+    version = "1.0.2";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz";
+      name = "backo2-1.0.2.tgz";
+      sha1 = "31ab1ac8b129363463e35b3ebb69f4dfcfba7947";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."base64-arraybuffer"."0.1.2" =
+    self.by-version."base64-arraybuffer"."0.1.2";
+  by-version."base64-arraybuffer"."0.1.2" = self.buildNodePackage {
+    name = "base64-arraybuffer-0.1.2";
+    version = "0.1.2";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz";
+      name = "base64-arraybuffer-0.1.2.tgz";
+      sha1 = "474df4a9f2da24e05df3158c3b1db3c3cd46a154";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."base64id"."0.1.0" =
+    self.by-version."base64id"."0.1.0";
+  by-version."base64id"."0.1.0" = self.buildNodePackage {
+    name = "base64id-0.1.0";
+    version = "0.1.0";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz";
+      name = "base64id-0.1.0.tgz";
+      sha1 = "02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."benchmark"."1.0.0" =
+    self.by-version."benchmark"."1.0.0";
+  by-version."benchmark"."1.0.0" = self.buildNodePackage {
+    name = "benchmark-1.0.0";
+    version = "1.0.0";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/benchmark/-/benchmark-1.0.0.tgz";
+      name = "benchmark-1.0.0.tgz";
+      sha1 = "2f1e2fa4c359f11122aa183082218e957e390c73";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."better-assert"."~1.0.0" =
+    self.by-version."better-assert"."1.0.2";
+  by-version."better-assert"."1.0.2" = self.buildNodePackage {
+    name = "better-assert-1.0.2";
+    version = "1.0.2";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz";
+      name = "better-assert-1.0.2.tgz";
+      sha1 = "40866b9e1b9e0b55b481894311e68faffaebc522";
+    };
+    deps = {
+      "callsite-1.0.0" = self.by-version."callsite"."1.0.0";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."blob"."0.0.4" =
+    self.by-version."blob"."0.0.4";
+  by-version."blob"."0.0.4" = self.buildNodePackage {
+    name = "blob-0.0.4";
+    version = "0.0.4";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/blob/-/blob-0.0.4.tgz";
+      name = "blob-0.0.4.tgz";
+      sha1 = "bcf13052ca54463f30f9fc7e95b9a47630a94921";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."callsite"."1.0.0" =
+    self.by-version."callsite"."1.0.0";
+  by-version."callsite"."1.0.0" = self.buildNodePackage {
+    name = "callsite-1.0.0";
+    version = "1.0.0";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz";
+      name = "callsite-1.0.0.tgz";
+      sha1 = "280398e5d664bd74038b6f0905153e6e8af1bc20";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."component-bind"."1.0.0" =
+    self.by-version."component-bind"."1.0.0";
+  by-version."component-bind"."1.0.0" = self.buildNodePackage {
+    name = "component-bind-1.0.0";
+    version = "1.0.0";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz";
+      name = "component-bind-1.0.0.tgz";
+      sha1 = "00c608ab7dcd93897c0009651b1d3a8e1e73bbd1";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."component-emitter"."1.1.2" =
+    self.by-version."component-emitter"."1.1.2";
+  by-version."component-emitter"."1.1.2" = self.buildNodePackage {
+    name = "component-emitter-1.1.2";
+    version = "1.1.2";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz";
+      name = "component-emitter-1.1.2.tgz";
+      sha1 = "296594f2753daa63996d2af08d15a95116c9aec3";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."component-emitter"."1.2.0" =
+    self.by-version."component-emitter"."1.2.0";
+  by-version."component-emitter"."1.2.0" = self.buildNodePackage {
+    name = "component-emitter-1.2.0";
+    version = "1.2.0";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/component-emitter/-/component-emitter-1.2.0.tgz";
+      name = "component-emitter-1.2.0.tgz";
+      sha1 = "ccd113a86388d06482d03de3fc7df98526ba8efe";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."component-inherit"."0.0.3" =
+    self.by-version."component-inherit"."0.0.3";
+  by-version."component-inherit"."0.0.3" = self.buildNodePackage {
+    name = "component-inherit-0.0.3";
+    version = "0.0.3";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz";
+      name = "component-inherit-0.0.3.tgz";
+      sha1 = "645fc4adf58b72b649d5cae65135619db26ff143";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."debug"."0.7.4" =
+    self.by-version."debug"."0.7.4";
+  by-version."debug"."0.7.4" = self.buildNodePackage {
+    name = "debug-0.7.4";
+    version = "0.7.4";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/debug/-/debug-0.7.4.tgz";
+      name = "debug-0.7.4.tgz";
+      sha1 = "06e1ea8082c2cb14e39806e22e2f6f757f92af39";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."debug"."2.2.0" =
+    self.by-version."debug"."2.2.0";
+  by-version."debug"."2.2.0" = self.buildNodePackage {
+    name = "debug-2.2.0";
+    version = "2.2.0";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/debug/-/debug-2.2.0.tgz";
+      name = "debug-2.2.0.tgz";
+      sha1 = "f87057e995b1a1f6ae6a4960664137bc56f039da";
+    };
+    deps = {
+      "ms-0.7.1" = self.by-version."ms"."0.7.1";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."engine.io"."1.6.8" =
+    self.by-version."engine.io"."1.6.8";
+  by-version."engine.io"."1.6.8" = self.buildNodePackage {
+    name = "engine.io-1.6.8";
+    version = "1.6.8";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/engine.io/-/engine.io-1.6.8.tgz";
+      name = "engine.io-1.6.8.tgz";
+      sha1 = "de05a06b757e7517695e088c7b051c47819f511b";
+    };
+    deps = {
+      "base64id-0.1.0" = self.by-version."base64id"."0.1.0";
+      "debug-2.2.0" = self.by-version."debug"."2.2.0";
+      "ws-1.0.1" = self.by-version."ws"."1.0.1";
+      "engine.io-parser-1.2.4" = self.by-version."engine.io-parser"."1.2.4";
+      "accepts-1.1.4" = self.by-version."accepts"."1.1.4";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."engine.io-client"."1.6.8" =
+    self.by-version."engine.io-client"."1.6.8";
+  by-version."engine.io-client"."1.6.8" = self.buildNodePackage {
+    name = "engine.io-client-1.6.8";
+    version = "1.6.8";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/engine.io-client/-/engine.io-client-1.6.8.tgz";
+      name = "engine.io-client-1.6.8.tgz";
+      sha1 = "6e2db11648b45e405c46b172ea3e3dac37cc0ceb";
+    };
+    deps = {
+      "has-cors-1.1.0" = self.by-version."has-cors"."1.1.0";
+      "ws-1.0.1" = self.by-version."ws"."1.0.1";
+      "xmlhttprequest-ssl-1.5.1" = self.by-version."xmlhttprequest-ssl"."1.5.1";
+      "component-emitter-1.1.2" = self.by-version."component-emitter"."1.1.2";
+      "indexof-0.0.1" = self.by-version."indexof"."0.0.1";
+      "engine.io-parser-1.2.4" = self.by-version."engine.io-parser"."1.2.4";
+      "debug-2.2.0" = self.by-version."debug"."2.2.0";
+      "parseuri-0.0.4" = self.by-version."parseuri"."0.0.4";
+      "parsejson-0.0.1" = self.by-version."parsejson"."0.0.1";
+      "parseqs-0.0.2" = self.by-version."parseqs"."0.0.2";
+      "component-inherit-0.0.3" = self.by-version."component-inherit"."0.0.3";
+      "yeast-0.1.2" = self.by-version."yeast"."0.1.2";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."engine.io-parser"."1.2.4" =
+    self.by-version."engine.io-parser"."1.2.4";
+  by-version."engine.io-parser"."1.2.4" = self.buildNodePackage {
+    name = "engine.io-parser-1.2.4";
+    version = "1.2.4";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.4.tgz";
+      name = "engine.io-parser-1.2.4.tgz";
+      sha1 = "e0897b0bf14e792d4cd2a5950553919c56948c42";
+    };
+    deps = {
+      "after-0.8.1" = self.by-version."after"."0.8.1";
+      "arraybuffer.slice-0.0.6" = self.by-version."arraybuffer.slice"."0.0.6";
+      "base64-arraybuffer-0.1.2" = self.by-version."base64-arraybuffer"."0.1.2";
+      "blob-0.0.4" = self.by-version."blob"."0.0.4";
+      "has-binary-0.1.6" = self.by-version."has-binary"."0.1.6";
+      "utf8-2.1.0" = self.by-version."utf8"."2.1.0";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."has-binary"."0.1.6" =
+    self.by-version."has-binary"."0.1.6";
+  by-version."has-binary"."0.1.6" = self.buildNodePackage {
+    name = "has-binary-0.1.6";
+    version = "0.1.6";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz";
+      name = "has-binary-0.1.6.tgz";
+      sha1 = "25326f39cfa4f616ad8787894e3af2cfbc7b6e10";
+    };
+    deps = {
+      "isarray-0.0.1" = self.by-version."isarray"."0.0.1";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."has-binary"."0.1.7" =
+    self.by-version."has-binary"."0.1.7";
+  by-version."has-binary"."0.1.7" = self.buildNodePackage {
+    name = "has-binary-0.1.7";
+    version = "0.1.7";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz";
+      name = "has-binary-0.1.7.tgz";
+      sha1 = "68e61eb16210c9545a0a5cce06a873912fe1e68c";
+    };
+    deps = {
+      "isarray-0.0.1" = self.by-version."isarray"."0.0.1";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."has-cors"."1.1.0" =
+    self.by-version."has-cors"."1.1.0";
+  by-version."has-cors"."1.1.0" = self.buildNodePackage {
+    name = "has-cors-1.1.0";
+    version = "1.1.0";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz";
+      name = "has-cors-1.1.0.tgz";
+      sha1 = "5e474793f7ea9843d1bb99c23eef49ff126fff39";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."indexof"."0.0.1" =
+    self.by-version."indexof"."0.0.1";
+  by-version."indexof"."0.0.1" = self.buildNodePackage {
+    name = "indexof-0.0.1";
+    version = "0.0.1";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz";
+      name = "indexof-0.0.1.tgz";
+      sha1 = "82dc336d232b9062179d05ab3293a66059fd435d";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."isarray"."0.0.1" =
+    self.by-version."isarray"."0.0.1";
+  by-version."isarray"."0.0.1" = self.buildNodePackage {
+    name = "isarray-0.0.1";
+    version = "0.0.1";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz";
+      name = "isarray-0.0.1.tgz";
+      sha1 = "8a18acfca9a8f4177e09abfc6038939b05d1eedf";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."json3"."3.2.6" =
+    self.by-version."json3"."3.2.6";
+  by-version."json3"."3.2.6" = self.buildNodePackage {
+    name = "json3-3.2.6";
+    version = "3.2.6";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/json3/-/json3-3.2.6.tgz";
+      name = "json3-3.2.6.tgz";
+      sha1 = "f6efc93c06a04de9aec53053df2559bb19e2038b";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."json3"."3.3.2" =
+    self.by-version."json3"."3.3.2";
+  by-version."json3"."3.3.2" = self.buildNodePackage {
+    name = "json3-3.3.2";
+    version = "3.3.2";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/json3/-/json3-3.3.2.tgz";
+      name = "json3-3.3.2.tgz";
+      sha1 = "3c0434743df93e2f5c42aee7b19bcb483575f4e1";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."mime-db"."~1.12.0" =
+    self.by-version."mime-db"."1.12.0";
+  by-version."mime-db"."1.12.0" = self.buildNodePackage {
+    name = "mime-db-1.12.0";
+    version = "1.12.0";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz";
+      name = "mime-db-1.12.0.tgz";
+      sha1 = "3d0c63180f458eb10d325aaa37d7c58ae312e9d7";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."mime-types"."~2.0.4" =
+    self.by-version."mime-types"."2.0.14";
+  by-version."mime-types"."2.0.14" = self.buildNodePackage {
+    name = "mime-types-2.0.14";
+    version = "2.0.14";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz";
+      name = "mime-types-2.0.14.tgz";
+      sha1 = "310e159db23e077f8bb22b748dabfa4957140aa6";
+    };
+    deps = {
+      "mime-db-1.12.0" = self.by-version."mime-db"."1.12.0";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."ms"."0.7.1" =
+    self.by-version."ms"."0.7.1";
+  by-version."ms"."0.7.1" = self.buildNodePackage {
+    name = "ms-0.7.1";
+    version = "0.7.1";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/ms/-/ms-0.7.1.tgz";
+      name = "ms-0.7.1.tgz";
+      sha1 = "9cd13c03adbff25b65effde7ce864ee952017098";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."negotiator"."0.4.9" =
+    self.by-version."negotiator"."0.4.9";
+  by-version."negotiator"."0.4.9" = self.buildNodePackage {
+    name = "negotiator-0.4.9";
+    version = "0.4.9";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/negotiator/-/negotiator-0.4.9.tgz";
+      name = "negotiator-0.4.9.tgz";
+      sha1 = "92e46b6db53c7e421ed64a2bc94f08be7630df3f";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."object-component"."0.0.3" =
+    self.by-version."object-component"."0.0.3";
+  by-version."object-component"."0.0.3" = self.buildNodePackage {
+    name = "object-component-0.0.3";
+    version = "0.0.3";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz";
+      name = "object-component-0.0.3.tgz";
+      sha1 = "f0c69aa50efc95b866c186f400a33769cb2f1291";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."options".">=0.0.5" =
+    self.by-version."options"."0.0.6";
+  by-version."options"."0.0.6" = self.buildNodePackage {
+    name = "options-0.0.6";
+    version = "0.0.6";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/options/-/options-0.0.6.tgz";
+      name = "options-0.0.6.tgz";
+      sha1 = "ec22d312806bb53e731773e7cdaefcf1c643128f";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."parsejson"."0.0.1" =
+    self.by-version."parsejson"."0.0.1";
+  by-version."parsejson"."0.0.1" = self.buildNodePackage {
+    name = "parsejson-0.0.1";
+    version = "0.0.1";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/parsejson/-/parsejson-0.0.1.tgz";
+      name = "parsejson-0.0.1.tgz";
+      sha1 = "9b10c6c0d825ab589e685153826de0a3ba278bcc";
+    };
+    deps = {
+      "better-assert-1.0.2" = self.by-version."better-assert"."1.0.2";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."parseqs"."0.0.2" =
+    self.by-version."parseqs"."0.0.2";
+  by-version."parseqs"."0.0.2" = self.buildNodePackage {
+    name = "parseqs-0.0.2";
+    version = "0.0.2";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/parseqs/-/parseqs-0.0.2.tgz";
+      name = "parseqs-0.0.2.tgz";
+      sha1 = "9dfe70b2cddac388bde4f35b1f240fa58adbe6c7";
+    };
+    deps = {
+      "better-assert-1.0.2" = self.by-version."better-assert"."1.0.2";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."parseuri"."0.0.4" =
+    self.by-version."parseuri"."0.0.4";
+  by-version."parseuri"."0.0.4" = self.buildNodePackage {
+    name = "parseuri-0.0.4";
+    version = "0.0.4";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/parseuri/-/parseuri-0.0.4.tgz";
+      name = "parseuri-0.0.4.tgz";
+      sha1 = "806582a39887e1ea18dd5e2fe0e01902268e9350";
+    };
+    deps = {
+      "better-assert-1.0.2" = self.by-version."better-assert"."1.0.2";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."socket.io"."*" =
+    self.by-version."socket.io"."1.4.5";
+  by-version."socket.io"."1.4.5" = self.buildNodePackage {
+    name = "socket.io-1.4.5";
+    version = "1.4.5";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/socket.io/-/socket.io-1.4.5.tgz";
+      name = "socket.io-1.4.5.tgz";
+      sha1 = "f202f49eeb9cf7cf6c0971ad75d8d96d451ea4f7";
+    };
+    deps = {
+      "engine.io-1.6.8" = self.by-version."engine.io"."1.6.8";
+      "socket.io-parser-2.2.6" = self.by-version."socket.io-parser"."2.2.6";
+      "socket.io-client-1.4.5" = self.by-version."socket.io-client"."1.4.5";
+      "socket.io-adapter-0.4.0" = self.by-version."socket.io-adapter"."0.4.0";
+      "has-binary-0.1.7" = self.by-version."has-binary"."0.1.7";
+      "debug-2.2.0" = self.by-version."debug"."2.2.0";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  "socket.io" = self.by-version."socket.io"."1.4.5";
+  by-spec."socket.io-adapter"."0.4.0" =
+    self.by-version."socket.io-adapter"."0.4.0";
+  by-version."socket.io-adapter"."0.4.0" = self.buildNodePackage {
+    name = "socket.io-adapter-0.4.0";
+    version = "0.4.0";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.4.0.tgz";
+      name = "socket.io-adapter-0.4.0.tgz";
+      sha1 = "fb9f82ab1aa65290bf72c3657955b930a991a24f";
+    };
+    deps = {
+      "debug-2.2.0" = self.by-version."debug"."2.2.0";
+      "socket.io-parser-2.2.2" = self.by-version."socket.io-parser"."2.2.2";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."socket.io-client"."1.4.5" =
+    self.by-version."socket.io-client"."1.4.5";
+  by-version."socket.io-client"."1.4.5" = self.buildNodePackage {
+    name = "socket.io-client-1.4.5";
+    version = "1.4.5";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/socket.io-client/-/socket.io-client-1.4.5.tgz";
+      name = "socket.io-client-1.4.5.tgz";
+      sha1 = "400d630c31e7c9579e45173f977e4f5bd8dc7d2e";
+    };
+    deps = {
+      "debug-2.2.0" = self.by-version."debug"."2.2.0";
+      "engine.io-client-1.6.8" = self.by-version."engine.io-client"."1.6.8";
+      "component-bind-1.0.0" = self.by-version."component-bind"."1.0.0";
+      "component-emitter-1.2.0" = self.by-version."component-emitter"."1.2.0";
+      "object-component-0.0.3" = self.by-version."object-component"."0.0.3";
+      "socket.io-parser-2.2.6" = self.by-version."socket.io-parser"."2.2.6";
+      "has-binary-0.1.7" = self.by-version."has-binary"."0.1.7";
+      "indexof-0.0.1" = self.by-version."indexof"."0.0.1";
+      "parseuri-0.0.4" = self.by-version."parseuri"."0.0.4";
+      "to-array-0.1.4" = self.by-version."to-array"."0.1.4";
+      "backo2-1.0.2" = self.by-version."backo2"."1.0.2";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."socket.io-parser"."2.2.2" =
+    self.by-version."socket.io-parser"."2.2.2";
+  by-version."socket.io-parser"."2.2.2" = self.buildNodePackage {
+    name = "socket.io-parser-2.2.2";
+    version = "2.2.2";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.2.tgz";
+      name = "socket.io-parser-2.2.2.tgz";
+      sha1 = "3d7af6b64497e956b7d9fe775f999716027f9417";
+    };
+    deps = {
+      "debug-0.7.4" = self.by-version."debug"."0.7.4";
+      "json3-3.2.6" = self.by-version."json3"."3.2.6";
+      "component-emitter-1.1.2" = self.by-version."component-emitter"."1.1.2";
+      "isarray-0.0.1" = self.by-version."isarray"."0.0.1";
+      "benchmark-1.0.0" = self.by-version."benchmark"."1.0.0";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."socket.io-parser"."2.2.6" =
+    self.by-version."socket.io-parser"."2.2.6";
+  by-version."socket.io-parser"."2.2.6" = self.buildNodePackage {
+    name = "socket.io-parser-2.2.6";
+    version = "2.2.6";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.6.tgz";
+      name = "socket.io-parser-2.2.6.tgz";
+      sha1 = "38dfd61df50dcf8ab1d9e2091322bf902ba28b99";
+    };
+    deps = {
+      "debug-2.2.0" = self.by-version."debug"."2.2.0";
+      "json3-3.3.2" = self.by-version."json3"."3.3.2";
+      "component-emitter-1.1.2" = self.by-version."component-emitter"."1.1.2";
+      "isarray-0.0.1" = self.by-version."isarray"."0.0.1";
+      "benchmark-1.0.0" = self.by-version."benchmark"."1.0.0";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."to-array"."0.1.4" =
+    self.by-version."to-array"."0.1.4";
+  by-version."to-array"."0.1.4" = self.buildNodePackage {
+    name = "to-array-0.1.4";
+    version = "0.1.4";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz";
+      name = "to-array-0.1.4.tgz";
+      sha1 = "17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."ultron"."1.0.x" =
+    self.by-version."ultron"."1.0.2";
+  by-version."ultron"."1.0.2" = self.buildNodePackage {
+    name = "ultron-1.0.2";
+    version = "1.0.2";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz";
+      name = "ultron-1.0.2.tgz";
+      sha1 = "ace116ab557cd197386a4e88f4685378c8b2e4fa";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."utf8"."2.1.0" =
+    self.by-version."utf8"."2.1.0";
+  by-version."utf8"."2.1.0" = self.buildNodePackage {
+    name = "utf8-2.1.0";
+    version = "2.1.0";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz";
+      name = "utf8-2.1.0.tgz";
+      sha1 = "0cfec5c8052d44a23e3aaa908104e8075f95dfd5";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."ws"."1.0.1" =
+    self.by-version."ws"."1.0.1";
+  by-version."ws"."1.0.1" = self.buildNodePackage {
+    name = "ws-1.0.1";
+    version = "1.0.1";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/ws/-/ws-1.0.1.tgz";
+      name = "ws-1.0.1.tgz";
+      sha1 = "7d0b2a2e58cddd819039c29c9de65045e1b310e9";
+    };
+    deps = {
+      "options-0.0.6" = self.by-version."options"."0.0.6";
+      "ultron-1.0.2" = self.by-version."ultron"."1.0.2";
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."xmlhttprequest-ssl"."1.5.1" =
+    self.by-version."xmlhttprequest-ssl"."1.5.1";
+  by-version."xmlhttprequest-ssl"."1.5.1" = self.buildNodePackage {
+    name = "xmlhttprequest-ssl-1.5.1";
+    version = "1.5.1";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.1.tgz";
+      name = "xmlhttprequest-ssl-1.5.1.tgz";
+      sha1 = "3b7741fea4a86675976e908d296d4445961faa67";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+  by-spec."yeast"."0.1.2" =
+    self.by-version."yeast"."0.1.2";
+  by-version."yeast"."0.1.2" = self.buildNodePackage {
+    name = "yeast-0.1.2";
+    version = "0.1.2";
+    bin = false;
+    src = fetchurl {
+      url = "http://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz";
+      name = "yeast-0.1.2.tgz";
+      sha1 = "008e06d8094320c372dbc2f8ed76a0ca6c8ac419";
+    };
+    deps = {
+    };
+    optionalDependencies = {
+    };
+    peerDependencies = [];
+    os = [ ];
+    cpu = [ ];
+  };
+}
diff --git a/pkgs/development/compilers/ghcjs/node-packages.json b/pkgs/development/compilers/ghcjs/node-packages.json
new file mode 100644
index 000000000000..55fa86675e7a
--- /dev/null
+++ b/pkgs/development/compilers/ghcjs/node-packages.json
@@ -0,0 +1 @@
+[ "socket.io" ]
diff --git a/pkgs/development/compilers/ghcjs/shims.nix b/pkgs/development/compilers/ghcjs/shims.nix
index dbbf15de6c8b..2d68ea075515 100644
--- a/pkgs/development/compilers/ghcjs/shims.nix
+++ b/pkgs/development/compilers/ghcjs/shims.nix
@@ -2,6 +2,6 @@
 fetchFromGitHub {
   owner = "ghcjs";
   repo = "shims";
-  rev = "45f44f5f027ec03264b61b8049951e765cc0b23a";
-  sha256 = "090pz4rzwlcrjavbbzxhf6c7rq7rzmr10g89hmhw4c65c4fyyykp";
+  rev = "4df1808d03117ddcd45f276f0ddd85c73e59506a";
+  sha256 = "0nay4pmq3yqqvpz23709i3729840idpcc2ii2jd0xvaj1z61adda";
 }
diff --git a/pkgs/development/compilers/ghcjs/wrapper.nix b/pkgs/development/compilers/ghcjs/wrapper.nix
deleted file mode 100644
index 751b7d9a7de7..000000000000
--- a/pkgs/development/compilers/ghcjs/wrapper.nix
+++ /dev/null
@@ -1,77 +0,0 @@
-{ stdenv, ghc, makeWrapper, coreutils, writeScript }:
-let
-  ghcjs = ghc;
-  packageDBFlag = "-package-db";
-
-  GHCGetPackages = writeScript "ghc-get-packages.sh" ''
-    #! ${stdenv.shell}
-    # Usage:
-    #  $1: version of GHC
-    #  $2: invocation path of GHC
-    #  $3: prefix
-    version="$1"
-    if test -z "$3"; then
-      prefix="${packageDBFlag} "
-    else
-      prefix="$3"
-    fi
-    PATH="$PATH:$2"
-    IFS=":"
-    for p in $PATH; do
-      for i in "$p/../share/ghcjs/$system-${ghcjs.version}-${ghcjs.ghc.version}"{,/lib,/ghcjs}"/package.conf.d" "$p/../lib/ghcjs-${ghc.version}_ghc-${ghc.ghc.version}/package.conf.d" ; do
-        # output takes place here
-        test -f $i/package.cache && echo -n " $prefix$i"
-      done
-    done
-  '';
-
-  GHCPackages = writeScript "ghc-packages.sh" ''
-    #! ${stdenv.shell} -e
-    declare -A GHC_PACKAGES_HASH # using bash4 hashs to get uniq paths
-
-    for arg in $(${GHCGetPackages} ${ghcjs.version} "$(dirname $0)"); do # Why is ghc.version passed in from here instead of captured in the other script directly?
-      case "$arg" in
-        ${packageDBFlag}) ;;
-        *)
-          CANONICALIZED="$(${coreutils}/bin/readlink -f -- "$arg")"
-          GHC_PACKAGES_HASH["$CANONICALIZED"]= ;;
-      esac
-    done
-
-    for path in ''${!GHC_PACKAGES_HASH[@]}; do
-      echo -n "$path:"
-    done
-  '';
-in
-stdenv.mkDerivation {
-  name = "ghcjs-ghc${ghcjs.ghc.version}-${ghcjs.version}-wrapper";
-
-  buildInputs = [makeWrapper];
-  propagatedBuildInputs = [ghcjs];
-
-  unpackPhase = "true";
-  installPhase = ''
-    runHook preInstall
-
-    mkdir -p $out/bin
-    for prg in ghcjs ; do
-      makeWrapper $ghc/bin/$prg $out/bin/$prg --add-flags "\$(${GHCGetPackages} ${ghcjs.version} \"\$(dirname \$0)\")"
-    done
-    for prg in ghcjs-pkg ; do
-      makeWrapper $ghc/bin/$prg $out/bin/$prg --add-flags "\$(${GHCGetPackages} ${ghcjs.version} \"\$(dirname \$0)\" -${packageDBFlag}=)"
-    done
-
-    mkdir -p $out/nix-support
-    ln -s $out/nix-support/propagated-build-inputs $out/nix-support/propagated-user-env-packages
-
-    mkdir -p $out/share/doc
-    ln -s $ghc/lib $out/lib
-    ln -s $ghc/share/doc/ghc $out/share/doc/ghc-${ghcjs.version}
-
-    runHook postInstall
-  '';
-
-  ghc = ghcjs;
-  inherit GHCGetPackages GHCPackages;
-  inherit (ghcjs) meta version;
-}
diff --git a/pkgs/development/compilers/ghdl/default.nix b/pkgs/development/compilers/ghdl/default.nix
index 7b2e03f8d573..3e84ce1d0ae0 100644
--- a/pkgs/development/compilers/ghdl/default.nix
+++ b/pkgs/development/compilers/ghdl/default.nix
@@ -1,58 +1,28 @@
 { stdenv, fetchurl, gnat, zlib }:
 
+# I think that mcode can only generate x86 code,
+# so it fails to link pieces on x86_64.
 assert stdenv.system == "i686-linux";
 
 let
-  version = "0.31";
+  version = "0.33";
 in
 stdenv.mkDerivation rec {
   name = "ghdl-mcode-${version}";
 
   src = fetchurl {
-    url = "mirror://sourceforge/ghdl/ghdl-${version}.tar.gz";
-    sha256 = "1v0l9h6906b0bvnwfi2qg5nz9vjg80isc5qgjxr1yqxpkfm2xcf0";
+    url = "https://github.com/tgingold/ghdl/archive/v${version}.tar.gz";
+    sha256 = "09yvgqyglbakd74v2dgr470clzm744i232nixyffcds55vkij5da";
   };
 
   buildInputs = [ gnat zlib ];
 
-  # Tarbomb
-  preUnpack = ''
-    mkdir ghdl
-    cd ghdl
-  '';
-
-  sourceRoot = "translate/ghdldrv";
-
   patchPhase = ''
-    sed -i 's,$$curdir/lib,'$out'/share/ghdl_mcode/translate/lib,' Makefile
-  '';
-
-  postBuild = ''
-    # Build the LIB
-    ln -s ghdl_mcode ghdl
-    make install.mcode
+    # Disable warnings-as-errors, because there are warnings (unused things)
+    sed -i s/-gnatwae/-gnatwa/ Makefile.in ghdl.gpr.in
   '';
 
-  installPhase = ''
-    mkdir -p $out/bin
-    cp ghdl_mcode $out/bin
-
-    mkdir -p $out/share/ghdl_mcode/translate
-    cp -R ../lib $out/share/ghdl_mcode/translate
-    cp -R ../../libraries $out/share/ghdl_mcode
-
-    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.
-    # As we will change the timestamps to 1970-01-01 00:00:01, we also set the
-    # content of that .cf to that value. This way ghdl does not complain on
-    # the installed object files from the basic libraries (ieee, ...)
-    pushd $out
-    find . -name "*.cf" -exec \
-        sed 's/[0-9]*\.000" /19700101000001.000" /g' -i {} \;
-    popd
-  '';
+  enableParallelBuilding = true;
 
   meta = {
     homepage = "http://sourceforge.net/p/ghdl-updates/wiki/Home/";
diff --git a/pkgs/development/compilers/go/1.4.nix b/pkgs/development/compilers/go/1.4.nix
index a31ef704e6a0..a81336cf8cf7 100644
--- a/pkgs/development/compilers/go/1.4.nix
+++ b/pkgs/development/compilers/go/1.4.nix
@@ -46,6 +46,8 @@ stdenv.mkDerivation rec {
     sed -i 's,/bin/pwd,'"`type -P pwd`", src/os/os_test.go
     # Disable the unix socket test
     sed -i '/TestShutdownUnix/areturn' src/net/net_test.go
+    # Disable network timeout test
+    sed -i '/TestDialTimeout/areturn' src/net/dial_test.go
     # Disable the hostname test
     sed -i '/TestHostname/areturn' src/os/os_test.go
     # ParseInLocation fails the test
@@ -84,7 +86,6 @@ stdenv.mkDerivation rec {
   '';
 
   patches = [
-    ./cacert-1.4.patch
     ./remove-tools-1.4.patch
   ];
 
diff --git a/pkgs/development/compilers/go/1.5.nix b/pkgs/development/compilers/go/1.5.nix
index 54c8cf219d5f..b5bfac850280 100644
--- a/pkgs/development/compilers/go/1.5.nix
+++ b/pkgs/development/compilers/go/1.5.nix
@@ -89,7 +89,6 @@ stdenv.mkDerivation rec {
   '';
 
   patches = [
-    ./cacert-1.5.patch
     ./remove-tools-1.5.patch
   ]
   # -ldflags=-s is required to compile on Darwin, see
diff --git a/pkgs/development/compilers/go/1.6.nix b/pkgs/development/compilers/go/1.6.nix
new file mode 100644
index 000000000000..122f0d336f71
--- /dev/null
+++ b/pkgs/development/compilers/go/1.6.nix
@@ -0,0 +1,140 @@
+{ stdenv, lib, fetchurl, tzdata, iana_etc, go_1_4, runCommand
+, perl, which, pkgconfig, patch
+, pcre
+, Security, Foundation }:
+
+let
+  goBootstrap = runCommand "go-bootstrap" {} ''
+    mkdir $out
+    cp -rf ${go_1_4}/* $out/
+    chmod -R u+w $out
+    find $out -name "*.c" -delete
+    cp -rf $out/bin/* $out/share/go/bin/
+  '';
+in
+
+stdenv.mkDerivation rec {
+  name = "go-${version}";
+  version = "1.6";
+
+  src = fetchurl {
+    url = "https://github.com/golang/go/archive/go${version}.tar.gz";
+    sha256 = "04g7w34qamgy9gqpy75xm03s8xbbslv1735iv1a06z8sphpkgs7m";
+  };
+
+  # perl is used for testing go vet
+  nativeBuildInputs = [ perl which pkgconfig patch ];
+  buildInputs = [ pcre ];
+  propagatedBuildInputs = lib.optionals stdenv.isDarwin [
+    Security Foundation
+  ];
+
+  # I'm not sure what go wants from its 'src', but the go installation manual
+  # describes an installation keeping the src.
+  preUnpack = ''
+    mkdir -p $out/share
+    cd $out/share
+  '';
+
+  prePatch = ''
+    # Ensure that the source directory is named go
+    cd ..
+    if [ ! -d go ]; then
+      mv * go
+    fi
+
+    cd go
+    patchShebangs ./ # replace /bin/bash
+
+    # Disabling the 'os/http/net' tests (they want files not available in
+    # chroot builds)
+    rm src/net/{listen,parse}_test.go
+    rm src/syscall/exec_linux_test.go
+    # !!! substituteInPlace does not seems to be effective.
+    # The os test wants to read files in an existing path. Just don't let it be /usr/bin.
+    sed -i 's,/usr/bin,'"`pwd`", src/os/os_test.go
+    sed -i 's,/bin/pwd,'"`type -P pwd`", src/os/os_test.go
+    # Disable the unix socket test
+    sed -i '/TestShutdownUnix/areturn' src/net/net_test.go
+    # Disable the hostname test
+    sed -i '/TestHostname/areturn' src/os/os_test.go
+    # ParseInLocation fails the test
+    sed -i '/TestParseInSydney/areturn' src/time/format_test.go
+    # Remove the api check as it never worked
+    sed -i '/src\/cmd\/api\/run.go/ireturn nil' src/cmd/dist/test.go
+    # Remove the coverage test as we have removed this utility
+    sed -i '/TestCoverageWithCgo/areturn' src/cmd/go/go_test.go
+
+    sed -i 's,/etc/protocols,${iana_etc}/etc/protocols,' src/net/lookup_unix.go
+    sed -i 's,/etc/services,${iana_etc}/etc/services,' src/net/port_unix.go
+  '' + lib.optionalString stdenv.isLinux ''
+    sed -i 's,/usr/share/zoneinfo/,${tzdata}/share/zoneinfo/,' src/time/zoneinfo_unix.go
+  '' + lib.optionalString stdenv.isDarwin ''
+    substituteInPlace src/race.bash --replace \
+      "sysctl machdep.cpu.extfeatures | grep -qv EM64T" true
+    sed -i 's,strings.Contains(.*sysctl.*,true {,' src/cmd/dist/util.go
+    sed -i 's,"/etc","'"$TMPDIR"'",' src/os/os_test.go
+    sed -i 's,/_go_os_test,'"$TMPDIR"'/_go_os_test,' src/os/path_test.go
+    sed -i '/TestCgoLookupIP/areturn' src/net/cgo_unix_test.go
+    sed -i '/TestChdirAndGetwd/areturn' src/os/os_test.go
+    sed -i '/TestRead0/areturn' src/os/os_test.go
+    sed -i '/TestNohup/areturn' src/os/signal/signal_test.go
+    sed -i '/TestSystemRoots/areturn' src/crypto/x509/root_darwin_test.go
+
+    sed -i '/TestGoInstallRebuildsStalePackagesInOtherGOPATH/areturn' src/cmd/go/go_test.go
+    sed -i '/TestBuildDashIInstallsDependencies/areturn' src/cmd/go/go_test.go
+
+    sed -i '/TestDisasmExtld/areturn' src/cmd/objdump/objdump_test.go
+
+    touch $TMPDIR/group $TMPDIR/hosts $TMPDIR/passwd
+  '';
+
+  patches = [
+    ./remove-tools-1.5.patch
+  ]
+  # -ldflags=-s is required to compile on Darwin, see
+  # https://github.com/golang/go/issues/11994
+  ++ stdenv.lib.optional stdenv.isDarwin ./strip.patch;
+
+  GOOS = if stdenv.isDarwin then "darwin" else "linux";
+  GOARCH = if stdenv.isDarwin then "amd64"
+           else if stdenv.system == "i686-linux" then "386"
+           else if stdenv.system == "x86_64-linux" then "amd64"
+           else if stdenv.isArm then "arm"
+           else throw "Unsupported system";
+  GOARM = stdenv.lib.optionalString (stdenv.system == "armv5tel-linux") "5";
+  GO386 = 387; # from Arch: don't assume sse2 on i686
+  CGO_ENABLED = 1;
+  GOROOT_BOOTSTRAP = "${goBootstrap}/share/go";
+
+  # The go build actually checks for CC=*/clang and does something different, so we don't
+  # just want the generic `cc` here.
+  CC = if stdenv.isDarwin then "clang" else "cc";
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    export GOROOT="$(pwd)/"
+    export GOBIN="$out/bin"
+    export PATH="$GOBIN:$PATH"
+    cd ./src
+    echo Building
+    ./all.bash
+  '';
+
+  preFixup = ''
+    rm -r $out/share/go/pkg/bootstrap
+  '';
+
+  setupHook = ./setup-hook.sh;
+
+  disallowedReferences = [ go_1_4 ];
+
+  meta = with stdenv.lib; {
+    branch = "1.6";
+    homepage = http://golang.org/;
+    description = "The Go Programming language";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ cstrahan wkennington ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/compilers/go/cacert-1.4.patch b/pkgs/development/compilers/go/cacert-1.4.patch
deleted file mode 100644
index 5346d3f39505..000000000000
--- a/pkgs/development/compilers/go/cacert-1.4.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Go comes with hardcoded cacert. We add the usual in NixOS,
-for easier NixOS life.
-
-diff -r 14854533dcc7 src/crypto/x509/root_unix.go
---- a/src/crypto/x509/root_unix.go	Thu Dec 11 11:27:56 2014 +1100
-+++ b/src/crypto/x509/root_unix.go	Tue Jan 06 00:41:31 2015 -0600
-@@ -17,6 +17,7 @@
- 	"/usr/local/share/certs/ca-root-nss.crt", // FreeBSD/DragonFly
- 	"/etc/pki/tls/cacert.pem",                // OpenELEC
- 	"/etc/certs/ca-certificates.crt",         // Solaris 11.2+
-+	"/etc/ssl/certs/ca-bundle.crt",           // NixOS
- }
- 
- // Possible directories with certificate files; stop after successfully
diff --git a/pkgs/development/compilers/go/cacert-1.5.patch b/pkgs/development/compilers/go/cacert-1.5.patch
deleted file mode 100644
index 32c322a104e6..000000000000
--- a/pkgs/development/compilers/go/cacert-1.5.patch
+++ /dev/null
@@ -1,8 +0,0 @@
---- a/src/crypto/x509/root_linux.go	2015-08-19 23:06:11.115133174 +0200
-+++ b/src/crypto/x509/root_linux.go	2015-08-19 23:07:04.238507161 +0200
-@@ -10,4 +10,5 @@
- 	"/etc/pki/tls/certs/ca-bundle.crt",   // Fedora/RHEL
- 	"/etc/ssl/ca-bundle.pem",             // OpenSUSE
- 	"/etc/pki/tls/cacert.pem",            // OpenELEC
-+	"/etc/ssl/certs/ca-bundle.crt",       // NixOS
- }
diff --git a/pkgs/development/compilers/ios-cross-compile/9.2.nix b/pkgs/development/compilers/ios-cross-compile/9.2.nix
new file mode 100644
index 000000000000..5ec24e01617a
--- /dev/null
+++ b/pkgs/development/compilers/ios-cross-compile/9.2.nix
@@ -0,0 +1,64 @@
+{ stdenv, git, clang,
+  fetchFromGitHub, requireFile,
+  openssl, xz, gnutar, gcc,
+  automake, autoconf, libtool, clangStdenv } :
+
+clangStdenv.mkDerivation rec {
+  name = "ios-cross-compile-${version}";
+  version = "9.2";
+  sdk = "iPhoneOS9.2.sdk";
+  cctools_port = fetchFromGitHub {
+    owner = "tpoechtrager";
+    repo = "cctools-port";
+    rev = "7d405492b09fa27546caaa989b8493829365deab";
+    sha256 = "0nj1q5bqdx5jm68dispybxc7wnkb6p8p2igpnap9q6qyv2r9p07w";
+  };
+  ldid = fetchFromGitHub {
+    owner = "tpoechtrager";
+    repo = "ldid";
+    rev = "3064ed628108da4b9a52cfbe5d4c1a5817811400";
+    sha256 = "1a6zaz8fgbi239l5zqx9xi3hsrv3jmfh8dkiy5gmnjs6v4gcf6sf";
+  };
+  src = requireFile rec {
+    name = "iPhoneOS9.2.sdk.tar.xz";
+    sha256 = "1l2h3cic9psrq3nmfv9aaxkdk8y2pvr0iq6apj87mb3ms9a4cqrq";
+    message = ''
+      You need to do the following steps to get a prepared
+      ios tarball.
+
+      1) Download an XCode dmg, specifically XCode_7.2.dmg
+      2) Install darling-dmg, available via: nix-env -i darling-dmg
+      3) Follow this shell history:
+
+      $ cd ~/
+      $ mkdir xcode
+      $ darling-dmg Xcode_7.2dmg xcode
+      $ cd xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
+      $ mktemp -d
+        /tmp/gar/tmp.4ZZ8kqyfqp/
+      $ mkdir /tmp/gar/tmp.4ZZ8kqyfqp/iPhoneOS9.2.sdk
+      $ cp -r iPhoneOS.sdk/* /tmp/gar/tmp.4ZZ8kqyfqp/iPhoneOS9.2.sdk
+      $ cp -r ../../../../Toolchains/XcodeDefault.xctoolchain/usr/include/c++/* \
+        /tmp/gar/tmp.4ZZ8kqyfqp/iPhoneOS9.2.sdk/usr/include/c++
+      $ tar -cf - * | xz -9 -c - > iPhoneOS9.2.sdk.tar.xz
+      $ cd ~/
+      $ fusermount -u xcode
+
+      Then do:
+
+      nix-prefetch-url file:///path/to/${name}
+
+      and run this installation again.
+   '';
+  };
+  buildInputs = [ git xz gnutar openssl automake autoconf libtool clang ];
+  alt_wrapper = ./alt_wrapper.c;
+  builder = ./9.2_builder.sh;
+  meta = {
+    description =
+    "Provides an iOS cross compiler from 7.1 up to iOS-${version} and ldid";
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ fxfactorial ];
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/development/compilers/ios-cross-compile/9.2_builder.sh b/pkgs/development/compilers/ios-cross-compile/9.2_builder.sh
new file mode 100644
index 000000000000..4604b1fdea72
--- /dev/null
+++ b/pkgs/development/compilers/ios-cross-compile/9.2_builder.sh
@@ -0,0 +1,153 @@
+# -*- shell-script -*-
+source $stdenv/setup
+
+function extract
+{
+    printf "extracting $(basename $1) ...\n"
+    local tarflags="xf"
+
+    case "$1" in
+        *.tar.xz)
+	    xz -dc $1 | tar "$tarflags" - ;;
+	*)
+	    printf "Make sure you give a iPhoneOS9.2.sdk.tar.xz file \n" ;;
+    esac
+}
+
+function verify_arch {
+    case "$1" in
+	# Our good arches.
+	armv7|arm64) ;;
+	*)
+	    local
+	    acc="armv7 | arm64"
+	    error_message=$(
+		printf '%s is not an acceptable arch. Try one of %s' "$1" "$acc"
+			 )
+	    printf "$error_message\n"
+	    exit
+    esac
+}
+
+function verify_sdk_version {
+    sdk_version=$(basename "$1" | grep -P -o "[0-9].[0-9]+")
+    case "$sdk_version" in
+	# Make sure the SDK is correct.
+	[5-9].[0-9]) ;;
+	*)
+	    printf 'No iPhone SDK version in file name\n'
+    esac
+}
+
+function do_build {
+
+    if [ $# -lt 2 ]; then
+	printf "usage: $0 iPhoneOS.sdk.tar* <target cpu>\n" 1>&2
+	printf "i.e. $0 /path/to/iPhoneOS.sdk.tar.xz armv7\n" 1>&2
+	exit 1
+    fi
+
+    mkdir -p $out
+
+    chmod -R 755 "$cctools_port"
+
+    pushd "$cctools_port"/usage_examples/ios_toolchain &> /dev/null
+
+    export LC_ALL=C
+    
+    local
+    triple='%s-apple-darwin11'
+    target_dir="$PWD/target"
+    sdk_dir="$target_dir/SDK"
+    platform="$(uname -s)"
+    # Will be mutated by verify_sdk_version
+    sdk_version=
+
+    mkdir -p "$target_dir"
+    mkdir -p "$target_dir/bin"
+    mkdir -p "$sdk_dir"
+
+    verify_arch "$2"
+    verify_sdk_version "$1"
+
+    triple="$(printf "$triple" "$2")"
+    pushd "$sdk_dir" &>/dev/null
+    extract "$1"
+
+    local sys_lib=$(
+    	find $sdk_dir -name libSystem.dylib -o -name libSystem.tbd | head -n1
+    	  )
+
+    if [ -z "$sys_lib" ]; then
+    	printf "SDK should contain libSystem{.dylib,.tbd}\n" 1>&2
+    	exit 1
+    fi
+
+    local sys_root=$(readlink -f "$(dirname $sys_lib)/../..")
+
+    local sdk_unboxed=$(basename $sys_root)
+
+    mv -f "$sys_root"/* "$sdk_dir" || true
+
+    popd &>/dev/null
+
+    printf "\nbuilding wrapper\n"
+
+    printf "int main(){return 0;}" | clang -xc -O2 -o "$target_dir"/bin/dsymutil -
+
+    clang -O2 -std=c99 $alt_wrapper \
+    	  -DTARGET_CPU=$(printf '"%s"' "$2") \
+    	  -DNIX_APPLE_HDRS=$(
+    	printf '"%s"' "-I$out/$sdk/usr/include"
+    	  ) \
+    	  -DNIX_APPLE_FRAMEWORKS=$(
+    	printf '"%s"' "$out/$sdk/System/Library/Frameworks"
+    	  ) \
+    	  -DNIX_APPLE_PRIV_FRAMEWORKS=$(
+    	printf '"%s"' "$out/$sdk/System/Library/PrivateFrameworks"
+    	  ) \
+    	  -DOS_VER_MIN=$(printf '"%s"' "7.1") \
+    	  -o "$target_dir/bin/$triple-clang"
+
+    pushd "$target_dir"/bin &>/dev/null
+
+    cp "$triple"-clang "$triple"-clang++
+
+    popd &>/dev/null
+
+    printf "\nbuilding ldid\n"
+
+    mkdir -p tmp
+    pushd tmp &>/dev/null
+    pushd "$ldid" &>/dev/null
+
+    chmod -R 755 "$ldid"
+
+    make INSTALLPREFIX="$target_dir" -j4 install
+    popd &>/dev/null
+    popd &>/dev/null
+
+    printf "\nbuilding cctools / ld64\n"
+
+    pushd ../../cctools &>/dev/null
+    git clean -fdx . &>/dev/null || true
+    ./autogen.sh
+    ./configure --target="$triple" --prefix="$target_dir"
+    make -j4
+    make install &>/dev/null
+
+    popd &>/dev/null
+
+    local me=`whoami`
+
+    for d in bin libexec SDK; do
+    	chown -R $me:$me target/$d
+    	cp -R target/$d $out
+    done
+
+    # Crucial piece
+    rm -rf $out/$sdk
+    mv $out/SDK $out/$sdk
+}
+
+do_build $src armv7
diff --git a/pkgs/development/compilers/ios-cross-compile/alt_wrapper.c b/pkgs/development/compilers/ios-cross-compile/alt_wrapper.c
new file mode 100644
index 000000000000..928b64e6fd9d
--- /dev/null
+++ b/pkgs/development/compilers/ios-cross-compile/alt_wrapper.c
@@ -0,0 +1,212 @@
+/*
+  This and the shell builder was originally written by
+  https://github.com/tpoechtrager but I had to modify both so that
+  they played nicely and were reproducible with nixpkgs. Much thanks
+  to MixRank for letting me work on this.
+  Edgar Aroutiounian <edgar.factorial@gmail.com>
+ */
+
+#ifndef TARGET_CPU
+#define TARGET_CPU "armv7"
+#endif
+
+#ifndef OS_VER_MIN
+#define OS_VER_MIN "4.2"
+#endif
+
+#ifndef NIX_APPLE_HDRS
+#define NIX_APPLE_HDRS ""
+#endif
+
+#ifndef NIX_APPLE_FRAMEWORKS
+#define NIX_APPLE_FRAMEWORKS ""
+#endif
+
+#ifndef NIX_APPLE_PRIV_FRAMEWORKS
+#define NIX_APPLE_PRIV_FRAMEWORKS ""
+#endif
+
+#define _GNU_SOURCE
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <stddef.h>
+#include <unistd.h>
+#include <limits.h>
+
+#ifdef __APPLE__
+#include <mach-o/dyld.h>
+#endif
+
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
+#include <sys/sysctl.h>
+#endif
+
+#ifdef __OpenBSD__
+#include <sys/types.h>
+#include <sys/user.h>
+#include <sys/stat.h>
+#endif
+
+char *get_executable_path(char *epath, size_t buflen)
+{
+  char *p;
+#ifdef __APPLE__
+  unsigned int l = buflen;
+  if (_NSGetExecutablePath(epath, &l) != 0) return NULL;
+#elif defined(__FreeBSD__) || defined(__DragonFly__)
+  int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
+  size_t l = buflen;
+  if (sysctl(mib, 4, epath, &l, NULL, 0) != 0) return NULL;
+#elif defined(__OpenBSD__)
+  int mib[4];
+  char **argv;
+  size_t len;
+  size_t l;
+  const char *comm;
+  int ok = 0;
+  mib[0] = CTL_KERN;
+  mib[1] = KERN_PROC_ARGS;
+  mib[2] = getpid();
+  mib[3] = KERN_PROC_ARGV;
+  if (sysctl(mib, 4, NULL, &len, NULL, 0) < 0)
+    abort();
+  if (!(argv = malloc(len)))
+    abort();
+  if (sysctl(mib, 4, argv, &len, NULL, 0) < 0)
+    abort();
+  comm = argv[0];
+  if (*comm == '/' || *comm == '.') {
+    char *rpath;
+    if ((rpath = realpath(comm, NULL))) {
+      strlcpy(epath, rpath, buflen);
+      free(rpath);
+      ok = 1;
+    }
+  } else {
+    char *sp;
+    char *xpath = strdup(getenv("PATH"));
+    char *path = strtok_r(xpath, ":", &sp);
+    struct stat st;
+    if (!xpath)
+      abort();
+    while (path) {
+      snprintf(epath, buflen, "%s/%s", path, comm);
+      if (!stat(epath, &st) && (st.st_mode & S_IXUSR)) {
+	ok = 1;
+	break;
+      }
+      path = strtok_r(NULL, ":", &sp);
+    }
+    free(xpath);
+  }
+  free(argv);
+  if (!ok) return NULL;
+  l = strlen(epath);
+#else
+  ssize_t l = readlink("/proc/self/exe", epath, buflen);
+#endif
+  if (l <= 0) return NULL;
+  epath[buflen - 1] = '\0';
+  p = strrchr(epath, '/');
+  if (p) *p = '\0';
+  return epath;
+}
+
+char *get_filename(char *str)
+{
+  char *p = strrchr(str, '/');
+  return p ? &p[1] : str;
+}
+
+void target_info(char *argv[], char **triple, char **compiler)
+{
+  char *p = get_filename(argv[0]);
+  char *x = strrchr(p, '-');
+  if (!x) abort();
+  *compiler = &x[1];
+  *x = '\0';
+  *triple = p;
+}
+
+void env(char **p, const char *name, char *fallback)
+{
+  char *ev = getenv(name);
+  if (ev) { *p = ev; return; }
+  *p = fallback;
+}
+
+int main(int argc, char *argv[])
+{
+  char **args = alloca(sizeof(char*) * (argc + 17));
+  int i, j;
+
+  char execpath[PATH_MAX+1];
+  char sdkpath[PATH_MAX+1];
+  char codesign_allocate[64];
+  char osvermin[64];
+
+  char *compiler, *target, *sdk, *cpu, *osmin;
+
+  target_info(argv, &target, &compiler);
+
+  if (!get_executable_path(execpath, sizeof(execpath))) abort();
+  snprintf(sdkpath, sizeof(sdkpath), "%s/../SDK", execpath);
+
+  snprintf(codesign_allocate, sizeof(codesign_allocate),
+	   "%s-codesign_allocate", target);
+
+  setenv("CODESIGN_ALLOCATE", codesign_allocate, 1);
+  setenv("IOS_FAKE_CODE_SIGN", "1", 1);
+
+  env(&sdk, "IOS_SDK_SYSROOT", sdkpath);
+  env(&cpu, "IOS_TARGET_CPU", TARGET_CPU);
+
+  env(&osmin, "IPHONEOS_DEPLOYMENT_TARGET", OS_VER_MIN);
+  unsetenv("IPHONEOS_DEPLOYMENT_TARGET");
+
+  snprintf(osvermin, sizeof(osvermin), "-miphoneos-version-min=%s", osmin);
+
+  for (i = 1; i < argc; ++i) {
+    if (!strcmp(argv[i], "-arch")) {
+      cpu = NULL;
+      break;
+    }
+  }
+
+  i = 0;
+
+  args[i++] = compiler;
+  args[i++] = "-target";
+  args[i++] = target;
+  args[i++] = "-isysroot";
+  args[i++] = sdk;
+  args[i++] = NIX_APPLE_HDRS;
+  args[i++] = "-F";
+  args[i++] = NIX_APPLE_FRAMEWORKS;
+  args[i++] = "-F";
+  args[i++] = NIX_APPLE_PRIV_FRAMEWORKS;
+
+  if (cpu) {
+    args[i++] = "-arch";
+    args[i++] = cpu;
+  }
+
+  args[i++] = osvermin;
+  args[i++] = "-mlinker-version=253.3";
+
+  for (j = 1; j < argc; ++i, ++j) args[i] = argv[j];
+
+  args[i] = NULL;
+
+  setenv("COMPILER_PATH", execpath, 1);
+  /* int k; */
+  /* for (k = 0; k < i; k++) */
+  /*   printf("Compiler option: %s\n", args[k]); */
+  /* printf("End of Compiler args\n"); */
+  execvp(compiler, args);
+
+  fprintf(stderr, "cannot invoke compiler, this is a serious bug\n");
+  return 1;
+}
diff --git a/pkgs/development/compilers/jsonnet/default.nix b/pkgs/development/compilers/jsonnet/default.nix
index a91b038ef2d4..73bdccb24f70 100644
--- a/pkgs/development/compilers/jsonnet/default.nix
+++ b/pkgs/development/compilers/jsonnet/default.nix
@@ -1,6 +1,6 @@
 { stdenv, lib, fetchFromGitHub, emscripten }:
 
-let version = "0.8.5"; in
+let version = "0.8.6"; in
 
 stdenv.mkDerivation {
   name = "jsonnet-${version}";
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
     rev = "v${version}";
     owner = "google";
     repo = "jsonnet";
-    sha256 = "14raml69zfr38r4qghdgy129vdq2vq1ivl3a2y02isfpijxcajxn";
+    sha256 = "1dkvm81gi1j02zs00mqshn9i71bcnqbxsm5hh3wwa2y0sffvgkwh";
   };
 
   buildInputs = [ emscripten ];
diff --git a/pkgs/development/compilers/julia/0001.1-use-system-utf8proc.patch b/pkgs/development/compilers/julia/0001.1-use-system-utf8proc.patch
new file mode 100644
index 000000000000..be4391399f55
--- /dev/null
+++ b/pkgs/development/compilers/julia/0001.1-use-system-utf8proc.patch
@@ -0,0 +1,29 @@
+From 54a66b5728ec98f44a1768f064509be4fd3f2ef6 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Sat, 10 Oct 2015 13:09:48 -0500
+Subject: [PATCH 1/3] use system utf8proc
+
+---
+ src/flisp/Makefile | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/flisp/Makefile b/src/flisp/Makefile
+index bec8624..5437b5c 100644
+--- a/src/flisp/Makefile
++++ b/src/flisp/Makefile
+@@ -24,9 +24,9 @@ DOBJS = $(SRCS:%.c=$(BUILDDIR)/%.dbg.obj)
+ LLTDIR := ../support
+ LLT_release := $(BUILDDIR)/$(LLTDIR)/libsupport.a
+ LLT_debug := $(BUILDDIR)/$(LLTDIR)/libsupport-debug.a
+-LIBFILES_release := $(LLT_release) $(LIBUV) $(LIBUTF8PROC)
+-LIBFILES_debug := $(LLT_debug) $(LIBUV) $(LIBUTF8PROC)
+-LIBS :=
++LIBFILES_release := $(LLT_release) $(LIBUV)
++LIBFILES_debug := $(LLT_debug) $(LIBUV)
++LIBS := $(LIBUTF8PROC)
+ ifneq ($(OS),WINNT)
+ LIBS += -lpthread
+ endif
+-- 
+2.5.2
+
diff --git a/pkgs/development/compilers/julia/git.nix b/pkgs/development/compilers/julia/git.nix
new file mode 100644
index 000000000000..2f4ce2f4b9e6
--- /dev/null
+++ b/pkgs/development/compilers/julia/git.nix
@@ -0,0 +1,170 @@
+{ stdenv, fetchgit, fetchurl
+# build tools
+, gfortran, m4, makeWrapper, patchelf, perl, which, python2
+# libjulia dependencies
+, libunwind, llvm, readline, utf8proc, zlib
+# standard library dependencies
+, curl, fftwSinglePrec, fftw, gmp, libgit2, mpfr, openlibm, openspecfun, pcre2
+# linear algebra
+, openblas, arpack, suitesparse
+}:
+
+with stdenv.lib;
+
+# All dependencies must use the same OpenBLAS.
+let
+  arpack_ = arpack;
+  suitesparse_ = suitesparse;
+in
+let
+  arpack = arpack_.override { inherit openblas; };
+  suitesparse = suitesparse_.override { inherit openblas; };
+in
+
+let
+  dsfmtVersion = "2.2.3";
+  dsfmt = fetchurl {
+    url = "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-${dsfmtVersion}.tar.gz";
+    sha256 = "03kaqbjbi6viz0n33dk5jlf6ayxqlsq4804n7kwkndiga9s4hd42";
+  };
+
+  libuvVersion = "07730c4bd595b4d45a498a8ee0bcd53878ff7c10";
+  libuv = fetchurl {
+    url = "https://api.github.com/repos/JuliaLang/libuv/tarball/${libuvVersion}";
+    sha256 = "19nk8vdvx2mxyrwpndb7888c3b237ja5xvxr3jk5ah77ix3srr3h";
+  };
+
+  rmathVersion = "0.1";
+  rmath-julia = fetchurl {
+    url = "https://api.github.com/repos/JuliaLang/Rmath-julia/tarball/v${rmathVersion}";
+    sha256 = "0ai5dhjc43zcvangz123ryxmlbm51s21rg13bllwyn98w67arhb4";
+  };
+  
+  virtualenvVersion = "1.11.6";
+  virtualenv = fetchurl {
+    url = "https://pypi.python.org/packages/source/v/virtualenv/virtualenv-${virtualenvVersion}.tar.gz";
+    sha256 = "1xq4prmg25n9cz5zcvbqx68lmc3kl39by582vd8pzs9f3qalqyiy";
+  };
+in
+
+stdenv.mkDerivation rec {
+  pname = "julia";
+  version = "0.4.4-pre-2016-02-08";
+  name = "${pname}-${version}";
+
+  src = fetchgit {
+    url = "https://github.com/JuliaLang/${pname}";
+    rev = "cb93e6b70b4b1313b4de8c54e55e85c8eb43daa3";
+    sha256 = "11dmbjqiidlbh8sj5s09zsbfslm3zs0kw7iq40281hl5dfsr7zm6";
+  };
+
+  prePatch = ''
+    mkdir deps/srccache
+    cp "${dsfmt}" "./deps/srccache/dsfmt-${dsfmtVersion}.tar.gz"
+    cp "${rmath-julia}" "./deps/srccache/Rmath-julia-${rmathVersion}.tar.gz"
+    cp "${libuv}" "./deps/srccache/libuv-${libuvVersion}.tar.gz"
+    cp "${virtualenv}" "./deps/srccache/virtualenv-${virtualenvVersion}.tar.gz"
+  '';
+
+  patches = [
+    ./0001.1-use-system-utf8proc.patch
+    ./0002-use-system-suitesparse.patch
+  ];
+
+  postPatch = ''
+    patchShebangs . contrib
+  '';
+
+  buildInputs = [
+    arpack fftw fftwSinglePrec gmp libgit2 libunwind llvm mpfr
+    pcre2 openblas openlibm openspecfun readline suitesparse utf8proc
+    zlib
+  ];
+
+  nativeBuildInputs = [ curl gfortran m4 makeWrapper patchelf perl python2 which ];
+
+  makeFlags =
+    let
+      arch = head (splitString "-" stdenv.system);
+      march = { "x86_64" = "x86-64"; "i686" = "i686"; }."${arch}"
+              or (throw "unsupported architecture: ${arch}");
+      # Julia requires Pentium 4 (SSE2) or better
+      cpuTarget = { "x86_64" = "x86-64"; "i686" = "pentium4"; }."${arch}"
+                  or (throw "unsupported architecture: ${arch}");
+    in [
+      "ARCH=${arch}"
+      "MARCH=${march}"
+      "JULIA_CPU_TARGET=${cpuTarget}"
+      "PREFIX=$(out)"
+      "prefix=$(out)"
+      "SHELL=${stdenv.shell}"
+
+      "USE_SYSTEM_BLAS=1"
+      "USE_BLAS64=${if openblas.blas64 then "1" else "0"}"
+      "LIBBLAS=-lopenblas"
+      "LIBBLASNAME=libopenblas"
+
+      "USE_SYSTEM_LAPACK=1"
+      "LIBLAPACK=-lopenblas"
+      "LIBLAPACKNAME=libopenblas"
+
+      "USE_SYSTEM_SUITESPARSE=1"
+      "SUITESPARSE_LIB=-lsuitesparse"
+      "SUITESPARSE_INC=-I${suitesparse}/include"
+
+      "USE_SYSTEM_ARPACK=1"
+      "USE_SYSTEM_FFTW=1"
+      "USE_SYSTEM_GMP=1"
+      "USE_SYSTEM_LIBGIT2=1"
+      "USE_SYSTEM_LIBUNWIND=1"
+      "USE_SYSTEM_LLVM=1"
+      "USE_SYSTEM_MPFR=1"
+      "USE_SYSTEM_OPENLIBM=1"
+      "USE_SYSTEM_OPENSPECFUN=1"
+      "USE_SYSTEM_PATCHELF=1"
+      "USE_SYSTEM_PCRE=1"
+      "USE_SYSTEM_READLINE=1"
+      "USE_SYSTEM_UTF8PROC=1"
+      "USE_SYSTEM_ZLIB=1"
+    ];
+
+  NIX_CFLAGS_COMPILE = [ "-fPIC" ];
+
+  LD_LIBRARY_PATH = makeSearchPath "lib" [
+    arpack fftw fftwSinglePrec gmp libgit2 mpfr openblas openlibm
+    openspecfun pcre2 suitesparse
+  ];
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  enableParallelBuilding = true;
+
+  doCheck = true;
+  checkTarget = "testall";
+  # Julia's tests require read/write access to $HOME
+  preCheck = ''
+    export HOME="$NIX_BUILD_TOP"
+  '';
+
+  preBuild = ''
+    sed -e '/^install:/s@[^ ]*/doc/[^ ]*@@' -i Makefile
+    sed -e '/[$](DESTDIR)[$](docdir)/d' -i Makefile
+  '';
+
+  postInstall = ''
+    for prog in "$out/bin/julia" "$out/bin/julia-debug"; do
+        wrapProgram "$prog" \
+            --prefix LD_LIBRARY_PATH : "$LD_LIBRARY_PATH" \
+            --prefix PATH : "${curl}/bin"
+    done
+  '';
+
+  meta = {
+    description = "High-level performance-oriented dynamical language for technical computing";
+    homepage = "http://julialang.org/";
+    license = stdenv.lib.licenses.mit;
+    maintainers = with stdenv.lib.maintainers; [ raskin ttuegel ];
+    platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
+  };
+}
diff --git a/pkgs/development/compilers/kotlin/default.nix b/pkgs/development/compilers/kotlin/default.nix
index a6f5dcc21592..2433f5ab5797 100644
--- a/pkgs/development/compilers/kotlin/default.nix
+++ b/pkgs/development/compilers/kotlin/default.nix
@@ -1,16 +1,16 @@
-{ stdenv, fetchurl, makeWrapper, jre, unzip }:
+{ stdenv, fetchurl, makeWrapper, jre, unzip, which }:
 
 stdenv.mkDerivation rec {
-  version = "1.0.0-rc-1036";
+  version = "1.0.0";
   name = "kotlin-${version}";
 
   src = fetchurl {
     url = "https://github.com/JetBrains/kotlin/releases/download/build-${version}/kotlin-compiler-${version}.zip";
-    sha256 = "8d72ff925678a2172fbbefcb6f0c5a195a300dccf240e5add16c3e8d86e13d67";
+    sha256 = "0dp5mab35sv3nsgj488ibyn6x6xw2rka76s7kygbhqhjc429kpgy";
   };
 
   propagatedBuildInputs = [ jre ] ;
-  buildInputs = [ makeWrapper unzip ] ;
+  buildInputs = [ makeWrapper unzip which ] ;
 
   installPhase = ''
     mkdir -p $out
diff --git a/pkgs/development/compilers/llvm/3.3/clang-purity.patch b/pkgs/development/compilers/llvm/3.3/clang-purity.patch
deleted file mode 100644
index e82305189e8f..000000000000
--- a/pkgs/development/compilers/llvm/3.3/clang-purity.patch
+++ /dev/null
@@ -1,162 +0,0 @@
-diff -Naur cfe-3.3.src-orig/lib/Driver/ToolChains.cpp cfe-3.3.src/lib/Driver/ToolChains.cpp
---- cfe-3.3.src-orig/lib/Driver/ToolChains.cpp	2013-05-06 12:26:41.000000000 -0400
-+++ cfe-3.3.src/lib/Driver/ToolChains.cpp	2013-06-21 19:28:12.120364372 -0400
-@@ -2318,17 +2318,6 @@
-                       Paths);
-     }
-   }
--  addPathIfExists(SysRoot + "/lib/" + MultiarchTriple, Paths);
--  addPathIfExists(SysRoot + "/lib/../" + Multilib, Paths);
--  addPathIfExists(SysRoot + "/usr/lib/" + MultiarchTriple, Paths);
--  addPathIfExists(SysRoot + "/usr/lib/../" + Multilib, Paths);
--
--  // Try walking via the GCC triple path in case of multiarch GCC
--  // installations with strange symlinks.
--  if (GCCInstallation.isValid())
--    addPathIfExists(SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
--                    "/../../" + Multilib, Paths);
--
-   // Add the non-multilib suffixed paths (if potentially different).
-   if (GCCInstallation.isValid()) {
-     const std::string &LibPath = GCCInstallation.getParentLibPath();
-@@ -2341,8 +2330,6 @@
-       addPathIfExists(LibPath, Paths);
-     }
-   }
--  addPathIfExists(SysRoot + "/lib", Paths);
--  addPathIfExists(SysRoot + "/usr/lib", Paths);
- 
-   IsPIEDefault = SanitizerArgs(*this, Args).hasZeroBaseShadow();
- }
-@@ -2395,9 +2382,6 @@
-   if (DriverArgs.hasArg(options::OPT_nostdinc))
-     return;
- 
--  if (!DriverArgs.hasArg(options::OPT_nostdlibinc))
--    addSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/local/include");
--
-   if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
-     llvm::sys::Path P(D.ResourceDir);
-     P.appendComponent("include");
-@@ -2479,26 +2463,6 @@
-     "/usr/include/powerpc64-linux-gnu"
-   };
-   ArrayRef<StringRef> MultiarchIncludeDirs;
--  if (getTriple().getArch() == llvm::Triple::x86_64) {
--    MultiarchIncludeDirs = X86_64MultiarchIncludeDirs;
--  } else if (getTriple().getArch() == llvm::Triple::x86) {
--    MultiarchIncludeDirs = X86MultiarchIncludeDirs;
--  } else if (getTriple().getArch() == llvm::Triple::aarch64) {
--    MultiarchIncludeDirs = AArch64MultiarchIncludeDirs;
--  } else if (getTriple().getArch() == llvm::Triple::arm) {
--    if (getTriple().getEnvironment() == llvm::Triple::GNUEABIHF)
--      MultiarchIncludeDirs = ARMHFMultiarchIncludeDirs;
--    else
--      MultiarchIncludeDirs = ARMMultiarchIncludeDirs;
--  } else if (getTriple().getArch() == llvm::Triple::mips) {
--    MultiarchIncludeDirs = MIPSMultiarchIncludeDirs;
--  } else if (getTriple().getArch() == llvm::Triple::mipsel) {
--    MultiarchIncludeDirs = MIPSELMultiarchIncludeDirs;
--  } else if (getTriple().getArch() == llvm::Triple::ppc) {
--    MultiarchIncludeDirs = PPCMultiarchIncludeDirs;
--  } else if (getTriple().getArch() == llvm::Triple::ppc64) {
--    MultiarchIncludeDirs = PPC64MultiarchIncludeDirs;
--  }
-   for (ArrayRef<StringRef>::iterator I = MultiarchIncludeDirs.begin(),
-                                      E = MultiarchIncludeDirs.end();
-        I != E; ++I) {
-@@ -2510,13 +2474,6 @@
- 
-   if (getTriple().getOS() == llvm::Triple::RTEMS)
-     return;
--
--  // Add an include of '/include' directly. This isn't provided by default by
--  // system GCCs, but is often used with cross-compiling GCCs, and harmless to
--  // add even when Clang is acting as-if it were a system compiler.
--  addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/include");
--
--  addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/include");
- }
- 
- /// \brief Helper to add the three variant paths for a libstdc++ installation.
-diff -Naur cfe-3.3.src-orig/lib/Driver/Tools.cpp cfe-3.3.src/lib/Driver/Tools.cpp
---- cfe-3.3.src-orig/lib/Driver/Tools.cpp	2013-05-30 14:01:30.000000000 -0400
-+++ cfe-3.3.src/lib/Driver/Tools.cpp	2013-06-21 19:30:51.604726574 -0400
-@@ -5976,43 +5976,6 @@
-     }
-   }
- 
--  if (ToolChain.getArch() == llvm::Triple::arm ||
--      ToolChain.getArch() == llvm::Triple::thumb ||
--      (!Args.hasArg(options::OPT_static) &&
--       !Args.hasArg(options::OPT_shared))) {
--    CmdArgs.push_back("-dynamic-linker");
--    if (isAndroid)
--      CmdArgs.push_back("/system/bin/linker");
--    else if (ToolChain.getArch() == llvm::Triple::x86)
--      CmdArgs.push_back("/lib/ld-linux.so.2");
--    else if (ToolChain.getArch() == llvm::Triple::aarch64)
--      CmdArgs.push_back("/lib/ld-linux-aarch64.so.1");
--    else if (ToolChain.getArch() == llvm::Triple::arm ||
--             ToolChain.getArch() == llvm::Triple::thumb) {
--      if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF)
--        CmdArgs.push_back("/lib/ld-linux-armhf.so.3");
--      else
--        CmdArgs.push_back("/lib/ld-linux.so.3");
--    }
--    else if (ToolChain.getArch() == llvm::Triple::mips ||
--             ToolChain.getArch() == llvm::Triple::mipsel)
--      CmdArgs.push_back("/lib/ld.so.1");
--    else if (ToolChain.getArch() == llvm::Triple::mips64 ||
--             ToolChain.getArch() == llvm::Triple::mips64el) {
--      if (hasMipsN32ABIArg(Args))
--        CmdArgs.push_back("/lib32/ld.so.1");
--      else
--        CmdArgs.push_back("/lib64/ld.so.1");
--    }
--    else if (ToolChain.getArch() == llvm::Triple::ppc)
--      CmdArgs.push_back("/lib/ld.so.1");
--    else if (ToolChain.getArch() == llvm::Triple::ppc64 ||
--	     ToolChain.getArch() == llvm::Triple::systemz)
--      CmdArgs.push_back("/lib64/ld64.so.1");
--    else
--      CmdArgs.push_back("/lib64/ld-linux-x86-64.so.2");
--  }
--
-   CmdArgs.push_back("-o");
-   CmdArgs.push_back(Output.getFilename());
- 
-diff -Naur cfe-3.3.src-orig/lib/Frontend/InitHeaderSearch.cpp cfe-3.3.src/lib/Frontend/InitHeaderSearch.cpp
---- cfe-3.3.src-orig/lib/Frontend/InitHeaderSearch.cpp	2013-04-29 21:21:43.000000000 -0400
-+++ cfe-3.3.src/lib/Frontend/InitHeaderSearch.cpp	2013-06-21 19:32:47.627016565 -0400
-@@ -225,20 +225,6 @@
-                                             const HeaderSearchOptions &HSOpts) {
-   llvm::Triple::OSType os = triple.getOS();
- 
--  if (HSOpts.UseStandardSystemIncludes) {
--    switch (os) {
--    case llvm::Triple::FreeBSD:
--    case llvm::Triple::NetBSD:
--    case llvm::Triple::OpenBSD:
--    case llvm::Triple::Bitrig:
--      break;
--    default:
--      // FIXME: temporary hack: hard-coded paths.
--      AddPath("/usr/local/include", System, false);
--      break;
--    }
--  }
--
-   // Builtin includes use #include_next directives and should be positioned
-   // just prior C include dirs.
-   if (HSOpts.UseBuiltinIncludes) {
-@@ -332,9 +318,6 @@
-   default:
-     break;
-   }
--
--  if ( os != llvm::Triple::RTEMS )
--    AddPath("/usr/include", ExternCSystem, false);
- }
- 
- void InitHeaderSearch::
diff --git a/pkgs/development/compilers/llvm/3.3/clang-tablegen-dir.patch b/pkgs/development/compilers/llvm/3.3/clang-tablegen-dir.patch
deleted file mode 100644
index de6a468b239f..000000000000
--- a/pkgs/development/compilers/llvm/3.3/clang-tablegen-dir.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- a/utils/TableGen/CMakeLists.txt       (revision 190146)
-+++ b/utils/TableGen/CMakeLists.txt       (working copy)
-@@ -1,4 +1,5 @@
- set(LLVM_LINK_COMPONENTS Support)
-+set(LLVM_TOOLS_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
- 
- add_tablegen(clang-tblgen CLANG
-   ClangASTNodesEmitter.cpp
-
diff --git a/pkgs/development/compilers/llvm/3.3/clang.nix b/pkgs/development/compilers/llvm/3.3/clang.nix
deleted file mode 100644
index 316730fe3ba0..000000000000
--- a/pkgs/development/compilers/llvm/3.3/clang.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{ stdenv, fetchurl, perl, groff, llvm, cmake, libxml2, python }:
-
-let
-  version = "3.3";
-  gccReal = if (stdenv.cc.cc or null) == null then stdenv.cc else stdenv.cc.cc;
-in
-
-stdenv.mkDerivation {
-  name = "clang-${version}";
-
-  buildInputs = [ perl llvm groff cmake libxml2 python ];
-
-  patches = [ ./clang-tablegen-dir.patch ] ++
-            stdenv.lib.optional (stdenv.cc.libc != null) ./clang-purity.patch;
-
-  cmakeFlags = [
-    "-DCLANG_PATH_TO_LLVM_BUILD=${llvm}"
-    "-DCMAKE_BUILD_TYPE=Release"
-    "-DLLVM_TARGETS_TO_BUILD=all"
-    "-DGCC_INSTALL_PREFIX=${gccReal}"
-  ] ++ stdenv.lib.optionals (stdenv.cc.libc != null) [
-    "-DC_INCLUDE_DIRS=${stdenv.cc.libc}/include/"
-  ];
-
-  enableParallelBuilding = true;
-
-  src = fetchurl {
-      url = "http://llvm.org/releases/${version}/cfe-${version}.src.tar.gz";
-      sha256 = "15mrvw43s4frk1j49qr4v5viq68h8qlf10qs6ghd6mrsmgj5vddi";
-  };
-
-  passthru = {
-    isClang = true;
-    cc = stdenv.cc.cc;
-    gcc = gccReal;
-  };
-
-  meta = {
-    homepage = http://clang.llvm.org/;
-    description = "A C language family frontend for LLVM";
-    license = "BSD";
-    maintainers = with stdenv.lib.maintainers; [viric];
-    platforms = with stdenv.lib.platforms; all;
-  };
-}
diff --git a/pkgs/development/compilers/llvm/3.3/llvm.nix b/pkgs/development/compilers/llvm/3.3/llvm.nix
deleted file mode 100644
index c19955ddaf03..000000000000
--- a/pkgs/development/compilers/llvm/3.3/llvm.nix
+++ /dev/null
@@ -1,63 +0,0 @@
-{ stdenv, fetchurl, perl, groff, cmake, python, libffi, binutils, debugVersion ? false }:
-let
-  version = "3.3";
-in stdenv.mkDerivation rec {
-  name = "llvm-${version}";
-
-  src = fetchurl {
-    url = "http://llvm.org/releases/${version}/llvm-${version}.src.tar.gz";
-    sha256 = "0y3mfbb5qzcpw3v5qncn69x1hdrrrfirgs82ypi2annhf0g6nxk8";
-  };
-
-  patches = [
-    ./more-memory-for-bugpoint.patch # The default rlimits in 3.3 are too low for shared libraries.
-    ./no-rule-aarch64.patch          # http://llvm.org/bugs/show_bug.cgi?id=16625
-    # Patch needed for Julia, backports fixes from LLVM 3.5
-    (fetchurl {
-      url = "https://raw.githubusercontent.com/JuliaLang/julia/release-0.4/deps/llvm-3.3.patch";
-      sha256 = "0j6chyx4k8zr1qha5dks8lqlcraqrj4q1hwnk2kj3qi6cajsd8k3";
-    })
-    (fetchurl {
-      url = "https://raw.githubusercontent.com/JuliaLang/julia/release-0.4/deps/instcombine-llvm-3.3.patch";
-      sha256 = "161frq3wxrkxah78krb24hp4zkcnphzcgnvkwfq1abq2vjx3f8sn";
-    })
-    (fetchurl {
-      url = "https://raw.githubusercontent.com/JuliaLang/julia/release-0.4/deps/int128-vector.llvm-3.3.patch";
-      sha256 = "0lzkv6hvsdaalwsyf6sq0vdrf8x5nk58qg6nn5dlw7n3hxaxpm4m";
-    })
-  ];
-
-  buildInputs = [ perl groff cmake python libffi ];
-
-  # hacky fix: created binaries need to be run before installation
-  preBuild = let LD = if stdenv.isDarwin then "DYLD" else "LD";
-    in "export ${LD}_LIBRARY_PATH='$$${LD}_LIBRARY_PATH:'`pwd`/lib";
-
-  cmakeFlags = with stdenv; [
-    "-DCMAKE_BUILD_TYPE=${if debugVersion then "Debug" else "Release"}"
-    "-DLLVM_BUILD_TESTS=ON"
-    "-DLLVM_ENABLE_FFI=ON"
-    "-DLLVM_BINUTILS_INCDIR=${binutils}/include"
-    "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=R600" # for mesa
-  ] ++ stdenv.lib.optional (!isDarwin) "-DBUILD_SHARED_LIBS=ON";
-
-  postBuild = ''
-    paxmark m bin/{lli,llvm-rtdyld}
-
-    paxmark m unittests/ExecutionEngine/JIT/JITTests
-    paxmark m unittests/ExecutionEngine/MCJIT/MCJITTests
-    paxmark m unittests/Support/SupportTests
-  '';
-
-  enableParallelBuilding = true;
-
-  doCheck = true;
-
-  meta = with stdenv.lib; {
-    description = "Collection of modular and reusable compiler and toolchain technologies";
-    homepage    = http://llvm.org/;
-    license     = licenses.bsd3;
-    maintainers = with maintainers; [ lovek323 raskin viric ];
-    platforms   = platforms.all;
-  };
-}
diff --git a/pkgs/development/compilers/llvm/3.3/more-memory-for-bugpoint.patch b/pkgs/development/compilers/llvm/3.3/more-memory-for-bugpoint.patch
deleted file mode 100644
index fa19ce4f5871..000000000000
--- a/pkgs/development/compilers/llvm/3.3/more-memory-for-bugpoint.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -Naur llvm-3.3.src-orig/tools/bugpoint/bugpoint.cpp llvm-3.3.src/tools/bugpoint/bugpoint.cpp
---- llvm-3.3.src-orig/tools/bugpoint/bugpoint.cpp	2013-01-27 20:35:51.000000000 -0500
-+++ llvm-3.3.src/tools/bugpoint/bugpoint.cpp	2013-06-21 18:29:47.612731499 -0400
-@@ -48,9 +48,9 @@
-                       "is killed (default is 300s), 0 disables timeout"));
- 
- static cl::opt<int>
--MemoryLimit("mlimit", cl::init(-1), cl::value_desc("MBytes"),
-+MemoryLimit("mlimit", cl::init(0), cl::value_desc("MBytes"),
-              cl::desc("Maximum amount of memory to use. 0 disables check."
--                      " Defaults to 100MB (800MB under valgrind)."));
-+                      " Check disabled by default."));
- 
- static cl::opt<bool>
- UseValgrind("enable-valgrind",
diff --git a/pkgs/development/compilers/llvm/3.3/no-rule-aarch64.patch b/pkgs/development/compilers/llvm/3.3/no-rule-aarch64.patch
deleted file mode 100644
index ea7214febe5a..000000000000
--- a/pkgs/development/compilers/llvm/3.3/no-rule-aarch64.patch
+++ /dev/null
@@ -1,8 +0,0 @@
---- llvm/lib/Target/AArch64/Utils/CMakeLists.txt	2013/05/18 04:32:15	182189
-+++ llvm/lib/Target/AArch64/Utils/CMakeLists.txt	2013/05/18 08:17:47	182190
-@@ -3,3 +3,5 @@
- add_llvm_library(LLVMAArch64Utils
-   AArch64BaseInfo.cpp
-   )
-+
-+add_dependencies(LLVMAArch64Utils AArch64CommonTableGen)
diff --git a/pkgs/development/compilers/polyml/default.nix b/pkgs/development/compilers/polyml/default.nix
index 276065ad3503..8b5d14e7f5fb 100644
--- a/pkgs/development/compilers/polyml/default.nix
+++ b/pkgs/development/compilers/polyml/default.nix
@@ -1,7 +1,7 @@
 {stdenv, fetchurl, autoreconfHook}:
 
 let
-  version = "5.5.2";
+  version = "5.6";
 in
 
 stdenv.mkDerivation {
@@ -15,7 +15,7 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "mirror://sourceforge/polyml/polyml.${version}.tar.gz";
-    sha256 = "10m680qdad6bd50bav9xjsgmsxw8yxg55vr7grbg0gvykzl2pzbk";
+    sha256 = "05d6l2a5m9jf32a8kahwg2p2ph4x9rjf1nsl83331q3gwn5bkmr0";
   };
 
   meta = {
diff --git a/pkgs/development/compilers/rustc/generic.nix b/pkgs/development/compilers/rustc/generic.nix
index b88782517d76..50cf2f31095d 100644
--- a/pkgs/development/compilers/rustc/generic.nix
+++ b/pkgs/development/compilers/rustc/generic.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, fetchgit, fetchzip, file, python2, tzdata, procps
-, llvmPackages_37, jemalloc, ncurses, binutils
+, llvmPackages_37, jemalloc, ncurses, darwin, binutils
 
 , shortVersion, isRelease
 , forceBundledLLVM ? false
@@ -10,7 +10,7 @@
 , configureFlags ? []
 
 , patches
-}:
+} @ args:
 
 assert !stdenv.isFreeBSD;
 
@@ -37,6 +37,8 @@ let version = if isRelease then
 
     name = "rustc-${version}";
 
+    procps = if stdenv.isDarwin then darwin.ps else args.procps;
+
     llvmShared = llvmPackages_37.llvm.override { enableSharedLibraries = true; };
 
     platform = if stdenv.system == "i686-linux"
diff --git a/pkgs/development/compilers/rustc/head.nix b/pkgs/development/compilers/rustc/head.nix
index 4d2039669598..66730cf855a3 100644
--- a/pkgs/development/compilers/rustc/head.nix
+++ b/pkgs/development/compilers/rustc/head.nix
@@ -2,11 +2,11 @@
 { stdenv, callPackage }:
 
 callPackage ./generic.nix {
-  shortVersion = "2016-02-01";
+  shortVersion = "2016-02-22";
   isRelease = false;
   forceBundledLLVM = true;
-  srcRev = "094c5b0d6";
-  srcSha = "0908xzxb4q8vqwmzi5c2vzrhfsrw7d18r4n7mq3ir5671y9cqpvz";
+  srcRev = "d1f422ec280b881b8236c5d173103bc799e1590e";
+  srcSha = "b0753045ae438c0869d37f429fe84451dcacc4b2ab9413d34bf29fde94fde462";
 
   /* Rust is bootstrapped from an earlier built version. We need
   to fetch these earlier versions, which vary per platform.
diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix
index 3212601e7899..82348f35e302 100644
--- a/pkgs/development/compilers/sbcl/default.nix
+++ b/pkgs/development/compilers/sbcl/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name    = "sbcl-${version}";
-  version = "1.3.2";
+  version = "1.3.3";
 
   src = fetchurl {
     url    = "mirror://sourceforge/project/sbcl/sbcl/${version}/${name}-source.tar.bz2";
-    sha256 = "18mgj1h9wqi0zq4k7y5r5fk10mlbpgh3796d3dac75bpxabg30nk";
+    sha256 = "0kzvwzz196ws9z20l8fm15m5gckhmkkc6lxvdib12mfvy80gcf6v";
   };
 
   patchPhase = ''
diff --git a/pkgs/development/compilers/uhc/default.nix b/pkgs/development/compilers/uhc/default.nix
index 93aa7811449a..df79b0ba70ee 100644
--- a/pkgs/development/compilers/uhc/default.nix
+++ b/pkgs/development/compilers/uhc/default.nix
@@ -1,23 +1,17 @@
 # Note: The Haskell package set used for building UHC is
 # determined in the file top-level/haskell-packages.nix.
-# We are using Stackage LTS to avoid constant breakage.
-# Bump the Stackage LTS release to the last release if possible
-# when a new UHC version is released.
-{ stdenv, coreutils, fetchgit, m4, libtool, clang, ghcWithPackages }:
+{ stdenv, coreutils, m4, libtool, clang, ghcWithPackages, fetchFromGitHub }:
 
 let wrappedGhc = ghcWithPackages (hpkgs: with hpkgs; [fgl vector syb uulib network binary hashable uhc-util mtl transformers directory containers array process filepath shuffle uuagc] );
 in stdenv.mkDerivation rec {
-  # Important:
-  # The commits "Fixate/tag v..." are the released versions.
-  # Ignore the "bumped version to ...." commits, they do not
-  # correspond to releases.
-  version = "1.1.9.2";
+  version = "1.1.9.3";
   name = "uhc-${version}";
 
-  src = fetchgit {
-    url = "https://github.com/UU-ComputerScience/uhc.git";
-    rev = "292d259113b98c32154a5be336875751caa5edbc";
-    sha256 = "1f462xq9ilkp9mnxm8hxhh1cdwps5d0hxysyibxryk32l7hh53cz";
+  src = fetchFromGitHub {
+    owner = "UU-ComputerScience";
+    repo = "uhc";
+    rev = "v${version}";
+    sha256 = "1r3mja77dqj2ncgp1d9nnc7dhp3gzrb1b1qvml3rq2321mn3m2ad";
   };
 
   postUnpack = "sourceRoot=\${sourceRoot}/EHC";
@@ -55,10 +49,5 @@ in stdenv.mkDerivation rec {
     # On Darwin, the GNU libtool is used, which does not
     # support the -static flag and thus breaks the build.
     platforms = ["x86_64-linux"];
-    # Hydra currently doesn't build the Stackage LTS package set,
-    # and we don't want to build all our haskell dependencies
-    # from scratch just to build UHC.
-    hydraPlatforms = stdenv.lib.platforms.none;
-
   };
 }