Dump the root init config at config.system.build.initXml
This commit is contained in:
parent
c4a45ea134
commit
3e4644c337
|
@ -34,7 +34,7 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkOption {
|
config = mkOption {
|
||||||
type = types.str;
|
type = types.path;
|
||||||
description = ''
|
description = ''
|
||||||
Dhall boot configuration. See
|
Dhall boot configuration. See
|
||||||
https://git.sr.ht/~ehmry/dhall-genode/tree/master/Boot/package.dhall
|
https://git.sr.ht/~ehmry/dhall-genode/tree/master/Boot/package.dhall
|
||||||
|
@ -56,7 +56,8 @@ in {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = let initInputs = unique config.genode.init.inputs;
|
||||||
|
in {
|
||||||
|
|
||||||
assertions = [{
|
assertions = [{
|
||||||
assertion = builtins.any (s: s == config.nixpkgs.system)
|
assertion = builtins.any (s: s == config.nixpkgs.system)
|
||||||
|
@ -82,8 +83,6 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
initInputs = unique config.genode.init.inputs;
|
|
||||||
|
|
||||||
mergeManifests = inputs:
|
mergeManifests = inputs:
|
||||||
localPackages.writeTextFile {
|
localPackages.writeTextFile {
|
||||||
name = "manifest.dhall";
|
name = "manifest.dhall";
|
||||||
|
@ -100,24 +99,35 @@ in {
|
||||||
in (foldl' f "[" inputs) + "]";
|
in (foldl' f "[" inputs) + "]";
|
||||||
};
|
};
|
||||||
|
|
||||||
storeManifest =
|
storeManifest = mergeManifests (map addManifest initInputs);
|
||||||
mergeManifests (map addManifest initInputs);
|
|
||||||
|
|
||||||
storeTarball = localPackages.runCommand "store" { } ''
|
storeTarball = localPackages.runCommand "store" { } ''
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
tar cf "$out/store.tar" --absolute-names ${
|
tar cf "$out/store.tar" --absolute-names ${toString initInputs}
|
||||||
toString initInputs
|
|
||||||
}
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
manifest = mergeManifests (map addManifest
|
manifest = mergeManifests (map addManifest
|
||||||
(config.genode.core.basePackages ++ [ storeTarball ]
|
(config.genode.core.basePackages ++ [ storeTarball ]
|
||||||
++ (with pkgs.genodePackages; [ init vfs cached_fs_rom ])));
|
++ (with pkgs.genodePackages; [ init vfs cached_fs_rom ])));
|
||||||
in ''
|
in localPackages.runCommand "boot.dhall" { } ''
|
||||||
|
cat > $out << EOF
|
||||||
${./store-wrapper.dhall}
|
${./store-wrapper.dhall}
|
||||||
(${config.genode.init.config})
|
(${config.genode.init.config})
|
||||||
$(stat --format '%s' ${storeTarball}/store.tar)
|
$(stat --format '%s' ${storeTarball}/store.tar)
|
||||||
${storeManifest} ${manifest}
|
${storeManifest} ${manifest}
|
||||||
|
EOF
|
||||||
|
'';
|
||||||
|
|
||||||
|
system.build.initXml = pkgs.buildPackages.runCommand "init.xml" {
|
||||||
|
nativeBuildInputs = with pkgs.buildPackages; [ dhall xorg.lndir ];
|
||||||
|
DHALL_GENODE = "${pkgs.genodePackages.dhallGenode}/binary.dhall";
|
||||||
|
BOOT_CONFIG = config.genode.boot.config;
|
||||||
|
} ''
|
||||||
|
export XDG_CACHE_HOME=$NIX_BUILD_TOP
|
||||||
|
lndir -silent \
|
||||||
|
${pkgs.genodePackages.dhallGenode}/.cache \
|
||||||
|
$XDG_CACHE_HOME
|
||||||
|
dhall text <<< "(env:DHALL_GENODE).Init.render (env:BOOT_CONFIG).config" > $out
|
||||||
'';
|
'';
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -118,18 +118,6 @@ in {
|
||||||
} }
|
} }
|
||||||
'';
|
'';
|
||||||
|
|
||||||
system.build.initXml = pkgs.buildPackages.runCommand "init.xml" {
|
|
||||||
nativeBuildInputs = with pkgs.buildPackages; [ dhall xorg.lndir ];
|
|
||||||
DHALL_GENODE = "${pkgs.genodePackages.dhallGenode}/binary.dhall";
|
|
||||||
INIT_CONFIG = config.genode.init.config;
|
|
||||||
} ''
|
|
||||||
export XDG_CACHE_HOME=$NIX_BUILD_TOP
|
|
||||||
lndir -silent \
|
|
||||||
${pkgs.genodePackages.dhallGenode}/.cache \
|
|
||||||
$XDG_CACHE_HOME
|
|
||||||
dhall text <<< "(env:DHALL_GENODE).Init.render (env:INIT_CONFIG)" > $out
|
|
||||||
'';
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue