diff --git a/nix/flake.nix b/nix/flake.nix index 9c50040..95c7dea 100644 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -23,6 +23,9 @@ overlays = [ (import ./overlays/jpm.nix) (import ./overlays/bleve.nix) + (final: prev: { + kotlin-lsp = final.callPackage ./overlays/kotlin-lsp.nix {}; + }) ]; }; pkgs-unstable = nixpkgs-unstable.legacyPackages.${system}; @@ -68,6 +71,7 @@ pkgs.janet pkgs.yarn pkgs.jpm + pkgs.kotlin-lsp pkgs.meld pkgs.mprocs pkgs.nodejs_24 diff --git a/nix/overlays/kotlin-lsp.nix b/nix/overlays/kotlin-lsp.nix new file mode 100644 index 0000000..d6dd861 --- /dev/null +++ b/nix/overlays/kotlin-lsp.nix @@ -0,0 +1,56 @@ +{ + lib, + stdenv, + fetchzip, + openjdk, + makeWrapper, +}: + +stdenv.mkDerivation rec { + pname = "kotlin-lsp"; + version = "0.253.10629"; + src = fetchzip { + stripRoot = false; + url = "https://download-cdn.jetbrains.com/kotlin-lsp/${version}/kotlin-${version}.zip"; + hash = "sha256-LCLGo3Q8/4TYI7z50UdXAbtPNgzFYtmUY/kzo2JCln0="; + }; + + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/lib + mkdir -p $out/native + mkdir -p $out/bin + cp -r lib/* $out/lib + cp -r native/* $out/native + chmod +x kotlin-lsp.sh + cp "kotlin-lsp.sh" "$out/kotlin-lsp.sh" + ln -s $out/kotlin-lsp.sh $out/bin/kotlin-lsp + + runHook postInstall + ''; + + nativeBuildInputs = [ + makeWrapper + ]; + + postFixup = '' + wrapProgram "$out/bin/kotlin-lsp" --set JAVA_HOME ${openjdk} --prefix PATH : ${ + lib.strings.makeBinPath [ + openjdk + ] + } + ''; + + meta = { + description = "LSP implementation for Kotlin code completion, linting"; + homepage = "https://github.com/Kotlin/kotlin-lsp"; + changelog = "https://github.com/Kotlin/kotlin-lsp/blob/kotlin-lsp/v${version}/RELEASES.md"; + license = lib.licenses.asl20; + platforms = lib.platforms.unix; + sourceProvenance = [ lib.sourceTypes.binaryBytecode ]; + mainProgram = "kotlin-lsp"; + }; +}