You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Consolidate the justfile recipes into mise tasks so there's a single tool for tool/version management and task running. just is currently a pure extra dependency; mise is already required. Decision: stay on stow for symlink management (see closed #3 / chezmoi #4) — this is only about the task runner.
Discoverability — confirmed it survives
The thing I care about (just --list with hints) is preserved:
mise tasks → name description listing (same shape as just --list)
mise stow runs a task (no run verb needed) → as light as just stow
file tasks can be #!/usr/bin/env fish scripts with #MISE description="…" — show up in the list and written in fish
one-time mise trust ~/.dotfiles/mise.toml per machine (a safety gate just doesn't have)
Feature mapping (just → mise)
just
mise task equivalent
just --list / just foo
mise tasks / mise foo ✅
[group("x")] visual groups
: namespace clustering (no header rows) — slight loss
recipe deps
depends = [...] ✅
[private]
hide = true ✅
params
usage spec (richer) ✅
set shell
shebang per file-task ✅
{{ var }} / base_packages :=
[vars] / [env] ✅
[confirm]
none built-in → script a read prompt ⚠️
style() colored echo
ANSI in the script ✅
Only genuine gaps: [confirm] and the pretty group headers.
Transition approaches (thin layer, incremental)
A — just shims, logic in mise. justfile recipes become @mise run <x>; real logic moves into mise tasks. Keeps just <x> muscle memory. Cost: must port a recipe's logic to mise before its shim is meaningful; duplicates --list descriptions.
B — mise tasks wrap just (recommended).[tasks.stow] run = "just stow" — zero rewrite, mise stow / mise tasks work immediately. Then move each recipe's body from the justfile into its mise task at leisure; delete the justfile recipe once ported. Shifts the entry point to mise on day one, which fits "consolidate onto mise."
→ Lean B: gentler, never-blocking, no duplicated description bookkeeping.
Plan (B, incremental)
Add project-scoped ~/.dotfiles/mise.toml (separate from the stowed global ~/.config/mise/config.toml).
Wrap day-2 recipes as run = "just …" tasks first: stow, stow-check, unstow, services-enable, update, doctor, wpaper-reload/mako-reload/waybar-reload/swayidle-reload.
Start using mise <task> / mise tasks; mise trust on both machines.
Port recipe bodies into mise tasks incrementally (replace run = "just x" with the real script — fish file-tasks under mise-tasks/ for the multi-step ones: packages, dev-setup, fish-shell, cli-tools, helix-editor, kitty-terminal, niri-window-manager, yazi-file-manager, fastfetch).
Re-implement [confirm] on destructive tasks as a scripted prompt.
Once everything is ported + tested on daisy and xps: drop just from cli-tools, delete the justfile, update README.
Open questions
Keep tasks as [tasks] in mise.toml vs file-tasks in mise-tasks/? (Lean: one-liners in TOML, multi-step/interactive ones as fish file-tasks.)
Goal
Consolidate the
justfilerecipes into mise tasks so there's a single tool for tool/version management and task running.justis currently a pure extra dependency;miseis already required. Decision: stay on stow for symlink management (see closed #3 / chezmoi #4) — this is only about the task runner.Discoverability — confirmed it survives
The thing I care about (
just --listwith hints) is preserved:mise tasks→name descriptionlisting (same shape asjust --list)mise stowruns a task (norunverb needed) → as light asjust stow#!/usr/bin/env fishscripts with#MISE description="…"— show up in the list and written in fish:namespacing (services:enable) gives pseudo-groupingmise trust ~/.dotfiles/mise.tomlper machine (a safety gatejustdoesn't have)Feature mapping (just → mise)
justjust --list/just foomise tasks/mise foo✅[group("x")]visual groups:namespace clustering (no header rows) — slight lossdepends = [...]✅[private]hide = true✅usagespec (richer) ✅set shell{{ var }}/base_packages :=[vars]/[env]✅[confirm]readpromptstyle()colored echoOnly genuine gaps:
[confirm]and the pretty group headers.Transition approaches (thin layer, incremental)
A —
justshims, logic in mise. justfile recipes become@mise run <x>; real logic moves into mise tasks. Keepsjust <x>muscle memory. Cost: must port a recipe's logic to mise before its shim is meaningful; duplicates--listdescriptions.B — mise tasks wrap
just(recommended).[tasks.stow] run = "just stow"— zero rewrite,mise stow/mise taskswork immediately. Then move each recipe's body from the justfile into its mise task at leisure; delete the justfile recipe once ported. Shifts the entry point to mise on day one, which fits "consolidate onto mise."→ Lean B: gentler, never-blocking, no duplicated description bookkeeping.
Plan (B, incremental)
~/.dotfiles/mise.toml(separate from the stowed global~/.config/mise/config.toml).run = "just …"tasks first:stow,stow-check,unstow,services-enable,update,doctor,wpaper-reload/mako-reload/waybar-reload/swayidle-reload.mise <task>/mise tasks;mise truston both machines.run = "just x"with the real script — fish file-tasks undermise-tasks/for the multi-step ones:packages,dev-setup,fish-shell,cli-tools,helix-editor,kitty-terminal,niri-window-manager,yazi-file-manager,fastfetch).[confirm]on destructive tasks as a scripted prompt.justfromcli-tools, delete thejustfile, update README.Open questions
[tasks]inmise.tomlvs file-tasks inmise-tasks/? (Lean: one-liners in TOML, multi-step/interactive ones as fish file-tasks.)malias formiseto matchjust's brevity?