dotfiles/docs/omarchy-install-prompt.md
2026-06-07 17:11:21 +00:00

7 KiB

Omarchy Install Script — AI Prompt

This is a ready-to-paste prompt for any capable AI to generate a customized Omarchy-derived install script that integrates these dotfiles.


You are going to create a Linux install shell script derived from Omarchy (DHH's opinionated Arch + Hyprland setup — https://omarchy.org, https://github.com/basecamp/omarchy). Target: single-user Arch-based Hyprland desktop.

Produce a clean, idempotent install.sh (bash, set -euo pipefail) plus supporting files, structured into small sourced functions so each step is auditable. Do not leave stubs, dead menu entries, or commented-out code. If a removal empties a parent menu, remove the parent too.

1. Packages to remove from the install

  • Shell tools: try
  • TUIs: Lazydocker, Clamp (match Omarchy's spelling — cliamp/climp)
  • GUIs: Obsidian, Pinta, Signal, OBS Studio, Kdenlive
  • Commercial apps: remove every entry in Omarchy's "Commercial apps" install group and the "Commercial apps" menu/submenu itself.
  • Default web apps (frameless PWA wrappers): remove all of them — the install hook, every generated .desktop file, and shipped icons.

2. Browser swap

  • Do not install Chromium.
  • Install Brave Beta (https://brave.com/origin/linux/beta/) and wire it as default everywhere Omarchy referenced Chromium: xdg-mime defaults, $BROWSER, Hyprland keybinds, walker/wofi entries, any remaining PWA launcher.
  • Prefer an official scriptable Arch install path for the Beta channel; if no Beta AUR package exists, fall back to the Beta artifact from the URL above via a documented method. Do not silently substitute stable Brave.

3. Terminal swap — Alacritty → WezTerm, themed by Omarchy

  • Replace Alacritty with WezTerm everywhere Omarchy sets the default terminal: $TERMINAL, Hyprland Super+Return (and any terminal keybind), walker/wofi, xdg terminal handling, and any scripts that call alacritty (e.g. Omarchy's omarchy-launch-* helpers).
  • Make WezTerm follow Omarchy's live theme. Omarchy switches themes by symlinking the active theme into ~/.config/omarchy/current/theme/ and each theme ships an alacritty.toml. Implement this:
    1. Add a generator (omarchy-wezterm-theme or similar) that converts the current theme's alacritty.toml color table into a WezTerm color table written to ~/.config/omarchy/current/theme/wezterm.lua (returning a Lua table of foreground/background/cursor/ansi/brights/selection).
    2. Run the generator during install and hook it into omarchy-theme-set so it regenerates on every theme switch, then signals WezTerm to reload (WezTerm auto-reloads config; ensure automatically_reload_config = true).
    3. Ship a WezTerm config that loads it: local ok, theme = pcall(dofile, wezterm.home_dir .. "/.config/omarchy/current/theme/wezterm.lua"); if ok then config.colors = theme end, with a safe fallback if the file is absent.
  • Confirm every Omarchy theme that previously had alacritty.toml now yields a working WezTerm palette.

4. Integrating these dotfiles (repo: brianpooe/dotfiles)

These dotfiles are the source of truth for editor/shell/terminal config. Integrate them into the install without breaking Omarchy's theme switcher. Read the repo first; key facts:

  • Theming is env-var-driven (Kanagawa). .zshrc reads KANAGAWA_THEME (wave|dragon) and exports NVIM_THEME / TMUX_THEME / STARSHIP_THEME / WEZTERM_THEME / STARSHIP_CONFIG, and writes ~/.config/tmux/current-theme.conf. wezterm.lua, tmux.conf, theme.lua (kanagawa.nvim) and starship all consume these.
  • This conflicts with Omarchy's per-app theme switching. Resolve it explicitly — pick one and implement consistently, do not half-wire both:
    • Option A (recommended): WezTerm follows Omarchy's live theme (section 3); the editor/shell stack (nvim, tmux, starship) stays Kanagawa via the dotfiles' KANAGAWA_THEME env chain, independent of Omarchy. Document that terminal colors and editor colors are decoupled by design. To avoid a clash, drop the dotfiles' hardcoded Kanagawa palette from wezterm.lua and replace it with the Omarchy-theme loader from section 3.
    • Option B: Make nvim/tmux/starship also follow Omarchy themes by having omarchy-theme-set set KANAGAWA_THEME/regenerate the selector files — only viable for Omarchy themes that have a Kanagawa-equivalent; state the limitation.
  • Deploy via symlinks (GNU stow or ln -sfn), idempotently, mirroring the repo's own README mapping: nvim, tmux, starship, lazygit, wezterm, zed → ~/.config/...; .config/.ideavimrc → ~/.ideavimrc; .zshrc, .gitconfig → ~. Back up any pre-existing target before symlinking. Clone the repo to ~/dotfiles (or accept a path arg) and link from there so git pull keeps things live.
  • Distro: the dotfiles are Arch-native — no dnf/Fedora cleanup needed. Just install their dependencies via Omarchy's package step (pacman/yay): zsh, zsh-syntax-highlighting, zsh-autosuggestions, fzf, fd, bat, eza, zoxide, tmux, lazygit, neovim, starship. The .zshrc already sources zsh plugins from /usr/share/zsh/plugins/... and fzf from /usr/share/fzf/, and its update alias already uses pacman -Syu. Install nvm per the dotfiles' note and tpm (~/.tmux/plugins/tpm) so tmux works on first launch.
  • WezTerm config reconciliation: the repo's wezterm.lua is already Linux-only (no macOS/Windows branches). Use it as the base, but swap its Kanagawa-by-env palette for the Omarchy-theme loader (section 3) so the chosen option above holds.
  • Set zsh as the login shell if the dotfiles assume it (they do — .zshrc auto-attaches tmux).

5. Menu changes — Super + Alt + Space launcher

Remove these submenus and all their entries:

  • Setup menu: System Sleep, DNS, Security
  • Install menu: Web App, Services, TUI, Development, Editor, Terminal, Browser, AI, Gaming, Windows

If "Setup" or "Install" has no children left, remove the parent. Update keybind hints/docs referencing removed menus.

6. Deliverables

  1. install.sh — idempotent entry point, safe to re-run.
  2. Sourced modules (e.g. lib/packages.sh, lib/menus.sh, lib/browser.sh, lib/terminal.sh, lib/dotfiles.sh).
  3. Modified launcher menu config (match Omarchy's walker/wofi/rofi).
  4. The WezTerm theme generator + the omarchy-theme-set hook.
  5. README.md: prerequisites, what was removed vs upstream Omarchy, the terminal/browser swaps, how dotfiles are linked, and the theming decision (Option A/B) you made and why.
  6. A diff-style summary listing every removal, both swaps, and each dotfile integration point, so a reviewer can verify nothing was missed.

Constraints

  • Linux/Arch only. No macOS/Windows/WSL branches (the dotfiles are already stripped of these — keep them that way).
  • Don't invent package or Omarchy script names — if unsure what Omarchy calls something, say so and ask rather than guess.
  • shellcheck-clean. No curl | bash from untrusted sources. Pin versions where Omarchy does.
  • Begin by listing the files you plan to produce, then output each in full.