haskellPackages.developPackage: Add a defaulted provideDrv argument

The purpose of this argument is to allow you to get at the derivation (rather
than it's env) even when in the evaluation context of a nix-shell invocation.
This commit is contained in:
John Wiegley 2018-05-15 22:02:00 -07:00
parent 5e49920d41
commit d33322d449
No known key found for this signature in database
GPG key ID: C144D8F4F19FE630

View file

@ -176,6 +176,7 @@ in package-set { inherit pkgs stdenv callPackage; } self // {
# , source-overrides : Defaulted (Either Path VersionNumber)
# , overrides : Defaulted (HaskellPackageOverrideSet)
# , modifier : Defaulted
# , returnShellEnv : Defaulted
# } -> NixShellAwareDerivation
# Given a path to a haskell package directory whose cabal file is
# named the same as the directory name, an optional set of
@ -183,11 +184,19 @@ in package-set { inherit pkgs stdenv callPackage; } self // {
# function, an optional set of arbitrary overrides, and an optional
# haskell package modifier, return a derivation appropriate
# for nix-build or nix-shell to build that package.
developPackage = { root, source-overrides ? {}, overrides ? self: super: {}, modifier ? drv: drv }:
let name = builtins.baseNameOf root;
drv =
(extensible-self.extend (pkgs.lib.composeExtensions (self.packageSourceOverrides source-overrides) overrides)).callCabal2nix name root {};
in if pkgs.lib.inNixShell then (modifier drv).env else modifier drv;
developPackage =
{ root
, source-overrides ? {}
, overrides ? self: super: {}
, modifier ? drv: drv
, returnShellEnv ? pkgs.lib.inNixShell }:
let drv =
(extensible-self.extend
(pkgs.lib.composeExtensions
(self.packageSourceOverrides source-overrides)
overrides))
.callCabal2nix (builtins.baseNameOf root) root {};
in if returnShellEnv then (modifier drv).env else modifier drv;
ghcWithPackages = selectFrom: withPackages (selectFrom self);