Diff Nix
A blazingly fast tool to diff Nix related things.
Currently only supports closures (a derivation graph, such as a system build or package).

Usage
<OLD_PATH>
<NEW_PATH>
Usage in CI
If you're planning on using dix in CI, you might want to set the
--force-correctness flag to ensure that the results are definitely accurate.
Dix will fall back to a connection using ?immutable=1 to Nix's SQLite database
if it fails connecting normally; This can however result in inaccurate output if
the database is being written to at the same time.
Passing --force-correctness will make dix fall back to Nix commands if
connection to the database fails, which ensures correct output, potentially at
the cost of speed.
Releasing
dix-diff is a separate crate because it owns the pure package/version diff
engine. Publish it before publishing dix; the dix package depends on the
same exact dix-diff version.
Contributing
If you have any problems, feature requests or want to contribute code or want to provide input in some other way, feel free to create an issue or a pull request!
Thanks
Huge thanks to nvd for the original idea! Dix is heavily inspired by this and basically just a "Rewrite it in Rust" version of nvd, with a few things like version diffing done better.
Furthermore, many thanks to the amazing people who made this projects possible by contributing code and offering advice:
- @Dragyx - Cool SQL queries. Much of dix's speed is thanks to him.
- @NotAShelf - Implementing proper error handling.
- @RGBCube - Giving the codebase a deep scrub.
License
Dix is licensed under GPLv3. See the license file for more details.