Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This looks really cool! Can you explain the differences between `asdf` and the .tool-versions file?

I can currently add a .tool-versions file in my project folder and run `asdf install` to get everything on the same versions for all our devs.

    elixir 1.13.4
    erlang 24.3.4
    nodejs 16.4.2


nix is in some ways a much more refined version of asdf. asdf is basically a wrapper around curling install scripts to bash. It can do anything--it might download a precompiled version of a tool, or it might build the tool entirely from scratch on your machine. It's up to whoever wrote the asdf package, and the quality of the packages there varies _a lot_.

nix goes the next step and has packages defined as an install script plus all their dependencies (all the way down to the basic C library, compilers, etc.). It caches everything based on a hash and provides a public repository where it will just download prebuilt versions of things instead of compiling them from scratch every time. It can do this because it has extremely strict hermeticity and reproducibility guarantees for all of its packages--asdf has none of this and you'll almost certainly just be compiling tools over and over or pulling down pre-built versions that will probably work (as long as you carefully read the package readme and installed all its dependencies).

Don't get me wrong, asdf is nice and great for simple things. If it works for you keep using it. If you start to run into trouble with the quality of its packages or you start writing your own packages, you might want to look at a more comprehensive system like nix.


`asdf` shells out to a bunch of different language-specific package managers. `devbox` only shells out to Nix, which manages system dependencies (including native libraries) and language ecosystem dependencies in a uniform way. `asdf` doesn't manage deps like the libraries your nodejs packages that use C bindings for number crunching, or CLI utilities that aren't part of your languages' library ecosystems.

Also devbox can dump Docker containers for you




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: