diff --git a/.gitlab/ci.sh b/.gitlab/ci.sh
index 39845ba5caeec330c96161bb661fd204b69df50a..d37e7dae09304d55622ae411f22034984e1812f9 100755
--- a/.gitlab/ci.sh
+++ b/.gitlab/ci.sh
@@ -7,7 +7,7 @@
 set -Eeuo pipefail
 
 # Configuration:
-HACKAGE_INDEX_STATE="2023-10-05T11:38:51Z"
+HACKAGE_INDEX_STATE="2024-05-13T15:04:38Z"
 MIN_HAPPY_VERSION="1.20"
 MIN_ALEX_VERSION="3.2.6"
 
diff --git a/hadrian/cabal.project b/hadrian/cabal.project
index 6666af00e141f45903f196649bb3f89dd389ea75..9ac97f54e7baa69bd132602b0a4dfbf79e31f9ae 100644
--- a/hadrian/cabal.project
+++ b/hadrian/cabal.project
@@ -4,7 +4,11 @@ packages: ./
 
 -- This essentially freezes the build plan for hadrian
 -- It would be wise to keep this up to date with the state set in ci.sh
-index-state: 2023-10-05T11:38:51Z
+index-state: 2024-05-13T15:04:38Z
+
+-- unordered-containers-0.2.20-r1 requires template-haskell < 2.22
+-- ghc-9.10 has template-haskell-2.22.0.0
+allow-newer: unordered-containers:template-haskell
 
 -- N.B. Compile with -O0 since this is not a performance-critical executable
 -- and the Cabal takes nearly twice as long to build with -O1. See #16817.
diff --git a/hadrian/hadrian.cabal b/hadrian/hadrian.cabal
index db888b7cedc38866ec349faabaa582234af8c167..deb0d16d913592362fbb42b03c426e35573ec940 100644
--- a/hadrian/hadrian.cabal
+++ b/hadrian/hadrian.cabal
@@ -155,7 +155,7 @@ executable hadrian
     build-depends:       Cabal                >= 3.10    && < 3.11
                        , base                 >= 4.11    && < 5
                        , bytestring           >= 0.10    && < 0.13
-                       , containers           >= 0.5     && < 0.7
+                       , containers           >= 0.5     && < 0.8
                        , directory            >= 1.3.1.0 && < 1.4
                        , extra                >= 1.4.7
                        , filepath