about summary refs log tree commit diff
path: root/pkgs/development/compilers/ghcjs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/compilers/ghcjs')
-rw-r--r--pkgs/development/compilers/ghcjs/base.nix186
-rw-r--r--pkgs/development/compilers/ghcjs/default.nix180
-rw-r--r--pkgs/development/compilers/ghcjs/head.nix208
-rw-r--r--pkgs/development/compilers/ghcjs/head_shims.nix4
-rw-r--r--pkgs/development/compilers/ghcjs/head_stage2.nix345
5 files changed, 575 insertions, 348 deletions
diff --git a/pkgs/development/compilers/ghcjs/base.nix b/pkgs/development/compilers/ghcjs/base.nix
new file mode 100644
index 000000000000..f8b861311d60
--- /dev/null
+++ b/pkgs/development/compilers/ghcjs/base.nix
@@ -0,0 +1,186 @@
+{ mkDerivation
+, test-framework
+, test-framework-hunit
+, test-framework-quickcheck2
+, data-default
+, ghc-paths
+, haskell-src-exts
+, haskell-src-meta
+, optparse-applicative
+, system-fileio
+, system-filepath
+, text-binary
+, unordered-containers
+, cabal-install
+, wl-pprint-text
+, base16-bytestring
+, executable-path
+, transformers-compat
+, haddock-api
+, ghcjs-prim
+, regex-posix
+, callPackage
+
+, bootPkgs, gmp
+, jailbreak-cabal
+
+, runCommand
+, nodejs, stdenv, filepath, HTTP, HUnit, mtl, network, QuickCheck, random, stm
+, time
+, zlib, aeson, attoparsec, bzlib, hashable
+, lens
+, parallel, safe, shelly, split, stringsearch, syb
+, tar, terminfo
+, vector, yaml, fetchgit, fetchFromGitHub, Cabal
+, alex, happy, git, gnumake, autoconf, patch
+, automake, libtool
+, cryptohash
+, haddock, hspec, xhtml, primitive, cacert, pkgs
+, coreutils
+, libiconv
+
+, version ? "0.2.0"
+, ghcjsSrc ? fetchFromGitHub {
+    owner = "ghcjs";
+    repo = "ghcjs";
+    rev = "689c7753f50353dd05606ed79c51cd5a94d3922a";
+    sha256 = "076020a9gjv8ldj5ckm43sbzq9s6c5xj6lpd8v28ybpiama3m6b4";
+  }
+, ghcjsBootSrc ? fetchgit {
+    url = git://github.com/ghcjs/ghcjs-boot.git;
+    rev = "8c549931da27ba9e607f77195208ec156c840c8a";
+    sha256 = "0yg9bnabja39qysh9pg1335qbvbc0r2mdw6cky94p7kavacndfdv";
+    fetchSubmodules = true;
+  }
+, ghcjsBoot ? import ./ghcjs-boot.nix {
+    inherit runCommand;
+    src = ghcjsBootSrc;
+  }
+, shims ? import ./shims.nix { inherit fetchFromGitHub; }
+
+# This is the list of the Stage 1 packages that are built into a booted ghcjs installation
+# It can be generated with the command:
+# nix-shell -p haskell.packages.ghcjs.ghc --command "ghcjs-pkg list | sed -n 's/^    \(.*\)-\([0-9.]*\)$/\1_\2/ p' | sed 's/\./_/g' | sed 's/^\([^_]*\)\(.*\)$/      \"\1\"/'"
+, stage1Packages ? [
+    "array"
+    "base"
+    "binary"
+    "bytestring"
+    "containers"
+    "deepseq"
+    "directory"
+    "filepath"
+    "ghc-boot"
+    "ghc-boot-th"
+    "ghc-prim"
+    "ghci"
+    "ghcjs-prim"
+    "ghcjs-th"
+    "integer-gmp"
+    "pretty"
+    "primitive"
+    "process"
+    "rts"
+    "template-haskell"
+    "time"
+    "transformers"
+    "unix"
+  ]
+
+, stage2 ? import ./stage2.nix
+}:
+let
+  inherit (bootPkgs) ghc;
+
+in mkDerivation (rec {
+  pname = "ghcjs";
+  inherit version;
+  src = ghcjsSrc;
+  isLibrary = true;
+  isExecutable = true;
+  jailbreak = true;
+  doHaddock = false;
+  doCheck = false;
+  buildDepends = [
+    filepath HTTP mtl network random stm time zlib aeson attoparsec
+    bzlib data-default ghc-paths hashable haskell-src-exts haskell-src-meta
+    lens optparse-applicative parallel safe shelly split
+    stringsearch syb system-fileio system-filepath tar terminfo text-binary
+    unordered-containers vector wl-pprint-text yaml
+    alex happy git gnumake autoconf automake libtool patch gmp
+    base16-bytestring cryptohash executable-path haddock-api
+    transformers-compat QuickCheck haddock hspec xhtml
+    ghcjs-prim regex-posix libiconv
+  ];
+  buildTools = [ nodejs git ];
+  testDepends = [
+    HUnit test-framework test-framework-hunit
+  ];
+  patches = [ ./ghcjs.patch ];
+  postPatch = ''
+    substituteInPlace Setup.hs \
+      --replace "/usr/bin/env" "${coreutils}/bin/env"
+
+    substituteInPlace src/Compiler/Info.hs \
+      --replace "@PREFIX@" "$out"          \
+      --replace "@VERSION@" "${version}"
+
+    substituteInPlace src-bin/Boot.hs \
+      --replace "@PREFIX@" "$out"     \
+      --replace "@CC@"     "${stdenv.cc}/bin/cc"
+  '';
+  preBuild = ''
+    export HOME="$TMP"
+
+    local topDir=$out/lib/ghcjs-${version}
+    mkdir -p $topDir
+
+    cp -r ${ghcjsBoot} $topDir/ghcjs-boot
+    chmod -R u+w $topDir/ghcjs-boot
+
+    cp -r ${shims} $topDir/shims
+    chmod -R u+w $topDir/shims
+
+    # Make the patches be relative their corresponding package's directory.
+    # See: https://github.com/ghcjs/ghcjs-boot/pull/12
+    for patch in "$topDir/ghcjs-boot/patches/"*.patch; do
+      echo "fixing patch: $patch"
+      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 = let
+    ghcjsNodePkgs = callPackage ../../../top-level/node-packages.nix {
+      generated = ./node-packages-generated.nix;
+      self = ghcjsNodePkgs;
+    };
+  in {
+    inherit bootPkgs;
+    isCross = true;
+    isGhcjs = true;
+    inherit nodejs ghcjsBoot;
+    inherit (ghcjsNodePkgs) "socket.io";
+
+    inherit stage1Packages;
+    mkStage2 = stage2 {
+      inherit ghcjsBoot;
+    };
+  };
+
+  homepage = "https://github.com/ghcjs/ghcjs";
+  description = "A Haskell to JavaScript compiler that uses the GHC API";
+  license = stdenv.lib.licenses.bsd3;
+  platforms = ghc.meta.platforms;
+  maintainers = with stdenv.lib.maintainers; [ jwiegley cstrahan ];
+})
diff --git a/pkgs/development/compilers/ghcjs/default.nix b/pkgs/development/compilers/ghcjs/default.nix
index 565215f474ea..7400057b128f 100644
--- a/pkgs/development/compilers/ghcjs/default.nix
+++ b/pkgs/development/compilers/ghcjs/default.nix
@@ -1,179 +1,3 @@
-{ mkDerivation
-, test-framework
-, test-framework-hunit
-, test-framework-quickcheck2
-, data-default
-, ghc-paths
-, haskell-src-exts
-, haskell-src-meta
-, optparse-applicative
-, system-fileio
-, system-filepath
-, text-binary
-, unordered-containers
-, cabal-install
-, wl-pprint-text
-, base16-bytestring
-, executable-path
-, transformers-compat
-, haddock-api
-, ghcjs-prim
-, regex-posix
-, callPackage
+{ bootPkgs }:
 
-, bootPkgs, gmp
-, jailbreak-cabal
-
-, runCommand
-, nodejs, stdenv, filepath, HTTP, HUnit, mtl, network, QuickCheck, random, stm
-, time
-, zlib, aeson, attoparsec, bzlib, hashable
-, lens
-, parallel, safe, shelly, split, stringsearch, syb
-, tar, terminfo
-, vector, yaml, fetchgit, fetchFromGitHub, Cabal
-, alex, happy, git, gnumake, autoconf, patch
-, automake, libtool
-, cryptohash
-, haddock, hspec, xhtml, primitive, cacert, pkgs
-, coreutils
-, libiconv
-
-, ghcjsBootSrc ? fetchgit {
-    url = git://github.com/ghcjs/ghcjs-boot.git;
-    rev = "8c549931da27ba9e607f77195208ec156c840c8a";
-    sha256 = "0yg9bnabja39qysh9pg1335qbvbc0r2mdw6cky94p7kavacndfdv";
-    fetchSubmodules = true;
-  }
-, ghcjsBoot ? import ./ghcjs-boot.nix {
-    inherit runCommand;
-    src = ghcjsBootSrc;
-  }
-, shims ? import ./shims.nix { inherit fetchFromGitHub; }
-}:
-let
-  inherit (bootPkgs) ghc;
-  version = "0.2.0";
-
-in mkDerivation (rec {
-  pname = "ghcjs";
-  inherit version;
-  src = fetchFromGitHub {
-    owner = "ghcjs";
-    repo = "ghcjs";
-    rev = "689c7753f50353dd05606ed79c51cd5a94d3922a";
-    sha256 = "076020a9gjv8ldj5ckm43sbzq9s6c5xj6lpd8v28ybpiama3m6b4";
-  };
-  isLibrary = true;
-  isExecutable = true;
-  jailbreak = true;
-  doHaddock = false;
-  doCheck = false;
-  buildDepends = [
-    filepath HTTP mtl network random stm time zlib aeson attoparsec
-    bzlib data-default ghc-paths hashable haskell-src-exts haskell-src-meta
-    lens optparse-applicative parallel safe shelly split
-    stringsearch syb system-fileio system-filepath tar terminfo text-binary
-    unordered-containers vector wl-pprint-text yaml
-    alex happy git gnumake autoconf automake libtool patch gmp
-    base16-bytestring cryptohash executable-path haddock-api
-    transformers-compat QuickCheck haddock hspec xhtml
-    ghcjs-prim regex-posix libiconv
-  ];
-  buildTools = [ nodejs git ];
-  testDepends = [
-    HUnit test-framework test-framework-hunit
-  ];
-  patches = [ ./ghcjs.patch ];
-  postPatch = ''
-    substituteInPlace Setup.hs \
-      --replace "/usr/bin/env" "${coreutils}/bin/env"
-
-    substituteInPlace src/Compiler/Info.hs \
-      --replace "@PREFIX@" "$out"          \
-      --replace "@VERSION@" "${version}"
-
-    substituteInPlace src-bin/Boot.hs \
-      --replace "@PREFIX@" "$out"     \
-      --replace "@CC@"     "${stdenv.cc}/bin/cc"
-  '';
-  preBuild = ''
-    export HOME="$TMP"
-
-    local topDir=$out/lib/ghcjs-${version}
-    mkdir -p $topDir
-
-    cp -r ${ghcjsBoot} $topDir/ghcjs-boot
-    chmod -R u+w $topDir/ghcjs-boot
-
-    cp -r ${shims} $topDir/shims
-    chmod -R u+w $topDir/shims
-
-    # Make the patches be relative their corresponding package's directory.
-    # See: https://github.com/ghcjs/ghcjs-boot/pull/12
-    for patch in "$topDir/ghcjs-boot/patches/"*.patch; do
-      echo "fixing patch: $patch"
-      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 = let
-    ghcjsNodePkgs = callPackage ../../../top-level/node-packages.nix {
-      generated = ./node-packages-generated.nix;
-      self = ghcjsNodePkgs;
-    };
-  in {
-    inherit bootPkgs;
-    isCross = true;
-    isGhcjs = true;
-    inherit nodejs ghcjsBoot;
-    inherit (ghcjsNodePkgs) "socket.io";
-
-    # This is the list of the Stage 1 packages that are built into a booted ghcjs installation
-    # It can be generated with the command:
-    # nix-shell -p haskell.packages.ghcjs.ghc --command "ghcjs-pkg list | sed -n 's/^    \(.*\)-\([0-9.]*\)$/\1_\2/ p' | sed 's/\./_/g' | sed 's/^\([^_]*\)\(.*\)$/      \"\1\"/'"
-    stage1Packages = [
-      "array"
-      "base"
-      "binary"
-      "rts"
-      "bytestring"
-      "containers"
-      "deepseq"
-      "directory"
-      "filepath"
-      "ghc-prim"
-      "ghcjs-prim"
-      "integer-gmp"
-      "old-locale"
-      "pretty"
-      "primitive"
-      "process"
-      "template-haskell"
-      "time"
-      "transformers"
-      "unix"
-    ];
-
-    mkStage2 = import ./stage2.nix {
-      inherit ghcjsBoot;
-    };
-  };
-
-  homepage = "https://github.com/ghcjs/ghcjs";
-  description = "A Haskell to JavaScript compiler that uses the GHC API";
-  license = stdenv.lib.licenses.bsd3;
-  platforms = ghc.meta.platforms;
-  maintainers = with stdenv.lib.maintainers; [ jwiegley cstrahan ];
-})
+bootPkgs.callPackage ./base.nix { inherit bootPkgs; }
diff --git a/pkgs/development/compilers/ghcjs/head.nix b/pkgs/development/compilers/ghcjs/head.nix
index 2bf13cb895f5..b191f9655d2a 100644
--- a/pkgs/development/compilers/ghcjs/head.nix
+++ b/pkgs/development/compilers/ghcjs/head.nix
@@ -1,178 +1,50 @@
-{ mkDerivation
-, test-framework
-, test-framework-hunit
-, test-framework-quickcheck2
-, data-default
-, ghc-paths
-, haskell-src-exts
-, haskell-src-meta
-, optparse-applicative
-, system-fileio
-, system-filepath
-, text-binary
-, unordered-containers
-, cabal-install
-, wl-pprint-text
-, base16-bytestring
-, executable-path
-, transformers-compat
-, haddock-api
-, regex-posix
-, callPackage
+{ fetchgit, fetchFromGitHub, bootPkgs }:
 
-, bootPkgs, gmp
-, jailbreak-cabal
-
-, runCommand
-, nodejs, stdenv, filepath, HTTP, HUnit, mtl, network, QuickCheck, random, stm
-, time
-, zlib, aeson, attoparsec, bzlib, hashable
-, lens
-, parallel, safe, shelly, split, stringsearch, syb
-, tar, terminfo
-, vector, yaml, fetchgit, fetchFromGitHub, Cabal
-, alex, happy, git, gnumake, autoconf, patch
-, automake, libtool
-, cryptohash
-, haddock, hspec, xhtml, primitive, cacert, pkgs
-, coreutils
-, libiconv
-
-, ghcjsBootSrc ? fetchgit {
-    url = git://github.com/ghcjs/ghcjs-boot.git;
-    rev = "b000a4f4619b850bf3f9a45c9058f7a51e7709c8";
-    sha256 = "164v0xf33r6mnympp6s70v8j6g7ccyg7z95gjp43bq150ppvisbq";
-    fetchSubmodules = true;
-  }
-, ghcjsBoot ? import ./ghcjs-boot.nix {
-    inherit runCommand;
-    src = ghcjsBootSrc;
-  }
-, shims ? import ./head_shims.nix { inherit fetchFromGitHub; }
-}:
-let
-  inherit (bootPkgs) ghc;
+bootPkgs.callPackage ./base.nix {
   version = "0.2.020161101";
 
-in mkDerivation (rec {
-  pname = "ghcjs";
-  inherit version;
-  src = fetchFromGitHub {
+  # deprecated on HEAD, directly included in the distribution
+  ghcjs-prim = null;
+  inherit bootPkgs;
+
+  ghcjsSrc = fetchFromGitHub {
     owner = "ghcjs";
     repo = "ghcjs";
     rev = "899c834a36692bbbde9b9d16fe5b92ce55a623c4";
     sha256 = "024yj4k0dxy7nvyq19n3xbhh4b4csdrgj19a3l4bmm1zn84gmpl6";
   };
-  isLibrary = true;
-  isExecutable = true;
-  jailbreak = true;
-  doHaddock = false;
-  doCheck = false;
-  buildDepends = [
-    filepath HTTP mtl network random stm time zlib aeson attoparsec
-    bzlib data-default ghc-paths hashable haskell-src-exts haskell-src-meta
-    lens optparse-applicative parallel safe shelly split
-    stringsearch syb system-fileio system-filepath tar terminfo text-binary
-    unordered-containers vector wl-pprint-text yaml
-    alex happy git gnumake autoconf automake libtool patch gmp
-    base16-bytestring cryptohash executable-path haddock-api
-    transformers-compat QuickCheck haddock hspec xhtml
-    regex-posix libiconv
-  ];
-  buildTools = [ nodejs git ];
-  testDepends = [
-    HUnit test-framework test-framework-hunit
-  ];
-  patches = [ ./ghcjs.patch ];
-  postPatch = ''
-    substituteInPlace Setup.hs \
-      --replace "/usr/bin/env" "${coreutils}/bin/env"
-
-    substituteInPlace src/Compiler/Info.hs \
-      --replace "@PREFIX@" "$out"          \
-      --replace "@VERSION@" "${version}"
-
-    substituteInPlace src-bin/Boot.hs \
-      --replace "@PREFIX@" "$out"     \
-      --replace "@CC@"     "${stdenv.cc}/bin/cc"
-  '';
-  preBuild = ''
-    export HOME="$TMP"
-
-    local topDir=$out/lib/ghcjs-${version}
-    mkdir -p $topDir
-
-    cp -r ${ghcjsBoot} $topDir/ghcjs-boot
-    chmod -R u+w $topDir/ghcjs-boot
-
-    cp -r ${shims} $topDir/shims
-    chmod -R u+w $topDir/shims
-
-    # Make the patches be relative their corresponding package's directory.
-    # See: https://github.com/ghcjs/ghcjs-boot/pull/12
-    for patch in "$topDir/ghcjs-boot/patches/"*.patch; do
-      echo "fixing patch: $patch"
-      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 = let
-    ghcjsNodePkgs = callPackage ../../../top-level/node-packages.nix {
-      generated = ./node-packages-generated.nix;
-      self = ghcjsNodePkgs;
-    };
-  in {
-    inherit bootPkgs;
-    isCross = true;
-    isGhcjs = true;
-    inherit nodejs ghcjsBoot;
-    inherit (ghcjsNodePkgs) "socket.io";
-
-    # This is the list of the Stage 1 packages that are built into a booted ghcjs installation
-    # It can be generated with the command:
-    # nix-shell -p haskell.packages.ghcjs.ghc --command "ghcjs-pkg list | sed -n 's/^    \(.*\)-\([0-9.]*\)$/\1_\2/ p' | sed 's/\./_/g' | sed 's/^\([^_]*\)\(.*\)$/      \"\1\"/'"
-    stage1Packages = [
-      "array"
-      "base"
-      "binary"
-      "rts"
-      "bytestring"
-      "containers"
-      "deepseq"
-      "directory"
-      "filepath"
-      "ghc-prim"
-      "ghcjs-prim"
-      "integer-gmp"
-      "old-locale"
-      "pretty"
-      "primitive"
-      "process"
-      "template-haskell"
-      "time"
-      "transformers"
-      "unix"
-    ];
-
-    mkStage2 = import ./stage2.nix {
-      inherit ghcjsBoot;
-    };
+  ghcjsBootSrc = fetchgit {
+    url = git://github.com/ghcjs/ghcjs-boot.git;
+    rev = "b000a4f4619b850bf3f9a45c9058f7a51e7709c8";
+    sha256 = "164v0xf33r6mnympp6s70v8j6g7ccyg7z95gjp43bq150ppvisbq";
+    fetchSubmodules = true;
   };
 
-  homepage = "https://github.com/ghcjs/ghcjs";
-  description = "A Haskell to JavaScript compiler that uses the GHC API";
-  license = stdenv.lib.licenses.bsd3;
-  platforms = ghc.meta.platforms;
-  maintainers = with stdenv.lib.maintainers; [ jwiegley cstrahan ];
-})
+  shims = import ./head_shims.nix { inherit fetchFromGitHub; };
+  stage1Packages = [
+    "array"
+    "base"
+    "binary"
+    "bytestring"
+    "containers"
+    "deepseq"
+    "directory"
+    "filepath"
+    "ghc-boot"
+    "ghc-boot-th"
+    "ghc-prim"
+    "ghci"
+    "ghcjs-prim"
+    "ghcjs-th"
+    "integer-gmp"
+    "pretty"
+    "primitive"
+    "process"
+    "rts"
+    "template-haskell"
+    "time"
+    "transformers"
+    "unix"
+  ];
+  stage2 = import ./head_stage2.nix;
+}
diff --git a/pkgs/development/compilers/ghcjs/head_shims.nix b/pkgs/development/compilers/ghcjs/head_shims.nix
index e321978f0bdc..68b03d057397 100644
--- a/pkgs/development/compilers/ghcjs/head_shims.nix
+++ b/pkgs/development/compilers/ghcjs/head_shims.nix
@@ -2,6 +2,6 @@
 fetchFromGitHub {
   owner = "ghcjs";
   repo = "shims";
-  rev = "1f555d3ca072c61862cc35f92f5ac05f3b938a37";
-  sha256 = "1pciyrlrp5i9s4s8ai4dvhihcahazva6fg0graxxxkjdvnl789ws";
+  rev = "f67394c559ac921a768b12f141499119563b8bf3";
+  sha256 = "1lz86qmkxkfch1yk9a62admw7jsd34sqcrskgpq28hbhjpgzf1lv";
 }
diff --git a/pkgs/development/compilers/ghcjs/head_stage2.nix b/pkgs/development/compilers/ghcjs/head_stage2.nix
new file mode 100644
index 000000000000..765a384bf634
--- /dev/null
+++ b/pkgs/development/compilers/ghcjs/head_stage2.nix
@@ -0,0 +1,345 @@
+{ ghcjsBoot }: { callPackage }:
+
+{
+  async = callPackage
+    ({ mkDerivation, base, HUnit, stdenv, stm, test-framework
+      , test-framework-hunit
+      }:
+      mkDerivation {
+        pname = "async";
+        version = "2.1.0";
+        src = "${ghcjsBoot}/boot/async";
+        doCheck = false;
+        libraryHaskellDepends = [ base stm ];
+        testHaskellDepends = [
+          base HUnit test-framework test-framework-hunit
+        ];
+        jailbreak = true;
+        homepage = "https://github.com/simonmar/async";
+        description = "Run IO operations asynchronously and wait for their results";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  aeson = callPackage
+    ({ mkDerivation, attoparsec, base, bytestring, containers, deepseq
+      , dlist, fail, ghc-prim, hashable, HUnit, mtl, QuickCheck, scientific
+      , stdenv, syb, tagged, template-haskell, test-framework
+      , test-framework-hunit, test-framework-quickcheck2, text, time
+      , transformers, unordered-containers, vector
+      }:
+      mkDerivation {
+        pname = "aeson";
+        version = "0.11.2.0";
+        src = "${ghcjsBoot}/boot/aeson";
+        doCheck = false;
+        libraryHaskellDepends = [
+          attoparsec base bytestring containers deepseq dlist fail ghc-prim
+          hashable mtl scientific syb tagged template-haskell text time transformers
+          unordered-containers vector
+        ];
+        testHaskellDepends = [
+          attoparsec base bytestring containers ghc-prim HUnit QuickCheck
+          template-haskell test-framework test-framework-hunit
+          test-framework-quickcheck2 text time unordered-containers vector
+        ];
+        jailbreak = true;
+        homepage = "https://github.com/bos/aeson";
+        description = "Fast JSON parsing and encoding";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  attoparsec = callPackage
+    ({ mkDerivation, array, base, bytestring, containers, deepseq
+      , QuickCheck, quickcheck-unicode, scientific, stdenv
+      , test-framework, test-framework-quickcheck2, text, transformers
+      , vector
+      }:
+      mkDerivation {
+        pname = "attoparsec";
+        version = "0.13.0.2";
+        src = "${ghcjsBoot}/boot/attoparsec";
+        doCheck = false;
+        libraryHaskellDepends = [
+          array base bytestring containers deepseq scientific text
+          transformers
+        ];
+        testHaskellDepends = [
+          array base bytestring containers deepseq QuickCheck
+          quickcheck-unicode scientific test-framework
+          test-framework-quickcheck2 text transformers vector
+        ];
+        jailbreak = true;
+        homepage = "https://github.com/bos/attoparsec";
+        description = "Fast combinator parsing for bytestrings and text";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  case-insensitive = callPackage
+    ({ mkDerivation, base, bytestring, deepseq, hashable, HUnit, stdenv
+      , test-framework, test-framework-hunit, text
+      }:
+      mkDerivation {
+        pname = "case-insensitive";
+        version = "1.2.0.6";
+        src = "${ghcjsBoot}/boot/case-insensitive";
+        doCheck = false;
+        libraryHaskellDepends = [ base bytestring deepseq hashable text ];
+        testHaskellDepends = [
+          base bytestring HUnit test-framework test-framework-hunit text
+        ];
+        jailbreak = true;
+        homepage = "https://github.com/basvandijk/case-insensitive";
+        description = "Case insensitive string comparison";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  dlist = callPackage
+    ({ mkDerivation, base, Cabal, deepseq, QuickCheck, stdenv }:
+      mkDerivation {
+        pname = "dlist";
+        version = "0.7.1.2";
+        src = "${ghcjsBoot}/boot/dlist";
+        doCheck = false;
+        libraryHaskellDepends = [ base deepseq ];
+        testHaskellDepends = [ base Cabal QuickCheck ];
+        jailbreak = true;
+        homepage = "https://github.com/spl/dlist";
+        description = "Difference lists";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  extensible-exceptions = callPackage
+    ({ mkDerivation, base, stdenv }:
+      mkDerivation {
+        pname = "extensible-exceptions";
+        version = "0.1.1.4";
+        src = "${ghcjsBoot}/boot/extensible-exceptions";
+        doCheck = false;
+        libraryHaskellDepends = [ base ];
+        jailbreak = true;
+        description = "Extensible exceptions";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  hashable = callPackage
+    ({ mkDerivation, base, bytestring, ghc-prim, HUnit, integer-gmp
+      , QuickCheck, random, stdenv, test-framework, test-framework-hunit
+      , test-framework-quickcheck2, text, unix
+      }:
+      mkDerivation {
+        pname = "hashable";
+        version = "1.2.4.0";
+        src = "${ghcjsBoot}/boot/hashable";
+        doCheck = false;
+        libraryHaskellDepends = [
+          base bytestring ghc-prim integer-gmp text
+        ];
+        testHaskellDepends = [
+          base bytestring ghc-prim HUnit QuickCheck random test-framework
+          test-framework-hunit test-framework-quickcheck2 text unix
+        ];
+        jailbreak = true;
+        homepage = "http://github.com/tibbe/hashable";
+        description = "A class for types that can be converted to a hash value";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  mtl = callPackage
+    ({ mkDerivation, base, stdenv, transformers }:
+      mkDerivation {
+        pname = "mtl";
+        version = "2.2.2";
+        src = "${ghcjsBoot}/boot/mtl";
+        doCheck = false;
+        libraryHaskellDepends = [ base transformers ];
+        jailbreak = true;
+        homepage = "http://github.com/ekmett/mtl";
+        description = "Monad classes, using functional dependencies";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  old-time = callPackage
+    ({ mkDerivation, base, old-locale, stdenv }:
+      mkDerivation {
+        pname = "old-time";
+        version = "1.1.0.3";
+        src = "${ghcjsBoot}/boot/old-time";
+        doCheck = false;
+        libraryHaskellDepends = [ base old-locale ];
+        jailbreak = true;
+        description = "Time library";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  parallel = callPackage
+    ({ mkDerivation, array, base, containers, deepseq, stdenv }:
+      mkDerivation {
+        pname = "parallel";
+        version = "3.2.1.0";
+        src = "${ghcjsBoot}/boot/parallel";
+        doCheck = false;
+        libraryHaskellDepends = [ array base containers deepseq ];
+        jailbreak = true;
+        description = "Parallel programming library";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  scientific = callPackage
+    ({ mkDerivation, base, binary, bytestring, containers, deepseq, ghc-prim
+      , hashable, integer-gmp, QuickCheck, smallcheck, stdenv, tasty
+      , tasty-ant-xml, tasty-hunit, tasty-quickcheck, tasty-smallcheck
+      , text, vector
+      }:
+      mkDerivation {
+        pname = "scientific";
+        version = "0.3.4.7";
+        src = "${ghcjsBoot}/boot/scientific";
+        doCheck = false;
+        libraryHaskellDepends = [
+          base binary bytestring containers deepseq ghc-prim hashable
+          integer-gmp text vector
+        ];
+        testHaskellDepends = [
+          base bytestring QuickCheck smallcheck tasty tasty-ant-xml
+          tasty-hunit tasty-quickcheck tasty-smallcheck text
+        ];
+        jailbreak = true;
+        homepage = "https://github.com/basvandijk/scientific";
+        description = "Numbers represented using scientific notation";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  stm = callPackage
+    ({ mkDerivation, array, base, stdenv }:
+      mkDerivation {
+        pname = "stm";
+        version = "2.4.4.1";
+        src = "${ghcjsBoot}/boot/stm";
+        doCheck = false;
+        libraryHaskellDepends = [ array base ];
+        jailbreak = true;
+        description = "Software Transactional Memory";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  syb = callPackage
+    ({ mkDerivation, base, containers, HUnit, mtl, stdenv }:
+      mkDerivation {
+        pname = "syb";
+        version = "0.6";
+        src = "${ghcjsBoot}/boot/syb";
+        doCheck = false;
+        libraryHaskellDepends = [ base ];
+        testHaskellDepends = [ base containers HUnit mtl ];
+        jailbreak = true;
+        homepage = "http://www.cs.uu.nl/wiki/GenericProgramming/SYB";
+        description = "Scrap Your Boilerplate";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  text = callPackage
+    ({ mkDerivation, array, base, binary, bytestring, deepseq, directory
+      , ghc-prim, HUnit, integer-gmp, QuickCheck, quickcheck-unicode
+      , random, stdenv, test-framework, test-framework-hunit
+      , test-framework-quickcheck2
+      }:
+      mkDerivation {
+        pname = "text";
+        version = "1.2.2.1";
+        src = "${ghcjsBoot}/boot/text";
+        doCheck = false;
+        libraryHaskellDepends = [
+          array base binary bytestring deepseq ghc-prim integer-gmp
+        ];
+        testHaskellDepends = [
+          array base binary bytestring deepseq directory ghc-prim HUnit
+          integer-gmp QuickCheck quickcheck-unicode random test-framework
+          test-framework-hunit test-framework-quickcheck2
+        ];
+        jailbreak = true;
+        homepage = "https://github.com/bos/text";
+        description = "An efficient packed Unicode text type";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  unordered-containers = callPackage
+    ({ mkDerivation, base, ChasingBottoms, containers, deepseq, hashable
+      , HUnit, QuickCheck, stdenv, test-framework, test-framework-hunit
+      , test-framework-quickcheck2
+      }:
+      mkDerivation {
+        pname = "unordered-containers";
+        version = "0.2.7.0";
+        src = "${ghcjsBoot}/boot/unordered-containers";
+        doCheck = false;
+        libraryHaskellDepends = [ base deepseq hashable ];
+        testHaskellDepends = [
+          base ChasingBottoms containers hashable HUnit QuickCheck
+          test-framework test-framework-hunit test-framework-quickcheck2
+        ];
+        jailbreak = true;
+        homepage = "https://github.com/tibbe/unordered-containers";
+        description = "Efficient hashing-based container types";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  vector = callPackage
+    ({ mkDerivation, base, deepseq, ghc-prim, primitive, QuickCheck
+      , random, stdenv, template-haskell, test-framework
+      , test-framework-quickcheck2, transformers
+      }:
+      mkDerivation {
+        pname = "vector";
+        version = "0.11.0.0";
+        src = "${ghcjsBoot}/boot/vector";
+        doCheck = false;
+        libraryHaskellDepends = [ base deepseq ghc-prim primitive ];
+        testHaskellDepends = [
+          base QuickCheck random template-haskell test-framework
+          test-framework-quickcheck2 transformers
+        ];
+        jailbreak = true;
+        homepage = "https://github.com/haskell/vector";
+        description = "Efficient Arrays";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+  ghcjs-base = callPackage
+    ({ mkDerivation, aeson, array, attoparsec, base, bytestring
+      , containers, deepseq, directory, dlist, ghc-prim, ghcjs-prim
+      , hashable, HUnit, integer-gmp, primitive, QuickCheck
+      , quickcheck-unicode, random, scientific, stdenv, test-framework
+      , test-framework-hunit, test-framework-quickcheck2, text, time
+      , transformers, unordered-containers, vector
+      }:
+      mkDerivation {
+        pname = "ghcjs-base";
+        version = "0.2.0.0";
+        src = "${ghcjsBoot}/ghcjs/ghcjs-base";
+        doCheck = false;
+        libraryHaskellDepends = [
+          aeson attoparsec base bytestring containers deepseq dlist ghc-prim
+          ghcjs-prim hashable integer-gmp primitive scientific text time
+          transformers unordered-containers vector
+        ];
+        testHaskellDepends = [
+          array base bytestring deepseq directory ghc-prim ghcjs-prim HUnit
+          primitive QuickCheck quickcheck-unicode random test-framework
+          test-framework-hunit test-framework-quickcheck2 text
+        ];
+        jailbreak = true;
+        homepage = "http://github.com/ghcjs/ghcjs-base";
+        description = "Base library for GHCJS";
+        license = stdenv.lib.licenses.mit;
+      }) {};
+  Cabal = callPackage
+    ({ mkDerivation, array, base, binary, bytestring, containers
+      , deepseq, directory, extensible-exceptions, filepath, HUnit
+      , old-time, pretty, process, QuickCheck, regex-posix, stdenv
+      , test-framework, test-framework-hunit, test-framework-quickcheck2
+      , time, unix
+      }:
+      mkDerivation {
+        pname = "Cabal";
+        version = "1.24.0.0";
+        src = "${ghcjsBoot}/boot/cabal/Cabal";
+        doCheck = false;
+        libraryHaskellDepends = [
+          array base binary bytestring containers deepseq directory filepath
+          pretty process time unix
+        ];
+        testHaskellDepends = [
+          base bytestring containers directory extensible-exceptions filepath
+          HUnit old-time process QuickCheck regex-posix test-framework
+          test-framework-hunit test-framework-quickcheck2 unix
+        ];
+        jailbreak = true;
+        homepage = "http://www.haskell.org/cabal/";
+        description = "A framework for packaging Haskell software";
+        license = stdenv.lib.licenses.bsd3;
+      }) {};
+}