Skip to content

Modular, configurable, reproducible and easy to use personal Neovim configuration in Nix using nvf

Notifications You must be signed in to change notification settings

venkyr77/nvfnvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nvfnvim

Modular, configurable, reproducible and easy to use personal Neovim configuration in Nix using nvf

ss1

Quickstart using nix run

nix run --extra-experimental-features nix-command --extra-experimental-features flakes github:venkyr77/nvfnvim

also see, Other ways of consuming this package

Plugins

Completion

Plugin Completion Source
cmp-buffer
nvim-cmp cmp_luasnip
cmp-nvim-lsp
cmp-path

Debugging

Plugin
nvim-dap

Diagnostics

Plugin
nvim-lint

Editor(General)

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..)

Format

Plugin
conform.nvim

UI

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)

Language support

bash

Functionality Package(s)
Language Server(s) bash-language-server
Diagnostics provider(s) shellcheck
Formatter(s) shfmt

lua

Functionality Package(s)
Language Server(s) lua-language-server
Diagnostics providers(s) lua-language-server(LSP), luacheck
Formatter(s) stylua

markdown

Functionality Package(s)
Diagnostics providers(s) markdownlint-cli2
Formatter(s) denofmt

nix

Functionality Package(s)
Language Server(s) nixd
Diagnostics providers(s) nixd(LSP), statix
Formatter(s) alejandra

terraform

Functionality Package(s)
Language Server(s) terraform-ls
Diagnostics providers(s) terraform-ls(LSP)
Formatter(s) terraform-ls(LSP)

typescript

Functionality Package(s)
Language Server(s) typescript-language-server
Diagnostics providers(s) typescript-language-server(LSP)
Formatter(s) prettier

Other ways of consuming this package

Run as a standalone flake

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 .

Run as a standalone flake with custom modules

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 .

About

Modular, configurable, reproducible and easy to use personal Neovim configuration in Nix using nvf

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages