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

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors