Personal Neovim configuration built on LazyVim.
git clone git@github.com:thiras/nvim.git ~/.config/nvim
nvimOn first launch, lazy.nvim bootstraps itself, installs every plugin pinned in lazy-lock.json, and :Mason pulls down LSP servers, formatters, and linters.
init.lua entrypoint
lua/config/ lazy.nvim bootstrap + override hooks (options, autocmds, keymaps)
lua/plugins/ custom plugin specs and LazyVim overrides
lazyvim.json enabled LazyVim "extras" — toggle with :LazyExtras
lazy-lock.json plugin commit pins
- claudecode.nvim — Claude Code integration, eager-loaded.
- image.nvim + diagram.nvim — inline image and Mermaid rendering in the terminal.
- aerial.nvim — symbol outline pinned to the right edge.
- gitlinker.nvim —
<leader>gyyanks a permalink to the line under the cursor;<leader>gYopens it in the browser. - snacks explorer tuned to show dotfiles (
.env,.env.*) while keeping gitignored files hidden. - LazyVim extras for Go, Rust, Python, TypeScript, Terraform, Ansible, Helm, Solidity, SQL, Tailwind, Docker, JSON, YAML, TOML, Markdown.
For the image/diagram pipeline you'll need:
- ImageMagick (
magickon PATH) — image.nvim uses themagick_cliprocessor. - mermaid-cli (
mmdc) — diagram.nvim shells out to it for rendering. - A terminal with image protocol support (Kitty graphics or Sixel).
On Ubuntu 23.10+, AppArmor blocks unprivileged user namespaces and breaks puppeteer's Chromium sandbox. lua/plugins/diagram.lua writes a puppeteer config that passes --no-sandbox to mmdc so rendering still works.
Lua sources are formatted with stylua (stylua .); settings are in stylua.toml.