Editor Modes for Nix Files: Difference between revisions

imported>Makefu
initial batch of nixos-users
 
Klinger (talk | contribs)
 
(21 intermediate revisions by 16 users not shown)
Line 1: Line 1:
This is a list of editor modes for Nix syntax.
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.


* Emacs
== Language servers ==
* [https://github.com/NixOS/nix/blob/master/misc/emacs/nix-mode.el nix-mode official] available in [https://melpa.org/ melpa]
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.
* [@matthewbauer's nix-mode](https://github.com/matthewbauer/nix-mode)
* [https://github.com/oxalica/nil nil]
* [@marsam's nix-mode](https://github.com/emacs-pe/nix-mode)
* [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''':


<pre class="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 = &quot;vim&quot;;                                                                                                                                                                                                                                                                                                                                
       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
       };                                                                                                                                                                                                                                      
       };
     })
     })
   ];
   ];
}</pre>
}</syntaxHighlight>
* IntelliJ IDEA
 
* [https://github.com/NixOS/nix-idea nix-idea]
== Neovim ==
* Eclipse
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]
 
* Sublime Text
<syntaxHighlight lang="nix">{
* [https://github.com/wmertens/sublime-nix sublime-nix]
  programs.neovim = {
* Atom
    configure = {
* [https://github.com/wmertens/atom-nix atom-nix]
      packages.all.start = with pkgs.vimPlugins; [
* Visual Studio Code
        (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]]