View Source mix deps.nix (deps_nix v2.1.0)
Creates Nix derivations for Mix dependencies.
When run without arguments, generates deps.nix
in the current directory, but
only for :prod
dependencies.
The resulting file contains a Nix function that can be called with an empty attribute set:
pkgs.callPackages ./deps.nix { }
That attribute set can optionally include overrides, which look like Nix overlays:
pkgs.callPackages ./deps.nix {
overrides = (
final: prev: {
some_mix_dep = prev.some_mix_dep.override {
mixEnv = "dev";
};
}
);
}
Example with all options
This command creates derivations for everything in :prod
, and only ex_doc
and credo
in :dev
. It will include :path
dependencies (this option is
useful for repos with multiple Mix projects). It outputs the Nix expression
to nix/deps.nix
.
mix deps.nix --include-paths --env prod --env dev=ex_doc,credo --output nix/deps.nix
Git dependencies
deps_nix
supports git dependencies.
For open-source GitHub dependencies, pkgs.fetchFromGitHub
is used. Hashes
are prefetched using Mint and hashed using nix hash path
.
builtins.fetchGit
is used for non-GitHub projects, which doesn't require
any prefetching and relies on the git SHA as a unique identifier. However, it
suffers from several disadvantages.