nix-community/rnix-lsp
{ "createdAt": "2018-08-19T08:43:21Z", "defaultBranch": "master", "description": "WIP Language Server for Nix! [maintainer=@aaronjanse]", "fullName": "nix-community/rnix-lsp", "homepage": "", "language": "Rust", "name": "rnix-lsp", "pushedAt": "2024-01-15T11:53:04Z", "stargazersCount": 712, "topics": [ "lsp-server", "nix" ], "updatedAt": "2025-10-31T19:06:05Z", "url": "https://github.com/nix-community/rnix-lsp"}rnix-lsp

Section titled “rnix-lsp ”A syntax-checking language server using rnix.
- Syntax-checking diagnostics
- Basic completion
- Basic renaming
- Basic goto definition
- Expand selection proposal
- Formatting using nixpkgs-fmt
This is beta-level quality at best - I didn’t expect maintaining a language server when writing rnix, the goal was that others would flock around the parser and write a bunch of editor tooling :)
Breakages are expected. No semver compatibility before 1.x.y.
Turn on logging with RUST_LOG=trace, and redirect stderr to a file.
bash -c "env RUST_LOG=trace rnix-lsp 2> /tmp/rnix-lsp.log"Support for Mac OS is not guaranteed (see PR #61).
Install
Section titled “Install”nix-env -i -f https://github.com/nix-community/rnix-lsp/archive/master.tar.gzIntegrate with your editor
Section titled “Integrate with your editor”These instructions are not fully tested - see issue #3. Please raise an issue and/or send a PR if a config below didn’t work out of the box.
Vim/Neovim
Section titled “Vim/Neovim”{ "languageserver": { "nix": { "command": "rnix-lsp", "filetypes": [ "nix" ] } }}let g:LanguageClient_serverCommands = { \ 'nix': ['rnix-lsp']\ }if executable('rnix-lsp') au User lsp_setup call lsp#register_server({ \ 'name': 'rnix-lsp', \ 'cmd': {server_info->[&shell, &shellcmdflag, 'rnix-lsp']}, \ 'whitelist': ['nix'], \ })endifFor eglot use (lsp +eglot)
;; init.el(doom! :tools lsp
:lang (nix +lsp))(add-to-list 'lsp-language-id-configuration '(nix-mode . "nix"))(lsp-register-client (make-lsp-client :new-connection (lsp-stdio-connection '("rnix-lsp")) :major-modes '(nix-mode) :server-id 'nix))(add-to-list 'eglot-server-programs '(nix-mode . ("rnix-lsp")))Kakoune
Section titled “Kakoune”kak-lsp has builtin configuration since version v9.0.0:
[language.nix]filetypes = ["nix"]roots = ["flake.nix", "shell.nix", ".git"]command = "rnix-lsp"If you run into an issue regarding “missing roots” see this issue.
VSCode
Section titled “VSCode”{ "nix.enableLanguageServer": true}RIP jd91mzm2
Section titled “RIP jd91mzm2”Sadly, the original author of this project, @jD91mZM2 has passed away. His online presence was anonymous and what we have left is his code. This is but one of his many repos that he contributed to.