Personal configuration files for three platforms, organized into per-platform top-level directories.
dotfiles/ ├── omarchy/ Arch Linux desktop (omarchy / Hyprland) ├── macos/ macOS ├── nixos/ NixOS └── common/ Shared between platforms
Configurations for an omarchy-based Arch Linux desktop running Hyprland.
Targets Omarchy 4 (“quattro”), which ships as a system package under
/usr/share/omarchy and configures Hyprland in Lua. Omarchy’s defaults load
first and these files override them afterwards.
install.sh— preflights selected components, backs up replaced files, and stows individual files; service activation requires--enable-servicesghostty/— terminal config; colors follow the active Omarchy themehypr/— Hyprland Lua overrides:bindings.lua,input.lua,looknfeel.lua, scripts- Neovim uses
common/nvim/, stowed as individual files with--no-folding. Omarchy’s generated theme, local lockfile, transparency and clipboard support remain in the live config alongside the shared links. FFF keeps the primary search keys; Telescope supplies the shared Doom-style directory searches. The installer backs up replaced files and migrates the formeromarchy/nvim/symlinks. See the shared Neovim configuration. systemd/— Grasp relay unit plus explicitly opt-in Downloads cleanup; neither service is automatically enabled by the default installationchromium-extensions.md— reference list of Web Store extensions to reinstall; not stowed or applied by the installer
Deliberately untracked, because Omarchy rewrites them in place and would replace a stowed symlink with a regular file:
~/.config/hypr/monitors.lua— rewritten byomarchy-hyprland-monitor-scaling(sed -i)~/.config/omarchy/shell.json— bar, panel, and idle config, rewritten byomarchy bar(mv)~/.config/nvim/lua/plugins/theme.lua— recreated byomarchy-nvim-setupon every run as a relative symlink into~/.local/state/omarchy. Stowing it would resolve the link from this repo instead of$HOME, breaking theme switching.~/.config/nvim/lazy-lock.json— rewritten by lazy.nvim on every:Lazy update
Also untracked on purpose, both generated by Omarchy and easy to regenerate:
~/.config/starship.toml— Omarchy’s shipped prompt. Starship has no include mechanism, so tracking it would mean vendoring the whole upstream file to carry a local tweak.~/.XCompose— written by/usr/share/omarchy/install/user/xcompose.shfrom$OMARCHY_USER_NAME/$OMARCHY_USER_EMAIL.
The status bar is no longer Waybar; Omarchy 4 renders it from Quickshell and
configures it through ~/.config/omarchy/shell.json.
Configurations for macOS.
install.sh— stows all packages below, installs Homebrew bundle, sets up oh-my-zsh, fzf, and macOS defaultsBrewfile— Homebrew formulae, casks, and Mac App Store appszsh/—.zshrc, powerlevel10k prompt,.lessfilter.shtmux/— tmux config and a CPU/memory status scriptskhd/— hotkey daemon bindingsyabai/— tiling window manager rulessketchybar/— status bar; highlights the focused mission control spacepip/— pip configuration
NixOS system configuration managed with flakes and home-manager.
flake.nix— inputs and outputshosts/— per-host configurations (fusion-vm,example)modules/— shared system-level modules (packages, services)home/eduardo/— user environment (packages, waybar, gpg-agent, nushell, fzf, zoxide)hypr/— Hyprland config for NixOS hostsdeploy.sh— deployment helper script
Shared configs used on both omarchy and macOS (and referenced from NixOS).
doom/— Doom Emacs configuration (init.el,config.el,packages.el, keybindings, org templates)nvim/— shared LazyVim configuration, extras and keybindings; platform branches preserve Omarchy integration and keep Nix-managed tooling NixOS-onlyauthinfo/— encrypted.authinfo(git-crypted); stowed on macOS, referenced as an out-of-store symlink on NixOSskills/— agent skills shared by Claude Code and Copilot CLI;claude/andcopilot/symlink into it rather than duplicatingcopilot/— Copilot CLI:copilot-instructions.md(global agent instructions applied in every repository) plus skill symlinks. Stowed with--no-foldingso~/.copilotkeeps its live state (config.json,logs/,session-store.db) and hand-made skill symlinksclaude/— Claude Codesettings.json, hooks, and the same skill symlinks; also stowed with--no-foldingpi/— pi agent settings, prompts, and extensions. On Omarchy, selected Claude, Copilot, and pi components discover all shared skills at installation time rather than depending on the older tracked skill aliases
make install-omarchy
# or directly:
./omarchy/install.shRequires Bash, GNU Stow, coreutils, and findutils. Pass --dry-run to preview
changes without touching the filesystem, or --doctor to report runtime
prerequisites without installing anything. Use --only doom,copilot (for
example) to limit the selected components. Missing/locked authinfo is skipped
with a warning; --require-secrets makes it a preflight failure.
The default installation does not enable or start services. Downloads cleanup
requires explicit selection (--only downloads-cleanup or
--with-downloads-cleanup); it permanently deletes eligible contents and
defaults to seven-day retention. Starting services from the installer requires
--enable-services. The former zero-age global cleanup rule is now a harmless
compatibility placeholder.
See the Omarchy operations guide for destinations, prerequisites, activation,
backups, rollback, and recovery. Run make check-omarchy for the isolated
Linux/shared-configuration regression suites.
To install or migrate only Neovim, without changing services or other dotfiles:
./omarchy/install.sh --nvim-only --dry-run
./omarchy/install.sh --nvim-onlyOn Omarchy, keep ~/.config/nvim and its plugin directories real, not directory
symlinks. An explicit Omarchy Neovim refresh replaces the config; rerun the
targeted installer afterwards. Shared files need their own review of upstream
changes, rather than assuming package updates merge those changes automatically.
make install-macos
# or directly:
./macos/install.shRequires gpg with the signing key imported and brew available.
cd nixos && make switchcommon/authinfo/.authinfo is encrypted with git-crypt. Running the installers
on a machine without the key will silently skip authinfo stowing (macOS) or
produce a broken symlink (NixOS) until the repo is unlocked.
On Omarchy, the installer detects a locked authinfo file, warns, and leaves existing credentials untouched. It never decrypts the repository or prints credential contents.
For detailed instructions on decrypting the .authinfo file, including
installation steps, GPG key requirements, and security considerations for
forking, see common/authinfo/README.md.
make gitleaks # scan against stored baseline
make gitleaks-baseline-regen # regenerate baseline after a deliberate change