Mise: dev tools, env vars, task runner

Omarchy uses Mise for managing some packages.

Omarchy 4.0 (“Quattro”) uses mise primarily as its developer-runtime manager and as the Node runtime provider for its lazy-installed coding-agent CLIs. It is not a replacement for Arch’s system package manager; Omarchy still updates system packages through its own Arch mirror/repos and AUR flow.learn.omacom

What Omarchy manages with mise

  • Language/runtime versions: mise is installed and activated so development environments can select project-specific versions of tools such as Node, Ruby, Bun, Deno, etc. In practice, a project-level mise config/tool-versions file can cause the correct runtime to be placed on PATH when you cd into that project.akitaonrails
  • Agent CLI bootstrapping: Omarchy provides small launchers in ~/.local/bin/ for coding-agent CLIs. On first invocation, those launchers use npx with a mise-managed node@latest; this avoids pre-downloading every agent CLI during installation.learn.omacom
  • Global/default tool setup: Omarchy’s integration invokes commands like mise use -g, which manages global tool declarations in ~/.config/mise/config.toml. There was a reported concurrency issue in 4.0 where simultaneous runs could rewrite that file without locking, so avoid kicking off multiple mise-changing Omarchy installers at once.

How does mise compare to Nix?

mise and Nix overlap at “make development environments repeatable,” but they operate at very different depths. mise is a pragmatic per-project tool/runtime manager with tasks and environment variables; Nix is a functional package manager and build system that can also define dev shells—and, with NixOS/nix-darwin, whole machines.

At a glance

Dimension mise Nix
Primary goal Manage language/tool versions, env vars, and tasks conveniently Reproducible packages, builds, development environments, and optionally systems
Configuration Familiar TOML (mise.toml) Nix language, often with flake.nix
Typical command mise install, mise exec, mise run nix develop, nix build, nix run
Installation model Uses language-native installers, plugins/backends, downloads, and existing package managers Builds or fetches immutable dependency closures into /nix/store
Reproducibility Strong for pinned tool versions; varies by backend and installer Much stronger: package inputs and dependencies are explicitly captured and isolated
System libraries Not its core strength A core strength; can provide compilers, headers, libraries, cross-toolchains, etc.
Learning curve Low Moderate to steep
Best fit Application repos, polyglot tools, simple onboarding Native builds, CI, hermetic environments, cross compilation, long-lived infrastructure

Sources describe mise as a unified tool-version/environment/task workflow, while Nix environments are functional derivations with explicitly isolated dependencies.

Mise vs Docker

They solve different problems, so it’s usually mise + Docker, not mise versus Docker.

  • mise manages developer tools, versions, environment variables, and repeatable project tasks on your host.
  • Docker packages and isolates processes into container images—ideal for services, deployment parity, and avoiding host-level dependency conflicts.

What each owns

Concern mise Docker

Concern mise Docker
Pin Node, Ruby, Go, Python, Terraform, etc. Excellent Possible, but heavier
Per-project CLI/tool versions Excellent Possible through image builds
Shell environment and .env-style config Good Good inside container
build, test, lint, flash, deploy task shortcuts Excellent Usually delegated to Make/Compose/scripts
PostgreSQL, Redis, MQTT, NATS services Can launch commands, but not its core job Excellent
Production packaging/deployment Not the goal Excellent
OS-level isolation / reproducibility Limited—uses host kernel/libs Stronger
Fast local edit–run iteration Native-speed Can add bind-mount/build overhead

Mise uses a checked-in mise.toml to define tool versions and tasks; its official Docker guidance explicitly treats Docker as something mise can install, invoke, and operate alongside rather than replace.