Editor Modes for Nix Files: Difference between revisions

From NixOS Wiki
imported>Inclyc
m add nixd
Klinger (talk | contribs)
 
(3 intermediate revisions by 3 users not shown)
Line 2: Line 2:


== Language servers ==
== Language servers ==
Most popular editors have support for the l[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.
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/oxalica/nil nil]
* [https://github.com/nix-community/rnix-lsp rnix-lsp]
* [https://github.com/nix-community/rnix-lsp rnix-lsp]
Line 82: Line 82:
== 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 ==
== Codemirror ==
* [https://github.com/replit/codemirror-lang-nix codemirror-lang-nix]
* [https://github.com/replit/codemirror-lang-nix codemirror-lang-nix]
== Zed ==
* [https://github.com/hasit/zed-nix zed-nix on github]


== Relevant pages ==
== Relevant pages ==
Line 93: Line 99:
[[Category:Nix Language]]
[[Category:Nix Language]]
[[Category:Guide]]
[[Category:Guide]]
[[Category:Text Editor]]

Latest revision as of 20:09, 25 June 2024

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 language server protocol, the following language servers can be used to provide features like completions and go-to-definition.

Emacs

Vim

vim-addon-nix

This plugin supports syntax highlighting and simple syntax and undeclared variable checking.

Usage with VAM package manager:

{ # /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\$"; }
      ];
    })
  ];
}

vim-nix

vim-nix *only* supports syntax-highighting.

Usage with vim package manager:

{ # /etc/nixos/configuration.nix
  environment.systemPackages = [
    (pkgs.vim_configurable.customize {
      name = "vim";
      vimrcConfig.packages.myplugins = with pkgs.vimPlugins; {
        start = [ vim-nix ]; # load plugin on startup
      };
    })
  ];
}

Neovim

In addition to the Vim plugins listed above, nvim-treesitter also has support for 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)
      ];
    };
  };
}

IntelliJ IDEA

Eclipse

Sublime Text

Atom

Visual Studio Code

Howl

Far2l

nano

micro

Syntax highlighting is built-in. LSP support is available through the lsp plugin.

Codemirror

Zed

Relevant pages