feat(nix-compat/{aterm,derivation}): init parser

This provides a nom-based parser for Nix derivations in ATerm format,
which can be reached via `Derivation::from_aterm_bytes`.

Some of the lower-level ATerm primitives are moved into a (new) aterm
module, and some more higher-level ones that construct derivation-
specific types.

Also, move the escape_bytes function into there, this is a generic ATerm
thing.

Change-Id: I2b03b8a1461c7ea2fcb8640c2fc3d1fa3ea719fb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9730
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Tested-by: BuildkiteCI
This commit is contained in:
Florian Klink 2023-07-31 15:46:39 +02:00 committed by clbot
parent 8b09ae54b1
commit 2410f2292f
14 changed files with 679 additions and 3 deletions

View file

@ -3895,6 +3895,19 @@ rec {
];
};
"minimal-lexical" = rec {
crateName = "minimal-lexical";
version = "0.2.1";
edition = "2018";
sha256 = "16ppc5g84aijpri4jzv14rvcnslvlpphbszc7zzp6vfkddf4qdb8";
authors = [
"Alex Huszagh <ahuszagh@gmail.com>"
];
features = {
"default" = [ "std" ];
};
resolvedDefaultFeatures = [ "std" ];
};
"miniz_oxide" = rec {
crateName = "miniz_oxide";
version = "0.7.1";
@ -4190,6 +4203,14 @@ rec {
optional = true;
features = [ "io" ];
}
{
name = "glob";
packageId = "glob";
}
{
name = "nom";
packageId = "nom";
}
{
name = "serde";
packageId = "serde";
@ -4238,6 +4259,32 @@ rec {
};
resolvedDefaultFeatures = [ "async" "futures-util" ];
};
"nom" = rec {
crateName = "nom";
version = "7.1.3";
edition = "2018";
sha256 = "0jha9901wxam390jcf5pfa0qqfrgh8li787jx2ip0yk5b8y9hwyj";
authors = [
"contact@geoffroycouprie.com"
];
dependencies = [
{
name = "memchr";
packageId = "memchr";
usesDefaultFeatures = false;
}
{
name = "minimal-lexical";
packageId = "minimal-lexical";
usesDefaultFeatures = false;
}
];
features = {
"default" = [ "std" ];
"std" = [ "alloc" "memchr/std" "minimal-lexical/std" ];
};
resolvedDefaultFeatures = [ "alloc" "default" "std" ];
};
"nom8" = rec {
crateName = "nom8";
version = "0.2.0";