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_aliasesand$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)