Personal development environment preferences (dotfiles), organised per tool.
| Path | Installs to (typical) | Purpose |
|---|---|---|
bash/.bash_profile |
~/.bash_profile |
Bash login shell: history, git prompt, starship |
bash/.bash_aliases |
~/.bash_aliases and $ZSH_CUSTOM/aliases.zsh |
Aliases shared between bash and zsh |
zsh/.zshrc |
~/.zshrc |
Oh My Zsh, plugins, history, starship |
zsh/.zshenv |
~/.zshenv |
Cargo environment |
git/.gitconfig |
~/.gitconfig |
Git aliases and sensible defaults |
git/.gitignore_global |
~/.gitignore_global |
Global gitignore (wired via core.excludesfile) |
starship/starship.toml |
~/.config/starship.toml |
Starship prompt |
terminator/config |
~/.config/terminator/config |
Terminator terminal |
lsd/config.yaml, lsd/icons.yaml |
~/.config/lsd/ |
lsd (ls replacement) |
scripts/update-git-prompt.sh |
— (run it, don't install it) | Fetches the latest upstream git-prompt.sh |
Symlink (preferred — edits in the repo apply immediately) or copy the files to the locations above. Example:
ln -s "$PWD/git/.gitconfig" ~/.gitconfig
ln -s "$PWD/git/.gitignore_global" ~/.gitignore_global
ln -s "$PWD/zsh/.zshrc" ~/.zshrc
ln -s "$PWD/bash/.bash_aliases" ~/.bash_aliases
ln -s "$PWD/bash/.bash_aliases" "$HOME/.oh-my-zsh/custom/aliases.zsh"
ln -s "$PWD/starship/starship.toml" ~/.config/starship.tomlThen set your identity locally (the committed .gitconfig ships a placeholder):
git config --global user.name "Your Name"
git config --global user.email "you@example.com"Note:
git config --globalwrites through the symlink into this repo'sgit/.gitconfig— if you symlinked it, set your identity by hand in a separate machine-local file instead, e.g. keep~/.gitconfigas a 3-line file that setsuser.*and uses[include] path = /path/to/devpreferences/git/.gitconfig.
~/.git-prompt.sh (used by bash/.bash_profile for __git_ps1) is not vendored in
this repo — it used to be, and went stale. Install or update it with:
scripts/update-git-prompt.shThis downloads the canonical version from
git/git contrib/completion/git-prompt.sh
to ~/.git-prompt.sh (override the destination with GIT_PROMPT_DEST=/path).
Re-run it whenever you want to pick up upstream changes. The decision record is in
docs/plans/2026-06-10-improvement-plan.md.
CI runs ShellCheck on the bash files and scripts/, plus a zsh -n syntax check on the
zsh files (see .github/workflows/shellcheck.yml). Run locally:
shellcheck -s bash bash/.bash_aliases bash/.bash_profile
shellcheck scripts/*.sh
zsh -n zsh/.zshrcContributor/agent conventions live in AGENTS.md; improvement plans live in docs/plans/.
- Reference article to setup a global .gitignore file
- Reference article to setup a global .gitconfig file as well as git alias
- The default
.gitconfigfile is located at~/.gitconfig(for Unix systems; see the article above for other OSes)