|
|
|
@ -90,11 +90,15 @@ in {
|
|
|
|
|
in (foldl' f "[" inputs) + "]";
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
romDirectories = mapAttrs (name: value:
|
|
|
|
|
pkgs.symlinkJoin {
|
|
|
|
|
name = "${name}-rom";
|
|
|
|
|
paths = value.inputs;
|
|
|
|
|
}) config.genode.init.children;
|
|
|
|
|
romDirectories = filterAttrs (_: value: value != null) (mapAttrs
|
|
|
|
|
(name: value:
|
|
|
|
|
if value.inputs == [ ] then
|
|
|
|
|
null
|
|
|
|
|
else
|
|
|
|
|
pkgs.symlinkJoin {
|
|
|
|
|
name = "${name}-rom";
|
|
|
|
|
paths = value.inputs;
|
|
|
|
|
}) config.genode.init.children);
|
|
|
|
|
|
|
|
|
|
in {
|
|
|
|
|
|
|
|
|
@ -115,18 +119,33 @@ in {
|
|
|
|
|
report_rom
|
|
|
|
|
vfs
|
|
|
|
|
])));
|
|
|
|
|
storeRomPolicies = let
|
|
|
|
|
policies = mapAttrsToList
|
|
|
|
|
(name: value: '', { mapKey = "${name}", mapValue = "${value}" }'')
|
|
|
|
|
romDirectories;
|
|
|
|
|
in "[${toString policies}]";
|
|
|
|
|
|
|
|
|
|
storeRomPolicies = mapAttrsToList
|
|
|
|
|
(name: value: '', { mapKey = "${name}", mapValue = "${value}" }'')
|
|
|
|
|
romDirectories;
|
|
|
|
|
|
|
|
|
|
extraRoutes = lib.concatStringsSep ", " (lib.lists.flatten
|
|
|
|
|
(lib.mapAttrsToList (name: value:
|
|
|
|
|
map (suffix: ''
|
|
|
|
|
{ service =
|
|
|
|
|
{ name = "ROM"
|
|
|
|
|
, label =
|
|
|
|
|
Genode.Init.LabelSelector.Type.Partial
|
|
|
|
|
{ prefix = Some "nixos -> ${name}", suffix = Some "${suffix}" }
|
|
|
|
|
}
|
|
|
|
|
, route = Genode.Init.Route.parent (Some "${suffix}")
|
|
|
|
|
}
|
|
|
|
|
'') value.coreROMs) config.genode.init.children));
|
|
|
|
|
|
|
|
|
|
in localPackages.runCommand "boot.dhall" { } ''
|
|
|
|
|
cat > $out << EOF
|
|
|
|
|
let Genode = env:DHALL_GENODE in
|
|
|
|
|
${./store-wrapper.dhall}
|
|
|
|
|
(${config.genode.init.configFile})
|
|
|
|
|
"${config.system.build.tarball.fileName}.tar"
|
|
|
|
|
$(stat --format '%s' ${tarball})
|
|
|
|
|
${storeRomPolicies}
|
|
|
|
|
([${toString storeRomPolicies} ] : Genode.Prelude.Map.Type Text Text)
|
|
|
|
|
([${extraRoutes} ] : List Genode.Init.ServiceRoute.Type)
|
|
|
|
|
${manifest}
|
|
|
|
|
EOF
|
|
|
|
|
'';
|
|
|
|
|