107 lines
2.7 KiB
Nix
107 lines
2.7 KiB
Nix
# SPDX-License-Identifier: CC0-1.0
|
|
|
|
{ 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);
|
|
|
|
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 { };
|
|
|
|
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 { };
|
|
|
|
}
|