Personal shell configuration for macOS and Ubuntu/Debian.
git clone <repo-url> ~/.dotfiles
cd ~/.dotfiles
# Preview what will happen
DRY_RUN=true ./install.sh
# Run for real
./install.shThe install script detects your OS, installs packages, and symlinks config files into place. Existing files are backed up to ~/.dotfiles-backup-<timestamp>/ before overwriting.
| File | Purpose |
|---|---|
.bash_profile |
Shell init: loads dotfiles, sets up brew/pyenv/go/cargo/fzf |
.exports |
Environment variables (editor, history, locale) |
.aliases |
Shortcuts, eza/bat/fd wrappers, k8s/cloud/git aliases |
.functions |
Utilities: calc, targz, json, gwt (git worktree), etc |
| Config | Tool |
|---|---|
starship.toml |
Starship prompt (dark teal theme with powerline + nerd font icons) |
starship-simple.toml |
Minimal single-line starship prompt |
ghostty.config |
Ghostty terminal |
hammerspoon.lua |
Hammerspoon window management (macOS) |
RectangleConfig.json |
Rectangle window snapping (macOS) |
karabiner.json |
Karabiner-Elements key remapping (macOS) |
Both platforms: ripgrep, bat, fd, jq, yq, shellcheck, btop, kubectl, tmux, zoxide, starship
macOS (brew): eza, sk (skim), jqp, jnv, git-delta, kubectx, pnpm, uv, difftastic, lazygit, lazydocker, dust, xh, hammerspoon, rectangle, google-cloud-sdk
Ubuntu: Packages not in apt are installed via curl installers (starship, zoxide, kubectl, lazygit, lazydocker, pnpm, uv) or cargo (skim, eza, jnv, difftastic, dust, xh).
The installer prompts for a theme choice (or set STARSHIP_THEME=simple to skip the prompt):
- default -- powerline segments with git metrics, k8s context, language versions, battery
- simple -- minimal single-line prompt
- Bash 4+
- A Nerd Font for starship icons (the powerline theme uses nerd font symbols)
- macOS: Xcode Command Line Tools (
xcode-select --install) - Ubuntu:
curl,git,sudo