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/nvfnvim
also 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 .