8000 GitHub - vorburger/vscode-nix-ide: Nix language support for VSCode editor [maintainer: @jnoortheen]
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

vorburger/vscode-nix-ide

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

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 or nixpkgs-fmt 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. If you are using an LSP server, then this configuration is not used.

{
    "nix.formatterPath": "nixfmt" // or "nixpkgs-fmt" or "alejandra" or "nix3-fmt" or pass full list of args such as  or `["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:

0