Update flake attributes, README, cleanup
Thanks to Dan Connolly for noticing deprecated formating in the flake.
This commit is contained in:
parent
46c6561302
commit
e3e5528569
99
README.md
99
README.md
|
@ -19,10 +19,16 @@
|
|||
|
||||
**SoTest:** https://opensource.sotest.io/userName%3Demery/1
|
||||
|
||||
## Repository layout
|
||||
|
||||
- Native packages are at [packages](./packages/default.nix)
|
||||
|
||||
- Existing Nixpkgs packages are patched at [overlay](./overlay/default.nix)
|
||||
|
||||
- Tests are at [tests](./tests/default.nix) (messy)
|
||||
|
||||
# Contributing
|
||||
|
||||
At the moment every user needs to also act as distro developer, designing how
|
||||
packaging works needs to be done before packages can be submitted in bulk.
|
||||
Patches can be submitted and issues reported via the
|
||||
[mailing list](https://lists.sr.ht/~ehmry/genodepkgs). The mailing list is the
|
||||
minimum viable mechanism for community development, and may be replaced later.
|
||||
|
@ -31,37 +37,24 @@ The worksites at the moment are:
|
|||
|
||||
- Documentation
|
||||
|
||||
- Port tests to the NixOS test harness.
|
||||
- ARM, i686
|
||||
|
||||
- Patching standard Nixpkgs packages via an overlay. Workflow and tooling
|
||||
needs to be explored for building emulated UNIX environments.
|
||||
- Write a proper test framework, or better, reuse the NixOS one.
|
||||
|
||||
- Patching standard Nixpkgs packages by overlay. Explore Workflow and tooling
|
||||
for building emulated UNIX environments.
|
||||
|
||||
- LLVM testing and upstreaming patches.
|
||||
|
||||
- Formalizing Dhall configuration types.
|
||||
|
||||
- NixOS modules for constructing a reasonably usable Genode system. Reusing the
|
||||
module system from NixOS is advantagous because a dual boot system can
|
||||
share a `/nix/store` and be updated simultaneously. Work-in-progress on a
|
||||
topic branch.
|
||||
|
||||
- Configuration validation via a service routing prover.
|
||||
|
||||
|
||||
# Packaging
|
||||
|
||||
Packaging is done using standard Nixpkgs methods, a `stdenv` is available for
|
||||
cross-compilation. See [Solo5](./packages/solo5/default.nix) as an example.
|
||||
|
||||
|
||||
# System description format
|
||||
|
||||
The high-level interface to system building are boot descriptions. These Dhall
|
||||
documents describe the configuration of an [Init](https://genode.org/documentation/genode-foundations/19.05/system_configuration/The_init_component.html)
|
||||
instance and a store of ROM (Read-Only Memory) modules. These description can be
|
||||
used to build firmware-like binary images or merged and nested within other
|
||||
descriptions. In theory these descriptions can arrange file-systems, but those
|
||||
functions are missing.
|
||||
|
||||
The description schema is documented as code:
|
||||
https://git.sr.ht/~ehmry/dhall-genode/tree/master/Boot/package.dhall
|
||||
|
||||
|
||||
# Nix Flakes
|
||||
|
||||
This repository is structured as a Nix flake, which is an experimental extension
|
||||
|
@ -70,21 +63,34 @@ introduction and tutorial.
|
|||
|
||||
## Build Caching
|
||||
|
||||
The builds produced by Hydra are available as a binary cache, using the cache is
|
||||
strongly recommended.
|
||||
|
||||
The global (IPv6 only) address for the cache can be tested by fetching the
|
||||
following: http://cache.server7.hq.c3d2.de/nix-cache-info.
|
||||
|
||||
If that fails the cache is also available within the
|
||||
[Yggdrasil](https://yggdrasil-network.github.io/) network:
|
||||
http://nix-serve.y.c3d2.de/nix-cache-info.
|
||||
|
||||
Those with IPv6 will want to the following to their */etc/nix/nix.conf* file:
|
||||
|
||||
```
|
||||
substituters = https://cache.nixos.org/ https://cache.server7.hq.c3d2.de/
|
||||
substituters = https://cache.nixos.org https://cache.server7.hq.c3d2.de
|
||||
trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= cache.server7.hq.c3d2.de:x8JLRG26zRZ8ysYZLEkPxuAYuK1VSJi/aMAEIs2Lv+U=
|
||||
```
|
||||
|
||||
|
||||
NixOS users may alternatively using the following configuration:
|
||||
|
||||
```nix
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# The following enables the use of a binary cache (IPv6 only)
|
||||
nix.binaryCaches = [ "https://cache.server7.hq.c3d2.de" ];
|
||||
nix.binaryCaches = [
|
||||
"https://cache.nixos.org"
|
||||
"https://cache.server7.hq.c3d2.de"
|
||||
# or "http://nix-serve.y.c3d2.de"
|
||||
];
|
||||
nix.binaryCachePublicKeys = [
|
||||
"cache.server7.hq.c3d2.de:x8JLRG26zRZ8ysYZLEkPxuAYuK1VSJi/aMAEIs2Lv+U="
|
||||
];
|
||||
|
@ -102,6 +108,11 @@ $ nix build .#checks.x86_64-linux.nova-x86
|
|||
$ nix log .#checks.x86_64-linux.nova-x86
|
||||
```
|
||||
|
||||
# Packaging
|
||||
|
||||
Packaging is done using standard Nixpkgs methods, a `stdenv` is available for
|
||||
cross-compilation. See [Solo5](./packages/solo5/default.nix) as an example.
|
||||
|
||||
# Toolchain
|
||||
|
||||
The Genode Labs toolchain is available here only for Linux and in binary form.
|
||||
|
@ -116,14 +127,6 @@ nix run .#legacyPackages.x86_64-linux-x86_64-genode.stdenv.cc
|
|||
x86_64-unknown-genode-clang++ -v
|
||||
```
|
||||
|
||||
# Building
|
||||
|
||||
Bootstrapping the build tooling can take several hours on a laptop, therefore it
|
||||
is recommended enable the binary caches and to farm massive rebuilds to large
|
||||
multicore machines. The Nix flake is prepared for continuous builds with a
|
||||
[Hydra](https://nixos.org/hydra/), but only the experimental flakes capable
|
||||
Hydra.
|
||||
|
||||
# Testing
|
||||
|
||||
Tests are performed using QEMU, the test artifacts are built as follows:
|
||||
|
@ -142,6 +145,18 @@ nix build .#checks.x86_64-linux.nova-x86.store
|
|||
nix build .#checks.x86_64-linux.nova-x86.config
|
||||
```
|
||||
|
||||
# System description format
|
||||
|
||||
The high-level interface to system building are boot descriptions. These Dhall
|
||||
documents describe the configuration of an [Init](https://genode.org/documentation/genode-foundations/19.05/system_configuration/The_init_component.html)
|
||||
instance and a store of ROM (Read-Only Memory) modules. These description can be
|
||||
used to build firmware-like binary images or merged and nested within other
|
||||
descriptions. In theory these descriptions can arrange file-systems, but those
|
||||
functions are missing.
|
||||
|
||||
The description schema is documented as code:
|
||||
https://git.sr.ht/~ehmry/dhall-genode/tree/master/Boot/package.dhall
|
||||
|
||||
# Tips and tricks
|
||||
|
||||
## How to build a Genode make target?
|
||||
|
@ -203,18 +218,6 @@ within the Genode source tree is an *explicit input hash* and the output of
|
|||
the port preparation is non-deterministic.
|
||||
|
||||
|
||||
## Render a Dhall Init configuration to XML
|
||||
|
||||
```shell
|
||||
echo ./config.dhall | nix app genodepkgs#render-init > config.xml
|
||||
```
|
||||
|
||||
## Build a Genode Labs Make target
|
||||
|
||||
```shell
|
||||
nix app genodepkgs#genode-make "test/bomb"
|
||||
```
|
||||
|
||||
## Enter an environment compatible with the Genode Labs build scripts
|
||||
|
||||
```shell
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
{
|
||||
edition = 201909;
|
||||
|
||||
description = "Genode packages";
|
||||
|
||||
inputs.nixpkgs.uri = "github:ehmry/nixpkgs?ref=genode";
|
||||
inputs.nixpkgs.url = "github:ehmry/nixpkgs?ref=genode";
|
||||
|
||||
outputs = { self, nixpkgs }:
|
||||
let
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
addGenodePkgConfigPath () {
|
||||
if test -e "$1/.genode" && test -d "$1/lib/pkgconfig"; then
|
||||
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$1/lib/pkgconfig"
|
||||
fi
|
||||
}
|
||||
|
||||
addEnvHooks "$targetOffset" addGenodePkgConfigPath
|
Loading…
Reference in New Issue