Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nix-community/rnix-lsp
WIP Language Server for Nix! [maintainer=@aaronjanse]
https://github.com/nix-community/rnix-lsp
lsp-server nix
Last synced: about 1 month ago
JSON representation
WIP Language Server for Nix! [maintainer=@aaronjanse]
- Host: GitHub
- URL: https://github.com/nix-community/rnix-lsp
- Owner: nix-community
- License: mit
- Archived: true
- Created: 2018-08-19T08:43:21.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-01-15T11:53:04.000Z (10 months ago)
- Last Synced: 2024-04-14T16:06:25.004Z (7 months ago)
- Topics: lsp-server, nix
- Language: Rust
- Homepage:
- Size: 281 KB
- Stars: 701
- Watchers: 14
- Forks: 43
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-nix - rnix-lsp - A syntax-checking language server for Nix. (Development / Discovery)
README
# rnix-lsp [![Crates.io](https://img.shields.io/crates/v/rnix-lsp)](https://crates.io/crates/rnix-lsp) [![Chat on Matrix](https://matrix.to/img/matrix-badge.svg)](https://matrix.to/#/#rnix-lsp:matrix.org) [![Build status](https://github.com/nix-community/rnix-lsp/actions/workflows/test.yml/badge.svg)](https://github.com/nix-community/rnix-lsp/actions/workflows/test.yml)
A syntax-checking language server using
[rnix](https://github.com/nix-community/rnix-parser).- [x] Syntax-checking diagnostics
- [x] Basic completion
- [x] Basic renaming
- [x] Basic goto definition
- [x] Expand selection proposal
- [x] Formatting using [nixpkgs-fmt](https://github.com/nix-community/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.
```sh
bash -c "env RUST_LOG=trace rnix-lsp 2> /tmp/rnix-lsp.log"
```Support for **Mac OS** is not guaranteed (see [PR #61](https://github.com/nix-community/rnix-lsp/pull/61)).
## Install
```
nix-env -i -f https://github.com/nix-community/rnix-lsp/archive/master.tar.gz
```## 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
#### [coc.nvim](https://github.com/neoclide/coc.nvim)
```vim
{
"languageserver": {
"nix": {
"command": "rnix-lsp",
"filetypes": [
"nix"
]
}
}
}
```#### [LanguageClient-neovim](https://github.com/autozimu/LanguageClient-neovim)
```vim
let g:LanguageClient_serverCommands = {
\ 'nix': ['rnix-lsp']
\ }
```#### [vim-lsp](https://github.com/prabirshrestha/vim-lsp)
```vim
if executable('rnix-lsp')
au User lsp_setup call lsp#register_server({
\ 'name': 'rnix-lsp',
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'rnix-lsp']},
\ 'whitelist': ['nix'],
\ })
endif
```### Emacs
#### [doom](https://github.com/doomemacs/doomemacs)
For eglot use `(lsp +eglot)`
```elisp
;; init.el
(doom! :tools
lsp
:lang
(nix +lsp))
```#### [lsp-mode](https://github.com/emacs-lsp/lsp-mode)
```elisp
(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))
```#### [eglot](https://github.com/joaotavora/eglot)
```elisp
(add-to-list 'eglot-server-programs '(nix-mode . ("rnix-lsp")))
```### Kakoune
#### [kak-lsp](https://github.com/kak-lsp/kak-lsp)
kak-lsp has builtin configuration since version v9.0.0:
```toml
[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](https://github.com/kak-lsp/kak-lsp/issues/411).
### VSCode
#### [vscode-nix-ide](https://github.com/nix-community/vscode-nix-ide/)
```json
{
"nix.enableLanguageServer": true
}
```# RIP jd91mzm2
Sadly, the original author of this project, [@jD91mZM2 has passed
away](https://www.redox-os.org/news/open-source-mental-health/). 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.