diff --git a/.circleci/config.yml b/.circleci/config.yml
index d85a3bd087569cac2955403f94e4278f7b980951..e107b78fbb24cbe474d5393ae5ab30794fa541d7 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -139,8 +139,6 @@ jobs:
       # Run in a highly Nix-capable environment.
       - image: "nixorg/nix:circleci"
 
-    resource_class: "xlarge"
-
     environment:
       # Specify a revision of PrivateStorageio/nixpkgs to run against.  This
       # essentially pins the majority of the software involved in the build.
@@ -203,12 +201,16 @@ jobs:
       - run:
           name: "Build challenge-bypass-ristretto"
           command: |
-            nix-build --cores 4 --max-jobs 4 \
+            # Pre-build this because doing so is somewhat memory intensive and
+            # we want to turn off concurrency for this part.  We want to be
+            # able to leave concurrency on for the rest of the build, though,
+            nix-build --cores 1 --max-jobs 1 \
               --arg callPackage '(import <nixpkgs> { }).callPackage' \
               ./python-challenge-bypass-ristretto.nix
 
       - save_cache:
           name: "Cache Nix Store Paths"
+          when: "always"
           key: zkapauthorizer-nix-store-v4-{{ checksum "nixpkgs.rev" }}
           paths:
             - "/nix"
@@ -226,10 +228,14 @@ jobs:
             #
             # Further, we want the "doc" output built as well because that's
             # where the coverage data ends up.
-            nix-build --max-jobs 4 --cores 4 --argstr hypothesisProfile ci --arg collectCoverage true --attr doc
+            nix-build \
+              --argstr hypothesisProfile ci \
+              --arg collectCoverage true \
+              --attr doc
 
       - save_cache:
           name: "Cache Nix Store Paths"
+          when: "always"
           key: zkapauthorizer-nix-store-v4-{{ checksum "nixpkgs.rev" }}-ourdeps
           paths:
             - "/nix"