diff --git a/nixos-modules/genode-core.nix b/nixos-modules/genode-core.nix index 134f2ec..b1d22e1 100644 --- a/nixos-modules/genode-core.nix +++ b/nixos-modules/genode-core.nix @@ -34,7 +34,7 @@ in { }; config = mkOption { - type = types.str; + type = types.path; description = '' Dhall boot configuration. See 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 = [{ assertion = builtins.any (s: s == config.nixpkgs.system) @@ -82,8 +83,6 @@ in { ''; }; - initInputs = unique config.genode.init.inputs; - mergeManifests = inputs: localPackages.writeTextFile { name = "manifest.dhall"; @@ -100,24 +99,35 @@ in { in (foldl' f "[" inputs) + "]"; }; - storeManifest = - mergeManifests (map addManifest initInputs); + storeManifest = mergeManifests (map addManifest initInputs); storeTarball = localPackages.runCommand "store" { } '' mkdir -p $out - tar cf "$out/store.tar" --absolute-names ${ - toString initInputs - } + tar cf "$out/store.tar" --absolute-names ${toString initInputs} ''; manifest = mergeManifests (map addManifest (config.genode.core.basePackages ++ [ storeTarball ] ++ (with pkgs.genodePackages; [ init vfs cached_fs_rom ]))); - in '' + in localPackages.runCommand "boot.dhall" { } '' + cat > $out << EOF ${./store-wrapper.dhall} (${config.genode.init.config}) $(stat --format '%s' ${storeTarball}/store.tar) ${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 ''; }; diff --git a/nixos-modules/genode-init.nix b/nixos-modules/genode-init.nix index ee5b021..a695333 100644 --- a/nixos-modules/genode-init.nix +++ b/nixos-modules/genode-init.nix @@ -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 - ''; - }; }