about summary refs log tree commit diff
path: root/pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix')
-rw-r--r--pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix11
1 files changed, 7 insertions, 4 deletions
diff --git a/pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix b/pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix
index 8bad72bc9a9a..257ca037c5ae 100644
--- a/pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix
+++ b/pkgs/development/haskell-modules/configuration-ghc-9.6.x.nix
@@ -177,12 +177,15 @@ self: super: {
       sha256 = "sha256-b7u9GiIAd2xpOrM0MfILHNb6Nt7070lNRIadn2l3DfQ=";
     })];
   }) super.ConfigFile;
-
+}
+# super.ghc is required to break infinite recursion as Nix is strict in the attrNames
+// lib.optionalAttrs (pkgs.stdenv.hostPlatform.isAarch64 && lib.versionOlder super.ghc.version "9.6.4") {
   # The NCG backend for aarch64 generates invalid jumps in some situations,
   # the workaround on 9.6 is to revert to the LLVM backend (which is used
   # for these sorts of situations even on 9.2 and 9.4).
   # https://gitlab.haskell.org/ghc/ghc/-/issues/23746#note_525318
-  # TODO(@sternenseemann): after ghc963, with ghc964 these can be disabled
-  tls = if pkgs.stdenv.hostPlatform.isAarch64 then self.forceLlvmCodegenBackend super.tls else super.tls;
-  mmark = if pkgs.stdenv.hostPlatform.isAarch64 then self.forceLlvmCodegenBackend super.mmark else super.mmark;
+  inherit (lib.mapAttrs (_: self.forceLlvmCodegenBackend) super)
+    tls
+    mmark
+    ;
 }