Cross-platform dotfiles of @ShortArrow. Same end state on Windows / Linux / macOS via a single source of truth (dotfm.toml).
Two parallel layers produce the same symlink tree — pick whichever is bootstrappable on the host:
dotfm— small Rust binary, readsdotfm.tomland applies the link rules. Recommended for everyday use.<tool>/setup.ps1/<tool>/setup.sh— bootstrap launchers used whendotfmisn't available yet (fresh boxes, no Rust). They consume the samedotfm.tomlthroughlib/_lib.{ps1,sh}.
Running both is a no-op the second time. See docs/STRUCTURE.md for the full design (decision matrix for symlink / copy / post_apply / script, security rules, how to add a tool).
The everyday flow is dotfm apply. The <tool>/setup.{ps1,sh} launchers exist as per-tool fallbacks for hosts where dotfm isn't installed yet — each one only touches its own tool.
# Install dotfm (https://github.com/ShortArrow/dotfm), then:
git clone https://github.com/ShortArrow/dotfiles.git ~/dotfiles
cd ~/dotfiles
dotfm apply # apply every tool listed in dotfm.toml
dotfm status # verify the symlinks are in placeWindows is the same — clone, cd, dotfm apply from PowerShell.
When you can't install Rust yet, run only the tools you need. Each script is idempotent.
./bash/setup.sh
./git/setup.sh
./tmux/setup.sh
# ....\pwsh\setup.ps1
.\git\setup.ps1
.\glazewm\setup.ps1
# ...git clone https://github.com/ShortArrow/dotfiles.git
cd dotfiles
docker compose up -d --build
docker compose exec nvim /bin/bash -c nvim| Area | Tools |
|---|---|
| Shells / prompt | bash, pwsh, clink, starship |
| Terminals | wezterm, alacritty, windows-terminal |
| Editors | neovim (nvim/src/), vim, vscode, zed |
| Multiplexers / WM | tmux, zellij, glazewm, hyprland, i3wm |
| Git stack | git, lazygit, neogit, git-foresta |
| Tool manager | mise (mise/src/config.toml) — node, python, go, java, rust-cli, aqua |
| File / nav | yazi, fzf, zoxide, lsd, fd, ripgrep |
| Misc | claude (skills + statusline), runex, ssh, keyd |
Each top-level directory contains the actual config files plus optional setup.{ps1,sh} and doctor.ps1. The full mapping (which file goes where on which OS) lives in dotfm.toml.
main only. Topic branches are optional; merge back to main.
See LICENSE.