Editor Modes for Nix Files: Difference between revisions
imported>Makefu No edit summary |
The rnix repository was archived and is no longer maintained (can be seen be just clicking the link). |
||
| (15 intermediate revisions by 13 users not shown) | |||
| Line 1: | Line 1: | ||
{{Merge|Nix (language)}} | |||
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 == | |||
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/nixd nixd] | |||
* [https://github.com/nix-community/rnix-lsp rnix-lsp] (deprecated) | |||
== Emacs == | == Emacs == | ||
| Line 5: | Line 13: | ||
* [https://github.com/emacs-pe/nix-mode @marsam's nix-mode] | * [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] | ||
* [https://github.com/jwiegley/nix-update-el nix-update-el] | |||
== Vim == | == Vim == | ||
=== vim-addon-nix === | === vim-addon-nix === | ||
This plugin supports syntax highlighting and simple syntax and undeclared variable checking. | This plugin supports syntax highlighting and simple syntax and undeclared variable checking. | ||
| Line 13: | Line 24: | ||
<syntaxHighlight lang="nix">{ # /etc/nixos/configuration.nix | <syntaxHighlight lang="nix">{ # /etc/nixos/configuration.nix | ||
environment.systemPackages = [ | environment.systemPackages = [ | ||
(pkgs.vim_configurable.customize { | (pkgs.vim_configurable.customize { | ||
name = "vim"; | name = "vim"; | ||
vimrcConfig.vam.pluginDictionaries = [ | vimrcConfig.vam.pluginDictionaries = [ | ||
# vim-nix handles indentation better but does not perform sanity | # vim-nix handles indentation better but does not perform sanity | ||
| Line 30: | Line 41: | ||
<syntaxHighlight lang="nix">{ # /etc/nixos/configuration.nix | <syntaxHighlight lang="nix">{ # /etc/nixos/configuration.nix | ||
environment.systemPackages = [ | environment.systemPackages = [ | ||
(pkgs.vim_configurable.customize { | (pkgs.vim_configurable.customize { | ||
name = "vim"; | 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> | }</syntaxHighlight> | ||
== Neovim == | |||
In addition to the Vim plugins listed above, [https://github.com/nvim-treesitter/nvim-treesitter nvim-treesitter] also has support for nix. | |||
<syntaxHighlight lang="nix">{ | |||
programs.neovim = { | |||
configure = { | |||
packages.all.start = with pkgs.vimPlugins; [ | |||
(nvim-treesitter.withPlugins (ps: [ ps.nix ])) | |||
# or | |||
nvim-treesitter.withAllGrammars # to install all grammars (including nix) | |||
]; | |||
}; | |||
}; | |||
} | |||
</syntaxHighlight> | |||
== IntelliJ IDEA == | == IntelliJ IDEA == | ||
| Line 49: | Line 76: | ||
== Visual Studio Code == | == Visual Studio Code == | ||
* [https://github.com/bbenoist/vscode-nix vscode-nix on github] | * [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 == | == Howl == | ||
* [https://github.com/rokf/howl-nix howl-nix on github] | * [https://github.com/rokf/howl-nix howl-nix on github] | ||
| Line 56: | Line 84: | ||
== nano == | == nano == | ||
* [https://github.com/seitz/nanonix nanonix] | * [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]] | |||