Unpin your tools from your OS
Every catalog program ships as one executable — no third-party .dll / .dylib / .so alongside. A few (like vim) also ship a small read-only data archive — no code outside the binary.
One Nix flake produces a Linux musl-static, a macOS native, and a Windows build of the same program. Same source, three artifacts.
Rebuild any catalog binary byte-identical with nix build github:unpins/<pkg>. The flake is public — verify what you run.
The unpin command picks the right asset for your OS, verifies the SHA256, and drops it in PATH. Catalog or any GitHub release.
Install standard programs like htop:
unpin install htop
htop # Ready to run!Or install specific programs directly from their GitHub repositories, such as jgm/pandoc:
unpin install jgm/pandoc
pandoc --versionJust need something once? Use run to fetch and execute it without installing into PATH:
unpin run treecurl -fsSLo unpin "https://unpins.org/unpin-$(uname -m)-linux"
chmod +x unpin
./unpin install
unpin install moves the binary into ~/.local/bin and offers to add it to your PATH. Open a new shell afterwards.
curl -fsSLo unpin "https://unpins.org/unpin-$(uname -m)-darwin"
chmod +x unpin
./unpin install
unpin install moves the binary into ~/.local/bin and offers to add it to your PATH. Open a new shell afterwards.
curl.exe -fsSLo unpin.exe https://unpins.org/unpin-x86_64-windows.exe
.\unpin.exe install
unpin install moves it into %LOCALAPPDATA%\unpin and offers to add it to your PATH. Open a new terminal afterwards.
Single-binary builds of common programs for Linux, macOS, and (where viable) Windows.
Each program in the catalog lives in its own public repo at github.com/unpins, with a Nix flake that defines the build. CI builds it on three OSes, enforces the single-binary policy, and publishes the artifacts to that repo's GitHub release page. The unpin CLI is a thin installer on top of that.
For the longer story — what's actually different from Homebrew, Scoop, or your system package manager, how to verify a build yourself, and what we deliberately don't do — see Why unpins?