A modern, delicious implementation of the Nix package manager, focused on correctness, usability, and growth — and committed to doing right by its community
  • C++ 74.9%
  • Python 11.6%
  • Nix 6.1%
  • Shell 3.7%
  • Meson 2%
  • Other 1.6%
Find a file
blokyk f91bdc9367 libutil: always print addErrorContext frames
frames manually added with `addErrorContext` are generally a lot more
useful/informative to the average user than other frames, esp. in
the module system, which can create much better error messages than
we can.

however, before this change, frames from addErrorContext were truncated
by default if they weren't in the first 3 frames, so they were basically
useless (with `--show-trace`, you're dredging through 250 frames of
module shenanigans just to spot one singular line).

this change also removes the frames for _the call to_ `addErrorContext`,
which is just pure noise.

the way this change is done hopefully leaves a bit of space for future
similar changes to error printing, by introducing a new `TraceKind` enum
that can be used to categorize traces (i haven't done that in this CL
because that would be a pretty herculean task, given all the calls to
`BaseError::addTrace` in the codebase, and we probably want to be
careful about what categories we choose). the actual printing code could
definitely be improved tho... (e.g. by iterating twice through the trace
stack instead to first pick out the most important traces and _then_
printing less "important" traces if there's space left)

Change-Id: I52acc52f231991a9f2309d9cecae362397c6888c
2026-07-16 15:20:59 +00:00
.cargo build: cargo entrypoint II 2026-06-28 12:46:20 +00:00
.github fix: docs issue template was busted 2024-09-14 19:28:46 +00:00
bench bench: fix outdated nixpkgs reference 2026-07-05 13:21:25 +00:00
contrib build: always link plugins with unresolved symbols allowed 2026-06-21 17:16:17 +02:00
doc libutil: always print addErrorContext frames 2026-07-16 15:20:59 +00:00
lix libutil: always print addErrorContext frames 2026-07-16 15:20:59 +00:00
maintainers python-infra: move f2 specific stuff into f2 2026-06-14 20:56:18 +02:00
meson libutil|rs: bring back c++ interop with zngur 2026-06-28 12:47:18 +00:00
misc nixpkgs: bump 25.11 -> 26.05 2026-06-22 17:58:20 +02:00
nix-support nixpkgs: bump 25.11 -> 26.05 2026-06-22 17:58:20 +02:00
perl libutil: disable direct access to logger verbosity 2026-06-28 13:01:45 +00:00
releng tests/nixos: don't pass in self 2026-06-04 15:30:08 +02:00
scripts Fix broken user override of NIX_SSL_CERT_FILE in fish shell 2026-04-20 13:02:17 +00:00
subprojects nix-eval-jobs: --apply 2026-07-04 14:46:08 +00:00
tests libutil: always print addErrorContext frames 2026-07-16 15:20:59 +00:00
tools/licxxbridge libutil|rs: bring back c++ interop with zngur 2026-06-28 12:47:18 +00:00
.clang-format clang-format: Raise column limit to 110 2026-01-02 17:51:33 +00:00
.clang-tidy clang-tidy: enable bugprone-multi-level-implicit-pointer-conversion 2025-12-09 14:51:43 +00:00
.dir-locals.el .dir-locals.el: Set c-block-comment-prefix 2020-07-10 11:21:06 +02:00
.editorconfig .editorconfig: json: init with 4 space indent 2025-05-15 15:11:57 -07:00
.envrc .envrc: remove MAKEFLAGS and use clang environment by default 2024-06-25 12:36:18 -06:00
.gitignore gitignore: ignore top-level build and outputs directories 2026-04-22 11:47:09 +00:00
.mailmap chore: reflect account migration 2026-01-31 20:59:02 +00:00
.this-is-lix devShell: guard against running from another directory 2024-06-24 13:41:38 -07:00
Cargo.lock rust: add rootcause as error library 2026-07-10 19:47:06 +02:00
Cargo.toml rust: add rootcause as error library 2026-07-10 19:47:06 +02:00
CONTRIBUTING.md chore: re-work the contribution guide 2024-05-07 01:28:35 +00:00
COPYING Add pre-commit checks 2024-03-29 22:57:40 -07:00
default.nix chore: replace edolstra/flake-compat with lix-project/flake-compat 2026-01-20 12:31:41 +00:00
docker.nix nixpkgs: bump to 25.11 2025-12-17 20:59:59 +01:00
flake.lock flake: update nixpkgs, fix eval 2026-07-11 21:18:59 +02:00
flake.nix nixpkgs: bump 25.11 -> 26.05 2026-06-22 17:58:20 +02:00
justfile justfile: Don't require nested escapes on forwarded commands anymore 2026-06-30 10:58:58 +00:00
meson.build build: use mimalloc 2026-07-04 10:39:30 +00:00
meson.options build: use mimalloc 2026-07-04 10:39:30 +00:00
OWNERS codeowners: add some missing directories 2025-09-17 16:26:49 +00:00
package.nix packaging: set CARGO_HOME 2026-07-11 12:11:49 +00:00
pyproject.toml testlib: default nix fixture to also test all daemon protocols (2/3) 2026-06-28 18:17:57 +02:00
README.md Fix typos in documentation 2025-03-18 04:20:00 +00:00
release.nix release.nix: mock rev/lastModified attrs when nixpkgs is a path 2026-07-11 21:18:59 +02:00
shell.nix chore: replace edolstra/flake-compat with lix-project/flake-compat 2026-01-20 12:31:41 +00:00
treefmt.toml code-generation: run ruff 2026-01-10 00:07:33 +00:00
version.json version.json: begin the 2.96 series 2026-03-13 22:59:53 +01:00

Lix

Lix is an implementation of Nix, a powerful package management system for Linux and other Unix systems that makes package management reliable and reproducible.

Read more about us at https://lix.systems.

Installation

On Linux and macOS the easiest way to install Lix is to run the following shell command (as a user other than root):

$ curl -sSf -L https://install.lix.systems/lix | sh -s -- install

For systems that already have a Nix implementation installed, such as NixOS systems, read our install page

Building And Developing

See our Hacking guide in our manual for instruction on how to set up a development environment and build Lix from source.

Additional Resources

License

Lix is released under LGPL-2.1-or-later.