Replies: 1 comment
|
Update — a smaller image, and two bugs fixed. There is now a It is 45% smaller than the first upload, and nothing you would use was removed — More importantly it fixes two notifications that never went away:
Already downloaded the first one? You don't need to fetch 3.6 GB again — run curl -fsSL https://raw.githubusercontent.com/ggalancs/omarchy-arm-utm/main/fixes/18-avisos-que-no-se-apagan.sh | bashThe original |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Every guide I could find for running Omarchy in a VM on an M-series Mac
stops at 3.x or earlier. #452, the thread everyone lands on, was written in the
1.x days — August 2025, Parallels, bootstrapping Arch from an Ubuntu live
session — and the freshest thing in its comments is jondkinney's 3.x fork and
PR #1897, Add aarch64 support for Omarchy 3.x. On bare metal it's a different
story (see prior art below), but that needs an M1 or M2.
I wanted 4, in a VM, on newer silicon, and hit a wall worth writing down — so I
automated the whole thing:
https://github.com/ggalancs/omarchy-arm-utm
git clone https://github.com/ggalancs/omarchy-arm-utm.git cd omarchy-arm-utm ./build-omarchy-arm.shOne self-contained script, eight resumable phases, no clicking in UTM. The one
full run I timed took 57 minutes for
buildthroughpackageon an M3 Max,without OBS and Pinta; add ~50 minutes if you include them.
Or skip the build entirely — the image it produces is on the Internet
Archive, sanitised and with a generic user:
https://archive.org/details/omarchy-arm-utm · 6.5 GB ·
sha256 9d6afb16843bd868…Unzip, double-click the
.utm, done. Useromarchy, passwordomarchy(change it with
passwd). I verified the whole recipient path on a cleanimport: boots to a themed desktop, Hyprland and quickshell up, 436
omarchy-*commands, no SSH keys and a fresh machine-id per VM. It asks six questions, all pre-filled from your Mac (timezone from/etc/localtime, keyboard from macOS preferences, cores/RAM fromsysctl), soEnter accepts everything.
--yesskips them.The trap that cost me the most
git cloneofbasecamp/omarchydoes not give youmaster(3.8.5). Thedefault branch is
quattro(4.x), and they are different products:master(3.8.5)quattro(4.x)omarchy-shell).confhyprland.lua,bootstrap.lua)~/.local/share/usr/share/omarchyWorth being precise here, because I got it wrong myself at first: that package
is not x86_64-only. Its PKGBUILD says
arch=('any')and it installs thecommands into
/usr/bin. What is x86_64-only is the repository it's publishedin —
stable-mirror.omarchy.org/core/os/aarch64/is a 404 while x86_64 is a200 — so on ARM there is simply nowhere to install it from.
Copy just the dotfiles instead and
OMARCHY_PATHgoes unset:bashrcerrorsout and Hyprland can't find
bootstrap.lua, so you get a bare compositor ratherthan a desktop. The build reproduces by hand what the package would have
installed —
/usr/share/omarchy, the ~435omarchy-*commands,profile.d,the uwsm env.d drop-in and the SDDM theme. One deliberate difference: they go in
/usr/local/binrather than/usr/bin, so nothing collides with pacman.Related: quattro retires
mako,swayosd,walkerandelephant—quickshell is the bar, the menu, the OSD and the notification daemon. Leaving
makoinstalled is actively harmful: it grabsorg.freedesktop.Notificationsover D-Bus and your toasts come out unstyled.What works
@/@home,systemd-boot
omarchy-updateworking (with snapper snapshots and a post-update hook that keeps the checkout
in sync)
tensaku,omacalc,omacut,omawrite,aether,cliamp,ttfx,omarchy-nvim,mise,tzupdate,hyprland-preview-share-picker,yay…Of the 148 packages in
omarchy-base.packages, 123 already exist in ArchLinux ARM. The
preparephase computes that intersection against the livebranch on every run, so it does not rot when Omarchy changes packages.
What does not
never paint — only
wl_shmclients render. The discriminating test that foundit:
footdraws,alacrittydoesn't. Fixed withLIBGL_ALWAYS_SOFTWARE=1,which means software rendering and no blur/shadows.
screen; applied from boot it's fine.
herdrneeds Zig 0.15; Arch Linux ARM only packages 0.16.in the image — shipping them would be redistributing third-party binaries.
There's an opt-in installer that pulls them from their official source on your
machine. All of them have official ARM64 builds.
Other things that took a while to find
symlinks in
/bootand vfat can't hold them.bootctl install --no-variables— the build VM's NVRAM doesn't travel to UTM,so boot relies on the fallback
\EFI\BOOT\BOOTAA64.EFI..utmbundle has to be written by hand:utmctlcan't create VMs, UTMonly scans
Documents/at launch, andconfig.plistneeds all tentop-level keys (they're decoded with
decode(), notdecodeIfPresent()).edk2-arm-vars.fd, notedk2-aarch64-vars.fd, which doesn't exist.completion. Without that,
omarchy-updatereplays ~80 historical migrationsand dies on the first x86-only package.
altwin:swap_lalt_lwin: Option (⌥) acts as SUPER.Full write-up (in Spanish, but the code blocks and tables carry most of it):
ARTICULO.md.
Step-by-step run guide: EMPEZAR.md.
Prior art — and when not to use this
Checking before posting saved me from overclaiming, so, honestly:
thousands of users) already does Omarchy 4 on Asahi Alarm, M1/M2 bare metal, one
command, with LUKS. It even publishes
the aarch64 pacman repo
that upstream doesn't. If you have an M1 or M2 and want it on the metal, use
that, not this — you get a real GPU.
3.x on Asahi and VMs.
A VM is worth it for the cases those can't reach: M3, M4 and newer (Asahi's
installer is M1/M2 only, M3 is WIP, M4 hasn't started), keeping macOS untouched
with no repartitioning or reduced-security boot, and external monitors —
Asahi still lists USB-C displays and Thunderbolt as unsupported.
One correction, since it gets repeated
Omarchy 4 does not refuse to run on ARM64. The
uname -mguard people citeis
install/preflight/guard.shonmaster(3.x). Onquattrothepreflight/directory doesn't exist anduname -mappears zero times in thebranch. What's missing is the repository:
stable-mirror.omarchy.orgservescore/os/x86_64/core.db(200) and notcore/os/aarch64/(404), andinstall/post-install/pacman.shpoints pacman there. The tree itself is shell,Lua and QML, and the
omarchypackage isarch=('any').That reframes the problem: it's a packaging gap, not a porting one. Of the
148 packages in
omarchy-base.packages, 121 are already in Arch Linux ARMby name (123 with two obvious substitutions); publishing the rest would close
most of the gap for everyone at once —
which is presumably what
plans/aarch64-support.mdis for.Unofficial work, no affiliation with Basecamp. When the aarch64 ISO that's
already on the roadmap ships, none of this will be needed.
All reactions