diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 589a271c04568eb708b28b54a54a5e56cd4a7c9b..e0835946e39f98e2b34277ed57e4978c20d16bee 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -39,6 +39,9 @@ workflow:
     - if: $CI_MERGE_REQUEST_LABELS =~ /.*ci::win only.*/
       variables:
         PIPELINE_NAME: "win only MR pipeline: $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME"
+    - if: $CI_MERGE_REQUEST_LABELS =~ /.*ci::guix only.*/
+      variables:
+        PIPELINE_NAME: "guix only MR pipeline: $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME"
     - if: $CI_MERGE_REQUEST_IID # merge requests
       variables:
         PIPELINE_NAME: "MR pipeline: $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME"
@@ -73,6 +76,9 @@ include:
   - local: "/scripts/ci/pipelines/win.yml"
     rules:
       - if: $CI_MERGE_REQUEST_LABELS =~ /.*ci::win only.*/
+  - local: "/scripts/ci/pipelines/guix.yml"
+    rules:
+      - if: $CI_MERGE_REQUEST_LABELS =~ /.*ci::guix only.*/
   - local: "/scripts/ci/jobs/build-wheels.yml"
     rules:
       - if: $CI_MERGE_REQUEST_LABELS =~ /.*ci::wheels only.*/
diff --git a/scripts/ci/jobs/build-guix.yml b/scripts/ci/jobs/build-guix.yml
index 19bb0146298c4ae4e252d402b7f8002df119eab8..46a65fb621fe9ebf462e75f02d451983f0b9ecdb 100644
--- a/scripts/ci/jobs/build-guix.yml
+++ b/scripts/ci/jobs/build-guix.yml
@@ -12,14 +12,21 @@ build guix:
   rules:
     - if: '$CI_COMMIT_BRANCH == "master"'
       allow_failure: true
+    - if: $CI_MERGE_REQUEST_LABELS =~ /.*ci::guix only.*/
     - when: manual
       allow_failure: true
   script:
     - which guix
     - guix describe
     # SteadyStateDiffusion only!
-    - guix build --fallback -L $PWD/.guix/modules ogs-ssd
-    - guix build --fallback -L $PWD/.guix/modules ogs-petsc-ssd
+    - |
+      if [[ "$CI_MERGE_REQUEST_LABELS" =~ .*ci::guix\ only.* ]]; then
+        guix build --fallback -L $PWD/.guix/modules ogs
+        guix build --fallback -L $PWD/.guix/modules ogs-petsc
+      else
+        guix build --fallback -L $PWD/.guix/modules ogs-ssd
+        guix build --fallback -L $PWD/.guix/modules ogs-petsc-ssd
+      fi
 
 deploy guix container eve:
   stage: build
diff --git a/scripts/ci/pipelines/guix.yml b/scripts/ci/pipelines/guix.yml
new file mode 100644
index 0000000000000000000000000000000000000000..3ac17534fc0feec3d7a9969b54cc83f4b84c8858
--- /dev/null
+++ b/scripts/ci/pipelines/guix.yml
@@ -0,0 +1,3 @@
+include:
+  - local: "/scripts/ci/extends/*.yml"
+  - local: "/scripts/ci/jobs/build-guix.yml"