Open-source project
ayamir/nvimdots avatar
ayamir/nvimdots

nvimdots: a structured Neovim config for people who want an IDE, not a hobby

A well configured and structured Neovim.

3,417 stars479 forksLuaBSD-3-Clause

At a glance

What is it?
ayamir/nvimdots is a Lua Neovim configuration for Linux, macOS and Windows that ships with lazy.nvim plugin management and a Nix flake. The trade-off is that you inherit someone else's editor decisions, and the branch you clone is pinned to a Neovim version.
Who is it for?
Adopt nvimdots if you want a complete Lua Neovim setup on Linux, macOS or Windows and are willing to track its branch policy: main targets nvim 0.12 stable, 0.11 and 0.10 have their own branches, and 0.13 is nightly-only. Skip it if you want to build your own plugin set from scratch or if you run a Neovim version with no matching branch.
Can I use it commercially?
Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 15 days ago.
What is it written in?
Mainly Lua, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What nvimdots actually solves, and who it is for

Neovim ships as an editor, not an IDE. Getting from a fresh install to something that completes code, searches a project, and manages plugins means assembling a plugin set, writing Lua glue for each one, and keeping the whole thing working across Neovim releases. nvimdots is one answer to that assembly problem: a repository that hosts a complete configuration rather than a plugin. The README describes it as "our Neovim configuration for Linux (with NixOS support), macOS, and Windows," with init.lua as the entry point. The audience is implied by the feature list: "Simple. Runs out of the box" and "Powerful. Full functionality to code." That is aimed at people who want an editor they can use today, not a configuration project to maintain. The repository topics (neovim-setup, neovim-configuration, neovim-dotfiles) point the same way. If your interest is in writing your own config, this is somebody else's config, and that distinction matters more than any feature bullet.

How the config is structured and how plugins get loaded

The entry point is init.lua at the repository root, and the configuration itself lives under lua/. Plugin management is delegated to lazy.nvim, which the README names directly: "We currently manage plugins using lazy.nvim." A lazy-lock.json file sits at the top level, which is the lockfile lazy.nvim uses to pin plugin revisions. That file is the practical answer to the usual complaint about config repositories, namely that a plugin update can break your editor overnight: the lock records the revisions the config was tested against. The README's feature list claims a startup time of "Less than 50ms" and notes it "Depends on SSD and CPU, tested on Zephyrus G14 2022 version." Treat that as a single-machine observation rather than a specification, because that is exactly how the README frames it. Other top-level entries fill in the rest: stylua.toml for Lua formatting, snips/ for snippets, tutor/ for tutorial content, and scripts/ for setup helpers. The layout is conventional for a Lua Neovim config, which is the point. There is no custom loader to learn.

Branch policy: the constraint that decides whether nvimdots works for you

This is the part most config repositories leave implicit and nvimdots makes explicit. The README carries a branch table mapping each branch to a supported Neovim version: 0.13 for "nvim 0.13 nightly," main for "nvim 0.12 stable," 0.11 for nvim 0.11, and 0.10 for nvim 0.10. Cloning main onto an older Neovim is not a supported combination, and the table is the only place that is stated. The 0.13 branch comes with an unusually blunt warning in the README: it "is intended for nightly Neovim builds and is not stable," it "typically harbors subtle issues scattered throughout," and issues filed against it "will be closed directly unless a viable solution is proposed or included." That is a maintainer setting a boundary rather than promising support, and it is worth reading as such. The practical consequence is that upgrading Neovim and upgrading the config are coupled operations. You check your Neovim version, you check out the matching branch, and you do not mix them. The release history supports the coupling: v4.3.0 shipped on 2026-06-28, following v4.2.0 on 2025-06-05, so tagged releases arrive roughly annually while branch maintenance tracks Neovim's own cadence. The last push to the repository was on 2026-09-15.

Installing nvimdots and opening a first file

The README's install instructions are in a section titled "How to" that is truncated in the published text, so the commands below are the standard clone-and-launch sequence for a Lua Neovim config with init.lua at the root, not quoted steps from the repository. Verify the Neovim version before you clone, because the branch must match. This prints the version you are running:

Where nvimdots gets in the way

A complete configuration is a set of decisions, and inheriting it means inheriting the disagreements. The README calls the config "Modular. Easy to customize," and the lua/ directory does break the configuration into modules, but customization still means reading someone else's Lua and finding the module that owns the behavior you want to change. That is a different task from writing a keymap in your own init.lua. The second limitation is the branch coupling described above. There is no supported path to run main on Neovim 0.11, and there is no long-term-support branch for people who do not want to move when Neovim moves. If your distribution packages an older Neovim, you either build a newer one or pick the branch that matches what you have. Third, the 50ms startup figure is documented as machine-dependent, so it is not a number to plan around on a slower disk. Finally, the README does not document a rollback procedure for the configuration itself. lazy-lock.json pins plugin revisions, but the config's own history is git history, and recovering from a bad update is a git operation you perform yourself.

Alternatives and how the approaches differ

The closest comparison is a plugin manager plus your own configuration, which is what lazy.nvim is designed for. nvimdots uses lazy.nvim internally, so the difference is not the tooling but who writes the plugin specs: with a bare lazy.nvim setup you write every spec and every keymap, and you get exactly the editor you specified and nothing else. That is more work up front and far less code to read when something misbehaves. The second alternative is a Neovim distribution that bundles its own installer and updater, where the configuration is managed as a product rather than a repository you clone. nvimdots sits between the two: it is a repository you clone, with a lockfile and tagged releases, but it does not pretend to be a distribution with a support contract. The Nix flake is a third path for NixOS users, since flake.nix and flake.lock let the configuration be built and pinned through Nix rather than through a git clone into ~/.config/nvim. If your environment is already Nix-based, that route matches the rest of your system; if it is not, the clone is simpler.

Maintenance, upgrades and what the BSD-3-Clause licence means here

The repository is not archived and the last push was on 2026-09-15, so the project is being worked on. Tagged releases are less frequent: v4.3.0 on 2026-06-28, v4.2.0 on 2025-06-05, v4.1.0 on 2025-04-20. Between tags, the branches move with Neovim's release cycle, which means your upgrade path is: check nvim --version, confirm the matching branch exists, update the checkout, and let lazy.nvim reconcile lazy-lock.json on the next start. The cost of staying current is therefore tied to Neovim's cadence rather than to nvimdots' tag cadence, and the 0.13 branch is explicitly excluded from that promise. On licensing, the repository is BSD-3-Clause. That is a permissive licence, which generally allows use and redistribution with the copyright notice and disclaimer retained, but it governs the configuration code in this repository, not the plugins lazy.nvim pulls in, each of which carries its own licence. If you redistribute a modified nvimdots, check the licences of the plugins in lazy-lock.json as well. This is a description of the licence text, not legal advice.

Editorial conclusion

Adopt nvimdots if you want a complete Lua Neovim setup on Linux, macOS or Windows and are willing to track its branch policy: main targets nvim 0.12 stable, 0.11 and 0.10 have their own branches, and 0.13 is nightly-only. Skip it if you want to build your own plugin set from scratch or if you run a Neovim version with no matching branch. Before you commit, check the branch table against your nvim --version and read the NixOS section if you use flake.nix.

Frequently asked questions

What Neovim version does nvimdots require?

The README's branch table maps main to nvim 0.12 stable, with separate branches for 0.11 and 0.10, and a 0.13 branch for nightly builds. The 0.13 branch is described as not stable.

How do I install nvimdots on Ubuntu or another Linux distribution?

The configuration is a repository cloned into the Neovim config directory, so the install is a git clone into ~/.config/nvim followed by starting nvim, which lets lazy.nvim install the pinned plugins. The README's install section is where the project documents the exact steps, and NixOS users have a separate section plus flake.nix.

Is nvimdots a replacement for writing my own Neovim config?

It is a complete configuration rather than a plugin, so adopting it means using the maintainers' plugin set and keymaps. The README describes it as modular and easy to customize, but changing behavior means editing Lua modules under lua/.

Official sources

  1. ayamir/nvimdots on GitHub
  2. Issues
  3. License: BSD-3-Clause
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ayamir-nvimdots.svg)](https://hysenlabs.com/projects/ayamir-nvimdots)