about summary refs log tree commit diff
path: root/pkgs/development/haskell-modules/make-package-set.nix
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2017-06-10 20:04:46 -0400
committerShea Levy <shea@shealevy.com>2017-06-10 20:13:21 -0400
commit01e047d0887ae4be165823109ebd095cd8025813 (patch)
treecb1d6f04efcd80dc10ed7ba59a17ac98db0afbd4 /pkgs/development/haskell-modules/make-package-set.nix
parent219bb1c80c33b02c739b3a7cd206543efad8fe92 (diff)
downloadnixlib-01e047d0887ae4be165823109ebd095cd8025813.tar
nixlib-01e047d0887ae4be165823109ebd095cd8025813.tar.gz
nixlib-01e047d0887ae4be165823109ebd095cd8025813.tar.bz2
nixlib-01e047d0887ae4be165823109ebd095cd8025813.tar.lz
nixlib-01e047d0887ae4be165823109ebd095cd8025813.tar.xz
nixlib-01e047d0887ae4be165823109ebd095cd8025813.tar.zst
nixlib-01e047d0887ae4be165823109ebd095cd8025813.zip
Add haskellPackages.developPackage for local development default.nixes
Diffstat (limited to 'pkgs/development/haskell-modules/make-package-set.nix')
-rw-r--r--pkgs/development/haskell-modules/make-package-set.nix15
1 files changed, 14 insertions, 1 deletions
diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix
index 52988dc4cbbe..f933d6ebfeb9 100644
--- a/pkgs/development/haskell-modules/make-package-set.nix
+++ b/pkgs/development/haskell-modules/make-package-set.nix
@@ -7,7 +7,8 @@
 # arguments:
 #  * ghc package to use
 #  * package-set: a function that takes { pkgs, stdenv, callPackage } as first arg and `self` as second
-{ ghc, package-set }:
+#  * extensible-self: the final, fully overriden package set usable with the nixpkgs fixpoint overriding functionality
+{ ghc, package-set, extensible-self }:
 
 # return value: a function from self to the package set
 self: let
@@ -128,6 +129,18 @@ in package-set { inherit pkgs stdenv callPackage; } self // {
                                else self.callHackage;
         in generateExprs name src {}) overrides;
 
+    # : { root : Path, source-overrides : Defaulted (Either Path VersionNumber } -> NixShellAwareDerivation
+    # Given a path to a haskell package directory whose cabal file is
+    # named the same as the directory name, and an optional set of
+    # source overrides as appropriate for the 'packageSourceOverrides'
+    # function, return a derivation appropriate for nix-build or nix-shell
+    # to build that package.
+    developPackage = { root, source-overrides ? {} }:
+      let name = builtins.baseNameOf root;
+          drv =
+            (extensible-self.extend (self.packageSourceOverrides source-overrides)).callCabal2nix name root {};
+      in if pkgs.lib.inNixShell then drv.env else drv;
+
     ghcWithPackages = selectFrom: withPackages (selectFrom self);
 
     ghcWithHoogle = selectFrom: