Cross-platform chezmoi dotfiles for a tiling River / Wayland desktop on Arch Linux — with a matching setup on Windows.
⬆️ clean desktop · ⬇️ tiled session
🎨 Themed colors2 — neutral grays + a green accent (#56c92b), calmer borders (#44a022) — unified across Alacritty, Waybar, Fuzzel, River & mako.
| 🪟 WM · River | 📊 Bar · Waybar | 🚀 Launcher · Fuzzel |
| 🔔 Notifications · mako | 🐚 Shell · ZSH / PowerShell | ✨ Prompt · Starship |
| 🖥️ Terminal · Alacritty | 📝 Editor · NeoVim / LazyVim | 🌿 VCS · Git |
git clone <repo-url> ~/dotfiles
# pin chezmoi to the local repo (one-time; --source does not persist)
mkdir -p ~/.config/chezmoi
echo 'sourceDir = "~/dotfiles"' > ~/.config/chezmoi/chezmoi.toml
chezmoi diff # 👀 preview
chezmoi apply # ✍️ write configs into placeImportant
chezmoi writes real files and won't clobber existing symlinks — if migrating from the
old Make setup, remove the old ~/.config/* and ~/.* symlinks before the first apply.
On Linux, apply also installs any missing system packages declared in
home/.chezmoidata/packages.yaml — a run_onchange
script that re-runs only when that list changes and is a no-op once everything is present.
Note
Prerequisites it can't bootstrap itself: chezmoi, yay (for the AUR packages), and zplug
(git clone https://github.com/zplug/zplug ~/.zplug).
Root-level pieces chezmoi doesn't manage (LY display manager, anacron):
sh ~/dotfiles/bootstrap/linux-system.shPrerequisites winget can't be relied on to place correctly — install these first:
- PowerShell 7 — the MSI build, not the Store/MSIX one.
winget install Microsoft.PowerShellkeeps managing the Store build (a WindowsApps alias Alacritty can't launch); grab the MSI from PowerShell releases → stableC:\Program Files\PowerShell\7\pwsh.exe. - Starship ·
winget install Starship.Starship
git clone <repo-url> C:\projects\dotfiles
mkdir $env:USERPROFILE\.config\chezmoi -Force
'sourceDir = "C:/projects/dotfiles"' | Set-Content $env:USERPROFILE\.config\chezmoi\chezmoi.toml
chezmoi diff # 👀 preview
chezmoi apply # ✍️ write configs + run Windows scriptsapply deploys only the cross-platform configs (Alacritty, Neovim, Git, the PowerShell profile);
the Wayland stack is skipped via .chezmoiignore. The Windows run_once/run_onchange scripts
also set XDG_CONFIG_HOME=%USERPROFILE%\.config (Neovim reads it — relog once) and install the
Nerd Fonts from packages.yaml per-user (registered, not just copied, or Windows won't see them).
Note
Alacritty on Windows ignores XDG_CONFIG_HOME — it only reads %APPDATA%\alacritty. A
generated shim there imports the real ~/.config\alacritty config (single source of truth), and
launches PowerShell 7 in C:\projects with the same Starship prompt and git aliases as zsh.
| Path | What lives here |
|---|---|
📁 home/ |
chezmoi source (.chezmoiroot points here) — see CLAUDE.md for naming conventions. Includes .chezmoidata/packages.yaml (the package manifest) and run_onchange_install-packages.sh.tmpl. |
🐚 shell/ |
runtime libs sourced by ~/.zshrc (aliases, history, themes) |
🥾 bootstrap/ |
one-time Linux system installers |
🔧 dm/, jobs/, swaylock/assets/ |
Linux system configs / assets |