Skip to content

Install Node lazily and leave the user's mise config alone - #15876

Merged
ryanrhughes merged 3 commits into
quattrofrom
lazy-node
Oct 20, 2026
Merged

ryanrhughes merged 3 commits into
quattrofrom
lazy-node

Conversation

@ryanrhughes

@ryanrhughes ryanrhughes commented Oct 18, 2026 •

Copy link
Copy Markdown
Collaborator

Node joins Omarchy's lazy mise defaults: /etc/mise/conf.d/omarchy-tools.toml declares it like gh or uv, and setup no longer installs it. The first node, npm or npx call installs it, as does the first npm: tool (cf, kimi) or Mason package that needs it. Node became a default in 3.1 so LazyVim's tree-sitter could run tree-sitter generate, but nvim-treesitter main generates from grammar.json with TREE_SITTER_JS_RUNTIME=native, so no parser LazyVim installs needs Node anymore.

Setup also stops writing ~/.config/mise/config.toml, so a fresh install has none. upgrade.auto_prune = false moves into the package-owned /etc/mise/conf.d/omarchy.toml, which stays loaded after Remove Preinstalls. omarchy install dev-env node (and Laravel) runs mise install node while Omarchy declares Node, because mise use -g on a declared tool copies its options, lazy = true included, into the user's config.

  • Existing installs: two migrations drop what setup wrote, node = "latest" and auto_prune = false. A pinned Node or a different auto_prune value is the user's and stays, Node stays installed for the declaration to reuse, and a user who removed the preinstalls keeps their Node entry. A config symlinked into dotfiles is edited in place. mise leaves an empty [settings.upgrade] table behind.
  • Factory reset no longer copies the Node tarball into the restored system. Older factory snapshots carry their own copy, and their setup falls back to the network without failing when it is missing.
  • Offline first use of Node now needs the network; mise fails at once with a clear error.

The ISO still bundles the tarball, now unused. omacom/omarchy-iso#290 removes it, and has to wait until this is in every channel the ISO builds from: today's setup fails an install whose ISO has no tarball.

Tests, on a fresh install from a local ISO in a VM:

Check Result
After install No ~/.config/mise; Node not installed; node/npm/npx shims present; upgrade.auto_prune reads false from /etc
Shell prompt, omarchy-update-mise Install nothing
LazyVim first launch 23 parsers in about 3 s, plus latex, which needs tree-sitter generate; Node untouched, :checkhealth clean
.json with the lang.json extra, :MasonInstall prettier Node installs itself; jsonls attaches and reports diagnostics
First cf / kimi About 4 s each, Node included
An old config through omarchy-migrate Node resolves from /etc, auto_prune stays false, other entries kept
Acceptance suite Same as quattro: 218 ok, the 4 known failures

Deferred provisioning and a factory reset through its first boot, both from an ISO without the tarball, finish setup with no warnings. The new shell tests (mise-node-migration, mise-auto-prune-migration, mise-node-dev-env) run real mise. ./test/cli passes; failures elsewhere in ./test/shell are the same on quattro without this change.

@greptile-apps

greptile-apps Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] This PR appears safe to merge.

Summary

Node becomes a lazy mise default instead of being installed during setup.

  • Node installs only when a command or tool needs it.
  • Omarchy keeps upgrade pruning settings out of the user's config.

The previous config-directory finding is fixed. No new actionable issues were found.

Reviews (2) · Last reviewed commit: "Find the user's mise config where mise k..." · Reviewed by Greptile

Comment thread migrations/1792343225.sh Outdated
@omarchybot omarchybot added the enhancement New feature or request label Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants