Initial commit

This commit is contained in:
Emery Hemingway 2019-11-10 16:48:27 +01:00
commit 77c068cc4a
6 changed files with 771 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
result
result-*

341
config.dhall Normal file
View File

@ -0,0 +1,341 @@
let Genode = env:DHALL_GENODE
in λ ( _
: {}
)
→ Genode.Init::{
, verbose = True
, children =
toMap
{ timer =
Genode.Init.Start::{
, binary = "timer"
, resources = { caps = 96, ram = Genode.units.MiB 1 }
, provides = [ "Timer" ]
}
, report_rom =
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="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" ]
}
, drivers =
Genode.Init.Start::{
, binary = "init"
, constrainPhys = True
, resources = { caps = 3000, ram = Genode.units.MiB 96 }
, provides =
[ "Input", "Framebuffer", "Block", "Usb", "Platform" ]
, routes =
[ Genode.ServiceRoute.parent "IO_MEM"
, Genode.ServiceRoute.parent "IO_PORT"
, Genode.ServiceRoute.parent "IRQ"
, Genode.ServiceRoute.parentLabel
"ROM"
(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")
]
}
, nitpicker =
Genode.Init.Start::{
, binary = "nitpicker"
, resources = { caps = 1000, ram = Genode.units.MiB 6 }
, 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"
]
}
, nit_focus =
Genode.Init.Start::{
, binary = "rom_filter"
, provides = [ "ROM" ]
, config =
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>
''
)
, 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 =
Genode.Init.Start::{
, binary = "pointer"
, resources = { caps = 128, ram = Genode.units.MiB 2 }
, provides = [ "Report" ]
, config =
Some (Genode.Prelude.XML.text "<config shapes=\"yes\"/>")
, routes =
[ Genode.ServiceRoute.child "Nitpicker" "nitpicker"
, Genode.ServiceRoute.childLabel
"ROM"
"report_rom"
(Some "hover")
(None Text)
, Genode.ServiceRoute.childLabel
"ROM"
"report_rom"
(Some "xray")
(None Text)
]
}
, 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>
''
)
, 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" ]
}
}
}

232
drivers.config Normal file
View File

@ -0,0 +1,232 @@
<config prio_levels="2">
<parent-provides>
<service name="ROM"/>
<service name="IRQ"/>
<service name="IO_MEM"/>
<service name="IO_PORT"/>
<service name="PD"/>
<service name="RM"/>
<service name="CPU"/>
<service name="LOG"/>
<service name="Timer"/>
<service name="Report"/>
</parent-provides>
<default-route>
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<default caps="100"/>
<service name="Framebuffer">
<default-policy> <child name="dynamic"/> </default-policy> </service>
<service name="Block">
<default-policy> <child name="dynamic"/> </default-policy> </service>
<service name="Usb">
<default-policy> <child name="usb_drv"/> </default-policy> </service>
<service name="Platform">
<default-policy> <child name="platform_drv"/> </default-policy> </service>
<service name="Input">
<default-policy> <child name="input_filter"/> </default-policy> </service>
<start name="report_rom">
<resource name="RAM" quantum="2M"/>
<provides> <service name="Report"/> <service name="ROM"/> </provides>
<config verbose="no">
<policy label="platform_drv -> acpi" report="acpi_drv -> acpi"/>
<policy label="driver_manager -> pci_devices" report="platform_drv -> pci"/>
<policy label="usb_drv -> config" report="driver_manager -> usb_drv.config"/>
<policy label="driver_manager -> usb_devices" report="usb_drv -> devices"/>
<policy label="dynamic -> config" report="driver_manager -> init.config"/>
<policy label="driver_manager -> ahci_ports" report="dynamic -> ahci_ports"/>
<policy label="driver_manager -> nvme_ns" report="dynamic -> nvme_ns"/>
<policy label="rom_reporter -> acpi" report="acpi_drv -> acpi"/>
<policy label="rom_reporter -> pci_devices" report="platform_drv -> pci"/>
<policy label="rom_reporter -> usb_devices" report="usb_drv -> devices"/>
</config>
</start>
<start name="rom_reporter">
<resource name="RAM" quantum="1M"/>
<config>
<rom label="acpi"/>
<rom label="pci_devices"/>
<rom label="usb_devices"/>
</config>
<route>
<service name="ROM" label="acpi"> <child name="report_rom"/> </service>
<service name="ROM" label="pci_devices"> <child name="report_rom"/> </service>
<service name="ROM" label="usb_devices"> <child name="report_rom"/> </service>
<service name="Report" label="acpi"> <parent label="acpi"/> </service>
<service name="Report" label="pci_devices"> <parent label="pci_devices"/> </service>
<service name="Report" label="usb_devices"> <parent label="usb_devices"/> </service>
<service name="LOG"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="ROM"> <parent/> </service>
</route>
</start>
<start name="acpi_drv" caps="350" priority="-1">
<resource name="RAM" quantum="4M"/>
<route>
<service name="Report" label="acpi"> <child name="report_rom"/> </service>
<service name="Report" label="smbios_table"> <parent label="smbios_table"/> </service>
<service name="IO_MEM"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="RM"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="ROM"> <parent/> </service>
</route>
</start>
<start name="platform_drv" caps="400">
<resource name="RAM" quantum="4M" constrain_phys="yes"/>
<provides>
<service name="Platform"/>
<service name="Acpi"/>
</provides>
<route>
<service name="ROM" label="system"> <parent label="system"/> </service>
<service name="ROM" label="acpi"> <child name="report_rom"/> </service>
<service name="Report" label="pci"> <child name="report_rom"/> </service>
<service name="IRQ"> <parent/> </service>
<service name="IO_MEM"> <parent/> </service>
<service name="IO_PORT"> <parent/> </service>
<service name="ROM"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
</route>
<config system="yes">
<report pci="yes"/>
<policy label_prefix="ps2_drv"> <device name="PS2"/> </policy>
<policy label_prefix="dynamic -> vesa_fb_drv"> <pci class="VGA"/> </policy>
<policy label_prefix="dynamic -> ahci_drv"> <pci class="AHCI"/> </policy>
<policy label_prefix="dynamic -> nvme_drv"> <pci class="NVME"/> </policy>
<policy label_prefix="usb_drv"> <pci class="USB"/> </policy>
<policy label_prefix="dynamic -> intel_fb_drv">
<pci class="VGA"/>
<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>
<start name="usb_drv" caps="200" priority="-1">
<resource name="RAM" quantum="16M"/>
<provides> <service name="Input"/> <service name="Usb"/> </provides>
<route>
<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>
<service name="PD"> <parent/> </service>
<service name="RM"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
</route>
</start>
<start name="ps2_drv" priority="0">
<resource name="RAM" quantum="1M"/>
<provides> <service name="Input"/> </provides>
<route>
<service name="Platform"> <child name="platform_drv"/> </service>
<service name="ROM"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
</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>
<service name="PD"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="LOG"> <parent/> </service>
<service name="Timer"> <parent/> </service>
</route>
</start>
<start name="driver_manager" priority="-1">
<resource name="RAM" quantum="1M"/>
<route>
<service name="Report" label="init.config"> <child name="report_rom"/> </service>
<service name="Report" label="usb_drv.config"> <child name="report_rom"/> </service>
<service name="Report" label="block_devices"> <parent label="block_devices"/> </service>
<service name="ROM" label="usb_devices"> <child name="report_rom"/> </service>
<service name="ROM" label="pci_devices"> <child name="report_rom"/> </service>
<service name="ROM" label="ahci_ports"> <child name="report_rom"/> </service>
<service name="ROM" label="nvme_ns"> <child name="report_rom"/> </service>
<service name="ROM" label="usb_policy"> <parent label="usb_policy"/> </service>
<service name="LOG"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="ROM"> <parent/> </service>
</route>
</start>
<start name="dynamic" caps="1400" priority="0">
<binary name="init"/>
<resource name="RAM" quantum="1G"/>
<provides>
<service name="Framebuffer"/>
<service name="Block"/>
</provides>
<route>
<service name="Platform"> <child name="platform_drv"/> </service>
<service name="Report" label="ahci_ports"> <child name="report_rom"/> </service>
<service name="Report" label="nvme_ns"> <child name="report_rom"/> </service>
<service name="Report"> <parent/> </service>
<service name="Usb"> <child name="usb_drv"/> </service>
<service name="ROM" label="config"> <child name="report_rom"/> </service>
<service name="LOG"> <parent/> </service>
<service name="PD"> <parent/> </service>
<service name="RM"> <parent/> </service>
<service name="CPU"> <parent/> </service>
<service name="ROM"> <parent/> </service>
<service name="IO_MEM"> <parent/> </service>
<service name="IO_PORT"> <parent/> </service>
<service name="Timer"> <parent/> </service>
</route>
</start>
</config>

75
flake.lock Normal file
View File

@ -0,0 +1,75 @@
{
"inputs": {
"dhall-haskell": {
"inputs": {
"nixpkgs": {
"inputs": {},
"narHash": "sha256-wJg4DA700SoQbEz61448sR6BgxRa1R92K3vvCV1g+HY=",
"originalUrl": "git+https://github.com/nixos/nixpkgs.git?ref=18.09-beta&rev=1d4de0d552ae9aa66a5b8dee5fb0650a4372d148",
"url": "git+https://github.com/nixos/nixpkgs.git?ref=18.09-beta&rev=1d4de0d552ae9aa66a5b8dee5fb0650a4372d148"
},
"nixpkgsStaticLinux": {
"inputs": {},
"narHash": "sha256-famU3pJZ4vkElV9qc71HmyRVSvcrAhfMZ0UJKpmmKP8=",
"originalUrl": "git+https://github.com/nh2/nixpkgs.git?ref=static-haskell-nix-stack-dhall-working",
"url": "git+https://github.com/nh2/nixpkgs.git?ref=static-haskell-nix-stack-dhall-working&rev=925aac04f4ca58aceb83beef18cb7dae0715421b"
}
},
"narHash": "sha256-NGbS2bymVuCQcanlBO41I6ZjSAZSLXhACK3qQU25zUs=",
"originalUrl": "git+https://github.com/dhall-lang/dhall-haskell?ref=flake",
"url": "git+https://github.com/dhall-lang/dhall-haskell?ref=flake&rev=256810cd5adf1ae5862eed0ffdaab4cf49f6fe67"
},
"genode-depot": {
"inputs": {
"nixpkgs": {
"inputs": {},
"narHash": "sha256-Y5ZOTgInrYYoas3vM8uTPLA2DvFI9YoI6haftIKl9go=",
"originalUrl": "nixpkgs",
"url": "github:edolstra/nixpkgs/015c9ec3372e328ea6742b409a1e9aa26dab2b31"
}
},
"narHash": "sha256-bCKZSw8cBTJf5EPSXzuKPTaM8EAFXez27BCMZn+rUk0=",
"originalUrl": "genode-depot",
"url": "git+file:///home/repo/genode-depot?ref=master&rev=b9119fccb3114829900ae75886d3b5edb54bbd7f"
},
"genodepkgs": {
"inputs": {
"dhall-haskell": {
"inputs": {
"nixpkgs": {
"inputs": {},
"narHash": "sha256-wJg4DA700SoQbEz61448sR6BgxRa1R92K3vvCV1g+HY=",
"originalUrl": "git+https://github.com/nixos/nixpkgs.git?ref=18.09-beta&rev=1d4de0d552ae9aa66a5b8dee5fb0650a4372d148",
"url": "git+https://github.com/nixos/nixpkgs.git?ref=18.09-beta&rev=1d4de0d552ae9aa66a5b8dee5fb0650a4372d148"
},
"nixpkgsStaticLinux": {
"inputs": {},
"narHash": "sha256-famU3pJZ4vkElV9qc71HmyRVSvcrAhfMZ0UJKpmmKP8=",
"originalUrl": "git+https://github.com/nh2/nixpkgs.git?ref=static-haskell-nix-stack-dhall-working",
"url": "git+https://github.com/nh2/nixpkgs.git?ref=static-haskell-nix-stack-dhall-working&rev=925aac04f4ca58aceb83beef18cb7dae0715421b"
}
},
"narHash": "sha256-NGbS2bymVuCQcanlBO41I6ZjSAZSLXhACK3qQU25zUs=",
"originalUrl": "git+https://github.com/dhall-lang/dhall-haskell?ref=flake",
"url": "git+https://github.com/dhall-lang/dhall-haskell?ref=flake&rev=256810cd5adf1ae5862eed0ffdaab4cf49f6fe67"
},
"nixpkgs": {
"inputs": {},
"narHash": "sha256-1pvSqpPbcREIGI7BF6A29b81bH/dZvywTPwYhrMaRa0=",
"originalUrl": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git",
"url": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=master&rev=ff59349d99ff0ff2496e85278c596df3a14ef3ec"
}
},
"narHash": "sha256-QTWywbGQT7FK6EpcbLicI3zrjNBc5f/6zp9OPMc8soI=",
"originalUrl": "git+file:///home/repo/genodepkgs?ref=flake",
"url": "git+file:///home/repo/genodepkgs?ref=flake&rev=347b52e1b1484e3e812db9bc6279d2a22ab5aa18"
},
"nixpkgs": {
"inputs": {},
"narHash": "sha256-1pvSqpPbcREIGI7BF6A29b81bH/dZvywTPwYhrMaRa0=",
"originalUrl": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git",
"url": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=master&rev=ff59349d99ff0ff2496e85278c596df3a14ef3ec"
}
},
"version": 3
}

93
flake.nix Normal file
View File

@ -0,0 +1,93 @@
{
edition = 201909;
description = "Genode desktop varaint";
inputs = {
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";
};
outputs = { self, genodepkgs, nixpkgs, dhall-haskell, genode-depot }:
let
lib = import (genodepkgs + "/lib") {
inherit genodepkgs nixpkgs dhall-haskell;
};
in {
packages.x86_64-genode.iso = with genodepkgs.packages.x86_64-genode;
lib.x86_64-genode.buildNovaIso {
name = "schlitzohr";
rom = let
upstream = genode-base.src.src;
depot = genode-depot.packages.x86_64-genode;
in {
config = lib.renderDhallInit ./config.dhall "{=}";
acpi_drv = "${genode-os}/bin/acpi_drv";
ahci_drv = "${genode-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" =
"${upstream}/repos/gems/run/sculpt/empty_runtime.config";
"en_us.chargen" =
"${upstream}/repos/os/src/server/input_filter/en_us.chargen";
"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";
usb_drv = "${depot.usb_drv}/bin/usb_drv";
vfs = "${genode-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>
'';
};
};
defaultPackage = self.packages.x86_64-genode.iso;
};
}

28
nitpicker.config Normal file
View File

@ -0,0 +1,28 @@
<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>