diff --git a/fixtures/example/deps.nix b/fixtures/example/deps.nix index 04de271..5a46bc2 100644 --- a/fixtures/example/deps.nix +++ b/fixtures/example/deps.nix @@ -144,7 +144,7 @@ let name = "rustlerPrecompiled"; toolchain = { name = "nightly-2025-06-23"; - sha256 = "sha256-UAoZcxg3iWtS+2n8TFNfANFt/GmkuOMDf7QAE0fRxeA="; + sha256 = "sha256-UAoZcxg3iWtS+2n8TFNfANFt/GmkuOMDf7QAE0fRxeA="; }; } ]; diff --git a/lib/deps_nix/derivation.ex b/lib/deps_nix/derivation.ex index 95d4622..dae745d 100644 --- a/lib/deps_nix/derivation.ex +++ b/lib/deps_nix/derivation.ex @@ -107,10 +107,20 @@ defmodule DepsNix.Derivation do {:hex, name, version, _hash, beam_builders, _sub_deps, _, sha256} = dep.opts[:lock] fetcher = %FetchHex{pkg: name, version: version, sha256: sha256} + builder = + case nix_builder(beam_builders) do + nil -> + IO.puts("Unknown builders #{inspect(beam_builders)} for dep: #{name}") + System.halt(1) + + builder -> + builder + end + new(dep, version: version, src: fetcher, - builder: nix_builder(beam_builders), + builder: builder, app_config_path: app_config_path(options) ) end @@ -119,6 +129,8 @@ defmodule DepsNix.Derivation do cond do Enum.member?(builders, :mix) -> "buildMix" Enum.member?(builders, :rebar3) -> "buildRebar3" + Enum.member?(builders, :make) -> "buildErlangMk" + true -> nil end end diff --git a/test/deps_nix/derivation_test.exs b/test/deps_nix/derivation_test.exs index 3241808..66c1f0d 100644 --- a/test/deps_nix/derivation_test.exs +++ b/test/deps_nix/derivation_test.exs @@ -131,6 +131,12 @@ defmodule DepsNix.DerivationTest do end end + property "selects buildErlangMk for :make builder" do + check all dep <- dep(scm: Mix.SCM.Hex, builders: [:make]) do + assert %Derivation{builder: "buildErlangMk"} = Derivation.from(dep, %DepsNix.Options{}) + end + end + test "doesn't include optional dependencies in beamDeps" do eventstore = %Mix.Dep{