haskell-modules: add callCabal2nixWithOptions.

Fixes #44377.
This commit is contained in:
Drew Hess 2018-08-03 12:55:29 -07:00
parent ce4e1a15bc
commit 4abb8be7ab
No known key found for this signature in database
GPG Key ID: DEDAB57E001BD839
1 changed files with 16 additions and 13 deletions

View File

@ -170,19 +170,22 @@ in package-set { inherit pkgs stdenv callPackage; } self // {
callHackage = name: version: callPackageKeepDeriver (self.hackage2nix name version); callHackage = name: version: callPackageKeepDeriver (self.hackage2nix name version);
# Creates a Haskell package from a source package by calling cabal2nix on the source. # Creates a Haskell package from a source package by calling cabal2nix on the source.
callCabal2nix = name: src: args: let callCabal2nixWithOptions = name: src: extraCabal2nixOptions: args:
filter = path: type: let
pkgs.lib.hasSuffix "${name}.cabal" path || filter = path: type:
baseNameOf path == "package.yaml"; pkgs.lib.hasSuffix "${name}.cabal" path ||
expr = self.haskellSrc2nix { baseNameOf path == "package.yaml";
inherit name; expr = self.haskellSrc2nix {
src = if pkgs.lib.canCleanSource src inherit name extraCabal2nixOptions;
then pkgs.lib.cleanSourceWith { inherit src filter; } src = if pkgs.lib.canCleanSource src
else src; then pkgs.lib.cleanSourceWith { inherit src filter; }
}; else src;
in overrideCabal (callPackageKeepDeriver expr args) (orig: { };
inherit src; in overrideCabal (callPackageKeepDeriver expr args) (orig: {
}); inherit src;
});
callCabal2nix = name: src: args: self.callCabal2nixWithOptions name src "" args;
# : { root : Path # : { root : Path
# , source-overrides : Defaulted (Either Path VersionNumber) # , source-overrides : Defaulted (Either Path VersionNumber)