Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Nix IDENew to Visual Studio Code? Get it now.
Nix IDE

Nix IDE

Noortheen

|
109,237 installs
| (7) | Free
Nix language support - syntax highlighting, formatting, and error reporting.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Nix IDE ✨💡🌟

Adds Nix language support for Visual Studio Code.

Quickstart 🚀

  1. Install the extension, and open a Nix file.
  2. Syntax highlighting should work out of the box. Nix code blocks inside markdown files are also supported.
  3. Auto-formatting should work if nixfmt is available in $PATH. A custom formatter can be set by configuring nix.formatterPath.
  4. Syntax errors are linted using nix-instantiate.
  5. Full language support can be enabled by configuring a language server. See LSP Plugin Support for more information.
  6. Snippets are provided for conditional expressions, let/with expressions, and recursive sets.
  7. Path completion is supported using the Path Intellisense extension.

Settings ⚙️

LSP Plugin Support

Full language support can be enabled by using a language server. Generally, any Nix LSP implementation should work. Some examples are given below for nil and nixd.

{
  "nix.enableLanguageServer": true,
  "nix.serverPath": "nil", // or "nixd"
  // LSP config can be passed via the ``nix.serverSettings.{lsp}`` as shown below.
  "nix.serverSettings": {
    // check https://github.com/oxalica/nil/blob/main/docs/configuration.md for all options available
    "nil": {
      // "diagnostics": {
      //  "ignored": ["unused_binding", "unused_with"],
      // },
      "formatting": {
        "command": ["nixfmt"],
      },
    },
    // check https://github.com/nix-community/nixd/blob/main/nixd/docs/configuration.md for all nixd config
    "nixd": {
      "formatting": {
        "command": ["nixfmt"],
      },
      "options": {
        // By default, this entry will be read from `import <nixpkgs> { }`.
        // You can write arbitrary Nix expressions here, to produce valid "options" declaration result.
        // Tip: for flake-based configuration, utilize `builtins.getFlake`
        "nixos": {
          "expr": "(builtins.getFlake \"/absolute/path/to/flake\").nixosConfigurations.<name>.options",
        },
        "home-manager": {
          "expr": "(builtins.getFlake \"/absolute/path/to/flake\").homeConfigurations.<name>.options",
        },
        // Tip: use ${workspaceFolder} variable to define path
        "nix-darwin": {
          "expr": "(builtins.getFlake \"${workspaceFolder}/path/to/flake\").darwinConfigurations.<name>.options",
        },
      },
    }
  }
}

Custom Formatter

It can be changed by setting nix.formatterPath to any command which can accept file contents on stdin and return formatted text on stdout.

[!IMPORTANT] If you are using the above LSP plugin setting, then this configuration is not used.

{
    "nix.formatterPath": "nixfmt" // or "alejandra"
    // or pass full list of args like below
    // "nix.formatterPath": ["treefmt", "--stdin", "{file}"]
}

Contributing 💪

We welcome contributions to this extension. Kindly start with any of open issues or feature requests.

See CONTRIBUTING.md for more information.

Credits

Special thanks to:

  • @wmertens for writing the grammar.
  • The vscode-fish extension, which was modified to work for Nix in this extension.
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft