2
0
Fork 0
Browse Source

Update README to refer to flakes

20.02
Emery Hemingway 3 years ago
parent
commit
4df8ba5a63
  1. 46
      README.md
  2. 5
      flake.nix
  3. 62
      nixos/test.nix

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.
## Toolchain
The LLVM cross-compiler may useful already, Clang apparently builds Genode
without serious problems. Bootstrapping GCC is not feasible.
To compiler environment may be accessed via the `nix-shell` utility and the
`genode.base` attribute defined here.
```sh
nix-shell «path-to-this-repo» -A genode.base
```
Bootstrapping the environment on a laptop can take hours.
Furthermore, this repository is structured as a Nim flake, with is in itself an
experimental extension of the Nix utility.
## 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:
## Toolchain
```nix
{ ... }: {
nix = {
trustedUsers = [ «your-user» ];
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.
trustedBinaryCaches = [
"https://nix-serve.hq.c3d2.de"
];
To compiler environment for x86_64 may be accessed by invoking `nix devShell`.
binaryCachePublicKeys = [
"nix-serve.hq.c3d2.de:FEi9GyFkou1Ua8INaEKmuGaww9E5y3XwrNGNRfKYeLo="
];
};
}
```
Bootstrapping the environment on a laptop can take hours. Get yourself a
[Hydra](https://nixos.org/hydra/).

5
flake.nix

@ -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;
};
}

62
nixos/test.nix

@ -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…
Cancel
Save