While trying out elixir in a nix-shell, running mix compile
caused lots of compilation warnings:
$ nix-shell -p elixir
$ mix new foo
$ cd foo
$ mix compile
warning: this clause cannot match because a previous clause at line 1 always matches
lib/list/chars.ex:1
...
warning: this clause cannot match because a previous clause at line 6 always matches
lib/inspect.ex:6
I’m running NixOS, so I tried adding elixir
to my nixos config instead of using the nix-shell
and the warnings disappeared. I compared env
inside and outside the nix-shell
and found that in the shell, the environment had set:
ERL_LIBS=/nix/store/h7zp9vg05m4jimbvp4d9majqnq4qa8jb-elixir-1.9.1/lib/elixir/lib:/nix/store/h7zp9vg05m4jimbvp4d9majqnq4qa8jb-elixir-1.9.1/lib/elixir/lib
Since the above contains the same path twice, I tried removing the duplicate entry, but this made no difference.
Unsetting ERL_LIBS
entirely, however, eliminated the warnings, and so far things seem to work as expected (I can run mix new
, mix compile
, and mix test
without issue).
I don’t know enough about Elixir or Erlang to say whether this will break something else further down the line.
Does anyone know whether this is a reasonable workaround, or if there’s a better solution?