{ nixpkgs }: let inherit (nixpkgs) buildPackages callPackage fetchFromGitHub fetchgit genodeSources stdenv; inherit (genodeSources) buildUpstream; dhallPackages = buildPackages.callPackage ./dhall { }; buildDepotWorld = let genodeWorld = fetchFromGitHub { owner = "genodelabs"; repo = "genode-world"; rev = "0ed545e55a90c39df23a86eb733961de71d56241"; hash = "sha256-sirmUtLmZ5YnfLKrOvOBafnZW3UW+1LtkiGu85Ma820="; }; in attrs: genodeSources.buildDepot (attrs // { postConfigure = '' cp -r --no-preserve=mode ${genodeWorld} $GENODE_DIR/repos ''; }); depotPkgs = with builtins; let names = attrNames (import ./genodelabs/targets.nix { buildPackages = null; ports = null; }); f = name: { inherit name; value = genodeSources.depot name; }; in listToAttrs (map f names); basePatches = [ ./genodelabs/cxx-align.patch ]; in depotPkgs // { inherit stdenv genodeSources; base-hw-pc = buildUpstream { name = "base-hw-pc"; outputs = [ "out" "coreObj" "bootstrapObj" ]; KERNEL = "hw"; BOARD = "pc"; targets = [ "bootstrap" "core" "timer" "lib/ld" ]; patches = basePatches; postInstall = '' mv $out/core-hw-pc.o $coreObj mv $out/bootstrap-hw-pc.o $bootstrapObj mv $out/ld-hw.lib.so $out/ld.lib.so mv $out/hw_timer_drv $out/timer_drv ''; meta.platforms = [ "x86_64-genode" ]; }; base-hw-virt_qemu = buildUpstream { name = "base-hw-virt_qemu"; outputs = [ "out" "coreObj" "bootstrapObj" ]; KERNEL = "hw"; BOARD = "virt_qemu"; targets = [ "bootstrap" "core" "timer" "lib/ld" ]; patches = basePatches; postInstall = '' mv $out/core-hw-virt_qemu.o $coreObj mv $out/bootstrap-hw-virt_qemu.o $bootstrapObj mv $out/ld-hw.lib.so $out/ld.lib.so mv $out/hw_timer_drv $out/timer_drv ''; meta.platforms = [ "aarch64-genode" ]; }; base-linux = buildUpstream { name = "base-linux"; KERNEL = "linux"; BOARD = "linux"; targets = [ "core" "timer" "lib/ld" ]; patches = basePatches; postInstall = '' mkdir -p $out/lib mv $out/ld-linux.lib.so $out/lib/ld.lib.so mv $out/linux_timer_drv $out/timer_drv ''; HOST_INC_DIR = buildPackages.glibc.dev + "/include"; }; base-nova = buildUpstream { name = "base-nova"; outputs = [ "out" "coreObj" ]; KERNEL = "nova"; targets = [ "core" "timer" "lib/ld" ]; patches = basePatches; postInstall = '' mv $out/core-nova.o $coreObj mv $out/ld-nova.lib.so $out/ld.lib.so mv $out/nova_timer_drv $out/timer_drv ''; }; bender = buildPackages.callPackage ./bender { }; block_router = callPackage ./block_router { }; dhallGenode = dhallPackages.genode; init = genodeSources.depot "init"; nic_bus = callPackage ./nic_bus { }; NOVA = callPackage ./NOVA { }; rtc-dummy = callPackage ./rtc-dummy { }; show_input = callPackage ./show_input { }; solo5 = let drv = callPackage ./solo5 { }; in drv // { tests = drv.tests // { pname = "solo5-tests"; }; }; sotest-producer = callPackage ./sotest-producer { }; ssh_client = buildDepotWorld { name = "ssh_client"; portInputs = with genodeSources.ports; [ libc libssh openssl zlib ]; }; stdcxx = callPackage ./stdcxx { }; }