diff options
Diffstat (limited to 'pkgs/development/tools/language-servers/metals/default.nix')
-rw-r--r-- | pkgs/development/tools/language-servers/metals/default.nix | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/pkgs/development/tools/language-servers/metals/default.nix b/pkgs/development/tools/language-servers/metals/default.nix new file mode 100644 index 0000000000000..5b275f82346b8 --- /dev/null +++ b/pkgs/development/tools/language-servers/metals/default.nix @@ -0,0 +1,42 @@ +{ stdenv, lib, coursier, jre, makeWrapper, setJavaClassPath }: + +stdenv.mkDerivation rec { + pname = "metals"; + version = "0.11.9"; + + deps = stdenv.mkDerivation { + name = "${pname}-deps-${version}"; + buildCommand = '' + export COURSIER_CACHE=$(pwd) + ${coursier}/bin/cs fetch org.scalameta:metals_2.13:${version} \ + -r bintray:scalacenter/releases \ + -r sonatype:snapshots > deps + mkdir -p $out/share/java + cp -n $(< deps) $out/share/java/ + ''; + outputHashMode = "recursive"; + outputHashAlgo = "sha256"; + outputHash = "sha256-CJ34OZOAM0Le9U0KSe0nKINnxA3iUgqUMtS06YnjvVo="; + }; + + nativeBuildInputs = [ makeWrapper setJavaClassPath ]; + buildInputs = [ deps ]; + + dontUnpack = true; + + extraJavaOpts = "-XX:+UseG1GC -XX:+UseStringDeduplication -Xss4m -Xms100m"; + + installPhase = '' + mkdir -p $out/bin + + makeWrapper ${jre}/bin/java $out/bin/metals \ + --add-flags "${extraJavaOpts} -cp $CLASSPATH scala.meta.metals.Main" + ''; + + meta = with lib; { + homepage = "https://scalameta.org/metals/"; + license = licenses.asl20; + description = "Work-in-progress language server for Scala"; + maintainers = with maintainers; [ fabianhjr tomahna ]; + }; +} |