Merge pull request #134514 from MostAwesomeDude/chicken

CHICKEN docs and updates
main
sternenseemann 2 years ago committed by GitHub
commit e9d8ace0ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 49
      doc/languages-frameworks/chicken.section.md
  2. 1
      doc/languages-frameworks/index.xml
  3. 54
      pkgs/development/compilers/chicken/5/eggs.nix
  4. 3
      pkgs/development/compilers/chicken/5/eggs.scm

@ -0,0 +1,49 @@
# 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
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
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
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.

@ -9,6 +9,7 @@
<xi:include href="android.section.xml" />
<xi:include href="beam.section.xml" />
<xi:include href="bower.section.xml" />
<xi:include href="chicken.section.xml" />
<xi:include href="coq.section.xml" />
<xi:include href="crystal.section.xml" />
<xi:include href="cuda.section.xml" />

@ -1,4 +1,4 @@
{ pkgs }:
{ pkgs, stdenv }:
rec {
inherit (pkgs) eggDerivation fetchegg;
@ -32,6 +32,22 @@ rec {
];
};
r7rs = eggDerivation {
name = "r7rs-1.0.5";
src = fetchegg {
name = "r7rs";
version = "1.0.5";
sha256 = "0zyi1z4m1995hm2wfc5wpi8jjgxcwk03qknq5v2ygff3akxazsf6";
};
buildInputs = [
matchable
srfi-1
srfi-13
];
};
srfi-1 = eggDerivation {
name = "srfi-1-0.5.1";
@ -47,12 +63,12 @@ rec {
};
srfi-13 = eggDerivation {
name = "srfi-13-0.3";
name = "srfi-13-0.3.1";
src = fetchegg {
name = "srfi-13";
version = "0.3";
sha256 = "0yaw9i6zhpxl1794pirh168clprjgmsb0xlr96drirjzsslgm3zp";
version = "0.3.1";
sha256 = "12ryxs3w3las0wjdh0yp52g1xmyq1fb48xi3i26l5a9sfx7gbilp";
};
buildInputs = [
@ -74,6 +90,36 @@ rec {
];
};
srfi-145 = eggDerivation {
name = "srfi-145-0.1";
src = fetchegg {
name = "srfi-145";
version = "0.1";
sha256 = "1r4278xhpmm8gww64j6akpyv3qjnn14b6nsisyb9qm7yx3pkpim9";
};
buildInputs = [
];
};
srfi-189 = eggDerivation {
name = "srfi-189-0.1";
src = fetchegg {
name = "srfi-189";
version = "0.1";
sha256 = "1nmrywpi9adi5mm1vcbxxsgw0j3v6m7s4j1mii7icj83xn81cgvx";
};
buildInputs = [
r7rs
srfi-1
srfi-145
];
};
srfi-37 = eggDerivation {
name = "srfi-37-1.4";

@ -1,3 +1,6 @@
;; Eggs used by egg2nix
args
matchable
;; other eggs to include in nixpkgs
srfi-189

Loading…
Cancel
Save