diff --git a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
index b0f3688d14dc..bb8291d1a6a0 100644
--- a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
+++ b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
@@ -1694,6 +1694,22 @@ services.github-runner.serviceOverrides.SupplementaryGroups = [
picom to quit instead.
+
+
+ haskellPackage.callHackage is not always
+ invalidated if all-cabal-hashes changes,
+ leading to less rebuilds of haskell dependencies.
+
+
+
+
+ haskellPackages.callHackage and
+ haskellPackages.callCabal2nix (and related
+ functions) no longer keep a reference to the
+ cabal2nix call used to generate them. As a
+ result, they will be garbage collected more often.
+
+
diff --git a/nixos/doc/manual/release-notes/rl-2211.section.md b/nixos/doc/manual/release-notes/rl-2211.section.md
index 72d16c4771a3..071351939f65 100644
--- a/nixos/doc/manual/release-notes/rl-2211.section.md
+++ b/nixos/doc/manual/release-notes/rl-2211.section.md
@@ -529,4 +529,8 @@ Available as [services.patroni](options.html#opt-services.patroni.enable).
- The option `services.picom.experimentalBackends` was removed since it is now the default and the option will cause `picom` to quit instead.
+- `haskellPackage.callHackage` is not always invalidated if `all-cabal-hashes` changes, leading to less rebuilds of haskell dependencies.
+
+- `haskellPackages.callHackage` and `haskellPackages.callCabal2nix` (and related functions) no longer keep a reference to the `cabal2nix` call used to generate them. As a result, they will be garbage collected more often.
+
diff --git a/pkgs/development/haskell-modules/make-package-set.nix b/pkgs/development/haskell-modules/make-package-set.nix
index 843d1a9694c3..3dd019486227 100644
--- a/pkgs/development/haskell-modules/make-package-set.nix
+++ b/pkgs/development/haskell-modules/make-package-set.nix
@@ -161,17 +161,13 @@ let
src = "${component}/${name}.cabal";
};
- # Adds a nix file as an input to the haskell derivation it
- # produces. This is useful for callHackage / callCabal2nix to
- # prevent the generated default.nix from being garbage collected
- # (requiring it to be frequently rebuilt), which can be an
- # annoyance.
+ # Adds a nix file derived from cabal2nix in the passthru of the derivation it
+ # produces. This is useful to debug callHackage / callCabal2nix by looking at
+ # the content of the nix file pointed by `cabal2nixDeriver`.
+ # However, it does not keep a reference to that file, which may be garbage
+ # collected, which may be an annoyance.
callPackageKeepDeriver = src: args:
overrideCabal (orig: {
- preConfigure = ''
- # Generated from ${src}
- ${orig.preConfigure or ""}
- '';
passthru = orig.passthru or {} // {
# When using callCabal2nix or callHackage, it is often useful
# to debug a failure by inspecting the Nix expression