diff --git a/.goreleaser.yml b/.goreleaser.yml
index c72e9af0addd2de693193d479d719e5aa3e26771..9650bf0d32d9568ab6cc78fde4312caac8956987 100644
--- a/.goreleaser.yml
+++ b/.goreleaser.yml
@@ -50,3 +50,21 @@ brews:
         type: optional
     test: |
       system "#{bin}/flux --version"
+publishers:
+  - name: aur-pkg-bin
+    ids:
+      - nix
+    cmd: |
+      eval $(ssh-agent -s)
+      ssh-add <(echo "{{ .Env.AUR_BOT_SSH_PRIVATE_KEY }}")
+      ci/aur/flux-bin/publish.sh {{ .Version }}
+  - name: aur-pkg-git
+    cmd: |
+      eval $(ssh-agent -s)
+      ssh-add <(echo "{{ .Env.AUR_BOT_SSH_PRIVATE_KEY }}")
+      ci/aur/flux-git/publish.sh {{ .Version }}
+  - name: aur-pkg-go
+    cmd: |
+      eval $(ssh-agent -s)
+      ssh-add <(echo "{{ .Env.AUR_BOT_SSH_PRIVATE_KEY }}")
+      ci/aur/flux-go/publish.sh {{ .Version }}
diff --git a/ci/aur/flux-bin/.gitignore b/ci/aur/flux-bin/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..5a6ed48b9323351d4227c19b23ac0b9f8ba1035b
--- /dev/null
+++ b/ci/aur/flux-bin/.gitignore
@@ -0,0 +1 @@
+.pkg
diff --git a/ci/aur/flux-bin/publish.sh b/ci/aur/flux-bin/publish.sh
new file mode 100755
index 0000000000000000000000000000000000000000..5451302319a58bc9cd170a0c1502322a3bd80fa1
--- /dev/null
+++ b/ci/aur/flux-bin/publish.sh
@@ -0,0 +1,46 @@
+#!/usr/bin/env bash
+
+set -e
+
+WD=$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)
+PKGNAME=$(basename $WD)
+ROOT=${WD%/ci/aur/$PKGNAME}
+
+export VERSION=$1
+echo "Publishing to AUR as version ${VERSION}"
+
+cd $WD
+
+export GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
+
+rm -rf .pkg
+git clone aur@aur.archlinux.org:$PKGNAME .pkg 2>&1
+
+CURRENT_PKGVER=$(cat .pkg/.SRCINFO | grep pkgver | awk '{ print $3 }')
+CURRENT_PKGREL=$(cat .pkg/.SRCINFO | grep pkgrel | awk '{ print $3 }')
+
+export PKGVER=${VERSION/-/}
+
+if [[ "${CURRENT_PKGVER}" == "${PKGVER}" ]]; then
+    export PKGREL=$((CURRENT_PKGREL+1))
+else
+    export PKGREL=1
+fi
+
+export SHA256SUM_ARM=$(sha256sum ${ROOT}/dist/flux_${PKGVER}_linux_arm.tar.gz | awk '{ print $1 }')
+export SHA256SUM_ARM64=$(sha256sum ${ROOT}/dist/flux_${PKGVER}_linux_arm64.tar.gz | awk '{ print $1 }')
+export SHA256SUM_AMD64=$(sha256sum ${ROOT}/dist/flux_0.4.2_linux_amd64.tar.gz | awk '{ print $1 }')
+
+envsubst '$PKGVER $PKGREL $SHA256SUM_AMD64 $SHA256SUM_ARM $SHA256SUM_ARM64' < .SRCINFO.template > .pkg/.SRCINFO
+envsubst '$PKGVER $PKGREL $SHA256SUM_AMD64 $SHA256SUM_ARM $SHA256SUM_ARM64' < PKGBUILD.template > .pkg/PKGBUILD
+
+cd .pkg
+git config user.name "fluxcdbot"
+git config user.email "fluxcdbot@users.noreply.github.com"
+git add -A
+if [ -z "$(git status --porcelain)" ]; then
+  echo "No changes."
+else
+  git commit -m "Updated to version v${PKGVER} release ${PKGREL}"
+  git push origin master
+fi
diff --git a/ci/aur/flux-git/.gitignore b/ci/aur/flux-git/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..5a6ed48b9323351d4227c19b23ac0b9f8ba1035b
--- /dev/null
+++ b/ci/aur/flux-git/.gitignore
@@ -0,0 +1 @@
+.pkg
diff --git a/ci/aur/flux-git/publish.sh b/ci/aur/flux-git/publish.sh
new file mode 100755
index 0000000000000000000000000000000000000000..bc2f21a99a63d6c11aeb43b0402f7eda0152c363
--- /dev/null
+++ b/ci/aur/flux-git/publish.sh
@@ -0,0 +1,42 @@
+#!/usr/bin/env bash
+
+set -e
+
+WD=$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)
+PKGNAME=$(basename $WD)
+ROOT=${WD%/ci/aur/$PKGNAME}
+
+export VERSION=$1
+echo "Publishing to AUR as version ${VERSION}"
+
+cd $WD
+
+export GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
+
+rm -rf .pkg
+git clone aur@aur.archlinux.org:$PKGNAME .pkg 2>&1
+
+CURRENT_PKGVER=$(cat .pkg/.SRCINFO | grep pkgver | awk '{ print $3 }')
+CURRENT_PKGREL=$(cat .pkg/.SRCINFO | grep pkgrel | awk '{ print $3 }')
+
+export PKGVER=${VERSION/-/}
+
+if [[ "${CURRENT_PKGVER}" == "${PKGVER}" ]]; then
+    export PKGREL=$((CURRENT_PKGREL+1))
+else
+    export PKGREL=1
+fi
+
+envsubst '$PKGVER $PKGREL' < .SRCINFO.template > .pkg/.SRCINFO
+envsubst '$PKGVER $PKGREL' < PKGBUILD.template > .pkg/PKGBUILD
+
+cd .pkg
+git config user.name "fluxcdbot"
+git config user.email "fluxcdbot@users.noreply.github.com"
+git add -A
+if [ -z "$(git status --porcelain)" ]; then
+  echo "No changes."
+else
+  git commit -m "Updated to version v${PKGVER} release ${PKGREL}"
+  git push origin master
+fi
diff --git a/ci/aur/flux-go/.gitignore b/ci/aur/flux-go/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..5a6ed48b9323351d4227c19b23ac0b9f8ba1035b
--- /dev/null
+++ b/ci/aur/flux-go/.gitignore
@@ -0,0 +1 @@
+.pkg
diff --git a/ci/aur/flux-go/publish.sh b/ci/aur/flux-go/publish.sh
new file mode 100755
index 0000000000000000000000000000000000000000..4c96417db410c6b97f758408941ee878b0362322
--- /dev/null
+++ b/ci/aur/flux-go/publish.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+
+set -e
+
+WD=$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)
+PKGNAME=$(basename $WD)
+ROOT=${WD%/ci/aur/$PKGNAME}
+
+export VERSION=$1
+echo "Publishing to AUR as version ${VERSION}"
+
+cd $WD
+
+export GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
+
+rm -rf .pkg
+git clone aur@aur.archlinux.org:$PKGNAME .pkg 2>&1
+
+CURRENT_PKGVER=$(cat .pkg/.SRCINFO | grep pkgver | awk '{ print $3 }')
+CURRENT_PKGREL=$(cat .pkg/.SRCINFO | grep pkgrel | awk '{ print $3 }')
+
+export PKGVER=${VERSION/-/}
+
+if [[ "${CURRENT_PKGVER}" == "${PKGVER}" ]]; then
+    export PKGREL=$((CURRENT_PKGREL+1))
+else
+    export PKGREL=1
+fi
+
+export SHA256SUM=$(curl -sL https://github.com/fluxcd/flux2/archive/v$PKGVER.tar.gz | sha256sum | awk '{ print $1 }')
+
+envsubst '$PKGVER $PKGREL $SHA256SUM' < .SRCINFO.template > .pkg/.SRCINFO
+envsubst '$PKGVER $PKGREL $SHA256SUM' < PKGBUILD.template > .pkg/PKGBUILD
+
+cd .pkg
+git config user.name "fluxcdbot"
+git config user.email "fluxcdbot@users.noreply.github.com"
+git add -A
+if [ -z "$(git status --porcelain)" ]; then
+  echo "No changes."
+else
+  git commit -m "Updated to version v${PKGVER} release ${PKGREL}"
+  git push origin master
+fi