My personal developer environment, carefully tuned over time for a polyglot workflow (Java, Kotlin, Rust, TypeScript, Go, Python, Scala, and more). I'm picky about my setup — every tool here has earned its place. If you're the kind of person who spends a weekend getting your cursor blink animation just right, we're the same kind of person.
Everything is managed via idempotent symlinks from this repo into ~/.config/.
| Tool | What it is |
|---|---|
| Neovim | Full IDE-grade editor config via lazy.nvim (LSP, DAP, Treesitter, AI) |
| Zsh | Shell config: Oh My Zsh + Starship prompt, smart aliases, PATH management |
| Ghostty | Fast GPU-accelerated terminal emulator |
| Starship | Cross-shell prompt with custom modules (Quarkus, Zsh icon, time) |
| gitui | Terminal-based git client with Catppuccin themes |
| k9s | Kubernetes TUI with Gruvbox skin and custom resource aliases |
| opencode | AI coding assistant with external agent pipeline (la-briguade), MCP servers, and plugins |
| bat | cat replacement with syntax highlighting |
| IdeaVim | Vim emulation config for JetBrains IDEs |
These must be installed before running install.sh. Most are available via your distro's package manager or their official install scripts.
- zsh
- Oh My Zsh
- Neovim (0.10+, install into
/opt/nvim) - Starship
- Ghostty
- gitui
- zoxide
- eza — modern
ls - ripgrep — fast
grep - bat / batcat — syntax-highlighted
cat - Bun — JS runtime (for opencode plugins)
- nvm — Node version manager
- la-briguade — opencode plugin that provides agents/skills/slash commands/hooks (
npm install la-briguade && npx la-briguade install) - @thecat69/cache-ctrl — cache-control CLI + opencode integration (
npm install -g @thecat69/cache-ctrl && cache-ctrl install) - Rust (via rustup)
- Go (installed to
/usr/local/go) - k9s
- opencode
- sjvm — custom Rust-based JVM switcher (not in this repo)
- Ollama — optional, enables in-editor AI completions via
gen.nvim
Note: zsh-autosuggestions and zsh-syntax-highlighting must be installed as Oh My Zsh custom plugins.
git clone https://github.com/theCat69/dotfiles.git ~/dev-conf/dotfiles
cd ~/dev-conf/dotfiles
zsh install.sh
npm install la-briguade && npx la-briguade install
npm install -g @thecat69/cache-ctrl && cache-ctrl installThe script creates symlinks using ln -sf — it is fully idempotent and safe to re-run at any time.
| Source | Target |
|---|---|
.zshrc |
~/.zshrc |
.config/ghostty/ |
~/.config/ghostty |
.config/starship.toml |
~/.config/starship.toml |
.config/nvim/ |
~/.config/nvim |
.config/gitui/ |
~/.config/gitui |
.config/opencode/ |
~/.config/opencode |
Note:
.config/k9s/,.config/bat/, and.config/ideavimrc/are present in this repo but are not wired intoinstall.sh. Copy or symlink them manually if you want them.
Note:
.gitconfigis intentionally not symlinked — it contains personal identity info. Uncomment the relevant line ininstall.shif you know what you're doing (i.e., if you are me).
Note: Secrets (API keys, tokens) are not stored in this repo. They live in
~/.secretswhich is sourced by.zshrcat shell startup. Create that file yourself and keep it gitignored.
A full IDE-grade setup built on lazy.nvim. The entire config lives in .config/nvim/lua/ and is organised by category (lsp/, ui/, git/, ai/, etc.).
- Theme: Gruvbox Dark (auto-detects light/dark terminal background, transparent background, mode-coloured blinking cursor)
- LSP: 20+ servers managed by Mason with auto-update —
clangd,rust_analyzer,pyright,lua_ls,ts_ls,gopls,kotlin_language_server,angularls,tailwindcss,zls,solidity_ls,yamlls,bashls,dockerls, and more - Language extras: rust-tools, nvim-metals (Scala), nvim-dap + dapui (debug adapter), Jenkinsfile linter
- Completion: nvim-cmp + LuaSnip + friendly-snippets
- Treesitter: full parse-tree highlighting + context + textobjects
- UI: noice.nvim + nvim-notify (command line overhaul), nvim-tree, dropbar (breadcrumbs), lualine (macro-recording indicator)
- Git: gitsigns, vim-fugitive, vim-rhubarb
- Navigation: Telescope (fzf-native + ui-select), arrow.nvim configured for AZERTY keyboards
- AI: gen.nvim connecting to a local Ollama instance — lazy-loads only when
ollamais detected on$PATH
Oh My Zsh-based config with Starship overriding the prompt entirely.
- Plugins:
git,vi-mode,docker,docker-compose,zsh-autosuggestions,zsh-syntax-highlighting - Smart aliases:
ls→eza,ll→eza -la,lt→eza -lasorted by modified time,grep→rg,cat→batcat,vim→nvim - Suffix aliases:
.md,.rs,.yaml,.jsonfiles open directly in the right viewer when typed as a command - Global aliases:
Cpipes to clipboard (clipcopy),Hpages--helpoutput through bat - Functions:
ij [path]launches IntelliJ IDEA detached from the terminal - History: 5000 entries, shared across sessions, deduplicated
A GPU-accelerated terminal emulator that starts fast and stays fast.
- Theme: Gruvbox Dark Hard
- Font size: 12
- Pane resize:
Alt+Ctrl+Shift+Arrows
A highly informative prompt that stays out of the way when you don't need it.
- Timestamp on line 1, everything else below
- Custom modules: Quarkus 🏃 (detects
pom.xml/build.gradlewithio.quarkus), 🐧 Linux indicator, Zsh shell icon - All standard modules (git, language versions, Kubernetes context, etc.) use a consistent
[symbol version]bracket style
A terminal UI for git that makes staging hunks and browsing history actually pleasant.
- Ships with all four Catppuccin theme variants (frappe, latte, macchiato, mocha)
- Custom keybindings for muscle-memory consistency
Kubernetes cluster management from the terminal, the way it should be.
- Skin: Gruvbox Dark
- Custom resource aliases:
dp(deployments),sec(secrets),jo(jobs),cr(clusterroles),crb(clusterrolebindings),ro(roles),rb(rolebindings),np(networkpolicies) - Log tail: 10,000 lines
An AI coding assistant with a full custom agent pipeline and tool configuration.
The agents/skills pipeline is provided by the external la-briguade opencode plugin, and cache-control functionality is provided by @thecat69/cache-ctrl.
- Runtime: Bun
- Plugins:
cc-safety-net(commit guardrails),@slkiser/opencode-quota(token tracking),@mohak34/opencode-notifier(desktop notifications) - MCP servers:
context7— up-to-date library documentationyoutube-transcript— fetch video transcripts as contextgithub— read-only GitHub access (repos, security advisories, Actions)
- Custom agents/skills: installed from
la-briguade(production-grade multi-agent pipeline) - Custom LSP:
jdtls-lombok— Java language server with Lombok annotation processing pre-wired
Used as the default cat replacement throughout the shell config (including help paging). Config lives in .config/bat/.
Vim emulation for IntelliJ IDEA and other JetBrains IDEs. Config is in .config/ideavimrc/.
Each tool's configuration directory contains its own README with details on settings, keymaps, and customisation:
| Tool | README | Description |
|---|---|---|
| Neovim | .config/nvim/ |
Full IDE config: LSP, DAP, Treesitter, AI, theme |
| Ghostty | .config/ghostty/ |
Terminal theme, font size, and split-resize keybindings |
| gitui | .config/gitui/ |
Catppuccin theme variants and custom keybindings |
| k9s | .config/k9s/ |
Gruvbox skin and custom resource aliases |
| bat | .config/bat/ |
GitHub theme and style flags |
| IdeaVim | .config/ideavimrc/ |
Leader-key bindings for JetBrains IDE actions |
| opencode | .config/opencode/ |
Agent pipeline, MCP servers, plugins, and custom LSP |
.gitconfigis not symlinked — it contains my name, email, and signing key. You'll need your own.~/.secretsis not in this repo — create it yourself and put your API keys / tokens there. It's sourced automatically by.zshrcif it exists.sjvm(my custom JVM version switcher) is a separate Rust project at~/projects/rust/sjvm. It's not included here.- Ollama is optional —
gen.nvimonly loads ifollamais on your$PATH. No Ollama, no AI features, no errors. - AZERTY layout —
arrow.nvimnavigation is tuned for an AZERTY keyboard. QWERTY users will want to remap. - IntelliJ Toolbox paths are hardcoded in
.zshrc. Adjust thePATHentries if your Toolbox is installed elsewhere.