Update dhall-sigil for consume, produceReports
This commit is contained in:
parent
aeb62ed985
commit
f1759589ad
|
@ -1,246 +0,0 @@
|
||||||
|
|
||||||
let Sigil = env:DHALL_SIGIL
|
|
||||||
|
|
||||||
let Prelude = Sigil.Prelude
|
|
||||||
|
|
||||||
let XML = Prelude.XML
|
|
||||||
|
|
||||||
let Init = Sigil.Init
|
|
||||||
|
|
||||||
let Child = Init.Child
|
|
||||||
|
|
||||||
let Resources = Init.Resources
|
|
||||||
|
|
||||||
let ServiceRoute = Init.ServiceRoute
|
|
||||||
|
|
||||||
let label =
|
|
||||||
λ(label : Text)
|
|
||||||
→ { local = label, route = label } : Child.Attributes.Label
|
|
||||||
|
|
||||||
let relabel =
|
|
||||||
λ(local : Text)
|
|
||||||
→ λ(route : Text)
|
|
||||||
→ { local = local, route = route } : Child.Attributes.Label
|
|
||||||
|
|
||||||
let drivers =
|
|
||||||
Init::{
|
|
||||||
, routes = [ ServiceRoute.parent "Timer" ]
|
|
||||||
, services =
|
|
||||||
[ ServiceRoute.child "Framebuffer" "dynamic"
|
|
||||||
, ServiceRoute.child "Block" "dynamic"
|
|
||||||
, ServiceRoute.child "Usb" "usb_drv"
|
|
||||||
, ServiceRoute.child "Platform" "platform_drv"
|
|
||||||
, ServiceRoute.child "Input" "event_filter"
|
|
||||||
]
|
|
||||||
, children = toMap
|
|
||||||
{ rom_reporter =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "rom_reporter"
|
|
||||||
, config = Init.Config::{
|
|
||||||
, content =
|
|
||||||
[ XML.text
|
|
||||||
''
|
|
||||||
<rom label="acpi"/>
|
|
||||||
<rom label="pci_devices"/>
|
|
||||||
<rom label="usb_devices"/>
|
|
||||||
''
|
|
||||||
]
|
|
||||||
}
|
|
||||||
, reportRoms =
|
|
||||||
[ label "acpi", label "pci_devices", label "usb_devices" ]
|
|
||||||
, routes =
|
|
||||||
let routeReportToParent =
|
|
||||||
λ(label : Text)
|
|
||||||
→ ServiceRoute.parentLabel
|
|
||||||
"Report"
|
|
||||||
(Some label)
|
|
||||||
(Some label)
|
|
||||||
|
|
||||||
in [ routeReportToParent "acpi"
|
|
||||||
, routeReportToParent "pci_devices"
|
|
||||||
, routeReportToParent "usb_devices"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
, acpi_drv =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "acpi_drv"
|
|
||||||
, priority = 1
|
|
||||||
, resources = Resources::{
|
|
||||||
, caps = 350
|
|
||||||
, ram = Sigil.units.MiB 4
|
|
||||||
}
|
|
||||||
, romReports = [ label "acpi" ]
|
|
||||||
, routes =
|
|
||||||
[ ServiceRoute.parent "IO_MEM"
|
|
||||||
, ServiceRoute.parentLabel
|
|
||||||
"Report"
|
|
||||||
(Some "smbios_table")
|
|
||||||
(Some "smbios_table")
|
|
||||||
]
|
|
||||||
}
|
|
||||||
, platform_drv =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "platform_drv"
|
|
||||||
, resources = Resources::{
|
|
||||||
, caps = 400
|
|
||||||
, ram = Sigil.units.MiB 4
|
|
||||||
, constrainPhys = True
|
|
||||||
}
|
|
||||||
, provides = [ "Acpi", "Platform" ]
|
|
||||||
, reportRoms = [ label "acpi" ]
|
|
||||||
, romReports = [ relabel "pci" "pci_devices" ]
|
|
||||||
, routes =
|
|
||||||
[ ServiceRoute.parent "IRQ"
|
|
||||||
, ServiceRoute.parent "IO_MEM"
|
|
||||||
, ServiceRoute.parent "IO_PORT"
|
|
||||||
, ServiceRoute.parentLabel
|
|
||||||
"ROM"
|
|
||||||
(Some "system")
|
|
||||||
(Some "system")
|
|
||||||
]
|
|
||||||
, config = Init.Config::{
|
|
||||||
, attributes = toMap { system = "yes" }
|
|
||||||
, content =
|
|
||||||
[ XML.text
|
|
||||||
''
|
|
||||||
<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"/>
|
|
||||||
''
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
, usb_drv =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "usb_drv"
|
|
||||||
, priority = 1
|
|
||||||
, resources = Resources::{
|
|
||||||
, caps = 200
|
|
||||||
, ram = Sigil.units.MiB 16
|
|
||||||
}
|
|
||||||
, provides = [ "Input", "Usb" ]
|
|
||||||
, reportRoms = [ relabel "config" "usb_drv.config" ]
|
|
||||||
, romReports = [ relabel "devices" "usb_devices" ]
|
|
||||||
, routes =
|
|
||||||
[ ServiceRoute.child "Platform" "platform_drv"
|
|
||||||
, ServiceRoute.parentLabel
|
|
||||||
"Report"
|
|
||||||
(Some "config")
|
|
||||||
(Some "usb_active_config")
|
|
||||||
]
|
|
||||||
}
|
|
||||||
, ps2_drv =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "ps2_drv"
|
|
||||||
, provides = [ "Input" ]
|
|
||||||
, routes = [ ServiceRoute.child "Platform" "platform_drv" ]
|
|
||||||
}
|
|
||||||
, event_filter =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "event_filter"
|
|
||||||
, priority = 1
|
|
||||||
, resources = Resources::{ ram = Sigil.units.MiB 2 }
|
|
||||||
, provides = [ "Input" ]
|
|
||||||
, routes =
|
|
||||||
[ ServiceRoute.parentLabel
|
|
||||||
"ROM"
|
|
||||||
(Some "config")
|
|
||||||
(Some "event_filter.config")
|
|
||||||
, ServiceRoute.childLabel
|
|
||||||
"Input"
|
|
||||||
"ps2_drv"
|
|
||||||
(Some "ps2")
|
|
||||||
(None Text)
|
|
||||||
, ServiceRoute.childLabel
|
|
||||||
"Input"
|
|
||||||
"usb_drv"
|
|
||||||
(Some "usb")
|
|
||||||
(None Text)
|
|
||||||
]
|
|
||||||
}
|
|
||||||
, driver_manager =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "driver_manager"
|
|
||||||
, priority = 1
|
|
||||||
, reportRoms =
|
|
||||||
[ label "ahci_ports"
|
|
||||||
, label "nvme_ns"
|
|
||||||
, label "pci_devices"
|
|
||||||
, label "usb_devices"
|
|
||||||
]
|
|
||||||
, romReports =
|
|
||||||
[ relabel "init.config" "dynamic.config"
|
|
||||||
, label "usb_drv.config"
|
|
||||||
]
|
|
||||||
, routes =
|
|
||||||
[ ServiceRoute.parentLabel
|
|
||||||
"Report"
|
|
||||||
(Some "block_devices")
|
|
||||||
(Some "block_devices")
|
|
||||||
, ServiceRoute.parentLabel
|
|
||||||
"ROM"
|
|
||||||
(Some "usb_policy")
|
|
||||||
(Some "usb_policy")
|
|
||||||
]
|
|
||||||
}
|
|
||||||
, dynamic =
|
|
||||||
Child.flat
|
|
||||||
Child.Attributes::{
|
|
||||||
, binary = "init"
|
|
||||||
, priority = 1
|
|
||||||
, resources = Resources::{
|
|
||||||
, caps = 1400
|
|
||||||
, ram = Sigil.units.MiB 64
|
|
||||||
}
|
|
||||||
, provides = [ "Framebuffer", "Block" ]
|
|
||||||
, romReports = [ label "ahci_ports", label "nvme_ns" ]
|
|
||||||
, reportRoms = [ relabel "config" "dynamic.config" ]
|
|
||||||
, routes =
|
|
||||||
[ ServiceRoute.child "Platform" "platform_drv"
|
|
||||||
, ServiceRoute.child "Usb" "usb_drv"
|
|
||||||
, ServiceRoute.parent "Timer"
|
|
||||||
, ServiceRoute.parent "Report"
|
|
||||||
, ServiceRoute.parent "IO_MEM"
|
|
||||||
, ServiceRoute.parent "IO_PORT"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
in drivers
|
|
242
nixos-modules/gui/gui.dhall
Normal file
242
nixos-modules/gui/gui.dhall
Normal file
|
@ -0,0 +1,242 @@
|
||||||
|
let Sigil = env:DHALL_SIGIL
|
||||||
|
|
||||||
|
let Prelude = Sigil.Prelude
|
||||||
|
|
||||||
|
let Map = Prelude.Map
|
||||||
|
|
||||||
|
let Attributes = Map.Type Text Text
|
||||||
|
|
||||||
|
let XML = Prelude.XML
|
||||||
|
|
||||||
|
let Init = Sigil.Init
|
||||||
|
|
||||||
|
let forward = λ(x : Text) → { local = x, route = x }
|
||||||
|
|
||||||
|
let Domain/Type = { name : Text, layer : Natural, attrs : Attributes }
|
||||||
|
|
||||||
|
let Domain/toXML =
|
||||||
|
λ(domain : Domain/Type) →
|
||||||
|
XML.leaf
|
||||||
|
{ name = "domain"
|
||||||
|
, attributes =
|
||||||
|
toMap
|
||||||
|
{ name = domain.name
|
||||||
|
, layer = Prelude.Natural.show domain.layer
|
||||||
|
}
|
||||||
|
# domain.attrs
|
||||||
|
}
|
||||||
|
|
||||||
|
let nitpickerDomains =
|
||||||
|
[ { name = "pointer"
|
||||||
|
, layer = 1
|
||||||
|
, attrs = toMap { content = "client", label = "no", origin = "pointer" }
|
||||||
|
}
|
||||||
|
, { name = "decorator"
|
||||||
|
, layer = 2
|
||||||
|
, attrs = toMap
|
||||||
|
{ content = "client"
|
||||||
|
, label = "no"
|
||||||
|
, focus = "click"
|
||||||
|
, hover = "transient"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
, { name = "other", layer = 2, attrs = toMap { content = "client" } }
|
||||||
|
, { name = "wm"
|
||||||
|
, layer = 3
|
||||||
|
, attrs = toMap
|
||||||
|
{ content = "client"
|
||||||
|
, label = "no"
|
||||||
|
, focus = "click"
|
||||||
|
, hover = "always"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
, { name = "backdrop"
|
||||||
|
, layer = 4
|
||||||
|
, attrs = toMap { content = "client", label = "no", backdrop = "yes" }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
let BinaryField = { binary : Text }
|
||||||
|
|
||||||
|
in λ ( params
|
||||||
|
: { decorator : BinaryField
|
||||||
|
, layouter : BinaryField
|
||||||
|
, nitpicker : BinaryField
|
||||||
|
, pointer : BinaryField
|
||||||
|
, wm : BinaryField
|
||||||
|
}
|
||||||
|
) →
|
||||||
|
λ(binary : Text) →
|
||||||
|
Init.toChild
|
||||||
|
Init::{
|
||||||
|
, verbose = True
|
||||||
|
, children = toMap
|
||||||
|
{ nitpicker =
|
||||||
|
Init.Child.flat
|
||||||
|
Init.Child.Attributes::{
|
||||||
|
, binary = params.nitpicker.binary
|
||||||
|
, resources = Init.Resources::{ ram = Sigil.units.MiB 4 }
|
||||||
|
, config = Init.Config::{
|
||||||
|
, attributes = toMap { focus = "rom" }
|
||||||
|
, content =
|
||||||
|
[ XML.leaf
|
||||||
|
{ name = "capture"
|
||||||
|
, attributes = XML.emptyAttributes
|
||||||
|
}
|
||||||
|
, XML.leaf
|
||||||
|
{ name = "event"
|
||||||
|
, attributes = XML.emptyAttributes
|
||||||
|
}
|
||||||
|
, XML.leaf
|
||||||
|
{ name = "report"
|
||||||
|
, attributes = toMap
|
||||||
|
{ hover = "yes"
|
||||||
|
, focus = "yes"
|
||||||
|
, clicked = "yes"
|
||||||
|
, keystate = "no"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
, XML.leaf
|
||||||
|
{ name = "background"
|
||||||
|
, attributes = toMap { color = "#ffffff" }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
# Prelude.List.map
|
||||||
|
Domain/Type
|
||||||
|
XML.Type
|
||||||
|
Domain/toXML
|
||||||
|
nitpickerDomains
|
||||||
|
, defaultPolicy = Some Init.Config.DefaultPolicy::{
|
||||||
|
, attributes = toMap { domain = "other" }
|
||||||
|
}
|
||||||
|
, policies =
|
||||||
|
[ Init.Config.Policy::{
|
||||||
|
, service = "Gui"
|
||||||
|
, label = Init.LabelSelector.prefix "pointer"
|
||||||
|
, attributes = toMap { domain = "pointer" }
|
||||||
|
}
|
||||||
|
, Init.Config.Policy::{
|
||||||
|
, service = "Gui"
|
||||||
|
, label = Init.LabelSelector.prefix "decorator"
|
||||||
|
, attributes = toMap { domain = "decorator" }
|
||||||
|
}
|
||||||
|
, Init.Config.Policy::{
|
||||||
|
, service = "Gui"
|
||||||
|
, label = Init.LabelSelector.prefix "wm"
|
||||||
|
, attributes = toMap { domain = "wm" }
|
||||||
|
}
|
||||||
|
, Init.Config.Policy::{
|
||||||
|
, service = "Gui"
|
||||||
|
, label = Init.LabelSelector.suffix "backdrop"
|
||||||
|
, attributes = toMap { domain = "backdrop" }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
, provides = [ "Capture", "Event" ]
|
||||||
|
, produceReports =
|
||||||
|
let f =
|
||||||
|
λ(report : Text) →
|
||||||
|
{ report, rom = "nitpicker_" ++ local }
|
||||||
|
|
||||||
|
in [ f "hover", f "clicked", f "focus" ]
|
||||||
|
}
|
||||||
|
, pointer =
|
||||||
|
Init.Child.flat
|
||||||
|
Init.Child.Attributes::{
|
||||||
|
, binary = params.pointer.binary
|
||||||
|
, config = Init.Config::{
|
||||||
|
, attributes = toMap { shape = "yes" }
|
||||||
|
}
|
||||||
|
, provides = [ "Report" ]
|
||||||
|
, reportRoms = [ forward "hover", forward "xray" ]
|
||||||
|
, resources = Init.Resources::{ ram = Sigil.units.MiB 2 }
|
||||||
|
}
|
||||||
|
, decorator =
|
||||||
|
Init.Child.flat
|
||||||
|
Init.Child.Attributes::{
|
||||||
|
, binary = params.decorator.binary
|
||||||
|
, config = Init.Config::{
|
||||||
|
, content =
|
||||||
|
Prelude.List.map
|
||||||
|
Text
|
||||||
|
XML.Type
|
||||||
|
( λ(name : Text) →
|
||||||
|
XML.leaf
|
||||||
|
{ name, attributes = XML.emptyAttributes }
|
||||||
|
)
|
||||||
|
[ "maximizer", "title" ]
|
||||||
|
}
|
||||||
|
, resources = Init.Resources::{
|
||||||
|
, caps = 384
|
||||||
|
, ram = Sigil.units.MiB 12
|
||||||
|
}
|
||||||
|
, consumeReports =
|
||||||
|
[ forward "window_layout"
|
||||||
|
, { rom = "pointer", report = "wm_pointer" }
|
||||||
|
]
|
||||||
|
, produceReports =
|
||||||
|
[ forward "decorator_margins"
|
||||||
|
, { report = "hover", rom = "decorator_hover" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
, layouter =
|
||||||
|
Init.Child.flat
|
||||||
|
Init.Child.Attributes::{
|
||||||
|
, binary = params.layouter.binary
|
||||||
|
, resources = Init.Resources::{ ram = Sigil.units.MiB 4 }
|
||||||
|
, consumeReports =
|
||||||
|
[ forward "decorator_margins"
|
||||||
|
, forward "focus_request"
|
||||||
|
, { rom = "hover", report = "decorator_hover" }
|
||||||
|
, { rom = "rules", report = "layouter_rules" }
|
||||||
|
, forward "window_list"
|
||||||
|
]
|
||||||
|
, procdueReports =
|
||||||
|
[ forward "window_layout"
|
||||||
|
, forward "resize_request"
|
||||||
|
, { report = "focus", rom = "layouter_focus" }
|
||||||
|
, { repot = "rules", rom = "layouter_rules" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
, wm =
|
||||||
|
Init.Child.flat
|
||||||
|
Init.Child.Attributes::{
|
||||||
|
, binary = params.wm.binary
|
||||||
|
, config = Init.Config::{
|
||||||
|
, defaultPolicy = Some Init.Config.DefaultPolicy::{=}
|
||||||
|
, policies =
|
||||||
|
[ Init.Config.Policy::{
|
||||||
|
, service = "Gui"
|
||||||
|
, label = Init.LabelSelector.prefix "decorator"
|
||||||
|
, attributes = toMap { role = "decorator" }
|
||||||
|
}
|
||||||
|
, Init.Config.Policy::{
|
||||||
|
, service = "Gui"
|
||||||
|
, label = Init.LabelSelector.prefix "layouter"
|
||||||
|
, attributes = toMap { role = "layouter" }
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
, provides = [ "Gui", "Report", "ROM" ]
|
||||||
|
, consumeReports =
|
||||||
|
[ forward "resize_request"
|
||||||
|
, { rom = "focus", report = "layouter_focus" }
|
||||||
|
]
|
||||||
|
, produceReports =
|
||||||
|
[ forward "focus_request"
|
||||||
|
, { report = "pointer", rom = "wm_pointer" }
|
||||||
|
, forward "window_list"
|
||||||
|
]
|
||||||
|
, resources = Init.Resources::{
|
||||||
|
, caps = 256
|
||||||
|
, ram = Sigil.units.MiB 8
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
, services =
|
||||||
|
[ Init.ServiceRoute.child "Gui" "wm"
|
||||||
|
, Init.ServiceRoute.child "Report" "wm"
|
||||||
|
, Init.ServiceRoute.child "ROM" "wm"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
Init.Attributes::{ binary }
|
|
@ -1,53 +0,0 @@
|
||||||
let Sigil = env:DHALL_SIGIL
|
|
||||||
|
|
||||||
let Prelude = Sigil.Prelude
|
|
||||||
|
|
||||||
let Map = Prelude.Map
|
|
||||||
|
|
||||||
let Attributes = Map.Type Text Text
|
|
||||||
|
|
||||||
let Domain = Map.Entry Text Attributes
|
|
||||||
|
|
||||||
let XML = Prelude.XML
|
|
||||||
|
|
||||||
let Init = Sigil.Init
|
|
||||||
|
|
||||||
in λ ( params
|
|
||||||
: { domains : List Domain, policies : List Init.Config.Policy.Type }
|
|
||||||
) →
|
|
||||||
λ(binary : Text) →
|
|
||||||
Init.Child.flat
|
|
||||||
Init.Child.Attributes::{
|
|
||||||
, binary
|
|
||||||
, resources = Init.Resources::{ ram = Sigil.units.MiB 4 }
|
|
||||||
, config = Init.Config::{
|
|
||||||
, attributes = toMap
|
|
||||||
{ note = "Nitpicker config is extremely fragile!" }
|
|
||||||
, content =
|
|
||||||
[ XML.leaf
|
|
||||||
{ name = "capture", attributes = XML.emptyAttributes }
|
|
||||||
, XML.leaf
|
|
||||||
{ name = "background"
|
|
||||||
, attributes = toMap { color = "#000000" }
|
|
||||||
}
|
|
||||||
]
|
|
||||||
# Prelude.List.map
|
|
||||||
Domain
|
|
||||||
XML.Type
|
|
||||||
( λ(domain : Domain) →
|
|
||||||
XML.leaf
|
|
||||||
{ name = "domain"
|
|
||||||
, attributes =
|
|
||||||
toMap { name = domain.mapKey } # domain.mapValue
|
|
||||||
}
|
|
||||||
)
|
|
||||||
params.domains
|
|
||||||
, policies =
|
|
||||||
params.policies
|
|
||||||
# [ Init.Config.Policy::{
|
|
||||||
, service = "Capture"
|
|
||||||
, label = Init.LabelSelector.prefix "fb_drv"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
24
nixos-modules/hardware/acpi_drv.dhall
Normal file
24
nixos-modules/hardware/acpi_drv.dhall
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
let Sigil = env:DHALL_SIGIL
|
||||||
|
|
||||||
|
let Init = Sigil.Init
|
||||||
|
|
||||||
|
in λ(binary : Text) →
|
||||||
|
Init.Child.flat
|
||||||
|
Init.Child.Attributes::{
|
||||||
|
, binary
|
||||||
|
, priorityOffset = 1
|
||||||
|
, resources = Init.Resources::{
|
||||||
|
, caps = 400
|
||||||
|
, ram = Sigil.units.MiB 4
|
||||||
|
, constrainPhys = True
|
||||||
|
}
|
||||||
|
, routes =
|
||||||
|
[ Init.ServiceRoute.parent "IRQ"
|
||||||
|
, Init.ServiceRoute.parent "IO_MEM"
|
||||||
|
, Init.ServiceRoute.parent "IO_PORT"
|
||||||
|
]
|
||||||
|
, produceReports =
|
||||||
|
let f = λ(x : Text) → { report = x, rom = x }
|
||||||
|
|
||||||
|
in [ f "acpi", f "smbios_table" ]
|
||||||
|
}
|
|
@ -64,66 +64,42 @@ in {
|
||||||
|
|
||||||
genode.core.children.acpi_drv = {
|
genode.core.children.acpi_drv = {
|
||||||
package = pkgs.genodePackages.acpi_drv;
|
package = pkgs.genodePackages.acpi_drv;
|
||||||
configFile = pkgs.writeText "acpi_drv.dhall" ''
|
configFile = ./acpi_drv.dhall;
|
||||||
let Sigil = env:DHALL_SIGIL
|
|
||||||
|
|
||||||
let Init = Sigil.Init
|
|
||||||
|
|
||||||
let label = λ(_ : Text) → { local = _, route = _ }
|
|
||||||
|
|
||||||
in λ(binary : Text) →
|
|
||||||
Init.Child.flat
|
|
||||||
Init.Child.Attributes::{
|
|
||||||
, binary
|
|
||||||
, priorityOffset = 1
|
|
||||||
, resources = Init.Resources::{
|
|
||||||
, caps = 400
|
|
||||||
, ram = Sigil.units.MiB 4
|
|
||||||
, constrainPhys = True
|
|
||||||
}
|
|
||||||
, romReports = [ label "acpi", label "smbios_table" ]
|
|
||||||
, routes =
|
|
||||||
[ Init.ServiceRoute.parent "IRQ"
|
|
||||||
, Init.ServiceRoute.parent "IO_MEM"
|
|
||||||
, Init.ServiceRoute.parent "IO_PORT"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
genode.core.children.platform_drv = {
|
genode.core.children.platform_drv = {
|
||||||
package = pkgs.genodePackages.platform_drv;
|
package = pkgs.genodePackages.platform_drv;
|
||||||
configFile = let
|
configFile =
|
||||||
policies =
|
let policies = map (policy: ", ${policy}") cfg.platform.policies;
|
||||||
map (policy: ", ${policy}") config.hardware.genode.platform.policies;
|
in pkgs.writeText "platform_drv.dhall" ''
|
||||||
in pkgs.writeText "platform_drv.dhall" ''
|
let Sigil = env:DHALL_SIGIL
|
||||||
let Sigil = env:DHALL_SIGIL
|
|
||||||
|
|
||||||
let Init = Sigil.Init
|
let Init = Sigil.Init
|
||||||
|
|
||||||
in λ(binary : Text) -> Init.Child.flat
|
in λ(binary : Text) →
|
||||||
Init.Child.Attributes::{
|
Init.Child.flat
|
||||||
, binary
|
Init.Child.Attributes::{
|
||||||
, priorityOffset = 1
|
, binary
|
||||||
, resources = Init.Resources::{
|
, priorityOffset = 1
|
||||||
, caps = 800
|
, resources = Init.Resources::{
|
||||||
, ram = Sigil.units.MiB 4
|
, caps = 800
|
||||||
, constrainPhys = True
|
, ram = Sigil.units.MiB 4
|
||||||
}
|
, constrainPhys = True
|
||||||
, reportRoms = let label = "acpi" in [ { local = label, route = label } ]
|
}
|
||||||
, provides = [ "Platform" ]
|
, consumeReports = [ { rom = "acpi", report = "acpi" } ]
|
||||||
, routes =
|
, provides = [ "Platform" ]
|
||||||
[ Init.ServiceRoute.parent "IRQ"
|
, routes =
|
||||||
, Init.ServiceRoute.parent "IO_MEM"
|
[ Init.ServiceRoute.parent "IRQ"
|
||||||
, Init.ServiceRoute.parent "IO_PORT"
|
, Init.ServiceRoute.parent "IO_MEM"
|
||||||
]
|
, Init.ServiceRoute.parent "IO_PORT"
|
||||||
, config = Init.Config::{
|
]
|
||||||
, policies = [ ${
|
, config = Init.Config::{
|
||||||
toString policies
|
, policies = [ ${
|
||||||
} ] : List Init.Config.Policy.Type
|
toString policies
|
||||||
}
|
} ] : List Init.Config.Policy.Type
|
||||||
}
|
}
|
||||||
'';
|
}
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
genode.core.children.device_manager = lib.mkIf deviceManagerEnable {
|
genode.core.children.device_manager = lib.mkIf deviceManagerEnable {
|
||||||
|
|
|
@ -4,8 +4,8 @@ dhallPackages.buildDhallDirectoryPackage {
|
||||||
name = "dhall-sigil";
|
name = "dhall-sigil";
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "https://git.sr.ht/~ehmry/dhall-sigil";
|
url = "https://git.sr.ht/~ehmry/dhall-sigil";
|
||||||
rev = "fbdec3209f6e5aaa95abd2d1121164e31896b1df";
|
rev = "692f04344713b472e35a03eb80c7c37e2d812125";
|
||||||
sha256 = "0h19nm0wrflnl16klnwgcj8316fnx0v7d3rqnv87pq63dar4sjk9";
|
sha256 = "14hynnhidnj3fwfsiwri0pi9gqhb7lliq14avx4hzc13r2z96cx1";
|
||||||
};
|
};
|
||||||
dependencies = [ dhallPackages.Prelude ];
|
dependencies = [ dhallPackages.Prelude ];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user