# SPDX-License-Identifier: CC0-1.0 { system, localSystem, crossSystem, genodepkgs, nixpkgs, dhall-haskell , genode-depot }: let thisSystem = builtins.getAttr system; hostPkgs = import nixpkgs { system = localSystem; overlays = [ (self: super: { inherit (builtins.getAttr localSystem dhall-haskell.packages) dhall; }) ]; }; testPkgs = thisSystem genodepkgs.packages; depot = thisSystem genode-depot.packages; in { dhallText = name: source: hostPkgs.runCommand name { inherit name source; preferLocalBuild = true; buildInputs = [ hostPkgs.dhall ]; DHALL_PRELUDE = "${testPkgs.dhallPackages.prelude}/package.dhall"; DHALL_GENODE = "${testPkgs.dhallPackages.genode}/package.dhall"; } '' export XDG_CACHE_HOME=$NIX_BUILD_TOP dhall text < $source > $out ''; renderDhallInit = path: args: hostPkgs.runCommand "init.xml" { preferLocalBuild = true; buildInputs = with hostPkgs; [ dhall libxml2 ]; initConfig = path; initArgs = args; DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall"; DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall"; } '' export XDG_CACHE_HOME=$NIX_BUILD_TOP dhall text \ <<< 'let Prelude = env:DHALL_GENODE in Prelude.Init.render (env:initConfig env:initArgs)' \ > $out xmllint --noout $out ''; mergeManifests = inputs: nixpkgs.legacyPackages.${localSystem}.writeTextFile { name = "manifest.dhall"; text = with builtins; let f = head: input: if hasAttr "manifest" input then "${head},${input.pname}=${input.manifest}" else abort "${input.pname} does not have a manifest"; in (foldl' f "{" inputs) + "}"; }; }