diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 8488cf15e47dd4e4d327bbb7878b998c1691d96f..3449776e00947baececdfc26e07e165aa37359b6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -21,6 +21,17 @@ unit-tests:
     - "nix-shell --run 'nix-build nixos/unit-tests.nix' && cat result"
 
 morph-builds:
+  tags:
+    # Run this job in a Docker container so that it won't have the system
+    # /nix/store so that it has to build everything.  This is necessary so
+    # that the logic below that chooses what to send to cachix catches all our
+    # stuff.  Anything that exists in /nix/store at the beginning of the job
+    # won't be cached.  Also there are issues with any concurrent builds
+    # sharing /nix/store.
+    #
+    # This is far from ideal but maybe it's a tolerable hack for now.
+    - "nixos"
+    - "docker"
   stage: "test"
   variables:
     # CACHIX_AUTH_TOKEN, which lets us push to cachix, is supplied by GitLab