Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion bin/omarchy-pkg-defaults
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ if [[ -z $platform ]]; then
fi

case $platform in
apple-silicon) lists=(base aarch64 apple) ;;
apple-silicon) lists=(base aarch64 apple-silicon) ;;
qualcomm) lists=(base aarch64 qualcomm) ;;
generic-aarch64) lists=(base aarch64) ;;
generic) lists=(base) ;;
Expand Down
2 changes: 1 addition & 1 deletion docs/file-layout.md
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ The package lists the ISO pacstraps live at `install/omarchy-base.packages`
and `install/omarchy-other.packages`; the ISO builder also reads them when
constructing its offline mirror.

A platform's default package set is the base list plus its architecture's and its platform's additions: `install/omarchy-aarch64.packages` on every aarch64 platform, then `install/omarchy-apple.packages` on Apple Silicon or `install/omarchy-qualcomm.packages` on Qualcomm. `omarchy-pkg-defaults [platform]` prints the composed set (for the running machine by default, via `omarchy-hw-platform`), and `omarchy-reinstall-pkgs` installs it. The pacman repositories follow the platform the same way: `default/pacman/` on x86_64, `default/pacman/aarch64/` on other aarch64 platforms, and on Apple Silicon the `omarchy-mac` package's `/usr/share/omarchy-mac/pacman/`, the only one with the Asahi repository.
A platform's default package set is the base list plus its architecture's and its platform's additions: `install/omarchy-aarch64.packages` on every aarch64 platform, then `install/omarchy-apple-silicon.packages` on Apple Silicon or `install/omarchy-qualcomm.packages` on Qualcomm. `install/omarchy-apple.packages`, its older name, is a link to it for anything on an installed system that still reads that name; the image builder reads either name from the package archive, where it passes over the link. `omarchy-pkg-defaults [platform]` prints the composed set (for the running machine by default, via `omarchy-hw-platform`), and `omarchy-reinstall-pkgs` installs it. The pacman repositories follow the platform the same way: `default/pacman/` on x86_64, `default/pacman/aarch64/` on other aarch64 platforms, and on Apple Silicon the `omarchy-mac` package's `/usr/share/omarchy-mac/pacman/`, the only one with the Asahi repository.

`omarchy-settings` ships the same files on every architecture. The platform-specific ones (the mkinitcpio, Limine, zram and oomd drop-ins) decide at runtime whether they apply; `default/settings-runtime-profile` lists each one and tells the package recipe the source works this way.

Expand Down
34 changes: 34 additions & 0 deletions install/omarchy-apple-silicon.packages
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Apple Silicon additions, composed after omarchy-base.packages and
# omarchy-aarch64.packages (omarchy-pkg-defaults apple-silicon); never on
# Intel/T2 or other ARM. Install them before omarchy-apply-system. The kernel
# and boot chain come with the image, as the kernel and bootloader do on x86_64.
# Every package an Apple hardware step installs is here too, so an image's first
# boot, often offline, finishes that setup without the network.
omarchy-mac
omarchy-mac-boot

# Picks the startup volume (macOS or Omarchy) from Linux.
asahi-bless

# Audio: PipeWire's PulseAudio server and realtime scheduling, which x86_64
# gets from its installer, and the Asahi speaker stack (omarchy-mac depends on it too).
alsa-ucm-conf-asahi
asahi-audio
pipewire-alsa
pipewire-pulse
rtkit
speakersafetyd

# The GPU's Vulkan driver (install/hardware/vulkan.sh).
vulkan-asahi

# Hardware video decode (omarchy-mac depends on it too).
avd-fw
libva-v4l2_request-avd

# Widevine for DRM streaming.
widevine

# Screen recording (omarchy-capture-screenrecording): gpu-screen-recorder finds
# no display device to capture on Apple Silicon, so Macs record with wf-recorder.
wf-recorder
34 changes: 0 additions & 34 deletions install/omarchy-apple.packages

This file was deleted.

1 change: 1 addition & 0 deletions install/omarchy-apple.packages
2 changes: 1 addition & 1 deletion test/shell.d/apple-deferred-packages-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ pass "the Apple default set carries every package an Apple hardware step install
# Dropping one of them from the Apple list is caught.
mkdir -p "$test_tmp/omarchy/install"
cp "$ROOT"/install/omarchy-{base,aarch64}.packages "$test_tmp/omarchy/install/"
grep -vx vulkan-asahi "$ROOT/install/omarchy-apple.packages" >"$test_tmp/omarchy/install/omarchy-apple.packages"
grep -vx vulkan-asahi "$ROOT/install/omarchy-apple-silicon.packages" >"$test_tmp/omarchy/install/omarchy-apple-silicon.packages"
[[ $(missing_from_defaults "$test_tmp/omarchy") == "install/hardware/vulkan.sh:vulkan-asahi" ]] ||
fail "a step package dropped from the Apple list is reported" "$(missing_from_defaults "$test_tmp/omarchy")"
pass "a step package dropped from the Apple list is reported"
Expand Down
4 changes: 2 additions & 2 deletions test/shell.d/apple-settings-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ pass 'the video decode and audio repairs set up the Mac and ask for the reboot t
# Fresh setup no longer calls omarchy-mac from the network leaf: the last
# hardware leaf runs its setup through the dispatcher.
! grep -q 'omarchy-mac' "$ROOT/install/hardware/network.sh" || fail 'the network leaf names no Apple package'
grep -Fxq omarchy-mac "$ROOT/install/omarchy-apple.packages" || fail 'Apple fresh-install inputs require the package'
grep -Fxq omarchy-mac "$ROOT/install/omarchy-apple-silicon.packages" || fail 'Apple fresh-install inputs require the package'
pass 'fresh Apple installs get omarchy-mac from the Apple list and its setup from the platform leaf'

# The Apple desktop leaves moved into omarchy-mac. What stays in the runtime
Expand All @@ -159,7 +159,7 @@ list_names() {
sed -e 's/[[:space:]]*#.*$//' -e '/^[[:space:]]*$/d' "$@"
}
for package in avd-fw libva-v4l2_request-avd; do
list_names "$ROOT/install/omarchy-apple.packages" | grep -Fxq "$package" ||
list_names "$ROOT/install/omarchy-apple-silicon.packages" | grep -Fxq "$package" ||
fail "Apple Silicon images install $package from the Apple package list"
! list_names "$ROOT/install/omarchy-base.packages" "$ROOT/install/omarchy-other.packages" | grep -Fxq "$package" ||
fail "$package stays out of the package lists every platform installs"
Expand Down
2 changes: 1 addition & 1 deletion test/shell.d/mac-boot-provider-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ printf '#!/bin/bash\nexit 0\n' >"$work/bin/omarchy-hw-apple-silicon"
chmod +x "$work/bin/omarchy-hw-apple-silicon"
export PATH="$work/bin:$PATH" OMARCHY_PATH="$work/runtime"
export OMARCHY_PROVISION_OWNER_SOURCE=1
grep -Fxq omarchy-mac-boot "$ROOT/install/omarchy-apple.packages" || fail "Apple fresh-install inputs carry the boot package"
grep -Fxq omarchy-mac-boot "$ROOT/install/omarchy-apple-silicon.packages" || fail "Apple fresh-install inputs carry the boot package"
pass "Apple installs carry the boot package their lifecycles dispatch to"
bash "$ROOT/packages/omarchy-mac/boot/install" "$work/stage"
bash -c 'source "$1"' _ "$ROOT/bin/omarchy-provision-owner"
Expand Down
15 changes: 14 additions & 1 deletion test/shell.d/platform-packages-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ for platform in apple-silicon qualcomm generic-aarch64 generic; do
if [[ $platform == "apple-silicon" ]]; then
while IFS= read -r package; do
grep -Fxq "$package" "$work/$platform.packages" || fail "Apple Silicon: $package"
done < <(names "$ROOT/install/omarchy-apple.packages")
done < <(names "$ROOT/install/omarchy-apple-silicon.packages")
else
! grep -Eq "$apple_only" "$work/$platform.packages" ||
fail "$platform: no Apple Silicon package" "$(grep -E "$apple_only" "$work/$platform.packages")"
Expand All @@ -61,6 +61,19 @@ for platform in apple-silicon qualcomm generic-aarch64 generic; do
done
pass "each platform composes base, architecture and platform lists, and only Apple Silicon names Apple packages"

# The Apple list goes by its platform's name, as upstream names it. Its older
# name stays a link to it for anything on an installed system that still reads it.
[[ -f $ROOT/install/omarchy-apple-silicon.packages && ! -L $ROOT/install/omarchy-apple-silicon.packages ]] ||
fail "the Apple list is install/omarchy-apple-silicon.packages"
[[ -L $ROOT/install/omarchy-apple.packages &&
$(readlink "$ROOT/install/omarchy-apple.packages") == omarchy-apple-silicon.packages ]] ||
fail "install/omarchy-apple.packages links to the Apple list"
mkdir -p "$work/renamed/install"
cp "$ROOT"/install/omarchy-{base,aarch64,apple-silicon}.packages "$work/renamed/install/"
[[ $(OMARCHY_PATH="$work/renamed" omarchy-pkg-defaults apple-silicon) == "$(<"$work/apple-silicon.packages")" ]] ||
fail "Apple Silicon's set comes from omarchy-apple-silicon.packages, without the older name"
pass "the Apple list is omarchy-apple-silicon.packages, and its older name links to it"

! omarchy-pkg-defaults riscv 2>/dev/null || fail "an unknown platform is refused"
pass "an unknown platform is refused"

Expand Down
2 changes: 1 addition & 1 deletion tools/package-resolution/platforms/apple/platform
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Sourced by check. Lists are relative to the repository root.
lists=(install/omarchy-base.packages install/omarchy-aarch64.packages install/omarchy-apple.packages)
lists=(install/omarchy-base.packages install/omarchy-aarch64.packages install/omarchy-apple-silicon.packages)
# The image's kernel, boot chain and Asahi platform packages.
packages=(omarchy omarchy-settings omarchy-mac-boot linux-aurora linux-aurora-headers m1n1-aurora uboot-asahi
limine limine-mkinitcpio-hook limine-snapper-sync asahi-alarm-keyring asahi-bless asahi-desktop-meta
Expand Down
Loading