From fd0d3ccd4a5d91f77b245dc1d74a2afc9c12a1c6 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Fri, 24 Jan 2020 19:13:33 +0100 Subject: [PATCH] Consolidate boot configuration --- boot.dhall | 456 ++++++++++++++++++++++++++++++++++++++++++++ config.dhall | 118 ------------ drivers.config | 213 --------------------- flake.lock | 102 ++++------ flake.nix | 82 +++----- input_filter.config | 13 -- 6 files changed, 525 insertions(+), 459 deletions(-) create mode 100644 boot.dhall delete mode 100644 config.dhall delete mode 100644 drivers.config delete mode 100644 input_filter.config diff --git a/boot.dhall b/boot.dhall new file mode 100644 index 0000000..8902cd2 --- /dev/null +++ b/boot.dhall @@ -0,0 +1,456 @@ +let Genode = + env:DHALL_GENODE + ? https://git.sr.ht/~ehmry/dhall-genode/blob/master/package.dhall sha256:62d5c59808ca94a903497469be41f17d0022a44b3049f156ae2ea30b3a0499c3 + +let drivers = + Genode.Init::{ + , services = + [ Genode.ServiceRoute.child "Framebuffer" "dynamic" + , Genode.ServiceRoute.child "Block" "dynamic" + , Genode.ServiceRoute.child "Usb" "usb_drv" + , Genode.ServiceRoute.child "Platform" "platform_drv" + , Genode.ServiceRoute.child "Input" "input_filter" + ] + , children = + toMap + { report_rom = + Genode.Init.Start::{ + , binary = "report_rom" + , resources = { caps = 96, ram = Genode.units.MiB 2 } + , provides = [ "ROM", "Report" ] + , config = + Some + ( Genode.Prelude.XML.text + '' + + + + + + + + + + + + + '' + ) + } + , rom_reporter = + Genode.Init.Start::{ + , binary = "rom_reporter" + , resources = { caps = 96, ram = Genode.units.MiB 1 } + , config = + Some + ( Genode.Prelude.XML.text + '' + + + + + + '' + ) + , routes = + let routeRomToReportRom = + Genode.ServiceRoute.childLabel "ROM" "report_rom" + + let routeReportToParent = + λ(label : Text) + → Genode.ServiceRoute.parentLabel + "Report" + (Some label) + (Some label) + + in [ routeRomToReportRom (Some "acpi") (None Text) + , routeRomToReportRom (Some "pci_devices") (None Text) + , routeRomToReportRom (Some "usb_devices") (None Text) + , routeReportToParent "acpi" + , routeReportToParent "pci_devices" + , routeReportToParent "usb_devices" + ] + } + , acpi_drv = + Genode.Init.Start::{ + , binary = "acpi_drv" + , resources = { caps = 350, ram = Genode.units.MiB 4 } + , routes = + [ Genode.ServiceRoute.parent "IO_MEM" + , Genode.ServiceRoute.childLabel "Report" "report_rom" (Some "acpi") (None Text) + , Genode.ServiceRoute.parentLabel + "Report" + (Some "smbios_table") + (Some "smbios_table") + + ] + } + , platform_drv = + Genode.Init.Start::{ + , binary = "platform_drv" + , resources = { caps = 400, ram = Genode.units.MiB 4 } + , constrainPhys = True + , provides = [ "Acpi", "Platform" ] + , routes = + [ Genode.ServiceRoute.parent "IRQ" + , Genode.ServiceRoute.parent "IO_MEM" + , Genode.ServiceRoute.parent "IO_PORT" + , Genode.ServiceRoute.parent "Timer" + , Genode.ServiceRoute.parentLabel + "ROM" + (Some "system") + (Some "system") + , Genode.ServiceRoute.childLabel + "ROM" + "report_rom" + (Some "acpi") + (None Text) + , Genode.ServiceRoute.childLabel + "Report" + "report_rom" + (Some "pci") + (None Text) + ] + , config = + Some + ( Genode.Prelude.XML.text + '' + + + + + + + + + + + + + + + + + + + + + + + + + '' + ) + } + , usb_drv = + Genode.Init.Start::{ + , binary = "usb_drv" + , resources = { caps = 200, ram = Genode.units.MiB 16 } + , provides = [ "Input", "Usb" ] + , routes = + [ Genode.ServiceRoute.child "Platform" "platform_drv" + , Genode.ServiceRoute.childLabel + "ROM" + "report_rom" + (Some "config") + (None Text) + , Genode.ServiceRoute.childLabel + "Report" + "report_rom" + (Some "devices") + (None Text) + , Genode.ServiceRoute.parentLabel + "Report" + (Some "config") + (Some "usb_active_config") + , Genode.ServiceRoute.parent "Timer" + ] + } + , ps2_drv = + Genode.Init.Start::{ + , binary = "ps2_drv" + , provides = [ "Input" ] + , routes = + [ Genode.ServiceRoute.child "Platform" "platform_drv" + , Genode.ServiceRoute.parent "Timer" + ] + } + , input_filter = + Genode.Init.Start::{ + , binary = "input_filter" + , resources = { caps = 90, ram = Genode.units.MiB 2 } + , provides = [ "Input" ] + , routes = + [ Genode.ServiceRoute.parent "Timer" + , Genode.ServiceRoute.parentLabel + "ROM" + (Some "config") + (Some "input_filter.config") + , Genode.ServiceRoute.childLabel + "Input" + "ps2_drv" + (Some "ps2") + (None Text) + , Genode.ServiceRoute.childLabel + "Input" + "usb_drv" + (Some "usb") + (None Text) + ] + } + , driver_manager = + Genode.Init.Start::{ + , binary = "driver_manager" + , routes = + [ Genode.ServiceRoute.childLabel + "Report" + "report_rom" + (Some "init.config") + (None Text) + , Genode.ServiceRoute.childLabel + "Report" + "report_rom" + (Some "usb_drv.config") + (None Text) + , Genode.ServiceRoute.parentLabel + "Report" + (Some "block_devices") + (Some "block_devices") + , Genode.ServiceRoute.childLabel + "ROM" + "report_rom" + (Some "usb_devices") + (None Text) + , Genode.ServiceRoute.childLabel + "ROM" + "report_rom" + (Some "pci_devices") + (None Text) + , Genode.ServiceRoute.childLabel + "ROM" + "report_rom" + (Some "ahci_ports") + (None Text) + , Genode.ServiceRoute.childLabel + "ROM" + "report_rom" + (Some "nvme_ns") + (None Text) + , Genode.ServiceRoute.parentLabel + "ROM" + (Some "usb_policy") + (Some "usb_policy") + ] + } + , dynamic = + Genode.Init.Start::{ + , binary = "init" + , resources = { caps = 1400, ram = Genode.units.MiB 64 } + , provides = [ "Framebuffer", "Block" ] + , routes = + [ Genode.ServiceRoute.child "Platform" "platform_drv" + , Genode.ServiceRoute.childLabel + "Report" + "report_rom" + (Some "ahci_ports") + (None Text) + , Genode.ServiceRoute.childLabel + "Report" + "report_rom" + (Some "nvme_ns") + (None Text) + , Genode.ServiceRoute.child "Usb" "usb_drv" + , Genode.ServiceRoute.childLabel + "ROM" + "report_rom" + (Some "config") + (None Text) + , Genode.ServiceRoute.parent "Report" + , Genode.ServiceRoute.parent "IO_MEM" + , Genode.ServiceRoute.parent "IO_PORT" + , Genode.ServiceRoute.parent "Timer" + ] + } + } + } + +in { arch = + let Arch = < x86_32 | x86_64 > in Arch.x86_64 + , config = + Genode.Init::{ + , children = + toMap + { timer = + Genode.Init.Start::{ + , binary = "nova_timer_drv" + , 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 "") + } + , drivers = + let subinit = Genode.Init.toStart drivers + + in subinit + ⫽ { 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" "report_rom" + ] + } + , nitpicker = + Genode.Init.Start::{ + , binary = "nitpicker" + , resources = { caps = 1000, ram = Genode.units.MiB 6 } + , provides = [ "Nitpicker" ] + , routes = + [ Genode.ServiceRoute.childLabel + "ROM" + "nit_focus" + (Some "focus") + (Some "focus") + , 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 + '' + + + + + + '' + ) + } + , nit_focus = + Genode.Init.Start::{ + , binary = "rom_filter" + , provides = [ "ROM" ] + , config = + Some + ( Genode.Prelude.XML.text + '' + + + + + + '' + ) + } + , oberon = + Genode.Init.Start::{ + , binary = "retro_frontend" + , resources = { caps = 256, ram = Genode.units.MiB 32 } + , routes = + [ Genode.ServiceRoute.child "Nitpicker" "nitpicker" + , Genode.ServiceRoute.child "Timer" "timer" + , Genode.ServiceRoute.parentLabel + "ROM" + (Some "") + (Some "retro_frontend") + ] + , config = + Some + ( Genode.Prelude.XML.text + '' + + + + + + + + + + + + '' + ) + } + } + } + , rom = + let manifest = env:MANIFEST + + let emptyXML = λ(name : Text) → { mapKey = name, mapValue = "" } + + in Genode.Boot.toRomPaths + [ manifest.base-nova.lib.ld-nova ⫽ { mapKey = "ld.lib.so" } + , manifest.base-nova.bin.nova_timer_drv + , manifest.os.bin.acpi_drv + , manifest.os.bin.ahci_drv + , manifest.os.bin.init + , manifest.os.bin.input_filter + , manifest.os.bin.log_core + , manifest.os.bin.nitpicker + , manifest.os.bin.platform_drv + , manifest.os.bin.ps2_drv + , manifest.os.bin.report_rom + , manifest.os.bin.rom_filter + , manifest.os.bin.rom_reporter + , manifest.os.bin.vfs + , manifest.os.lib.vfs + , manifest.driver_manager.bin.driver_manager + , manifest.usb_drv.bin.usb_drv + , manifest.boot_fb_drv.bin.fb_boot_drv + , manifest.intel_fb_drv.bin.intel_fb_drv + , manifest.vesa_drv.bin.vesa_fb_drv + ] + # Genode.Boot.toRomTexts + [ emptyXML "capslock" + , emptyXML "numlock" + , emptyXML "usb.config" + , emptyXML "usb_policy" + , { mapKey = "fb_drv.config" + , mapValue = +'' + + + + + +''} + , { mapKey = "input_filter.config" + , mapValue = + '' + + + + + + + + + + + + + + '' + } + ] + } diff --git a/config.dhall b/config.dhall deleted file mode 100644 index ceb46a9..0000000 --- a/config.dhall +++ /dev/null @@ -1,118 +0,0 @@ -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 "") - } - , 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" "report_rom" - ] - } - , nitpicker = - Genode.Init.Start::{ - , binary = "nitpicker" - , resources = { caps = 1000, ram = Genode.units.MiB 6 } - , provides = [ "Nitpicker" ] - , routes = - [ Genode.ServiceRoute.childLabel - "ROM" - "nit_focus" - (Some "focus") - (Some "focus") - , 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 - '' - - - - - - '' - ) - } - , nit_focus = - Genode.Init.Start::{ - , binary = "rom_filter" - , provides = [ "ROM" ] - , config = - Some - ( Genode.Prelude.XML.text - '' - - - - - - '' - ) - } - , oberon = - Genode.Init.Start::{ - , binary = "retro_frontend" - , resources = { caps = 256, ram = Genode.units.MiB 32 } - , routes = - [ Genode.ServiceRoute.child "Nitpicker" "nitpicker" - , Genode.ServiceRoute.child "Timer" "timer" - , Genode.ServiceRoute.parentLabel - "ROM" - (Some "") - (Some "retro_frontend") - ] - , config = - Some - ( Genode.Prelude.XML.text - '' - - - - - - - - - - - - '' - ) - } - } - } diff --git a/drivers.config b/drivers.config deleted file mode 100644 index 3e3620d..0000000 --- a/drivers.config +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/flake.lock b/flake.lock index afad28c..93b7838 100644 --- a/flake.lock +++ b/flake.lock @@ -15,22 +15,22 @@ "url": "git+https://github.com/nh2/nixpkgs.git?ref=static-haskell-nix-stack-dhall-working&rev=925aac04f4ca58aceb83beef18cb7dae0715421b" } }, - "narHash": "sha256-NGbS2bymVuCQcanlBO41I6ZjSAZSLXhACK3qQU25zUs=", + "narHash": "sha256-KJl9ZLcMcEsLSPcwcWoc0Ac74/6HKC9LkVMeLwhyhlg=", "originalUrl": "git+https://github.com/dhall-lang/dhall-haskell?ref=flake", - "url": "git+https://github.com/dhall-lang/dhall-haskell?ref=flake&rev=256810cd5adf1ae5862eed0ffdaab4cf49f6fe67" + "url": "git+https://github.com/dhall-lang/dhall-haskell?ref=flake&rev=aea28adf3d10ff1982aa4ddd176d1476251b932f" }, "genode-depot": { "inputs": { "nixpkgs": { "inputs": {}, - "narHash": "sha256-Y5ZOTgInrYYoas3vM8uTPLA2DvFI9YoI6haftIKl9go=", + "narHash": "sha256-EqxCk6ORqq4fkewWttpvks0VycBec9X9spAZ+Pq/CEI=", "originalUrl": "nixpkgs", - "url": "github:edolstra/nixpkgs/015c9ec3372e328ea6742b409a1e9aa26dab2b31" + "url": "github:ehmry/nixpkgs/cf50f3b8bdc28832249afab6bca68acad832e011" } }, - "narHash": "sha256-be9whulZ8unz1sq9PiFr+tuUAXlwiPEhIe0Z6jmfZiU=", + "narHash": "sha256-7eL2MfGgeEaIwJXPc4LQ7pBa4JeGicm9th7onjKgzsE=", "originalUrl": "git+https://gitea.c3d2.de/ehmry/genode-depot.git", - "url": "git+https://gitea.c3d2.de/ehmry/genode-depot.git?ref=master&rev=2f3162d88220bd6fa6b6fbc7c6d9fed68533a761" + "url": "git+https://gitea.c3d2.de/ehmry/genode-depot.git?ref=master&rev=8c2aafed45b4075e37f1cd93de0ebf93f38c83c3" }, "genodepkgs": { "inputs": { @@ -49,46 +49,33 @@ "url": "git+https://github.com/nh2/nixpkgs.git?ref=static-haskell-nix-stack-dhall-working&rev=925aac04f4ca58aceb83beef18cb7dae0715421b" } }, - "narHash": "sha256-NGbS2bymVuCQcanlBO41I6ZjSAZSLXhACK3qQU25zUs=", + "narHash": "sha256-KJl9ZLcMcEsLSPcwcWoc0Ac74/6HKC9LkVMeLwhyhlg=", "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": { - "inputs": { - "nixpkgs": { - "inputs": {}, - "narHash": "sha256-HYX9rCn1dweN+L3ecNy4BiCGw4WEt1zgdIiAeYNY5GM=", - "originalUrl": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genode", - "url": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genode&rev=12e31ac07c6d337760b3f59dc64c03f26cdd2009" - } - }, - "narHash": "sha256-9/RR/CwvB1M2VSR7CrSVexYXN1YSSSE4WG4siDh0LE0=", - "originalUrl": "git+https://gitea.c3d2.de/ehmry/genode.git", - "url": "git+https://gitea.c3d2.de/ehmry/genode.git?ref=master&rev=2a9178fced42cac986de07b6944afd4422d28976" + "url": "git+https://github.com/dhall-lang/dhall-haskell?ref=flake&rev=aea28adf3d10ff1982aa4ddd176d1476251b932f" }, "genode-depot": { "inputs": { "nixpkgs": { "inputs": {}, - "narHash": "sha256-Y5ZOTgInrYYoas3vM8uTPLA2DvFI9YoI6haftIKl9go=", + "narHash": "sha256-EqxCk6ORqq4fkewWttpvks0VycBec9X9spAZ+Pq/CEI=", "originalUrl": "nixpkgs", - "url": "github:edolstra/nixpkgs/015c9ec3372e328ea6742b409a1e9aa26dab2b31" + "url": "github:ehmry/nixpkgs/cf50f3b8bdc28832249afab6bca68acad832e011" } }, - "narHash": "sha256-be9whulZ8unz1sq9PiFr+tuUAXlwiPEhIe0Z6jmfZiU=", + "narHash": "sha256-7eL2MfGgeEaIwJXPc4LQ7pBa4JeGicm9th7onjKgzsE=", "originalUrl": "git+https://gitea.c3d2.de/ehmry/genode-depot.git", - "url": "git+https://gitea.c3d2.de/ehmry/genode-depot.git?ref=master&rev=2f3162d88220bd6fa6b6fbc7c6d9fed68533a761" + "url": "git+https://gitea.c3d2.de/ehmry/genode-depot.git?ref=master&rev=8c2aafed45b4075e37f1cd93de0ebf93f38c83c3" }, "nixpkgs": { "inputs": {}, - "narHash": "sha256-HYX9rCn1dweN+L3ecNy4BiCGw4WEt1zgdIiAeYNY5GM=", - "originalUrl": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genode", - "url": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genode&rev=12e31ac07c6d337760b3f59dc64c03f26cdd2009" + "narHash": "sha256-EqxCk6ORqq4fkewWttpvks0VycBec9X9spAZ+Pq/CEI=", + "originalUrl": "github:ehmry/nixpkgs", + "url": "github:ehmry/nixpkgs/cf50f3b8bdc28832249afab6bca68acad832e011" } }, - "narHash": "sha256-aVnK41/uYBqDxNOZpaIwLICkrBp5qYN0gehqoOCpOcg=", - "originalUrl": "git+https://gitea.c3d2.de/ehmry/genodepkgs?ref=flake", - "url": "git+https://gitea.c3d2.de/ehmry/genodepkgs?ref=flake&rev=e92ee9b472fbc8238aa7b653eab28f50e46e0f25" + "narHash": "sha256-J57/0DZftyl9/H9mBblqoaHNDfSUmfny4TkbamdngO0=", + "originalUrl": "git+https://git.sr.ht/~ehmry/genodepkgs", + "url": "git+https://git.sr.ht/~ehmry/genodepkgs?ref=master&rev=d086d68b607d1a5f47fd8496ca1ab1b0b3085b4e" }, "libretro-genode": { "inputs": { @@ -109,63 +96,50 @@ "url": "git+https://github.com/nh2/nixpkgs.git?ref=static-haskell-nix-stack-dhall-working&rev=925aac04f4ca58aceb83beef18cb7dae0715421b" } }, - "narHash": "sha256-NGbS2bymVuCQcanlBO41I6ZjSAZSLXhACK3qQU25zUs=", + "narHash": "sha256-KJl9ZLcMcEsLSPcwcWoc0Ac74/6HKC9LkVMeLwhyhlg=", "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": { - "inputs": { - "nixpkgs": { - "inputs": {}, - "narHash": "sha256-HYX9rCn1dweN+L3ecNy4BiCGw4WEt1zgdIiAeYNY5GM=", - "originalUrl": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genode", - "url": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genode&rev=12e31ac07c6d337760b3f59dc64c03f26cdd2009" - } - }, - "narHash": "sha256-9/RR/CwvB1M2VSR7CrSVexYXN1YSSSE4WG4siDh0LE0=", - "originalUrl": "git+https://gitea.c3d2.de/ehmry/genode.git", - "url": "git+https://gitea.c3d2.de/ehmry/genode.git?ref=master&rev=2a9178fced42cac986de07b6944afd4422d28976" + "url": "git+https://github.com/dhall-lang/dhall-haskell?ref=flake&rev=aea28adf3d10ff1982aa4ddd176d1476251b932f" }, "genode-depot": { "inputs": { "nixpkgs": { "inputs": {}, - "narHash": "sha256-Y5ZOTgInrYYoas3vM8uTPLA2DvFI9YoI6haftIKl9go=", + "narHash": "sha256-EqxCk6ORqq4fkewWttpvks0VycBec9X9spAZ+Pq/CEI=", "originalUrl": "nixpkgs", - "url": "github:edolstra/nixpkgs/015c9ec3372e328ea6742b409a1e9aa26dab2b31" + "url": "github:ehmry/nixpkgs/cf50f3b8bdc28832249afab6bca68acad832e011" } }, - "narHash": "sha256-be9whulZ8unz1sq9PiFr+tuUAXlwiPEhIe0Z6jmfZiU=", + "narHash": "sha256-7eL2MfGgeEaIwJXPc4LQ7pBa4JeGicm9th7onjKgzsE=", "originalUrl": "git+https://gitea.c3d2.de/ehmry/genode-depot.git", - "url": "git+https://gitea.c3d2.de/ehmry/genode-depot.git?ref=master&rev=2f3162d88220bd6fa6b6fbc7c6d9fed68533a761" + "url": "git+https://gitea.c3d2.de/ehmry/genode-depot.git?ref=master&rev=8c2aafed45b4075e37f1cd93de0ebf93f38c83c3" }, "nixpkgs": { "inputs": {}, - "narHash": "sha256-HYX9rCn1dweN+L3ecNy4BiCGw4WEt1zgdIiAeYNY5GM=", - "originalUrl": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genode", - "url": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genode&rev=12e31ac07c6d337760b3f59dc64c03f26cdd2009" + "narHash": "sha256-EqxCk6ORqq4fkewWttpvks0VycBec9X9spAZ+Pq/CEI=", + "originalUrl": "github:ehmry/nixpkgs", + "url": "github:ehmry/nixpkgs/cf50f3b8bdc28832249afab6bca68acad832e011" } }, - "narHash": "sha256-aVnK41/uYBqDxNOZpaIwLICkrBp5qYN0gehqoOCpOcg=", - "originalUrl": "git+https://gitea.c3d2.de/ehmry/genodepkgs?ref=flake", - "url": "git+https://gitea.c3d2.de/ehmry/genodepkgs?ref=flake&rev=e92ee9b472fbc8238aa7b653eab28f50e46e0f25" + "narHash": "sha256-J57/0DZftyl9/H9mBblqoaHNDfSUmfny4TkbamdngO0=", + "originalUrl": "git+https://gitea.c3d2.de/ehmry/genodepkgs", + "url": "git+https://gitea.c3d2.de/ehmry/genodepkgs?ref=master&rev=d086d68b607d1a5f47fd8496ca1ab1b0b3085b4e" }, "nixpkgs": { "inputs": {}, - "narHash": "sha256-HYX9rCn1dweN+L3ecNy4BiCGw4WEt1zgdIiAeYNY5GM=", - "originalUrl": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genode", - "url": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genode&rev=12e31ac07c6d337760b3f59dc64c03f26cdd2009" + "narHash": "sha256-EqxCk6ORqq4fkewWttpvks0VycBec9X9spAZ+Pq/CEI=", + "originalUrl": "github:ehmry/nixpkgs", + "url": "github:ehmry/nixpkgs/cf50f3b8bdc28832249afab6bca68acad832e011" } }, - "narHash": "sha256-EhKnBXiXf/oCotqwqQzr0UlyX7mLqXOjQ2lDKgpPFKA=", + "narHash": "sha256-JK5whPvQfM0sa2szzqAttHyTyWvjRXcVdkQdmiROgmA=", "originalUrl": "git+https://gitea.c3d2.de/ehmry/libretro-genode", - "url": "git+https://gitea.c3d2.de/ehmry/libretro-genode?ref=master&rev=7f84b6adc8443f41cb6584a7e72382360034542a" + "url": "git+https://gitea.c3d2.de/ehmry/libretro-genode?ref=master&rev=560196da91f40bfc2b173df05aa35936d0ed8f44" }, "nixpkgs": { "inputs": {}, - "narHash": "sha256-HYX9rCn1dweN+L3ecNy4BiCGw4WEt1zgdIiAeYNY5GM=", - "originalUrl": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genode", - "url": "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genode&rev=12e31ac07c6d337760b3f59dc64c03f26cdd2009" + "narHash": "sha256-EqxCk6ORqq4fkewWttpvks0VycBec9X9spAZ+Pq/CEI=", + "originalUrl": "nixpkgs", + "url": "github:ehmry/nixpkgs/cf50f3b8bdc28832249afab6bca68acad832e011" } }, "version": 3 diff --git a/flake.nix b/flake.nix index 10692e1..181a867 100644 --- a/flake.nix +++ b/flake.nix @@ -1,70 +1,50 @@ { edition = 201909; - description = "Genode desktop varaint"; + description = "Oberon RISC machine, emulated for x86_64"; 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+https://gitea.c3d2.de/ehmry/genodepkgs?ref=flake"; + genodepkgs.url = "git+https://git.sr.ht/~ehmry/genodepkgs"; libretro-genode.uri = "git+https://gitea.c3d2.de/ehmry/libretro-genode"; - nixpkgs.uri = "git+https://gitea.c3d2.de/ehmry/nixpkgs.git?ref=genode"; }; outputs = - { self, genodepkgs, nixpkgs, dhall-haskell, genode-depot, libretro-genode }: + { self, genodepkgs, dhall-haskell, genode-depot, libretro-genode, nixpkgs }: let - lib = import (genodepkgs + "/lib") { - inherit genodepkgs nixpkgs dhall-haskell genode-depot; - }; - pleaseNo = builtins.toFile "empty.xml" ""; - in { + mkOutput = { system, localSystem, crossSystem }: - packages.x86_64-genode.iso = with genodepkgs.packages.x86_64-genode; - lib.x86_64-genode.buildNovaIso { - name = "oberon"; - rom = let - 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 = "${os}/bin/acpi_drv"; - ahci_drv = "${os}/bin/ahci_drv"; - capslock = pleaseNo; - driver_manager = "${depot.driver_manager}/bin/driver_manager"; - "drivers.config" = ./drivers.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"; - "input_filter.config" = ./input_filter.config; - input_filter = "${os}/bin/input_filter"; - "libc.lib.so" = "${depot.libc}/lib/libc.lib.so"; - "libm.lib.so" = "${depot.libc}/lib/libm.lib.so"; - "libretro.so" = "${libretro.oberon}/bin/oberon/libretro.so"; - log_core = "${os}/bin/log_core"; - nitpicker = "${os}/bin/nitpicker"; - numlock = pleaseNo; - "Oberon.dsk" = - "${libretro.oberon.smSrc}/DiskImage/Oberon-2019-01-21.dsk"; - platform_drv = "${os}/bin/platform_drv"; - ps2_drv = "${os}/bin/ps2_drv"; - report_rom = "${os}/bin/report_rom"; - rom_filter = "${os}/bin/rom_filter"; - rom_reporter = "${os}/bin/rom_reporter"; - "usb.config" = pleaseNo; - usb_drv = "${depot.usb_drv}/bin/usb_drv"; - usb_policy = pleaseNo; - vesa_fb_drv = "${depot.vesa_drv}/bin/vesa_fb_drv"; - "vfs.lib.so" = "${os}/lib/vfs.lib.so"; - vfs = "${os}/bin/vfs"; - }; + 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; }; - defaultPackage = self.packages.x86_64-genode.iso; + crossOutput = mkOutput { + localSystem = "x86_64-linux"; + crossSystem = "x86_64-genode"; + system = "x86_64-linux-x86_64-genode"; + }; + in crossOutput // { + defaultPackage.x86_64-linux = + crossOutput.defaultPackage.x86_64-linux-x86_64-genode; }; + } diff --git a/input_filter.config b/input_filter.config deleted file mode 100644 index f3034ed..0000000 --- a/input_filter.config +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - -