summary refs log tree commit diff
diff options
context:
space:
mode:
authorSergei Maximov <s.b.maximov@gmail.com>2021-11-02 15:57:13 +0300
committerRaphael Megzari <raphael@megzari.com>2021-11-03 08:46:46 +0900
commit2a9336b426753b1f948bed19c97f07b0f081be46 (patch)
tree3492627a952697e51ae640133046f13fdade5ff6
parent45891c5f1c9d03397e8a77a35214a4ce83dc597d (diff)
downloadnixpkgs-2a9336b426753b1f948bed19c97f07b0f081be46.tar
nixpkgs-2a9336b426753b1f948bed19c97f07b0f081be46.tar.gz
nixpkgs-2a9336b426753b1f948bed19c97f07b0f081be46.tar.bz2
nixpkgs-2a9336b426753b1f948bed19c97f07b0f081be46.tar.lz
nixpkgs-2a9336b426753b1f948bed19c97f07b0f081be46.tar.xz
nixpkgs-2a9336b426753b1f948bed19c97f07b0f081be46.tar.zst
nixpkgs-2a9336b426753b1f948bed19c97f07b0f081be46.zip
elixir-ls: build LS using the same Elixir version that is used to run LS
The Elixir LS package in Nixpkgs by default used the latest Elixir
version available to compile and run Elixir LS. The user can build
a custom Elixir LS package with a different Elixir version:

    my-custom-elixir-ls = pkgs.elixir-ls.override {
      elixir = my-custom-elixir;
    };

But by doing so the user changes only the Elixir version used to
run Elixir LS; the Elixir version used to compile Elixir LS doesn't
change. As the result, the custom Elixir LS package uses a different
Elixir version at runtime than the Elixir version it was compiled with.

In order to be able to modify the Elixir version used at build time,
I changed `mixRelease` and `fetchMixDeps` to accept `elixir` and
`hex` as parameters (defaults to the latest Elixir and Hex packages).
-rw-r--r--pkgs/development/beam-modules/elixir-ls/default.nix3
-rw-r--r--pkgs/development/beam-modules/fetch-mix-deps.nix4
-rw-r--r--pkgs/development/beam-modules/mix-release.nix4
3 files changed, 8 insertions, 3 deletions
diff --git a/pkgs/development/beam-modules/elixir-ls/default.nix b/pkgs/development/beam-modules/elixir-ls/default.nix
index 1385b40fc1f..e0a7cb4e539 100644
--- a/pkgs/development/beam-modules/elixir-ls/default.nix
+++ b/pkgs/development/beam-modules/elixir-ls/default.nix
@@ -5,6 +5,7 @@
 mixRelease rec {
   pname = "elixir-ls";
   version = "0.8.1";
+  inherit elixir;
 
   src = fetchFromGitHub {
     owner = "elixir-lsp";
@@ -16,7 +17,7 @@ mixRelease rec {
 
   mixFodDeps = fetchMixDeps {
     pname = "mix-deps-${pname}";
-    inherit src version;
+    inherit src version elixir;
     sha256 = "sha256-OzjToAg+q/ybCyqzNFk28OBsItjFTbdPi416EPh2qX0=";
   };
 
diff --git a/pkgs/development/beam-modules/fetch-mix-deps.nix b/pkgs/development/beam-modules/fetch-mix-deps.nix
index 0c6f4e35a90..ac6d5f3c8b9 100644
--- a/pkgs/development/beam-modules/fetch-mix-deps.nix
+++ b/pkgs/development/beam-modules/fetch-mix-deps.nix
@@ -1,4 +1,4 @@
-{ stdenvNoCC, lib, elixir, hex, rebar, rebar3, cacert, git }:
+{ stdenvNoCC, lib, elixir, hex, rebar, rebar3, cacert, git }@inputs:
 
 { pname
 , version
@@ -8,6 +8,8 @@
 , debug ? false
 , meta ? { }
 , patches ? []
+, elixir ? inputs.elixir
+, hex ? inputs.hex.override { inherit elixir; }
 , ...
 }@attrs:
 
diff --git a/pkgs/development/beam-modules/mix-release.nix b/pkgs/development/beam-modules/mix-release.nix
index 554e2e2daed..6265e1697b3 100644
--- a/pkgs/development/beam-modules/mix-release.nix
+++ b/pkgs/development/beam-modules/mix-release.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, elixir, erlang, findutils, hex, rebar, rebar3, fetchMixDeps, makeWrapper, git, ripgrep }:
+{ stdenv, lib, elixir, erlang, findutils, hex, rebar, rebar3, fetchMixDeps, makeWrapper, git, ripgrep }@inputs:
 
 { pname
 , version
@@ -15,6 +15,8 @@
   # each dependency needs to have a setup hook to add the lib path to $ERL_LIBS
   # this is how mix will find dependencies
 , mixNixDeps ? { }
+, elixir ? inputs.elixir
+, hex ? inputs.hex.override { inherit elixir; }
 , ...
 }@attrs:
 let