Getting Started
How nvdots works under the hood
How it works
Section titled “How it works”nvdots uses nix-wrapper-modules to wrap Neovim with plugins and configuration and lze for loading and configuring plugins. This way, Nix is only used for downloading Neovim and anything it needs e.g. plugins while the entire configuration can remain in Lua.
The flake exports an overlay that replaces pkgs.neovim with nvdots and one package that you can directly install from the flake (see installation). It’s nothing worth looking at since it only handles making nvdots usable. But do take a look at nvim.nix as it defines the nvdots package itself.
Project structure
Section titled “Project structure”flake.nix- Exports the overlay and packagesnvim.nix- The package itselfinit.lua- Imports all Lua files and callslzeto load all plugins
All Lua modules are inside lua/ obviously.
General
Section titled “General”ui.lua- Adjusts visual settings e.g. line numbers, scrolloff, text wrapping etc.general.lua- Defines a bunch of useful autocommands and adjusts code-folding, searching, file handling and other miscellaneous things e.g. mouse support.mappings.lua- Sets a bunch of useful keybinds e.g. binds to goto next/previous buffer and delete current buffer.
Plugins
Section titled “Plugins”Inside of the lua/plugins/ directory duh.
core.lua- Configures super important plugins e.g. Treesitter for syntax-highlighting,nvim-lspconfigfor LSP andblink.cmpfor autocompletion.ui.lua- Configures UI focused plugins e.g. the colorscheme, icon pack, Lualine and Noice.useful.lua- Just a bunch of useful plugins e.g. Fyler for managing files, autopairing with nvim-autopairs, code folding with nvim-ufo etc.snacks.lua- Configures snacks.nvim to provide a dashboard, indent guides, picker for files and grep, LazyGit integration and more.mini.lua- Configures a bunch of handy quality-of-life plugins from mini.nvim to enhance your editing experience.