CLI tool
nvim-lua/kickstart.nvim avatar
nvim-lua/kickstart.nvim

kickstart.nvim: A Single-File Neovim Config You Are Meant to Outgrow

A launch point for your personal nvim configuration

31,681 stars46,217 forksLuaMIT

At a glance

What is it?
kickstart.nvim is an MIT-licensed starting point for a personal Neovim configuration, not a distribution. Its value is the documented init.lua you fork and edit, and its main cost is that you own every line of it afterwards.
Who is it for?
Adopt kickstart.nvim if you want to read and own your Neovim config and are willing to edit Lua. Skip it if you want a curated distribution with its own release cadence.
Can I use it commercially?
Yes. MIT 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 40 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 November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • nvim-lua/kickstart.nvim31,681 ★ · +225
Star history
Repository2026-09-132026-11-13
nvim-lua/kickstart.nvim31.5k31.7k

225 Stars in the last 61 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The problem kickstart.nvim solves is configuration debt, not missing features

Most Neovim setups fail in one of two directions. A distribution installs dozens of plugins you never audited, and when something breaks you are debugging someone else's Lua. A hand-rolled init.lua starts clean and then accumulates fragments copied from forum posts with no explanation attached. kickstart.nvim takes a third position. The README describes it as "a starting point for your configuration" and explicitly says it is "NOT a Neovim distribution." The intended user is someone who wants a working baseline they can read end to end, then modify. The README frames the file itself as the deliverable: it tells you to read through init.lua for "information about extending and exploring Neovim," and notes that it includes examples of adding commonly requested plugins. So the audience is narrower than it first appears. If you do not want to edit Lua, the project has little to offer you beyond a one-time bootstrap.

One file, vim.pack, and a lockfile you are told to track

The architecture is deliberately flat. The configuration centres on a single init.lua (the repository also has lua/ and doc/ directories), and the README defends that choice on the grounds that kickstart is "a teaching tool and a reference configuration that someone can easily use to git clone." Plugin management is handled by vim.pack, Neovim's built-in pack mechanism rather than an external manager. The README states that starting Neovim causes vim.pack to install all plugins from your config, so the first launch is also the first provisioning step. Inspection and updates go through Lua calls rather than a command-line plugin manager: `:lua vim.pack.update(nil, { offline = true })` reports plugin state without fetching, and `:lua vim.pack.update()` fetches updates, with `:write` applying them and `:quit` cancelling. There is also a lockfile, nvim-pack-lock.json. The README notes it is gitignored in the kickstart repo "to make maintenance easier" but recommends tracking it in your own copy, pointing at `:help vim.pack-lockfile`. That is the whole data flow: one file, one built-in package manager, one lockfile. The trade-off is visible. A single file is easy to read and hard to scale, and the README concedes as much by linking kickstart-modular.nvim for people who want the same functionality split across files.

Install means satisfying the system before you touch Neovim

The install path has two gates. The first is Neovim itself. kickstart targets only the latest stable and latest nightly builds, and the README tells you to run `nvim --version` and confirm it is not below the latest stable release, with alternative installation methods listed if your package manager ships something older. The second gate is external tooling. The README lists git, make, unzip and a C compiler (gcc) as basic requirements, plus ripgrep, fd-find, and the tree-sitter CLI. A clipboard tool (xclip, xsel, win32yank or a platform equivalent) is needed for system clipboard integration. A Nerd Font is optional and controlled by setting `vim.g.have_nerd_font` to true in init.lua. Language-specific work pulls in more: npm for TypeScript, go for Golang, and so on. Only after that do you clone, into `$XDG_CONFIG_HOME/nvim` or `~/.config/nvim` on Linux and macOS, `%localappdata%\nvim` under cmd.exe, or `${env:LOCALAPPDATA}\nvim` under PowerShell.

Template or fork is a maintenance decision you make before the first commit

The README recommends creating your own copy via GitHub's "Use this template" button and cloning that, which means replacing `nvim-lua` in the clone URL with your own username. It offers forking as an alternative for people who want "an easy upstream sync path," such as keeping your config on a separate branch and fast-forwarding master from upstream, and points to a discussion thread for the trade-offs. This is the part of the setup most people skim. A template copy has no upstream relationship, so future changes to kickstart arrive only if you read them and port them by hand. A fork keeps the relationship but makes your own history harder to reason about. Neither is wrong, but choosing by accident means you discover the consequence months later when you want a fix that landed upstream. The README also warns you to back up and delete any existing configuration first, including `~/.local/share/nvim/`, and notes that NVIM_APPNAME lets you run kickstart alongside an existing setup, for example by installing it in `~/.config/nvim-kickstart` and aliasing `nvim-kickstart='NVIM_APPNAME="nvim-kickstart" nvim'`.

The single-file design is a limitation, and the project says so

The obvious failure mode is that a teaching artifact and a daily driver have different requirements. One init.lua is readable at a few hundred lines and unpleasant at a few thousand, and the README does not pretend otherwise. It links a fork that splits the configuration while keeping the same functionality, and it references discussion threads about restructuring. The project's own answer to "this file is getting long" is to split init.lua into smaller parts, and it links a fork that does so. There is a second limitation with the same shape: because kickstart only targets the latest stable and nightly Neovim, anyone pinned to a distribution-provided Neovim, or working on a machine where they cannot install a current build, is outside the supported set. The README's instruction to check `nvim --version` and find alternative installation methods is a polite way of saying the packaged version is probably too old. A third constraint is dependency weight. ripgrep, fd-find, a C compiler, and the tree-sitter CLI are not optional conveniences here; they are prerequisites, and on a locked-down work machine that alone can sink the install.

Against a full distribution, kickstart trades convenience for comprehension

The natural alternative is a Neovim distribution such as LazyVim or NvChad, which ship a curated plugin set, their own configuration layout, and a project team that handles upgrades. The difference in approach is who owns the config. A distribution owns the structure and you configure within it; kickstart hands you the structure and stops. That has a direct consequence for upgrades. With a distribution you follow its release notes and its migration guides. With kickstart, upstream changes are suggestions you read and apply yourself, which is exactly why the README spends paragraphs on template versus fork. The inverse consequence is debugging. When a distribution misbehaves, you are reading code you did not write in a layout you did not choose. With kickstart, the file you are debugging is the file you edited. Neither model is strictly better. The distribution wins on time-to-productive-editor and on having a support channel for its own abstractions. kickstart wins when you want to know why every line is there, and it assumes you will eventually replace parts of it.

Licence and upkeep: MIT code, but the maintenance is yours

kickstart.nvim is MIT licensed, which permits modification, redistribution and commercial use provided the licence and copyright notice are retained. It ships no releases according to the repository metadata, so there is no version number to pin and no changelog to follow; the default branch is the artifact. That shapes the upgrade cost. Because nvim-pack-lock.json is gitignored upstream but recommended for tracking in your copy, your own repository is the record of which plugin revisions you ran. Updating plugins is a Lua call, `:lua vim.pack.update()`, followed by `:write` to apply or `:quit` to cancel, which is a reviewable step rather than a silent background change. What MIT does not give you is any guarantee of compatibility with a future Neovim release, and since kickstart targets only the latest stable and nightly builds, an upstream Neovim change can break your config before you have decided to move. This is a description of the licence terms, not legal advice; if you redistribute a modified copy, read the licence text itself.

Editorial conclusion

Adopt kickstart.nvim if you want to read and own your Neovim config and are willing to edit Lua. Skip it if you want a curated distribution with its own release cadence. Before cloning, check `nvim --version` against the latest stable release, confirm ripgrep, fd-find, a C compiler and a tree-sitter CLI are installed, and decide whether you will use GitHub's template button or a fork, because that choice determines how you sync upstream later.

Frequently asked questions

What is Kickstart nvim?

It is a starting point for Neovim that is small, single-file and completely documented, and the project is explicit that it is not a Neovim distribution but a starting point for your configuration. Its purpose is to serve as a teaching tool and a reference configuration that you can git clone as a basis for your own.

How do I install Kickstart for Neovim?

Create your own copy using GitHub's Use this template button, or fork the repository, then clone your copy into your Neovim configuration directory. On Linux and macOS that is $XDG_CONFIG_HOME/nvim or ~/.config/nvim, and on Windows it is %localappdata%\nvim for cmd.exe or ${env:LOCALAPPDATA}\nvim for powershell. Run nvim afterwards and vim.pack installs the plugins from your config.

How do I add plugins to Kickstart nvim?

Read the init.lua file in your configuration folder, which includes examples of adding popularly requested plugins. vim.pack installs the plugins declared there, and to fetch updates you use the vim.pack update command, where :write applies the updates and :quit cancels them. To inspect plugin state first, run the same command with the offline flag.

Which is better for Neovim, Kickstart or Lazyvim?

The project positions Kickstart as a starting point for your own configuration and explicitly not a distribution, so the difference between the two is ownership rather than features. The comparison Kickstart does document is between creating your copy from the template, which has no upstream, and forking, which gives an easy upstream sync path. Discussion 1740 covers those tradeoffs.

Official sources

  1. Issues
  2. License: MIT
  3. nvim-lua/kickstart.nvim on GitHub
  4. README
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/nvim-lua-kickstart-nvim.svg)](https://hysenlabs.com/projects/nvim-lua-kickstart-nvim)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/nvim-lua-kickstart-nvim.svg)](https://hysenlabs.com/projects/nvim-lua-kickstart-nvim)

Was this useful?