This adds a new Website/Docs for Snix, using Thulite / Doks, which is mostly hugo and a bit of npm. Change-Id: Iea10d4068fa783ec0ddd6bcaba5c8d92b1a1168f
1.3 KiB
| title | slug | description | summary | date | lastmod | draft | weight | toc |
|---|---|---|---|---|---|---|---|---|
| Protocol | protocol | 2025-03-14T14:14:35+01:00 | 2025-03-14T14:14:35+01:00 | false | 41 | true |
One goal of the builder protocol is to not be too tied to the Nix implementation itself, allowing it to be used for other builds/workloads in the future.
This means the builder protocol is versatile enough to express the environment a Nix build expects, while not being aware of "what any of this means".
For example, it is not aware of how certain environment variables are set in a nix build, but allows specifying environment variables that should be set.
It's also not aware of what nix store paths are. Instead, it allows:
- specifying a list of paths expected to be produced during the build
- specifying a list of castore root nodes to be present in a specified
inputs_dir. - specifying which paths are write-able during build.
In case all specified paths are produced, and the command specified in
command_args succeeds, the build is considered to be successful.
This happens to be sufficient to also express how Nix builds works.
Check build/protos/build.proto for a detailed description of the individual
fields, and the tests in glue/src/tvix_build.rs for some examples.