omarchy-config/instructions.md
2026-07-17 20:25:09 +02:00

3.8 KiB

Implementation Instructions for Codex

Goal

Improve the installer's robustness while preserving behavior on a fresh Omarchy installation.

1. Make system updates optional (High Priority)

Current behavior:

yay -Syu --noconfirm

Problem: - Fresh Omarchy installs are already up to date. - Adds unnecessary install time. - Can fail because of mirrors or package updates. - Makes installs less reproducible.

Required change: - Do not update the system by default. - Introduce an environment variable:

UPDATE_SYSTEM=1 ./install.sh

Behavior: - If UPDATE_SYSTEM=1, run:

yay -Syu --noconfirm
  • Otherwise skip the full upgrade.

2. Verify required commands exist (High Priority)

Before any installation begins, verify required tools exist.

Minimum:

  • yay
  • git
  • systemctl
  • fc-cache
  • flatpak

Example:

command -v yay >/dev/null || {
    echo "yay is required."
    exit 1
}

Fail early with clear error messages.


3. Install packages individually (High Priority)

Current behavior: - One package failure aborts the installer because of set -e.

Desired behavior: - Continue installing remaining packages. - Report failures at the end.

Pseudo-code:

failed_packages=()

for pkg in "${packages[@]}"; do
    if ! yay -S --needed --noconfirm "$pkg"; then
        failed_packages+=("$pkg")
    fi
done

Print a summary if any packages failed.


4. Remove duplicate packages (Medium Priority)

Some packages currently appear in multiple package lists.

Deduplicate package sources so each package exists only once.


5. Improve service enabling (Medium Priority)

Current implementation checks service existence before enabling.

Instead:

sudo systemctl enable SERVICE || true

or use a more reliable existence check.

Goal: - Never abort because one optional service is unavailable.


Entire config directories are symlinked.

This is acceptable, but document that: - Future Omarchy config additions inside those directories will not appear automatically. - This is an intentional trade-off.

No implementation change required unless desired.


7. Consider copying fonts instead of symlinking (Low Priority)

Current behavior: - Font directory is symlinked.

Consider: - Copying fonts into the user's font directory. - Run fc-cache -fv afterward.

If symlinks are kept, document why.


8. Verify Flathub exists before Flatpak installs (Medium Priority)

Before installing Flatpak packages, ensure the Flathub remote exists.

If missing: - Add Flathub automatically. - Continue installation.


9. Do not distribute the Git metadata (Low Priority)

When publishing releases or ZIP archives: - Exclude the .git directory. - Ship only the working tree.

No installer changes required.


Desired Characteristics

The installer should remain:

  • idempotent
  • safe to rerun
  • backup existing configs
  • continue after non-critical failures
  • easy to understand
  • optimized for fresh Omarchy installations

The default install path should be fast, deterministic, and require minimal user interaction.