Editor Modes for Nix Files: Difference between revisions
imported>Makefu initial batch of nixos-users |
m Category:Text Editor added |
||
(21 intermediate revisions by 16 users not shown) | |||
Line 1: | Line 1: | ||
Nix language has decent syntax highlighting (SH) support among popular code editors, but refactoring/autocomplete is still rare. Below is a list of editor modes for Nix syntax. | |||
* | == Language servers == | ||
* [https://github.com/ | Most popular editors have support for the [https://microsoft.github.io/language-server-protocol language server protocol], the following language servers can be used to provide features like completions and go-to-definition. | ||
* [ | * [https://github.com/oxalica/nil nil] | ||
* [https://github.com/nix-community/rnix-lsp rnix-lsp] | |||
* [https://github.com/nix-community/nixd nixd] | |||
== Emacs == | |||
* [https://github.com/NixOS/nix-mode nix-mode official] available in [https://melpa.org/ melpa] | |||
* [https://github.com/emacs-pe/nix-mode @marsam's nix-mode] | |||
* [https://github.com/shlevy/nix-buffer nix-buffer] | * [https://github.com/shlevy/nix-buffer nix-buffer] | ||
* Vim | * [https://github.com/jwiegley/nix-update-el nix-update-el] | ||
* [https://github.com/LnL7/vim-nix vim-nix] | |||
== Vim == | |||
=== vim-addon-nix === | |||
This plugin supports syntax highlighting and simple syntax and undeclared variable checking. | |||
* [https://github.com/MarcWeber/vim-addon-nix vim-addon-nix on github] | |||
Usage with '''VAM''' package manager: | |||
<syntaxHighlight lang="nix">{ # /etc/nixos/configuration.nix | |||
environment.systemPackages = [ | |||
(pkgs.vim_configurable.customize { | |||
name = "vim"; | |||
vimrcConfig.vam.pluginDictionaries = [ | |||
# vim-nix handles indentation better but does not perform sanity | |||
{ names = [ "vim-addon-nix" ]; ft_regex = "^nix\$"; } | |||
]; | |||
}) | |||
]; | |||
}</syntaxHighlight> | |||
=== vim-nix === | |||
vim-nix *only* supports syntax-highighting. | |||
* [https://github.com/LnL7/vim-nix vim-nix on github] | |||
Usage: | Usage with '''vim package manager''': | ||
< | <syntaxHighlight lang="nix">{ # /etc/nixos/configuration.nix | ||
environment.systemPackages = [ | environment.systemPackages = [ | ||
(pkgs.vim_configurable.customize { | (pkgs.vim_configurable.customize { | ||
name = | name = "vim"; | ||
vimrcConfig.packages.myplugins = with pkgs.vimPlugins; { | vimrcConfig.packages.myplugins = with pkgs.vimPlugins; { | ||
start = [ vim-nix ]; # load plugin on startup | start = [ vim-nix ]; # load plugin on startup | ||
}; | }; | ||
}) | }) | ||
]; | ]; | ||
}</ | }</syntaxHighlight> | ||
* [https://github.com/NixOS/nix-idea nix-idea] | == Neovim == | ||
In addition to the Vim plugins listed above, [https://github.com/nvim-treesitter/nvim-treesitter nvim-treesitter] also has support for nix. | |||
* [https://github.com/NixOS/nix-eclipse nix-eclipse] | |||
<syntaxHighlight lang="nix">{ | |||
* [https://github.com/wmertens/sublime-nix sublime-nix] | programs.neovim = { | ||
configure = { | |||
* [https://github.com/wmertens/atom-nix atom-nix] | packages.all.start = with pkgs.vimPlugins; [ | ||
(nvim-treesitter.withPlugins (ps: [ ps.nix ])) | |||
* [https://github.com/bbenoist/vscode-nix vscode-nix] | # or | ||
* Howl | nvim-treesitter.withAllGrammars # to install all grammars (including nix) | ||
* [https://github.com/rokf/howl-nix howl-nix] | ]; | ||
}; | |||
}; | |||
} | |||
</syntaxHighlight> | |||
== IntelliJ IDEA == | |||
* [https://github.com/NixOS/nix-idea nix-idea on github] | |||
== Eclipse == | |||
* [https://github.com/NixOS/nix-eclipse nix-eclipse] - development stopped in 2010 | |||
== Sublime Text == | |||
* [https://github.com/wmertens/sublime-nix sublime-nix on github] | |||
== Atom == | |||
* [https://github.com/wmertens/atom-nix atom-nix on github] | |||
== Visual Studio Code == | |||
* [https://github.com/bbenoist/vscode-nix vscode-nix on github] | |||
* [https://github.com/jnoortheen/vscode-nix-ide vscode-nix-ide on GitHub and VSCode Store] with support to format and lint | |||
== Howl == | |||
* [https://github.com/rokf/howl-nix howl-nix on github] | |||
== Far2l == | |||
* [https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/misc/far2l/default.nix far2l with nix syntax highlighting patch in nixpkgs] | |||
== nano == | |||
* [https://github.com/seitz/nanonix nanonix] | |||
== micro == | |||
Syntax highlighting is built-in. LSP support is available through the [https://github.com/AndCake/micro-plugin-lsp <code>lsp</code> plugin]. | |||
== Codemirror == | |||
* [https://github.com/replit/codemirror-lang-nix codemirror-lang-nix] | |||
== Zed == | |||
* [https://github.com/hasit/zed-nix zed-nix on github] | |||
== Relevant pages == | |||
* [[Overview of the Nix Expression Language]] | |||
* [[Nix Expression Language: Tips & Tricks]] | |||
* [[Nix Expression Language: Learning resources|Learning resources]] | |||
[[Category:Nix Language]] | |||
[[Category:Guide]] | |||
[[Category:Text Editor]] |