diff options
author | Robert Hensing <robert@roberthensing.nl> | 2022-03-15 20:36:31 +0100 |
---|---|---|
committer | Robert Hensing <robert@roberthensing.nl> | 2022-03-15 20:38:22 +0100 |
commit | 2e87d165f74411ae00f964a508945696969ff53d (patch) | |
tree | 607d4fb17da215dd57cf559f28172f3f2bd8139b /pkgs/development/haskell-modules/make-package-set.nix | |
parent | 99a957451806bdbb866098560dc9b4d78d451719 (diff) | |
download | nixlib-2e87d165f74411ae00f964a508945696969ff53d.tar nixlib-2e87d165f74411ae00f964a508945696969ff53d.tar.gz nixlib-2e87d165f74411ae00f964a508945696969ff53d.tar.bz2 nixlib-2e87d165f74411ae00f964a508945696969ff53d.tar.lz nixlib-2e87d165f74411ae00f964a508945696969ff53d.tar.xz nixlib-2e87d165f74411ae00f964a508945696969ff53d.tar.zst nixlib-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/haskell-modules/make-package-set.nix')
-rw-r--r-- | pkgs/development/haskell-modules/make-package-set.nix | 16 |
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 86f29e731133..80dc94af4df6 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 []; |