This commit is contained in:
Ehmry - 2019-11-21 00:47:44 +01:00
parent 77c068cc4a
commit 1f8e5a6071
5 changed files with 93 additions and 360 deletions

View File

@ -19,151 +19,7 @@ in λ ( _
, resources = { caps = 96, ram = Genode.units.MiB 1 }
, provides = [ "ROM", "Report" ]
, config =
Some
( Genode.Prelude.XML.text
''
<config verbose="no">
<policy label="leitzentrale_config -> leitzentrale"
report="global_keys_handler -> leitzentrale"/>
<policy label="leitzentrale -> manager -> nitpicker_hover"
report="nitpicker -> hover"/>
<policy label="pointer -> hover" report="nitpicker -> hover"/>
<policy label="pointer -> xray"
report="global_keys_handler -> leitzentrale"/>
<policy label="pointer -> shape" report="shape"/>
<policy label="clipboard -> focus" report="nitpicker -> focus"/>
<policy label="capslock" report="global_keys_handler -> capslock"/>
<policy label="numlock" report="global_keys_handler -> numlock"/>
<policy label="runtime -> clicked" report="nitpicker -> clicked"/>
<policy label="nit_focus -> leitzentrale"
report="global_keys_handler -> leitzentrale"/>
<policy label="nit_focus -> hover" report="nitpicker -> hover"/>
<policy label="leitzentrale -> manager -> displays"
report="nitpicker -> displays"/>
<policy label="runtime -> runtime_view -> dialog"
report="leitzentrale -> manager -> runtime_view_dialog"/>
<policy label="leitzentrale -> manager -> runtime_view_hover"
report="runtime -> runtime_view -> hover"/>
</config>
''
)
}
, report_logger =
Genode.Init.Start::{
, binary = "report_rom"
, resources = { caps = 96, ram = Genode.units.MiB 1 }
, provides = [ "ROM", "Report" ]
, config =
Some (Genode.Prelude.XML.text "<config verbose=\"yes\"/>")
}
, config_fs =
Genode.Init.Start::{
, binary = "vfs"
, resources = { caps = 128, ram = Genode.units.MiB 12 }
, provides = [ "File_system" ]
, config =
Some
( Genode.Prelude.XML.text
''
<config>
<vfs>
<ram/>
<import>
<dir name="managed">
<rom name="fonts" label="fonts.config"/>
<rom name="fb_drv" label="fb_drv.config"/>
<rom name="wifi" label="wifi.config"/>
<rom name="installation"/>
<rom name="runtime" label="empty_runtime.config"/>
<rom name="input_filter" label="input_filter.config"/>
<inline name="depot_query"><query/></inline>
</dir>
<rom name="input_filter" label="input_filter.config"/>
<rom name="fb_drv" label="fb_drv.config"/>
<rom name="nitpicker" label="nitpicker.config"/>
<rom name="numlock_remap" label="numlock_remap.config"/>
<rom name="leitzentrale" label="leitzentrale.config"/>
<rom name="drivers" label="drivers.config"/>
<rom name="deploy" label="manual_deploy.config"/>
<rom name="usb" label="usb.config"/>
<rom name="clipboard" label="clipboard.config"/>
<rom name="en_us.chargen"/>
<rom name="special.chargen"/>
<inline name="system">} [config_system_content] {
</inline>
</import>
</vfs>
<policy label="config_fs_rom -> " root="/" />
<policy label="rw" root="/" writeable="yes" />
</config>
''
)
}
, config_fs_rom =
Genode.Init.Start::{
, binary = "fs_rom"
, resources = { caps = 128, ram = Genode.units.MiB 10 }
, provides = [ "ROM" ]
, routes =
[ Genode.ServiceRoute.child "File_system" "config_fs" ]
}
, report_fs_rom =
Genode.Init.Start::{
, binary = "fs_rom"
, resources = { caps = 128, ram = Genode.units.MiB 3 }
, provides = [ "ROM" ]
, routes =
[ Genode.ServiceRoute.child "File_system" "report_fs" ]
}
, report_fs =
Genode.Init.Start::{
, binary = "ram_fs"
, resources = { caps = 128, ram = Genode.units.MiB 16 }
, provides = [ "File_system" ]
, config =
Some
( Genode.Prelude.XML.text
''
<config>
<content>
<inline name="log">### start ###</inline>
<dir name="runtime">
<inline name="state"><empty/></inline>
<dir name="wifi_drv">
<inline name="accesspoints"><empty/></inline>
<inline name="state"> <empty/></inline>
</dir>
<dir name="nic_router">
<inline name="state"><empty/></inline> </dir>
<dir name="update">
<inline name="state"><empty/></inline> </dir>
<dir name="depot_query">
<inline name="blueprint"><empty/></inline> </dir>
</dir>
</content>
<policy label="fs_report -> "
root="/" writeable="yes"/>
<policy label="log_terminal -> "
root="/" writeable="yes"/>
<policy label="report_fs_rom -> "
root="/"/>
<policy label="ro"
root="/"/>
</config>
''
)
}
, fs_report =
Genode.Init.Start::{
, binary = "fs_report"
, provides = [ "Report" ]
, config =
Some
( Genode.Prelude.XML.text
"<config> <vfs> <fs/> </vfs> </config>"
)
, routes =
[ Genode.ServiceRoute.child "File_system" "report_fs" ]
Some (Genode.Prelude.XML.text "<config verbose=\"no\"/>")
}
, drivers =
Genode.Init.Start::{
@ -181,22 +37,7 @@ in λ ( _
(Some "config")
(Some "drivers.config")
, Genode.ServiceRoute.child "Timer" "timer"
, Genode.ServiceRoute.child "Report" "fs_report"
, Genode.ServiceRoute.childLabel
"ROM"
"config_fs_rom"
(Some "usb_policy")
(Some "usb_policy")
, Genode.ServiceRoute.childLabel
"ROM"
"report_rom"
(Some "capslock")
(Some "capslock")
, Genode.ServiceRoute.childLabel
"ROM"
"report_rom"
(Some "numlock")
(Some "numlock")
, Genode.ServiceRoute.child "Report" "report_rom"
]
}
, nitpicker =
@ -206,25 +47,26 @@ in λ ( _
, provides = [ "Nitpicker" ]
, routes =
[ Genode.ServiceRoute.childLabel
"ROM"
"config_fs_rom"
(Some "config")
(Some "nitpicker")
, Genode.ServiceRoute.childLabel
"ROM"
"nit_focus"
(Some "focus")
(Some "focus")
, Genode.ServiceRoute.childLabel
"Report"
"report_logger"
(Some "keystate")
(Some "keystate")
, Genode.ServiceRoute.child "Report" "report_rom"
, Genode.ServiceRoute.child "Framebuffer" "drivers"
, Genode.ServiceRoute.child "Input" "drivers"
, Genode.ServiceRoute.child "Timer" "timer"
]
, config =
Some
( Genode.Prelude.XML.text
''
<config focus="rom">
<background color="#000000"/>
<domain name="default" layer="0" content="client" label="no" hover="always" focus="click" />
<default-policy domain="default"/>
</config>
''
)
}
, nit_focus =
Genode.Init.Start::{
@ -234,108 +76,43 @@ in λ ( _
Some
( Genode.Prelude.XML.text
''
<config>
<input name="lockscreen_enabled" rom="hover" node="hover">
<attribute name="label" /> </input>
<input name="leitzentrale_enabled" rom="leitzentrale" node="leitzentrale">
<attribute name="enabled" /> </input>
<output node="focus">
<if>
<has_value input="lockscreen_enabled" value="lock_screen" />
<then>
<attribute name="label" value="lock_screen"/>
</then>
<else>
<if>
<has_value input="leitzentrale_enabled" value="yes" />
<then>
<attribute name="label" value="leitzentrale -> manager -> fader -> "/>
</then>
<else>
<attribute name="label" value="runtime -> focus"/>
</else>
</if>
</else>
</if>
</output>
</config>
''
<config>
<output node="focus">
<attribute name="label" value="oberon"/>
</output>
</config>
''
)
, routes =
[ Genode.ServiceRoute.childLabel
"ROM"
"report_rom"
(Some "hover")
(None Text)
, Genode.ServiceRoute.childLabel
"ROM"
"report_rom"
(Some "leitzentrale")
(None Text)
, Genode.ServiceRoute.childLabel
"ROM"
"report_rom"
(Some "slides")
(None Text)
]
}
, pointer =
, oberon =
Genode.Init.Start::{
, binary = "pointer"
, resources = { caps = 128, ram = Genode.units.MiB 2 }
, provides = [ "Report" ]
, config =
Some (Genode.Prelude.XML.text "<config shapes=\"yes\"/>")
, binary = "retro_frontend"
, resources = { caps = 256, ram = Genode.units.MiB 32 }
, routes =
[ Genode.ServiceRoute.child "Nitpicker" "nitpicker"
, Genode.ServiceRoute.childLabel
, Genode.ServiceRoute.child "Timer" "timer"
, Genode.ServiceRoute.parentLabel
"ROM"
"report_rom"
(Some "hover")
(None Text)
, Genode.ServiceRoute.childLabel
"ROM"
"report_rom"
(Some "xray")
(None Text)
(Some "")
(Some "retro_frontend")
]
}
, global_keys_handler =
Genode.Init.Start::{
, binary = "global_keys_handler"
, config =
Some
( Genode.Prelude.XML.text
''
<config>
<bool name="leitzentrale" initial="yes"/>
<bool name="capslock" initial="no"/>
<bool name="numlock" initial="no"/>
<bool name="slides" initial="no"/>
<press name="KEY_PRESENTATION" bool="slides" change="toggle"/>
<press name="KEY_DASHBOARD" bool="leitzentrale" change="toggle"/>
<press name="KEY_CAPSLOCK" bool="capslock" change="toggle"/>
<press name="KEY_NUMLOCK" bool="numlock" change="toggle"/>
<report name="leitzentrale"> <bool name="leitzentrale"/> </report>
<report name="capslock"> <bool name="capslock"/> </report>
<report name="numlock"> <bool name="numlock"/> </report>
<report name="slides"> <bool name="slides"/> </report>
<config ld_verbose="yes">
<libc stdout="/dev/log" stderr="/dev/log"/>
<defaultController port="0" device="3"/>
<game path="/Oberon.dsk"/>
<vfs>
<rom name="Oberon.dsk"/>
<dir name="dev">
<log label="core"/>
</dir>
</vfs>
</config>
''
)
, routes =
[ Genode.ServiceRoute.child "Report" "report_rom"
, Genode.ServiceRoute.child "Nitpicker" "nitpicker"
, Genode.ServiceRoute.child "Timer" "timer"
]
}
, rtc_drv =
Genode.Init.Start::{
, binary = "rtc_drv"
, provides = [ "Rtc" ]
, routes = [ Genode.ServiceRoute.parent "IO_PORT" ]
}
}
}

View File

@ -117,9 +117,6 @@
<pci bus="0" device="0" function="0"/>
<pci class="ISABRIDGE"/>
</policy>
<policy label_suffix="-> wifi"> <pci class="WIFI"/> </policy>
<policy label_suffix="-> nic"> <pci class="ETHERNET"/> </policy>
<policy label_suffix="-> audio"> <pci class="AUDIO"/> <pci class="HDAUDIO"/> </policy>
<policy label="acpica"> </policy>
</config>
</start>
@ -131,8 +128,6 @@
<service name="Platform"> <child name="platform_drv"/> </service>
<service name="ROM" label="config">
<child name="report_rom"/> </service>
<service name="ROM" label="capslock"> <parent label="capslock"/> </service>
<service name="ROM" label="numlock"> <parent label="numlock"/> </service>
<service name="Report" label="devices"> <child name="report_rom"/> </service>
<service name="Report" label="config"> <parent label="usb_active_config"/> </service>
<service name="ROM"> <parent/> </service>
@ -157,25 +152,11 @@
</route>
</start>
<!-- toggle key mappings depending on the numlock state -->
<start name="numlock_remap_rom" priority="-1">
<binary name="rom_filter"/>
<resource name="RAM" quantum="1M"/>
<provides> <service name="ROM"/> </provides>
<route>
<service name="ROM" label="config"> <parent label="numlock_remap.config"/> </service>
<service name="ROM" label="numlock"> <parent label="numlock"/> </service>
<any-service> <parent/> </any-service>
</route>
</start>
<start name="input_filter" caps="90" priority="-1">
<resource name="RAM" quantum="2M"/>
<provides> <service name="Input"/> </provides>
<route>
<service name="ROM" label="config"> <parent label="input_filter.config"/> </service>
<service name="ROM" label="numlock.remap"> <child name="numlock_remap_rom"/> </service>
<service name="ROM" label="capslock"> <parent label="capslock"/> </service>
<service name="Input" label="ps2"> <child name="ps2_drv"/> </service>
<service name="Input" label="usb"> <child name="usb_drv"/> </service>
<service name="ROM"> <parent/> </service>

View File

@ -4,32 +4,45 @@
description = "Genode desktop varaint";
inputs = {
dhall-haskell.uri = "git+https://github.com/dhall-lang/dhall-haskell?ref=flake";
genode-depot.uri = "git+https://gitea.c3d2.de/ehmry/genode-depot.git";
genodepkgs.url = "git+file:///home/repo/genodepkgs?ref=flake";
nixpkgs.uri = "git+https://gitea.c3d2.de/ehmry/nixpkgs.git";
dhall-haskell.uri =
"git+https://github.com/dhall-lang/dhall-haskell?ref=flake";
libretro-genode.uri = "git+file:///home/repo/libretro-genode";
nixpkgs.uri = "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genode";
};
outputs = { self, genodepkgs, nixpkgs, dhall-haskell, genode-depot }:
outputs =
{ self, genodepkgs, nixpkgs, dhall-haskell, genode-depot, libretro-genode }:
let
lib = import (genodepkgs + "/lib") {
inherit genodepkgs nixpkgs dhall-haskell;
inherit genodepkgs nixpkgs dhall-haskell genode-depot;
};
dummyXml = builtins.toFile "empty.xml" "<empty/>";
# Hack to break off the stupid "capslock" shit
in {
packages.x86_64-genode.iso = with genodepkgs.packages.x86_64-genode;
lib.x86_64-genode.buildNovaIso {
name = "schlitzohr";
name = "oberon";
rom = let
upstream = genode-base.src.src;
upstream = base.src;
depot = genode-depot.packages.x86_64-genode;
libretro = libretro-genode.packages.x86_64-genode;
in {
config = lib.renderDhallInit ./config.dhall "{=}";
acpi_drv = "${genode-os}/bin/acpi_drv";
ahci_drv = "${genode-os}/bin/ahci_drv";
"Oberon.dsk" =
"${libretro.oberon.smSrc}/DiskImage/Oberon-2019-01-21.dsk";
"libm.lib.so" = "${depot.libc}/lib/libm.lib.so";
"libc.lib.so" = "${depot.libc}/lib/libc.lib.so";
"libretro.so" =
./libretro.so;
# "${libretro.oberon}/bin/oberon/libretro.so";
retro_frontend =
./retro_frontend;
# "${libretro.retro_frontend}/bin/retro_frontend/retro_frontend";
acpi_drv = "${os}/bin/acpi_drv";
ahci_drv = "${os}/bin/ahci_drv";
vesa_fb_drv = "${depot.vesa_drv}/bin/vesa_fb_drv";
"clipboard.config" =
"${upstream}/repos/gems/run/sculpt/clipboard.config";
driver_manager = "${depot.driver_manager}/bin/driver_manager";
"drivers.config" = ./drivers.config;
"empty_runtime.config" =
@ -39,51 +52,28 @@
"fb_drv.config" =
"${upstream}/repos/os/recipes/raw/drivers_interactive-pc/fb_drv.config";
"fonts.config" = "${upstream}/repos/gems/run/sculpt/fonts.config";
fs_report = "${genode-os}/bin/fs_report";
fs_rom = "${genode-os}/bin/fs_rom";
global_keys_handler = "${genode-os}/bin/global_keys_handler";
"input_filter.config" =
"${upstream}/repos/os/recipes/raw/drivers_interactive-pc/input_filter.config";
input_filter = "${genode-os}/bin/input_filter";
"installation" =
builtins.toFile "installation" ''<installation arch="x86_64"/>'';
"leitzentrale.config" =
"${upstream}/repos/gems/run/sculpt/leitzentrale.config";
log_core = "${genode-os}/bin/log_core";
"nitpicker.config" = ./nitpicker.config;
nitpicker = "${genode-os}/bin/nitpicker";
"numlock_remap.config" =
"${upstream}/repos/gems/recipes/raw/drivers_managed-pc/numlock_remap.config";
platform_drv = "${genode-os}/bin/platform_drv";
pointer = "${genode-os}/bin/pointer";
ps2_drv = "${genode-os}/bin/ps2_drv";
ram_fs = "${genode-os}/bin/ram_fs";
report_rom = "${genode-os}/bin/report_rom";
rom_filter = "${genode-os}/bin/rom_filter";
rom_reporter = "${genode-os}/bin/rom_reporter";
rtc_drv = "${genode-os}/bin/rtc_drv";
"special.chargen" =
"${upstream}/repos/os/src/server/input_filter/special.chargen";
terminal_log = "${genode-os}/bin/terminal_log";
"usb.config" = "${upstream}/repos/gems/run/sculpt/usb.config";
fs_report = "${os}/bin/fs_report";
fs_rom = "${os}/bin/fs_rom";
"input_filter.config" = ./input_filter.config;
input_filter = "${os}/bin/input_filter";
log_core = "${os}/bin/log_core";
nitpicker = "${os}/bin/nitpicker";
platform_drv = "${os}/bin/platform_drv";
pointer = "${os}/bin/pointer";
ps2_drv = "${os}/bin/ps2_drv";
ram_fs = "${os}/bin/ram_fs";
report_rom = "${os}/bin/report_rom";
rom_filter = "${os}/bin/rom_filter";
rom_reporter = "${os}/bin/rom_reporter";
terminal_log = "${os}/bin/terminal_log";
usb_drv = "${depot.usb_drv}/bin/usb_drv";
vfs = "${genode-os}/bin/vfs";
vfs = "${os}/bin/vfs";
"vfs_import.lib.so" = "${depot.vfs_import}/lib/vfs_import.lib.so";
"vfs.lib.so" = "${genode-os}/lib/vfs.lib.so";
"wifi.config" = "${upstream}/repos/gems/run/sculpt/wifi.config";
"manual_deploy.config" = builtins.toFile "manual_deploy.config" ''
<config arch="x86_64">
<common_routes>
<service name="ROM" label_last="ld.lib.so"> <parent/> </service>
<service name="ROM" label_last="vfs.lib.so"> <parent/> </service>
<service name="ROM" label_last="init"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
</common_routes>
</config>
'';
"vfs.lib.so" = "${os}/lib/vfs.lib.so";
capslock = dummyXml;
numlock = dummyXml;
usb_policy = dummyXml;
"usb.config" = dummyXml;
};
};

13
input_filter.config Normal file
View File

@ -0,0 +1,13 @@
<config>
<input label="ps2"/>
<input label="usb"/>
<output>
<chargen>
<merge>
<input name="ps2"/>
<input name="usb"/>
</merge>
<repeat delay_ms="230" rate_ms="90"/>
</chargen>
</output>
</config>

View File

@ -1,28 +0,0 @@
<config focus="rom">
<report hover="yes" focus="yes" clicked="yes" keystate="no" displays="yes"/>
<background color="#131415"/>
<domain name="pointer" layer="1" content="client" label="no" origin="pointer" />
<domain name="lock" layer="2" content="client" label="no" hover="always" focus="click"/>
<domain name="leitzentrale" layer="3" content="client" label="no" hover="always" focus="click" />
<domain name="default" layer="5" color="#052944" hover="always" focus="click" />
<domain name="decorator" layer="5" content="client" label="no" hover="always" focus="transient" />
<domain name="desktop" layer="5" content="client" label="no" hover="always" focus="click" />
<domain name="background" layer="6" content="client" label="no" hover="always" focus="transient" />
<policy label_suffix="-> decorator" domain="decorator"/>
<policy label_prefix="runtime -> wm" domain="desktop"/>
<policy label_prefix="runtime -> themed_wm" domain="desktop"/>
<policy label="lock_screen" domain="lock"/>
<policy label_prefix="pointer" domain="pointer"/>
<policy label_prefix="leitzentrale -> " domain="leitzentrale"/>
<policy label="backdrop" domain="background"/>
<default-policy domain="default"/>
<global-key name="KEY_RESTART" label="global_keys_handler -> input" />
<global-key name="KEY_DASHBOARD" label="global_keys_handler -> input" />
<global-key name="KEY_CAPSLOCK" label="global_keys_handler -> input" />
<global-key name="KEY_NUMLOCK" label="global_keys_handler -> input" />
<global-key name="KEY_SCREEN" label="runtime -> wm -> wm -> decorator" />
<global-key name="KEY_SCREEN" label="runtime -> themed_wm -> wm -> decorator" />
</config>