IX package dependencies are declared as whitespace-separated lists in Jinja2 blocks. The build infrastructure converts them to JSON arrays automatically and wires upDocumentation 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.
CPPFLAGS, LDFLAGS, and PATH — you never need to hardcode library paths or binary locations. Each block has a specific role: some affect only the current package’s build, others propagate to downstream consumers.
Dependency Blocks Overview
| Block | Role |
|---|---|
bld_libs | Static libraries linked into the artifact (target architecture) |
bld_tool | Executables on PATH during the build (host architecture) |
std_env | Full override of the standard toolchain environment — rarely used |
lib_deps | Libraries exported to packages that depend on this one |
run_deps | Runtime packages (binaries, data) needed when this package runs |
run_data | Runtime data packages (aux/) |
bld_data | Build-time data packages (aux/, cargo index, go module cache) |
host_libs | Libraries for the host machine (cross-compilation only) |
ind_deps | Induced / implicit dependencies |
bld_libs — Linking Libraries
bld_libs lists every static library the package links against. Each library in this block has its headers and .a files exposed via CPPFLAGS/LDFLAGS automatically through the env_auto.sh mechanism — no manual flag construction needed.
lib/c is required for virtually every C package. lib/c++ is required for C++ packages. Omitting them produces undefined reference errors at link time.
Shim packages (lib/shim/*) also go in bld_libs. See Shims for details.
bld_tool — Host Executables
bld_tool lists executables that must be on PATH during the build. These are host-architecture packages from the bld/ tree.
| Package | Provides |
|---|---|
bld/cmake | cmake |
bld/ninja | ninja |
bld/pkg/config | pkg-config |
bld/make | make (usually pulled in automatically by make.sh) |
bld/perl | perl |
bld/python | python3 |
bld/bison | bison + flex |
bld/m4 | m4 |
bld/gettext | msgfmt, xgettext |
bld/wayland | wayland-scanner |
bld/glib | glib-compile-schemas, gdbus-codegen, glib-mkenums |
bld/ packages for build-time tools, not bin/ packages. bin/ packages are target binaries and may trigger a full source build for the wrong architecture.
lib_deps vs bld_libs
These two blocks solve different problems:
bld_libs— libraries needed to build this package. Headers and.afiles are available during this package’s build only.lib_deps— libraries that this package re-exports to its consumers. When a downstream package addslib/mypkgto itsbld_libs, it automatically also gets everything inlib/mypkg’slib_deps.
lib_deps only when downstream consumers genuinely need the same library — typically when this package’s public headers include headers from the dependency, or when its .pc file lists the dependency in Requires.
run_deps — Runtime Packages
run_deps lists packages that must be present when this package executes. They are composed into the system realm when this package is installed.
run_data — Runtime Data
run_data lists data-only packages from aux/ that must be present at runtime. These are non-binary resources such as fonts, terminfo databases, or CA bundles.
bld_data — Build-time Data
bld_data lists data packages from aux/ that are needed only during the build — for example, the Cargo crate index or a Go module cache used for offline vendored builds.
bld_data manually.
host_libs — Host-Architecture Libraries
host_libs lists libraries that must be compiled for the host machine (the machine running the build) rather than the target. Use this when a package needs to build host-arch tools (code generators, protobuf compilers, etc.) as part of its own build.
native.ini cross-file when host_libs is non-empty. This keeps host and target compilers fully separated.
ind_deps — Induced Dependencies
ind_deps injects implicit dependencies that the build graph would otherwise not detect. Use it for dependencies that are referenced at runtime or load time but are not expressed through lib_deps or run_deps — for example, a plugin loaded via dlopen.
run_deps for normal runtime packages.
Parameterized Dependencies
Any dependency can be parametrized with flags in parentheses. This selects a specific variant or version of a package:/unwrap pattern rather than hardcoding a specific version path:
Shims (
lib/shim/*) should go in bld_libs, not lib_deps, so they don’t propagate to downstream packages. Only put shims in lib_deps when downstream consumers genuinely need the same workaround. See the Shims page for details.