# SPDX-License-Identifier: CC0-1.0 { system, legacyPackages, depot, apps, dhallApps }: let inherit (legacyPackages) callPackage; dhallPackages = legacyPackages.dhallPackages // (callPackage ./dhall { inherit dhallApps; }); mkDhallManifest = drv: legacyPackages.runCommand "${drv.name}.dhall" { inherit drv; } "${apps.generate-manifest.program} $drv > $out"; addManifest = drv: { manifest = mkDhallManifest drv; } // drv; callPackage' = path: attrs: addManifest (legacyPackages.callPackages path attrs); buildUpstream = import ./genodelabs { nixpkgs = legacyPackages; inherit apps; }; in rec { inherit (legacyPackages) stdenv; base-hw-pc = buildUpstream { name = "base-hw-pc"; arch = "x86_64"; kernel = "hw"; board = "pc"; targets = [ "bootstrap" "core" "timer" "lib/ld" ]; postInstall = '' mkdir -p $out/lib mv $out/bin/*.o $out/lib/ mv $out/bin/ld-hw.lib.so $out/lib/ld.lib.so ''; }; base-nova = buildUpstream { name = "base-nova"; arch = "x86_64"; kernel = "nova"; targets = [ "core" "timer" "lib/ld" ]; postInstall = '' mkdir -p $out/lib mv $out/bin/*.o $out/lib/ mv $out/bin/ld-nova.lib.so $out/lib/ld.lib.so ''; }; driver_manager = buildUpstream { name = "driver_manager"; arch = "x86_64"; targets = [ "app/driver_manager" ]; patches = [ ./genodelabs/capslock.patch ]; }; genodeTests = let directoryBlacklist = [ "repos/base-*" "repos/base/src/test/sanitizer" "repos/base/src/test/xml_generator" "repos/dde_bsd" "repos/dde_linux" "repos/gems/src/test/aes_cbc_4k" "repos/gems/src/test/decorator_stress" "repos/gems/src/test/text_painter" "repos/gems/src/test/text_painter" "repos/gems/src/test/tiled_wm" "repos/libports" "repos/ports" ]; in buildUpstream { name = "genode-tests"; arch = "x86_64"; preBuild = "find ${toString directoryBlacklist} -name target.mk -delete"; targets = [ "test" ]; }; bender = legacyPackages.buildPackages.callPackage ./bender { }; dhallGenode = dhallPackages.genode; dhallPrelude = dhallPackages.prelude; genode = import ./genode { nixpkgs = legacyPackages; inherit mkDhallManifest; }; NOVA = legacyPackages.callPackage ./NOVA { }; libc = callPackage' ./libc { inherit depot; }; nic_bus = callPackage ./nic_bus { inherit (genode) base os; }; solo5 = let drv = callPackage' ./solo5 { inherit genode; }; in drv // { tests = addManifest drv.tests // { pname = "solo5-tests"; }; }; sotest-producer = callPackage' ./sotest-producer { stdenv = genode.stdenvGcc; inherit genode; }; stdcxx = callPackage' ./stdcxx { }; }