metals: use fixed-point mkDerivation

This allows for instance for extraJavaOpts to be correctly overridden
without needing to also implement the installPhase.
This commit is contained in:
Ben Edwards 2025-04-18 20:22:19 +01:00
parent 049be2cf6b
commit 5178484fff

View File

@ -7,15 +7,15 @@
setJavaClassPath,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "metals";
version = "1.5.2";
deps = stdenv.mkDerivation {
name = "${pname}-deps-${version}";
name = "metals-deps-${finalAttrs.version}";
buildCommand = ''
export COURSIER_CACHE=$(pwd)
${coursier}/bin/cs fetch org.scalameta:metals_2.13:${version} \
${coursier}/bin/cs fetch org.scalameta:metals_2.13:${finalAttrs.version} \
-r bintray:scalacenter/releases \
-r sonatype:snapshots > deps
mkdir -p $out/share/java
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
makeWrapper
setJavaClassPath
];
buildInputs = [ deps ];
buildInputs = [ finalAttrs.deps ];
dontUnpack = true;
@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
mkdir -p $out/bin
makeWrapper ${jre}/bin/java $out/bin/metals \
--add-flags "${extraJavaOpts} -cp $CLASSPATH scala.meta.metals.Main"
--add-flags "${finalAttrs.extraJavaOpts} -cp $CLASSPATH scala.meta.metals.Main"
'';
meta = with lib; {
@ -54,4 +54,4 @@ stdenv.mkDerivation rec {
tomahna
];
};
}
})