# Maintainer: Ryan Hughes pkgname='omarchy-dev' pkgver=4.0.0.r847.g4de185b pkgrel=1 _pkgver_base=4.0.0 _pkgver_base_tag=v3.8.2 pkgdesc='Beautiful, modern, and opinionated Arch Linux by DHH (quattro branch tip)' arch=('any') url='https://github.com/basecamp/omarchy' license=('MIT') provides=('omarchy') conflicts=('omarchy') # Hard depends: only packages whose removal would brick the desktop. The ISO # pacstraps the full default install set from install/omarchy-base.packages. depends=( # Omarchy meta 'omarchy-keyring' 'omarchy-settings-dev' # Bootloader stack. Lives here rather than on omarchy-settings because # omarchy-settings is also installed into the live ISO env (for plymouth # / /etc/skel seeding), where the limine-mkinitcpio-hook would fail with # 'Cannot detect an ESP path' inside the chroot. The omarchy-settings # config drop-ins under /etc/mkinitcpio.conf.d/, /etc/limine-entry-tool.d/, # and /etc/snapper/config-templates/ only do anything when these are # installed alongside. 'limine' 'limine-mkinitcpio-hook' 'limine-snapper-sync' 'snapper' # Wayland / Hyprland core 'hyprland' 'quickshell' 'uwsm' 'sddm' 'xdg-desktop-portal-hyprland' # Audio / auth / portal essentials 'wireplumber' 'pipewire' 'gnome-keyring' # Required by omarchy-* scripts and omarchy-shell 'gum' 'jq' 'git' 'perl' # /usr/bin/omarchy-shell invokes perl directly # Update availability checks (checkupdates from pacman-contrib uses fakeroot) 'fakeroot' 'pacman-contrib' # System font (UI assumes it) 'ttf-jetbrains-mono-nerd-basic' ) makedepends=( 'git' ) # Source: quattro branch tip by default; set OMARCHY_SRC=/path/to/checkout # to build from a local source tree instead (mirrors omarchy-zsh/omarchy-fish DX). if [[ -n "${OMARCHY_SRC:-}" ]]; then source=() sha256sums=() else source=("omarchy::git+https://github.com/basecamp/omarchy.git#branch=quattro") sha256sums=('SKIP') fi pkgver() { cd "$srcdir/omarchy" local commit_count commit_hash if git rev-parse --verify "${_pkgver_base_tag}^{commit}" >/dev/null 2>&1; then commit_count=$(git rev-list --count "${_pkgver_base_tag}..HEAD") else commit_count=$(git rev-list --count HEAD) fi commit_hash=$(git rev-parse --short=7 HEAD) printf "%s.r%s.g%s" "$_pkgver_base" "$commit_count" "$commit_hash" } prepare() { if [[ -n "${OMARCHY_SRC:-}" ]]; then rm -rf "$srcdir/omarchy" mkdir -p "$srcdir/omarchy" cp -a "${OMARCHY_SRC}/." "$srcdir/omarchy/" fi } package() { cd "$srcdir/omarchy" # Runtime binaries — ship everything in bin/ except the debug helpers # that ship from omarchy-settings (needed before omarchy is installed, # e.g. on the ISO live env). install -d "$pkgdir/usr/bin" "$pkgdir/usr/share/omarchy/bin" for bin in bin/*; do [[ -f $bin ]] || continue local base base=$(basename "$bin") case "$base" in omarchy-debug|omarchy-debug-idle|omarchy-upload-log) continue ;; esac install -Dm755 "$bin" "$pkgdir/usr/bin/$base" ln -s "/usr/bin/$base" "$pkgdir/usr/share/omarchy/bin/$base" done install -d "$pkgdir/usr/share/omarchy" # Guard direct pacman upgrades from bypassing the Omarchy update pipeline, # and pause Hyprland live config reloads while settings files are replaced. # Ship hooks with their Exec targets so package skew cannot leave a broken # hook pointing at a missing binary. install -Dm644 default/libalpm/hooks/00-omarchy-update-guard.hook "$pkgdir/usr/share/libalpm/hooks/00-omarchy-update-guard.hook" install -Dm644 default/libalpm/hooks/10-omarchy-hyprland-reload-pause.hook "$pkgdir/usr/share/libalpm/hooks/10-omarchy-hyprland-reload-pause.hook" install -Dm644 default/libalpm/hooks/90-omarchy-hyprland-reload-resume.hook "$pkgdir/usr/share/libalpm/hooks/90-omarchy-hyprland-reload-resume.hook" # Target-side setup scripts and package lists used by ISO finalization, # first login, future users, migrations, and reinstall/reset commands. cp -a install "$pkgdir/usr/share/omarchy/" # Theme bundles for theme switching. cp -a themes "$pkgdir/usr/share/omarchy/" # Versioned migrations runner reads from this tree. cp -a migrations "$pkgdir/usr/share/omarchy/" # Fresh users created after install are already on the package layout in this # build, so seed migration markers through /etc/skel. Existing users keep # their own state and still run pending migrations on update. if compgen -G 'migrations/*.sh' >/dev/null; then install -d "$pkgdir/etc/skel/.local/state/omarchy/migrations" for migration in migrations/*.sh; do touch "$pkgdir/etc/skel/.local/state/omarchy/migrations/$(basename "$migration")" done fi # Quickshell desktop shell tree. cp -a shell "$pkgdir/usr/share/omarchy/" # Runtime version file. install -Dm644 version "$pkgdir/usr/share/omarchy/version" }