Emery Hemingway
2afd2d08cc
Require that all init children declared by Nix be declared with an absolute path to the program binary.
50 lines
1.3 KiB
Nix
50 lines
1.3 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
with lib;
|
|
|
|
{
|
|
options.hardware.genode.framebuffer = {
|
|
enable = lib.mkEnableOption "framebuffer driver";
|
|
driver = mkOption {
|
|
type = types.enum [ "boot" "vesa" ];
|
|
default = "vesa";
|
|
};
|
|
};
|
|
|
|
config = {
|
|
|
|
genode.core.children.fb_drv =
|
|
mkIf config.hardware.genode.framebuffer.enable {
|
|
binary = with pkgs.genodePackages;
|
|
{
|
|
boot = boot_fb_drv;
|
|
vesa = vesa_drv;
|
|
}.${config.hardware.genode.framebuffer.driver};
|
|
configFile = let
|
|
binary = with pkgs.genodePackages;
|
|
{
|
|
boot = "${boot_fb_drv}/bin/boot_fb_drv";
|
|
vesa = "${vesa_drv}/bin/vesa_fb_drv";
|
|
}.${config.hardware.genode.framebuffer.driver};
|
|
in builtins.toFile "fb_drv.dhall" ''
|
|
let Genode = env:DHALL_GENODE
|
|
|
|
let Init = Genode.Init
|
|
|
|
in λ(binary : Text) →
|
|
Init.Child.flat
|
|
Init.Child.Attributes::{
|
|
, binary
|
|
, resources = Init.Resources::{ caps = 256, ram = Genode.units.MiB 32 }
|
|
, routes =
|
|
[ Init.ServiceRoute.parent "IO_MEM"
|
|
, Init.ServiceRoute.parent "IO_PORT"
|
|
]
|
|
}
|
|
'';
|
|
};
|
|
|
|
};
|
|
|
|
}
|