Unverified Commit b62d594b authored by Adam C. Stephens's avatar Adam C. Stephens
Browse files

beamPackages.expert: init at 0.1.0-rc.2

parent 44d73e01
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -90,6 +90,7 @@ let
      };

      elixir-ls = callPackage ./elixir-ls { inherit elixir; };
      expert = callPackage ./expert { };

      lfe = callPackage ../interpreters/lfe { inherit erlang buildRebar3 buildHex; };

+75 −0
Original line number Diff line number Diff line
{
  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 ];
  };
}