diff --git a/doc/languages-frameworks/chicken.section.md b/doc/languages-frameworks/chicken.section.md
new file mode 100644
index 000000000000..d8c35bd20c50
--- /dev/null
+++ b/doc/languages-frameworks/chicken.section.md
@@ -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.
diff --git a/doc/languages-frameworks/index.xml b/doc/languages-frameworks/index.xml
index 144fa96bac12..3d5b2f738976 100644
--- a/doc/languages-frameworks/index.xml
+++ b/doc/languages-frameworks/index.xml
@@ -9,6 +9,7 @@
+
diff --git a/pkgs/development/compilers/chicken/5/eggs.nix b/pkgs/development/compilers/chicken/5/eggs.nix
index 1c1377350d21..c74afe187371 100644
--- a/pkgs/development/compilers/chicken/5/eggs.nix
+++ b/pkgs/development/compilers/chicken/5/eggs.nix
@@ -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";
diff --git a/pkgs/development/compilers/chicken/5/eggs.scm b/pkgs/development/compilers/chicken/5/eggs.scm
index b743d6e3229d..499109470849 100644
--- a/pkgs/development/compilers/chicken/5/eggs.scm
+++ b/pkgs/development/compilers/chicken/5/eggs.scm
@@ -1,3 +1,6 @@
;; Eggs used by egg2nix
args
matchable
+
+;; other eggs to include in nixpkgs
+srfi-189