Update README to refer to flakes
This commit is contained in:
parent
1a33ea2f3a
commit
4df8ba5a63
46
README.md
46
README.md
|
@ -1,45 +1,19 @@
|
|||
# An overlayed Nixpkgs for the Genode OS framework
|
||||
# Genode Packages
|
||||
|
||||
This repo contains Nix expressions for building Genode with Nixpkgs and building
|
||||
Nixpkgs for Genode. At the moment the former is experimental and broken in many
|
||||
cases, the later is probably broken for all cases.
|
||||
|
||||
Furthermore, this repository is structured as a Nim flake, with is in itself an
|
||||
experimental extension of the Nix utility.
|
||||
|
||||
## Toolchain
|
||||
|
||||
The LLVM cross-compiler may useful already, Clang apparently builds Genode
|
||||
without serious problems. Bootstrapping GCC is not feasible.
|
||||
The LLVM cross-compiler may useful already, Clang apparently builds trivial
|
||||
Genode componenents without serious problems. Bootstrapping GCC is not practical
|
||||
due to the recursive autotools build system.
|
||||
|
||||
To compiler environment may be accessed via the `nix-shell` utility and the
|
||||
`genode.base` attribute defined here.
|
||||
To compiler environment for x86_64 may be accessed by invoking `nix devShell`.
|
||||
|
||||
```sh
|
||||
nix-shell «path-to-this-repo» -A genode.base
|
||||
```
|
||||
|
||||
Bootstrapping the environment on a laptop can take hours.
|
||||
|
||||
## Continuous builds
|
||||
|
||||
### C3D2 hydra
|
||||
|
||||
Hardware for continuous builds provided by [Chaos Computer Club Dresden](https://c3d2.de/).
|
||||
|
||||
The first hydra is located at https://hydra.hq.c3d2.de/project/genodepkgs.
|
||||
|
||||
The following NixOS module will enable use of this Hydra as a cache:
|
||||
|
||||
```nix
|
||||
{ ... }: {
|
||||
nix = {
|
||||
trustedUsers = [ «your-user» ];
|
||||
|
||||
trustedBinaryCaches = [
|
||||
"https://nix-serve.hq.c3d2.de"
|
||||
];
|
||||
|
||||
binaryCachePublicKeys = [
|
||||
"nix-serve.hq.c3d2.de:FEi9GyFkou1Ua8INaEKmuGaww9E5y3XwrNGNRfKYeLo="
|
||||
];
|
||||
};
|
||||
}
|
||||
```
|
||||
Bootstrapping the environment on a laptop can take hours. Get yourself a
|
||||
[Hydra](https://nixos.org/hydra/).
|
||||
|
|
|
@ -51,12 +51,17 @@
|
|||
x86_64-linux.nixos =
|
||||
let pkgs' = nixpkgs.legacyPackages.x86_64-linux // { };
|
||||
in import ./nixos/test.nix {
|
||||
inherit self;
|
||||
nixpkgs = nixpkgs.outPath;
|
||||
genodepkgs = self.packages.x86_64-linux-x86_64-genode;
|
||||
depot = genode-depot.packages.x86_64-linux-x86_64-genode;
|
||||
} { system = "x86_64-linux"; };
|
||||
};
|
||||
|
||||
nixosModule = import ./nixos;
|
||||
|
||||
devShell.x86_64-linux = self.packages.x86_64-linux-x86_64-genode.stdenv;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -1,40 +1,44 @@
|
|||
{ nixpkgs, genodepkgs, depot }:
|
||||
{ self, nixpkgs, genodepkgs, depot }:
|
||||
|
||||
import (nixpkgs + "/nixos/tests/make-test.nix") ({ pkgs, ... }:
|
||||
|
||||
rec {
|
||||
name = "genode-base-linux";
|
||||
|
||||
machine = { pkgs, ... }:
|
||||
machine =
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
imports = [ ./. ];
|
||||
genode.signal-test = {
|
||||
config = ''
|
||||
<config>
|
||||
<parent-provides>
|
||||
<service name="ROM"/>
|
||||
<service name="CPU"/>
|
||||
<service name="RM"/>
|
||||
<service name="PD"/>
|
||||
<service name="LOG"/>
|
||||
</parent-provides>
|
||||
<default-route>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</default-route>
|
||||
<default caps="100"/>
|
||||
<start name="timer" caps="96">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides><service name="Timer"/></provides>
|
||||
</start>
|
||||
<start name="test-signal" caps="500">
|
||||
<resource name="RAM" quantum="10M"/>
|
||||
</start>
|
||||
</config>
|
||||
'';
|
||||
depot = depot;
|
||||
pkgs = genodepkgs;
|
||||
rom = { "test-signal" = "${genodepkgs.os}/bin/test-signal"; };
|
||||
imports = [ "${self.outPath}/nixos" ];
|
||||
genode = {
|
||||
signal-test = {
|
||||
config = ''
|
||||
<config>
|
||||
<parent-provides>
|
||||
<service name="ROM"/>
|
||||
<service name="CPU"/>
|
||||
<service name="RM"/>
|
||||
<service name="PD"/>
|
||||
<service name="LOG"/>
|
||||
</parent-provides>
|
||||
<default-route>
|
||||
<any-service> <parent/> <any-child/> </any-service>
|
||||
</default-route>
|
||||
<default caps="100"/>
|
||||
<start name="timer" caps="96">
|
||||
<resource name="RAM" quantum="1M"/>
|
||||
<provides><service name="Timer"/></provides>
|
||||
</start>
|
||||
<start name="test-signal" caps="500">
|
||||
<resource name="RAM" quantum="10M"/>
|
||||
</start>
|
||||
</config>
|
||||
'';
|
||||
depot = depot;
|
||||
pkgs = genodepkgs;
|
||||
rom = { "test-signal" = "${genodepkgs.os}/bin/test-signal"; };
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue