Personal development environment configuration for Ubuntu/Debian. Covers the shell, terminal multiplexer, editor, prompt, and AI tooling.
dotfiles/
├── bash/
│ └── .bashrc # Shell config, aliases, PATH, tool init
├── nvim/ # Neovim config (lazy.nvim) — see nvim/README.md
├── opencode/
│ └── oh-my-opencode.jsonc # oh-my-opencode agent/model routing config
├── starship/
│ └── starship.toml # Starship prompt config
├── tmux/
│ └── .tmux.conf # tmux config with vim-tmux-navigator
├── scripts/
│ ├── install-tools.sh # Install all CLI tools on a fresh machine
│ └── setup.sh # Symlink configs to their expected locations
└── cli-cheatsheet.md # Personal command reference
git clone <repo-url> ~/dotfiles
cd ~/dotfiles
# 1. Install CLI tools
bash scripts/install-tools.sh
# 2. Symlink configs
bash scripts/setup.sh
# 3. Reload shell
source ~/.bashrcsetup.sh backs up any existing files before overwriting (e.g. ~/.bashrc → ~/.bashrc.bak).
Key customizations on top of the Ubuntu default:
| What | Detail |
|---|---|
| Prompt | Starship (eval "$(starship init bash)") |
ls |
Replaced with eza |
cat |
Replaced with bat |
vim |
Aliased to nvim |
cd |
Enhanced with zoxide |
| Fuzzy search | fzf sourced from ~/.fzf.bash |
| Python versions | pyenv + pyenv-virtualenv |
| Node versions | nvm |
| Python tooling | uv (with shell completion) |
| Neovim binary | /opt/nvim-linux-x86_64/bin on PATH |
| direnv | eval "$(direnv hook bash)" |
| ROS | colcon_cd, ROS_DOMAIN_ID=0 |
Full Neovim config using lazy.nvim. See nvim/README.md for the complete plugin list, keymaps, LSP servers, and Mason tools.
Highlights: snacks.nvim (file explorer + picker), blink-cmp, LSP via mason-lspconfig, conform.nvim formatting, nvim-lint, nvim-dap, neotest, treesitter, catppuccin theme, vim-tmux-navigator.
Full-featured prompt showing: OS icon, user, host, directory, git branch/status/metrics, active language runtimes, cloud context (AWS/GCP/Azure/k8s), command duration, time (right prompt), and battery.
| Binding | Action |
|---|---|
prefix + | |
Split horizontal |
prefix + - |
Split vertical |
prefix + r |
Reload config |
prefix + h/j/k/l |
Resize pane |
prefix + m |
Toggle pane zoom |
C-h/j/k/l |
Navigate panes (vim-tmux-navigator) |
v / y (copy mode) |
Begin selection / copy |
Plugins: tpm, vim-tmux-navigator, tmux-resurrect, tmux-continuum, catppuccin theme.
Sessions auto-saved and restored via tmux-continuum.
oh-my-opencode agent routing config with a tiered multi-agent setup:
| Tier | Agents | Purpose |
|---|---|---|
| 1 — Orchestrators | sisyphus, atlas |
Top-level coordination |
| 2 — Planning | prometheus, metis, momus |
Structured planning + validation |
| 2 — Execution | hephaestus, oracle |
Implementation + debugging |
| 3 — Specialists | sisyphus-junior, librarian, explore, multimodal-looker |
Fast execution, research, vision |
Documented and reinstallable via scripts/install-tools.sh.
| Tool | Purpose | Install method |
|---|---|---|
| uv | Python package/project manager | curl astral.sh/uv |
| pyenv | Python version manager | curl pyenv.run |
| nvm | Node version manager | curl nvm install script |
| starship | Shell prompt | curl starship.rs/install.sh |
| fzf | Fuzzy finder | git clone + install |
| zoxide | Smarter cd |
curl install.sh |
| eza | Modern ls |
apt / cargo |
| bat | cat with syntax highlighting |
apt / cargo |
| delta | Git diff pager | cargo install git-delta |
| fd | Faster find |
apt / cargo |
| btop | System monitor | apt / snap |
| yq | YAML/JSON processor | uv tool install yq |
| direnv | Per-directory env vars | curl direnv.net/install.sh |
| xh | Modern HTTP client (httpie-compatible) | GitHub release binary |
| Neovim | Editor | GitHub release tarball → /opt/ |