diff --git a/.devcontainer/VERSION_MATRIX.md b/.devcontainer/VERSION_MATRIX.md
index c58adf127ab170e510836d387a2923d01bc5bab0..247801ac2778034760fedb4b26a0e5d830b9edc1 100644
--- a/.devcontainer/VERSION_MATRIX.md
+++ b/.devcontainer/VERSION_MATRIX.md
@@ -4,7 +4,7 @@
 
 | GHC                           | Cabal[^1] | Stack[^1] | HLS                                      |
 |:------------------------------|:----------|:----------|:---------------------------------------- |
-| latest<br>9.10.1<br>9.10<br>9 | 3.11.0.0  | ≥ 2.13.1  | latest<br>2.9.0.0                        |
+| latest<br>9.10.1<br>9.10<br>9 | 3.12.1.0  | ≥ 2.13.1  | latest<br>2.9.0.0                        |
 | 9.8.2<br>9.8                  | 3.10.3.0  | ≥ 2.13.1  | 2.9.0.0<br>2.8.0.0<br>2.7.0.0<br>2.6.0.0 |
 | 9.6.5<br>9.6                  | 3.10.3.0  | ≥ 2.13.1  | 2.9.0.0<br>2.8.0.0<br>2.7.0.0            |
 
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c4e42a0ff6c65e73aed9b46503aafdbc1fd4f9bc..1aeadb0f91b855ae9288a0c57a77063d72b62159 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,10 +1,10 @@
 .env:
   variables:
     GHC_VERSION: "9.10.1"
-    CABAL_VERSION: "3.12.0.0-prerelease"
+    CABAL_VERSION: "3.12.1.0"
     STACK_VERSION: "2.15.7"
     HLS_VERSION: "2.9.0.0"
-    BUILD_GHC: "false"
+    BUILD_GHC: "true"
     BUILD_HLS: "true"
     TAG_VERSION_MAJ_MIN: "false"
     TAG_VERSION_MAJ: "false"
diff --git a/README.md b/README.md
index 69193c694bd26c081b306da0e1a7ef0b97839dad..e474188d1235f91ee93b9b129c653930e63808b6 100644
--- a/README.md
+++ b/README.md
@@ -54,7 +54,7 @@ To install docker, follow the instructions for your platform:
 ```bash
 docker build \
   --build-arg GHC_VERSION=9.10.1 \
-  --build-arg CABAL_VERSION=3.12.0.0-prerelease \
+  --build-arg CABAL_VERSION=3.12.1.0 \
   --build-arg STACK_VERSION=2.15.7 \
   -t ghc-musl \
   -f latest.Dockerfile .
diff --git a/VERSION_MATRIX.md b/VERSION_MATRIX.md
index 9cb62647efb3a96628803bd2d89026cdc910df30..33d99c147b08c0e626325c61a4dc26e6a02035f9 100644
--- a/VERSION_MATRIX.md
+++ b/VERSION_MATRIX.md
@@ -4,7 +4,7 @@ Topmost entry = Tag `latest`
 
 | GHC        | Cabal    | Stack      | LLVM | Linux distro |
 |:-----------|:---------|:-----------|:---- |:-------------|
-| 9.10.1     | 3.11.0.0 | 2.15.7     | 18   | Alpine 3.20  |
+| 9.10.1     | 3.12.1.0 | 2.15.7     | 18   | Alpine 3.20  |
 | 9.8.2      | 3.10.3.0 | 2.15.7     | 16   | Alpine 3.20  |
 | 9.8.1      | 3.10.2.1 | 2.15.1     | 14   | Alpine 3.19  |
 | 9.6.5      | 3.10.3.0 | 2.15.7     | 16   | Alpine 3.20  |
diff --git a/latest.Dockerfile b/latest.Dockerfile
index 7c073f6e979bb0c5c19157556ecb16322a8cadc2..a764cd68606a3396429e2658cdf500a287499a31 100644
--- a/latest.Dockerfile
+++ b/latest.Dockerfile
@@ -73,7 +73,7 @@ ENV CABAL_VERSION=${CABAL_VERSION_BUILD}
 ## Build Cabal (the tool) with the GHC bootstrap version
 RUN cabal update \
   ## See https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history
-  && cabal install cabal-install-3.10.3.0
+  && cabal install "cabal-install-$CABAL_VERSION"
 
 FROM alpine:3.20 as ghc-base
 
@@ -151,14 +151,8 @@ FROM ghc-stage1 as ghc-stage2
 COPY --from=bootstrap-cabal /root/.local/bin/cabal /usr/local/bin/cabal
 
 ## Rebuild Cabal (the tool) with the GHC target version
-RUN cd /tmp \
-  && curl -sSLO https://github.com/haskell/cabal/archive/refs/tags/cabal-install-v"$CABAL_VERSION".tar.gz \
-  && tar -xzf cabal-install-v"$CABAL_VERSION".tar.gz \
-  && cd cabal-cabal-install-v"$CABAL_VERSION" \
-  && sed -i 's/2024-03-20T08:02:24Z/2024-04-02T17:52:00Z/g' cabal.project.release \
-  && sed -i 's/hashable   >= 1.0      /hashable   >= 1.4.4.0  /g' cabal-install/cabal-install.cabal \
-  && cabal update \
-  && cabal install --project-file=cabal.project.release --allow-newer cabal-install
+RUN cabal update \
+  && cabal install "cabal-install-$CABAL_VERSION"
 
 FROM ghc-stage1 as test