Omarchy on Apple Silicon (VMware Fusion)
If you want a modern Wayland desktop (Hyprland) running inside a Linux VM on an Apple Silicon Mac, Omarchy is a nice starting point. On VMware Fusion for ARM, you’ll need a couple of tweaks for graphics, a browser swap, and a small Hyprland config. Here’s everything I did, end-to-end.
Worth noting is that the 3D acceleration is quite limited and even running firefox makes the system a bit sluggish. It might need more tweaking to make it really work well for daily usage, but I believe this is a good start.
What you’ll need
- Mac: Apple Silicon (M1/M2/M3/M4)
- VMware Fusion (Apple Silicon build)
- aarch64 ISO from archboot.com – ISO link
- ~4–8 CPU cores, 6–12 GB RAM allocated to the VM (tune to taste)
Tip: Create the VM as “Other Linux 64-bit for ARM,” UEFI firmware, and (if available in your Fusion build) enable 3D acceleration. It’ll still be mostly software-rendered in the guest, but it won’t hurt.

Installation
Install the VM from ISO as you would normally do with installing ArchLinux. Once done, follow the manual installation from Omarchy – https://learn.omacom.io/2/the-omarchy-manual/96/manual-installation
Basically, just run:
# curl -fsSL https://omarchy.org/install | bash
Before you reboot, you need to fix the graphics, otherwise you will be stuck with text-mode only. To do that, you need to add kernel param to use software rendering (unfortunately).
Fixing graphics
VMware’s virtual GPU uses the vmwgfx driver. On ARM under Fusion, KMS sometimes needs a nudge and fbdev fallback helps early boot. Add these kernel parameters to /boot/grub/grub.cfg (dirty way):
video=Virtual-1:2560x1600@60 vmwgfx.enable_fbdev=1 vmwgfx.restrict_iommu=0
The permanent fix can be done by modifying /etc/grub params:
# cp /etc/default/grub /etc/default/grub.bak
# vi /etc/default/grub
Find GRUB_CMDLINE_LINUX_DEFAULT and append the params (keep existing ones like quiet):
GRUB_CMDLINE_LINUX_DEFAULT="quiet loglevel=3 video=Virtual-1:2560x1600@60 vmwgfx.enable_fbdev=1 vmwgfx.restrict_iommu=0"
And regenerate grub:
# grub-mkconfig -o /boot/grub/grub.cfg
Additionally, open-vm-tools must be installed on the system. Unfortunately, the ones from Arch do not work on aarch64, so we need to install it from source code. Before we do that, we need to make sure all libraries are available:
# pacman -Sy base-devel git autoconf automake libtool make pkgconf glib2 libmspack rpcsvc-proto fuse3 procps-ng libmspack glib2-devel
# cd /root
# git clone https://github.com/vmware/open-vm-tools.git
# cd open-vm-tools
# autoreconf -i
# ./configure
# make -j 4
# make install
Create a systemd service for vmtoolsd:
# cat /etc/systemd/system/vmtoolsd.service
[Unit]
Description=Open VM Tools
After=network.target
[Service]
ExecStart=/usr/local/bin/vmtoolsd
Restart=always
[Install]
WantedBy=multi-user.target
Add the service to systemd and enable it:
# systemctl daemon-reexec
# systemctl enable --now vmtoolsd.service
# systemctl start vmtoolsd.service
Hyprland
Hyprland will happily run with software rendering inside Fusion. These environment variables force a safe path and Wayland for Firefox:
- WLR_DRM_NO_ATOMIC=1 (avoid atomic KMS when the virtual stack isn’t happy)
- WLR_RENDERER_ALLOW_SOFTWARE=1 and LIBGL_ALWAYS_SOFTWARE=1 (llvmpipe fallback)
- __GLX_VENDOR_LIBRARY_NAME=mesa (be explicit)
Place your overrides in ~/.config/hypr/hyprland.conf. Here’s a sane, portable snippet you can drop in (it sources Omarchy defaults but overrides what we need):
# Learn how to configure Hyprland: https://wiki.hyprland.org/Configuring/
# You're encouraged to tailor your Hyprland config in this file by adding or overwriting any settings.
# But don't change anything that lives in ~/.local/share/omarchy, if you can help it!
# Those files are overwritten when Omarchy is updated.
# Change your personal monitor setup in here to keep the main config portable
source = ~/.config/hypr/monitors.conf
# Use Omarchy defaults
source = ~/.local/share/omarchy/default/hypr/autostart.conf
source = ~/.local/share/omarchy/default/hypr/bindings/media.conf
source = ~/.local/share/omarchy/default/hypr/bindings/tiling.conf
source = ~/.local/share/omarchy/default/hypr/bindings/utilities.conf
source = ~/.local/share/omarchy/default/hypr/envs.conf
source = ~/.local/share/omarchy/default/hypr/looknfeel.conf
source = ~/.local/share/omarchy/default/hypr/input.conf
source = ~/.local/share/omarchy/default/hypr/windows.conf
source = ~/.config/omarchy/current/theme/hyprland.conf
# Environment variables (software rendering + Wayland Firefox)
env = WLR_DRM_NO_ATOMIC,1
env = WLR_RENDERER_ALLOW_SOFTWARE,1
env = __GLX_VENDOR_LIBRARY_NAME,mesa
env = LIBGL_ALWAYS_SOFTWARE,1
# Application bindings
$terminal = uwsm app -- alacritty
$browser = uwsm app -- firefox --new-window
$webapp = $browser --app
bind = SUPER CONTROL, return, exec, $terminal
bind = SUPER, F, exec, uwsm app -- nautilus --new-window
bind = SUPER, B, exec, $browser
bind = SUPER, M, exec, uwsm app -- spotify
bind = SUPER, N, exec, $terminal -e nvim
bind = SUPER, T, exec, $terminal -e btop
bind = SUPER, D, exec, $terminal -e lazydocker
bind = SUPER, G, exec, uwsm app -- signal-desktop
bind = SUPER, O, exec, uwsm app -- obsidian -disable-gpu
bind = SUPER, slash, exec, uwsm app -- 1password
bind = SUPER, A, exec, $webapp="https://chatgpt.com"
bind = SUPER SHIFT, A, exec, $webapp="https://grok.com"
bind = SUPER, C, exec, $webapp="https://app.hey.com/calendar/weeks/"
bind = SUPER, E, exec, $webapp="https://app.hey.com"
bind = SUPER, Y, exec, $webapp="https://youtube.com/"
bind = SUPER SHIFT, G, exec, $webapp="https://web.whatsapp.com/"
bind = SUPER ALT, G, exec, $webapp="https://messages.google.com/web/conversations"
bind = SUPER, X, exec, $webapp="https://x.com/"
bind = SUPER SHIFT, X, exec, $webapp="https://x.com/compose/post"
# Extra autostart processes
# exec-once = uwsm app -- my-service
# Extra env variables
# Note: You must relaunch Hyprland after changing envs (use Super+Esc, then Relaunch)
# env = MY_GLOBAL_ENV,setting
# Control your input devices
# See https://wiki.hypr.land/Configuring/Variables/#input
input {
kb_options = compose:caps
kb_layout = us
kb_variant = mac
kb_model = apple
repeat_rate = 40
repeat_delay = 600
sensitivity = 0.35
touchpad {
# natural_scroll = true
clickfinger_behavior = true
scroll_factor = 0.4
}
}
# Scroll faster in the terminal
windowrule = scrolltouchpad 1.5, class:Alacritty
exec-once = [workspace 1 silent] $terminal
debug:disable_logs = false
Omarchy on VMware Fusion on Silicon Mac!
Mind that this is more just for fun and to explore Arch/Omarchy rather than production setup

Happy hacking!
And don’t forget to post your patches to https://github.com/basecamp/omarchy !