diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ecd621102e87c69888c1017c2a7e9344f7226a2b..a86bf2b771a97bc2abc027b9a797dba422bf9c09 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,7 +2,7 @@ stages:
  - build
  - test
  - deploy
-
+ - publish
 
 # #################################################################################################
 # runs
@@ -369,7 +369,7 @@ deploy:docker:release:
   artifacts:
     paths:
       - "*.pkg.tar.xz*"
-    expire_in: 1 day
+    expire_in: 2 days
   variables:
     PACKAGER: "Tomáš Pecka <peckato1@fit.cvut.cz>"
 
@@ -384,3 +384,37 @@ deploy:package:release:arch:
   <<: *config_run_only_release
   before_script:
     - cp extra/distro/arch/release/PKGBUILD .
+
+# -----------------------------------------------
+
+.publish: &publish
+  stage: publish
+  when: always
+
+.publish:arch: &publish_arch
+  <<: *publish
+  image: gitlab.fit.cvut.cz:5000/algorithms-library-toolkit/ci-docker-images/archlinux-makepkg
+  environment:
+    name: package-arch-nightly
+    url: https://altrepo.pecka.me/archlinux/algorithms-library/x86_64/
+
+  before_script:
+    - pacman -Suy --noconfirm --needed openssh
+    - mkdir -p ~/.ssh && echo "$SSH_PRIV_KEY" > ~/.ssh/id_rsa && chmod 700 -R ~/.ssh
+    - eval $(ssh-agent -s)
+    - echo "$SSH_PASSPHRASE" | ssh-add ~/.ssh/id_rsa
+  script:
+    - scp -o StrictHostKeyChecking=no *.pkg.tar.xz* altrepo@pecka.me:~altrepo/tmp/
+    - ssh -o StrictHostKeyChecking=no altrepo@pecka.me add-packages arch "$GPG_KEYID" "$GPG_PASSPHRASE" *.pkg.tar.xz
+
+publish:nightly:arch:
+  <<: *publish_arch
+  <<: *config_run_only_nightly
+  dependencies:
+    - deploy:package:nightly:arch
+
+publish:release:arch:
+  <<: *publish_arch
+  <<: *config_run_only_release
+  dependencies:
+    - deploy:package:release:arch