# Maintainer: Marcelo Alcantara <maralc@gmail.com>
# Recipe from maralcbr/omarchy-pkgs asahi-quattro pkgbuilds/omarchy-mac-boot
# (20260921-10 at 0a55baeddecf59687c32b4bd4e1dee743605c183); the payload now
# builds from packages/omarchy-mac/boot in omacom/omarchy-mac.

pkgname=omarchy-mac-boot
# pkgver is the UTC commit date of _commit, so it sorts above the fork's
# 20260921-N. Reset pkgrel to 1 when pkgver changes; bump it to re-pin or
# rebuild on the same day.
pkgver=20260927
pkgrel=1
pkgdesc='Apple Silicon boot support for Omarchy: initramfs, in-place encryption, first boot and Limine activation'
arch=('aarch64')
groups=('omarchy-platform-apple-silicon')
url='https://github.com/omacom/omarchy-mac'
license=('MIT')
makedepends=('git')
provides=('omarchy-apple-boot' 'omarchy-first-boot')
conflicts=('omarchy-apple-boot' 'omarchy-first-boot')
replaces=('omarchy-apple-boot' 'omarchy-first-boot')
install=omarchy-mac-boot.install
# An exact omarchy-mac commit, never a branch.
_commit=ff7ce0d4dfaea9e17270b3061e642ee095b7b265
source=("omarchy-mac::git+https://github.com/omacom/omarchy-mac.git#commit=${_commit}")
sha256sums=('7530c284cd323d451540205c0a677c4e187070f0b8c4081a2e85f487f2ebb985')

prepare() {
  # Staging must not be able to read the surrounding desktop source.
  rm -rf "$srcdir/boot"
  cp -a "$srcdir/omarchy-mac/packages/omarchy-mac/boot" "$srcdir/boot"
  [[ $(git -C "$srcdir/omarchy-mac" rev-parse HEAD) == "$_commit" ]]
  [[ $(TZ=UTC0 git -C "$srcdir/omarchy-mac" show -s --format=%cd --date=format-local:%Y%m%d HEAD) == "$pkgver" ]]
}

# The tests run in the checkout: some compare the payload with the desktop
# source around it (the HOOKS baseline in etc/, the first-run user units and the
# default package lists, from omacom/omarchy-mac#582 and #598).
check() {
  "$srcdir/omarchy-mac/packages/omarchy-mac/boot/test/all"
}

package() {
  # Runtime-only, so the builder stages and tests the payload without the
  # desktop or a boot chain. 1.39.0-2 is the first limine-mkinitcpio-hook that
  # leaves a Mac's /boot to mkinitcpio until Limine is activated.
  depends=('omarchy' 'limine' 'limine-mkinitcpio-hook>=1.39.0-2' 'limine-snapper-sync' 'asahi-scripts'
           'bash' 'binutils' 'btrfs-progs' 'coreutils' 'cpio' 'cryptsetup' 'diffutils' 'gawk' 'gnupg' 'grep'
           'gum' 'gzip' 'kbd' 'mkinitcpio' 'sed' 'systemd' 'util-linux')

  "$srcdir/boot/install" "$pkgdir"
  # Once the source drops its own Plymouth fragment (omacom/omarchy-mac#544),
  # the Apple drop-ins build on omarchy-settings' HOOKS baseline
  # (/etc/mkinitcpio.conf.d/00-omarchy-hooks.conf, omacom/omarchy-mac#536), and
  # an older settings package leaves Plymouth out of the Mac initramfs. A
  # settings version cannot say so (quattro candidates sort below stock
  # releases, and omarchy pins its settings exactly), so the settings packages
  # that ship the baseline provide it by name.
  [[ -e $pkgdir/etc/mkinitcpio.conf.d/93-omarchy-mac-plymouth.conf ]] ||
    depends+=('omarchy-mkinitcpio-hooks-baseline')
  printf '%s\n' "$_commit" | install -Dm644 /dev/stdin "$pkgdir/usr/share/omarchy-mac/boot-source-revision"

  # Administrator-editable: every /etc file and the initramfs helpers an image
  # may rewrite.
  mapfile -t backup < <(cd "$pkgdir" && find etc usr/lib/omarchy/initcpio -type f | sort)
}
