libretro-genode/flake.nix

119 lines
3.8 KiB
Nix

{
description = "A flake for Genode Libretro packages";
edition = 201909;
inputs = {
nixpkgs.uri = "github:ehmry/nixpkgs";
genodepkgs.url = "git+https://gitea.c3d2.de/ehmry/genodepkgs";
};
outputs = { self, nixpkgs, genodepkgs }:
let
submoduleList = import ./submodules.nix;
expandSubmodule = system: name:
let
thisSystem = builtins.getAttr system;
nixpkgs' = thisSystem nixpkgs.legacyPackages;
genodepkgs' = thisSystem genodepkgs.packages;
libretroCommon = with builtins;
let sm = getAttr "libretro-common" (listToAttrs submoduleList);
in nixpkgs'.fetchgit {
inherit (sm) url;
inherit (sm.prefetch) rev sha256 fetchSubmodules;
};
in { smPath, prefetch, url }:
let
value = nixpkgs'.stdenv.mkDerivation {
pname = name;
version = "unstable";
src = self;
smSrc = nixpkgs'.fetchgit {
inherit url;
inherit (prefetch) rev sha256 fetchSubmodules;
};
inherit libretroCommon smPath;
nativeBuildInputs = with nixpkgs'.buildPackages; [ tup pkgconfig ];
buildInputs = with genodepkgs'; [ base os libc stdcxx ];
configurePhase = ''
find . -name Tupfile -delete
mkdir -p libretro-common $smPath
cp -r $libretroCommon/* libretro-common/
cp -r $smSrc/* $smPath
chmod -R +rwX libretro-common/* $smPath/
tup init
tup -d generate tup-builder.sh
#echo builder generated
'';
buildPhase = ''
mkdir -p $out
ln -s $out out
pushd .
set -v
source tup-builder.sh
set +v
popd
'';
dontInstall = true;
};
in { inherit name value; };
expandPackagesList = { system, localSystem, crossSystem }:
map (sm: expandSubmodule system sm.name sm.value) submoduleList;
expandPackages = system: builtins.listToAttrs (expandPackagesList system);
systems = [ "x86_64-genode" ];
in {
packages = nixpkgs.lib.forAllCrossSystems expandPackages;
defaultPackage.x86_64-linux =
self.packages.x86_64-linux-x86_64-genode.retro_frontend;
hydraJobs = self.packages;
/* checks = nixpkgs.lib.forAllCrossSystems ({ system, localSystem, crossSystem }:
let
packages = (builtins.getAttr system genodepkgs.packages)
// (builtins.getAttr system self.packages);
depot = builtins.getAttr system genode-depot.packages;
lib = nixpkgs.lib // genodepkgs.lib;
in import ./checks { inherit system packages depot lib; });
testNova = nixpkgs.lib.forAllCrossSystems
({ system, localSystem, crossSystem }:
let
thisSystem = builtins.getAttr system;
packages = (thisSystem genodepkgs.packages)
// (thisSystem self.packages);
depot = thisSystem genode-depot.packages;
lib = nixpkgs.lib // genodepkgs.lib;
systemLib = thisSystem lib;
in rom@{ ... }:
systemLib.buildNovaIso {
name = "libretro-test-nova";
rom = {
config = systemLib.renderDhallInit ./checks/test.dhall "{=}";
"libc.lib.so" = "${depot.libc}/lib/libc.lib.so";
"libm.lib.so" = "${depot.libc}/lib/libm.lib.so";
"vfs.lib.so" = "${packages.os}/lib/vfs.lib.so";
retro_frontend = packages.retro_frontend
+ "/bin/retro_frontend/retro_frontend";
} // rom;
});
*/
};
}