Configuring Helix Language Servers on NixOS

I've enjoyed my experience with the Helix editor so far. It slots in nicely as a VIM replacement. Getting language servers setup for Helix on NixOS isn't totally obvious though, so I thought I'd document the process here.

Suppose we want to install a SQL language server. On NixOS, we can't run npm i -g.

Instead, we can use npx. Run npx and inside the shell environment run npm i sql-language-server. Now in ~/.config/helix/languages.toml, add
[language-server.sql-language-server] command = "npx" args = ["sql-language-server", "up", "--method", "stdio"] [[language]] name = "sql" language-servers = ["sql-language-server"]

As a second example, let's setup an HTML language server. As before, use npx to execute npm i vscode-langservers-extracted.

Add to languages.toml the following:
[language-server.vscode-html-language-server] command = "npx" args = ["vscode-html-language-server", "--stdio"] [[language]] name = "html" language-servers = ["vscode-html-language-server"]

For Python, there's ruff (the langserver is here). Luckily, there are ruff nixpkgs we can use. Add the ruff and ruff-lsp packages to your nix config and add
[language-server.python-ruff] command = "ruff-lsp" [[language]] name = "python" language-servers = ["python-ruff"]
to your Helix languages.toml.

That's all there is to it. For more language servers and configuration information see here. Just be mindful of the differences if you're on NixOS.