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

This section details the Configuration Modules stage of the Omarchy installer. After preflight checks and package installation, the installer sequentially sources configuration scripts to apply defaults, enable hardening, and tailor the system to the user’s environment and hardware.

# Extract from install.sh
# …
# Configurations
source $OMARCHY_INSTALL/config/config.sh
source $OMARCHY_INSTALL/config/theme.sh
source $OMARCHY_INSTALL/config/branding.sh
source $OMARCHY_INSTALL/config/git.sh
source $OMARCHY_INSTALL/config/gpg.sh
source $OMARCHY_INSTALL/config/timezones.sh
source $OMARCHY_INSTALL/config/increase-sudo-tries.sh
source $OMARCHY_INSTALL/config/increase-lockout-limit.sh
source $OMARCHY_INSTALL/config/ssh-flakiness.sh
source $OMARCHY_INSTALL/config/detect-keyboard-layout.sh
source $OMARCHY_INSTALL/config/xcompose.sh
source $OMARCHY_INSTALL/config/mise-ruby.sh
source $OMARCHY_INSTALL/config/docker.sh
source $OMARCHY_INSTALL/config/mimetypes.sh
source $OMARCHY_INSTALL/config/localdb.sh
source $OMARCHY_INSTALL/config/sudoless-asdcontrol.sh
source $OMARCHY_INSTALL/config/hardware/*.sh
# …

(Cited from the installer’s main script)


📋 Index

  • Core Configuration
  • Identity & Developer Tools
  • Security & System Hardening
  • Container & Database Settings
  • Hardware Configuration

Core Configuration

These modules establish user-facing defaults and branding.

config.sh

Copies Omarchy’s default configuration files and Bash profile into the user’s home.

#!/bin/bash
# Copy over Omarchy configs
mkdir -p ~/.config
cp -R ~/.local/share/omarchy/config/* ~/.config/
# Use default bashrc
cp ~/.local/share/omarchy/default/bashrc ~/.bashrc

theme.sh

Applies GTK, icon, and color-scheme defaults and links all bundled themes for easy switching.

#!/bin/bash
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
# Link themes into ~/.config/omarchy/themes
mkdir -p ~/.config/omarchy/themes
for f in ~/.local/share/omarchy/themes/*; do
  ln -nfs "$f" ~/.config/omarchy/themes/
done
# Activate initial theme
ln -snf ~/.config/omarchy/themes/tokyo-night ~/.config/omarchy/current/theme

branding.sh

Sets up Omarchy’s Fastfetch and screensaver branding directories.

#!/bin/bash
mkdir -p ~/.config/omarchy/branding
cp ~/.local/share/omarchy/icon.txt ~/.config/omarchy/branding/about.txt
cp ~/.local/share/omarchy/logo.txt ~/.config/omarchy/branding/screensaver.txt

Identity & Developer Tools

These modules configure Git, GPG, timezone updates, language environments, and developer utilities.

Script Purpose
git.sh Sets global Git aliases & user identity
gpg.sh Installs dirmngr config for multiple GPG keyservers
timezones.sh Enables non-sudo timezone updates via tzupdate
ssh-flakiness.sh Tweaks TCP MTU probing to improve SSH reliability
detect-keyboard-layout.sh Propagates Arch’s vconsole.conf layout to Hyprland’s input.conf
xcompose.sh Defines a default XCompose triggered by CapsLock
mise-ruby.sh Configures mise to build Ruby with gcc-14
increase-sudo-tries.sh Increases sudo password attempts from 3 to 10
increase-lockout-limit.sh Adjusts PAM faillock for higher lockout threshold
localdb.sh Updates the locate database to include newly installed files
mimetypes.sh Sets sensible default applications for common MIME types

Sample: git.sh

#!/bin/bash
# Common Git aliases
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global pull.rebase true
git config --global init.defaultBranch master
# Identity
[[ -n "$OMARCHY_USER_NAME" ]] && git config --global user.name "$OMARCHY_USER_NAME"
[[ -n "$OMARCHY_USER_EMAIL" ]] && git config --global user.email "$OMARCHY_USER_EMAIL"

Sample: docker.sh

#!/bin/bash
# Configure Docker daemon: log rotation, DNS, boot-blocking
sudo tee /etc/docker/daemon.json >/dev/null <<'EOF'
{
  "log-driver": "json-file",
  "log-opts": { "max-size": "10m", "max-file": "5" },
  "dns": ["172.17.0.1"],
  "bip": "172.17.0.1/16"
}
EOF
sudo systemctl enable --now docker
sudo usermod -aG docker "$USER"

Security & System Hardening

Modules here reinforce authentication and system security.

  • gpg.sh: Configures /etc/gnupg/dirmngr.conf and restarts dirmngr
  • increase-sudo-tries.sh: Grants 10 password attempts before lockout
  • increase-lockout-limit.sh: Sets pam_faillock to deny=10, unlock after 2 minutes
  • ssh-flakiness.sh: Enables TCP MTU probing for reliable SSH

Hardware Configuration

Targeted scripts detect hardware and apply appropriate tweaks.

flowchart TD
  A[Configuration Modules] --> B(Network)
  A --> C(F-Keys)
  A --> D(Bluetooth)
  A --> E(Printers)
  A --> F(USB Autosuspend)
  A --> G(Power-Button)
  A --> H(NVIDIA)
  A --> I(AMD Audio)

network.sh

Enables iwd.service, disables systemd-networkd-wait-online

fix-fkeys.sh

For Apple-style keyboards, forces F1–F12 as function keys

bluetooth.sh

Turns on Bluetooth by default via systemctl

printer.sh

Enables CUPS & Avahi; disables mDNS in resolved.conf

usb-autosuspend.sh

Disables USB autosuspend to prevent device dropouts

ignore-power-button.sh

Configures logind.conf to ignore the power key for a custom menu

nvidia.sh

Detects NVIDIA GPU, installs DKMS driver, configures mkinitcpio & Hyprland env

fix-f13-amd-audio-input.sh

Selects the correct AMD audio profile for F13 keyboards


Summary: The Configuration Modules stage is where Omarchy applies system-wide defaults, security hardening, developer tooling, and hardware-specific tweaks—transforming a minimal Arch Linux into a polished, secure, and ready-to-use Hyprland desktop.