phf

phf

Hi!

The objective is to prevent Mix from fetching dependencies and to rely solely on ERL_LIBS. The idea is that all dependencies are already available through ERL_LIBS, which have been added by Guix.

However, the issue arises when using mix compile. It attempts to fetch dependencies regardless of existing settings. Currently, no option prevents this behavior; it always tries and subsequently fails. A potential workaround is to patch mix.exs so that the project() function returns a key/value list with the deps key set to [].

For instance, in the Mix project named makeup, there isn’t a straightforward method to instruct mix to avoid fetching nimble_parsec, even when it’s already available in ERL_LIBS:

┌────
│ $ mix compile --no-deps-check
│ Could not find Hex, which is needed to build dependency :nimble_parsec
│ Shall I install Hex? (if running non-interactively, use "mix local.hex --force") [Yn] n
│ ** (Mix) Could not find an SCM for dependency :nimble_parsec from Makeup.Mixfile
└────

It’s evident from the IEx session below that nimble_parsec is
available:

┌────
│ $ iex 
│ Interactive Elixir (1.14.0) - press Ctrl+C to exit (type h() ENTER for help)
│ iex(1)> :code.which(NimbleParsec)
│ '/gnu/store/261qi8bmagns11d3ssiypbqj82i9k16g-profile/lib/elixir/1.14/nimble_parsec/ebin/Elixir.NimbleParsec.beam'
└────

So, the pressing question is: how can we configure mix to prioritize ERL_LIBS over fetching new dependencies?

Showing Posts 1 to 2

phf

phf OP

This might help: mix-bootstrap.escript.

phf

phf OP

If nimble_parsec package is built locally:

/tmp/guix-build-elixir-nimble-parsec-1.3.1.drv-4$ tree -L 5
.
├── _build
│   └── prod
│       └── lib
│           └── nimble_parsec
│               ├── consolidated
│               └── ebin
├── CHANGELOG.md
├── CHECKSUM
├── environment-variables
├── lib
│   ├── mix
│   │   └── tasks
│   │       └── nimble_parsec.compile.ex
│   ├── nimble_parsec
│   │   ├── compiler.ex
│   │   └── recorder.ex
│   └── nimble_parsec.ex
├── metadata.config
├── mix.exs
├── README.md
└── VERSION

and a symlink has been built in the source of the package makeup that depends on nimble_parsec like so:

/tmp/guix-build-elixir-makeup-1.1.0.drv-6$ tree _build/
_build/
└── prod
    └── lib
        └── nimble_parsec -> /tmp/guix-build-elixir-nimble-parsec-1.3.1.drv-4/_build/prod/lib/nimble_parsec

then mix does not fetch dependencies:

/tmp/guix-build-elixir-makeup-1.1.0.drv-6$ guix shell elixir -- bash -c 'MIX_ENV=prod mix compile --no-deps-check'
Compiling 44 files (.ex)
Generated makeup app

It suffices to generalize that idea for all dependencies of a given package.

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
Cxx-mlr
I’m working on a small exercise involving update_in/3, and I came up with this solution: data = %{ name: "Periodic Table", category:...
New
ChrisAmelia
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication): toke...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews