68 lines
2.3 KiB
Nix
68 lines
2.3 KiB
Nix
# SPDX-FileCopyrightText: Emery Hemingway
|
|
#
|
|
# SPDX-License-Identifier: LicenseRef-Hippocratic-1.1
|
|
|
|
{ system, nixpkgs, depot, genode, dhallApps }:
|
|
|
|
let
|
|
toolchainOverlay = import ./toolchain-overlay;
|
|
# Overlay of toolchain patches
|
|
|
|
super = builtins.getAttr system nixpkgs.legacyPackages;
|
|
|
|
inherit (super) callPackage;
|
|
|
|
dhallPackages = super.dhallPackages // (callPackage ./dhall { });
|
|
|
|
genode' = with builtins;
|
|
let
|
|
|
|
mkDhallManifest = drv:
|
|
super.runCommand "${drv.name}.dhall" {
|
|
inherit drv;
|
|
dhall = dhallApps.dhall.program;
|
|
} ''
|
|
echo '{' >> manifest.tmp
|
|
if [ -d $drv/bin ]; then
|
|
echo ', bin = {' >> manifest.tmp
|
|
find $drv/bin/ -type f -printf '%f "%p"\n' \
|
|
| awk '{print ", "gensub(/\..*/, "", 1, $1)" = { mapKey = \""$1"\", mapValue = "$2" }" }'>> manifest.tmp
|
|
echo '}' >> manifest.tmp
|
|
fi
|
|
if [ -d $drv/lib ]; then
|
|
echo ', lib = {' >> manifest.tmp
|
|
find $drv/lib/ -type f -name '*.lib.so' -printf '%f "%p"\n' \
|
|
| awk '{print ", "gensub(/\..*/, "", 1, $1)" = { mapKey = \""$1"\", mapValue = "$2" }" }'>> manifest.tmp
|
|
echo '}' >> manifest.tmp
|
|
fi
|
|
if [ -d $drv/tar ]; then
|
|
echo ', tar = {' >> manifest.tmp
|
|
find $drv/tar/ -type f -name '*.tar' -printf '%f "%p"\n' \
|
|
| awk '{print ""gensub(/\..*/, "", 1, $1)" = { mapKey = \""$1"\", mapValue = "$2" }" }'>> manifest.tmp
|
|
echo '}' >> manifest.tmp
|
|
fi
|
|
echo '}' >> manifest.tmp
|
|
$dhall < manifest.tmp > $out
|
|
'';
|
|
genodeRepoNames = attrNames genode;
|
|
f = name:
|
|
let drv = getAttr name genode;
|
|
in {
|
|
inherit name;
|
|
value = drv // { manifest = mkDhallManifest drv; };
|
|
};
|
|
list = map f genodeRepoNames;
|
|
attrs = listToAttrs list;
|
|
in attrs;
|
|
|
|
in rec {
|
|
inherit (super) stdenv;
|
|
bender = super.buildPackages.callPackage ./pkgs/bender { };
|
|
dhallGenode = dhallPackages.genode;
|
|
dhallPrelude = dhallPackages.prelude;
|
|
libc = callPackage ./pkgs/libc { inherit depot; };
|
|
nic_bus = callPackage ./pkgs/nic_bus { inherit (genode) base os; };
|
|
solo5 = callPackage ./pkgs/solo5 { inherit (genode) base os; };
|
|
stdcxx = callPackage ./pkgs/stdcxx { };
|
|
} // genode'
|