diff --git a/ci/build-repo.sh b/ci/build-repo.sh
index 080ff66c1432c796ffa31918213a8703fac39a15..a741b7015d39e9848913840505f72e03fdda1c4f 100755
--- a/ci/build-repo.sh
+++ b/ci/build-repo.sh
@@ -173,7 +173,14 @@ build_repo() {
   cabal update
   cabal fetch acme-box-0.0.0.0
   mkdir -p repo/package
-  cp $HOME/.cabal/packages/hackage.haskell.org/acme-box/0.0.0.0/acme-box-0.0.0.0.tar.gz repo/package
+
+  # if ~/.cabal exists cabal-install will use that, otherwise packages go into $XDG_CACHE_HOME/cabal
+  if [ -d "$HOME/.cabal" ]; then
+    cp "$HOME/.cabal/packages/hackage.haskell.org/acme-box/0.0.0.0/acme-box-0.0.0.0.tar.gz" repo/package
+  else
+    cp "${XDG_CACHE_HOME:-$HOME/.cache}/cabal/packages/hackage.haskell.org/acme-box/0.0.0.0/acme-box-0.0.0.0.tar.gz" repo/package
+  fi
+
 
   log "Bootstrapping repository..."
   hackage-repo-tool bootstrap --keys=./keys --repo=./repo