nvim: per project configuration

#nvim #lua #dev

I finally flipped my config to Neovim 0.12.

This release makes project-local config and package management feel much closer to Neovim itself instead of another layer glued on top.

neovim 12

The part that got me interested: the built-in package manager.

Leaving lazy.nvim Behind

I was using lazy.nvim with a .lazy.lua setup. It worked fine, so this was not some dramatic migration. But with more things moving into Neovim itself, I wanted to see how far the native path could go.

So I moved this part away from lazy.nvim and tried the built-in approach.

Here’s what my .nvim.lua looks like now:

vim.pack.add({
  { src = "https://github.com/neovim/nvim-lspconfig", name = "lspconfig" }
})

vim.lsp.enable({
  "ts_ls", -- typescript
  "astro", -- astro
  "tailwindcss", -- tailwindcss
  "tinymist", -- typst
  "harper_ls", -- markdown
  "ty", -- python
})

return {}

What This Does

  • Installs nvim-lspconfig using the built-in package manager
  • Enables a set of LSP servers using defaults from upstream lspconfig
lsp usages

That’s it. Less config, fewer moving parts.