This guide walks you through cloning the IX repository, building your first package, installing it into a personal realm, and putting that realm on yourDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/pg83/ix/llms.txt
Use this file to discover all available pages before exploring further.
PATH. By the end you will have a working IX setup and a feel for the core workflow: build → mutate realm → use. No binary installer is involved — IX bootstraps itself from source.
Clone the IX repository
IX is distributed as a source repository. Clone it directly from GitHub:The repository contains the IX entrypoint (
ix), supporting tools, and the full package set under pkgs/. You will run all IX commands from this directory using the ./ix wrapper.Build a package
Build IX resolves the package’s dependencies, builds them in a hermetic environment, and places the output in the content-addressed store at
bin/b64 (a base64 utility) to verify that your environment is functional:/ix/store/<hash>-bin-b64/. The build subcommand uses an ephemeral realm and does not modify any persistent realm anchor.Install a package into your user realm
The This builds
mut subcommand modifies a realm. If no realm name is given, IX defaults to the realm named after your current username:bin/zstd (if not already in the store), assembles a new realm that includes it, and updates the anchor link at /ix/realm/$(whoami) to point to that new realm entry. Your previous realm entry remains in the store until garbage collected.Common First Tasks
The examples below are taken directly from the IX man page and README. Install a Wayland compositor in a named realm:--mesa_driver=radv can be applied to an entire realm (affecting all packages in it) or to a single package. To set a flag realm-wide:
run subcommand builds an ephemeral realm and executes a command inside it. Use -- to separate the package list from the command to run:
Cross-Target Build
IX has first-class (work-in-progress) support for building packages targeting a different OS or ABI than the host. Pass--target=<os>-<arch> to any build or mutation command:
bld/ namespace are always built for the host and are excluded from cross-target builds automatically.
Debugging Builds
If a build fails, re-run with--setx --verbose to get a detailed shell trace and dependency log:
What’s Next
Core Concepts
Understand the content-addressed store, realm anchors, and how IX identifies packages by build-input hash.
Managing Realms
Learn how to create named realms, apply realm-wide flags, list installed packages, and run garbage collection.
CLI Reference
Full reference for every IX subcommand:
mut, build, let, run, gc, list, purge, dep, and tool.Package Development
Anatomy of an
ix.sh recipe, the Jinja2 block system, template inheritance, fetch hashes, and the pkgs/die/ build framework.