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)
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?
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.
I think for development purposes it's a smart idea to use the language specific conventions/ecosystem.
For example, Julia has an unusual package management system and lots of packages still fail under flakes.
Do you mean cargo?
- https://github.com/shyiko/jabba
- https://www.man7.org/linux/man-pages/man1/update-alternative...
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.
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.
It works really well.
If you’re into these environment / tool managers I highly recommend giving nix a solid try for 4-6 months.
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
I don't use the advanced task / env stuff, mostly just the tool management. Its been stable, fast, and gets out of the way.