feat: neovim — explicit lazy.nvim config (no LazyVim)#3
Open
davidstosik wants to merge 4 commits intov5-reduxfrom
Open
feat: neovim — explicit lazy.nvim config (no LazyVim)#3davidstosik wants to merge 4 commits intov5-reduxfrom
davidstosik wants to merge 4 commits intov5-reduxfrom
Conversation
mitamae is a single static binary (mruby compiled in) that provides a Chef-like DSL for package management. Its `package` resource auto-detects the system package manager (Homebrew on macOS, apt on Linux), so one recipe works everywhere. bootstrap.sh downloads the right mitamae binary for the current platform (macOS/Linux, x86_64/aarch64) and runs the recipe. Packages installed: neovim, gh, tmux, ripgrep, fzf, mise. Ghostty (brew cask) is macOS-only. mitamae handles package installation; install.sh stays for symlinking. Clean separation of concerns.
Complete Neovim configuration using lazy.nvim as plugin manager,
with every plugin explicitly configured. No LazyVim framework.
Structure:
config/nvim/
├── init.lua — entry point
└── lua/
├── options.lua — editor options
├── keymaps.lua — key mappings
├── autocmds.lua — autocommands
└── plugins/
├── init.lua — lazy.nvim bootstrap
├── colorscheme.lua — Tokyo Night
├── telescope.lua — fuzzy finder
├── treesitter.lua — syntax highlighting
├── lsp.lua — language servers (Mason + lspconfig)
├── completion.lua — nvim-cmp
├── ui.lua — lualine, oil.nvim, gitsigns, which-key, indent guides
└── editor.lua — comments, pairs, surround, endwise, fugitive, trouble
Plugin choices:
- Tokyo Night colorscheme (consistent with tmux + ghostty theme)
- Telescope with fzf-native (replaces fzf.vim from v3)
- Treesitter for Ruby, Lua, JS/TS, Bash, YAML, Markdown, and more
- LSP via Mason: ruby_lsp and lua_ls pre-configured
- nvim-cmp with Tab completion (LSP, buffer, path, snippets)
- Lualine statusline with Tokyo Night theme
- Oil.nvim as file explorer (press - to open parent dir)
- Gitsigns for git gutter decorations + hunk navigation
- vim-fugitive for :Git commands (carried from v1-v3 vim config)
- Comment.nvim (replaces vim-commentary from v3)
- nvim-surround, nvim-autopairs (replaces auto-pairs from v3)
- nvim-treesitter-endwise (replaces vim-endwise from v1-v3)
- Trouble for diagnostics list
- Todo-comments for TODO/FIXME highlighting
- Which-key for keybinding discovery
- vim-sleuth for auto-indentation detection (from v3)
Key mappings:
- Leader: , (comma, same as v1-v3 vim config)
- C-p: find files (same as v1-v3 vim config)
- Leader+f*: telescope pickers (files, grep, buffers, etc.)
- gd/gr/gi/K: LSP navigation
- Leader+ca: code action, Leader+rn: rename
- gc/gcc: toggle comments
- -: open file explorer (oil.nvim)
- ]/[h: next/prev git hunk
- Leader+xx: diagnostics list (Trouble)
Design decisions:
- No LazyVim — full control over every plugin and mapping
- Lazy-load where sensible (events, commands, keys) but don't be extreme
- Mason for LSP server management (auto-install, cross-platform)
- Oil.nvim over nvim-tree — lighter, feels more like editing a buffer
- Explicit over implicit — every option documented in its file
The endwise plugin requires explicit activation in the treesitter setup opts, not just being listed as a dependency.
Adds the nvim symlink to install.sh and documents the neovim plugin setup in README.md.
3c4edf1 to
672b0fe
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is this?
Neovim configuration using lazy.nvim (the plugin manager) directly, with every plugin explicitly configured. No LazyVim framework — full control, no hidden magic.
Plugins
Each plugin lives in its own file under
config/nvim/lua/plugins/:-to browse filesystem):Gitcommandsgc/gcc)endin Ruby/LuaKey mappings
,(comma)C-p: Find files (Telescope)<leader>fg: Live grep<leader>fb: Buffers-: Open file explorer (Oil)gd/gr/K: LSP go-to-definition, references, hovergc/gcc: Toggle comments]d/[d: Next/prev diagnosticStructure
Commits
feat: neovim — explicit lazy.nvim config (no LazyVim)— full neovim setupfix: enable treesitter-endwise in treesitter config— endwise needs explicit opt-in in treesitter setup