# SPDX-License-Identifier: CC0-1.0 { nixpkgs }: let inherit (nixpkgs) buildPackages callPackage fetchFromGitHub fetchgit genodeSources stdenv; inherit (genodeSources) buildUpstream; dhallPackages = buildPackages.callPackage ./dhall { }; genodeWorld = fetchFromGitHub { owner = "genodelabs"; repo = "genode-world"; rev = "0ed545e55a90c39df23a86eb733961de71d56241"; hash = "sha256-sirmUtLmZ5YnfLKrOvOBafnZW3UW+1LtkiGu85Ma820="; }; depotWorld = attrs: genodeSources.buildDepot (attrs // { postUnpack = '' cp -r --no-preserve=mode ${genodeWorld} ${genodeSources.name}/repos/world ''; }); makeWorld = attrs: genodeSources.buildUpstream (attrs // { postUnpack = '' cp -r --no-preserve=mode ${genodeWorld} ${genodeSources.name}/repos/world ''; }); genodeTupRules = ./Tuprules.tup; 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); 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 = [ ./genodelabs/cxx-align.patch ]; 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 ''; }; base-linux = buildUpstream { name = "base-linux"; KERNEL = "linux"; targets = [ "core" "timer" "lib/ld" ]; patches = [ ./genodelabs/cxx-align.patch ]; 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 = [ ./genodelabs/cxx-align.patch ]; 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 { }; rom_benchmark = callPackage ./rom_benchmark { }; solo5 = let drv = callPackage ./solo5 { }; in drv // { tests = drv.tests // { pname = "solo5-tests"; }; }; sotest-producer = callPackage ./sotest-producer { }; ssh_client = depotWorld { name = "ssh_client"; portInputs = with genodeSources.ports; [ libc libssh openssl zlib ]; }; stdcxx = callPackage ./stdcxx { }; tftp_rom = genodeSources.buildUpstream { name = "tftp_rom"; postConfigure = let genodeWorld = fetchFromGitHub { owner = "ehmry"; repo = "genode-world"; rev = "tftp_rom"; hash = "sha256-xYjLbGcz49I/AxSaNT3kB4BmaYGxhwxtbw+PZxgAbnQ="; }; in "echo 'REPOSITORIES += ${genodeWorld}' >> $BUILD_DIR/etc/build.conf"; portInputs = with genodeSources.ports; [ lwip ]; targets = [ "server/tftp_rom" ]; }; }