summary refs log tree commit diff
path: root/pkgs/top-level
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/top-level')
-rw-r--r--pkgs/top-level/all-packages.nix31
-rw-r--r--pkgs/top-level/haskell-defaults.nix404
-rw-r--r--pkgs/top-level/haskell-packages.nix616
3 files changed, 192 insertions, 859 deletions
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 9988f37e8a4..88cbb2b3f97 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -2858,36 +2858,27 @@ let
     builtins.substring 0 (builtins.stringLength "packages_") name == "packages_"
   ) haskell));
 
-  # Current default version: 7.6.3.
   haskellPackages = haskellPackages_ghc763;
-  # Current Haskell Platform: 2013.2.0.0
-  haskellPlatform = haskellPackages.haskellPlatform;
+  haskellPlatform = haskellPlatformPackages."2013_2_0_0";
 
   haskellPackages_ghc6104 = haskell.packages_ghc6104;
-  haskellPackages_ghc6121 = haskell.packages_ghc6121;
-  haskellPackages_ghc6122 = haskell.packages_ghc6122;
   haskellPackages_ghc6123 = haskell.packages_ghc6123;
-  haskellPackages_ghc701  = haskell.packages_ghc701;
-  haskellPackages_ghc702  = haskell.packages_ghc702;
-  haskellPackages_ghc703  = haskell.packages_ghc703;
   haskellPackages_ghc704  = haskell.packages_ghc704;
-  haskellPackages_ghc721  = haskell.packages_ghc721;
   haskellPackages_ghc722  = haskell.packages_ghc722;
-  haskellPackages_ghc741  = haskell.packages_ghc741;
   haskellPackages_ghc742  = haskell.packages_ghc742;
-  haskellPackages_ghc761  = haskell.packages_ghc761;
-  haskellPackages_ghc762  = haskell.packages_ghc762;
   # For the default version, we build profiling versions of the libraries, too.
   # The following three lines achieve that: the first two make Hydra build explicit
   # profiling and non-profiling versions; the final respects the user-configured
   # default setting.
-  haskellPackages_ghc763_no_profiling = recurseIntoAttrs (haskell.packages_ghc763.noProfiling);
-  haskellPackages_ghc763_profiling    = recurseIntoAttrs (haskell.packages_ghc763.profiling);
-  haskellPackages_ghc763              = recurseIntoAttrs (haskell.packages_ghc763.highPrio);
+  haskellPackages_ghc763_no_profiling = recurseIntoAttrs haskell.packages_ghc763.noProfiling;
+  haskellPackages_ghc763_profiling    = recurseIntoAttrs haskell.packages_ghc763.profiling;
+  haskellPackages_ghc763              = recurseIntoAttrs haskell.packages_ghc763.highPrio;
   # Reasonably current HEAD snapshot.
   haskellPackages_ghc782 = haskell.packages_ghc782;
   haskellPackages_ghcHEAD = haskell.packages_ghcHEAD;
 
+  haskellPlatformPackages = recurseIntoAttrs (import ../development/libraries/haskell/haskell-platform { inherit pkgs; });
+
   haxe = callPackage ../development/compilers/haxe { };
 
   hiphopvm = callPackage ../development/interpreters/hiphopvm {
@@ -7965,10 +7956,12 @@ let
   darcs = haskellPackages.darcs.override {
     # A variant of the Darcs derivation that containts only the executable and
     # thus has no dependencies on other Haskell packages.
-    cabal = { mkDerivation = x: rec { final = haskellPackages.cabal.mkDerivation (self: (x final) // {
-              isLibrary = false;
-              configureFlags = "-f-library"; }); }.final;
-            };
+    cabal = haskellPackages.cabal.override {
+      extension = self : super : {
+        isLibrary = false;
+        configureFlags = "-f-library " + super.configureFlags or "";
+      };
+    };
   };
 
   darktable = callPackage ../applications/graphics/darktable {
diff --git a/pkgs/top-level/haskell-defaults.nix b/pkgs/top-level/haskell-defaults.nix
index b5a74e255ce..f40ce2bf6df 100644
--- a/pkgs/top-level/haskell-defaults.nix
+++ b/pkgs/top-level/haskell-defaults.nix
@@ -10,212 +10,79 @@
 
 { makeOverridable, lowPrio, hiPrio, stdenv, pkgs, newScope, config, callPackage } : rec {
 
-  # Preferences functions.
-  #
-  # Change these if you want to change the default versions of packages being used
-  # for a particular GHC version.
-
-  ghcHEADPrefs =
-    self : super : super.haskellPlatformArgs_future self // {
-      haskellPlatform = null;
-      extensibleExceptions = self.extensibleExceptions_0_1_1_4;
-      binary_0_7_1_0 = null;
-    };
-
-  ghc763Prefs =
-    self : super : super.haskellPlatformArgs_2013_2_0_0 self // {
-      haskellPlatform = self.haskellPlatform_2013_2_0_0;
-      extensibleExceptions = self.extensibleExceptions_0_1_1_4;
-    };
-
-  ghc742Prefs =
-    self : super : super.haskellPlatformArgs_2012_4_0_0 self // {
-      haskellPlatform = self.haskellPlatform_2012_4_0_0;
-      cabalInstall_1_16_0_2 = super.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; };
-      cabal2nix = super.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; };
-      haskeline = self.haskeline_0_7_1_1;
-      terminfo = self.terminfo_0_3_2_6;
-    };
-
-  ghc741Prefs =
-    self : super : super.haskellPlatformArgs_2012_2_0_0 self // {
-      haskellPlatform = self.haskellPlatform_2012_2_0_0;
-      cabalInstall_1_16_0_2 = super.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; };
-      cabal2nix = super.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; };
-      haskeline = self.haskeline_0_7_1_1;
-      terminfo = self.terminfo_0_3_2_6;
-    };
-
-  ghc722Prefs =
-    self : super : super.haskellPlatformArgs_2012_2_0_0 self // {
-      haskellPlatform = self.haskellPlatform_2012_2_0_0;
-      deepseq = self.deepseq_1_3_0_2;
-      cabalInstall_0_14_0 = super.cabalInstall_0_14_0.override { Cabal = self.Cabal_1_14_0; };
-      cabalInstall_1_16_0_2 = super.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; };
-      cabalInstall_1_20_0_1 = super.cabalInstall_1_20_0_1.override { HTTP = self.HTTP_4000_2_14; };
-      cabalInstall = super.cabalInstall_0_14_0.override { Cabal = self.Cabal_1_14_0; };
-      cabal2nix = super.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; };
-      binary = self.binary_0_6_0_0;
-      prettyShow = self.prettyShow_1_2;
-      quickcheckIo = super.quickcheckIo.override {
-        HUnit = self.HUnit_1_2_5_2;
-        QuickCheck = self.QuickCheck2;
-      };
-      hspecExpectations = super.hspecExpectations.override {
-        HUnit = self.HUnit_1_2_5_2;
-      };
-      haskeline = self.haskeline_0_7_1_1;
-      terminfo = self.terminfo_0_3_2_6;
-    };
-
-  ghc721Prefs = ghc722Prefs;
-
-  ghc704Prefs =
-    self : super : super.haskellPlatformArgs_2011_4_0_0 self // {
-      haskellPlatform = self.haskellPlatform_2011_4_0_0;
-      cabalInstall_0_14_0 = super.cabalInstall_0_14_0.override { Cabal = self.Cabal_1_14_0; };
-      cabalInstall_1_16_0_2 = super.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; };
-      monadPar = self.monadPar_0_1_0_3;
-      jailbreakCabal = super.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; };
-      cabal2nix = super.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; };
-      prettyShow = self.prettyShow_1_2;
-      binary = self.binary_0_6_0_0;
-      Cabal_1_18_1_3 = super.Cabal_1_18_1_3.override { deepseq = self.deepseq_1_3_0_2; };
-      quickcheckIo = super.quickcheckIo.override {
-        HUnit = self.HUnit_1_2_5_2;
-        QuickCheck = self.QuickCheck2;
-      };
-      hspecExpectations = super.hspecExpectations.override {
-        HUnit = self.HUnit_1_2_5_2;
-      };
-      haskeline = self.haskeline_0_7_1_1;
-      terminfo = self.terminfo_0_3_2_6;
-    };
-
-  ghc703Prefs =
-    self : super : super.haskellPlatformArgs_2011_2_0_1 self // {
-      haskellPlatform = self.haskellPlatform_2011_2_0_1;
-      cabalInstall_0_14_0 = super.cabalInstall_0_14_0.override { Cabal = self.Cabal_1_14_0; zlib = self.zlib_0_5_3_3; };
-      cabalInstall_1_16_0_2 = super.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; zlib = self.zlib_0_5_3_3; };
-      monadPar = self.monadPar_0_1_0_3;
-      jailbreakCabal = super.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; };
-      cabal2nix = super.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; };
-      prettyShow = self.prettyShow_1_2;
-      binary = self.binary_0_6_0_0;
-      Cabal_1_18_1_3 = super.Cabal_1_18_1_3.override { deepseq = self.deepseq_1_3_0_2; };
-      quickcheckIo = super.quickcheckIo.override {
-        HUnit = self.HUnit_1_2_5_2;
-        QuickCheck = self.QuickCheck2;
-      };
-      hspecExpectations = super.hspecExpectations.override {
-        HUnit = self.HUnit_1_2_5_2;
-      };
-      haskeline = self.haskeline_0_7_1_1;
-      terminfo = self.terminfo_0_3_2_6;
-    };
-
-  ghc702Prefs = ghc701Prefs;
+  # haskell-packages.nix provides the latest possible version of every package,
+  # and this file overrides those version choices per compiler when appropriate.
+  # Older compilers inherit the overrides from newer ones.
 
-  ghc701Prefs =
-    self : super : super.haskellPlatformArgs_2011_2_0_0 self // {
-      haskellPlatform = self.haskellPlatform_2011_2_0_0;
-      cabalInstall_0_14_0 = super.cabalInstall_0_14_0.override { Cabal = self.Cabal_1_14_0; zlib = self.zlib_0_5_3_3; };
-      cabalInstall_1_16_0_2 = super.cabalInstall_1_16_0_2.override { Cabal = self.Cabal_1_16_0_3; zlib = self.zlib_0_5_3_3; };
-      monadPar = self.monadPar_0_1_0_3;
-      jailbreakCabal = super.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; };
-      cabal2nix = super.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; };
-      prettyShow = self.prettyShow_1_2;
-      binary = self.binary_0_6_0_0;
-      Cabal_1_18_1_3 = super.Cabal_1_18_1_3.override { deepseq = self.deepseq_1_3_0_2; };
-      quickcheckIo = super.quickcheckIo.override {
-        HUnit = self.HUnit_1_2_5_2;
-        QuickCheck = self.QuickCheck2;
-      };
-      hspecExpectations = super.hspecExpectations.override {
-        HUnit = self.HUnit_1_2_5_2;
-      };
-      haskeline = self.haskeline_0_7_1_1;
-      terminfo = self.terminfo_0_3_2_6;
-    };
-
-  ghc6123Prefs = ghc6122Prefs;
-
-  ghc6122Prefs =
-    self : super : super.haskellPlatformArgs_2010_2_0_0 self // {
-      haskellPlatform = super.haskellPlatform_2010_2_0_0;
-      mtl1 = self.mtl_1_1_0_2;
-      monadPar = self.monadPar_0_1_0_3;
-      deepseq = self.deepseq_1_1_0_2;
-      # deviating from Haskell platform here, to make some packages (notably statistics) compile
-      jailbreakCabal = super.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; };
-      cabal2nix = super.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; };
-      binary = self.binary_0_6_0_0;
-      cabalInstall_1_16_0_2 = super.cabalInstall_1_16_0_2.override {
-        Cabal = self.Cabal_1_16_0_3; 
-        zlib = self.zlib_0_5_3_3;
-        mtl = self.mtl_2_1_2;
-        HTTP = self.HTTP_4000_1_1.override { mtl = self.mtl_2_1_2; };
-      };
-      quickcheckIo = super.quickcheckIo.override {
-        HUnit = self.HUnit_1_2_5_2;
-        QuickCheck = self.QuickCheck2;
-      };
-      hspecExpectations = super.hspecExpectations.override {
-        HUnit = self.HUnit_1_2_5_2;
-      };
-      haskeline = self.haskeline_0_7_1_1;
-      terminfo = self.terminfo_0_3_2_6;
-    };
+  ghcHEADPrefs = self : super : super // {
+  };
 
-  ghc6121Prefs =
-    self : super : super.haskellPlatformArgs_2010_1_0_0 self // {
-      haskellPlatform = self.haskellPlatform_2010_1_0_0;
-      mtl1 = self.mtl_1_1_0_2;
-      extensibleExceptions = self.extensibleExceptions_0_1_1_0;
-      deepseq = self.deepseq_1_1_0_2;
-      monadPar = self.monadPar_0_1_0_3;
-      # deviating from Haskell platform here, to make some packages (notably statistics) compile
-      jailbreakCabal = super.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; };
-      cabal2nix = super.cabal2nix.override { Cabal = self.Cabal_1_16_0_3; hackageDb = self.hackageDb.override { Cabal = self.Cabal_1_16_0_3; }; };
-      binary = self.binary_0_6_0_0;
-      cabalInstall_1_16_0_2 = super.cabalInstall_1_16_0_2.override {
-        Cabal = self.Cabal_1_16_0_3;
-        zlib = self.zlib_0_5_3_3;
-        mtl = self.mtl_2_1_2;
-        HTTP = self.HTTP_4000_1_1.override { mtl = self.mtl_2_1_2; };
-      };
-      quickcheckIo = super.quickcheckIo.override {
-        HUnit = self.HUnit_1_2_5_2;
-        QuickCheck = self.QuickCheck2;
-      };
-      hspecExpectations = super.hspecExpectations.override {
-        HUnit = self.HUnit_1_2_5_2;
-      };
-      haskeline = self.haskeline_0_7_1_1;
-      terminfo = self.terminfo_0_3_2_6;
-    };
+  ghc782Prefs = self : super : ghcHEADPrefs self super // {
+  };
 
-  ghc6104Prefs =
-    self : super : super.haskellPlatformArgs_2009_2_0_2 self // {
-      haskellPlatform = self.haskellPlatform_2009_2_0_2;
-      mtl = self.mtl1;
-      mtl1 = self.mtl_1_1_0_2;
-      extensibleExceptions = self.extensibleExceptions_0_1_1_0;
-      text = self.text_0_11_0_6;
-      deepseq = self.deepseq_1_1_0_2;
-      monadPar = self.monadPar_0_1_0_3;
-      # deviating from Haskell platform here, to make some packages (notably statistics) compile
-      jailbreakCabal = super.jailbreakCabal.override { Cabal = self.disableTest self.Cabal_1_14_0; };
-      binary = self.binary_0_6_0_0;
-      cabalInstall_1_16_0_2 = super.cabalInstall_1_16_0_2.override {
-        Cabal = self.Cabal_1_16_0_3;
-        zlib = self.zlib_0_5_3_3;
-        mtl = self.mtl_2_1_2;
-        HTTP = self.HTTP_4000_1_1.override { mtl = self.mtl_2_1_2; };
+  ghc763Prefs = self : super : ghc782Prefs self super // {
+    criterion = super.criterion.override {
+      statistics = self.statistics.override {
+        vectorBinaryInstances = self.vectorBinaryInstances.override { binary = self.binary_0_7_0_1; };
       };
-      haskeline = self.haskeline_0_7_1_1;
-      terminfo = self.terminfo_0_3_2_6;
     };
+    haddock = self.haddock_2_13_2;
+    transformers = self.transformers_0_3_0_0;
+  };
+
+  ghc742Prefs = self : super : ghc763Prefs self super // {
+    aeson = super.aeson.override { blazeBuilder = self.blazeBuilder; };
+    hackageDb = super.hackageDb.override { Cabal = self.Cabal_1_16_0_3; };
+    haddock = self.haddock_2_11_0;
+    haskeline = super.haskeline.override { cabal = self.cabal.override { Cabal = self.Cabal_1_16_0_3; }; };
+  };
+
+  ghc722Prefs = self : super : ghc742Prefs self super // {
+    deepseq = self.deepseq_1_3_0_2;
+    extensibleExceptions = null;        # core package in ghc <= 7.4.x
+    haddock = self.haddock_2_9_4;
+    syb = self.syb_0_4_0;
+  };
+
+  ghc704Prefs = self : super : ghc722Prefs self super // {
+    binary = self.binary_0_7_0_1;       # core package in ghc >= 7.2.2
+    haddock = self.haddock_2_9_2.override { alex = self.alex_2_3_5; };
+    HsSyck = self.HsSyck_0_51;
+    jailbreakCabal = super.jailbreakCabal.override { Cabal = self.Cabal_1_16_0_3; };
+    random = null;                      # core package in ghc <= 7.0.x
+  };
+
+  ghc6123Prefs = self : super : ghc704Prefs self super // {
+    alex = self.alex_3_1_3;
+    cabalInstall = self.cabalInstall_1_16_0_2;
+    cgi = self.cgi_3001_1_7_5;
+    deepseq = self.deepseq_1_2_0_1;
+    haddock = self.haddock_2_7_2;
+    parallel = self.parallel_3_2_0_3;
+    primitive = self.primitive_0_5_0_1;
+    stm = self.stm_2_4_2;
+    syb = null;                         # core package in ghc < 7
+  };
+
+  ghc6104Prefs = self : super : ghc6123Prefs self super // {
+    alex = self.alex_2_3_5.override { cabal = self.cabal.override { Cabal = self.Cabal; }; };
+    Cabal = self.Cabal_1_16_0_3;
+    GLUT = self.GLUT_2_2_2_1;
+    haddock = self.haddock_2_4_2;
+    happy = super.happy.override { cabal = self.cabal.override { Cabal = self.Cabal; }; };
+    hashable = self.hashable_1_1_2_5;
+    HTTP = super.HTTP.override { cabal = self.cabal.override { Cabal = self.Cabal; }; };
+    HUnit = super.HUnit.override { cabal = self.cabal.override { Cabal = self.Cabal; }; };
+    network = super.network.override { cabal = self.cabal.override { Cabal = self.Cabal; }; };
+    OpenGLRaw = self.OpenGLRaw_1_3_0_0;
+    OpenGL = self.OpenGL_2_6_0_1;
+    QuickCheck = super.QuickCheck.override { cabal = self.cabal.override { Cabal = self.Cabal; }; };
+    stm = self.stm_2_4_2.override { cabal = self.cabal.override { Cabal = self.Cabal; }; };
+    tar = super.tar.override { cabal = self.cabal.override { Cabal = self.Cabal; }; };
+    text = self.text_0_11_2_3.override { cabal = self.cabal.override { Cabal = self.Cabal; }; };
+    time = self.time_1_1_2_4.override { cabal = self.cabal.override { Cabal = self.Cabal; }; };
+    zlib = super.zlib.override { cabal = self.cabal.override { Cabal = self.Cabal; }; };
+ };
 
   # Abstraction for Haskell packages collections
   packagesFun = makeOverridable
@@ -260,16 +127,6 @@
   #
   # GHC binaries are around for bootstrapping purposes
 
-  # If we'd want to reactivate the 6.6 and 6.8 series of ghc, we'd
-  # need to reenable an old binary such as this.
-  /*
-  ghc642Binary = lowPrio (import ../development/compilers/ghc/6.4.2-binary.nix {
-    inherit fetchurl stdenv ncurses gmp;
-    readline = if stdenv.system == "i686-linux" then readline4 else readline5;
-    perl = perl58;
-  });
-  */
-
   ghc6101Binary = lowPrio (callPackage ../development/compilers/ghc/6.10.1-binary.nix {
     gmp = pkgs.gmp4;
   });
@@ -298,68 +155,32 @@
   # Here, we associate compiler versions with bootstrap compiler versions and
   # preference functions.
 
-  packages_ghc6104 =
-    packages { ghcPath = ../development/compilers/ghc/6.10.4.nix;
-               prefFun = ghc6104Prefs;
-             };
-
-  packages_ghc6121 =
-    packages { ghcPath =  ../development/compilers/ghc/6.12.1.nix;
-               prefFun = ghc6121Prefs;
-             };
-
-  packages_ghc6122 =
-    packages { ghcPath = ../development/compilers/ghc/6.12.2.nix;
-               prefFun = ghc6122Prefs;
-             };
-
-  packages_ghc6123 =
-    packages { ghcPath = ../development/compilers/ghc/6.12.3.nix;
-               prefFun = ghc6123Prefs;
-             };
-
-  # Will never make it into a platform release, severe bugs; leave at lowPrio.
-  packages_ghc701 =
-    packages { ghcPath = ../development/compilers/ghc/7.0.1.nix;
-               prefFun = ghc701Prefs;
-             };
-
-  packages_ghc702 =
-    packages { ghcPath = ../development/compilers/ghc/7.0.2.nix;
-               prefFun = ghc702Prefs;
+  packages_ghcHEAD =
+    packages { ghcPath = ../development/compilers/ghc/head.nix;
+               ghcBinary = pkgs.haskellPackages.ghcPlain;
+               prefFun = ghcHEADPrefs;
+               extraArgs = {
+                 happy = pkgs.haskellPackages.happy_1_19_2;
+                 alex = pkgs.haskellPackages.alex_3_1_3;
+               };
              };
 
-  packages_ghc703 =
-    packages { ghcPath = ../development/compilers/ghc/7.0.3.nix;
-               prefFun = ghc703Prefs;
+  packages_ghc782 =
+    packages { ghcPath = ../development/compilers/ghc/7.8.2.nix;
+               ghcBinary = ghc742Binary;
+               prefFun = ghc782Prefs;
              };
 
-  # The following items are a bit convoluted, but they serve the
-  # following purpose:
-  #   - for the default version of GHC, both profiling and
-  #     non-profiling versions should be built by Hydra --
-  #     therefore, the _no_profiling and _profiling calls;
-  #   - however, if a user just upgrades a profile, then the
-  #     cabal/libraryProfiling setting should be respected; i.e.,
-  #     the versions not matching the profiling config setting
-  #     should have low priority -- therefore, the use of
-  #     defaultVersionPrioFun;
-  #   - it should be possible to select library versions that
-  #     respect the config setting using the standard
-  #     packages_ghc704 path -- therefore, the additional
-  #     call in packages_ghc704, without recurseIntoAttrs,
-  #     so that Hydra doesn't build these.
-
-  packages_ghc704 =
-    packages { ghcPath = ../development/compilers/ghc/7.0.4.nix;
-               ghcBinary = ghc6101BinaryDarwin;
-               prefFun = ghc704Prefs;
+  packages_ghc763 =
+    packages { ghcPath = ../development/compilers/ghc/7.6.3.nix;
+               ghcBinary = ghc704Binary;
+               prefFun = ghc763Prefs;
              };
 
-  packages_ghc721 =
-    packages { ghcPath = ../development/compilers/ghc/7.2.1.nix;
+  packages_ghc742 =
+    packages { ghcPath = ../development/compilers/ghc/7.4.2.nix;
                ghcBinary = ghc6121BinaryDarwin;
-               prefFun = ghc721Prefs;
+               prefFun = ghc742Prefs;
              };
 
   packages_ghc722 =
@@ -368,51 +189,20 @@
                prefFun = ghc722Prefs;
              };
 
-  packages_ghc741 =
-    packages { ghcPath = ../development/compilers/ghc/7.4.1.nix;
-               ghcBinary = ghc6121BinaryDarwin;
-               prefFun = ghc741Prefs;
-             };
-
-  packages_ghc742 =
-    packages { ghcPath = ../development/compilers/ghc/7.4.2.nix;
-               ghcBinary = ghc6121BinaryDarwin;
-               prefFun = ghc742Prefs;
-             };
-
-  packages_ghc761 =
-    packages { ghcPath = ../development/compilers/ghc/7.6.1.nix;
-               ghcBinary = ghc704Binary;
-               prefFun = ghc763Prefs;
-             };
-
-  packages_ghc762 =
-    packages { ghcPath = ../development/compilers/ghc/7.6.2.nix;
-               ghcBinary = ghc704Binary;
-               prefFun = ghc763Prefs;
-             };
-
-  packages_ghc763 =
-    packages { ghcPath = ../development/compilers/ghc/7.6.3.nix;
-               ghcBinary = ghc704Binary;
-               prefFun = ghc763Prefs;
+  packages_ghc704 =
+    packages { ghcPath = ../development/compilers/ghc/7.0.4.nix;
+               ghcBinary = ghc6101BinaryDarwin;
+               prefFun = ghc704Prefs;
              };
 
-  packages_ghc782 =
-    packages { ghcPath = ../development/compilers/ghc/7.8.2.nix;
-               ghcBinary = ghc742Binary;
-               prefFun = ghcHEADPrefs;
+  packages_ghc6123 =
+    packages { ghcPath = ../development/compilers/ghc/6.12.3.nix;
+               prefFun = ghc6123Prefs;
              };
 
-  # Reasonably current HEAD snapshot. Should *always* be lowPrio.
-  packages_ghcHEAD =
-    packages { ghcPath = ../development/compilers/ghc/head.nix;
-               ghcBinary = pkgs.haskellPackages.ghcPlain;
-               prefFun = ghcHEADPrefs;
-               extraArgs = {
-                 happy = pkgs.haskellPackages.happy_1_19_2;
-                 alex = pkgs.haskellPackages.alex_3_1_3;
-               };
+  packages_ghc6104 =
+    packages { ghcPath = ../development/compilers/ghc/6.10.4.nix;
+               prefFun = ghc6104Prefs;
              };
 
 }
diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix
index bfe563a5fcb..e34bdd635b7 100644
--- a/pkgs/top-level/haskell-packages.nix
+++ b/pkgs/top-level/haskell-packages.nix
@@ -1,20 +1,5 @@
 # Haskell packages in Nixpkgs
 #
-# If you have any questions about the packages defined here or how to
-# contribute, please contact Andres Loeh.
-#
-# This file defines all packages that depend on GHC, the Glasgow Haskell
-# compiler. They are usually distributed via Hackage, the central Haskell
-# package repository. Since at least the libraries are incompatible between
-# different compiler versions, the whole file is parameterized by the GHC
-# that is being used. GHC itself is composed in haskell-defaults.nix.
-#
-# Note that next to the packages defined here, there is another way to build
-# arbitrary packages from HackageDB in Nix, using the hack-nix tool that is
-# developed by Marc Weber.
-# -> http://github.com/MarcWeber/hack-nix. Read its README file.
-#
-#
 # This file defines a function parameterized by the following:
 #
 #    pkgs:
@@ -110,9 +95,11 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   # packages. It isn't the Cabal library, which is spelled "Cabal".
 
   cabal = callPackage ../build-support/cabal {
+    Cabal = null;               # prefer the Cabal version shipped with the compiler
     inherit enableLibraryProfiling enableCheckPhase
       enableStaticLibraries enableSharedLibraries enableSharedExecutables;
     glibcLocales = if pkgs.stdenv.isLinux then pkgs.glibcLocales else null;
+    extension = self : super : {};
   };
 
   # A variant of the cabal build driver that disables unit testing.
@@ -123,367 +110,6 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   # Convenience helper function.
   disableTest = x: x.override { cabal = self.cabalNoTest; };
 
-  # Haskell Platform
-  #
-  # We try to support several platform versions. For these, we set all
-  # versions explicitly.
-  #
-  # DO NOT CHANGE THE VERSIONS LISTED HERE from the actual Haskell
-  # Platform defaults. If you must update the defaults for a particular
-  # GHC version, change the "preferences function" for that GHC version
-  # in haskell-defaults.nix.
-
-  # NOTE: 2013.2.0.0 is the current default.
-
-  haskellPlatformArgs_future = self : {
-    async        = self.async_2_0_1_5;
-    attoparsec   = self.attoparsec_0_11_3_0;
-    caseInsensitive = self.caseInsensitive_1_2_0_0;
-    cgi          = self.cgi_3001_1_8_5;
-    fgl          = self.fgl_5_5_0_1;
-    GLUT         = self.GLUT_2_5_1_0;
-    GLURaw       = self.GLURaw_1_4_0_0;
-    haskellSrc   = self.haskellSrc_1_0_1_6;
-    hashable     = self.hashable_1_2_1_0;
-    html         = self.html_1_0_1_2;
-    HTTP         = self.HTTP_4000_2_14;
-    HUnit        = self.HUnit_1_2_5_2;
-    mtl          = self.mtl_2_1_3_1;
-    network      = self.network_2_5_0_0;
-    OpenGL       = self.OpenGL_2_9_1_0;
-    OpenGLRaw    = self.OpenGLRaw_1_4_0_0;
-    parallel     = self.parallel_3_2_0_4;
-    parsec       = self.parsec_3_1_5;
-    QuickCheck   = self.QuickCheck_2_6;
-    random       = self.random_1_0_1_1;
-    regexBase    = self.regexBase_0_93_2;
-    regexCompat  = self.regexCompat_0_95_1;
-    regexPosix   = self.regexPosix_0_95_2;
-    split        = self.split_0_2_2;
-    stm          = self.stm_2_4_3;
-    syb          = self.syb_0_4_1;
-    text         = self.text_1_1_1_1;
-    transformers = self.transformers_0_3_0_0;   # this has become a core package in GHC 7.7
-    unorderedContainers = self.unorderedContainers_0_2_4_0;
-    vector       = self.vector_0_10_9_1;
-    xhtml        = self.xhtml_3000_2_1;
-    zlib         = self.zlib_0_5_4_1;
-    cabalInstall = self.cabalInstall_1_20_0_1;
-    alex         = self.alex_3_1_3;
-    haddock      = self.haddock_2_14_2;
-    happy        = self.happy_1_19_3;
-    primitive    = self.primitive_0_5_2_1;      # semi-official, but specified
-  };
-
-  haskellPlatformArgs_2013_2_0_0 = self : {
-    async        = self.async_2_0_1_4;
-    attoparsec   = self.attoparsec_0_10_4_0;
-    caseInsensitive = self.caseInsensitive_1_0_0_1;
-    cgi          = self.cgi_3001_1_7_5;
-    fgl          = self.fgl_5_4_2_4;
-    GLUT         = self.GLUT_2_4_0_0;
-    GLURaw       = self.GLURaw_1_3_0_0;
-    haskellSrc   = self.haskellSrc_1_0_1_5;
-    hashable     = self.hashable_1_2_1_0;       # not HP (1.1.2.5), but fixes many builds
-    html         = self.html_1_0_1_2;
-    HTTP         = self.HTTP_4000_2_8;
-    HUnit        = self.HUnit_1_2_5_2;
-    mtl          = self.mtl_2_1_2;
-    network      = self.network_2_4_1_2;
-    OpenGL       = self.OpenGL_2_8_0_0;
-    OpenGLRaw    = self.OpenGLRaw_1_3_0_0;
-    parallel     = self.parallel_3_2_0_3;
-    parsec       = self.parsec_3_1_3;
-    QuickCheck   = self.QuickCheck_2_6;
-    random       = self.random_1_0_1_1;
-    regexBase    = self.regexBase_0_93_2;
-    regexCompat  = self.regexCompat_0_95_1;
-    regexPosix   = self.regexPosix_0_95_2;
-    split        = self.split_0_2_2;
-    stm          = self.stm_2_4_2;
-    syb          = self.syb_0_4_0;
-    text         = self.text_0_11_3_1;
-    transformers = self.transformers_0_3_0_0;
-    unorderedContainers = self.unorderedContainers_0_2_3_0;
-    vector       = self.vector_0_10_0_1;
-    xhtml        = self.xhtml_3000_2_1;
-    zlib         = self.zlib_0_5_4_1;
-    cabalInstall = self.cabalInstall_1_16_0_2;
-    alex         = self.alex_3_0_5;
-    haddock      = self.haddock_2_13_2;
-    happy        = self.happy_1_18_10;
-    primitive    = self.primitive_0_5_0_1;      # semi-official, but specified
-  };
-
-  haskellPlatform_2013_2_0_0 =
-    callPackage ../development/libraries/haskell/haskell-platform/2013.2.0.0.nix
-      (self.haskellPlatformArgs_2013_2_0_0 self);
-
-  haskellPlatformArgs_2012_4_0_0 = self : {
-    async        = self.async_2_0_1_3;
-    cgi          = self.cgi_3001_1_7_4;
-    fgl          = self.fgl_5_4_2_4;
-    GLUT         = self.GLUT_2_1_2_1;
-    haskellSrc   = self.haskellSrc_1_0_1_5;
-    html         = self.html_1_0_1_2;
-    HTTP         = self.HTTP_4000_2_5;
-    HUnit        = self.HUnit_1_2_5_1;
-    mtl          = self.mtl_2_1_2;
-    network      = self.network_2_3_1_0;
-    OpenGL       = self.OpenGL_2_2_3_1;
-    parallel     = self.parallel_3_2_0_3;
-    parsec       = self.parsec_3_1_3;
-    QuickCheck   = self.QuickCheck_2_5_1_1;
-    random       = self.random_1_0_1_1;
-    regexBase    = self.regexBase_0_93_2;
-    regexCompat  = self.regexCompat_0_95_1;
-    regexPosix   = self.regexPosix_0_95_2;
-    split        = self.split_0_2_1_1;
-    stm          = self.stm_2_4;
-    syb          = self.syb_0_3_7;
-    text         = self.text_0_11_2_3;
-    transformers = self.transformers_0_3_0_0;
-    vector       = self.vector_0_10_0_1;
-    xhtml        = self.xhtml_3000_2_1;
-    zlib         = self.zlib_0_5_4_0;
-    cabalInstall = self.cabalInstall_0_14_0;
-    alex         = self.alex_3_0_2;
-    haddock      = self.haddock_2_11_0;
-    happy        = self.happy_1_18_10;
-    primitive    = self.primitive_0_5_0_1; # semi-official, but specified
-  };
-
-  haskellPlatform_2012_4_0_0 =
-    callPackage ../development/libraries/haskell/haskell-platform/2012.4.0.0.nix
-      (self.haskellPlatformArgs_2012_4_0_0 self);
-
-  haskellPlatformArgs_2012_2_0_0 = self : {
-    cgi          = self.cgi_3001_1_7_4;
-    fgl          = self.fgl_5_4_2_4;
-    GLUT         = self.GLUT_2_1_2_1;
-    haskellSrc   = self.haskellSrc_1_0_1_5;
-    html         = self.html_1_0_1_2;
-    HTTP         = self.HTTP_4000_2_3;
-    HUnit        = self.HUnit_1_2_4_2;
-    mtl          = self.mtl_2_1_1;
-    network      = self.network_2_3_0_13;
-    OpenGL       = self.OpenGL_2_2_3_1;
-    parallel     = self.parallel_3_2_0_2;
-    parsec       = self.parsec_3_1_2;
-    QuickCheck   = self.QuickCheck_2_4_2;
-    random       = self.random_1_0_1_1;
-    regexBase    = self.regexBase_0_93_2;
-    regexCompat  = self.regexCompat_0_95_1;
-    regexPosix   = self.regexPosix_0_95_1;
-    stm          = self.stm_2_3;
-    syb          = self.syb_0_3_6_1;
-    text         = self.text_0_11_2_0;
-    transformers = self.transformers_0_3_0_0;
-    xhtml        = self.xhtml_3000_2_1;
-    zlib         = self.zlib_0_5_3_3;
-    cabalInstall = self.cabalInstall_0_14_0;
-    alex         = self.alex_3_0_1;
-    haddock      = self.haddock_2_10_0;
-    happy        = self.happy_1_18_9;
-  };
-
-  haskellPlatform_2012_2_0_0 =
-    callPackage ../development/libraries/haskell/haskell-platform/2012.2.0.0.nix
-      (self.haskellPlatformArgs_2012_2_0_0 self);
-
-  haskellPlatformArgs_2011_4_0_0 = self : {
-    cgi          = self.cgi_3001_1_7_4;
-    fgl          = self.fgl_5_4_2_4;
-    GLUT         = self.GLUT_2_1_2_1;
-    haskellSrc   = self.haskellSrc_1_0_1_4;
-    html         = self.html_1_0_1_2;
-    HUnit        = self.HUnit_1_2_4_2;
-    network      = self.network_2_3_0_5;
-    OpenGL       = self.OpenGL_2_2_3_0;
-    parallel     = self.parallel_3_1_0_1;
-    parsec       = self.parsec_3_1_1;
-    QuickCheck   = self.QuickCheck_2_4_1_1;
-    regexBase    = self.regexBase_0_93_2;
-    regexCompat  = self.regexCompat_0_95_1;
-    regexPosix   = self.regexPosix_0_95_1;
-    stm          = self.stm_2_2_0_1;
-    syb          = self.syb_0_3_3;
-    xhtml        = self.xhtml_3000_2_0_4;
-    zlib         = self.zlib_0_5_3_1;
-    HTTP         = self.HTTP_4000_1_2;
-    deepseq      = self.deepseq_1_1_0_2;
-    text         = self.text_0_11_1_5;
-    transformers = self.transformers_0_2_2_0;
-    mtl          = self.mtl_2_0_1_0;
-    cabalInstall = self.cabalInstall_0_10_2;
-    alex         = self.alex_2_3_5;
-    happy        = self.happy_1_18_6;
-    haddock      = self.haddock_2_9_2;
-  };
-
-  haskellPlatform_2011_4_0_0 =
-    callPackage ../development/libraries/haskell/haskell-platform/2011.4.0.0.nix
-      (self.haskellPlatformArgs_2011_4_0_0 self);
-
-  haskellPlatformArgs_2011_2_0_1 = self : {
-    cgi          = self.cgi_3001_1_7_4;
-    fgl          = self.fgl_5_4_2_3;
-    GLUT         = self.GLUT_2_1_2_1;
-    haskellSrc   = self.haskellSrc_1_0_1_4;
-    html         = self.html_1_0_1_2;
-    HUnit        = self.HUnit_1_2_2_3;
-    network      = self.network_2_3_0_2;
-    OpenGL       = self.OpenGL_2_2_3_0;
-    parallel     = self.parallel_3_1_0_1;
-    parsec       = self.parsec_3_1_1;
-    QuickCheck   = self.QuickCheck_2_4_0_1;
-    regexBase    = self.regexBase_0_93_2;
-    regexCompat  = self.regexCompat_0_93_1;
-    regexPosix   = self.regexPosix_0_94_4;
-    stm          = self.stm_2_2_0_1;
-    syb          = self.syb_0_3;
-    xhtml        = self.xhtml_3000_2_0_1;
-    zlib         = self.zlib_0_5_3_1;
-    HTTP         = self.HTTP_4000_1_1;
-    deepseq      = self.deepseq_1_1_0_2;
-    text         = self.text_0_11_0_6;
-    transformers = self.transformers_0_2_2_0;
-    mtl          = self.mtl_2_0_1_0;
-    cabalInstall = self.cabalInstall_0_10_2;
-    alex         = self.alex_2_3_5;
-    happy        = self.happy_1_18_6;
-    haddock      = self.haddock_2_9_2;
-  };
-
-  haskellPlatform_2011_2_0_1 =
-    callPackage ../development/libraries/haskell/haskell-platform/2011.2.0.1.nix
-      (self.haskellPlatformArgs_2011_2_0_1 self);
-
-  haskellPlatformArgs_2011_2_0_0 = self : {
-    cgi          = self.cgi_3001_1_7_4;
-    fgl          = self.fgl_5_4_2_3;
-    GLUT         = self.GLUT_2_1_2_1;
-    haskellSrc   = self.haskellSrc_1_0_1_4;
-    html         = self.html_1_0_1_2;
-    HUnit        = self.HUnit_1_2_2_3;
-    network      = self.network_2_3_0_2;
-    OpenGL       = self.OpenGL_2_2_3_0;
-    parallel     = self.parallel_3_1_0_1;
-    parsec       = self.parsec_3_1_1;
-    QuickCheck   = self.QuickCheck_2_4_0_1;
-    regexBase    = self.regexBase_0_93_2;
-    regexCompat  = self.regexCompat_0_93_1;
-    regexPosix   = self.regexPosix_0_94_4;
-    stm          = self.stm_2_2_0_1;
-    syb          = self.syb_0_3;
-    xhtml        = self.xhtml_3000_2_0_1;
-    zlib         = self.zlib_0_5_3_1;
-    HTTP         = self.HTTP_4000_1_1;
-    deepseq      = self.deepseq_1_1_0_2;
-    text         = self.text_0_11_0_5;
-    transformers = self.transformers_0_2_2_0;
-    mtl          = self.mtl_2_0_1_0;
-    cabalInstall = self.cabalInstall_0_10_2;
-    alex         = self.alex_2_3_5;
-    happy        = self.happy_1_18_6;
-    haddock      = self.haddock_2_9_2;
-  };
-
-  haskellPlatform_2011_2_0_0 =
-    callPackage ../development/libraries/haskell/haskell-platform/2011.2.0.0.nix
-      (self.haskellPlatformArgs_2011_2_0_0 self);
-
-  haskellPlatformArgs_2010_2_0_0 = self : {
-    cgi          = self.cgi_3001_1_7_3;
-    fgl          = self.fgl_5_4_2_3;
-    GLUT         = self.GLUT_2_1_2_1;
-    haskellSrc   = self.haskellSrc_1_0_1_3;
-    html         = self.html_1_0_1_2;
-    HUnit        = self.HUnit_1_2_2_1;
-    mtl          = self.mtl_1_1_0_2;
-    network      = self.network_2_2_1_7;
-    OpenGL       = self.OpenGL_2_2_3_0;
-    parallel     = self.parallel_2_2_0_1;
-    parsec       = self.parsec_2_1_0_1;
-    QuickCheck   = self.QuickCheck_2_1_1_1;
-    regexBase    = self.regexBase_0_93_2;
-    regexCompat  = self.regexCompat_0_93_1;
-    regexPosix   = self.regexPosix_0_94_2;
-    stm          = self.stm_2_1_2_1;
-    xhtml        = self.xhtml_3000_2_0_1;
-    zlib         = self.zlib_0_5_2_0;
-    HTTP         = self.HTTP_4000_0_9;
-    deepseq      = self.deepseq_1_1_0_0;
-    cabalInstall = self.cabalInstall_0_8_2;
-    alex         = self.alex_2_3_3;
-    happy        = self.happy_1_18_5;
-    haddock      = self.haddock_2_7_2;
-  };
-
-  haskellPlatform_2010_2_0_0 =
-    callPackage ../development/libraries/haskell/haskell-platform/2010.2.0.0.nix
-      (self.haskellPlatformArgs_2010_2_0_0 self);
-
-  haskellPlatformArgs_2010_1_0_0 = self : {
-    haskellSrc   = self.haskellSrc_1_0_1_3;
-    html         = self.html_1_0_1_2;
-    fgl          = self.fgl_5_4_2_2;
-    cabalInstall = self.cabalInstall_0_8_0;
-    GLUT         = self.GLUT_2_1_2_1;
-    OpenGL       = self.OpenGL_2_2_3_0;
-    zlib         = self.zlib_0_5_2_0;
-    alex         = self.alex_2_3_2;
-    cgi          = self.cgi_3001_1_7_2;
-    QuickCheck   = self.QuickCheck_2_1_1_1;
-    HTTP         = self.HTTP_4000_0_9;
-    HUnit        = self.HUnit_1_2_2_1;
-    network      = self.network_2_2_1_7;
-    parallel     = self.parallel_2_2_0_1;
-    parsec       = self.parsec_2_1_0_1;
-    regexBase    = self.regexBase_0_93_1;
-    regexCompat  = self.regexCompat_0_92;
-    regexPosix   = self.regexPosix_0_94_1;
-    stm          = self.stm_2_1_1_2;
-    xhtml        = self.xhtml_3000_2_0_1;
-    haddock      = self.haddock_2_7_2;
-    happy        = self.happy_1_18_4;
-  };
-
-  haskellPlatform_2010_1_0_0 =
-    callPackage ../development/libraries/haskell/haskell-platform/2010.1.0.0.nix
-      (self.haskellPlatformArgs_2010_1_0_0 self);
-
-  haskellPlatformArgs_2009_2_0_2 = self : {
-    time         = self.time_1_1_2_4;
-    haddock      = self.haddock_2_4_2;
-    cgi          = self.cgi_3001_1_7_1;
-    editline     = self.editline_0_2_1_0;
-    fgl          = self.fgl_5_4_2_2;
-    GLUT         = self.GLUT_2_1_1_2;
-    haskellSrc   = self.haskellSrc_1_0_1_3;
-    html         = self.html_1_0_1_2;
-    HUnit        = self.HUnit_1_2_0_3;
-    network      = self.network_2_2_1_4;
-    OpenGL       = self.OpenGL_2_2_1_1;
-    parallel     = self.parallel_1_1_0_1;
-    parsec       = self.parsec_2_1_0_1;
-    QuickCheck   = self.QuickCheck_1_2_0_0;
-    regexBase    = self.regexBase_0_72_0_2;
-    regexCompat  = self.regexCompat_0_71_0_1;
-    regexPosix   = self.regexPosix_0_72_0_3;
-    stm          = self.stm_2_1_1_2;
-    xhtml        = self.xhtml_3000_2_0_1;
-    zlib         = self.zlib_0_5_0_0;
-    HTTP         = self.HTTP_4000_0_6;
-    cabalInstall = self.cabalInstall_0_6_2;
-    alex         = self.alex_2_3_1;
-    happy        = self.happy_1_18_4;
-  };
-
-  haskellPlatform_2009_2_0_2 =
-    callPackage ../development/libraries/haskell/haskell-platform/2009.2.0.2.nix
-      (self.haskellPlatformArgs_2009_2_0_2 self);
-
   # Haskell libraries.
 
   acidState = callPackage ../development/libraries/haskell/acid-state {};
@@ -513,7 +139,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   aes = callPackage ../development/libraries/haskell/aes {};
 
   aeson = callPackage ../development/libraries/haskell/aeson {
-    blazeBuilder = if (pkgs.stdenv.lib.versionOlder ghc.version "7.6") then self.blazeBuilder else null;
+    blazeBuilder = null;
   };
 
   aesonPretty = callPackage ../development/libraries/haskell/aeson-pretty {};
@@ -536,18 +162,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   ansiWlPprint = callPackage ../development/libraries/haskell/ansi-wl-pprint {};
 
-  ariadne = callPackage ../development/libraries/haskell/ariadne {
-    Cabal = self.Cabal_1_18_1_3;
-    haskellPackages = self.haskellPackages.override {
-      Cabal = self.Cabal_1_18_1_3;
-    };
-    haskellNames = self.haskellNames.override {
-      Cabal = self.Cabal_1_18_1_3;
-      haskellPackages = self.haskellPackages.override {
-        Cabal = self.Cabal_1_18_1_3;
-      };
-    };
-  };
+  ariadne = callPackage ../development/libraries/haskell/ariadne {};
 
   arithmoi = callPackage ../development/libraries/haskell/arithmoi {};
 
@@ -614,13 +229,10 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   bimap = callPackage ../development/libraries/haskell/bimap {};
 
-  binary_0_6_0_0 = callPackage ../development/libraries/haskell/binary/0.6.0.0.nix {};
-  binary_0_7_1_0 = callPackage ../development/libraries/haskell/binary/0.7.1.0.nix {};
-  binary = null;                # core package starting with GHC 7.4.x
+  binary_0_7_0_1 = callPackage ../development/libraries/haskell/binary/0.7.1.0.nix {};
+  binary = null;                # core package since ghc >= 7.2.x
 
-  binaryConduit = callPackage ../development/libraries/haskell/binary-conduit {
-    binary = self.binary_0_7_1_0;
-  };
+  binaryConduit = callPackage ../development/libraries/haskell/binary-conduit {};
 
   binaryShared = callPackage ../development/libraries/haskell/binary-shared {};
 
@@ -657,17 +269,14 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   bloomfilter = callPackage ../development/libraries/haskell/bloomfilter {};
 
   bmp = callPackage ../development/libraries/haskell/bmp {
-    binary = self.binary_0_7_1_0;
+    binary = self.binary_0_7_0_1;
   };
 
   Boolean = callPackage ../development/libraries/haskell/Boolean {};
 
   brainfuck = callPackage ../development/libraries/haskell/brainfuck {};
 
-  bson = callPackage ../development/libraries/haskell/bson {
-    binary = self.binary_0_7_1_0;
-    dataBinaryIeee754 = self.dataBinaryIeee754.override { binary = self.binary_0_7_1_0; };
-  };
+  bson = callPackage ../development/libraries/haskell/bson {};
 
   boomerang = callPackage ../development/libraries/haskell/boomerang {};
 
@@ -697,11 +306,11 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   c2hsc = callPackage ../development/libraries/haskell/c2hsc {};
 
-  Cabal_1_14_0 = callPackage ../development/libraries/haskell/Cabal/1.14.0.nix { cabal = self.cabal.override { Cabal = null; }; };
-  Cabal_1_16_0_3 = callPackage ../development/libraries/haskell/Cabal/1.16.0.3.nix { cabal = self.cabal.override { Cabal = null; }; };
-  Cabal_1_18_1_3 = callPackage ../development/libraries/haskell/Cabal/1.18.1.3.nix { cabal = self.cabal.override { Cabal = null; }; };
-  Cabal_1_20_0_0 = callPackage ../development/libraries/haskell/Cabal/1.20.0.0.nix { cabal = self.cabal.override { Cabal = null; }; };
-  Cabal = null; # core package in GHC
+  Cabal_1_14_0 = callPackage ../development/libraries/haskell/Cabal/1.14.0.nix {};
+  Cabal_1_16_0_3 = callPackage ../development/libraries/haskell/Cabal/1.16.0.3.nix {};
+  Cabal_1_18_1_3 = callPackage ../development/libraries/haskell/Cabal/1.18.1.3.nix {};
+  Cabal_1_20_0_0 = callPackage ../development/libraries/haskell/Cabal/1.20.0.0.nix {};
+  Cabal = null;                 # core package since forever
 
   cabalFileTh = callPackage ../development/libraries/haskell/cabal-file-th {};
 
@@ -942,7 +551,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   deepseq_1_1_0_2 = callPackage ../development/libraries/haskell/deepseq/1.1.0.2.nix {};
   deepseq_1_2_0_1 = callPackage ../development/libraries/haskell/deepseq/1.2.0.1.nix {};
   deepseq_1_3_0_2 = callPackage ../development/libraries/haskell/deepseq/1.3.0.2.nix {};
-  deepseq = null; # a core package in recent GHCs
+  deepseq = null;               # core package since ghc >= 7.4.x
 
   deepseqTh = callPackage ../development/libraries/haskell/deepseq-th {};
 
@@ -1041,13 +650,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   elerea = callPackage ../development/libraries/haskell/elerea {};
 
-  Elm = callPackage ../development/compilers/elm/elm.nix {
-    binary = self.binary_0_7_1_0;
-    pandoc = self.pandoc.override {
-      binary = self.binary_0_7_1_0;
-      zipArchive = self.zipArchive.override { binary = self.binary_0_7_1_0; };
-    };
-  };
+  Elm = callPackage ../development/compilers/elm/elm.nix {};
 
   elmServer = callPackage ../development/compilers/elm/elm-server.nix {};
 
@@ -1087,9 +690,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   exceptionTransformers = callPackage ../development/libraries/haskell/exception-transformers {};
 
-  exceptions = callPackage ../development/libraries/haskell/exceptions {
-    QuickCheck = self.QuickCheck_2_5_1_1;
-  };
+  exceptions = callPackage ../development/libraries/haskell/exceptions {};
 
   explicitException = callPackage ../development/libraries/haskell/explicit-exception {};
 
@@ -1103,8 +704,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   fdoNotify = callPackage ../development/libraries/haskell/fdo-notify {};
 
-  filepath_1_3_0_0 = callPackage ../development/libraries/haskell/filepath {};
-  filepath = null; # a core package in recent GHCs
+  filepath_1_3_0_2 = callPackage ../development/libraries/haskell/filepath/1.3.0.2.nix {};
+  filepath = null;              # core package since forever
 
   fileLocation = callPackage ../development/libraries/haskell/file-location {};
 
@@ -1116,7 +717,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   extensibleExceptions_0_1_1_2 = callPackage ../development/libraries/haskell/extensible-exceptions/0.1.1.2.nix {};
   extensibleExceptions_0_1_1_3 = callPackage ../development/libraries/haskell/extensible-exceptions/0.1.1.3.nix {};
   extensibleExceptions_0_1_1_4 = callPackage ../development/libraries/haskell/extensible-exceptions/0.1.1.4.nix {};
-  extensibleExceptions = null; # a core package in recent GHCs
+  extensibleExceptions = self.extensibleExceptions_0_1_1_4;
 
   failure = callPackage ../development/libraries/haskell/failure {};
 
@@ -1243,21 +844,23 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   glpkHs = callPackage ../development/libraries/haskell/glpk-hs {};
 
-  GLURaw_1_3_0_0 = callPackage ../development/libraries/haskell/GLURaw/1.3.0.0.nix {};
-  GLURaw_1_4_0_0 = callPackage ../development/libraries/haskell/GLURaw/1.4.0.0.nix {};
+  GLURaw_1_3_0_0 = callPackage ../development/libraries/haskell/GLURaw/1.3.0.0.nix { OpenGLRaw = self.OpenGLRaw_1_3_0_0; };
+  GLURaw_1_4_0_0 = callPackage ../development/libraries/haskell/GLURaw/1.4.0.0.nix { OpenGLRaw = self.OpenGLRaw_1_4_0_0; };
   GLURaw = self.GLURaw_1_4_0_0;
 
   GLUT_2_1_1_2 = callPackage ../development/libraries/haskell/GLUT/2.1.1.2.nix {};
   GLUT_2_1_2_1 = callPackage ../development/libraries/haskell/GLUT/2.1.2.1.nix {};
   GLUT_2_1_2_2 = callPackage ../development/libraries/haskell/GLUT/2.1.2.2.nix {};
   GLUT_2_2_2_1 = callPackage ../development/libraries/haskell/GLUT/2.2.2.1.nix {
-    OpenGL = self.OpenGL_2_4_0_2;
+    OpenGL = self.OpenGL_2_6_0_1;
   };
   GLUT_2_3_1_0 = callPackage ../development/libraries/haskell/GLUT/2.3.1.0.nix {
     OpenGL = self.OpenGL_2_6_0_1;
   };
   GLUT_2_4_0_0 = callPackage ../development/libraries/haskell/GLUT/2.4.0.0.nix {
-    OpenGL = self.OpenGL_2_8_0_0;
+    OpenGLRaw = self.OpenGLRaw_1_3_0_0;
+    OpenGL = self.OpenGL_2_8_0_0.override { OpenGLRaw = self.OpenGLRaw_1_3_0_0; GLURaw = self.GLURaw_1_3_0_0; };
+
   };
   GLUT_2_5_1_0 = callPackage ../development/libraries/haskell/GLUT/2.5.1.0.nix {
     OpenGL = self.OpenGL_2_9_1_0;
@@ -1321,9 +924,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   haskelldb = callPackage ../development/libraries/haskell/haskelldb {};
 
-  haskeline_0_7_1_1 = callPackage ../development/libraries/haskell/haskeline/0.7.1.1.nix {};
-  haskeline_0_7_1_2 = callPackage ../development/libraries/haskell/haskeline/0.7.1.2.nix {};
-  haskeline = self.haskeline_0_7_1_2;
+  haskeline = callPackage ../development/libraries/haskell/haskeline {};
 
   haskelineClass = callPackage ../development/libraries/haskell/haskeline-class {};
 
@@ -1481,7 +1082,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   hsdns = callPackage ../development/libraries/haskell/hsdns {};
 
-  hsemail = callPackage ../development/libraries/haskell/hsemail {};
+  hsemail = if (pkgs.stdenv.lib.versionOlder ghc.version "7") then null else
+    callPackage ../development/libraries/haskell/hsemail {};
 
   hslua = callPackage ../development/libraries/haskell/hslua {
     lua = pkgs.lua5_1;
@@ -1491,7 +1093,9 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   hsini = callPackage ../development/libraries/haskell/hsini {};
 
-  HsSyck = callPackage ../development/libraries/haskell/HsSyck {};
+  HsSyck_0_51 = callPackage ../development/libraries/haskell/HsSyck/0.51.nix {};
+  HsSyck_0_52 = callPackage ../development/libraries/haskell/HsSyck/0.52.nix {};
+  HsSyck = self.HsSyck_0_52;
 
   HsOpenSSL = callPackage ../development/libraries/haskell/HsOpenSSL {};
 
@@ -1640,9 +1244,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   languageJava = callPackage ../development/libraries/haskell/language-java {};
 
-  languageJavascript = callPackage ../development/libraries/haskell/language-javascript {
-    alex = self.alex_3_1_3;
-  };
+  languageJavascript = callPackage ../development/libraries/haskell/language-javascript {};
 
   languageHaskellExtract = callPackage ../development/libraries/haskell/language-haskell-extract {};
 
@@ -1757,7 +1359,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   minimorph = callPackage ../development/libraries/haskell/minimorph {};
 
   miniutter = callPackage ../development/libraries/haskell/miniutter {
-    binary = self.binary_0_7_1_0;
+    binary = self.binary_0_7_0_1;
   };
 
   mimeMail = callPackage ../development/libraries/haskell/mime-mail {};
@@ -1768,9 +1370,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   missingForeign = callPackage ../development/libraries/haskell/missing-foreign {};
 
-  MissingH = callPackage ../development/libraries/haskell/MissingH {
-    testpack = null;
-  };
+  MissingH = callPackage ../development/libraries/haskell/MissingH { testpack = null; };
 
   mmap = callPackage ../development/libraries/haskell/mmap {};
 
@@ -1831,15 +1431,9 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   mtl_1_1_0_2 = callPackage ../development/libraries/haskell/mtl/1.1.0.2.nix {};
   mtl_1_1_1_1 = callPackage ../development/libraries/haskell/mtl/1.1.1.1.nix {};
   mtl_2_0_1_0 = callPackage ../development/libraries/haskell/mtl/2.0.1.0.nix {};
-  mtl_2_1_1 = callPackage ../development/libraries/haskell/mtl/2.1.1.nix {
-    transformers = self.transformers_0_3_0_0;
-  };
-  mtl_2_1_2 = callPackage ../development/libraries/haskell/mtl/2.1.2.nix {
-    transformers = self.transformers_0_3_0_0;
-  };
-  mtl_2_1_3_1 = callPackage ../development/libraries/haskell/mtl/2.1.3.1.nix {
-    transformers = self.transformers_0_3_0_0;
-  };
+  mtl_2_1_1 = callPackage ../development/libraries/haskell/mtl/2.1.1.nix {};
+  mtl_2_1_2 = callPackage ../development/libraries/haskell/mtl/2.1.2.nix {};
+  mtl_2_1_3_1 = callPackage ../development/libraries/haskell/mtl/2.1.3.1.nix {};
   mtl = self.mtl_2_1_3_1;
 
   mtlparse = callPackage ../development/libraries/haskell/mtlparse {};
@@ -1856,7 +1450,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   multiset_0_2_1 = callPackage ../development/libraries/haskell/multiset/0.2.1.nix {};
   multiset_0_2_2 = callPackage ../development/libraries/haskell/multiset/0.2.2.nix {};
-  multiset = self.multiset_0_2_1;   # later versions work only with ghc 7.6 and beyond
+  multiset = self.multiset_0_2_2;
 
   murmurHash = callPackage ../development/libraries/haskell/murmur-hash {};
 
@@ -1948,10 +1542,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   OpenGL_2_4_0_2 = callPackage ../development/libraries/haskell/OpenGL/2.4.0.2.nix {};
   OpenGL_2_6_0_1 = callPackage ../development/libraries/haskell/OpenGL/2.6.0.1.nix {};
   OpenGL_2_8_0_0 = callPackage ../development/libraries/haskell/OpenGL/2.8.0.0.nix {};
-  OpenGL_2_9_1_0 = callPackage ../development/libraries/haskell/OpenGL/2.9.1.0.nix {
-    OpenGLRaw = self.OpenGLRaw_1_4_0_0;
-    GLURaw = self.GLURaw_1_4_0_0.override { OpenGLRaw = self.OpenGLRaw_1_4_0_0; };
-  };
+  OpenGL_2_9_1_0 = callPackage ../development/libraries/haskell/OpenGL/2.9.1.0.nix {};
   OpenGL = self.OpenGL_2_9_1_0;
 
   OpenGLRaw_1_3_0_0 = callPackage ../development/libraries/haskell/OpenGLRaw/1.3.0.0.nix {};
@@ -2004,7 +1595,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   parsers_0_10_3 = callPackage ../development/libraries/haskell/parsers/0.10.3.nix {};
   parsers_0_11 = callPackage ../development/libraries/haskell/parsers/0.11.nix {};
-  parsers = self.parsers_0_10_3;
+  parsers = self.parsers_0_11;
 
   parsimony = callPackage ../development/libraries/haskell/parsimony {};
 
@@ -2042,9 +1633,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   pipesAttoparsec = callPackage ../development/libraries/haskell/pipes-attoparsec {};
 
-  pipesBinary = callPackage ../development/libraries/haskell/pipes-binary {
-    binary = self.binary_0_7_1_0;
-  };
+  pipesBinary = callPackage ../development/libraries/haskell/pipes-binary {};
 
   pipesBytestring = callPackage ../development/libraries/haskell/pipes-bytestring {};
 
@@ -2089,16 +1678,15 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   pqueue = callPackage ../development/libraries/haskell/pqueue {};
 
-  process = callPackage ../development/libraries/haskell/process {};
+  process_1_2_0_0 = callPackage ../development/libraries/haskell/process/1.2.0.0.nix {};
+  process = null;      # core package since forever
 
   profiteur = callPackage ../development/tools/haskell/profiteur {};
 
   preludeExtras = callPackage ../development/libraries/haskell/prelude-extras {};
 
   preprocessorTools_0_1_3 = callPackage ../development/libraries/haskell/preprocessor-tools/0.1.3.nix {};
-
   preprocessorTools_1_0_1 = callPackage ../development/libraries/haskell/preprocessor-tools/1.0.1.nix {};
-
   preprocessorTools = self.preprocessorTools_1_0_1;
 
   presburger = callPackage ../development/libraries/haskell/presburger {};
@@ -2106,16 +1694,14 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   prettyclass = callPackage ../development/libraries/haskell/prettyclass {};
 
   prettyShow_1_2 = callPackage ../development/libraries/haskell/pretty-show/1.2.nix {};
-  prettyShow_1_6_7 = callPackage ../development/libraries/haskell/pretty-show/1.6.7.nix {
-    happy = self.happy_1_19_2;
-  };
+  prettyShow_1_6_7 = callPackage ../development/libraries/haskell/pretty-show/1.6.7.nix {};
   prettyShow = self.prettyShow_1_6_7;
 
   punycode = callPackage ../development/libraries/haskell/punycode {};
 
   primitive_0_5_0_1 = callPackage ../development/libraries/haskell/primitive/0.5.0.1.nix {};
   primitive_0_5_2_1 = callPackage ../development/libraries/haskell/primitive/0.5.2.1.nix {};
-  primitive = self.primitive_0_5_0_1;
+  primitive = self.primitive_0_5_2_1;
 
   profunctors = callPackage ../development/libraries/haskell/profunctors {};
 
@@ -2130,12 +1716,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   processLeksah = callPackage ../development/libraries/haskell/leksah/process-leksah.nix {};
 
   prolog = callPackage ../development/libraries/haskell/prolog {};
-  prologGraphLib = callPackage ../development/libraries/haskell/prolog-graph-lib {
-    fgl = self.fgl_5_4_2_4;
-  };
-  prologGraph = callPackage ../development/libraries/haskell/prolog-graph {
-    fgl = self.fgl_5_4_2_4;
-  };
+  prologGraphLib = callPackage ../development/libraries/haskell/prolog-graph-lib {};
+  prologGraph = callPackage ../development/libraries/haskell/prolog-graph {};
 
   protocolBuffers = callPackage ../development/libraries/haskell/protocol-buffers {};
 
@@ -2158,15 +1740,11 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   QuickCheck_2_5_1_1 = callPackage ../development/libraries/haskell/QuickCheck/2.5.1.1.nix {};
   QuickCheck_2_6 = callPackage ../development/libraries/haskell/QuickCheck/2.6.nix {};
   QuickCheck_2_7_3 = callPackage ../development/libraries/haskell/QuickCheck/2.7.3.nix {};
-  QuickCheck1 = self.QuickCheck_1_2_0_1;
-  QuickCheck2 = self.QuickCheck_2_6;
-  QuickCheck  = self.QuickCheck2;
+  QuickCheck = self.QuickCheck_2_7_3;
 
   quickcheckAssertions = callPackage ../development/libraries/haskell/quickcheck-assertions {};
 
-  quickcheckInstances = callPackage ../development/libraries/haskell/quickcheck-instances {
-    QuickCheck = self.QuickCheck_2_7_3;
-  };
+  quickcheckInstances = callPackage ../development/libraries/haskell/quickcheck-instances {};
 
   quickcheckIo = callPackage ../development/libraries/haskell/quickcheck-io {};
 
@@ -2179,7 +1757,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   RangedSets = callPackage ../development/libraries/haskell/Ranged-sets {};
 
   random_1_0_1_1 = callPackage ../development/libraries/haskell/random/1.0.1.1.nix {};
-  random = null; # core package until ghc-7.2.1
+  random = self.random_1_0_1_1;
 
   randomFu = callPackage ../development/libraries/haskell/random-fu {};
 
@@ -2220,8 +1798,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   regexCompat_0_92     = callPackage ../development/libraries/haskell/regex-compat/0.92.nix {};
   regexCompat_0_93_1   = callPackage ../development/libraries/haskell/regex-compat/0.93.1.nix {};
   regexCompat_0_95_1   = callPackage ../development/libraries/haskell/regex-compat/0.95.1.nix {};
-  regexCompat93 = self.regexCompat_0_93_1;
-  regexCompat = self.regexCompat_0_71_0_1;
+  regexCompat = self.regexCompat_0_95_1;
 
   regexCompatTdfa = callPackage ../development/libraries/haskell/regex-compat-tdfa {};
 
@@ -2237,8 +1814,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   regexTdfaText = callPackage ../development/libraries/haskell/regex-tdfa-text {};
 
-  regexPCRE = callPackage ../development/libraries/haskell/regex-pcre {};
-  regexPcre = self.regexPCRE;
+  regexPcre = callPackage ../development/libraries/haskell/regex-pcre {};
 
   regexpr = callPackage ../development/libraries/haskell/regexpr {};
 
@@ -2359,10 +1935,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   StateVar = callPackage ../development/libraries/haskell/StateVar {};
 
-  statistics = callPackage ../development/libraries/haskell/statistics {
-    binary = self.binary_0_7_1_0;
-    vectorBinaryInstances = self.vectorBinaryInstances.override { binary = self.binary_0_7_1_0; };
-  };
+  statistics = callPackage ../development/libraries/haskell/statistics {};
 
   statvfs = callPackage ../development/libraries/haskell/statvfs {};
 
@@ -2398,8 +1971,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   syb_0_3_7 = callPackage ../development/libraries/haskell/syb/0.3.7.nix {};
   syb_0_4_0 = callPackage ../development/libraries/haskell/syb/0.4.0.nix {};
   syb_0_4_1 = callPackage ../development/libraries/haskell/syb/0.4.1.nix {};
-  syb = null;  # by default, we assume that syb ships with GHC, which is
-               # true for the older GHC versions
+  syb = self.syb_0_4_1;
 
   sybWithClass = callPackage ../development/libraries/haskell/syb/syb-with-class.nix {};
 
@@ -2518,9 +2090,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   tastyHunit = callPackage ../development/libraries/haskell/tasty-hunit {};
 
-  tastyQuickcheck = callPackage ../development/libraries/haskell/tasty-quickcheck {
-    QuickCheck = self.QuickCheck_2_7_3;
-  };
+  tastyQuickcheck = callPackage ../development/libraries/haskell/tasty-quickcheck {};
 
   tastyRerun = callPackage ../development/libraries/haskell/tasty-rerun {};
 
@@ -2547,7 +2117,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   testFrameworkHunit = callPackage ../development/libraries/haskell/test-framework-hunit {};
 
   testFrameworkQuickcheck = callPackage ../development/libraries/haskell/test-framework-quickcheck {
-    QuickCheck = self.QuickCheck1;
+    QuickCheck = self.QuickCheck_1_2_0_1; # doesn't support version 2.x
   };
 
   testFrameworkQuickcheck2 = callPackage ../development/libraries/haskell/test-framework-quickcheck2 {};
@@ -2576,7 +2146,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   textStreamDecode = callPackage ../development/libraries/haskell/text-stream-decode {};
 
-  tfRandom = callPackage ../development/libraries/haskell/tf-random {};
+  tfRandom = if (pkgs.stdenv.lib.versionOlder ghc.version "7") then null else
+    callPackage ../development/libraries/haskell/tf-random {};
 
   these = callPackage ../development/libraries/haskell/these {};
 
@@ -2604,9 +2175,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   time_1_1_2_4 = callPackage ../development/libraries/haskell/time/1.1.2.4.nix {};
   time_1_4_2 = callPackage ../development/libraries/haskell/time/1.4.2.nix {};
-  # time is in the core package set. It should only be necessary to
-  # pass it explicitly in rare circumstances.
-  time = null;
+  time = null;                  # core package since ghc >= 6.12.x
 
   timeparsers = callPackage ../development/libraries/haskell/timeparsers {
     convertible = self.convertible_1_0_11_1;
@@ -2629,9 +2198,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   };
 
   transformers_0_2_2_0 = callPackage ../development/libraries/haskell/transformers/0.2.2.0.nix {};
-  transformers_0_3_0_0 = if (pkgs.stdenv.lib.versionOlder ghc.version "7.7") then
-     (callPackage ../development/libraries/haskell/transformers/0.3.0.0.nix {}) else null;
-  transformers = self.transformers_0_3_0_0;
+  transformers_0_3_0_0 = callPackage ../development/libraries/haskell/transformers/0.3.0.0.nix {};
+  transformers = null;          # core package since ghc >= 7.8.2
 
   transformersBase = callPackage ../development/libraries/haskell/transformers-base {};
 
@@ -2928,24 +2496,12 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   zipper = callPackage ../development/libraries/haskell/zipper {};
 
-  zlib_0_5_0_0 = callPackage ../development/libraries/haskell/zlib/0.5.0.0.nix {
-    inherit (pkgs) zlib;
-  };
-  zlib_0_5_2_0 = callPackage ../development/libraries/haskell/zlib/0.5.2.0.nix {
-    inherit (pkgs) zlib;
-  };
-  zlib_0_5_3_1 = callPackage ../development/libraries/haskell/zlib/0.5.3.1.nix {
-    inherit (pkgs) zlib;
-  };
-  zlib_0_5_3_3 = callPackage ../development/libraries/haskell/zlib/0.5.3.3.nix {
-    inherit (pkgs) zlib;
-  };
-  zlib_0_5_4_0 = callPackage ../development/libraries/haskell/zlib/0.5.4.0.nix {
-    inherit (pkgs) zlib;
-  };
-  zlib_0_5_4_1 = callPackage ../development/libraries/haskell/zlib/0.5.4.1.nix {
-    inherit (pkgs) zlib;
-  };
+  zlib_0_5_0_0 = callPackage ../development/libraries/haskell/zlib/0.5.0.0.nix { inherit (pkgs) zlib; };
+  zlib_0_5_2_0 = callPackage ../development/libraries/haskell/zlib/0.5.2.0.nix { inherit (pkgs) zlib; };
+  zlib_0_5_3_1 = callPackage ../development/libraries/haskell/zlib/0.5.3.1.nix { inherit (pkgs) zlib; };
+  zlib_0_5_3_3 = callPackage ../development/libraries/haskell/zlib/0.5.3.3.nix { inherit (pkgs) zlib; };
+  zlib_0_5_4_0 = callPackage ../development/libraries/haskell/zlib/0.5.4.0.nix { inherit (pkgs) zlib; };
+  zlib_0_5_4_1 = callPackage ../development/libraries/haskell/zlib/0.5.4.1.nix { inherit (pkgs) zlib;};
   zlib = self.zlib_0_5_4_1;
 
   zlibBindings = callPackage ../development/libraries/haskell/zlib-bindings {};
@@ -2991,8 +2547,8 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   Ebnf2ps = callPackage ../development/tools/parsing/Ebnf2ps {};
 
-  haddock_2_4_2 = callPackage ../development/tools/documentation/haddock/2.4.2.nix {};
-  haddock_2_7_2 = callPackage ../development/tools/documentation/haddock/2.7.2.nix {};
+  haddock_2_4_2 = callPackage ../development/tools/documentation/haddock/2.4.2.nix { Cabal = null; };
+  haddock_2_7_2 = callPackage ../development/tools/documentation/haddock/2.7.2.nix { alex = self.alex_2_3_5; };
   haddock_2_9_2 = callPackage ../development/tools/documentation/haddock/2.9.2.nix {};
   haddock_2_9_4 = callPackage ../development/tools/documentation/haddock/2.9.4.nix {};
   haddock_2_10_0 = callPackage ../development/tools/documentation/haddock/2.10.0.nix {};
@@ -3042,10 +2598,9 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   arbtt = callPackage ../applications/misc/arbtt {};
 
   cryptol = callPackage ../development/compilers/cryptol/2.0.x.nix {
-    QuickCheck   = self.QuickCheck_2_7_3;
-    text         = self.text_1_1_1_1;
+    Cabal = self.Cabal_1_18_1_3;
     cabalInstall = self.cabalInstall_1_18_0_3;
-    Cabal        = self.Cabal_1_18_1_3;
+    process = self.process_1_2_0_0;
   };
 
   darcs = callPackage ../applications/version-management/darcs {};
@@ -3057,9 +2612,7 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
 
   idris = callPackage ../development/compilers/idris/wrapper.nix {};
 
-  leksah = callPackage ../applications/editors/leksah {
-    QuickCheck = self.QuickCheck2;
-  };
+  leksah = callPackage ../applications/editors/leksah {};
 
   nc-indicators = callPackage ../applications/misc/nc-indicators {};
 
@@ -3114,7 +2667,9 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
               else self.Cabal_1_18_1_3;
   };
 
-  cabalDev = callPackage ../development/tools/haskell/cabal-dev {};
+  cabalDev = callPackage ../development/tools/haskell/cabal-dev {
+    HTTP = self.HTTP.override { network = self.network_2_4_1_2; };
+  };
 
   cabalMeta = callPackage ../development/tools/haskell/cabal-meta {};
 
@@ -3127,18 +2682,12 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   cabalInstall_0_8_2  = callPackage ../tools/package-management/cabal-install/0.8.2.nix {};
   cabalInstall_0_10_2 = callPackage ../tools/package-management/cabal-install/0.10.2.nix {};
   cabalInstall_0_14_0 = callPackage ../tools/package-management/cabal-install/0.14.0.nix {};
-  cabalInstall_1_16_0_2 = callPackage ../tools/package-management/cabal-install/1.16.0.2.nix {};
-  cabalInstall_1_18_0_3 = callPackage ../tools/package-management/cabal-install/1.18.0.3.nix {
-    Cabal = self.Cabal_1_18_1_3;
-  };
-  cabalInstall_1_20_0_1 = callPackage ../tools/package-management/cabal-install/1.20.0.1.nix {
-    Cabal = self.Cabal_1_20_0_0;
-  };
+  cabalInstall_1_16_0_2 = callPackage ../tools/package-management/cabal-install/1.16.0.2.nix { Cabal = self.Cabal_1_16_0_3; };
+  cabalInstall_1_18_0_3 = callPackage ../tools/package-management/cabal-install/1.18.0.3.nix { Cabal = self.Cabal_1_18_1_3; };
+  cabalInstall_1_20_0_1 = callPackage ../tools/package-management/cabal-install/1.20.0.1.nix { Cabal = self.Cabal_1_20_0_0; };
   cabalInstall = self.cabalInstall_1_20_0_1;
 
-  gitAnnex = callPackage ../applications/version-management/git-and-tools/git-annex {
-    hS3 = self.hS3.override { Crypto = self.Crypto.override { QuickCheck = self.QuickCheck_2_7_3; }; };
-  };
+  gitAnnex = callPackage ../applications/version-management/git-and-tools/git-annex {};
 
   githubBackup = callPackage ../applications/version-management/git-and-tools/github-backup {};
 
@@ -3163,8 +2712,9 @@ self : let callPackage = x : y : modifyPrio (newScope self x y); in
   # Games.
 
   LambdaHack = callPackage ../games/LambdaHack {
-    binary = self.binary_0_7_1_0;
-    vectorBinaryInstances = self.vectorBinaryInstances.override { binary = self.binary_0_7_1_0; };
+    vectorBinaryInstances = self.vectorBinaryInstances.override {
+      binary = self.binary_0_7_0_1; # the miniutter build input requires this version
+    };
   };
 
   MazesOfMonad = callPackage ../games/MazesOfMonad {};