A modern, delicious implementation of the Nix package manager, focused on correctness, usability, and growth — and committed to doing right by its community https://lix.systems
Find a file
jade b62cc7b361 meson: prepare for include rearrangement
Context: we have include paths that are "types.hh" and similarly common
names. We currently have these compatibly available as
"lix/libutil/types.hh" externally but *not yet internally*. This is
because we don't have any way for the src directory to appear as
`"lix/"` from inside of Lix: the lix/ include directory is created by
the install process.

The goal of this whole thing is to make it clearer which component of
Lix that files are a part of, which should hopefully help at least a
little bit to new developers. One disadvantage of un-mixing these is
that it will cause some API changes if we ever move a file between
libraries, but that is not very common, and we don't care that much
about external API users.

This was planned for a while and is why we have a FixIncludes check to
begin with.

Personally I don't see a great benefit in rearranging our source code,
and in fact, it would probably be counterproductive:
- Moving the includes into a separate `include/` directory would just
  make developers have to deal with more directories, when we can
  already generate the desired layout through the build process.
- This would also decouple the .cc and .hh files which currently
  conventionally have each others' definitions and declarations
  respectively, right next to each other, making it easier for them to
  feel decoupled and diverge.

Content: Add ../include as an include directory so that lix/ in include
paths will resolve to src/ within Lix itself, just as it does externally
today. This prepares for a further series of commits applying the actual
change to each library one-by-one by accepting both include versions at
once.

This could have been done with ../ and a symlink called lix, but we
would like to not accept libexpr/foo.hh internally for it would be
broken externally, so we need an otherwise empty directory for the
include.

Change-Id: Ideac17faadae2bcea2dffbab34eb27c582ede399
2024-11-18 12:22:39 -08:00
.github fix: docs issue template was busted 2024-09-14 19:28:46 +00:00
bench benchmarks: Fix purity 2024-10-18 19:37:23 +02:00
contrib function-trace: always show the trace 2019-09-18 23:23:21 +02:00
doc meson: prepare for include rearrangement 2024-11-18 12:22:39 -08:00
maintainers rl-next: fix incorrect CL list syntax 2024-08-09 19:03:08 -07:00
meson libutil: generate experimental and deprecated features from data 2024-11-09 16:05:12 +01:00
misc fix: make static build work again 2024-11-01 16:55:47 +04:00
nix-support editline: Vendor cl/1883 patch to recognize Alt+Left/Alt+Right 2024-09-11 09:35:00 -07:00
perl Merge changes Ib7c80826,I636f8a71,I67669b98 into main 2024-08-09 19:24:29 +00:00
releng releng: fix the git push 2024-08-07 21:46:44 -07:00
scripts build: fix deprecated uses of configure_file 2024-09-27 11:55:32 -05:00
src meson: prepare for include rearrangement 2024-11-18 12:22:39 -08:00
subprojects meson: prepare for include rearrangement 2024-11-18 12:22:39 -08:00
tests libexpr: initGC -> initLibExpr 2024-11-15 16:15:11 +01:00
.clang-format Add pre-commit checks 2024-03-29 22:57:40 -07:00
.clang-tidy clang-tidy: write a lint for charptr_cast 2024-08-08 14:53:17 -07:00
.dir-locals.el .dir-locals.el: Set c-block-comment-prefix 2020-07-10 11:21:06 +02:00
.editorconfig editorconfig: Add meson.build 2024-10-01 16:09:47 -07:00
.envrc .envrc: remove MAKEFLAGS and use clang environment by default 2024-06-25 12:36:18 -06:00
.gitignore libutil: generate experimental and deprecated features from data 2024-11-09 16:05:12 +01:00
.mailmap add .mailmap 2024-11-04 13:46:10 +01:00
.this-is-lix devShell: guard against running from another directory 2024-06-24 13:41:38 -07:00
Cargo.lock rowan: 0.15.15 -> 0.15.16 2024-08-26 11:34:43 -07:00
Cargo.toml build: move to a Cargo workspace 2024-08-21 17:09:10 +00: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 Format Nix code with nixfmt 2024-04-08 13:00:00 -07:00
docker.nix releng: support multiarch docker images 2024-06-09 20:33:24 -07:00
flake.lock flake.lock: update everything 2024-09-25 18:42:16 -07:00
flake.nix package.nix: Fix cross devShell 2024-11-02 06:32:20 +00:00
justfile build: implement clang-tidy using our plugin 2024-08-04 20:41:19 -07:00
meson.build fix: make static build work again 2024-11-01 16:55:47 +04:00
meson.options build: implement clang-tidy using our plugin 2024-08-04 20:41:19 -07:00
package.nix libutil: generate experimental and deprecated features from data 2024-11-09 16:05:12 +01:00
README.md README: clarify license to match documentation 2024-08-10 16:11:58 -07:00
shell.nix shell.nix: conform to documentation 2024-05-27 16:47:40 +02:00
treefmt.toml Format Nix code with nixfmt 2024-04-08 13:00:00 -07:00
version.json Update version to 2.92 2024-08-12 18:06:08 -07: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 to set up a development environment and build Lix from source.

Additional Resources

License

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