- Shell 100%
| bash | ||
| cli | ||
| git | ||
| sh | ||
| ssh | ||
| templates/local | ||
| terminals | ||
| zsh | ||
| backup | ||
| bootstrap.sh | ||
| README.md | ||
| restore | ||
dotfiles
Personal dotfiles designed to run on more than one Linux machine.
Quick Start
Clone the repository, then run:
./bootstrap.sh --yes
The default bootstrap behavior is conservative:
- detect the package manager and install only base dependencies:
curl,git,rsync,zsh - restore dotfiles as symlinks into
$HOME - skip optional tool installers
- back up replaced files under
~/.dotfiles-backup/<timestamp>/
To install optional tools too:
./bootstrap.sh --yes --optional-tools
Optional tools currently mean Oh My Zsh, Starship, Atuin, and Rust.
Restore Only
Use restore when dependencies are already installed:
./restore --link
./restore --copy
./restore --link --dry-run
--link keeps $HOME files pointing at this repo. --copy copies files into
place. Existing targets are moved to ~/.dotfiles-backup/<timestamp>/ before
replacement unless --no-backup is passed.
Machine-Specific Overrides
Do not fork the repo for host-specific paths or secrets. Put local-only files in:
~/.config/dotfiles/environment.local.zsh
~/.config/dotfiles/zshrc.local.zsh
~/.environment.local.zsh
~/.dotfiles.local.zsh
Examples of things that belong there:
- machine-specific PATH entries
- work-only aliases
- private tokens or environment variables
- host-specific SSH or cluster helpers
Templates are provided in templates/local/. They are examples only and are
not installed by bootstrap.sh or restore.
Shell Layout
zsh/.zshenv: minimal zsh setup loaded by every zsh processzsh/.zprofile: zsh login-shell setupzsh/.zshrc: interactive zsh setupzsh/core/: PATH, options, completion, and Oh My Zsh setupzsh/aliases/: simple aliases grouped by domainzsh/functions/: shell functions grouped by domainzsh/integrations/: optional external tool hookszsh/*.zsh: compatibility wrappers for older installsbash/.bashrc: interactive bash setupsh/.profile: POSIX login-shell setupcli/: user scripts restored to~/cli
The zsh config skips missing tools and paths. For example, missing nvm,
Homebrew, TeX Live, Starship, Atuin, or optional Oh My Zsh plugins should not
break startup.
restore installs the zsh module directories under
~/.config/dotfiles/zsh/. In --link mode they point back to this repository;
in --copy mode they are copied into place.