Build system for the Omarchy Package Repository. Builds PKGBUILDs from local sources and AUR, signs them, and syncs to production.
Multi-Architecture: Supports both x86_64 and aarch64 (ARM64).
To build ARM64 packages on x86_64, enable QEMU emulation:
# Run after each reboot
docker run --privileged --rm tonistiigi/binfmt --install arm64
# Verify
docker run --rm --platform linux/arm64 alpine:latest uname -m
# Should output: aarch64Note: aarch64 builds use QEMU and slower than native x86_64 builds.
# Build, sign, promote, clean, and sync
bin/repo release
# Single package
bin/repo release --package omarchy-nvim
# ARM64
bin/repo release --arch aarch64 --package omarchy-nvimbin/repo build # Build (unsigned)
bin/repo sign # Sign packages
bin/repo promote # Copy to production
bin/repo clean # Remove old versions
bin/repo sync pkgs.omarchy.org/x86_64 # Sync to remotebin/repo build # All packages (x86_64)
bin/repo build --package yay cursor-bin # Specific packages
bin/repo build --arch aarch64 # ARM64Output: Unsigned .pkg.tar.zst in build-output/
bin/repo signFetches GPG key from 1Password or environment, signs all packages in build-output/.
bin/repo promote # Copy to production
bin/repo promote --arch aarch64 # ARM64
bin/repo promote --dry-run # PreviewCopies signed packages from build-output/ → pkgs.omarchy.org/.
bin/repo clean # Keep 2 versions
bin/repo clean --keep 3 # Keep 3 versions
bin/repo clean --dry-run # PreviewRemoves old versions, updates database.
bin/repo sync pkgs.omarchy.org/x86_64 # Production
bin/repo sync pkgs.omarchy.org/aarch64 # ARM64
bin/repo sync pkgs.omarchy.org/x86_64 --skip-prod-check # No confirmationSyncs to remote server using rclone.
bin/repo list # List packages
bin/repo remove <package> # Remove package
bin/repo update # Update databaseomarchy-pkgs/
├── pkgbuilds/ # Source PKGBUILDs
├── build-output/ # Unsigned packages (temporary)
│ ├── x86_64/
│ └── aarch64/
├── pkgs.omarchy.org/ # Signed packages (production)
│ ├── x86_64/
│ └── aarch64/
├── build/ # Build scripts (in container)
└── bin/ # CLI tools (on host)
# Add to sync list
echo "package-name" >> build/packages/omarchy-aur.packages
# Sync PKGBUILD
bin/sync-aur package-name
# Build and release
bin/repo release --package package-nameCreate pkgbuilds/package-name/patches/*.patch to maintain modifications across AUR syncs:
cd pkgbuilds/package-name
# Make changes
git diff > patches/my-fix.patch
# Next sync will auto-apply patchesmkdir pkgbuilds/my-package
# Add PKGBUILD and files
bin/repo release --package my-package- Native builds (fast)
- Mirrors: mirror.omarchy.org, rackspace, pkgbuild.com
- QEMU emulation required on x86_64 hosts (slower)
- Uses Arch Linux ARM repositories
- Additional repos:
[alarm],[aur] - Same workflow, just add
--arch aarch64
# Build x86_64
bin/repo release --package myapp
# Build aarch64
bin/repo release --arch aarch64 --package myapp
# Sync both
bin/repo sync pkgs.omarchy.org/x86_64
bin/repo sync pkgs.omarchy.org/aarch64The build system automatically handles inter-package dependencies:
- Parses
depends=()andmakedepends=()from PKGBUILDs - Builds in correct order
- Makes newly-built packages available via temporary
[omarchy-build]repo
Example: If aether depends on hyprshade, hyprshade is built first.
Packages are only rebuilt if:
- PKGBUILD version is newer than repository version
- Package doesn't exist in production