Skip to content
Sebastien Day
Go back

Mise

I mentioned swapping nvm for mise when I moved over to Arch last summer. Nine months in and it’s become one of my favourite tools.

Mise is one tool that replaces nvm, pyenv, rbenv, asdf, direnv and a small pile of install scripts. It handles Node, Python, Ruby, Bun, Go, Rust, the Shopify CLI, etc for me.

Install

On Arch it’s in the repos:

sudo pacman -S mise

Then activated in my bash config:

if command -v mise &> /dev/null; then
  eval "$(mise activate bash)"
fi

It hooks into the prompt and swaps the right versions in when I cd into a project.

Global config

My global setup lives in ~/.config/mise/config.toml:

[tools]
python = "latest"
node = "22"
"npm:@shopify/cli" = "latest"

Three things I use everywhere - Python, Node LTS and the Shopify CLI. The npm: prefix is cool - mise will install a global npm package and pin it, so I can upgrade the Shopify CLI just like any other tool with mise up.

Per-project

Every project gets a .mise.toml at the root.

# shopify-import
[tools]
ruby = "3.3"

Running mise ls on my machine right now:

Tool              Version  Source                      Requested
bun               1.3.12
node              22.22.2  ~/.config/mise/config.toml  latest
npm:@shopify/cli  3.93.2   ~/.config/mise/config.toml  latest
npm:wrangler      4.84.1   ~/.config/mise/config.toml  latest
python            3.10.19
python            3.13.7   ~/.config/mise/config.toml  latest
ruby              3.3.10   ~/.config/mise/config.toml  latest

Why I like it

Replaces nvm and does other languages as well

I’m still using nvm on my olders debian servers for now, mostly because they’re set up and I haven’t wanted to touch them. But next time I rebuild a server it’ll be mise there too.



Previous Post
Software
Next Post
Artimis II