Skip to content

feat: introduce mitamae for cross-platform package installation#4

Open
davidstosik wants to merge 1 commit intov5-reduxfrom
v5-redux-mitamae
Open

feat: introduce mitamae for cross-platform package installation#4
davidstosik wants to merge 1 commit intov5-reduxfrom
v5-redux-mitamae

Conversation

@davidstosik
Copy link
Copy Markdown
Owner

Why mitamae?

These dotfiles need to work on both macOS (laptops) and Linux (homelab VMs). A Brewfile would only cover macOS — not an option.

After evaluating chezmoi, yadm, and others, mitamae is the right fit:

  • Single static binary — mruby compiled in, no Ruby/RubyGems dependency
  • Chef-like DSL — familiar package, execute, git, template resources
  • Auto-detects package manager — Homebrew on macOS, apt on Debian/Ubuntu
  • One recipe, all platforms — macOS laptops, Linux servers, any new machine
  • Zero framework overhead — download binary, run recipe, done

What this adds

mitamae/
├── bootstrap.sh    # Downloads mitamae binary + runs the recipe
├── recipe.rb       # Package installation recipe
└── .gitignore      # Ignores downloaded binary

bootstrap.sh

Downloads the correct mitamae binary for the current OS/arch and runs the recipe. One command to install all packages:

./mitamae/bootstrap.sh

recipe.rb

Installs: neovim, gh, tmux, ripgrep, fzf, mise, and Ghostty (macOS only).

All packages use not_if "which <tool>" guards — idempotent and safe to re-run.

Separation of concerns

Concern Tool Command
Package installation mitamae ./mitamae/bootstrap.sh
Dotfile symlinking install.sh ./install.sh

This keeps package management cleanly separated from dotfile linking (PR #2).

mitamae is a single static binary (mruby compiled in) that provides a
Chef-like DSL for package management. Its `package` resource auto-detects
the system package manager (Homebrew on macOS, apt on Linux), so one
recipe works everywhere.

bootstrap.sh downloads the right mitamae binary for the current platform
(macOS/Linux, x86_64/aarch64) and runs the recipe.

Packages installed: neovim, gh, tmux, ripgrep, fzf, mise.
Ghostty (brew cask) is macOS-only.

mitamae handles package installation; install.sh stays for symlinking.
Clean separation of concerns.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant