beamPackages.expert: init at 0.1.0-rc.2

This commit is contained in:
Adam C. Stephens
2026-02-24 20:42:14 +00:00
parent 44d73e0106
commit b62d594bb8
2 changed files with 76 additions and 0 deletions

View File

@@ -90,6 +90,7 @@ let
};
elixir-ls = callPackage ./elixir-ls { inherit elixir; };
expert = callPackage ./expert { };
lfe = callPackage ../interpreters/lfe { inherit erlang buildRebar3 buildHex; };

View File

@@ -0,0 +1,75 @@
{
erlang,
fetchFromGitHub,
mixRelease,
lib,
fetchMixDeps,
}:
let
version = "0.1.0-rc.2";
src = fetchFromGitHub {
owner = "elixir-lang";
repo = "expert";
tag = "v${version}";
hash = "sha256-5BGI0bLGCvYyMT4GNHLalin1jg9UW6qtFC7B8OssHCc=";
};
engineDeps = fetchMixDeps {
pname = "mix-deps-expert-engine";
inherit src version;
hash = "sha256-PTyPLyo85N0BltX9oIRhHDGKgmNScb10N129wC8o6Q4=";
preConfigure = ''
cd apps/engine
'';
};
in
mixRelease rec {
pname = "expert";
inherit src version;
mixFodDeps = fetchMixDeps {
pname = "mix-deps-${pname}";
inherit src version;
hash = "sha256-T5OSjoglZfQa1lMO2lOZJ7yWoyxf6m33rKGuy4zq2AE=";
preConfigure = ''
cd apps/expert
'';
};
mixReleaseName = "plain";
preConfigure = ''
ln -sv ${engineDeps} apps/engine/deps
cd apps/expert
'';
postInstall = ''
mv $out/bin/plain $out/bin/expert
wrapProgram $out/bin/expert --add-flag "eval" --add-flag "System.no_halt(true); Application.ensure_all_started(:xp_expert)"
'';
removeCookie = false;
passthru = {
inherit engineDeps;
};
meta = {
homepage = "https://github.com/elixir-lang/expert";
changelog = "https://github.com/elixir-lang/expert/releases/tag/v${version}";
description = "Official Elixir Language Server Protocol implementation";
longDescription = ''
Expert is the official language server implementation for the Elixir programming language.
'';
license = lib.licenses.asl20;
inherit (erlang.meta) platforms;
mainProgram = "expert";
teams = [ lib.teams.beam ];
};
}