From b051a144dc42449c723ca188e65f58d159ebb0ee Mon Sep 17 00:00:00 2001 From: "Adam C. Stephens" Date: Wed, 23 Jul 2025 13:00:55 -0400 Subject: [PATCH] elixir-ls: force local installation --- pkgs/development/beam-modules/default.nix | 2 +- .../beam-modules/elixir-ls/default.nix | 44 +++++++------------ .../beam-modules/elixir-ls/launch.sh.patch | 8 ++-- 3 files changed, 20 insertions(+), 34 deletions(-) diff --git a/pkgs/development/beam-modules/default.nix b/pkgs/development/beam-modules/default.nix index 486d91a5ab06..8b04fe8a07a7 100644 --- a/pkgs/development/beam-modules/default.nix +++ b/pkgs/development/beam-modules/default.nix @@ -89,7 +89,7 @@ let inherit fetchMixDeps mixRelease; }; - elixir-ls = callPackage ./elixir-ls { inherit elixir fetchMixDeps mixRelease; }; + elixir-ls = callPackage ./elixir-ls { inherit elixir; }; lfe = lfe_2_1; lfe_2_1 = lib'.callLFE ../interpreters/lfe/2.1.nix { inherit erlang buildRebar3 buildHex; }; diff --git a/pkgs/development/beam-modules/elixir-ls/default.nix b/pkgs/development/beam-modules/elixir-ls/default.nix index 237838bc337b..eda8502395ad 100644 --- a/pkgs/development/beam-modules/elixir-ls/default.nix +++ b/pkgs/development/beam-modules/elixir-ls/default.nix @@ -3,13 +3,12 @@ elixir, fetchpatch, fetchFromGitHub, - fetchMixDeps, makeWrapper, - mixRelease, + stdenv, nix-update-script, }: -mixRelease rec { +stdenv.mkDerivation rec { pname = "elixir-ls"; version = "0.28.1"; @@ -20,16 +19,6 @@ mixRelease rec { hash = "sha256-r4P+3MPniDNdF3SG2jfBbzHsoxn826eYd2tsv6bJBoI="; }; - inherit elixir; - - stripDebug = true; - - mixFodDeps = fetchMixDeps { - pname = "mix-deps-${pname}"; - inherit src version elixir; - hash = "sha256-8zs+99jwf+YX5SwD65FCPmfrYhTCx4AQGCGsDeCKxKc="; - }; - patches = [ # fix elixir deterministic support https://github.com/elixir-lsp/elixir-ls/pull/1216 # remove > 0.28.1 @@ -46,28 +35,25 @@ mixRelease rec { makeWrapper ]; - # elixir-ls require a special step for release - # compile and release need to be performed together because - # of the no-deps-check requirement - buildPhase = '' - runHook preBuild + # for substitution + env.elixir = elixir; - mix do compile --no-deps-check, elixir_ls.release${lib.optionalString (lib.versionAtLeast elixir.version "1.16.0") "2"} - - runHook postBuild - ''; + dontConfigure = true; + dontBuild = true; installPhase = '' + cp -R . $out + ln -s $out/VERSION $out/scripts/VERSION + + substituteAllInPlace $out/scripts/launch.sh + mkdir -p $out/bin - cp -Rv release $out/libexec - substituteAllInPlace $out/libexec/launch.sh + makeWrapper $out/scripts/language_server.sh $out/bin/elixir-ls \ + --set ELS_LOCAL "1" - makeWrapper $out/libexec/language_server.sh $out/bin/elixir-ls \ - --set ELS_INSTALL_PREFIX "$out/libexec" - - makeWrapper $out/libexec/debug_adapter.sh $out/bin/elixir-debug-adapter \ - --set ELS_INSTALL_PREFIX "$out/libexec" + makeWrapper $out/scripts/debug_adapter.sh $out/bin/elixir-debug-adapter \ + --set ELS_LOCAL "1" runHook postInstall ''; diff --git a/pkgs/development/beam-modules/elixir-ls/launch.sh.patch b/pkgs/development/beam-modules/elixir-ls/launch.sh.patch index aabfd82a3d58..b497720e4bd9 100644 --- a/pkgs/development/beam-modules/elixir-ls/launch.sh.patch +++ b/pkgs/development/beam-modules/elixir-ls/launch.sh.patch @@ -1,6 +1,6 @@ -diff --git i/scripts/launch.sh w/scripts/launch.sh -index 21afbb1e..975cbdf0 100755 ---- i/scripts/launch.sh +diff --git c/scripts/launch.sh w/scripts/launch.sh +index 21afbb1e..6b61f0b4 100755 +--- c/scripts/launch.sh +++ w/scripts/launch.sh @@ -1,125 +1,4 @@ -#!/bin/sh @@ -140,7 +140,7 @@ index 21afbb1e..975cbdf0 100755 - SCRIPTPATH=${ELS_INSTALL_PREFIX} -fi +SCRIPT=$(readlink -f "$0") -+SCRIPTPATH=$(dirname "$SCRIPT")/../libexec ++SCRIPTPATH=$(dirname "$SCRIPT")/../scripts export MIX_ENV=prod # Mix.install prints to stdout and reads from stdin