Lix¶
Overview¶
Lix is a community-maintained implementation of the Nix language and package manager. It forked from CppNix (last shared release: 2.18) and positions itself around correctness, usability, and deliberate stability—cleanup and maintenance over flashy divergence.
For many workflows it is a practical substitute for CppNix: the project states compatibility with existing Nix expressions and documents use as the Nix implementation under NixOS, Home Manager, and nix-darwin. That is not a claim of identical feature sets; Lix publishes explicit technical differences from CppNix and evolves on its own schedule.
Maturity (last checked 2026-07-31): production-oriented compatible fork of the C++ lineage—not the NixOS default, but positioned for day-to-day use with selective stability guarantees and community-owned infrastructure. Prefer first-party Lix docs over secondary narrative. Broader fork context: Forks and governance splits. Glossary: Lix.
Details¶
What it is. Lix implements the same core model as other Nix evaluators: pure package builds, the Nix store, channels/substituters, and the Nix expression language. The reference manual introduces Lix as an implementation of Nix with the usual store, GC, multi-user, and binary-cache story.
Relation to CppNix. Per About Lix, Lix is a fork of CppNix aimed at remaining compatible while allowing language and tooling evolution. Stated foci include code cleanup, better errors, meson-based builds, and planned gradual Rust use—not a greenfield rewrite. Documented divergences (subject to change; check upstream) include: no lazy trees as in upstream CppNix (a functionally equivalent replacement is planned); no usable content-addressed derivations while a rewrite is planned; no libgit2; deprecation of some legacy language footguns; REPL and performance work relative to 2.18. Do not assume every CppNix flag or experimental feature exists or behaves the same—verify in Lix docs for your version.
Relation to Tvix / Snix. About Lix contrasts Lix with Snix: Snix is a from-scratch Rust reimplementation aiming at modular second-generation components; Lix evolves the CppNix lineage toward a stable foundation without breaking clients along the way. Tvix is the TVL-side Rust effort in this wiki’s evaluator set—compare project goals there rather than treating any pair as drop-in equivalents.
Stability and community. Lix markets clear stability boundaries (what is frozen vs allowed to change), community-owned hosting (e.g. avoiding sole dependence on corporate forges), and volunteer governance with published conflict-of-interest posture. Flakes remain supported; the project says it will not remove Flake support, while aiming to make Flake-exclusive capabilities less special over time and to tighten some Flake behavior for dependability. None of that is a guarantee of lockstep CLI or experimental-feature parity with CppNix.
Platforms. First-party docs: Linux and macOS; NixOS and nix-darwin installs go through configuration overlays rather than only the standalone installer.
Examples¶
Fresh install (Linux / macOS, no existing Nix daemon) — from the Lix install guide:
Prefer the current instructions on that page over copying version-pinned upgrade scripts from elsewhere; upgrade paths for existing CppNix/Lix installs are documented separately there.
Confirm the binary is Lix (wording from upstream install docs; version numbers change):
On NixOS or nix-darwin, follow the configuration steps linked from Installing Lix rather than only the curl installer.
See also¶
- CppNix — upstream / reference Nix implementation Lix forked from
- Tvix — separate Rust Nix implementation (TVL)
- Snix — from-scratch Rust Nix implementation (contrasted by Lix)
- Nix Evaluators — evaluator index
- Glossary — CppNix / Lix / Tvix / Snix term index
- Forks and governance splits — governance and fork landscape
- Release cadence — NixOS channels vs which Nix binary you run
References¶
- Lix — project site
- About Lix — fork lineage (CppNix 2.18), goals, vs Snix, Flakes stance, technical differences
- Lix reference manual — language, store, and CLI documentation