about summary refs log tree commit diff
path: root/pkgs/top-level/haskell-packages.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/top-level/haskell-packages.nix')
-rw-r--r--pkgs/top-level/haskell-packages.nix46
1 files changed, 43 insertions, 3 deletions
diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix
index 7309121486e5..6f07c129322d 100644
--- a/pkgs/top-level/haskell-packages.nix
+++ b/pkgs/top-level/haskell-packages.nix
@@ -1,6 +1,21 @@
 { pkgs, callPackage, stdenv, buildPlatform, targetPlatform }:
 
-rec {
+let # These are attributes in compiler and packages that don't support integer-simple.
+    integerSimpleExcludes = [
+      "ghc6102Binary"
+      "ghc704Binary"
+      "ghc742Binary"
+      "ghc6104"
+      "ghc6123"
+      "ghc704"
+      "ghcjs"
+      "ghcjsHEAD"
+      "ghcCross"
+      "jhc"
+      "uhc"
+      "integer-simple"
+    ];
+in rec {
 
   lib = import ../development/haskell-modules/lib.nix { inherit pkgs; };
 
@@ -61,8 +76,8 @@ rec {
     ghcjs = packages.ghc7103.callPackage ../development/compilers/ghcjs {
       bootPkgs = packages.ghc7103;
     };
-    ghcjsHEAD = packages.ghc801.callPackage ../development/compilers/ghcjs/head.nix {
-      bootPkgs = packages.ghc801;
+    ghcjsHEAD = packages.ghc802.callPackage ../development/compilers/ghcjs/head.nix {
+      bootPkgs = packages.ghc802;
     };
 
     jhc = callPackage ../development/compilers/jhc {
@@ -74,6 +89,17 @@ rec {
       inherit (pkgs.haskellPackages) ghcWithPackages;
     });
 
+    # The integer-simple attribute set contains all the GHC compilers
+    # build with integer-simple instead of integer-gmp.
+    integer-simple =
+      let integerSimpleGhcNames =
+            pkgs.lib.filter (name: ! builtins.elem name integerSimpleExcludes)
+                            (pkgs.lib.attrNames compiler);
+          integerSimpleGhcs = pkgs.lib.genAttrs integerSimpleGhcNames
+                                (name: compiler."${name}".override { enableIntegerSimple = true; });
+      in pkgs.recurseIntoAttrs (integerSimpleGhcs // {
+           ghcHEAD = integerSimpleGhcs.ghcHEAD.override { selfPkgs = packages.integer-simple.ghcHEAD; };
+         });
   };
 
   packages = {
@@ -142,6 +168,20 @@ rec {
       compilerConfig = callPackage ../development/haskell-modules/configuration-ghcjs.nix { };
     };
 
+    # The integer-simple attribute set contains package sets for all the GHC compilers
+    # using integer-simple instead of integer-gmp.
+    integer-simple =
+      let integerSimpleGhcNames =
+            pkgs.lib.filter (name: ! builtins.elem name integerSimpleExcludes)
+                            (pkgs.lib.attrNames packages);
+      in pkgs.lib.genAttrs integerSimpleGhcNames (name: packages."${name}".override {
+       ghc = compiler.integer-simple."${name}";
+       overrides = _self : _super : {
+         integer-simple = null;
+         integer-gmp = null;
+       };
+    });
+
     # These attributes exist only for backwards-compatibility so that we don't break
     # stack's --nix support. These attributes will disappear in the foreseeable
     # future: https://github.com/commercialhaskell/stack/issues/2259.