diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0ba6cf93f3220d73c9b09d0ac761e07dfcfe7642..5f052047e4e4b3993ae21c7b32ee2d8ba0ab1952 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -337,8 +337,12 @@ jug_dev:
                    --build-arg S3_SECRET_KEY=${S3_SECRET_KEY}
                    --build-arg JUG_VERSION=${EXPORT_TAG}-${BUILD_TYPE}-$(git rev-parse HEAD)
                    ${IF_BUILD_DEFAULT:+
-                     --build-arg JUGGLER_VERSION=${JUGGLER_VERSION}
-                     --build-arg EICRECON_VERSION=${EICRECON_VERSION}
+                     ${JUGGLER_VERSION:+--build-arg JUGGLER_VERSION=${JUGGLER_VERSION}}
+                     ${EICRECON_VERSION:+--build-arg EICRECON_VERSION=${EICRECON_VERSION}}
+                   }
+                   ${IF_BUILD_NIGHTLY:+
+                     --build-arg JUGGLER_VERSION=main
+                     --build-arg EICRECON_VERSION=main
                    }
                    --build-arg ENV=${ENV}
                    --build-arg jobs=${JOBS}
diff --git a/containers/jug/dev.Dockerfile b/containers/jug/dev.Dockerfile
index 3993994b19ba3db40329b1d8ec4f962eb1724d4a..16fe2ab0d2626fc7a85fb5a07c5eefca659eb379 100644
--- a/containers/jug/dev.Dockerfile
+++ b/containers/jug/dev.Dockerfile
@@ -133,10 +133,6 @@ FROM spack as builder
 ## Setup our custom environment (secret mount for write-enabled mirror)
 COPY --from=spack-environment . /opt/spack-environment/
 ARG ENV=dev
-ARG JUGGLER_VERSION="main"
-ADD https://eicweb.phy.anl.gov/api/v4/projects/EIC%2Fjuggler/repository/tree?ref=${JUGGLER_VERSION} /tmp/juggler.json
-ARG EICRECON_VERSION="main"
-ADD https://api.github.com/repos/eic/eicrecon/commits/${EICRECON_VERSION} /tmp/eicrecon.json
 ENV SPACK_ENV=/opt/spack-environment/${ENV}
 RUN --mount=type=cache,target=/ccache,id=${TARGETPLATFORM}              \
     --mount=type=cache,target=/var/cache/spack                          \
@@ -147,8 +143,32 @@ export CCACHE_DIR=/ccache
 spack buildcache update-index local
 spack buildcache update-index eics3rw
 spack env activate --dir ${SPACK_ENV}
-spack add juggler@git.${JUGGLER_VERSION}
-spack add eicrecon@git.${EICRECON_VERSION}
+spack concretize --fresh --force --quiet
+make --jobs ${jobs} --keep-going --directory /opt/spack-environment SPACK_ENV=${SPACK_ENV} BUILDCACHE_MIRROR="local eics3rw"
+ccache --show-stats
+ccache --zero-stats
+EOF
+
+## Setup our custom environment with custom versions (on top of cached layer)
+ARG JUGGLER_VERSION=""
+ARG EICRECON_VERSION=""
+ADD https://eicweb.phy.anl.gov/api/v4/projects/EIC%2Fjuggler/repository/tree?ref=${JUGGLER_VERSION} /tmp/juggler.json
+ADD https://api.github.com/repos/eic/eicrecon/commits/${EICRECON_VERSION} /tmp/eicrecon.json
+RUN --mount=type=cache,target=/ccache,id=${TARGETPLATFORM}              \
+    --mount=type=cache,target=/var/cache/spack                          \
+    --mount=type=secret,id=mirrors,target=/opt/spack/etc/spack/mirrors.yaml \
+    <<EOF
+source $SPACK_ROOT/share/spack/setup-env.sh
+export CCACHE_DIR=/ccache
+spack buildcache update-index local
+spack buildcache update-index eics3rw
+spack env activate --dir ${SPACK_ENV}
+if [ -n ${JUGGLER_VERSION} ] ; then
+  spack rm juggler && spack add juggler@git.${JUGGLER_VERSION}
+fi
+if [ -n ${EICRECON_VERSION} ] ; then
+  spack rm eicrecon && spack add eicrecon@git.${EICRECON_VERSION}
+fi
 spack concretize --fresh --force --quiet
 make --jobs ${jobs} --keep-going --directory /opt/spack-environment SPACK_ENV=${SPACK_ENV} BUILDCACHE_MIRROR="local eics3rw"
 ccache --show-stats
diff --git a/spack-environment/dev/spack.yaml b/spack-environment/dev/spack.yaml
index 230fa067a16841aedc5b043e43804ebd4ae1537e..583d3532db3d51ade7e4faf3375bf825b4e4cb44 100644
--- a/spack-environment/dev/spack.yaml
+++ b/spack-environment/dev/spack.yaml
@@ -24,6 +24,7 @@ spack:
   - edm4eic
   - edm4hep
   - eic-smear
+  - eicrecon
   - eigen
   - emacs
   - fastjet
@@ -39,6 +40,7 @@ spack:
   - irt
   - iwyu
   - jana2
+  - juggler
   - lcov
   - lhapdf
   - madx
diff --git a/spack-environment/packages.yaml b/spack-environment/packages.yaml
index e026404b41886c759bd93a015c33207cde29aaa3..405e50ab64c20cbd7e6cf002ba2eefb1448d3fd7 100644
--- a/spack-environment/packages.yaml
+++ b/spack-environment/packages.yaml
@@ -92,6 +92,9 @@ packages:
   eic-smear:
     require:
     - '@1.1.12'
+  eicrecon:
+    require:
+    - '@1.6.1'
   eigen:
     require:
     - '@3.4.0'
@@ -157,6 +160,7 @@ packages:
     - -ipo +podio +root +zmq
   juggler:
     require:
+    - '@10.1.0'
     - cxxstd=20
   lapack:
     require:
diff --git a/spack-environment/prod/spack.yaml b/spack-environment/prod/spack.yaml
index 3f05ab1b4fc24dc4faf8c85edd1997749d87c85b..c56f72a99dc2fe110c2bc875f56d0e256fda8860 100644
--- a/spack-environment/prod/spack.yaml
+++ b/spack-environment/prod/spack.yaml
@@ -1,5 +1,5 @@
 spack:
-  include: 
+  include:
   - ../concretizer.yaml
   - ../packages.yaml
   config:
@@ -9,6 +9,7 @@ spack:
   - cmake
   - dd4hep -ddeve
   - edm4eic
+  - eicrecon
   - fastjet
   - fjcontrib
   - gaudi
@@ -17,6 +18,7 @@ spack:
   - intel-tbb
   - irt
   - jana2
+  - juggler
   - npsim -geocad
   - py-boto3
   - py-jinja2