Skip to content

omacom-io/omarchy-pkgs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Omarchy Package Repository

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).

Prerequisites

aarch64 Builds (Optional)

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: aarch64

Note: aarch64 builds use QEMU and slower than native x86_64 builds.

Quick Start

Complete Workflow

# 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-nvim

Step-by-Step

bin/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 remote

Commands

Build

bin/repo build                                   # All packages (x86_64)
bin/repo build --package yay cursor-bin          # Specific packages
bin/repo build --arch aarch64                    # ARM64

Output: Unsigned .pkg.tar.zst in build-output/

Sign

bin/repo sign

Fetches GPG key from 1Password or environment, signs all packages in build-output/.

Promote

bin/repo promote                    # Copy to production
bin/repo promote --arch aarch64     # ARM64
bin/repo promote --dry-run          # Preview

Copies signed packages from build-output/pkgs.omarchy.org/.

Clean

bin/repo clean                      # Keep 2 versions
bin/repo clean --keep 3             # Keep 3 versions
bin/repo clean --dry-run            # Preview

Removes old versions, updates database.

Sync

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 confirmation

Syncs to remote server using rclone.

Other

bin/repo list                       # List packages
bin/repo remove <package>           # Remove package
bin/repo update                     # Update database

Directory Structure

omarchy-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)

Adding Packages

From AUR

# 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-name

Local Patches for AUR Packages

Create 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 patches

Custom Package

mkdir pkgbuilds/my-package
# Add PKGBUILD and files
bin/repo release --package my-package

Architecture-Specific Notes

x86_64

  • Native builds (fast)
  • Mirrors: mirror.omarchy.org, rackspace, pkgbuild.com

aarch64

  • QEMU emulation required on x86_64 hosts (slower)
  • Uses Arch Linux ARM repositories
  • Additional repos: [alarm], [aur]
  • Same workflow, just add --arch aarch64

Building for Both Architectures

# 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/aarch64

Dependency Resolution

The build system automatically handles inter-package dependencies:

  1. Parses depends=() and makedepends=() from PKGBUILDs
  2. Builds in correct order
  3. Makes newly-built packages available via temporary [omarchy-build] repo

Example: If aether depends on hyprshade, hyprshade is built first.

Version Management

Packages are only rebuilt if:

  • PKGBUILD version is newer than repository version
  • Package doesn't exist in production

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •