about summary refs log tree commit diff
path: root/pkgs/development/haskell-modules/make-package-set.nix
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2018-05-15 22:02:00 -0700
committerJohn Wiegley <johnw@newartisans.com>2018-05-18 13:04:18 -0700
commitd33322d449502a5e200f876478ae44dcd049eedd (patch)
tree6971c44000a24edf9410e1cf956c5f0f6e37aabf /pkgs/development/haskell-modules/make-package-set.nix
parent5e49920d410b27e9430bfa97f94d40ba67d26666 (diff)
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.
Diffstat (limited to 'pkgs/development/haskell-modules/make-package-set.nix')
-rw-r--r--pkgs/development/haskell-modules/make-package-set.nix19
1 files changed, 14 insertions, 5 deletions
diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix
index bde4f85f67846..bbc3d856ff2db 100644
--- a/pkgs/development/haskell-modules/make-package-set.nix
+++ b/pkgs/development/haskell-modules/make-package-set.nix
@@ -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);