diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f1ffd16771e7cad5468c3f6be4a3e97b4495f65d
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,37 @@
+variables:
+  GIT_SUBMODULE_STRATEGY: recursive
+  GIT_SUBMODULE_PATHS: micropython/lib/berkeley-db-1.xx micropython/lib/micropython-lib
+
+
+stages:
+  - build
+
+build-p1:
+  stage: build
+  tags:
+    - nixos
+  script:
+    - nix-shell nix/shell.nix --command "idf.py -g p1 build"
+  artifacts:
+    expose_as: 'Proto 1 ELF'
+    paths: ['build/badge23.elf']
+
+build-p3:
+  stage: build
+  tags:
+    - nixos
+  script:
+    - nix-shell nix/shell.nix --command "idf.py -g p3 build"
+  artifacts:
+    expose_as: 'Proto 3 ELF'
+    paths: ['build/badge23.elf']
+
+build-p4:
+  stage: build
+  tags:
+    - nixos
+  script:
+    - nix-shell nix/shell.nix --command "idf.py -g p4 build"
+  artifacts:
+    expose_as: 'Proto 4 ELF'
+    paths: ['build/badge23.elf']