···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)
387387+388388+ # Extra dependencies, in the form of cabal2nix build attributes.
389389+ #
390390+ # An example use case is when you have Haskell scripts that use
391391+ # libraries that don't occur in your packages' dependencies.
392392+ #
393393+ # Example:
394394+ #
395395+ # extraDependencies = p: {
396396+ # libraryHaskellDepends = [ p.releaser ];
397397+ # };
398398+ , extraDependencies ? p: {}
387399 , ...
388400 } @ args:
389401 let
···474486 # See the Note in `zipperCombinedPkgs` for what gets filtered out from
475487 # each of these dependency lists.
476488 packageInputs =
477477- pkgs.lib.zipAttrsWith (_name: zipperCombinedPkgs) cabalDepsForSelected;
489489+ pkgs.lib.zipAttrsWith (_name: zipperCombinedPkgs) (cabalDepsForSelected ++ [ (extraDependencies self) ]);
478490479491 # A attribute set to pass to `haskellPackages.mkDerivation`.
480492 #
···514526 # pkgWithCombinedDepsDevDrv :: Derivation
515527 pkgWithCombinedDepsDevDrv = pkgWithCombinedDeps.envFunc { inherit withHoogle; };
516528517517- mkDerivationArgs = builtins.removeAttrs args [ "genericBuilderArgsModifier" "packages" "withHoogle" "doBenchmark" ];
529529+ mkDerivationArgs = builtins.removeAttrs args [ "genericBuilderArgsModifier" "packages" "withHoogle" "doBenchmark" "extraDependencies" ];
518530519531 in pkgWithCombinedDepsDevDrv.overrideAttrs (old: mkDerivationArgs // {
520532 nativeBuildInputs = old.nativeBuildInputs ++ mkDerivationArgs.nativeBuildInputs or [];