about summary refs log tree commit diff
path: root/pkgs/development/haskell-modules/configuration-common.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/haskell-modules/configuration-common.nix')
-rw-r--r--pkgs/development/haskell-modules/configuration-common.nix378
1 files changed, 198 insertions, 180 deletions
diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix
index 482abb918e02..6ff84394d3fb 100644
--- a/pkgs/development/haskell-modules/configuration-common.nix
+++ b/pkgs/development/haskell-modules/configuration-common.nix
@@ -34,8 +34,6 @@ self: super: {
       # !!! Use cself/csuper inside for the actual overrides
       cabalInstallOverlay = cself: csuper:
         {
-          # Needs to be upgraded compared to Stackage LTS 21
-          cabal-install-solver = cself.cabal-install-solver_3_10_2_1;
           # Needs to be downgraded compared to Stackage LTS 21
           resolv = cself.resolv_0_1_2_0;
         } // lib.optionalAttrs (lib.versionOlder self.ghc.version "9.6") {
@@ -52,21 +50,6 @@ self: super: {
           # process depends on directory.
           process = cself.process_1_6_18_0;
 
-          # hspec < 2.10 depends on ghc (the library) directly which in turn
-          # depends on directory, causing a dependency conflict which is practically
-          # not solvable short of recompiling GHC. Instead of adding
-          # allowInconsistentDependencies for all reverse dependencies of hspec-core,
-          # just upgrade to an hspec version without the offending dependency.
-          hspec-core = cself.hspec-core_2_11_7;
-          hspec-discover = cself.hspec-discover_2_11_7;
-          hspec = cself.hspec_2_11_7;
-
-          # hspec-discover and hspec-core depend on hspec-meta for testing which
-          # we need to avoid since it depends on ghc as well. Since hspec*_2_11*
-          # are overridden to take the versioned attributes as inputs, we need
-          # to make sure to override the versioned attribute with this fix.
-          hspec-discover_2_11_7 = dontCheck csuper.hspec-discover_2_11_7;
-
           # Prevent dependency on doctest which causes an inconsistent dependency
           # due to depending on ghc which depends on directory etc.
           vector = dontCheck csuper.vector;
@@ -94,12 +77,13 @@ self: super: {
 
   # Extensions wants the latest version of Cabal for its list of Haskell
   # language extensions.
-  extensions = super.extensions.override {
+  # 2024-01-15: jailbreak to allow hspec-hedgehog 0.1.1.0 https://github.com/kowainik/extensions/pull/92
+  extensions = doJailbreak (super.extensions.override {
     Cabal =
       if versionOlder self.ghc.version "9.6"
       then self.Cabal_3_10_2_1
       else null; # use GHC bundled version
-  };
+  });
 
   #######################################
   ### HASKELL-LANGUAGE-SERVER SECTION ###
@@ -133,11 +117,19 @@ self: super: {
   hls-test-utils = doJailbreak super.hls-test-utils;
   hls-alternate-number-format-plugin = doJailbreak super.hls-alternate-number-format-plugin;
   hls-cabal-plugin = doJailbreak super.hls-cabal-plugin;
-  hls-call-hierarchy-plugin = doJailbreak super.hls-call-hierarchy-plugin;
   hls-explicit-fixity-plugin = doJailbreak super.hls-explicit-fixity-plugin;
   hls-floskell-plugin = doJailbreak super.hls-floskell-plugin;
   hls-gadt-plugin = doJailbreak super.hls-gadt-plugin;
 
+  hls-call-hierarchy-plugin = appendPatch (pkgs.fetchpatch {
+    url = "https://github.com/haskell/haskell-language-server/pull/3943.patch";
+    relative = "plugins/hls-call-hierarchy-plugin";
+    hash = "sha256-TOIn4/AGQr8o3r6gI6/vQsdWw/UGyO/599X0pCTYJjE=";
+  }) (doJailbreak super.hls-call-hierarchy-plugin);
+
+  # 2024-01-15: allow hiedb 0.5 https://github.com/haskell/haskell-language-server/pull/3943
+  ghcide = doJailbreak super.ghcide;
+
   ###########################################
   ### END HASKELL-LANGUAGE-SERVER SECTION ###
   ###########################################
@@ -190,6 +182,15 @@ self: super: {
     })
   ] super.aeson);
 
+  # Lifts bounds on hoauth2, skylighting, and json adds compat with mtl >= 2.3
+  gitit = appendPatches [
+    (pkgs.fetchpatch {
+      name = "gitit-stackage-lts-22.patch";
+      url = "https://github.com/jgm/gitit/commit/c3ce1ab513d07e9b29e9f4ec8244903441a03fca.patch";
+      sha256 = "1573ysf1qdhgsn0lh46cvwlcvyx4r2aay7g8c5cfgnadxd9b1j41";
+    })
+  ] super.gitit;
+
   # 2023-06-28: Test error: https://hydra.nixos.org/build/225565149
   orbits = dontCheck super.orbits;
 
@@ -208,15 +209,17 @@ self: super: {
     '';
   }) super.double-conversion;
 
+  # Too strict bounds on hspec < 2.11
+  http-api-data = doJailbreak super.http-api-data;
+  tasty-discover = doJailbreak super.tasty-discover;
+
   # Allow aeson == 2.1.*
   # https://github.com/hdgarrood/aeson-better-errors/issues/23
   aeson-better-errors = doJailbreak super.aeson-better-errors;
 
   # 2023-08-09: Jailbreak because of vector < 0.13
   # 2023-11-09: don't check because of https://github.com/tweag/monad-bayes/pull/326
-  monad-bayes = dontCheck (doJailbreak (super.monad-bayes.override {
-    hspec = self.hspec_2_11_7;
-  }));
+  monad-bayes = dontCheck (doJailbreak super.monad-bayes);
 
   # Disable tests failing on odd floating point numbers generated by QuickCheck 2.14.3
   # https://github.com/haskell/statistics/issues/205
@@ -235,6 +238,12 @@ self: super: {
     sha256 = "14gllipl28lqry73c5dnclsskzk1bsrrgazibl4lkl8z98j2csjb";
   }) super.leveldb-haskell;
 
+  # 2024-01-08: fix tests failure for fgl >= 5.8.1 https://github.com/koalaman/shellcheck/issues/2677
+  ShellCheck = appendPatch (fetchpatch {
+    url = "https://github.com/koalaman/shellcheck/commit/c05380d518056189412e12128a8906b8ca6f6717.patch";
+    hash = "sha256-FXZQ/D7ut84Yng2/denihDM8e+q04/t2LVALFbohfT0=";
+  }) super.ShellCheck;
+
   # Arion's test suite needs a Nixpkgs, which is cumbersome to do from Nixpkgs
   # itself. For instance, pkgs.path has dirty sources and puts a huge .git in the
   # store. Testing is done upstream.
@@ -272,6 +281,10 @@ self: super: {
   # 2023-04-17: https://gitlab.haskell.org/ghc/ghc-debug/-/issues/20
   ghc-debug-brick = doJailbreak super.ghc-debug-brick;
 
+  # Test failure.  Tests also disabled in Stackage:
+  # https://github.com/jtdaugherty/brick/issues/499
+  brick = dontCheck super.brick;
+
   # Needs older QuickCheck version
   attoparsec-varword = dontCheck super.attoparsec-varword;
 
@@ -304,20 +317,9 @@ self: super: {
     })
   ]) super.memory;
 
-  # Waiting for the commit being fetched as a patch to get a release.
-  espial = appendPatch (fetchpatch {
-    url = "https://github.com/jonschoning/espial/commit/70375db7e245207b3572779288eade3252c4d9e3.patch";
-    sha256 = "sha256-fto8fdFbZkzn7dwCCsGw+j+5HSvEvyvU5VzYDn4F2G8=";
-    excludes = ["*.yaml" "*.lock" "*.json"];
-  }) super.espial;
-
   # 2023-06-10: Too strict version bound on https://github.com/haskell/ThreadScope/issues/118
   threadscope = doJailbreak super.threadscope;
 
-  # Overriding the version pandoc dependency uses as the latest release has version bounds
-  # defined as >= 3.1  && < 3.2, can be removed once pandoc gets bumped by Stackage.
-  patat = super.patat.override { pandoc = self.pandoc_3_1_11; };
-
   # http2 also overridden in all-packages.nix for mailctl.
   # twain is currently only used by mailctl, so the .overrideScope shouldn't
   # negatively affect any other packages, at least currently...
@@ -356,16 +358,7 @@ self: super: {
         rm -r $out/doc/?ndroid*
       '';
     };
-
-    # Git annex provides a restricted login shell. Setting
-    # passthru.shellPath here allows a user's login shell to be set to
-    # `git-annex-shell` by making `shell = haskellPackages.git-annex`.
-    # https://git-annex.branchable.com/git-annex-shell/
-    passthru.shellPath = "/bin/git-annex-shell";
-  }) (super.git-annex.overrideScope (self: _: {
-    # https://github.com/haskell-pkg-janitors/unix-compat/issues/3
-    unix-compat = self.unix-compat_0_6;
-  }));
+  }) super.git-annex;
 
   # Too strict bounds on servant
   # Pending a hackage revision: https://github.com/berberman/arch-web/commit/5d08afee5b25e644f9e2e2b95380a5d4f4aa81ea#commitcomment-89230555
@@ -524,17 +517,60 @@ self: super: {
   # 2023-04-20: Restrictive bytestring bound in tests.
   storablevector = doJailbreak super.storablevector;
 
-  # 2023-04-20: Pretends to need brick 1.6 but the commit history here
-  # https://github.com/matterhorn-chat/matterhorn/commits/master/matterhorn.cabal
-  # makes very clear that 1.4 is equally fine.
-  # Generally a slightly packaging hostile bound practice.
-  matterhorn = doJailbreak super.matterhorn;
+  # Need following changes from develop branch:
+  # - crypton-connection over connection (abandoned)
+  # - vty >= 6 (& pals) support
+  # Unreasonably difficult to apply as patches
+  matterhorn = lib.pipe
+    (super.matterhorn.override {
+        connection = self.crypton-connection;
+    })
+    [
+      doJailbreak
+      # vty >= 6 support
+      (addBuildDepends [ self.vty-crossplatform ])
+      (overrideSrc {
+        version = "unstable-2024-01-11";
+        src = pkgs.fetchFromGitHub {
+          owner = "matterhorn-chat";
+          repo = "matterhorn";
+          rev = lib.warnIf
+            (super.matterhorn.version != "50200.19.0")
+            "matterhorn on Hackage may have caught up with our pinned commit"
+            "66d23291a1c748e568908b91b1109ed17b6d86e9";
+          sha256 = "0djawpp0zvvc2v020k6p4chvd1dlmcs0fa3d4wlr0cmkha40flpb";
+        };
+      })
+    ];
+  # Switch to crypton-connection over abandoned connection
+  # To add insult to injury, mattermost-api had a breaking change on its develop
+  # branch, so we also need to bump it to an unstable commit. Luckily, matterhorn
+  # is its only consumer on Hackage.
+  mattermost-api = overrideSrc {
+    version = lib.warnIf
+      (super.mattermost-api.version != "50200.15.0")
+      "mattermost-api on Hackage may have caught up with our pinned commit"
+      "unstable-2024-01-11";
+    src = pkgs.fetchFromGitHub {
+      owner = "matterhorn-chat";
+      repo = "mattermost-api";
+      rev = "8df809df4d96930cf8b39d0d8f54cdb6d8f42b59";
+      sha256 = "154p4yi941l9ga2c3vw8yhgq0g1wn4jhmg3yhzgwgca1c5d1vydi";
+    };
+  } (super.mattermost-api.override {
+    connection = self.crypton-connection;
+  });
+
+  # Too strict bounds on transformers and resourcet
+  # https://github.com/alphaHeavy/lzma-conduit/issues/23
+  lzma-conduit = doJailbreak super.lzma-conduit;
 
   # 2020-06-05: HACK: does not pass own build suite - `dontCheck`
-  hnix = dontCheck (super.hnix.override {
+  # 2024-01-15: too strict bound on free < 5.2
+  hnix = doJailbreak (dontCheck (super.hnix.override {
     # 2023-12-11: Needs older core due to remote
     hnix-store-core = self.hnix-store-core_0_6_1_0;
-  });
+  }));
 
 
   # Too strict bounds on algebraic-graphs
@@ -554,9 +590,6 @@ self: super: {
   # https://github.com/ekmett/structures/issues/3
   structures = dontCheck super.structures;
 
-  # Requires alex >= 3.4
-  jacinda = super.jacinda.override { alex = self.alex_3_4_0_1; };
-
   # Disable test suites to fix the build.
   acme-year = dontCheck super.acme-year;                # http://hydra.cryp.to/build/497858/log/raw
   aeson-lens = dontCheck super.aeson-lens;              # http://hydra.cryp.to/build/496769/log/raw
@@ -719,6 +752,10 @@ self: super: {
   xsd = dontCheck super.xsd;
   zip-archive = dontCheck super.zip-archive;  # https://github.com/jgm/zip-archive/issues/57
 
+  # 2023-01-11: Too strict bounds on optparse-applicative
+  # https://github.com/Gabriella439/bench/issues/49
+  bench = doJailbreak super.bench;
+
   # 2023-06-26: Test failure: https://hydra.nixos.org/build/224869905
   comfort-blas = dontCheck super.comfort-blas;
 
@@ -1057,10 +1094,17 @@ self: super: {
 
   # Djinn's last release was 2014, incompatible with Semigroup-Monoid Proposal
   # https://github.com/augustss/djinn/pull/8
-  djinn = appendPatch (fetchpatch {
-    url = "https://github.com/augustss/djinn/commit/6cb9433a137fb6b5194afe41d616bd8b62b95630.patch";
-    sha256 = "0s021y5nzrh74gfp8xpxpxm11ivzfs3jwg6mkrlyry3iy584xqil";
-  }) super.djinn;
+  djinn = overrideSrc {
+    version = "unstable-2023-11-20";
+    src = pkgs.fetchFromGitHub {
+      owner = "augustss";
+      repo = "djinn";
+      rev = "69b3fbad9f42f0b1b2c49977976b8588c967d76e";
+      hash = "sha256-ibxn6DXk4pqsOsWhi8KcrlH/THnuMWvIu5ENOn3H3So=";
+    };
+  } super.djinn;
+
+  mueval = doJailbreak super.mueval;
 
   # We cannot build this package w/o the C library from <http://www.phash.org/>.
   phash = markBroken super.phash;
@@ -1280,37 +1324,6 @@ self: super: {
   dhall-nixpkgs = self.generateOptparseApplicativeCompletions [ "dhall-to-nixpkgs" ] (doJailbreak super.dhall-nixpkgs);
   dhall-yaml = self.generateOptparseApplicativeCompletions ["dhall-to-yaml-ng" "yaml-to-dhall"] super.dhall-yaml;
 
-  crypton-connection = super.crypton-connection.override {
-    # requires tls >= 1.7
-    tls = self.tls_1_9_0;
-  };
-
-  stack =
-    lib.pipe
-      super.stack
-      [
-        (self.generateOptparseApplicativeCompletions [ "stack" ])
-
-        # stack-2.13.1 requires a bunch of the latest packages.
-        (drv: drv.overrideScope (hfinal: hprev: {
-          ansi-terminal = hfinal.ansi-terminal_1_0; # needs ansi-terminal >= 1.0
-          crypton = hfinal.crypton_0_34; # needs crypton >= 0.33
-          hedgehog = doJailbreak hprev.hedgehog; # has too strict version bound for ansi-terminal
-          hpack = hfinal.hpack_0_36_0; # needs hpack == 0.36.0
-          http-client-tls = hfinal.http-client-tls_0_3_6_3; # needs http-client-tls >= 0.3.6.2
-          http-download = hfinal.http-download_0_2_1_0; # needs http-download >= 0.2.1.0
-          optparse-applicative = hfinal.optparse-applicative_0_18_1_0; # needs optparse-applicative >= 0.18.1.0
-          pantry = hfinal.pantry_0_9_3_1; # needs pantry >= 0.9.2
-          syb = dontCheck hprev.syb; # cyclic dependencies
-          tar-conduit = hfinal.tar-conduit_0_4_0; # pantry needs tar-conduit >= 0.4.0
-          temporary = dontCheck hprev.temporary; # cyclic dependencies
-        }))
-      ];
-
-  hopenpgp-tools = super.hopenpgp-tools.override {
-    optparse-applicative = self.optparse-applicative_0_18_1_0;
-  };
-
   # musl fixes
   # dontCheck: use of non-standard strptime "%s" which musl doesn't support; only used in test
   unix-time = if pkgs.stdenv.hostPlatform.isMusl then dontCheck super.unix-time else super.unix-time;
@@ -1630,18 +1643,22 @@ self: super: {
     libraryToolDepends = (drv.libraryToolDepends or []) ++ [self.buildHaskellPackages.c2hs];
   }) super.libsodium;
 
-  svgcairo = appendPatches [
-    # Remove when https://github.com/gtk2hs/svgcairo/pull/12 goes in.
-    (fetchpatch {
-      url = "https://github.com/gtk2hs/svgcairo/commit/348c60b99c284557a522baaf47db69322a0a8b67.patch";
-      sha256 = "0akhq6klmykvqd5wsbdfnnl309f80ds19zgq06sh1mmggi54dnf3";
-    })
-    # Remove when https://github.com/gtk2hs/svgcairo/pull/13 goes in.
-    (fetchpatch {
-      url = "https://github.com/dalpd/svgcairo/commit/d1e0d7ae04c1edca83d5b782e464524cdda6ae85.patch";
-      sha256 = "1pq9ld9z67zsxj8vqjf82qwckcp69lvvnrjb7wsyb5jc6jaj3q0a";
-    })
-  ] super.svgcairo;
+  svgcairo = overrideCabal (drv: {
+    patches = drv.patches or [ ] ++ [
+      # Remove when https://github.com/gtk2hs/svgcairo/pull/12 goes in.
+      (fetchpatch {
+        url = "https://github.com/gtk2hs/svgcairo/commit/348c60b99c284557a522baaf47db69322a0a8b67.patch";
+        sha256 = "0akhq6klmykvqd5wsbdfnnl309f80ds19zgq06sh1mmggi54dnf3";
+      })
+      # Remove when https://github.com/gtk2hs/svgcairo/pull/13 goes in.
+      (fetchpatch {
+        url = "https://github.com/dalpd/svgcairo/commit/d1e0d7ae04c1edca83d5b782e464524cdda6ae85.patch";
+        sha256 = "1pq9ld9z67zsxj8vqjf82qwckcp69lvvnrjb7wsyb5jc6jaj3q0a";
+      })
+    ];
+    editedCabalFile = null;
+    revision = null;
+  }) super.svgcairo;
 
   # Upstream PR: https://github.com/jkff/splot/pull/9
   splot = appendPatch (fetchpatch {
@@ -1735,6 +1752,15 @@ self: super: {
     doCheck = false;
   }) super.hcoord;
 
+  # Break infinite recursion via tasty
+  temporary = dontCheck super.temporary;
+
+  # Break infinite recursion via doctest-lib
+  utility-ht = dontCheck super.utility-ht;
+
+  # Break infinite recursion via optparse-applicative (alternatively, dontCheck syb)
+  prettyprinter-ansi-terminal = dontCheck super.prettyprinter-ansi-terminal;
+
   # Tests rely on `Int` being 64-bit: https://github.com/hspec/hspec/issues/431.
   # Also, we need QuickCheck-2.14.x to build the test suite, which isn't easy in LTS-16.x.
   # So let's not go there and just disable the tests altogether.
@@ -1821,23 +1847,6 @@ self: super: {
   # https://github.com/biocad/servant-openapi3/issues/30
   servant-openapi3 = dontCheck super.servant-openapi3;
 
-  # Give latest hspec correct dependency versions without overrideScope
-  hspec_2_11_7 = doDistribute (super.hspec_2_11_7.override {
-    hspec-discover = self.hspec-discover_2_11_7;
-    hspec-core = self.hspec-core_2_11_7;
-  });
-  hspec-meta_2_11_7 = doDistribute (super.hspec-meta_2_11_7.override {
-    hspec-expectations = self.hspec-expectations_0_8_4;
-  });
-  hspec-discover_2_11_7 = doDistribute (super.hspec-discover_2_11_7.override {
-    hspec-meta = self.hspec-meta_2_11_7;
-  });
-  # Need to disable tests to prevent an infinite recursion if hspec-core_2_11_7
-  # is overlayed to hspec-core.
-  hspec-core_2_11_7 = doDistribute (dontCheck (super.hspec-core_2_11_7.override {
-    hspec-expectations = self.hspec-expectations_0_8_4;
-  }));
-
   # Point hspec 2.7.10 to correct dependencies
   hspec_2_7_10 = super.hspec_2_7_10.override {
     hspec-discover = self.hspec-discover_2_7_10;
@@ -1932,8 +1941,16 @@ self: super: {
     "--haddock-option=--optghc=-fno-safe-haskell"
   ] super.alg;
 
+  # Windows.normalise changed in filepath >= 1.4.100.4 which fails the equivalency
+  # test suite. This is of no great consequence for us, though.
+  # Patch solving this has been submitted to upstream by me (@sternenseemann).
+  filepath-bytestring =
+    lib.warnIf
+      (lib.versionAtLeast super.filepath-bytestring.version "1.4.100.4")
+      "filepath-bytestring override may be obsolete"
+      dontCheck super.filepath-bytestring;
+
   # Break out of overspecified constraint on QuickCheck.
-  filepath-bytestring = doJailbreak super.filepath-bytestring;
   haddock-library = doJailbreak super.haddock-library;
 
   # Test suite has overly strict bounds on tasty, jailbreaking fails.
@@ -1977,50 +1994,6 @@ self: super: {
   # test suite doesn't compile anymore due to changed hunit/tasty APIs
   fullstop = dontCheck super.fullstop;
 
-  # https://github.com/jgm/pandoc/issues/7163
-  pandoc = dontCheck super.pandoc;
-
-  # Since pandoc-3, the actual `pandoc` executable is in the pandoc-cli
-  # package.  It is no longer distributed in the pandoc package itself.  So for
-  # people that want to use the `pandoc` cli tool, they must use pandoc-cli.
-  #
-  # The unfortunate thing is that LTS-21 includes no possible build plan for
-  # pandoc-cli, because pandoc-cli pandoc-lua-engine are not in LTS 21.
-  # To get pandoc-lua-engine building we need either to downgrade a ton
-  # of hslua-module-* packages from stackage or use pandoc 3.1 although
-  # LTS contains pandoc 3.0.
-  inherit (let
-    pandoc-cli-overlay = self: super: {
-      # pandoc-cli requires pandoc >= 3.1
-      pandoc = self.pandoc_3_1_11;
-
-      # pandoc depends on http-client-tls, which only starts depending
-      # on crypton-connection in http-client-tls-0.3.6.2.
-      http-client-tls = self.http-client-tls_0_3_6_3;
-
-      # pandoc depends on skylighting >= 0.14
-      skylighting = self.skylighting_0_14_1;
-      skylighting-core = self.skylighting-core_0_14_1;
-
-      # pandoc needs up to date typst
-      typst-symbols = self.typst-symbols_0_1_5;
-      # and texmath to match
-      texmath = self.texmath_0_12_8_6;
-    };
-  in {
-    pandoc-cli = super.pandoc-cli.overrideScope pandoc-cli-overlay;
-    pandoc_3_1_11 = doDistribute (super.pandoc_3_1_11.overrideScope pandoc-cli-overlay);
-    pandoc-lua-engine = super.pandoc-lua-engine.overrideScope pandoc-cli-overlay;
-  })
-    pandoc-cli
-    pandoc_3_1_11
-    pandoc-lua-engine
-    ;
-
-  # Doesn't work without typst-symbols >= 0.1.5 which conflicts with Stackage
-  # TODO(@sternenseemann): clean up with Stackage LTS 22
-  typst = dontDistribute super.typst;
-
   crypton-x509 =
     lib.pipe
       super.crypton-x509
@@ -2294,6 +2267,9 @@ self: super: {
     Cabal-syntax = self.Cabal-syntax_3_10_2_0;
   }));
 
+  # Too strict bound on hspec (<2.11)
+  utf8-light = doJailbreak super.utf8-light;
+
   large-hashable = lib.pipe (super.large-hashable.override {
     # https://github.com/factisresearch/large-hashable/commit/5ec9d2c7233fc4445303564047c992b693e1155c
     utf8-light = null;
@@ -2393,8 +2369,6 @@ self: super: {
     language-docker = self.language-docker_11_0_0;
   };
 
-  nix-tree = super.nix-tree;
-
   # test suite requires stack to run, https://github.com/dino-/photoname/issues/24
   photoname = dontCheck super.photoname;
 
@@ -2550,8 +2524,24 @@ self: super: {
 
   # Too strict bounds on text and tls
   # https://github.com/barrucadu/irc-conduit/issues/54
-  irc-conduit = doJailbreak super.irc-conduit;
-  irc-client = doJailbreak super.irc-client;
+  # Use crypton-connection instead of connection
+  # https://github.com/barrucadu/irc-conduit/pull/60 https://github.com/barrucadu/irc-client/pull/101
+  irc-conduit = appendPatch (pkgs.fetchpatch {
+    url = "https://github.com/barrucadu/irc-conduit/pull/60/commits/58f6b5ee0c23a0615e43292dbbacf40636dcd7a6.patch";
+    hash = "sha256-d08tb9iL07mBWdlZ7PCfTLVFJLgcxeGVPzJ+jOej8io=";
+  }) (doJailbreak (super.irc-conduit.override {
+    connection = self.crypton-connection;
+    x509-validation = self.crypton-x509-validation;
+  }));
+  irc-client = appendPatch (pkgs.fetchpatch {
+    url = "https://github.com/barrucadu/irc-client/pull/101/commits/0440b7e2ce943d960234c50957a55025771f567a.patch";
+    hash = "sha256-iZyZMrodgViXFCMH9y2wIJZRnjd6WhkqInAdykqTdkY=";
+  }) (doJailbreak (super.irc-client.override {
+    connection = self.crypton-connection;
+    x509 = self.crypton-x509;
+    x509-store = self.crypton-x509-store;
+    x509-validation = self.crypton-x509-validation;
+  }));
 
   # 2022-02-25: Unmaintained and to strict upper bounds
   paths = doJailbreak super.paths;
@@ -2777,10 +2767,8 @@ self: super: {
   co-log-polysemy = doJailbreak super.co-log-polysemy;
   co-log-polysemy-formatting = doJailbreak super.co-log-polysemy-formatting;
 
-  # 2023-12-20: Needs newer hasql-pool package and extra dependencies
-  postgrest = lib.pipe (super.postgrest.overrideScope (lself: lsuper: {
-    hasql-pool = lself.hasql-pool_0_10_0_1;
-  })) [
+  postgrest = lib.pipe super.postgrest [
+    # 2023-12-20: New version needs extra dependencies
     (addBuildDepends [ self.extra self.fuzzyset_0_2_4 self.cache self.timeit ])
     # 2022-12-02: Too strict bounds: https://github.com/PostgREST/postgrest/issues/2580
     doJailbreak
@@ -2796,6 +2784,10 @@ self: super: {
     })
   ];
 
+  # Too strict bounds on hspec < 2.11
+  fuzzyset_0_2_4 = doJailbreak super.fuzzyset_0_2_4;
+  swagger2 = doJailbreak super.swagger2;
+
   html-charset = dontCheck super.html-charset;
 
   # true-name-0.1.0.4 has been tagged, but has not been released to Hackage.
@@ -2857,6 +2849,9 @@ self: super: {
   # The hackage source is somehow missing a file present in the repo (tests/ListStat.hs).
   sym = dontCheck super.sym;
 
+  # 2024-01-23: https://github.com/composewell/unicode-data/issues/118
+  unicode-data = dontCheck super.unicode-data;
+
   # Too strict bounds on base, ghc-prim, primitive
   # https://github.com/kowainik/typerep-map/pull/128
   typerep-map = doJailbreak super.typerep-map;
@@ -2864,6 +2859,9 @@ self: super: {
   # Too strict bounds on base
   kewar = doJailbreak super.kewar;
 
+  # Too strict bounds on mtl, servant and servant-client
+  unleash-client-haskell = doJailbreak super.unleash-client-haskell;
+
   # Tests rely on (missing) submodule
   unleash-client-haskell-core = dontCheck super.unleash-client-haskell-core;
 
@@ -2877,11 +2875,6 @@ self: super: {
     libraryToolDepends = (drv.libraryToolDepends or []) ++ [pkgs.buildPackages.git];
   }) super.kmonad;
 
-  # Both of these need specific versions of ghc-lib-parser, the minor releases
-  # seem to be tied.
-  ghc-syntax-highlighter_0_0_10_0 = super.ghc-syntax-highlighter_0_0_10_0.overrideScope(self: super: {
-    ghc-lib-parser = self.ghc-lib-parser_9_6_3_20231121;
-  });
   ghc-syntax-highlighter_0_0_11_0 = super.ghc-syntax-highlighter_0_0_11_0.overrideScope(self: super: {
     ghc-lib-parser = self.ghc-lib-parser_9_8_1_20231121;
   });
@@ -2890,12 +2883,37 @@ self: super: {
   # ghc-syntax-highlighter compatible with a newer ghc-lib-parser it
   # transitively pulls in
   ihaskell = super.ihaskell.overrideScope (self: super: {
-    ipython-kernel = self.ipython-kernel_0_11_0_0;
     ghc-syntax-highlighter = self.ghc-syntax-highlighter_0_0_10_0;
   });
 
-  # 2024-01-01: Too strict bounds on megaparsec
-  # Fixed in 0.2.8: https://github.com/PostgREST/configurator-pg/pull/20
-  configurator-pg = doJailbreak super.configurator-pg;
+  inherit
+    (let
+      unbreakRepa = packageName: drv: lib.pipe drv [
+        # 2023-12-23: Apply build fixes for ghc >=9.4
+        (appendPatches (lib.optionals (lib.versionAtLeast self.ghc.version "9.4") (repaPatches.${packageName} or [])))
+        # 2023-12-23: jailbreak for base <4.17, vector <0.13
+        doJailbreak
+      ];
+      # https://github.com/haskell-repa/repa/pull/27
+      repaPatches = lib.mapAttrs (relative: hash: lib.singleton (pkgs.fetchpatch {
+        name = "repa-pr-27.patch";
+        url = "https://github.com/haskell-repa/repa/pull/27/commits/40cb2866bb4da51a8cac5e3792984744a64b016e.patch";
+        inherit relative hash;
+     })) {
+        repa = "sha256-bcSnzvCJmmSBts9UQHA2dYL0Q+wXN9Fbz5LfkrmhCo8=";
+        repa-io = "sha256-KsIN7NPWCyTpVzhR+xaBKGl8vC6rYH94llvlTawSxFk=";
+        repa-examples = "sha256-//2JG1CW1h2sKS2BSJadVAujSE3v1TfS0F8zgcNkPI8=";
+        repa-algorithms = "sha256-z/a7DpT3xJrIsif4cbciYcTSjapAtCoNNVX7PrZtc4I=";
+      };
+    in
+      lib.mapAttrs unbreakRepa super)
+    repa
+    repa-io
+    repa-examples
+    repa-algorithms
+    # The following packages aren't fixed yet, sorry:
+    #   repa-array, repa-convert, repa-eval, repa-flow,
+    #   repa-query, repa-scalar, repa-store, repa-stream
+  ;
 
 } // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super