Neovim: Difference between revisions
imported>SaphireLattice mNo edit summary |
imported>Jooooscha I reorganized the description and added some information and distinctions between using Neovim with/without Home Manager |
||
Line 1: | Line 1: | ||
__TOC__ | __TOC__ | ||
== Installation and configuration == | == Installation and configuration == | ||
<code>environment.variables. | Neovim shares most of its configuration with Vim. See the [[Vim|Vim page]] for more details on the use of both. | ||
=== With Home Manager === | |||
[https://nixos.wiki/wiki/Home_Manager Home Manager] has a module for Neovim, which can be enabled via | |||
programs.neovim = { | |||
enable = true; | |||
extraConfig = '' | |||
set number relativenumber | |||
'' | |||
}; | |||
More information about the module can be found here: [https://nix-community.github.io/home-manager/options.html#opt-programs.neovim.enable Home Manager Manual]. | |||
==== Configuration ==== | |||
The Home Manager module does not expose many configuration options. | |||
Therefore, the easiest way to get started is to use the [https://nix-community.github.io/home-manager/options.html#opt-programs.neovim.extraConfig extraConfig] option. | |||
You can copy your old config or directly load your default Neovim config via: | |||
programs.neovim.extraConfig = lib.fileContents ../path/to/your/init.vim; | |||
To use Neovim as your default editor, you can set the <code>EDITOR</code> [https://search.nixos.org/options?show=environment.variables&type=packages&query=environment.variables environmental variable] to "nvim" by adding the following to your NixOS configuration: | |||
= | environment.variables.EDITOR = "nvim"; | ||
The Home Manager module does also expose options to automatically add <code>vi</code> and <code>vim</code> aliases. | |||
To use them, add the following to your Home Manager configuration: | |||
programs.neovim = { | |||
viAlias = true; | |||
vimAlias = true; | |||
} | }; | ||
==== Installing Plugins ==== | |||
Plugins can be installed using the <code>programs.neovim.plugins</code> option. | |||
You can add only the plugin, or the plugin with its corresponding config: | |||
programs.neovim.plugins = [ | |||
vimPlugins.nvim-tree-lua | |||
{ | |||
plugin = vim-startify; | |||
config = "let g:startify_change_to_vcs_root = 0"; | |||
} | |||
]; | ]; | ||
If you only add the plugin, you can add the configuration as described above. | |||
An index of official packages can be found in on [https://search.nixos.org/packages?from=0&size=50&sort=relevance&type=packages&query=vimPlugins search.nixos.org]. | |||
In addition to the official packages, there are several user maintained repositories, such as [https://github.com/m15a/nixpkgs-vim-extra-plugins vim-extra-plugins] or [https://github.com/NixNeovim/NixNeovimPlugins NixNeovimPlugins]. | |||
=== Without Home Manager === | |||
If you do not use Home Manager, you can use the following code in your NixOS configuration: | |||
programs.neovim = { | |||
enable = true; | |||
defaultEditor = true; | |||
}; | |||
==== Configuration ==== | |||
The NixOS module does not have an <code>extraConfig</code> option as the Home Manager module does. | |||
Instead, you can use the <code>programs.neovim.configure</code> option as described [https://search.nixos.org/options?show=programs.neovim.configure&type=packages&query=neovim here]. | |||
Similarly to the Home Manager module, to set Neovim as your default editor you have to set the <code>EDITOR</code> environment variable like this: | |||
environment.variables.EDITOR = "nvim"; | |||
Further, the NixOS module does also expose options to automatically add <code>vi</code> and <code>vim</code> aliases. | |||
To use them, add the following to your NixOS configuration: | |||
programs.neovim = { | |||
viAlias = true; | |||
vimAlias = true; | |||
}; | |||
=== Manually === | |||
You can also manually add Neovim to your packages. This should only be used if the two version above do not work for you. | |||
environment.systemPackages = [ pkgs.neovim ]; | |||
== | === Build Neovim using Nix === | ||
[https://github.com/ | You can also compile Neovim using nix. For this, the Neovim GitHub page has more information on this: | ||
[https://github.com/neovim/neovim/wiki/Building-Neovim#nixos--nix Neovim Guide]. | |||
The Neovim repository also contains a flake. | |||
You can run the master version via the following command: | |||
nix run github:neovim/neovim?dir=contrib | |||
Finally, there is a [https://github.com/nix-community/neovim-nightly-overlay Neovim Nightly Overlay]. | |||
== Note on Lua plugins == | |||
Due to how the `runtimepath` for Lua modules is [https://github.com/nanotee/nvim-lua-guide#a-note-about-packages processed], your configuration may require <code>packadd! plugin-name</code> to require a module. A home-manager example: | |||
programs.neovim = { | programs.neovim = { | ||
Line 43: | Line 117: | ||
]; | ]; | ||
} | } | ||
== See Also == | == See Also == |