2
0
Fork 0

Update README to refer to flakes

This commit is contained in:
Emery Hemingway 2019-12-14 10:58:56 +00:00
parent 1a33ea2f3a
commit 4df8ba5a63
3 changed files with 48 additions and 65 deletions

View File

@ -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 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 Nixpkgs for Genode. At the moment the former is experimental and broken in many
cases, the later is probably broken for all cases. 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 ## Toolchain
The LLVM cross-compiler may useful already, Clang apparently builds Genode The LLVM cross-compiler may useful already, Clang apparently builds trivial
without serious problems. Bootstrapping GCC is not feasible. 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 To compiler environment for x86_64 may be accessed by invoking `nix devShell`.
`genode.base` attribute defined here.
```sh Bootstrapping the environment on a laptop can take hours. Get yourself a
nix-shell «path-to-this-repo» -A genode.base [Hydra](https://nixos.org/hydra/).
```
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="
];
};
}
```

View File

@ -51,12 +51,17 @@
x86_64-linux.nixos = x86_64-linux.nixos =
let pkgs' = nixpkgs.legacyPackages.x86_64-linux // { }; let pkgs' = nixpkgs.legacyPackages.x86_64-linux // { };
in import ./nixos/test.nix { in import ./nixos/test.nix {
inherit self;
nixpkgs = nixpkgs.outPath; nixpkgs = nixpkgs.outPath;
genodepkgs = self.packages.x86_64-linux-x86_64-genode; genodepkgs = self.packages.x86_64-linux-x86_64-genode;
depot = genode-depot.packages.x86_64-linux-x86_64-genode; depot = genode-depot.packages.x86_64-linux-x86_64-genode;
} { system = "x86_64-linux"; }; } { system = "x86_64-linux"; };
}; };
nixosModule = import ./nixos; nixosModule = import ./nixos;
devShell.x86_64-linux = self.packages.x86_64-linux-x86_64-genode.stdenv;
}; };
} }

View File

@ -1,40 +1,44 @@
{ nixpkgs, genodepkgs, depot }: { self, nixpkgs, genodepkgs, depot }:
import (nixpkgs + "/nixos/tests/make-test.nix") ({ pkgs, ... }: import (nixpkgs + "/nixos/tests/make-test.nix") ({ pkgs, ... }:
rec { rec {
name = "genode-base-linux"; name = "genode-base-linux";
machine = { pkgs, ... }: machine =
{ config, pkgs, lib, ... }:
{ {
imports = [ ./. ]; imports = [ "${self.outPath}/nixos" ];
genode.signal-test = { genode = {
config = '' signal-test = {
<config> config = ''
<parent-provides> <config>
<service name="ROM"/> <parent-provides>
<service name="CPU"/> <service name="ROM"/>
<service name="RM"/> <service name="CPU"/>
<service name="PD"/> <service name="RM"/>
<service name="LOG"/> <service name="PD"/>
</parent-provides> <service name="LOG"/>
<default-route> </parent-provides>
<any-service> <parent/> <any-child/> </any-service> <default-route>
</default-route> <any-service> <parent/> <any-child/> </any-service>
<default caps="100"/> </default-route>
<start name="timer" caps="96"> <default caps="100"/>
<resource name="RAM" quantum="1M"/> <start name="timer" caps="96">
<provides><service name="Timer"/></provides> <resource name="RAM" quantum="1M"/>
</start> <provides><service name="Timer"/></provides>
<start name="test-signal" caps="500"> </start>
<resource name="RAM" quantum="10M"/> <start name="test-signal" caps="500">
</start> <resource name="RAM" quantum="10M"/>
</config> </start>
''; </config>
depot = depot; '';
pkgs = genodepkgs; depot = depot;
rom = { "test-signal" = "${genodepkgs.os}/bin/test-signal"; }; pkgs = genodepkgs;
rom = { "test-signal" = "${genodepkgs.os}/bin/test-signal"; };
};
}; };
}; };