Goal
Make dfetch installable via the Arch User Repository (AUR) so Arch Linux users can install it with their preferred AUR helper (e.g. yay -S dfetch-bin).
Background
dfetch already builds a self-contained binary via Nuitka and produces an .rpm/.deb on every release (see build.yml). The AUR is the lowest-friction first step into distro packaging because:
- No build server is needed — the
PKGBUILD can reference the pre-built binary from a GitHub Release tarball.
- The
-bin naming convention is well-understood by Arch users.
- Updates can be fully automated from CI on each release.
Suggested plan
1. Create aur/PKGBUILD
Add an aur/ directory to the repo containing a PKGBUILD for an dfetch-bin package:
# Maintainer: dfetch-org
pkgname=dfetch-bin
pkgver=0.14.2 # updated by CI
pkgrel=1
pkgdesc="Vendor tool for fetching external dependencies"
arch=('x86_64')
url="https://github.com/dfetch-org/dfetch"
license=('MIT')
provides=('dfetch')
conflicts=('dfetch')
source=("https://github.com/dfetch-org/dfetch/releases/download/${pkgver}/dfetch-${pkgver}-nix.tar.gz")
sha256sums=('SKIP') # replaced by CI with real checksum
package() {
install -Dm755 dfetch "$pkgdir/usr/bin/dfetch"
}
The exact source URL and archive layout will depend on what's inside the release tarball — adjust once confirmed.
2. Add .SRCINFO
AUR requires a .SRCINFO alongside PKGBUILD. Generate it with makepkg --printsrcinfo > .SRCINFO.
3. Create an AUR SSH deploy key
- Generate an SSH key pair.
- Add the public key to the AUR account for
dfetch-org.
- Store the private key as
AUR_SSH_KEY in GitHub repo secrets (under an aur environment).
4. Add aur-publish.yml workflow
Trigger on release: [published], skipping the rolling latest tag:
name: Publish to AUR
on:
release:
types: [published]
workflow_dispatch:
inputs:
release-tag:
description: 'Release tag (e.g. 0.14.2)'
required: true
jobs:
publish:
if: >-
github.event_name != 'release' ||
github.event.release.tag_name != 'latest'
runs-on: ubuntu-latest
environment:
name: aur
url: https://aur.archlinux.org/packages/dfetch-bin
steps:
- uses: actions/checkout@...
- name: Update pkgver and checksums
run: |
TAG=${{ github.event.release.tag_name || inputs.release-tag }}
URL="https://github.com/dfetch-org/dfetch/releases/download/${TAG}/dfetch-${TAG}-nix.tar.gz"
SHA256=$(curl -sL "$URL" | sha256sum | awk '{print $1}')
sed -i "s/^pkgver=.*/pkgver=${TAG}/" aur/PKGBUILD
sed -i "s/^sha256sums=.*/sha256sums=('${SHA256}')/" aur/PKGBUILD
(cd aur && makepkg --printsrcinfo > .SRCINFO)
- name: Publish to AUR
uses: KSXGitHub/github-actions-deploy-aur@...
with:
pkgname: dfetch-bin
pkgbuild: ./aur/PKGBUILD
commit_username: dfetch-bot
commit_email: bot@dfetch.dev
ssh_private_key: ${{ secrets.AUR_SSH_KEY }}
commit_message: "Update to ${{ github.event.release.tag_name || inputs.release-tag }}"
5. Test locally before first publish
cd aur
makepkg -si # builds and installs locally
Acceptance criteria
Goal
Make
dfetchinstallable via the Arch User Repository (AUR) so Arch Linux users can install it with their preferred AUR helper (e.g.yay -S dfetch-bin).Background
dfetch already builds a self-contained binary via Nuitka and produces an
.rpm/.debon every release (seebuild.yml). The AUR is the lowest-friction first step into distro packaging because:PKGBUILDcan reference the pre-built binary from a GitHub Release tarball.-binnaming convention is well-understood by Arch users.Suggested plan
1. Create
aur/PKGBUILDAdd an
aur/directory to the repo containing aPKGBUILDfor andfetch-binpackage:2. Add
.SRCINFOAUR requires a
.SRCINFOalongsidePKGBUILD. Generate it withmakepkg --printsrcinfo > .SRCINFO.3. Create an AUR SSH deploy key
dfetch-org.AUR_SSH_KEYin GitHub repo secrets (under anaurenvironment).4. Add
aur-publish.ymlworkflowTrigger on
release: [published], skipping the rollinglatesttag:5. Test locally before first publish
Acceptance criteria
yay -S dfetch-bininstalls a workingdfetchbinary on Arch Linuxlatesttag