diff options
Diffstat (limited to 'nixpkgs/pkgs/misc/vscode-extensions/rust-analyzer')
-rw-r--r-- | nixpkgs/pkgs/misc/vscode-extensions/rust-analyzer/build-deps/package.json | 26 | ||||
-rw-r--r-- | nixpkgs/pkgs/misc/vscode-extensions/rust-analyzer/default.nix | 49 |
2 files changed, 75 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/misc/vscode-extensions/rust-analyzer/build-deps/package.json b/nixpkgs/pkgs/misc/vscode-extensions/rust-analyzer/build-deps/package.json new file mode 100644 index 000000000000..4af15f4619ea --- /dev/null +++ b/nixpkgs/pkgs/misc/vscode-extensions/rust-analyzer/build-deps/package.json @@ -0,0 +1,26 @@ +{ + "name": "rust-analyzer", + "version": "0.4.0-dev", + "dependencies": { + "node-fetch": "^2.6.1", + "vscode-languageclient": "7.0.0-next.9", + "@rollup/plugin-commonjs": "^13.0.2", + "@rollup/plugin-node-resolve": "^8.4.0", + "@types/glob": "^7.1.3", + "@types/mocha": "^7.0.2", + "@types/node": "~12.7.0", + "@types/node-fetch": "^2.5.7", + "@types/vscode": "^1.47.1", + "@typescript-eslint/eslint-plugin": "^3.10.1", + "@typescript-eslint/parser": "^3.10.1", + "eslint": "^7.8.0", + "glob": "^7.1.6", + "mocha": "^8.1.3", + "rollup": "^2.26.9", + "tslib": "^2.0.1", + "typescript": "^3.9.7", + "typescript-formatter": "^7.2.2", + "vsce": "^1.79.5", + "vscode-test": "^1.4.0" + } +} diff --git a/nixpkgs/pkgs/misc/vscode-extensions/rust-analyzer/default.nix b/nixpkgs/pkgs/misc/vscode-extensions/rust-analyzer/default.nix new file mode 100644 index 000000000000..d19027fa5762 --- /dev/null +++ b/nixpkgs/pkgs/misc/vscode-extensions/rust-analyzer/default.nix @@ -0,0 +1,49 @@ +# Update script: pkgs/development/tools/rust/rust-analyzer/update.sh +{ lib, stdenv, vscode-utils, jq, rust-analyzer, nodePackages +, setDefaultServerPath ? true +}: + +let + pname = "rust-analyzer"; + publisher = "matklad"; + + # Follow the unstable version of rust-analyzer, since the extension is not stable yet. + inherit (rust-analyzer) version; + + build-deps = nodePackages."rust-analyzer-build-deps-../../misc/vscode-extensions/rust-analyzer/build-deps"; + # FIXME: Making a new derivation to link `node_modules` and run `npm run package` + # will cause a build failure. + vsix = build-deps.override { + src = "${rust-analyzer.src}/editors/code"; + outputs = [ "vsix" "out" ]; + + postInstall = '' + npm run package + mkdir $vsix + cp ${pname}.vsix $vsix/${pname}.zip + ''; + }; + +in vscode-utils.buildVscodeExtension { + inherit version vsix; + name = "${pname}-${version}"; + src = "${vsix}/${pname}.zip"; + vscodeExtUniqueId = "${publisher}.${pname}"; + + nativeBuildInputs = lib.optional setDefaultServerPath jq; + + preInstall = lib.optionalString setDefaultServerPath '' + jq '.contributes.configuration.properties."rust-analyzer.serverPath".default = $s' \ + --arg s "${rust-analyzer}/bin/rust-analyzer" \ + package.json >package.json.new + mv package.json.new package.json + ''; + + meta = with lib; { + description = "An alternative rust language server to the RLS"; + homepage = "https://github.com/rust-analyzer/rust-analyzer"; + license = with licenses; [ mit asl20 ]; + maintainers = with maintainers; [ oxalica ]; + platforms = platforms.all; + }; +} |