--- synopsis: Rename all the libraries nixexpr, nixstore, etc to lixexpr, lixstore, etc credits: jade category: Breaking Changes --- The Lix C++ API libraries have had the following changes: - Includes moved from `include/nix/` to `include/lix/` - `pkg-config` files renamed from `nix-expr` to `lix-expr` and so on. - Libraries renamed from `libnixexpr.so` to `liblixexpr.so` and so on. There are other changes between Nix 2.18 and Lix, since these APIs are not stable. However, this change in particular is a deliberate compatibility break to force downstreams linking to Lix to specifically handle Lix and avoid Lix accidentally getting ensnared in compatibility code for newer CppNix. Migration path: - expr.hh -> lix/libexpr/expr.hh - nix/config.h -> lix/config.h To apply this migration automatically, remove all `` from includes, so `#include ` -> `#include `. Then, the correct paths will be resolved from the tangled mess, and the clang-tidy automated fix will work. Then run the following for out of tree projects (header filter is set to only fix instances in headers in `../src` relative to the compiler's working directory, as would be the case in nix-eval-jobs or other things built with meson, e.g.): ```console lix_root=$HOME/lix (cd $lix_root/clang-tidy && nix develop -c 'meson setup build && ninja -C build') run-clang-tidy -checks='-*,lix-fixincludes' -load=$lix_root/clang-tidy/build/liblix-clang-tidy.so -p build/ -header-filter '\.\./src/.*\.h' -fix src ```