Important
My Neovim config using nixvim
You may have previously seen this repo with a different structure/configuration.
The thing is: I wasn't satisfied with it.
So I rewrote it from scratch with minimal dependencies.
If you want the old configuration, check out the old branch.
Note
The colorscheme in these screenshots is rose pine
To start configuring, just add or modify the nix files in ./config.
Every folder in the plugins directory will be imported automatically.
Warning
Some of them might be disabled, this is every plugins defined and configured in the repo.
List of plugins
- avante: Cursor AI at home
- copilot-cmp: Completion support for GitHub copilot
- gitlinker: Generate shareable file permalinks
- conform: Formatter plugin
- lint: Linting plugin
- lsp: LSP configs
- none-ls: null-ls replacement. Use nvim as LSP
- snacks: A list of utilities
- Currently using:
- git
- indent
- picker
- lazygit
- notifier
- Currently using:
- treesitter: Parser generator tool to build a syntax tree of the current buffer
- bufferline: VSCode like buffer line
- noice: Better nvim UI
- mini: Cool neovim utilities
- currently using
- ai
- clue
- diff
- files
- currently using
- ufo: Folding plugin
To test your configuration simply run the following command
nix run .
If you have nix installed, you can directly run my config from anywhere
You can try running mine with:
nix run 'github:elythh/nixvim'This nixvim flake will output a derivation that you can easily include
in either home.packages for home-manager, or
environment.systemPackages for NixOS. Or whatever happens with darwin?
You can add my nixvim configuration as an input to your NixOS configuration like:
{
inputs = {
nixvim.url = "github:elythh/nixvim";
};
}With the input added you can reference it directly.
{ inputs, system, ... }:
{
# NixOS
environment.systemPackages = [ inputs.nixvim.packages.${pkgs.system}.default ];
# home-manager
home.packages = [ inputs.nixvim.packages.${pkgs.system}.default ];
}The binary built by nixvim is already named as nvim so you can call it just
like you normally would.
Another method is to overlay your custom build over neovim from nixpkgs.
This method is less straight-forward but allows you to install neovim like
you normally would. With this method you would just install neovim in your
configuration (home.packages = with pkgs; [ neovim ]), but you replace
neovim in pkgs with your derivation from nixvim.
{
pkgs = import inputs.nixpkgs {
overlays = [
(final: prev: {
neovim = inputs.nixvim.packages.${pkgs.system}.default;
})
];
}
}You can just straight up alias something like nix run 'github:elythh/nixvim' to nvim.
