A blazingly fast tool to diff Nix closures, such as system builds or package derivation graphs.
Dix is a command-line tool designed to diff Nix closures, which are derivation graphs representing system builds or packages. It helps developers quickly identify changes between Nix environments, such as different system profiles or package versions, by providing a fast and clear comparison. The tool solves the problem of understanding what has changed in a Nix-based system, which is essential for debugging, auditing, and maintaining reproducibility.
Nix users, system administrators, and DevOps engineers who work with Nix-based systems and need to compare closures for debugging, auditing, or CI purposes.
Developers choose Dix for its blazing fast performance and focus on Nix-specific diffing, offering a more efficient alternative to generic diff tools. Its unique selling point is the combination of speed with optional correctness guarantees, making it suitable for both interactive use and critical CI pipelines.
A blazingly fast tool to diff Nix related things
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Optimized for speed when diffing Nix closures, making it suitable for interactive use and CI pipelines, as highlighted in the README.
Focuses specifically on derivation graphs, providing clear comparisons for Nix system builds and packages, which is crucial for debugging and auditing.
Supports human-readable output with version highlighting and JSON for machine parsing (with the json feature), catering to both human and automated use cases.
Offers a --force-correctness flag to ensure accurate results in critical applications, balancing speed and reliability as needed, per the CI integration notes.
Currently only supports closures, not other Nix-related artifacts like expressions or configurations, limiting its utility for broader Nix workflows.
Without --force-correctness, dix can produce inaccurate results if Nix's SQLite database is being written to concurrently, as admitted in the CI usage notes.
JSON output requires enabling the json feature during build, which might add complexity for users needing machine-parsable results out of the box.