diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b6e31bf75ac3ebf8f7386712659b7f31d0b817c3..511e7d0f285359d8aad30205c229d2b133f8ef53 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -5,8 +5,8 @@ variables:
   DOCKER_REV: 6ceb0cecaeefd4927b26c054e4897724986078c8
 
   # Sequential version number capturing the versions of all tools fetched by
-  # .gitlab/ci.sh.
-  WINDOWS_TOOLCHAIN_VERSION: 3
+  # .gitlab/ci.sh. Used for invalidation of GitLab CI cache.
+  WINDOWS_TOOLCHAIN_VERSION: 4
 
   # Disable shallow clones; they break our linting rules
   GIT_DEPTH: 0
diff --git a/configure.ac b/configure.ac
index 3d0bbac7eda95bfa18bb2adbcd92f85915a58858..c7ec5556b076711fcfb631ddbb1fd2fdf5e84eb2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -417,7 +417,8 @@ set_up_tarballs() {
         rm -rf inplace/mingw
         local base_dir="../ghc-tarballs/${tarball_dest_dir}"
         ( cd inplace &&
-        find "${base_dir}" -name "*.tar.xz" -exec tar xfJ {} \; &&
+        find "${base_dir}" -name "*.tar.xz" -exec tar --xz -xf {} \; &&
+        find "${base_dir}" -name "*.tar.zst" -exec tar --zstd -xf {} \; &&
         rm ".MTREE" &&
         rm ".PKGINFO" &&
         cd .. ) || AC_MSG_ERROR([Could not extract Windows toolchains.])