←back to thread

333 points steveklabnik | 1 comments | | HN request time: 0.218s | source
Show context
jemmyw ◴[] No.45032462[source]
It looks cool but I feel this kind of tool is only useful if Ruby is the only language you use. I have to manage several runtimes for most projects. I've used asdf for years and recently switched to mise: these tools already download pre compiled binaries for Ruby, plus pretty much any other language runtime.

It's likely that you get better per language features for something specific to the language though. We end up in exactly the same kind of frustration, that for some random project you need this specific tool that does dependency management of the specific runtime. asdf and mise both respect a .tool-versions file, I'd rather see things go more in that direction with some kind of standard.

replies(4): >>45032520 #>>45032617 #>>45033002 #>>45033020 #
rictic ◴[] No.45032617[source]
A flake.nix file plus a direnv `.envrc` file with `use flake` has solved this for me.

When I cd into a project directory I get all of the tools that project needs, at the exact versions they were tested with. When I cd out of the directory, they go away. If the dependencies are well behaved (e.g. they don't do any self-modification, which is annoyingly common in the npm world) then it's often pretty easy to track all of your deps this way, imported from your npm package-lock.json or similar.

Ask your favorite LLM to write your flake.nix file for you, they're pretty good at it. I've been able to drop all of the bespoke language-specific tool versioning stuff `nvm`, `uv`, `rvm`, etc for all my personal projects, and it makes it easy to add deps from outside the language-specific package managers, like ffmpeg and lame.

replies(5): >>45032708 #>>45032837 #>>45033234 #>>45033990 #>>45035148 #
bryanlarsen ◴[] No.45032708[source]
Or you can use a nix wrapper like jetify's devbox.
replies(1): >>45033219 #
1. goosejuice ◴[] No.45033219[source]
devenv.sh