diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 1c5cef95a66b..b8ff798f2f3d 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -4222,6 +4222,14 @@ githubId = 39825; name = "Dominik Honnef"; }; + donovanglover = { + github = "donovanglover"; + githubId = 2374245; + name = "Donovan Glover"; + keys = [{ + fingerprint = "EE7D 158E F9E7 660E 0C33 86B2 8FC5 F7D9 0A5D 8F4D"; + }]; + }; doriath = { email = "tomasz.zurkowski@gmail.com"; github = "doriath"; diff --git a/pkgs/development/tools/language-servers/crystalline/default.nix b/pkgs/development/tools/language-servers/crystalline/default.nix new file mode 100644 index 000000000000..8de4ae808779 --- /dev/null +++ b/pkgs/development/tools/language-servers/crystalline/default.nix @@ -0,0 +1,48 @@ +{ lib +, crystal +, fetchFromGitHub +, llvmPackages +, openssl +, makeWrapper +}: + +let + version = "0.9.0"; +in +crystal.buildCrystalPackage { + pname = "crystalline"; + inherit version; + + src = fetchFromGitHub { + owner = "elbywan"; + repo = "crystalline"; + rev = "v${version}"; + sha256 = "sha256-kx3rdGqIbrOaHY7V3uXLqIFEYzzsMKzNwZ6Neq8zM3c="; + }; + + format = "crystal"; + shardsFile = ./shards.nix; + + nativeBuildInputs = [ llvmPackages.llvm openssl makeWrapper ]; + + doCheck = false; + doInstallCheck = false; + + crystalBinaries.crystalline = { + src = "src/crystalline.cr"; + options = [ "--release" "--no-debug" "--progress" "-Dpreview_mt" ]; + }; + + postInstall = '' + wrapProgram "$out/bin/crystalline" --prefix PATH : '${ + lib.makeBinPath [llvmPackages.llvm.dev] + }' + ''; + + meta = with lib; { + description = "A Language Server Protocol implementation for Crystal"; + homepage = "https://github.com/elbywan/crystalline"; + license = licenses.mit; + maintainers = with maintainers; [ donovanglover ]; + }; +} diff --git a/pkgs/development/tools/language-servers/crystalline/shards.nix b/pkgs/development/tools/language-servers/crystalline/shards.nix new file mode 100644 index 000000000000..2e53527fd0b8 --- /dev/null +++ b/pkgs/development/tools/language-servers/crystalline/shards.nix @@ -0,0 +1,27 @@ +{ + bisect = { + url = "https://github.com/spider-gazelle/bisect.git"; + rev = "v1.2.1"; + sha256 = "1ddz7fag1l65m6g0vw6xa96yv00rdwjj2z69k26rvyz37qk9ccqg"; + }; + lsp = { + url = "https://github.com/elbywan/crystal-lsp.git"; + rev = "v0.1.2"; + sha256 = "0knw8xaq3ssyb34w77a390j79m4w6bks5hlwr8m8fci2gq9a0r6z"; + }; + priority-queue = { + url = "https://github.com/spider-gazelle/priority-queue.git"; + rev = "v1.0.1"; + sha256 = "1rkppd8win4yalxcvsxikqcq6sw0npdqjajqbj57m78bzlxpyjv6"; + }; + sentry = { + url = "https://github.com/samueleaton/sentry.git"; + rev = "e448ce83486f99ef016c311e10ec0cac805cded3"; + sha256 = "13yp7805xpd605jpfpb3srqb0psy25w7n6x9mpkcyvzhqmpnpfyq"; + }; + version_from_shard = { + url = "https://github.com/hugopl/version_from_shard.git"; + rev = "v1.2.5"; + sha256 = "0xizj0q4rd541rwjbx04cjifc2gfx4l5v6q2y7gmd0ndjmkgb8ik"; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0c3be6463d55..dca5e1cfc138 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15048,6 +15048,10 @@ with pkgs; crystal2nix = callPackage ../development/compilers/crystal2nix { }; + crystalline = callPackage ../development/tools/language-servers/crystalline { + llvmPackages = llvmPackages_15; + }; + icr = callPackage ../development/tools/icr { }; scry = callPackage ../development/tools/scry { crystal = crystal_1_2; };