diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3e78fd689711ebe93c6ed5534b74400507f68f2d..62cb1466c013b53079171a15508f76fd327fa554 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,6 +15,15 @@
 # can trigger a multi-project pipeline, specifying a GHC binary distribution
 # via either the GHC_TARBALL or UPSTREAM_* variables.
 
+# Prevent duplicate pipelines for merge requests. :/
+workflow:
+  rules:
+    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
+    - if: $CI_PIPELINE_SOURCE == "pipeline" # Triggered by GHC
+    - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
+      when: never
+    - if: $CI_COMMIT_BRANCH
+
 stages:
   - test
   - update-repo