From b62d594bb8353243c8dfacaefcbfbe23d554eddf Mon Sep 17 00:00:00 2001 From: "Adam C. Stephens" Date: Tue, 24 Feb 2026 20:42:14 +0000 Subject: [PATCH] beamPackages.expert: init at 0.1.0-rc.2 --- pkgs/development/beam-modules/default.nix | 1 + .../beam-modules/expert/default.nix | 75 +++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 pkgs/development/beam-modules/expert/default.nix diff --git a/pkgs/development/beam-modules/default.nix b/pkgs/development/beam-modules/default.nix index 0fec22df3458..7adb7f38eba9 100644 --- a/pkgs/development/beam-modules/default.nix +++ b/pkgs/development/beam-modules/default.nix @@ -90,6 +90,7 @@ let }; elixir-ls = callPackage ./elixir-ls { inherit elixir; }; + expert = callPackage ./expert { }; lfe = callPackage ../interpreters/lfe { inherit erlang buildRebar3 buildHex; }; diff --git a/pkgs/development/beam-modules/expert/default.nix b/pkgs/development/beam-modules/expert/default.nix new file mode 100644 index 000000000000..057994457b85 --- /dev/null +++ b/pkgs/development/beam-modules/expert/default.nix @@ -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 ]; + }; +}