caddy: 2.9.0 -> 2.9.1 (#375655)
[NixPkgs.git] / pkgs / by-name / me / metals / package.nix
blob0eff21acb42141f13bc927332ca680c7d7cf5685
2   stdenv,
3   lib,
4   coursier,
5   jre,
6   makeWrapper,
7   setJavaClassPath,
8 }:
10 stdenv.mkDerivation rec {
11   pname = "metals";
12   version = "1.4.2";
14   deps = stdenv.mkDerivation {
15     name = "${pname}-deps-${version}";
16     buildCommand = ''
17       export COURSIER_CACHE=$(pwd)
18       ${coursier}/bin/cs fetch org.scalameta:metals_2.13:${version} \
19         -r bintray:scalacenter/releases \
20         -r sonatype:snapshots > deps
21       mkdir -p $out/share/java
22       cp $(< deps) $out/share/java/
23     '';
24     outputHashMode = "recursive";
25     outputHashAlgo = "sha256";
26     outputHash = "sha256-bvdLEHJgtLAu7C/jLMpcmFOVqASPNbiyN3q4qtYL3ls=";
27   };
29   nativeBuildInputs = [
30     makeWrapper
31     setJavaClassPath
32   ];
33   buildInputs = [ deps ];
35   dontUnpack = true;
37   extraJavaOpts = "-XX:+UseG1GC -XX:+UseStringDeduplication -Xss4m -Xms100m";
39   installPhase = ''
40     mkdir -p $out/bin
42     makeWrapper ${jre}/bin/java $out/bin/metals \
43       --add-flags "${extraJavaOpts} -cp $CLASSPATH scala.meta.metals.Main"
44   '';
46   meta = with lib; {
47     homepage = "https://scalameta.org/metals/";
48     license = licenses.asl20;
49     description = "Language server for Scala";
50     mainProgram = "metals";
51     maintainers = with maintainers; [
52       fabianhjr
53       jpaju
54       tomahna
55     ];
56   };