{ description = "An unofficial Nix wrapper for official Kotlin LSP"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; }; outputs = inputs@{ self, nixpkgs, flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; perSystem = { config, self', inputs', pkgs, system, ... }: let sources = { "x86_64-linux" = { url = "https://download-cdn.jetbrains.com/kotlin-lsp/261.13587.0/kotlin-lsp-261.13587.0-linux-x64.zip"; hash = "sha256-EweSqy30NJuxvlJup78O+e+JOkzvUdb6DshqAy1j9jE="; }; "aarch64-linux" = { url = "https://download-cdn.jetbrains.com/kotlin-lsp/261.13587.0/kotlin-lsp-261.13587.0-linux-aarch64.zip"; hash = "sha256-MhHEYHBctaDH9JVkN/guDCG1if9Bip1aP3n+JkvHCvA="; }; "x86_64-darwin" = { url = "https://download-cdn.jetbrains.com/kotlin-lsp/261.13587.0/kotlin-lsp-261.13587.0-mac-x64.zip"; hash = "sha256-zMuUcahT1IiCT1NTrMCIzUNM0U6U3zaBkJtbGrzF7I8="; }; "aarch64-darwin" = { url = "https://download-cdn.jetbrains.com/kotlin-lsp/261.13587.0/kotlin-lsp-261.13587.0-mac-aarch64.zip"; hash = "sha256-zwlzVt3KYN0OXKr6sI9XSijXSbTImomSTGRGa+3zCK8="; }; }; srcData = sources.${system} or (throw "Unsupported system: ${system}"); in { formatter = pkgs.nixpkgs-fmt; packages.default = pkgs.stdenv.mkDerivation { pname = "kotlin-lsp"; version = "261.13587.0"; src = pkgs.fetchzip { url = srcData.url; hash = srcData.hash; stripRoot = false; }; nativeBuildInputs = [ pkgs.makeWrapper ] ++ pkgs.lib.optionals pkgs.stdenv.isLinux [ pkgs.autoPatchelfHook ]; buildInputs = pkgs.lib.optionals pkgs.stdenv.isLinux [ pkgs.stdenv.cc.cc.lib pkgs.zlib pkgs.libxtst pkgs.alsa-lib pkgs.freetype pkgs.wayland pkgs.libxrender ]; installPhase = '' runHook preInstall mkdir -p $out/bin $out/libexec cp -r ./* $out/libexec chmod -R u+w $out/libexec chmod +x $out/libexec/kotlin-lsp.sh chmod +x $out/libexec/jre/bin/java patchShebangs $out/libexec/kotlin-lsp.sh makeWrapper $out/libexec/kotlin-lsp.sh $out/bin/kotlin-lsp runHook postInstall ''; meta = { description = "Kotlin Language Server by JetBrains"; homepage = "https://github.com/Kotlin/kotlin-lsp"; license = pkgs.lib.licenses.asl20; platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; }; }; }; flake = { overlays.default = final: prev: { kotlin-lsp = self.packages.${prev.system}.default; }; }; }; }