Cross-platform dotfiles for Windows, macOS, and Linux.
Replaces my archived mac dotfiles with a unified, cross-platform setup built around modern CLI tools.
- Dotter — symlink management with plain git
- Nushell + Starship — shell and prompt
- Helix + Zed — terminal and GUI editors
- Git ecosystem: delta, difftastic, mergiraf
- CLI tools: bat, ripgrep, fd, fzf, sd, eza, zoxide, bottom
- Tooling: topgrade, taplo, Biome, marksman
| Tool | Scope | Platforms |
|---|---|---|
Scoop (scoopfile.json) |
CLI / dev tools | Windows |
| winget | GUI / system tools | Windows |
Homebrew (Brewfile) |
CLI / dev tools | macOS, Linux |
mise (mise/config.toml) |
Node.js, npm globals, Go tools | All |
| uv | Python versions, venvs, packages | All |
| rustup | Rust toolchain | All |
topgrade orchestrates everything in one command: package managers → toolchains → mise install for ecosystem tools.
- XDG Base Directory — consistent config paths (
~/.config/) across platforms - Deltas not defaults — only override defaults, never track full generated configs
- No dot prefix — files stored without dots, Dotter maps to dotted targets
- Flat layout — tool folders at root, single-file tools as bare files
Nushell is the interactive shell. Zsh is the login shell on macOS/Linux — it owns environment variables and PATH.
Nushell can't be a login shell (it doesn't speak POSIX), so terminal emulators launch it via zsh -lc "exec nu". On Windows, env vars come from the system registry instead.
| What | macOS / Linux | Windows |
|---|---|---|
| Env vars (XDG, EDITOR, ...) | shell/env.sh |
scripts/bootstrap.ps1 (registry) |
| PATH | zsh/zprofile |
System PATH (Scoop, rustup) |
| Nushell config | nushell/ |
nushell/ |
| Shell integrations (starship, zoxide, mise) | Generated by scripts/provision.nu into nushell vendor autoload |
Same |
| File | Purpose |
|---|---|
~/.config/shell/env.local.sh |
Extra env vars |
~/.zshrc.local |
Zsh plugins, aliases, local PATH entries |
Adding a new env var: add it to shell/env.sh, add the same value to scripts/bootstrap.ps1 — done.
Warning
This installs a large set of packages tailored to my personal setup. Review scripts/bootstrap.ps1 or scripts/bootstrap.sh before running.
Windows (PowerShell):
irm https://raw.githubusercontent.com/robvenn/dotfiles/main/scripts/bootstrap.ps1 | iexmacOS/Linux (bash):
curl -fsSL https://raw.githubusercontent.com/robvenn/dotfiles/main/scripts/bootstrap.sh | bash