052bb41410
without stable ids on headings we cannot generate stable links to these headings. nrd complains about this, but the current docbook workflow does not. a few generated ids remain, mostly in examples and footnotes. most of the examples are generated by nixdoc (which has since gained MD export functions, and the MD export does generate IDs).
49 lines
1.7 KiB
Markdown
49 lines
1.7 KiB
Markdown
# CHICKEN {#sec-chicken}
|
|
|
|
[CHICKEN](https://call-cc.org/) is a
|
|
[R⁵RS](https://schemers.org/Documents/Standards/R5RS/HTML/)-compliant Scheme
|
|
compiler. It includes an interactive mode and a custom package format, "eggs".
|
|
|
|
## Using Eggs {#sec-chicken-using}
|
|
|
|
Eggs described in nixpkgs are available inside the
|
|
`chickenPackages.chickenEggs` attrset. Including an egg as a build input is
|
|
done in the typical Nix fashion. For example, to include support for [SRFI
|
|
189](https://srfi.schemers.org/srfi-189/srfi-189.html) in a derivation, one
|
|
might write:
|
|
|
|
```nix
|
|
buildInputs = [
|
|
chicken
|
|
chickenPackages.chickenEggs.srfi-189
|
|
];
|
|
```
|
|
|
|
Both `chicken` and its eggs have a setup hook which configures the environment
|
|
variables `CHICKEN_INCLUDE_PATH` and `CHICKEN_REPOSITORY_PATH`.
|
|
|
|
## Updating Eggs {#sec-chicken-updating-eggs}
|
|
|
|
nixpkgs only knows about a subset of all published eggs. It uses
|
|
[egg2nix](https://github.com/the-kenny/egg2nix) to generate a
|
|
package set from a list of eggs to include.
|
|
|
|
The package set is regenerated by running the following shell commands:
|
|
|
|
```
|
|
$ nix-shell -p chickenPackages.egg2nix
|
|
$ cd pkgs/development/compilers/chicken/5/
|
|
$ egg2nix eggs.scm > eggs.nix
|
|
```
|
|
|
|
## Adding Eggs {#sec-chicken-adding-eggs}
|
|
|
|
When we run `egg2nix`, we obtain one collection of eggs with
|
|
mutually-compatible versions. This means that when we add new eggs, we may
|
|
need to update existing eggs. To keep those separate, follow the procedure for
|
|
updating eggs before including more eggs.
|
|
|
|
To include more eggs, edit `pkgs/development/compilers/chicken/5/eggs.scm`.
|
|
The first section of this file lists eggs which are required by `egg2nix`
|
|
itself; all other eggs go into the second section. After editing, follow the
|
|
procedure for updating eggs.
|