3.1 KiB
Installation
You must use a nixpkgs
version compatible with the nixvim version you choose.
The master
branch requires to use a very recent version of nixpkgs unstable.
In order to guarantee the compatibility between nixvim & nixpkgs it is recommended to always update both at the same time.
When using a stable
version you must use the corresponding nixvim branch, for example nixos-23.11
when using NixOS 23.11.
Failure to use the correct branch, or an old revision of nixpkgs will likely result in errors of the form vimPlugins.<name> attribute not found
.
NixVim can be used in four ways:
- As a NixOS module
- As a Home-Manager module
- As a nix-darwin module
- As a standalone derivation
NixVim is also available for nix flakes, or directly through an import.
Accessing nixvim
For a direct import you can add nixvim to your configuration as follows:
let
nixvim = import (builtins.fetchGit {
url = "https://github.com/nix-community/nixvim";
# When using a different channel you can use `ref = "nixos-<version>"` to set it here
});
in
When using flakes you can simply add nixvim
to the inputs:
{
inputs.nixvim = {
url = "github:nix-community/nixvim";
# If using a stable channel you can use `url = "github:nix-community/nixvim/nixos-<version>"`
inputs.nixpkgs.follows = "nixpkgs";
};
# outputs...
}
Usage as a module (NixOS, Home-Manager, nix-darwin)
When using NixVim as a module you must import the NixVim module into your module system. The three imports are:
<nixvim>.homeManagerModules.nixvim
<nixvim>.nixosModules.nixvim
<nixvim>.nixDarwinModules.nixvim
<nixvim>
refers to the way to access nixvim, depending on how you fetched nixvim as described in the previous section.
The imports can be added as a imports = [ <nixvim_import> ]
in a configuration file.
You will then be able to enable nixvim through programs.nixvim.enable = true
, and configure the
options as programs.nixvim.<path>.<to>.<option> = <value>
.
Standalone usage
When using nixvim as a standalone derivation you can use the following functions, located in <nixvim>.legacyPackages.${system}
:
makeNixvim
: This function takes an attribute set of options values as argumentsmakeNixvimWithModule
: This function takes an attribute set of the form:{pkgs, extraSpecialArgs, module}
. The only required argument ismodule
, being a NixOS module. This gives access to theimports
,options
,config
variables, and using functions like{config, ...}: { ... }
.
There are also some helper functions in <nixvim>.lib.${system}
like:
check.mkTestDerivationFromNixvimModule
, taking the same arguments asmakeNixvimWithModule
and generates a check derivation.check.mkTestDerivationFromNvim
, taking an attribute set of the form{name = "<derivation name>"; nvim = <nvim derivation>}
. Thenvim
is the standalone derivation provided by NixVim.
The nixvim derivation can then be used like any other package!
For more information you can look at the nixvim standalone flake template.