2
0
Fork 0

Update to latest Dhall in Nixpkgs master

This commit is contained in:
Ehmry - 2020-03-18 17:27:00 +05:30
parent 6d6d585f0f
commit 818014787f
34 changed files with 863 additions and 973 deletions

View File

@ -1,11 +1,53 @@
# SPDX-License-Identifier: CC0-1.0 # SPDX-License-Identifier: CC0-1.0
{ nixpkgs, dhallApps, packages }: { self, nixpkgs, nixpkgsLocal, packages }:
rec { let
dhallApps = let
mkApp = { drv, name ? drv.pname or drv.name, exe ? name }: {
inherit name;
value = {
type = "app";
program = "${drv}/bin/${exe}";
};
};
in builtins.listToAttrs [
(mkApp { drv = nixpkgsLocal.dhall; })
linux-image = (mkApp {
let drv = import ./linux-image { inherit nixpkgs dhallApps packages; }; drv = nixpkgsLocal.dhall-bash;
name = "dhall-to-bash";
})
(mkApp {
drv = nixpkgsLocal.dhall-json;
name = "dhall-to-json";
})
(mkApp {
drv = nixpkgsLocal.dhall-json;
name = "json-to-dhall";
})
(mkApp {
drv = nixpkgsLocal.dhall-json;
name = "dhall-to-yaml";
})
(mkApp {
drv = nixpkgsLocal.dhall-json;
name = "yaml-to-dhall";
})
];
in dhallApps // {
linux-image = let
drv = import ./linux-image {
apps = self;
inherit nixpkgs packages;
};
in { in {
type = "app"; type = "app";
program = "${drv}/bin/linux-image"; program = "${drv}/bin/linux-image";
@ -14,7 +56,7 @@ rec {
generate-manifest = let generate-manifest = let
drv = import ./generate-manifest { drv = import ./generate-manifest {
stdenv = packages.stdenv; stdenv = packages.stdenv;
inherit nixpkgs dhallApps; inherit nixpkgs;
}; };
in { in {
type = "app"; type = "app";
@ -24,7 +66,8 @@ rec {
hw-image = let hw-image = let
drv = import ./hw-image { drv = import ./hw-image {
stdenv = packages.stdenv; stdenv = packages.stdenv;
inherit nixpkgs dhallApps packages; apps = self;
inherit nixpkgs packages;
}; };
in { in {
type = "app"; type = "app";
@ -37,7 +80,8 @@ rec {
nova-image = let nova-image = let
drv = import ./nova-image { drv = import ./nova-image {
stdenv = packages.stdenv; stdenv = packages.stdenv;
inherit nixpkgs dhallApps packages; apps = self;
inherit nixpkgs packages;
}; };
in { in {
type = "app"; type = "app";
@ -50,7 +94,8 @@ rec {
hw-iso = let hw-iso = let
drv = import ./hw-iso { drv = import ./hw-iso {
stdenv = packages.stdenv; stdenv = packages.stdenv;
inherit nixpkgs packages hw-image; inherit nixpkgs packages;
inherit (self) hw-image;
}; };
in { in {
type = "app"; type = "app";
@ -63,7 +108,8 @@ rec {
nova-iso = let nova-iso = let
drv = import ./nova-iso { drv = import ./nova-iso {
stdenv = packages.stdenv; stdenv = packages.stdenv;
inherit nixpkgs packages nova-image; inherit nixpkgs packages;
inherit (self) nova-image;
}; };
in { in {
type = "app"; type = "app";
@ -73,8 +119,11 @@ rec {
''XDG_CACHE_HOME=$TMPDIR ${drv}/bin/nova-iso "${bootDesc}" > $out''; ''XDG_CACHE_HOME=$TMPDIR ${drv}/bin/nova-iso "${bootDesc}" > $out'';
}; };
render-init = render-init = let
let drv = import ./render-init { inherit nixpkgs dhallApps packages; }; drv = import ./render-init {
apps = self;
inherit nixpkgs packages;
};
in { in {
type = "app"; type = "app";
program = "${drv}/bin/render-init"; program = "${drv}/bin/render-init";

View File

@ -1,6 +1,6 @@
# SPDX-License-Identifier: CC0-1.0 # SPDX-License-Identifier: CC0-1.0
{ stdenv, nixpkgs, dhallApps }: { stdenv, nixpkgs }:
with nixpkgs.buildPackages; with nixpkgs.buildPackages;

View File

@ -1,6 +1,6 @@
# SPDX-License-Identifier: CC0-1.0 # SPDX-License-Identifier: CC0-1.0
{ stdenv, nixpkgs, dhallApps, packages }: { stdenv, nixpkgs, apps, packages }:
let inherit (packages) genodeSources base-hw-pc; let inherit (packages) genodeSources base-hw-pc;
in nixpkgs.writeScriptBin "hw-image" (with nixpkgs.buildPackages; in nixpkgs.writeScriptBin "hw-image" (with nixpkgs.buildPackages;
@ -16,14 +16,13 @@ in nixpkgs.writeScriptBin "hw-image" (with nixpkgs.buildPackages;
TMPDIR="$(${coreutils}/bin/mktemp -d)" TMPDIR="$(${coreutils}/bin/mktemp -d)"
trap "rm -rf $TMPDIR" err exit trap "rm -rf $TMPDIR" err exit
export DHALL_PRELUDE=${packages.dhallPrelude}/package.dhall export DHALL_GENODE=${packages.dhallGenode}/source.dhall
export DHALL_GENODE=${packages.dhallGenode}/package.dhall
build_core() { build_core() {
local lib="$1" local lib="$1"
local modules="$2" local modules="$2"
local link_address="$3" local link_address="$3"
${dhallApps.dhall.program} text <<< \ ${apps.dhall.program} text <<< \
"(${../modules.as.dhall}).to64bitImage ($modules)" \ "(${../modules.as.dhall}).to64bitImage ($modules)" \
> "$TMPDIR/modules.as" > "$TMPDIR/modules.as"
@ -40,14 +39,14 @@ in nixpkgs.writeScriptBin "hw-image" (with nixpkgs.buildPackages;
cat a.out cat a.out
} }
${dhallApps.dhall.program} text \ ${apps.dhall.program} text \
<<< "(env:DHALL_GENODE).Init.render ($@).config" \ <<< "(env:DHALL_GENODE).Init.render ($@).config" \
| ${nixpkgs.buildPackages.libxml2}/bin/xmllint \ | ${nixpkgs.buildPackages.libxml2}/bin/xmllint \
-schema ${packages.genodeSources}/repos/os/src/init/config.xsd - \ -schema ${packages.genodeSources}/repos/os/src/init/config.xsd - \
| sed 's/&gt;/>/g' \ | sed 's/&gt;/>/g' \
> $TMPDIR/config > $TMPDIR/config
${dhallApps.dhall.program} \ ${apps.dhall.program} \
<<< "${../insert-config-rom.dhall} \"$TMPDIR/config\" ($@).rom" \ <<< "${../insert-config-rom.dhall} \"$TMPDIR/config\" ($@).rom" \
> "$TMPDIR/modules.dhall" > "$TMPDIR/modules.dhall"

View File

@ -1,13 +1,12 @@
# SPDX-License-Identifier: CC0-1.0 # SPDX-License-Identifier: CC0-1.0
{ nixpkgs, dhallApps, packages }: { nixpkgs, apps, packages }:
nixpkgs.writeScriptBin "linux-image" (with nixpkgs.buildPackages; '' nixpkgs.writeScriptBin "linux-image" (with nixpkgs.buildPackages; ''
#!${runtimeShell} #!${runtimeShell}
set -eu set -eu
export DHALL_PRELUDE=''${DHALL_PRELUDE:-${packages.dhallPrelude}/package.dhall} export DHALL_GENODE=''${DHALL_GENODE:-${packages.dhallGenode}/source.dhall}
export DHALL_GENODE=''${DHALL_GENODE:-${packages.dhallGenode}/package.dhall} ${apps.dhall.program} text <<< "${./script.dhall} ($@)" > boot.sh
${dhallApps.dhall.program} text <<< "${./script.dhall} ($@)" > boot.sh
source boot.sh source boot.sh
rm boot.sh rm boot.sh
'') '')

View File

@ -9,12 +9,9 @@ let BootModules = Genode.BootModules
let RomEntry = Prelude.Map.Entry Text BootModules.ROM.Type let RomEntry = Prelude.Map.Entry Text BootModules.ROM.Type
let compile = let compile =
λ ( addressType λ(addressType : Text)
: Text
)
→ λ(rom : Prelude.Map.Type Text BootModules.ROM.Type) → λ(rom : Prelude.Map.Type Text BootModules.ROM.Type)
→ let NaturalIndex = → let NaturalIndex = { index : Natural, value : Text }
{ index : Natural, value : Text }
let TextIndex = { index : Text, value : Text } let TextIndex = { index : Text, value : Text }
@ -67,9 +64,7 @@ let compile =
'' ''
++ mapNames ++ mapNames
( λ ( m ( λ(m : TextIndex)
: TextIndex
)
→ '' → ''
${addressType} _boot_module_${m.index}_name ${addressType} _boot_module_${m.index}_name
${addressType} _boot_module_${m.index}_begin ${addressType} _boot_module_${m.index}_begin

View File

@ -1,6 +1,6 @@
# SPDX-License-Identifier: CC0-1.0 # SPDX-License-Identifier: CC0-1.0
{ stdenv, nixpkgs, dhallApps, packages }: { stdenv, nixpkgs, apps, packages }:
let inherit (packages) genodeSources base-nova; let inherit (packages) genodeSources base-nova;
in nixpkgs.writeScriptBin "nova-image" (with nixpkgs.buildPackages; in nixpkgs.writeScriptBin "nova-image" (with nixpkgs.buildPackages;
@ -16,17 +16,16 @@ in nixpkgs.writeScriptBin "nova-image" (with nixpkgs.buildPackages;
TMPDIR="$(${coreutils}/bin/mktemp -d)" TMPDIR="$(${coreutils}/bin/mktemp -d)"
trap "rm -rf $TMPDIR" err exit trap "rm -rf $TMPDIR" err exit
export DHALL_PRELUDE=${packages.dhallPrelude}/package.dhall export DHALL_GENODE=${packages.dhallGenode}/source.dhall
export DHALL_GENODE=${packages.dhallGenode}/package.dhall
${dhallApps.dhall.program} text \ ${apps.dhall.program} text \
<<< "(env:DHALL_GENODE).Init.render ($@).config" \ <<< "(env:DHALL_GENODE).Init.render ($@).config" \
| ${nixpkgs.buildPackages.libxml2}/bin/xmllint \ | ${nixpkgs.buildPackages.libxml2}/bin/xmllint \
-schema ${packages.genodeSources}/repos/os/src/init/config.xsd - \ -schema ${packages.genodeSources}/repos/os/src/init/config.xsd - \
| sed 's/&gt;/>/g' \ | sed 's/&gt;/>/g' \
> $TMPDIR/config > $TMPDIR/config
${dhallApps.dhall.program} text \ ${apps.dhall.program} text \
<<< "(${../modules.as.dhall}).to64bitImage (${ <<< "(${../modules.as.dhall}).to64bitImage (${
../insert-config-rom.dhall ../insert-config-rom.dhall
} \"$TMPDIR/config\" ($@).rom)" \ } \"$TMPDIR/config\" ($@).rom)" \

View File

@ -1,13 +1,12 @@
# SPDX-License-Identifier: CC0-1.0 # SPDX-License-Identifier: CC0-1.0
{ nixpkgs, dhallApps, packages }: { nixpkgs, apps, packages }:
nixpkgs.writeScriptBin "render-init" (with nixpkgs.buildPackages; '' nixpkgs.writeScriptBin "render-init" (with nixpkgs.buildPackages; ''
#!${runtimeShell} #!${runtimeShell}
set -eu set -eu
export DHALL_PRELUDE=''${DHALL_PRELUDE:-${packages.dhallPrelude}/package.dhall} export DHALL_GENODE=''${DHALL_GENODE:-${packages.dhallGenode}/source.dhall}
export DHALL_GENODE=''${DHALL_GENODE:-${packages.dhallGenode}/package.dhall} ${apps.dhall.program} text \
${dhallApps.dhall.program} text \
<<< "(env:DHALL_GENODE).Init.render ($(cat))" \ <<< "(env:DHALL_GENODE).Init.render ($(cat))" \
| ${nixpkgs.buildPackages.libxml2}/bin/xmllint \ | ${nixpkgs.buildPackages.libxml2}/bin/xmllint \
-format \ -format \

View File

@ -33,8 +33,7 @@ let drivers =
, ServiceRoute.child "Input" "input_filter" , ServiceRoute.child "Input" "input_filter"
, ServiceRoute.child "Rtc" "rtc" , ServiceRoute.child "Rtc" "rtc"
] ]
, children = , children = toMap
toMap
{ rtc = { rtc =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
@ -49,8 +48,7 @@ let drivers =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "rom_reporter" , binary = "rom_reporter"
, config = , config = Init.Config::{
Init.Config::{
, content = , content =
[ XML.text [ XML.text
'' ''
@ -80,8 +78,10 @@ let drivers =
Child.Attributes::{ Child.Attributes::{
, binary = "acpi_drv" , binary = "acpi_drv"
, priority = 1 , priority = 1
, resources = , resources = Resources::{
Resources::{ caps = 350, ram = Genode.units.MiB 4 } , caps = 350
, ram = Genode.units.MiB 4
}
, romReports = [ label "acpi" ] , romReports = [ label "acpi" ]
, routes = , routes =
[ ServiceRoute.parent "IO_MEM" [ ServiceRoute.parent "IO_MEM"
@ -95,8 +95,7 @@ let drivers =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "platform_drv" , binary = "platform_drv"
, resources = , resources = Resources::{
Resources::{
, caps = 400 , caps = 400
, ram = Genode.units.MiB 4 , ram = Genode.units.MiB 4
, constrainPhys = True , constrainPhys = True
@ -114,8 +113,7 @@ let drivers =
(Some "system") (Some "system")
(Some "system") (Some "system")
] ]
, config = , config = Init.Config::{
Init.Config::{
, attributes = toMap { system = "yes" } , attributes = toMap { system = "yes" }
, content = , content =
[ XML.text [ XML.text
@ -161,8 +159,10 @@ let drivers =
Child.Attributes::{ Child.Attributes::{
, binary = "usb_drv" , binary = "usb_drv"
, priority = 1 , priority = 1
, resources = , resources = Resources::{
Resources::{ caps = 200, ram = Genode.units.MiB 16 } , caps = 200
, ram = Genode.units.MiB 16
}
, provides = [ "Input", "Usb" ] , provides = [ "Input", "Usb" ]
, reportRoms = [ relabel "config" "usb_drv.config" ] , reportRoms = [ relabel "config" "usb_drv.config" ]
, romReports = [ relabel "devices" "usb_devices" ] , romReports = [ relabel "devices" "usb_devices" ]
@ -241,8 +241,10 @@ let drivers =
Child.Attributes::{ Child.Attributes::{
, binary = "init" , binary = "init"
, priority = 1 , priority = 1
, resources = , resources = Resources::{
Resources::{ caps = 1400, ram = Genode.units.MiB 64 } , caps = 1400
, ram = Genode.units.MiB 64
}
, provides = [ "Framebuffer", "Block" ] , provides = [ "Framebuffer", "Block" ]
, romReports = [ label "ahci_ports", label "nvme_ns" ] , romReports = [ label "ahci_ports", label "nvme_ns" ]
, reportRoms = [ relabel "config" "dynamic.config" ] , reportRoms = [ relabel "config" "dynamic.config" ]

View File

@ -1,58 +1,5 @@
{ {
"inputs": { "nodes": {
"dhall-haskell": {
"info": {
"narHash": "sha256-KJl9ZLcMcEsLSPcwcWoc0Ac74/6HKC9LkVMeLwhyhlg="
},
"inputs": {
"nixpkgs": {
"info": {
"narHash": "sha256-wJg4DA700SoQbEz61448sR6BgxRa1R92K3vvCV1g+HY="
},
"inputs": {},
"locked": {
"ref": "18.09-beta",
"rev": "1d4de0d552ae9aa66a5b8dee5fb0650a4372d148",
"type": "git",
"url": "https://github.com/nixos/nixpkgs.git"
},
"original": {
"ref": "18.09-beta",
"rev": "1d4de0d552ae9aa66a5b8dee5fb0650a4372d148",
"type": "git",
"url": "https://github.com/nixos/nixpkgs.git"
}
},
"nixpkgsStaticLinux": {
"info": {
"narHash": "sha256-famU3pJZ4vkElV9qc71HmyRVSvcrAhfMZ0UJKpmmKP8="
},
"inputs": {},
"locked": {
"ref": "static-haskell-nix-stack-dhall-working",
"rev": "925aac04f4ca58aceb83beef18cb7dae0715421b",
"type": "git",
"url": "https://github.com/nh2/nixpkgs.git"
},
"original": {
"ref": "static-haskell-nix-stack-dhall-working",
"type": "git",
"url": "https://github.com/nh2/nixpkgs.git"
}
}
},
"locked": {
"ref": "flake",
"rev": "aea28adf3d10ff1982aa4ddd176d1476251b932f",
"type": "git",
"url": "https://github.com/dhall-lang/dhall-haskell"
},
"original": {
"ref": "flake",
"type": "git",
"url": "https://github.com/dhall-lang/dhall-haskell"
}
},
"genode-depot": { "genode-depot": {
"info": { "info": {
"lastModified": 1584019323, "lastModified": 1584019323,
@ -60,23 +7,7 @@
"revCount": 8 "revCount": 8
}, },
"inputs": { "inputs": {
"nixpkgs": { "nixpkgs": "nixpkgs"
"info": {
"lastModified": 1584015812,
"narHash": "sha256-oDj4g9nL3fp3xh0jAPZSHiucDxkLXA/rO3uM8L6kE0Y="
},
"inputs": {},
"locked": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a3735dcbd7b2530ae3bcf73fd91e1ca6aa9449e7",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
}
}, },
"locked": { "locked": {
"ref": "master", "ref": "master",
@ -90,11 +21,43 @@
} }
}, },
"nixpkgs": { "nixpkgs": {
"info": {
"lastModified": 1584015812,
"narHash": "sha256-oDj4g9nL3fp3xh0jAPZSHiucDxkLXA/rO3uM8L6kE0Y="
},
"locked": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a3735dcbd7b2530ae3bcf73fd91e1ca6aa9449e7",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgsUpstream": {
"info": {
"lastModified": 1584464280,
"narHash": "sha256-ovYhaoANbsuIRik2zOe5Sxhn0eu5PnExP4IhAJxRUW0="
},
"locked": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7806df1e5f5d49864d917497a4cd2f5ec1a359f8",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"info": { "info": {
"lastModified": 1583160598, "lastModified": 1583160598,
"narHash": "sha256-jiBSr7JK/xy7pIXFVhjdxpWy0pudDDRDW5XjzmDXPjA=" "narHash": "sha256-jiBSr7JK/xy7pIXFVhjdxpWy0pudDDRDW5XjzmDXPjA="
}, },
"inputs": {},
"locked": { "locked": {
"owner": "ehmry", "owner": "ehmry",
"repo": "nixpkgs", "repo": "nixpkgs",
@ -106,7 +69,15 @@
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
},
"root": {
"inputs": {
"genode-depot": "genode-depot",
"nixpkgs": "nixpkgs_2",
"nixpkgsUpstream": "nixpkgsUpstream"
}
} }
}, },
"version": 4 "root": "root",
"version": 5
} }

View File

@ -6,13 +6,12 @@
description = "Genode packages"; description = "Genode packages";
inputs = { inputs = {
dhall-haskell.uri =
"git+https://github.com/dhall-lang/dhall-haskell?ref=flake";
genode-depot.uri = "git+https://git.sr.ht/~ehmry/genode-depot"; genode-depot.uri = "git+https://git.sr.ht/~ehmry/genode-depot";
nixpkgs.uri = "github:ehmry/nixpkgs"; nixpkgs.uri = "github:ehmry/nixpkgs";
nixpkgsUpstream.uri = "github:NixOS/nixpkgs";
}; };
outputs = { self, dhall-haskell, genode-depot, nixpkgs }: outputs = { self, genode-depot, nixpkgs, nixpkgsUpstream }:
let let
mkOutput = { system, localSystem, crossSystem }: mkOutput = { system, localSystem, crossSystem }:
let thisSystem = builtins.getAttr system; let thisSystem = builtins.getAttr system;
@ -20,7 +19,7 @@
lib = (nixpkgs.lib) // (import ./lib { lib = (nixpkgs.lib) // (import ./lib {
inherit system localSystem crossSystem; inherit system localSystem crossSystem;
inherit nixpkgs dhall-haskell genode-depot; inherit apps nixpkgs genode-depot;
genodepkgs = self; genodepkgs = self;
}); });
@ -28,31 +27,29 @@
# pass thru Nixpkgs # pass thru Nixpkgs
packages = import ./packages { packages = import ./packages {
inherit system legacyPackages; inherit system legacyPackages apps;
localPackages = nixpkgsUpstream.legacyPackages.${localSystem};
depot = thisSystem genode-depot.packages; depot = thisSystem genode-depot.packages;
apps = self.apps.${localSystem};
dhallApps = dhall-haskell.apps.${localSystem};
}; };
devShell = legacyPackages.mkShell { devShell = legacyPackages.mkShell {
nativeBuildInputs = [ dhall-haskell.packages.${localSystem}.dhall ]; nativeBuildInputs = [
shellHook = '' nixpkgs.legacyPackages.${localSystem}.dhall
export DHALL_PRELUDE="${packages.dhallPrelude}/package.dhall" packages.dhallGenode
export DHALL_GENODE="${packages.dhallGenode}/package.dhall" ];
'';
}; };
apps = import ./apps { apps = import ./apps {
self = self.apps.${localSystem};
nixpkgs = legacyPackages; nixpkgs = legacyPackages;
dhallApps = dhall-haskell.apps.${localSystem}; nixpkgsLocal = nixpkgsUpstream.legacyPackages.${localSystem};
inherit packages; inherit packages;
}; };
checks = import ./tests { checks = import ./tests {
inherit system localSystem crossSystem; inherit system localSystem crossSystem;
apps = dhall-haskell.apps.${localSystem} // apps;
inherit self nixpkgs genode-depot; inherit self nixpkgs genode-depot;
inherit lib; inherit apps lib;
genodepkgs = thisSystem self.packages; genodepkgs = thisSystem self.packages;
}; };

View File

@ -1,18 +1,10 @@
# SPDX-License-Identifier: CC0-1.0 # SPDX-License-Identifier: CC0-1.0
{ system, localSystem, crossSystem, genodepkgs, nixpkgs, dhall-haskell { system, localSystem, crossSystem, genodepkgs, nixpkgs, genode-depot, apps }:
, genode-depot }:
let let
thisSystem = builtins.getAttr system; thisSystem = builtins.getAttr system;
hostPkgs = import nixpkgs { hostPkgs = nixpkgs.legacyPackages.${localSystem};
system = localSystem;
overlays = [
(self: super: {
inherit (builtins.getAttr localSystem dhall-haskell.packages) dhall;
})
];
};
testPkgs = thisSystem genodepkgs.packages; testPkgs = thisSystem genodepkgs.packages;
depot = thisSystem genode-depot.packages; depot = thisSystem genode-depot.packages;

View File

@ -1,12 +1,9 @@
# SPDX-License-Identifier: CC0-1.0 # SPDX-License-Identifier: CC0-1.0
{ system, legacyPackages, depot, apps, dhallApps }: { system, legacyPackages, localPackages, depot, apps }:
let let
inherit (legacyPackages) callPackage; dhallPackages = import ./dhall { inherit (localPackages) callPackage; };
dhallPackages = legacyPackages.dhallPackages
// (callPackage ./dhall { inherit dhallApps; });
mkDhallManifest = drv: mkDhallManifest = drv:
legacyPackages.runCommand "${drv.name}.dhall" { inherit drv; } legacyPackages.runCommand "${drv.name}.dhall" { inherit drv; }
@ -90,8 +87,6 @@ in rec {
dhallGenode = dhallPackages.genode; dhallGenode = dhallPackages.genode;
dhallPrelude = dhallPackages.prelude;
NOVA = legacyPackages.callPackage ./NOVA { }; NOVA = legacyPackages.callPackage ./NOVA { };
libc = callPackage' ./libc { inherit depot; }; libc = callPackage' ./libc { inherit depot; };

View File

@ -1,10 +1,7 @@
# SPDX-License-Identifier: CC0-1.0 # SPDX-License-Identifier: CC0-1.0
{ callPackage, dhallApps }: { callPackage }:
rec { {
prelude = prelude_11_0_0; genode = callPackage ./genode.nix { };
prelude_11_0_0 = callPackage ./prelude-11.0.0.nix { };
prelude_9_0_0 = callPackage ./prelude-9.0.0.nix { };
genode = callPackage ./genode.nix { inherit dhallApps prelude; };
} }

View File

@ -1,21 +1,19 @@
# SPDX-License-Identifier: CC0-1.0 # SPDX-License-Identifier: CC0-1.0
{ stdenv, fetchgit, dhallApps, prelude }: { stdenv, fetchgit, dhallPackages }:
stdenv.mkDerivation { dhallPackages.buildDhallPackage {
name = "dhall-genode"; name = "dhall-genode";
code = let
src = fetchgit { src = fetchgit {
url = "https://git.sr.ht/~ehmry/dhall-genode"; url = "https://git.sr.ht/~ehmry/dhall-genode";
rev = "16cad9fbbee3fbd1c167377c93ee1d60f9d21e37"; rev = "f05a2dbd8b675757d5d24276feaa66f4e5ab78a7";
sha256 = "0gjad37zd1kb5dlnkb3m8pd1ibzcc9yqf6vgyv3imffj1vhdl14n"; sha256 = "0l3pjkcd3kajlkdwckggr9l9jxcjrkc86gngpmvfmvl5gkvz12k3";
}; };
DHALL_PRELUDE = prelude + "/package.dhall"; in src + "/package.dhall";
buildCommand = ''
export XDG_CACHE_HOME=$TMPDIR dependencies = [ dhallPackages.Prelude."13.0.0" ];
cp -r $src $out
chmod +w -R $out source = true;
echo $DHALL_PRELUDE > $out/Prelude.dhall
find $out -type f -exec \
${dhallApps.dhall.program} freeze --all --inplace {} \;
'';
} }

View File

@ -1,25 +0,0 @@
# SPDX-License-Identifier: CC0-1.0
{ stdenvNoCC, lib, fetchgit }:
stdenvNoCC.mkDerivation {
name = "dhall-prelude";
version = " 11.0.0";
src = fetchgit {
url = "https://github.com/dhall-lang/dhall-lang";
rev = "8098184d17c3aecc82674a7b874077a7641be05a";
sha256 = "0rdvyxq7mvas82wsfzzpk6imzm8ax4q58l522mx0ks69pacpr3yi";
};
phases = [ "unpackPhase" "installPhase" ];
installPhase = ''
cp -r Prelude $out
'';
meta = {
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ ehmry ];
};
}

View File

@ -1,26 +0,0 @@
# SPDX-License-Identifier: CC0-1.0
{ stdenvNoCC, lib, fetchFromGitHub }:
stdenvNoCC.mkDerivation {
name = "dhall-prelude";
version = " 10.0.0";
src = fetchFromGitHub {
owner = "dhall-lang";
repo = "dhall-lang";
rev = "ef644a00e77a3c2c6c503e18e65865fd6d74fc2a";
sha256 = "1md16ri1l6iid2p1zg17n3ap3813v0f43vrbxc280qgxhq617sdk";
};
phases = [ "unpackPhase" "installPhase" ];
installPhase = ''
cp -r Prelude $out
'';
meta = {
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ ehmry ];
};
}

View File

@ -45,8 +45,7 @@ let
++ testInputs); ++ testInputs);
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})"; testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
testEnv' = { testEnv' = {
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall"; DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
MANIFEST = manifest; MANIFEST = manifest;
XDG_CACHE_HOME = "/tmp"; XDG_CACHE_HOME = "/tmp";
} // testEnv; } // testEnv;

View File

@ -42,8 +42,7 @@ let
(with testPkgs; [ base-linux init sotest-producer ] ++ testInputs); (with testPkgs; [ base-linux init sotest-producer ] ++ testInputs);
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})"; testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
env' = { env' = {
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall"; DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
MANIFEST = manifest; MANIFEST = manifest;
XDG_CACHE_HOME = "/tmp"; XDG_CACHE_HOME = "/tmp";
} // env; } // env;

View File

@ -45,8 +45,7 @@ let
++ testInputs); ++ testInputs);
testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})"; testConfig' = "${./test-wrapper.dhall} ${testConfig} (toMap ${manifest})";
testEnv' = { testEnv' = {
DHALL_PRELUDE = "${testPkgs.dhallPrelude}/package.dhall"; DHALL_GENODE = "${testPkgs.dhallGenode}/source.dhall";
DHALL_GENODE = "${testPkgs.dhallGenode}/package.dhall";
MANIFEST = manifest; MANIFEST = manifest;
XDG_CACHE_HOME = "/tmp"; XDG_CACHE_HOME = "/tmp";
} // testEnv; } // testEnv;

View File

@ -25,11 +25,9 @@ let childRomRoute =
let label = λ(_ : Text) → { local = _, route = _ } let label = λ(_ : Text) → { local = _, route = _ }
in Genode.Boot::{ in Genode.Boot::{
, config = , config = Init::{
Init::{
, verbose = True , verbose = True
, children = , children = toMap
toMap
{ drivers = { drivers =
Init.toChild Init.toChild
drivers drivers
@ -38,9 +36,7 @@ in Genode.Boot::{
, resources = Init.Resources::{ ram = Genode.units.MiB 4 } , resources = Init.Resources::{ ram = Genode.units.MiB 4 }
, romReports = [ label "block_devices" ] , romReports = [ label "block_devices" ]
, routes = , routes =
[ parentRomRoute [ parentRomRoute "managed/input_filter" "input_filter.config"
"managed/input_filter"
"input_filter.config"
, parentRomRoute " numlock_remap" "numlock_remap.config" , parentRomRoute " numlock_remap" "numlock_remap.config"
, childRomRoute "dynamic_rom" "capslock" , childRomRoute "dynamic_rom" "capslock"
, childRomRoute "dynamic_rom" "numlock" , childRomRoute "dynamic_rom" "numlock"
@ -58,8 +54,7 @@ in Genode.Boot::{
, binary = "dynamic_rom" , binary = "dynamic_rom"
, resources = Resources::{ ram = Genode.units.MiB 4 } , resources = Resources::{ ram = Genode.units.MiB 4 }
, provides = [ "ROM" ] , provides = [ "ROM" ]
, config = , config = Genode.Init.Config::{
Genode.Init.Config::{
, content = , content =
[ Genode.Prelude.XML.text [ Genode.Prelude.XML.text
'' ''
@ -77,8 +72,7 @@ in Genode.Boot::{
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "test-driver_manager" , binary = "test-driver_manager"
, config = , config = Init.Config::{
Init.Config::{
, content = , content =
[ Genode.Prelude.XML.text [ Genode.Prelude.XML.text
'' ''
@ -104,8 +98,7 @@ in Genode.Boot::{
, numlock = "<feature_creep/>" , numlock = "<feature_creep/>"
, usb_policy = "<usb/>" , usb_policy = "<usb/>"
} }
# [ { mapKey = # [ { mapKey = "fb_drv.config"
"fb_drv.config"
, mapValue = , mapValue =
'' ''
<config width="1024" height="768" buffered="yes"/> <config width="1024" height="768" buffered="yes"/>
@ -113,8 +106,7 @@ in Genode.Boot::{
</config> </config>
'' ''
} }
, { mapKey = , { mapKey = "input_filter.config"
"input_filter.config"
, mapValue = , mapValue =
'' ''
<config> <config>

View File

@ -5,17 +5,14 @@ let Genode = env:DHALL_GENODE
let Child = Genode.Init.Child let Child = Genode.Init.Child
in Genode.Boot::{ in Genode.Boot::{
, config = , config = Genode.Init::{
Genode.Init::{ , children = toMap
, children =
toMap
{ test-log = { test-log =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "test-log" , binary = "test-log"
, exitPropagate = True , exitPropagate = True
, resources = , resources = Genode.Init.Resources::{
Genode.Init.Resources::{
, caps = 500 , caps = 500
, ram = Genode.units.MiB 10 , ram = Genode.units.MiB 10
} }

View File

@ -5,25 +5,20 @@ let Genode = env:DHALL_GENODE
let Child = Genode.Init.Child let Child = Genode.Init.Child
in Genode.Boot::{ in Genode.Boot::{
, config = , config = Genode.Init::{
Genode.Init::{ , children = toMap
, children =
toMap
{ noux = { noux =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "noux" , binary = "noux"
, exitPropagate = True , exitPropagate = True
, resources = , resources = Genode.Init.Resources::{
Genode.Init.Resources::{
, caps = 500 , caps = 500
, ram = Genode.units.MiB 10 , ram = Genode.units.MiB 10
} }
, routes = [ Genode.Init.ServiceRoute.parent "Timer" ] , routes = [ Genode.Init.ServiceRoute.parent "Timer" ]
, config = , config = Genode.Init.Config::{
Genode.Init.Config::{ , attributes = toMap
, attributes =
toMap
{ stdin = "/script" { stdin = "/script"
, stdout = "/dev/log" , stdout = "/dev/log"
, stderr = "/dev/log" , stderr = "/dev/log"

View File

@ -15,11 +15,9 @@ let ServiceRoute = Init.ServiceRoute
let label = λ(_ : Text) → { local = _, route = _ } : Child.Attributes.Label let label = λ(_ : Text) → { local = _, route = _ } : Child.Attributes.Label
in Genode.Boot::{ in Genode.Boot::{
, config = , config = Init::{
Init::{
, verbose = True , verbose = True
, children = , children = toMap
toMap
{ test-pci = { test-pci =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
@ -32,8 +30,7 @@ in Genode.Boot::{
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "acpi_drv" , binary = "acpi_drv"
, resources = , resources = Resources::{
Resources::{
, caps = 400 , caps = 400
, ram = Genode.units.MiB 4 , ram = Genode.units.MiB 4
, constrainPhys = True , constrainPhys = True
@ -50,8 +47,7 @@ in Genode.Boot::{
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "platform_drv" , binary = "platform_drv"
, resources = , resources = Resources::{
Resources::{
, caps = 800 , caps = 800
, ram = Genode.units.MiB 4 , ram = Genode.units.MiB 4
, constrainPhys = True , constrainPhys = True
@ -64,8 +60,7 @@ in Genode.Boot::{
, ServiceRoute.parent "IO_MEM" , ServiceRoute.parent "IO_MEM"
, ServiceRoute.parent "IO_PORT" , ServiceRoute.parent "IO_PORT"
] ]
, config = , config = Init.Config::{
Init.Config::{
, content = , content =
[ XML.text [ XML.text
'' ''

View File

@ -5,10 +5,8 @@ let Genode = env:DHALL_GENODE
let Child = Genode.Init.Child let Child = Genode.Init.Child
in Genode.Boot::{ in Genode.Boot::{
, config = , config = Genode.Init::{
Genode.Init::{ , children = toMap
, children =
toMap
{ test-rtc = { test-rtc =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{

View File

@ -7,18 +7,15 @@ let Init = Genode.Init
let Child = Init.Child let Child = Init.Child
in Genode.Boot::{ in Genode.Boot::{
, config = , config = Init::{
Init::{ , children = toMap
, children =
toMap
{ test-signal = { test-signal =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "test-signal" , binary = "test-signal"
, exitPropagate = True , exitPropagate = True
, priority = 5 , priority = 5
, resources = , resources = Init.Resources::{
Init.Resources::{
, caps = 500 , caps = 500
, ram = Genode.units.MiB 10 , ram = Genode.units.MiB 10
} }

View File

@ -7,17 +7,17 @@ let Init = Genode.Init
let Child = Init.Child let Child = Init.Child
in Genode.Boot::{ in Genode.Boot::{
, config = , config = Init::{
Init::{ , children = toMap
, children =
toMap
{ solo5 = { solo5 =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "solo5-test_blk" , binary = "solo5-test_blk"
, exitPropagate = True , exitPropagate = True
, resources = , resources = Init.Resources::{
Init.Resources::{ caps = 256, ram = Genode.units.MiB 3 } , caps = 256
, ram = Genode.units.MiB 3
}
, routes = , routes =
[ Init.ServiceRoute.parent "Timer" [ Init.ServiceRoute.parent "Timer"
, Init.ServiceRoute.child "Block" "block" , Init.ServiceRoute.child "Block" "block"
@ -29,10 +29,8 @@ in Genode.Boot::{
, binary = "ram_block" , binary = "ram_block"
, provides = [ "Block" ] , provides = [ "Block" ]
, resources = Init.Resources::{ ram = Genode.units.MiB 9 } , resources = Init.Resources::{ ram = Genode.units.MiB 9 }
, config = , config = Init.Config::{
Init.Config::{ , attributes = toMap { size = "8M", block_size = "4096" }
, attributes =
toMap { size = "8M", block_size = "4096" }
} }
} }
} }

View File

@ -11,10 +11,8 @@ let Res = Init.Resources
let ServiceRoute = Init.ServiceRoute let ServiceRoute = Init.ServiceRoute
in Genode.Boot::{ in Genode.Boot::{
, config = , config = Init::{
Init::{ , children = toMap
, children =
toMap
{ nic = { nic =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
@ -28,8 +26,7 @@ in Genode.Boot::{
, resources = Res::{ caps = 200, ram = Genode.units.MiB 6 } , resources = Res::{ caps = 200, ram = Genode.units.MiB 6 }
, provides = [ "Nic" ] , provides = [ "Nic" ]
, routes = [ ServiceRoute.child "Nic" "nic" ] , routes = [ ServiceRoute.child "Nic" "nic" ]
, config = , config = Init.Config::{
Init.Config::{
, attributes = toMap { mac = "02:02:02:02:03:00" } , attributes = toMap { mac = "02:02:02:02:03:00" }
, content = , content =
[ Genode.Prelude.XML.text [ Genode.Prelude.XML.text
@ -49,11 +46,9 @@ in Genode.Boot::{
[ ServiceRoute.parent "Timer" [ ServiceRoute.parent "Timer"
, ServiceRoute.child "Nic" "bridge" , ServiceRoute.child "Nic" "bridge"
] ]
, config = , config = Init.Config::{
Init.Config::{
, content = , content =
[ Genode.Prelude.XML.text "<cmdline>limit</cmdline>" [ Genode.Prelude.XML.text "<cmdline>limit</cmdline>" ]
]
} }
} }
, ping = , ping =
@ -66,10 +61,8 @@ in Genode.Boot::{
[ ServiceRoute.parent "Timer" [ ServiceRoute.parent "Timer"
, ServiceRoute.child "Nic" "bridge" , ServiceRoute.child "Nic" "bridge"
] ]
, config = , config = Init.Config::{
Init.Config::{ , attributes = toMap
, attributes =
toMap
{ interface = "10.0.0.72/24" { interface = "10.0.0.72/24"
, dst_ip = "10.0.0.2" , dst_ip = "10.0.0.2"
, period_sec = "1" , period_sec = "1"

View File

@ -9,10 +9,8 @@ let Child = Init.Child
let Res = Init.Resources let Res = Init.Resources
in Genode.Boot::{ in Genode.Boot::{
, config = , config = Init::{
Init::{ , children = toMap
, children =
toMap
{ nic = { nic =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
@ -26,8 +24,7 @@ in Genode.Boot::{
, resources = Res::{ caps = 200, ram = Genode.units.MiB 8 } , resources = Res::{ caps = 200, ram = Genode.units.MiB 8 }
, provides = [ "Nic" ] , provides = [ "Nic" ]
, routes = [ Genode.Init.ServiceRoute.child "Nic" "nic" ] , routes = [ Genode.Init.ServiceRoute.child "Nic" "nic" ]
, config = , config = Init.Config::{
Init.Config::{
, content = , content =
[ Genode.Prelude.XML.text [ Genode.Prelude.XML.text
'' ''
@ -47,8 +44,7 @@ in Genode.Boot::{
[ Genode.Init.ServiceRoute.parent "Timer" [ Genode.Init.ServiceRoute.parent "Timer"
, Genode.Init.ServiceRoute.child "Nic" "bridge" , Genode.Init.ServiceRoute.child "Nic" "bridge"
] ]
, config = , config = Init.Config::{
Init.Config::{
, content = , content =
[ Genode.Prelude.XML.text [ Genode.Prelude.XML.text
'' ''
@ -67,8 +63,7 @@ in Genode.Boot::{
[ Genode.Init.ServiceRoute.parent "Timer" [ Genode.Init.ServiceRoute.parent "Timer"
, Genode.Init.ServiceRoute.child "Nic" "bridge" , Genode.Init.ServiceRoute.child "Nic" "bridge"
] ]
, config = , config = Init.Config::{
Init.Config::{
, content = , content =
[ Genode.Prelude.XML.text [ Genode.Prelude.XML.text
'' ''

View File

@ -12,22 +12,18 @@ let Config = Init.Config
in λ(testBinary : Text) in λ(testBinary : Text)
→ Genode.Boot::{ → Genode.Boot::{
, config = , config = Init::{
Init::{ , children = toMap
, children =
toMap
{ solo5 = { solo5 =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = testBinary , binary = testBinary
, exitPropagate = True , exitPropagate = True
, resources = , resources = Init.Resources::{
Init.Resources::{
, caps = 256 , caps = 256
, ram = Genode.units.MiB 3 , ram = Genode.units.MiB 3
} }
, config = , config = Config::{
Config::{
, content = , content =
[ Prelude.XML.element [ Prelude.XML.element
{ name = "cmdline" { name = "cmdline"

View File

@ -5,17 +5,14 @@ let Genode = env:DHALL_GENODE
let Child = Genode.Init.Child let Child = Genode.Init.Child
in Genode.Boot::{ in Genode.Boot::{
, config = , config = Genode.Init::{
Genode.Init::{ , children = toMap
, children =
toMap
{ solo5 = { solo5 =
Child.flat Child.flat
Child.Attributes::{ Child.Attributes::{
, binary = "solo5-test_time" , binary = "solo5-test_time"
, exitPropagate = True , exitPropagate = True
, resources = , resources = Genode.Init.Resources::{
Genode.Init.Resources::{
, caps = 256 , caps = 256
, ram = Genode.units.MiB 3 , ram = Genode.units.MiB 3
} }

View File

@ -33,8 +33,7 @@ let TextMapType = Prelude.Map.Type Text
in λ(boot : Genode.Boot.Type) in λ(boot : Genode.Boot.Type)
→ λ(inputsManifest : TextMapType (TextMapType Text)) → λ(inputsManifest : TextMapType (TextMapType Text))
→ boot → boot
⫽ { config = ⫽ { config = Init::{
Init::{
, children = , children =
[ { mapKey = "timer" [ { mapKey = "timer"
, mapValue = , mapValue =