diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d3203c9e8c0e4f3ae83371d115ef83afcd7a7249..d2dda01e2cb16d5fe3a56c00045c1e42c9bce50f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,7 @@
 stages:
 - build
 - devour
+- cachix
 
 build:
   stage: build
@@ -41,3 +42,15 @@ devour:
       - SYSTEM:
          - aarch64-darwin
          - x86_64-linux
+
+cachix:
+  stage: cachix
+  rules:
+    - if: $CI_COMMIT_REF_PROTECTED == "true"
+  script:
+    - nix-shell -p cachix --command "nix build github:srid/devour-flake#packages.$SYSTEM.default -L --no-link --print-out-paths --override-input flake . | xargs cat | cachix push horizon"
+  parallel:
+    matrix:
+      - SYSTEM:
+         - aarch64-darwin
+         - x86_64-linux