Modular, configurable, reproducible and easy to use personal Neovim configuration in Nix using nvf
nix run --extra-experimental-features nix-command --extra-experimental-features flakes github:venkyr77/nvfnvimalso see, Other ways of consuming this package
| Plugin | Completion Source |
|---|---|
| cmp-buffer | |
| nvim-cmp | cmp_luasnip |
| cmp-nvim-lsp | |
| cmp-path |
| Plugin |
|---|
| nvim-dap |
| Plugin |
|---|
| nvim-lint |
| Plugin | Usage |
|---|---|
| auto-save.nvim | For buffer auto save |
| catppuccin/nvim | Colorscheme |
| fzf-lua | For fuzzy finding(buffers, lsp code actions, references, etc..) |
| gitsigns.nvim | For git support |
| guess-indent.nvim | Indentation style detection |
| LuaSnip | For snippet support |
| neo-tree.nvim | Filetree |
| nvim-autopairs | For autopair support |
| nvim-treesitter | Tree-sitter based highlighting, indentation, and folding |
| smartyank.nvim | Highlight yanked text, use OSC52 to copy to the terminal host clipboard |
| telescope.nvim | Highly extendable fuzzy finder over lists(files, live grep, etc..) |
| Plugin |
|---|
| conform.nvim |
| Plugin | Usage |
|---|---|
| bufferline.nvim | Tabline |
| dressing.nvim | For overriding vim.ui.select and vim.ui.input with fzf-lua |
| indent-blankline.nvim | Indent guide |
| lualine.nvim | Statusline |
| noice.nvim | Replaces the UI for messages, cmdline, and popup menu |
| nvim-notify | Notification manager |
| rainbow-delimiters.nvim | Rainbow parantheses using Tree-sitter |
| todo-comments.nvim | To highlight and search for todo comments ike TODO, HACK, BUG |
| vim-illuminate | To highlight other uses of the word under cursor (using LSP, or Tree-sitter) |
| Functionality | Package(s) |
|---|---|
| Language Server(s) | bash-language-server |
| Diagnostics provider(s) | shellcheck |
| Formatter(s) | shfmt |
| Functionality | Package(s) |
|---|---|
| Language Server(s) | lua-language-server |
| Diagnostics providers(s) | lua-language-server(LSP), luacheck |
| Formatter(s) | stylua |
| Functionality | Package(s) |
|---|---|
| Diagnostics providers(s) | markdownlint-cli2 |
| Formatter(s) | denofmt |
| Functionality | Package(s) |
|---|---|
| Language Server(s) | nixd |
| Diagnostics providers(s) | nixd(LSP), statix |
| Formatter(s) | alejandra |
| Functionality | Package(s) |
|---|---|
| Language Server(s) | terraform-ls |
| Diagnostics providers(s) | terraform-ls(LSP) |
| Formatter(s) | terraform-ls(LSP) |
| Functionality | Package(s) |
|---|---|
| Language Server(s) | typescript-language-server |
| Diagnostics providers(s) | typescript-language-server(LSP) |
| Formatter(s) | prettier |
A simple standalone flake that makes this package as default
{
inputs = {
flake-parts.url = "github:hercules-ci/flake-parts";
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
nvfnvim = {
url = "github:venkyr77/nvfnvim";
inputs = {
flake-parts.follows = "flake-parts";
nixpkgs.follows = "nixpkgs";
};
};
};
outputs = {
nvfnvim,
flake-parts,
...
} @ inputs:
flake-parts.lib.mkFlake {inherit inputs;} {
systems = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
perSystem = {system, ...}: {
packages = {inherit (nvfnvim.packages.${system}) default;};
};
};
}and then run using nix run by,
nix run --extra-experimental-features nix-command --extra-experimental-features flakes .You can also just import the modules and add your own modules
A standlone flake that uses modules from nvfnvim/modules and allows for addition of more modules
{
inputs = {
flake-parts.url = "github:hercules-ci/flake-parts";
flake-utils = {
url = "github:numtide/flake-utils";
inputs.systems.follows = "systems";
};
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
nvf = {
url = "github:notashelf/nvf";
inputs = {
flake-parts.follows = "flake-parts";
flake-utils.follows = "flake-utils";
nixpkgs.follows = "nixpkgs";
systems.follows = "systems";
};
};
nvfnvim = {
flake = false;
url = "github:venkyr77/nvfnvim";
};
systems.url = "github:nix-systems/default";
};
outputs = {
flake-parts,
nixpkgs,
nvf,
nvfnvim,
...
} @ inputs:
flake-parts.lib.mkFlake {inherit inputs;} {
systems = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
perSystem = {system, ...}: {
packages.default =
(nvf.lib.neovimConfiguration {
pkgs = nixpkgs.legacyPackages.${system};
modules = [
"${nvfnvim}/modules" # modules from https://github.com/venkyr77/nvfnvim/tree/main/modules
# include your modules
# ./mymodule
# or just
{
config.vim = {
# any option from https://notashelf.github.io/nvf/options.html
# for ex
dashboard.alpha.enable = true;
};
}
];
})
.neovim;
};
};
}and then run using nix run by,
nix run --extra-experimental-features nix-command --extra-experimental-features flakes .