nixpkgs-suyu/doc/languages-frameworks/chicken.section.md
Corbin 5bbb538e72 doc: Explain how to use and maintain CHICKEN.
Also add information about egg2nix.

Includes suggestions from code review.

Co-authored-by: sterni <sternenseemann@systemli.org>
2022-04-21 15:18:26 -07:00

1.6 KiB

CHICKEN

CHICKEN is a R⁵RS-compliant Scheme compiler. It includes an interactive mode and a custom package format, "eggs".

Using Eggs

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 in a derivation, one might write:

  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

nixpkgs only knows about a subset of all published eggs. It uses 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

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.