Opinionated dotfiles for Omarchy — my personal take on a polished, terminal-first desktop. Managed with GNU Stow, built around ghostty as the default terminal, zsh + starship, and a curated set of CLI tools.
- Ghostty-first terminal — foot, alacritty, and kitty are removed and replaced by ghostty
- Zsh + Starship prompt out of the box
- Neovim with a batteries-included config
- Hyprland setup for a clean, minimal desktop
- Trino CLI installed and ready for data work
- Mise for runtime version management
- Extras: atuin, bitwarden, ghostty, gh-dash, lazygit, tmux, yazi, visidata, and more
curl -fsSL https://raw.githubusercontent.com/mrpbennett/omarchy-dots/main/install.sh | bashThe installer will:
- Clone the repo into
~/.dotfiles/omarchy-dots - Install required packages via
omarchy(stow, bitwarden, ghostty, zsh) - Remove stock webapps and default packages you don't need
- Install Omarchy plugins (qs-fortivpn, radio-atlas)
- Stow the dotfiles into your home, backing up any existing configs to
~/.local/share/omarchy-dots-backup - Update mise and install the latest Trino CLI
The repo mirrors your $HOME, so Stow can symlink everything into place:
~/.dotfiles/omarchy-dots/
├── .config/ # per-app configs (hypr, ghostty, nvim, tmux, …)
├── .local/ # local additions
├── .zshrc # zsh setup
└── install.sh # the bootstrap script
Stow mirrors the repo into $HOME, symlinking each file individually
(stow 2.4+ defaults to --no-folding), so adding or removing a single file
inside an already-stowed directory only touches that file — everything else
stays put.
Re-apply the symlinks anytime with:
stow --dir="$HOME/.dotfiles" --target="$HOME" --restow omarchy-dotsInstalled a new app that wrote to ~/.config/foo? Move the whole directory
into the repo (this also keeps whatever settings the app generated) and restow:
mv ~/.config/foo ~/.dotfiles/omarchy-dots/.config/
stow --dir="$HOME/.dotfiles" --target="$HOME" --restow omarchy-dots~/.config/foo is now a symlink tree into the repo, so edits happen inside the
repo and land in git status for committing.
Because each file is symlinked individually, a brand-new file an app drops into
a stowed dir (e.g. ~/.config/ghostty/something.conf) is just sitting there
untracked. Move it into the matching repo dir and restow:
mv ~/.config/ghostty/something.conf ~/.dotfiles/omarchy-dots/.config/ghostty/
stow --dir="$HOME/.dotfiles" --target="$HOME" --restow omarchy-dotsThe inverse works too — delete a file from the repo dir and --restow removes
its symlink.
Apps sometimes rewrite a file the repo already tracks (e.g. nvim regenerates
lazy-lock.json). --adopt pulls the live content into the repo, replacing the
real file with a symlink so nothing you configured is lost:
stow --dir="$HOME/.dotfiles" --target="$HOME" --adopt omarchy-dotsThen git diff inside the repo to review what changed and commit it.
Check what would change without touching anything:
stow --dir="$HOME/.dotfiles" --target="$HOME" --restow --simulate omarchy-dotsRuntime files that shouldn't be tracked (or cause repo churn) go in
.stow-local-ignore at the repo root — nvim's lazy-lock.json is already
listed there as an example.