mirror of
https://github.com/matter-labs/nixsgx.git
synced 2025-07-21 23:43:56 +02:00
feat: merge the manifest attribute sets better
* merge the arrays `fs.mounts` and `sgx.trusted_files` instead of replacing them. * append `loader.env.LD_LIBRARY_PATH` instead of replacing it. Signed-off-by: Harald Hoyer <harald@matterlabs.dev>
This commit is contained in:
parent
9fc590adf9
commit
7050f3b049
1 changed files with 17 additions and 1 deletions
|
@ -27,6 +27,22 @@ _:
|
||||||
}:
|
}:
|
||||||
assert lib.assertMsg (!(isAzure && sgx_default_qcnl_conf != null)) "sgx_default_qcnl_conf can't be set for Azure";
|
assert lib.assertMsg (!(isAzure && sgx_default_qcnl_conf != null)) "sgx_default_qcnl_conf can't be set for Azure";
|
||||||
let
|
let
|
||||||
|
manifestRecursiveMerge =
|
||||||
|
base: mod: with lib.attrsets; let
|
||||||
|
mergeByPathWithOp = path: action: setAttrByPath path (
|
||||||
|
if hasAttrByPath path mod
|
||||||
|
then action (getAttrFromPath path base) (getAttrFromPath path mod)
|
||||||
|
else getAttrFromPath path base
|
||||||
|
);
|
||||||
|
mergeListByPath = path: mergeByPathWithOp path (a: b: a ++ b);
|
||||||
|
mergeEnvPathByPath = path: mergeByPathWithOp path (a: b: a + ":" + b);
|
||||||
|
in
|
||||||
|
recursiveUpdate base (recursiveUpdate mod (
|
||||||
|
# manually merge the relevant lists / strings
|
||||||
|
mergeListByPath [ "fs" "mounts" ]
|
||||||
|
// mergeListByPath [ "sgx" "trusted_files" ]
|
||||||
|
// mergeEnvPathByPath [ "loader" "env" "LD_LIBRARY_PATH" ]
|
||||||
|
));
|
||||||
manifest_base = {
|
manifest_base = {
|
||||||
libos = { inherit entrypoint; };
|
libos = { inherit entrypoint; };
|
||||||
fs = {
|
fs = {
|
||||||
|
@ -77,7 +93,7 @@ _:
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mergedManifest = (if customRecursiveMerge == null then lib.recursiveUpdate else customRecursiveMerge) manifest_base manifest;
|
mergedManifest = (if customRecursiveMerge == null then manifestRecursiveMerge else customRecursiveMerge) manifest_base manifest;
|
||||||
|
|
||||||
tomlFormat = pkgs.formats.toml { };
|
tomlFormat = pkgs.formats.toml { };
|
||||||
manifestFile = tomlFormat.generate "${name}.manifest.toml" mergedManifest;
|
manifestFile = tomlFormat.generate "${name}.manifest.toml" mergedManifest;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue