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";
|
||||
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 = {
|
||||
libos = { inherit entrypoint; };
|
||||
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 { };
|
||||
manifestFile = tomlFormat.generate "${name}.manifest.toml" mergedManifest;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue