Personal configuration for Omarchy machines, managed with GNU stow.
Rebuilt from scratch on Omarchy 4.0. The pre-Omarchy-4 history (Hyprland +
Noctalia + a much larger config surface) is preserved on the
archive/pre-omarchy4 branch.
Omarchy already ships a curated desktop, shell, editor, and terminal stack. This repo holds only the delta on top of that, never a fork of what Omarchy provides. Concretely:
- Hyprland: only the override files Omarchy sources, never the base config. The seven that are byte-identical to stock stay unmanaged, so Omarchy keeps updating them.
- Where Omarchy owns a file outright, it stays unmanaged and we append a
one-line include pointing at a stowed override, so ours loads last and wins.
Three files work this way:
~/.zshrcto~/.config/zsh/local.zsh,~/.config/git/configtooverrides.gitconfig, and~/.config/ghostty/configtooverrides.conf.install.shre-adds each hook if the package ever resets the file. - Neovim: stock Omarchy LazyVim, unmodified.
- Anything Omarchy installs by default is not listed in
packages.lst. Check withcat /usr/share/omarchy/install/*.packages, and checkprovidesandconflictstoo, not just the name.
Everything installed on the machine is recorded in install/packages.lst (with a
reason) or install/SERVICES.md, so the repo alone is enough to rebuild a box.
git clone https://github.com/joegeary/dotfiles.git ~/dotfiles
~/dotfiles/install/install.shThe script installs packages, sets up zsh, and creates all symlinks. Then read install/SERVICES.md for the setup that symlinks cannot express (Tailscale, Syncthing, DDNS, printing).
| Path | Purpose |
|---|---|
home/ |
stow package symlinked into ~ - shared by every machine |
hosts/<hostname>/ |
per-machine stow package (monitor layout, etc.) |
install/ |
bootstrap script, package list, service runbook |
os-migration/ |
inventory + scripts from the pre-Omarchy-4 migration |
stow -d ~/dotfiles -t ~ home # shared config
stow -d ~/dotfiles/hosts -t ~ "$(hostname)" # this machine's config
stow -D -d ~/dotfiles -t ~ home # unstowAdding a new machine means creating hosts/<hostname>/ and stowing it. Stow
packages must be direct children of the stow dir, hence the -d hosts form.
Warning
This repo is public and contains no secrets. Credentials, keys, tokens, and internal hostnames are deliberately kept out of it and restored by hand.