From b044ad6e5e92e70d7a7723864b0ab7a6c25bafda Mon Sep 17 00:00:00 2001 From: "Adam C. Stephens" Date: Sun, 19 Oct 2025 17:47:01 -0400 Subject: [PATCH] elixir: simplifiy generic builder and overriding --- pkgs/development/beam-modules/default.nix | 10 ++-- pkgs/development/beam-modules/lib.nix | 44 --------------- pkgs/development/interpreters/elixir/1.15.nix | 6 +- pkgs/development/interpreters/elixir/1.16.nix | 6 +- pkgs/development/interpreters/elixir/1.17.nix | 6 +- pkgs/development/interpreters/elixir/1.18.nix | 6 +- pkgs/development/interpreters/elixir/1.19.nix | 6 +- .../interpreters/elixir/generic-builder.nix | 55 +++++++++---------- 8 files changed, 40 insertions(+), 99 deletions(-) diff --git a/pkgs/development/beam-modules/default.nix b/pkgs/development/beam-modules/default.nix index 34a18b07231e..f5185bc61786 100644 --- a/pkgs/development/beam-modules/default.nix +++ b/pkgs/development/beam-modules/default.nix @@ -51,27 +51,27 @@ let # BEAM-based languages. elixir = elixir_1_18; - elixir_1_19 = lib'.callElixir ../interpreters/elixir/1.19.nix { + elixir_1_19 = callPackage ../interpreters/elixir/1.19.nix { inherit erlang; debugInfo = true; }; - elixir_1_18 = lib'.callElixir ../interpreters/elixir/1.18.nix { + elixir_1_18 = callPackage ../interpreters/elixir/1.18.nix { inherit erlang; debugInfo = true; }; - elixir_1_17 = lib'.callElixir ../interpreters/elixir/1.17.nix { + elixir_1_17 = callPackage ../interpreters/elixir/1.17.nix { inherit erlang; debugInfo = true; }; - elixir_1_16 = lib'.callElixir ../interpreters/elixir/1.16.nix { + elixir_1_16 = callPackage ../interpreters/elixir/1.16.nix { inherit erlang; debugInfo = true; }; - elixir_1_15 = lib'.callElixir ../interpreters/elixir/1.15.nix { + elixir_1_15 = callPackage ../interpreters/elixir/1.15.nix { inherit erlang; debugInfo = true; }; diff --git a/pkgs/development/beam-modules/lib.nix b/pkgs/development/beam-modules/lib.nix index 368e6163daa9..be16654c2d1f 100644 --- a/pkgs/development/beam-modules/lib.nix +++ b/pkgs/development/beam-modules/lib.nix @@ -38,48 +38,4 @@ rec { versionArgs: import ../../development/interpreters/erlang/generic-builder.nix (versionArgs // args); in pkgs.callPackage (import drv genericBuilder) { }; - - /* - Uses generic-builder to evaluate provided drv containing Elixir version - specific data. - - drv: file containing version-specific args; - genericBuilder: generic builder for all Erlang versions; - args: arguments merged into version-specific args, used mostly to customize - high level options; - - Arguments passed to the generic-builder are overridable. - */ - callElixir = - drv: args: - let - builder = callPackage ../interpreters/elixir/generic-builder.nix args; - in - callPackage drv { - mkDerivation = pkgs.makeOverridable builder; - }; - - /* - Uses generic-builder to evaluate provided drv containing Elixir version - specific data. - - drv: package containing version-specific args; - builder: generic builder for all Erlang versions; - args: arguments merged into version-specific args, used mostly to customize - dependencies; - - Arguments passed to the generic-builder are overridable. - - Please note that "mkDerivation" defined here is the one called from 1.2.nix - and similar files. - */ - callLFE = - drv: args: - let - builder = callPackage ../interpreters/lfe/generic-builder.nix args; - in - callPackage drv { - mkDerivation = pkgs.makeOverridable builder; - }; - } diff --git a/pkgs/development/interpreters/elixir/1.15.nix b/pkgs/development/interpreters/elixir/1.15.nix index 4ed8e67bb8e4..ca38b3b9a2a4 100644 --- a/pkgs/development/interpreters/elixir/1.15.nix +++ b/pkgs/development/interpreters/elixir/1.15.nix @@ -1,9 +1,7 @@ -{ mkDerivation }: -mkDerivation { +import ./generic-builder.nix { version = "1.15.7"; - sha256 = "sha256-6GfZycylh+sHIuiQk/GQr1pRQRY1uBycSQdsVJ0J13k="; + hash = "sha256-6GfZycylh+sHIuiQk/GQr1pRQRY1uBycSQdsVJ0J13k="; # https://hexdocs.pm/elixir/1.15.0/compatibility-and-deprecations.html#compatibility-between-elixir-and-erlang-otp minimumOTPVersion = "24"; maximumOTPVersion = "26"; - escriptPath = "lib/elixir/scripts/generate_app.escript"; } diff --git a/pkgs/development/interpreters/elixir/1.16.nix b/pkgs/development/interpreters/elixir/1.16.nix index 1fdb4094494e..5845ff8bbb52 100644 --- a/pkgs/development/interpreters/elixir/1.16.nix +++ b/pkgs/development/interpreters/elixir/1.16.nix @@ -1,9 +1,7 @@ -{ mkDerivation }: -mkDerivation { +import ./generic-builder.nix { version = "1.16.3"; - sha256 = "sha256-WUBqoz3aQvBlSG3pTxGBpWySY7I0NUcDajQBgq5xYTU="; + hash = "sha256-WUBqoz3aQvBlSG3pTxGBpWySY7I0NUcDajQBgq5xYTU="; # https://hexdocs.pm/elixir/1.16.0/compatibility-and-deprecations.html#compatibility-between-elixir-and-erlang-otp minimumOTPVersion = "24"; maximumOTPVersion = "26"; - escriptPath = "lib/elixir/scripts/generate_app.escript"; } diff --git a/pkgs/development/interpreters/elixir/1.17.nix b/pkgs/development/interpreters/elixir/1.17.nix index 32d6654e11d5..1f0e05b6f016 100644 --- a/pkgs/development/interpreters/elixir/1.17.nix +++ b/pkgs/development/interpreters/elixir/1.17.nix @@ -1,9 +1,7 @@ -{ mkDerivation }: -mkDerivation { +import ./generic-builder.nix { version = "1.17.3"; - sha256 = "sha256-7Qo6y0KAQ9lwD4oH+7wQ4W5i6INHIBDN9IQAAsYzNJw="; + hash = "sha256-7Qo6y0KAQ9lwD4oH+7wQ4W5i6INHIBDN9IQAAsYzNJw="; # https://hexdocs.pm/elixir/1.17.3/compatibility-and-deprecations.html#compatibility-between-elixir-and-erlang-otp minimumOTPVersion = "25"; maximumOTPVersion = "27"; - escriptPath = "lib/elixir/scripts/generate_app.escript"; } diff --git a/pkgs/development/interpreters/elixir/1.18.nix b/pkgs/development/interpreters/elixir/1.18.nix index 8e4269c4d7a1..20779a12fcdd 100644 --- a/pkgs/development/interpreters/elixir/1.18.nix +++ b/pkgs/development/interpreters/elixir/1.18.nix @@ -1,8 +1,6 @@ -{ mkDerivation }: -mkDerivation { +import ./generic-builder.nix { version = "1.18.4"; - sha256 = "sha256-PwogI+HfRXy5M7Xn/KyDjm5vUquTBoGxliSV0A2AwSA="; + hash = "sha256-PwogI+HfRXy5M7Xn/KyDjm5vUquTBoGxliSV0A2AwSA="; # https://hexdocs.pm/elixir/1.18.0/compatibility-and-deprecations.html#between-elixir-and-erlang-otp minimumOTPVersion = "25"; - escriptPath = "lib/elixir/scripts/generate_app.escript"; } diff --git a/pkgs/development/interpreters/elixir/1.19.nix b/pkgs/development/interpreters/elixir/1.19.nix index 20676fe8be79..125028eef3a4 100644 --- a/pkgs/development/interpreters/elixir/1.19.nix +++ b/pkgs/development/interpreters/elixir/1.19.nix @@ -1,9 +1,7 @@ -{ mkDerivation }: -mkDerivation { +import ./generic-builder.nix { version = "1.19.1"; - sha256 = "sha256-0rJx1BoJGDS0FsXyngBfQL3LhhNZvwh+TLQZjqOPFQw="; + hash = "sha256-0rJx1BoJGDS0FsXyngBfQL3LhhNZvwh+TLQZjqOPFQw="; # https://hexdocs.pm/elixir/1.19.0-rc.1/compatibility-and-deprecations.html#between-elixir-and-erlang-otp minimumOTPVersion = "26"; maximumOTPVersion = "28"; - escriptPath = "lib/elixir/scripts/generate_app.escript"; } diff --git a/pkgs/development/interpreters/elixir/generic-builder.nix b/pkgs/development/interpreters/elixir/generic-builder.nix index 82a53c2509e8..5b7da9856fe1 100644 --- a/pkgs/development/interpreters/elixir/generic-builder.nix +++ b/pkgs/development/interpreters/elixir/generic-builder.nix @@ -1,32 +1,22 @@ { - config, - lib, - stdenv, - fetchFromGitHub, - erlang, - makeWrapper, - nix-update-script, - coreutils, - curl, - bash, - debugInfo ? false, -}@inputs: - -{ - baseName ? "elixir", version, - erlang ? inputs.erlang, + hash, minimumOTPVersion, maximumOTPVersion ? null, - sha256 ? null, - rev ? "v${version}", - src ? fetchFromGitHub { - inherit rev sha256; - owner = "elixir-lang"; - repo = "elixir"; - }, - escriptPath ? "lib/elixir/generate_app.escript", -}@args: +}: +{ + bash, + config, + coreutils, + curl, + debugInfo ? false, + erlang, + fetchFromGitHub, + lib, + makeWrapper, + nix-update-script, + stdenv, +}: let inherit (lib) @@ -79,9 +69,16 @@ if !config.allowAliases && !bothAssert then else assert assertMsg bothAssert compatibilityMsg; stdenv.mkDerivation { - pname = "${baseName}"; + pname = "elixir"; - inherit src version debugInfo; + src = fetchFromGitHub { + owner = "elixir-lang"; + repo = "elixir"; + rev = "v${version}"; + inherit hash; + }; + + inherit version debugInfo; nativeBuildInputs = [ makeWrapper ]; buildInputs = [ erlang ]; @@ -95,7 +92,7 @@ else }; preBuild = '' - patchShebangs ${escriptPath} || true + patchShebangs lib/elixir/scripts/generate_app.escript || true ''; # copy stdlib source files for LSP access @@ -136,8 +133,6 @@ else ]; }; - pos = builtins.unsafeGetAttrPos "sha256" args; - meta = { homepage = "https://elixir-lang.org/"; description = "Functional, meta-programming aware language built on top of the Erlang VM";