From 5bbb538e7261294c694fce1534efcf2d9b02672b Mon Sep 17 00:00:00 2001 From: Corbin Date: Tue, 17 Aug 2021 09:56:42 -0700 Subject: [PATCH 1/3] doc: Explain how to use and maintain CHICKEN. Also add information about egg2nix. Includes suggestions from code review. Co-authored-by: sterni --- doc/languages-frameworks/chicken.section.md | 49 +++++++++++++++++++++ doc/languages-frameworks/index.xml | 1 + 2 files changed, 50 insertions(+) create mode 100644 doc/languages-frameworks/chicken.section.md diff --git a/doc/languages-frameworks/chicken.section.md b/doc/languages-frameworks/chicken.section.md new file mode 100644 index 00000000000..d8c35bd20c5 --- /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 f221693e764..2c34a29d486 100644 --- a/doc/languages-frameworks/index.xml +++ b/doc/languages-frameworks/index.xml @@ -9,6 +9,7 @@ + From 212fecb7343e4ff35794df584d23e54283178737 Mon Sep 17 00:00:00 2001 From: Corbin Date: Tue, 17 Aug 2021 09:57:49 -0700 Subject: [PATCH 2/3] chickenPackages.chickenEggs.srfi-13: 0.3 -> 0.3.1 Performed semi-automatically with egg2nix, as a test of freshly-written documentation. --- pkgs/development/compilers/chicken/5/eggs.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/compilers/chicken/5/eggs.nix b/pkgs/development/compilers/chicken/5/eggs.nix index 1c1377350d2..ceddea7a71b 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; @@ -47,12 +47,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 = [ From ec35f59fd10ce8cd3965eab830a00087fa636b0c Mon Sep 17 00:00:00 2001 From: Corbin Date: Tue, 17 Aug 2021 10:03:56 -0700 Subject: [PATCH 3/3] chickenPackages.chickenEggs.srfi-189: init at 0.1 Semi-automatically done by egg2nix. --- pkgs/development/compilers/chicken/5/eggs.nix | 46 +++++++++++++++++++ pkgs/development/compilers/chicken/5/eggs.scm | 3 ++ 2 files changed, 49 insertions(+) diff --git a/pkgs/development/compilers/chicken/5/eggs.nix b/pkgs/development/compilers/chicken/5/eggs.nix index ceddea7a71b..c74afe18737 100644 --- a/pkgs/development/compilers/chicken/5/eggs.nix +++ b/pkgs/development/compilers/chicken/5/eggs.nix @@ -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"; @@ -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 b743d6e3229..49910947084 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