diff options
author | 3noch <eacameron@gmail.com> | 2017-01-26 21:22:06 -0500 |
---|---|---|
committer | Peter Simons <simons@cryp.to> | 2017-02-01 15:04:48 +0100 |
commit | 05ee54782ea783d876b7661838b1ed78fa1257e7 (patch) | |
tree | d60999d0885a4aac859316608c27a6fba281ff05 /pkgs/development/haskell-modules/default.nix | |
parent | dd934beb9fce6345097008c0316e18880b052129 (diff) | |
download | nixpkgs-05ee54782ea783d876b7661838b1ed78fa1257e7.tar nixpkgs-05ee54782ea783d876b7661838b1ed78fa1257e7.tar.gz nixpkgs-05ee54782ea783d876b7661838b1ed78fa1257e7.tar.bz2 nixpkgs-05ee54782ea783d876b7661838b1ed78fa1257e7.tar.lz nixpkgs-05ee54782ea783d876b7661838b1ed78fa1257e7.tar.xz nixpkgs-05ee54782ea783d876b7661838b1ed78fa1257e7.tar.zst nixpkgs-05ee54782ea783d876b7661838b1ed78fa1257e7.zip |
Add callCabal2nix to haskell packages
Closes https://github.com/NixOS/nixpkgs/pull/22191.
Diffstat (limited to 'pkgs/development/haskell-modules/default.nix')
-rw-r--r-- | pkgs/development/haskell-modules/default.nix | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/pkgs/development/haskell-modules/default.nix b/pkgs/development/haskell-modules/default.nix index ef73e47f537..cf30a7699ed 100644 --- a/pkgs/development/haskell-modules/default.nix +++ b/pkgs/development/haskell-modules/default.nix @@ -55,18 +55,26 @@ 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/".*$//' ${all-cabal-hashes}/${name}/${version}/${name}.json) - cabal2nix --compiler=${self.ghc.name} --system=${stdenv.system} --sha256=$hash ${all-cabal-hashes}/${name}/${version}/${name}.cabal >$out/default.nix - ''; + haskellSrc2nix = { name, src, sha256 ? null }: + let + sha256Arg = if isNull sha256 then "" else ''--sha256="${sha256}"''; + in pkgs.stdenv.mkDerivation { + name = "cabal2nix-${name}"; + 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 -p "$out" + cabal2nix --compiler=${self.ghc.name} --system=${stdenv.system} ${sha256Arg} "${src}" > "$out/default.nix" + ''; + }; + + hackage2nix = name: version: haskellSrc2nix { + name = "${name}-${version}"; + sha256 = ''$(sed -e 's/.*"SHA256":"//' -e 's/".*$//' "${all-cabal-hashes}/${name}/${version}/${name}.json")''; + src = "${all-cabal-hashes}/${name}/${version}/${name}.cabal"; }; in @@ -76,6 +84,12 @@ let callHackage = name: version: self.callPackage (hackage2nix name version); + # Creates a Haskell package from a source package by calling cabal2nix on the source. + callCabal2nix = src: self.callPackage (haskellSrc2nix { + inherit src; + name = src.name; + }); + ghcWithPackages = selectFrom: withPackages (selectFrom self); ghcWithHoogle = selectFrom: |