diff options
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/rust/rls/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/compilers/rust/rls/default.nix | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/rust/rls/default.nix b/nixpkgs/pkgs/development/compilers/rust/rls/default.nix new file mode 100644 index 000000000000..63a3c96a8f92 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/rust/rls/default.nix @@ -0,0 +1,49 @@ +{ stdenv, makeWrapper, fetchFromGitHub, rustPlatform +, openssh, openssl, pkgconfig, cmake, zlib, curl, libiconv +, CoreFoundation, Security }: + +rustPlatform.buildRustPackage { + pname = "rls"; + inherit (rustPlatform.rust.rustc) src version; + + # changes hash of vendor directory otherwise + dontUpdateAutotoolsGnuConfigScripts = true; + + cargoVendorDir = "vendor"; + buildAndTestSubdir = "src/tools/rls"; + + preBuild = '' + # client tests are flaky + rm tests/client.rs + ''; + + # a nightly compiler is required unless we use this cheat code. + RUSTC_BOOTSTRAP=1; + + # rls-rustc links to rustc_private crates + CARGO_BUILD_RUSTFLAGS = if stdenv.isDarwin then "-C rpath" else null; + + nativeBuildInputs = [ pkgconfig cmake ]; + buildInputs = [ openssh openssl curl zlib libiconv makeWrapper rustPlatform.rust.rustc.llvm ] + ++ (stdenv.lib.optionals stdenv.isDarwin [ CoreFoundation Security ]); + + doCheck = true; + + doInstallCheck = true; + installCheckPhase = '' + $out/bin/rls --version + ''; + + RUST_SRC_PATH = rustPlatform.rustcSrc; + postInstall = '' + wrapProgram $out/bin/rls --set-default RUST_SRC_PATH ${rustPlatform.rustcSrc} + ''; + + meta = with stdenv.lib; { + description = "Rust Language Server - provides information about Rust programs to IDEs and other tools"; + homepage = "https://github.com/rust-lang/rls/"; + license = with licenses; [ asl20 /* or */ mit ]; + maintainers = with maintainers; [ symphorien ]; + platforms = platforms.all; + }; +} |