omarchy-vm
Recipe card from the charly-vm plugin (Kinds — schema authoring).
omarchy (VMs)
Section titled “omarchy (VMs)”Three entities in opencharly/distro-omarchy (box/omarchy inside charly), all
in that repo’s unified charly.yml.
omarchy-vm — the official ISO, installed unattended
Section titled “omarchy-vm — the official ISO, installed unattended”source.kind: iso. Boots Omarchy’s own 5.8 GiB installer ISO with a
charly-rendered cidata answers volume and lets Omarchy install itself with
nobody at the keyboard.
| Setting | Value |
|---|---|
| Source | kind: iso, distro: omarchy, checksum from the publisher’s .sha256 sidecar |
| Credentials | user / user, no disk encryption |
| Disk / RAM / CPU | 40G / 8G / 4 |
| Machine / firmware | q35 / uefi-insecure (Omarchy requires Secure Boot off) |
| Backend | libvirt — REQUIRED; auto falls back to qemu and every libvirt probe then fails “Domain not found” |
Why unencrypted is the right default here: an encrypted install is not
actually unattended (someone types the LUKS passphrase at first boot), and its
passphrase would sit in PLAINTEXT in the seed’s disk_encryption block. With
encrypt: false there is no such block and nothing on the seed that is not
already public.
The boot order removes a whole subsystem. The blank disk is first in the boot order and the ISO second, so the firmware falls through to the ISO on the first boot and the installed system boots from disk ever after. No eject, no detach, no ISO-removal step, and the “installer loops forever” failure mode cannot occur.
omarchy-pacstrap-vm — the composable sibling
Section titled “omarchy-pacstrap-vm — the composable sibling”source.kind: bootstrap via omarchy-pacstrap-builder + pacstrap: charly’s own
machinery reproducing Omarchy from packages, for fast rebuilds and derived
images. It is NOT a claim of byte-identity with an ISO install — the ISO runs
Omarchy’s own orchestrator, which does work charly’s bootstrap does not.
The builder is built on
omarchy, not onarch.arch, and that is the one decision that matters: pacstrap resolves against the BUILDER’s/etc/pacman.conf, and charly appends a distro’sextra_repothere without rewriting[core]/[extra]. On a plain-Arch builder the target rootfs would be a MIX — Omarchy’s own packages plus a newer upstream Arch snapshot — and pacman reports success either way.
charly-omarchy — the ready-to-run keeper
Section titled “charly-omarchy — the ready-to-run keeper”A DEPLOY of omarchy-vm (from:), not a third template: a deploy’s from:
carries deploy-scope fields only, and the VM spec comes wholly from the named
kind: vm entity, so the ISO, the seed and the credentials are stated once.
Adds the charly toolchain. NOT disposable — it is meant to be kept.
Check beds
Section titled “Check beds”| Bed | Proves |
|---|---|
check-omarchy-iso-vm |
Omarchy installs itself UNATTENDED from its own ISO. Every assertion is a fact about the installed system that cannot be true unless charly’s rendered answers were found, parsed and acted on |
check-charly-omarchy-vm |
the charly toolchain installs onto a guest Omarchy installed from its own ISO. Derives from the TEMPLATE, not from the keeper — a bed’s from: names a kind: vm entity |
check-omarchy-pacstrap-vm |
the from-packages path produces a BOOTABLE Omarchy |
All three are disposable: true, so charly check run executes the full R10
sequence including a destroy and a genuine reinstall.
Quick Start
Section titled “Quick Start”charly -C box/omarchy vm build omarchy-vmcharly -C box/omarchy check run check-omarchy-iso-vmcharly -C box/omarchy vm ssh charly-omarchyGotchas measured the hard way
Section titled “Gotchas measured the hard way”- A bootstrap VM is not the distro by default.
pacstrap.base_packageis a minimal bootstrap set carrying neitheromarchynoromarchy-settings, so without the metapackage insource.packagethe guest reportsID=arch. - The ESP is at
/boot, not/boot/efi, and the cmdline usesroot=PARTUUID=…withrootflags=subvol=@. Omarchy boots a Unified Kernel Image at/boot/EFI/Linux/omarchy_linux.efi. - The bootstrap path registers no named NVRAM entry.
efibootmgr --createruns inside the builder against a loop device, so the guest boots through the firmware’s auto-created removable-media entry. Assert/proc/cmdlineinstead — it carries flags only that distro’slimine.confsets. - These builds need ~22 GiB free on the STAGING dir.
/tmpis often a tmpfs too small; setTMPDIRto a real filesystem.
When to Use This Skill
Section titled “When to Use This Skill”MUST be invoked when the task involves any omarchy VM entity, its seed answers, or its check beds. Invoke this skill BEFORE reading source code or launching Explore agents.
Related
Section titled “Related”/charly-distros:omarchy— the base image these install/charly-vm:vms-catalog— authoring reference forkind: vmentities