@@ -384,6 +384,18 @@ in package-set { inherit pkgs lib callPackage; } self // {
384384 # for the "shellFor" environment (ensuring that any test/benchmark
385385 # dependencies for "foo" will be available within the nix-shell).
386386 , genericBuilderArgsModifier ? (args: args)
387+
388+ # Extra dependencies, in the form of cabal2nix build attributes.
389+ #
390+ # An example use case is when you have Haskell scripts that use
391+ # libraries that don't occur in your packages' dependencies.
392+ #
393+ # Example:
394+ #
395+ # extraDependencies = p: {
396+ # libraryHaskellDepends = [ p.releaser ];
397+ # };
398+ , extraDependencies ? p: {}
387399 , ...
388400 } @ args:
389401 let
@@ -474,7 +486,7 @@ in package-set { inherit pkgs lib callPackage; } self // {
474486 # See the Note in `zipperCombinedPkgs` for what gets filtered out from
475487 # each of these dependency lists.
476488 packageInputs =
477− pkgs.lib.zipAttrsWith (_name: zipperCombinedPkgs) cabalDepsForSelected;
489+ pkgs.lib.zipAttrsWith (_name: zipperCombinedPkgs) (cabalDepsForSelected ++ [ (extraDependencies self) ]);
478490
479491 # A attribute set to pass to `haskellPackages.mkDerivation`.
480492 #
@@ -514,7 +526,7 @@ in package-set { inherit pkgs lib callPackage; } self // {
514526 # pkgWithCombinedDepsDevDrv :: Derivation
515527 pkgWithCombinedDepsDevDrv = pkgWithCombinedDeps.envFunc { inherit withHoogle; };
516528
517− mkDerivationArgs = builtins.removeAttrs args [ "genericBuilderArgsModifier" "packages" "withHoogle" "doBenchmark" ];
529+ mkDerivationArgs = builtins.removeAttrs args [ "genericBuilderArgsModifier" "packages" "withHoogle" "doBenchmark" "extraDependencies" ];
518530
519531 in pkgWithCombinedDepsDevDrv.overrideAttrs (old: mkDerivationArgs // {
520532 nativeBuildInputs = old.nativeBuildInputs ++ mkDerivationArgs.nativeBuildInputs or [];