Pipchix is currently under development.
Here is a quick guide to how one might use Pipchix to write NixOS configurations, once Pipchix is sufficiently developed.
Pipchix is designed for out-of-source builds. You can mkdir a directory separate from the one in which the sources are (or as a subdirectory of it), and run configure from that directory. This is the preferred way to configure and build Pipchix. It is cleaner and you can do multiple builds with different configurations.[1]
- CHICKEN 5
-
Install the NixOS packages chicken, chickenPackages.chickenEggs.utf8, and chickenPackages.chickenEggs.r7rs. Configure Pipchix. Do ‘make dist-chicken-egg-5’, which should produce a compressed tar file. Untar the file into your /etc/nixos or equivalent directory. Run ‘chicken-install -n’ to build the egg in place. Now, when you run CHICKEN scripts in /etc/nixos, they can import the R⁷RS Pipchix libraries.[2]
- Most R⁶RS Schemes
-
Configure Pipchix with --enable-install-r6rs-source=/etc/nixos/pipchix or similar. Do ‘make install’. In some cases you may need to add ‘.’ to the list of places to search for libraries. For Racket, perhaps you will have to run ‘plt-r6rs ++path $PWD your-script.scm’ or some such command.[3]
- Most R⁷RS Schemes
-
Configure Pipchix with --enable-install-r7rs-source=/etc/nixos/pipchix or similar. Do ‘make install’. In some cases you may need to add ‘.’ to the list of places to search for libraries.[4]
In general, you can refer to the scripts in the tests directory for hints on how to run the different Scheme implementations. I have not done precompiling, except in the case of CHICKEN.
Gauche, Chibi, and Sagittarius probably are all good choices for R⁷RS. Gauche has long been a favorite of mine. I am also fond of CHICKEN 5 for R⁷RS, though it is not fully compliant and does not support R⁷RS-large except under other names (for instance ‘(srfi 1)’ instead of ‘(scheme list)’). Sagittarius probably is good for R⁶RS, and of course Chez Scheme is the ‘gold standard’ for R⁶RS. You might, however, prefer rhodium or even plain steel. Loko Scheme is designed for bare metal development but seems to work perfectly well for Pipchix. It supports both R⁶RS and R⁷RS-small, but does not come with R⁷RS-large support.
I am not a fan of Guile. It is an R⁵RS implementation with too many uncoordinated features. It is compliant with neither R⁶RS nor R⁷RS, and perhaps never will be. But Pipchix is tested to work with Guile in both R⁶RS and R⁷RS emulation, because Guile is ubiquitous since having been linked pointlessly to GNU Make.[5]
I tried Mosh Scheme, but it seemed to mishandle strings. Therefore it was removed from the test suite.
One of course can use any Scheme they wish. The Schemes that are included in the test suite are simply those against which Pipchix is tested, not those to which Pipchix is limited. R⁶RS and R⁷RS are standards, and Pipchix is written to try to conform to those standards.
TinySCHEME is included with Pipchix, but it is for scripting in the build process. I use it to make the CHICKEN egg file.