genode-oberon/flake.nix

51 lines
1.7 KiB
Nix
Raw Permalink Normal View History

2019-11-10 16:48:27 +01:00
{
edition = 201909;
2020-01-24 19:13:33 +01:00
description = "Oberon RISC machine, emulated for x86_64";
2019-11-10 16:48:27 +01:00
inputs = {
2019-11-22 18:54:56 +01:00
dhall-haskell.uri =
"git+https://github.com/dhall-lang/dhall-haskell?ref=flake";
2019-11-21 00:47:44 +01:00
genode-depot.uri = "git+https://gitea.c3d2.de/ehmry/genode-depot.git";
2020-01-24 19:13:33 +01:00
genodepkgs.url = "git+https://git.sr.ht/~ehmry/genodepkgs";
2019-11-24 16:58:19 +01:00
libretro-genode.uri = "git+https://gitea.c3d2.de/ehmry/libretro-genode";
2019-11-10 16:48:27 +01:00
};
2019-11-21 00:47:44 +01:00
outputs =
2020-01-24 19:13:33 +01:00
{ self, genodepkgs, dhall-haskell, genode-depot, libretro-genode, nixpkgs }:
2019-11-10 16:48:27 +01:00
let
2020-01-24 19:13:33 +01:00
mkOutput = { system, localSystem, crossSystem }:
2019-11-22 18:54:56 +01:00
2020-01-24 19:13:33 +01:00
let
thisSystem = builtins.getAttr system;
mergeManifests = manifests:
nixpkgs.legacyPackages.${localSystem}.writeTextFile {
name = "manifest.dhall";
text = with builtins;
let f = head: input: "${head},${input.pname}=${input.manifest}";
in (foldl' f "{" manifests) + "}";
};
in {
defaultPackage.${system} = with thisSystem genodepkgs.packages;
genodepkgs.apps.${system}.nova-iso.function {
MANIFEST = mergeManifests ((with genodepkgs.packages.${system}; [
genode.base-nova
genode.os
genode.gems
]) ++ (with genode-depot.packages.${system}; [ driver_manager usb_drv intel_fb_drv boot_fb_drv vesa_drv ]));
} ./boot.dhall;
2019-11-10 16:48:27 +01:00
};
2020-01-24 19:13:33 +01:00
crossOutput = mkOutput {
localSystem = "x86_64-linux";
crossSystem = "x86_64-genode";
system = "x86_64-linux-x86_64-genode";
};
2019-11-10 16:48:27 +01:00
2020-01-24 19:13:33 +01:00
in crossOutput // {
defaultPackage.x86_64-linux =
crossOutput.defaultPackage.x86_64-linux-x86_64-genode;
2019-11-10 16:48:27 +01:00
};
2020-01-24 19:13:33 +01:00
2019-11-10 16:48:27 +01:00
}