From 8d86c8274f8cf31d096763839346388c20ce29a2 Mon Sep 17 00:00:00 2001 From: Peter Simons Date: Mon, 13 Jun 2016 18:32:44 +0200 Subject: [PATCH] callHackage: generate expressions for the appropriate target system and compiler --- pkgs/development/haskell-modules/default.nix | 23 ++++++++++++++++++-- pkgs/development/haskell-modules/lib.nix | 21 ------------------ 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/pkgs/development/haskell-modules/default.nix b/pkgs/development/haskell-modules/default.nix index 7a51a1de147..b03293ecfc5 100644 --- a/pkgs/development/haskell-modules/default.nix +++ b/pkgs/development/haskell-modules/default.nix @@ -6,9 +6,14 @@ let - inherit (stdenv.lib) fix' extends; + allCabalFiles = pkgs.fetchFromGitHub { + owner = "commercialhaskell"; + repo = "all-cabal-hashes"; + rev = "461610ab6f0cf581e186643c037f1981755792d9"; + sha256 = "0x2577lfd5cbbaivl72273kw93gcmxvbjybk7w4h2ic3zvs1fnvm"; + }; - inherit (import ./lib.nix { inherit pkgs; }) hackage2nix; + inherit (stdenv.lib) fix' extends; haskellPackages = self: let @@ -54,6 +59,20 @@ let inherit packages; }; + hackage2nix = name: version: pkgs.stdenv.mkDerivation { + name = "cabal2nix-${name}-${version}"; + buildInputs = [ pkgs.cabal2nix ]; + phases = ["installPhase"]; + LANG = "en_US.UTF-8"; + LOCALE_ARCHIVE = pkgs.lib.optionalString pkgs.stdenv.isLinux "${pkgs.glibcLocales}/lib/locale/locale-archive"; + installPhase = '' + export HOME="$TMP" + mkdir $out + hash=$(sed -e 's/.*"SHA256":"//' -e 's/".*$//' ${allCabalFiles}/${name}/${version}/${name}.json) + cabal2nix --compiler=${self.ghc.name} --system=${stdenv.system} --sha256=$hash ${allCabalFiles}/${name}/${version}/${name}.cabal >$out/default.nix + ''; + }; + in import ./hackage-packages.nix { inherit pkgs stdenv callPackage; } self // { diff --git a/pkgs/development/haskell-modules/lib.nix b/pkgs/development/haskell-modules/lib.nix index b92bf304723..e96200578de 100644 --- a/pkgs/development/haskell-modules/lib.nix +++ b/pkgs/development/haskell-modules/lib.nix @@ -85,25 +85,4 @@ rec { triggerRebuild = drv: i: overrideCabal drv (drv: { postUnpack = ": trigger rebuild ${toString i}"; }); - allCabalFiles = pkgs.fetchFromGitHub { - owner = "commercialhaskell"; - repo = "all-cabal-hashes"; - rev = "461610ab6f0cf581e186643c037f1981755792d9"; - sha256 = "0x2577lfd5cbbaivl72273kw93gcmxvbjybk7w4h2ic3zvs1fnvm"; - }; - - hackage2nix = name: version: pkgs.stdenv.mkDerivation { - name = "cabal2nix-${name}-${version}"; - buildInputs = [ pkgs.cabal2nix ]; - phases = ["installPhase"]; - LANG = "en_US.UTF-8"; - LOCALE_ARCHIVE = pkgs.lib.optionalString pkgs.stdenv.isLinux "${pkgs.glibcLocales}/lib/locale/locale-archive"; - installPhase = '' - export HOME="$TMP" - mkdir $out - hash=$(sed -e 's/.*"SHA256":"//' -e 's/".*$//' ${allCabalFiles}/${name}/${version}/${name}.json) - cabal2nix --sha256=$hash ${allCabalFiles}/${name}/${version}/${name}.cabal >$out/default.nix - ''; - }; - }