From 335f1fb25f2f784e496dc4e5560cea7e3414a7a8 Mon Sep 17 00:00:00 2001 From: Joe Kachmar Date: Mon, 11 Jan 2021 17:47:24 -0500 Subject: [PATCH] Adds Haskell generic builder argument modifier This is a new argument to the Haskell builder's 'shellFor' which allows the caller to adjust the 'genericBuilderArgs' after they are built. One immediate application for this is that it allows users to disable tests, enable benchmarks, etc. for _all_ packages in a given Haskell package set. This is often useful when so many of the derivations in the package set have changed that most of the cache has been invalidated, and there is no need for the user to run tests on their dependencies, but they still want these dependencies available in their 'nix-shell' environment for some package-under-development. --- pkgs/development/haskell-modules/make-package-set.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix index 4ae3f0b2427..c6b9f1021bc 100644 --- a/pkgs/development/haskell-modules/make-package-set.nix +++ b/pkgs/development/haskell-modules/make-package-set.nix @@ -323,6 +323,7 @@ in package-set { inherit pkgs stdenv callPackage; } self // { # packages. You should set this to true if you have benchmarks defined # in your local packages that you want to be able to run with cabal benchmark doBenchmark ? false + , genericBuilderArgsModifier ? (args: args) , ... } @ args: let @@ -439,7 +440,7 @@ in package-set { inherit pkgs stdenv callPackage; } self // { # This is a derivation created with `haskellPackages.mkDerivation`. # # pkgWithCombinedDeps :: HaskellDerivation - pkgWithCombinedDeps = self.mkDerivation genericBuilderArgs; + pkgWithCombinedDeps = self.mkDerivation (genericBuilderArgsModifier genericBuilderArgs); # The derivation returned from `envFunc` for `pkgWithCombinedDeps`. # @@ -453,7 +454,7 @@ in package-set { inherit pkgs stdenv callPackage; } self // { # pkgWithCombinedDepsDevDrv :: Derivation pkgWithCombinedDepsDevDrv = pkgWithCombinedDeps.envFunc { inherit withHoogle; }; - mkDerivationArgs = builtins.removeAttrs args [ "packages" "withHoogle" "doBenchmark" ]; + mkDerivationArgs = builtins.removeAttrs args [ "genericBuilderArgsModifier" "packages" "withHoogle" "doBenchmark" ]; in pkgWithCombinedDepsDevDrv.overrideAttrs (old: mkDerivationArgs // { nativeBuildInputs = old.nativeBuildInputs ++ mkDerivationArgs.nativeBuildInputs or [];