Hacker News new | ask | show | jobs
by bargainbin 74 days ago
If you haven’t tried it, I highly recommend Mise. It manages everything at the user level so it’s not as “all encompassing” as Nix and is readily compatible with immutable distros.

https://mise.jdx.dev/

Your solution is akin to putting your dotfiles in the code repo, which is going to cause issues with languages with poor version compatibility (such as node and python) when switching between old projects.

Also, bold of you to assume developers know make and bash just because they’re using Linux!

4 comments

These days, all dev tooling of my projects lives behind mise tasks, and the runtime for my projects is Docker.

This means that getting a project in shape for development on a new system looks like this:

- clone project

- `mise run setup`

I have zero dev tools on my host, projects are 100% self-contained.

Pure bliss.

See https://github.com/dx-tooling/sitebuilder-webapp for an example.

I cannot endorse mise more highly. I commit it to my repos to make sure every engineer has the same environment. I use it in CI for consistency there as well. I keep all commands that would normally be documented in a readme as mise tasks. I use mise to load the environment, independent of language specific tools like dotenv. I use a gitignored mise.local to put real creds into the environment for testing.
Question about Mise: Does it manage checksums or a lock file per environment somewhere? I scrolled through the getting started page and didn't see anything at first glance.
Releases are signed, but lockfiles are not commonly used for this purpose. For your home env you'll usually want the latest version of every tool.

When installing tools, or via mise.toml, you can define version ranges with the precision you'd like - "3" / "3.1" / "3.1.2".

Mise supports lock files but also validates checksums when possible.
I use mise, but its conclusion that everybody needs to write an aqua plugin now is annoying. They need to make plugin-making a lot easier.
What conclusion do you mean? Aqua is just one of the many backends it supports.

For example there's also the GitHub backend which lets you install binaries from releases, no plugin needed at all.

https://github.com/mise-plugins <-- First they say "Try to get your tool into aqua or see if it can be installed with the github backend, then it may be added to the mise registry", and then later they say "The rest of this doc is outdated and does not reflect the current state of preferring aqua/ubi.".

Overall there's too many ways to install things and it's not easy to add any of them. Asdf plugins were easy, but insecure (which could be fixed, but whatever). Everything else requires more research because it's more technical.

> it's not easy to add any of them

For most of them there's nothing to add though, you simply publish tools on GitHub/Cargo/etc. and mise will know how to install them.

https://mise.jdx.dev/registry.html#backends has a bit more current info.

Only if they have a plugin that describes how to install them. Many popular tools are much more complex to install and set up than just downloading a binary and making it executable. For those you need to create a plugin for mise to be able to install them. Luckily, very often some other generous person has gone through all the trouble of learning how to make the plugin, going to the official repos, making a PR, and finally getting it merged. But if somebody hasn't done that already, it's painful (more painful than, say, an asdf plugin). It depends on the language, on the tool and system requirements, etc. Overall it's kind of a mess. Mise leaves you with the trouble of figuring all that out, rather than making some kind of convenience function to get the process started easily.
> Many popular tools are much more complex to install

I'm curious which dev tools you're using aren't installable with standard mise backends. 99% of dev tools I use don't require a plugin.

> (more painful than, say, an asdf plugin)

You can still use asdf plugins, I could use mise to install an asdf plugin right now with one line `mise use asdf:raimon49/asdf-hurl`. The mise registry is just a convenient list of aliases, even if it doesn't accept new asdf plugins, you don't need it to.

As Larry Wall said "make easy things easy and hard things possible"