Skip to content

theCat69/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

180 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐱 theCat's dotfiles on Kubuntu

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/.


📦 Contents

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

✅ Prerequisites

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.


🚀 Install

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 install

The script creates symlinks using ln -sf — it is fully idempotent and safe to re-run at any time.

What gets symlinked

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 into install.sh. Copy or symlink them manually if you want them.

Note: .gitconfig is intentionally not symlinked — it contains personal identity info. Uncomment the relevant line in install.sh if 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 ~/.secrets which is sourced by .zshrc at shell startup. Create that file yourself and keep it gitignored.


🛠 Tools & Configs

Neovim

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 ollama is detected on $PATH

Zsh

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: lseza, lleza -la, lteza -la sorted by modified time, greprg, catbatcat, vimnvim
  • Suffix aliases: .md, .rs, .yaml, .json files open directly in the right viewer when typed as a command
  • Global aliases: C pipes to clipboard (clipcopy), H pages --help output through bat
  • Functions: ij [path] launches IntelliJ IDEA detached from the terminal
  • History: 5000 entries, shared across sessions, deduplicated

Ghostty

A GPU-accelerated terminal emulator that starts fast and stays fast.

  • Theme: Gruvbox Dark Hard
  • Font size: 12
  • Pane resize: Alt+Ctrl+Shift+Arrows

Starship

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.gradle with io.quarkus), 🐧 Linux indicator, Zsh shell icon
  • All standard modules (git, language versions, Kubernetes context, etc.) use a consistent [symbol version] bracket style

gitui

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

k9s

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

opencode

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 documentation
    • youtube-transcript — fetch video transcripts as context
    • github — 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

bat

Used as the default cat replacement throughout the shell config (including help paging). Config lives in .config/bat/.

IdeaVim

Vim emulation for IntelliJ IDEA and other JetBrains IDEs. Config is in .config/ideavimrc/.


📚 Further Reading

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

⚠️ Notes & Caveats

  • .gitconfig is not symlinked — it contains my name, email, and signing key. You'll need your own.
  • ~/.secrets is not in this repo — create it yourself and put your API keys / tokens there. It's sourced automatically by .zshrc if 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.nvim only loads if ollama is on your $PATH. No Ollama, no AI features, no errors.
  • AZERTY layoutarrow.nvim navigation is tuned for an AZERTY keyboard. QWERTY users will want to remap.
  • IntelliJ Toolbox paths are hardcoded in .zshrc. Adjust the PATH entries if your Toolbox is installed elsewhere.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors