# 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 = let f = import ./genodelabs { nixpkgs = legacyPackages; }; in args: addManifest (f args); in rec { inherit (legacyPackages) stdenv; genode-sources = legacyPackages.callPackage ./genodelabs/sources.nix { }; base-hw-pc = buildUpstream { name = "base-hw-pc"; KERNEL = "hw"; BOARD = "pc"; targets = [ "bootstrap" "core" "timer" "lib/ld" ]; postInstall = '' mkdir -p $out/lib mv $out/bin/*.o $out/lib/ mv $out/lib/ld-hw.lib.so $out/lib/ld.lib.so ''; }; base-linux = buildUpstream { name = "base-linux"; KERNEL = "linux"; targets = [ "core" "timer" "lib/ld" ]; postInstall = '' mkdir -p $out/lib mv $out/lib/ld-linux.lib.so $out/lib/ld.lib.so ''; HOST_INC_DIR = legacyPackages.buildPackages.glibc.dev + "/include"; }; base-nova = buildUpstream { name = "base-nova"; KERNEL = "nova"; targets = [ "core" "timer" "lib/ld" ]; postInstall = '' mkdir -p $out/lib mv $out/bin/*.o $out/lib/ mv $out/lib/ld-nova.lib.so $out/lib/ld.lib.so ''; }; driversPc = let directoryBlacklist = [ "repos/dde_zircon" ]; in buildUpstream { name = "drivers"; BOARD = "pc"; targets = [ "drivers" ]; ports = [ "dde_bsd" "dde_ipxe" "dde_linux" "libc" "openssl" "x86emu" ]; preBuild = "find ${toString directoryBlacklist} -name target.mk -delete"; }; noux = buildUpstream { name = "noux"; targets = [ "noux" "lib/libc_noux" ]; ports = [ "libc" ]; }; os = let directoryBlacklist = [ "repos/dde_bsd" "repos/dde_ipxe" "repos/dde_linux" "repos/dde_rump" "repos/gems/src/app/mixer_gui_qt" "repos/gems/src/server/http_block" "repos/gems/src/server/terminal_mux" "repos/libports" "repos/ports" ]; in buildUpstream { name = "os"; patches = [ ./genodelabs/capslock.patch ]; targets = [ "app" "init" "lib/vfs" "server" ]; ports = [ "jitterentropy" "libc" "libpng" "libssh" "openssl" "stb" "zlib" ]; preBuild = "find ${toString directoryBlacklist} -name target.mk -delete"; nativeBuildInputs = with legacyPackages.buildPackages; [ bison flex ]; }; vfs_lwip = buildUpstream { name = "lwip"; targets = [ "lib/vfs/lwip" ]; ports = [ "lwip" ]; }; vfs_rump = buildUpstream { name = "vfs_rump"; targets = [ "lib/vfs/rump" ]; ports = [ "dde_rump" ]; buildInputs = [ legacyPackages.buildPackages.zlib ]; }; vfs_ttf = buildUpstream { name = "vfs_ttf"; targets = [ "lib/vfs/ttf" ]; ports = [ "libc" "stb" ]; }; virtualbox5 = buildUpstream { name = "virtualbox5"; targets = [ "virtualbox5" ]; ports = [ "libc" "libiconv" "qemu-usb" "stdcxx" "virtualbox5" ]; nativeBuildInputs = with legacyPackages.buildPackages; [ iasl yasm ]; KERNEL = "nova"; }; genodeTests = let directoryBlacklist = [ "repos/base-*" "repos/base/src/test/sanitizer" "repos/base/src/test/xml_generator" "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"; preBuild = "find ${toString directoryBlacklist} -name target.mk -delete"; targets = [ "test" ]; ports = [ "libc" ]; }; bender = legacyPackages.buildPackages.callPackage ./bender { }; dhallGenode = dhallPackages.genode; dhallPrelude = dhallPackages.prelude; NOVA = legacyPackages.callPackage ./NOVA { }; libc = callPackage' ./libc { inherit depot; }; solo5 = let drv = callPackage' ./solo5 { }; in drv // { tests = addManifest drv.tests // { pname = "solo5-tests"; }; }; sotest-producer = callPackage' ./sotest-producer { }; stdcxx = callPackage' ./stdcxx { }; }