Start Here: Requirements and Installation

Dive into the system prerequisites that Omarchy enforces before any installation step. These checks ensure a clean, predictable environment for a seamless Arch Linux setup.


Index


Overview

Omarchy runs a preflight phase to validate your system.
It aborts if any requirement fails, guiding you to fix the issue.


System Requirements

Omarchy supports only a fresh, x86_64 Arch Linux without heavier desktop environments.

Requirement Description
Vanilla Arch Linux Must run on upstream Arch, not on derivatives (Manjaro, Garuda, etc.).
x86_64 Architecture CPU must report x86_64 via uname -m.
Regular User Do not run as root; installer requires a non-privileged user account.
No GNOME/KDE Must not have gnome-shell or plasma-desktop already installed.

Preflight Guard Script

This script enforces the system requirements before any package or configuration step.

Location & Invocation

  • File: install/preflight/guard.sh
  • Sourced from: install.sh as part of the preflight sequence .
# Preparations
source $OMARCHY_INSTALL/preflight/show-env.sh
source $OMARCHY_INSTALL/preflight/trap-errors.sh
source $OMARCHY_INSTALL/preflight/guard.sh    # ← Enforce system requirements
source $OMARCHY_INSTALL/preflight/chroot.sh
...

Abort Function

Omarchy defines an abort() helper that:

  • Prints a red error message indicating the missing requirement.
  • Prompts with gum confirm to let you override at your own risk.
  • Exits if you choose not to proceed.
abort() {
  echo -e "\e[31mOmarchy install requires: $1\e[0m"
  echo
  gum confirm "Proceed anyway on your own accord and without assistance?" || exit 1
}

*Location: install/preflight/guard.sh *

Individual Checks

The guard script performs these validations in order:

  • Check for Arch release file
    Verifies /etc/arch-release exists; aborts if missing.

  • Reject derivatives
    Scans /etc/cachyos-release, /etc/eos-release, /etc/garuda-release, /etc/manjaro-release.

  • Prevent root invocation
    Ensures $EUID != 0.

  • Enforce x86_64 CPU
    Compares $(uname -m) against x86_64.

  • Disallow GNOME/KDE installs
    Uses pacman -Qe gnome-shell and pacman -Qe plasma-desktop.

# Must be an Arch distro
[[ -f /etc/arch-release ]] || abort "Vanilla Arch"

# Must not be an Arch derivative
for marker in /etc/cachyos-release /etc/eos-release /etc/garuda-release /etc/manjaro-release; do
  [[ -f "$marker" ]] && abort "Vanilla Arch"
done

# Must not run as root
[ "$EUID" -eq 0 ] && abort "Running as root (not user)"

# Must be x86_64 only
[ "$(uname -m)" != "x86_64" ] && abort "x86_64 CPU"

# Must not have GNOME or KDE installed
pacman -Qe gnome-shell &>/dev/null && abort "Fresh + Vanilla Arch"
pacman -Qe plasma-desktop &>/dev/null && abort "Fresh + Vanilla Arch"

echo "Guards: OK"

*Location: install/preflight/guard.sh *


Preflight Flowchart

Visualize the decision path in the preflight guard:

flowchart TD
  A[Start: guard.sh] --> B{/etc/arch-release?}
  B -- No --> X[Abort: Vanilla Arch] 
  B -- Yes --> C{Any derivative marker?}
  C -- Yes --> X[Abort: Vanilla Arch]
  C -- No --> D{EUID == 0?}
  D -- Yes --> Y[Abort: Running as root]
  D -- No --> E{uname -m == x86_64?}
  E -- No --> Z[Abort: x86_64 CPU]
  E -- Yes --> F{gnome-shell installed?}
  F -- Yes --> W[Abort: Fresh + Vanilla Arch]
  F -- No --> G{plasma-desktop installed?}
  G -- Yes --> W[Abort: Fresh + Vanilla Arch]
  G -- No --> H[Guards: OK → Continue Installation]

With these gates cleared, Omarchy proceeds to configure pacman, apply migrations, and start the Hyprland-based desktop setup.