EasyRice
Project type: Open source
Dotfile setups always end the same way: a folder of scripts, a half-broken stow invocation, and no idea what's actually symlinked. EasyRice replaces that with one Go binary, a TOML manifest, and a JSON state file — so installs, profile switches, and uninstalls are reproducible across Linux, macOS, and Windows.
The Challenge
GNU stow doesn't understand profiles. Install scripts drift across machines over time. Nobody tracks which symlinks they created, so uninstalls leave debris scattered across the filesystem. And Windows users are left out entirely — most dotfile tools treat cross-platform support as an afterthought.
Our Approach
- Single Go binary — one download, no runtime dependencies, ships for Linux, macOS, and Windows on amd64 and arm64
- rice.toml declares packages, dependencies, profiles, and per-target symlink paths — the only source of truth for the entire setup
- Profile resolution combines hostname matching with explicit --profile overrides and fallback chains
- JSON state file records every symlink the tool created, so uninstalls are exact and never touch files the user placed themselves
- Cross-platform symlink layer abstracts POSIX symlinks vs Windows junctions and symlinks behind a single interface
- rice doctor walks the state and reports broken links, drift, and orphaned targets
What It Achieved
- One manifest replaces an entire folder of bash install scripts
- Profile switches — work, home, server — are a single flag
- Uninstalls always leave the system exactly as it was before the install
- Windows users get first-class support, not an afterthought
Tech Stack
GoTOMLJSONCobra CLICross-platform symlinksSHA-256Shell installerPowerShell installer
Have a cross-platform CLI you need built?
We build small, portable command-line tools that just work — Linux, macOS, and Windows from day one.
Book a discovery call