How the Installer Works (End-to-End Flow)

This section dives into Packaging Modules, detailing how Omarchy installs all necessary software to assemble a complete Hyprland-based desktop and development environment. After preflight checks, Omarchy sources modular scripts that handle package installation, fonts, editor setup, webapps, and TUIs.

Index


Overview

Omarchy automates turning a fresh Arch Linux install into a curated desktop.
It runs preflight checks, then enters the Packaging stage to install software.
Finally, it applies system and user configurations before rebooting.

End-to-End Install Flow

  1. Preflight: Validate environment, enable chroot, set up pacman, apply migrations.
  2. Packaging: Install core packages, fonts, editor, webapps, and TUIs.
  3. Configuration: Copy dotfiles, set themes, configure Git, GPG, hardware.
  4. Login: Enable Plymouth, Snapper, alternative bootloaders.
  5. Finish: Signal reboot readiness.

In install.sh, the packaging stage is invoked as:

# Packagings
source $OMARCHY_INSTALL/packages.sh
source $OMARCHY_INSTALL/packaging/fonts.sh
source $OMARCHY_INSTALL/packaging/lazyvim.sh
source $OMARCHY_INSTALL/packaging/webapps.sh
source $OMARCHY_INSTALL/packaging/tuis.sh

Packaging Modules

Each module lives under install/packaging/ and focuses on a specific set of tasks.

Core Packages

Installs a comprehensive list of system, desktop, developer, and CLI tools in one go.

  • Uses pacman -S --needed --noconfirm for idempotent installs.
  • Covers everything from Hyprland and Waybar to Rust, Python, and fonts.
#!/bin/bash
sudo pacman -S --noconfirm --needed \
  alacritty \
  hyprland \
  nvim \
  lazydocker \
  ttf-jetbrains-mono-nerd \
  ... \
  zoxide

Fonts Module

Adds the Omarchy logo font for Waybar and rebuilds the font cache.

  • Creates necessary directories.
  • Copies omarchy.ttf into local font storage.
  • Runs fc-cache to update font listings.
#!/bin/bash
mkdir -p ~/.local/share/fonts
cp ~/.local/share/omarchy/config/omarchy.ttf ~/.local/share/fonts/
fc-cache

LazyVim Module

Bootstraps Neovim with LazyVim starter and applies Omarchy’s custom config overlays.

  • Clones if ~/.config/nvim is missing.
  • Copies in Omarchy-specific Lua configs.
  • Discards the Git history and sets sensible options.
#!/bin/bash
if [[ ! -d "$HOME/.config/nvim" ]]; then
  git clone https://github.com/LazyVim/starter ~/.config/nvim
  cp -R ~/.local/share/omarchy/config/nvim/* ~/.config/nvim/
  rm -rf ~/.config/nvim/.git
  echo "vim.opt.relativenumber = false" \
    >>~/.config/nvim/lua/config/options.lua
fi

WebApps Module

Wraps popular web services as desktop applications via omarchy-webapp-install.

  • Registers apps like ChatGPT, YouTube, GitHub, WhatsApp, and more.
  • Downloads icons and writes .desktop entries.
#!/bin/bash
omarchy-webapp-install "ChatGPT" https://chatgpt.com/ \
  https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/chatgpt.png
omarchy-webapp-install "YouTube" https://youtube.com/ \
  https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/youtube.png
# …additional entries…

TUI Module

Creates desktop shortcuts for terminal-based UIs using omarchy-tui-install.

  • Examples: Disk Usage (dust) and Docker UI (lazydocker).
  • Supports floating or tiled window styles and custom icons.
#!/bin/bash
omarchy-tui-install "Disk Usage" \
  "bash -c 'dust -r; read -n 1 -s'" float \
  https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/qdirstat.png

omarchy-tui-install "Docker" "lazydocker" tile \
  https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/png/docker.png

Dependencies & Interactions

  • Bin helpers: omarchy-pkg-add, omarchy-webapp-install, omarchy-tui-install.
  • Configuration scripts leverage installed packages (e.g., Waybar, Hyprland).
  • Migrations may pin or drop packages to resolve upstream issues before packaging.

Together, these modules deliver a turnkey desktop and development environment, fully automated by Omarchy.