Personal configuration files for macOS and Linux, organized by topic.
git clone --recursive https://github.com/chazlever/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
script/bootstrapThe bootstrap script will:
- Initialize git submodules
- Prompt for git author name, email, and GitHub username
- Symlink configuration files to your home directory
- Install Starship prompt (via Homebrew on macOS, local binary on Linux)
After the initial bootstrap, use the dot command to keep everything
up-to-date:
dotThis pulls the latest changes, updates submodules, and re-runs all topic installers.
The dot command also supports:
dot -e/dot --edit— Open the dotfiles directory in$EDITORdot -h/dot --help— Show usage information
Everything is organized by topic. Each top-level directory is a topic containing related configuration:
bash/— Bash shell configurationbin/— Custom scripts, added to$PATHgit/— Git configuration and global gitignoressh/— SSH agent helper and proxy functionsstarship/— Starship prompt configuration and installersystem/— Aliases, exports, and PATH managementtmux/— Tmux configuration and pluginsvim/— Vim configuration and pluginszsh/— Zsh configuration and plugins
*.symlink— Symlinked to~/.<basename>(e.g.,zsh/zshrc.symlinkbecomes~/.zshrc)*.config— Symlinked to~/.config/<basename>(e.g.,starship/starship.toml.configbecomes~/.config/starship.toml)*.zsh— Automatically sourced by zshrc.path.zshfiles are loaded first,completion.zshfiles are loaded last.install.sh— Per-topic installer, run byscript/installduring bootstrap*.example— Template files with placeholders, copied and configured during bootstrap
Managed as git submodules under zsh/plugins/:
Put machine-specific configuration in ~/.localrc (not tracked by git).
Git author details are stored in git/gitconfig.local.symlink (generated
during bootstrap, ignored by git).
The structure of this dotfiles repository is inspired by Zach Holman's dotfiles.