If you’re into these environment / tool managers I highly recommend giving nix a solid try for 4-6 months.
If you try to stick to the classic POSIX tools since they're installed everywhere, I urge you to give mise a try anyway. It and fzf are the only programs I've found that are truly worth the extra effort it takes to install them, even if it is just grabbing a binary.
Or is it better than Make at actually making things, tracking file and recipe dependencies, detecting what needs to be rebuilt etc?
Here's the solution I use; perhaps someone here has a better idea?
brew install gcc readline zlib curl openssl@1.1 ossp-uuid icu4c pkg-config
PKG_CONFIG_PATH="$(brew --prefix)/lib/pkgconfig:$(brew --prefix icu4c)/lib/pkgconfig" \
LDFLAGS="-L$(brew --prefix)/lib" \
CPPFLAGS="-I$(brew --prefix)/include" \
mise use postgres --verbose
Workflows now revolve around nix.
Setup a shell.nix that defines development environment (whether it’s specific version of rust or python).
Then `nix develop` will setup an isolated environment. Do some work on project. Then exit shell.
No need to pollute machines environment with 100 versions of python/pip/uv.
Add in `direnv` and it will automatically activate the nix shell upon `cd`. Plays well with gui editors too, assuming direnv plugin/tooling available.
It works really well.
With asdf we ran into many troubles with broken dependencies due to wrongly installed system (brew), etc. I fear with miso we could end up in the same place.
As a sidenote, I am starting to use Taskfile to manage build scripts and such. Then I can easily reuse the scripts when I change the environment (i.e. use vendor containers in CI instead of devbox).
I am trying to avoid mixing both concepts for better flexibility and less migration overhead.
I'll try out Mise for Elixir, Erlang and NodeJS to see if it works like you describe.
I used asdf for many years but this really annoyed me, too (along with a few other things). So I recently made the switch to mise and haven't looked back.
Now, for language development environment, I won't use Nix and just prefer to whatever that language popular choice. For instance, in Python I use uv. For Node I use npm (or yarn or bun or whatever in fashion now), Java has mice, Rust has rustup.
It is not a one-size-fit-all solution but I am not sure if we can ever achieve that.
Do you mean cargo?
- https://github.com/shyiko/jabba
- https://www.man7.org/linux/man-pages/man1/update-alternative...
For example, Julia has an unusual package management system and lots of packages still fail under flakes.
At first I offered mise as the recommended tool, and after a while I declared it's the only supported way to build the project and boom! All support requests that used to end with "oooh my XYZ's version was not matching the project's requirement" are gone now.
I like asdf but it has quirks. Mise has been a better companion for me past few years.
I also hear people say "but my node/ruby/elixir/java/foo version manager will break. My team uses that tool in our other projects, etc, etc" then I only have to show them what an amazing drop-in replacement mise is and nothing breaks; there's no going back for them.
I just hope muse stays mise, and doesn't become just[1] (whom I also install via mise)
I don't use the advanced task / env stuff, mostly just the tool management. Its been stable, fast, and gets out of the way.
I see this "one tool to rule them all" and instantly my senses go off that this is too good to be true to work in all the long-tail scenarios.
There always seems to be some strange edge-cases with tools of this nature.
hacb•4h ago
micvbang•4h ago
pixelmonkey•4h ago
https://mise.jdx.dev/dev-tools/comparison-to-asdf.html
figmert•4h ago
It can also manage tools from various backends, e.g. go, aqua, cargo, npm, ubi and others
vsviridov•4h ago
kstrauser•3h ago
I feel like I’m missing something important here, as lots of people seem to adore mise, and I like it just fine for the limited use I put it to, but I haven’t had that aha moment yet that makes it indispensable for me.
maleldil•50m ago
sureglymop•38m ago
Maybe ripgrep is a bad example but imagine needing different versions of some dev tooling that can be installed with cargo install in different projects.
Edit: thought you were asking about the npm and cargo backends specifically.
linhns•4h ago
foldr•4h ago
nchmy•3h ago