diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6463b5b36178fbcbb1a6d57622dcaa987fc5c9be..f8b04d9090dba29b89d30580ed8ea5f0c4138946 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -170,7 +170,7 @@ build-spack-env-on-runner:
     - cp packages.yaml $SPACK_DEV_PATH/etc/spack/packages.yaml
     # SPACK PATCH: see https://github.com/spack/spack/pull/35290
     - sed -i 's/solver.solve(abstract_specs)/solver.solve(abstract_specs, tests=kwargs.get("tests", False))/g' $SPACK_DEV_PATH/lib/spack/spack/concretize.py
-    # the post-build logs on install-time-test-logs.txt gets ovewritten by the post-install logs.
+    # SPACK PATCH: the post-build logs on install-time-test-logs.txt gets ovewritten by the post-install logs.
     # quick fix for that: (TODO: investigate more and open PR)
     - sed -i "s/self.file_like, 'w'/self.file_like, 'a'/g" $SPACK_DEV_PATH/lib/spack/llnl/util/tty/log.py
     - |
@@ -231,30 +231,32 @@ sync-gitlab-spack-instance:
     SPACK_USER_CONFIG_PATH: $SPACK_PATH/.spack
     SPACK_REPO_PATH: $SPACK_PATH/ebrains-spack-builds
   script:
-    - echo $CI_PROJECT_NAMESPACE
+    # clone spack if it doesn't exist
     - |
       if [ ! -d $SPACK_PATH ]; then
         git clone --depth 1 -c advice.detachedHead=false -c feature.manyFiles=true --branch $SPACK_VERSION https://github.com/spack/spack $SPACK_PATH
       fi
     # SPACK PATCH: see https://github.com/spack/spack/pull/35290
     - sed -i 's/solver.solve(abstract_specs)/solver.solve(abstract_specs, tests=kwargs.get("tests", False))/g' $SPACK_PATH/lib/spack/spack/concretize.py
-    # the post-build logs on install-time-test-logs.txt gets ovewritten by the post-install logs.
+    # SPACK PATCH: the post-build logs on install-time-test-logs.txt gets ovewritten by the post-install logs.
     # quick fix for that: (TODO: investigate more and open PR)
     - sed -i "s/self.file_like, 'w'/self.file_like, 'a'/g" $SPACK_PATH/lib/spack/llnl/util/tty/log.py
+    # copy package settings
     - cp $CI_PROJECT_DIR/packages.yaml $SPACK_PATH/etc/spack/packages.yaml
+    # activate spack
     - . $SPACK_PATH/share/spack/setup-env.sh
-    # - spack bootstrap untrust github-actions
+    # install compiler (if not already installed)
+    - EBRAINS_SPACK_COMPILER=$(grep 'compiler' $CI_PROJECT_DIR/packages.yaml | awk -F'[][]' '{ print $2 }')
     - spack compiler find
-    - spack compiler list
-    - spack load gcc@10.3.0 || spack install gcc@10.3.0
-    - spack load gcc@10.3.0
+    - spack install $EBRAINS_SPACK_COMPILER
+    - spack load $EBRAINS_SPACK_COMPILER
     - spack compiler find
     - spack compiler list
-    - spack install --keep-stage python@3.8.11 %gcc@10.3.0
-    # - for section in $(spack config list); do spack config blame $section; done
+    # get latest state of EBRAINS repo
     - rm -rf $SPACK_REPO_PATH && mkdir $SPACK_REPO_PATH && cp -r -t $SPACK_REPO_PATH $CI_PROJECT_DIR/{packages,repo.yaml}
     - spack repo list | grep -q ebrains-spack-builds && echo "Repository registered already" || spack repo add $SPACK_REPO_PATH
     - spack repo list
+    # activate and update environment (and create it, if it doesn't exist)
     - spack env list | grep -q $SPACK_NFS_ENV && echo "Environment created already" || spack env create $SPACK_NFS_ENV $CI_PROJECT_DIR/spack.yaml
     - spack env activate $SPACK_NFS_ENV
     - cp $CI_PROJECT_DIR/spack.yaml $SPACK_ROOT/var/spack/environments/$SPACK_NFS_ENV/spack.yaml
@@ -262,9 +264,7 @@ sync-gitlab-spack-instance:
     # in the issue is to NOT concretize separately, but simply remove the .lock file and let the enironment be concretized by the spack install command:
     - rm $SPACK_ROOT/var/spack/environments/$SPACK_NFS_ENV/spack.lock || echo "No spack.lock file"
     - spack install -y -j2 --fresh --test root
-    - spack module tcl refresh -y
     - spack reindex
-    - spack env loads -r
   after_script:
     - mkdir spack_logs
     - |