summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2022-03-15 20:36:31 +0100
committerRobert Hensing <robert@roberthensing.nl>2022-03-15 20:38:22 +0100
commit2e87d165f74411ae00f964a508945696969ff53d (patch)
tree607d4fb17da215dd57cf559f28172f3f2bd8139b /pkgs/development
parent99a957451806bdbb866098560dc9b4d78d451719 (diff)
downloadnixpkgs-2e87d165f74411ae00f964a508945696969ff53d.tar
nixpkgs-2e87d165f74411ae00f964a508945696969ff53d.tar.gz
nixpkgs-2e87d165f74411ae00f964a508945696969ff53d.tar.bz2
nixpkgs-2e87d165f74411ae00f964a508945696969ff53d.tar.lz
nixpkgs-2e87d165f74411ae00f964a508945696969ff53d.tar.xz
nixpkgs-2e87d165f74411ae00f964a508945696969ff53d.tar.zst
nixpkgs-2e87d165f74411ae00f964a508945696969ff53d.zip
haskellPackages.shellFor: Add extraDependencies
An example use case is when you have Haskell scripts that use
libraries that don't occur in your packages' dependencies.
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/haskell-modules/make-package-set.nix16
1 files changed, 14 insertions, 2 deletions
diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix
index 86f29e73113..80dc94af4df 100644
--- a/pkgs/development/haskell-modules/make-package-set.nix
+++ b/pkgs/development/haskell-modules/make-package-set.nix
@@ -384,6 +384,18 @@ in package-set { inherit pkgs lib callPackage; } self // {
         # for the "shellFor" environment (ensuring that any test/benchmark
         # dependencies for "foo" will be available within the nix-shell).
       , genericBuilderArgsModifier ? (args: args)
+
+        # Extra dependencies, in the form of cabal2nix build attributes.
+        #
+        # An example use case is when you have Haskell scripts that use
+        # libraries that don't occur in your packages' dependencies.
+        #
+        # Example:
+        #
+        #   extraDependencies = p: {
+        #     libraryHaskellDepends = [ p.releaser ];
+        #   };
+      , extraDependencies ? p: {}
       , ...
       } @ args:
       let
@@ -474,7 +486,7 @@ in package-set { inherit pkgs lib callPackage; } self // {
         # See the Note in `zipperCombinedPkgs` for what gets filtered out from
         # each of these dependency lists.
         packageInputs =
-          pkgs.lib.zipAttrsWith (_name: zipperCombinedPkgs) cabalDepsForSelected;
+          pkgs.lib.zipAttrsWith (_name: zipperCombinedPkgs) (cabalDepsForSelected ++ [ (extraDependencies self) ]);
 
         # A attribute set to pass to `haskellPackages.mkDerivation`.
         #
@@ -514,7 +526,7 @@ in package-set { inherit pkgs lib callPackage; } self // {
         # pkgWithCombinedDepsDevDrv :: Derivation
         pkgWithCombinedDepsDevDrv = pkgWithCombinedDeps.envFunc { inherit withHoogle; };
 
-        mkDerivationArgs = builtins.removeAttrs args [ "genericBuilderArgsModifier" "packages" "withHoogle" "doBenchmark" ];
+        mkDerivationArgs = builtins.removeAttrs args [ "genericBuilderArgsModifier" "packages" "withHoogle" "doBenchmark" "extraDependencies" ];
 
       in pkgWithCombinedDepsDevDrv.overrideAttrs (old: mkDerivationArgs // {
         nativeBuildInputs = old.nativeBuildInputs ++ mkDerivationArgs.nativeBuildInputs or [];