about summary refs log tree commit diff
path: root/doc/languages-frameworks
diff options
context:
space:
mode:
authorDaniel Nagy <danielnagy@posteo.de>2023-07-21 10:30:00 +0200
committerDaniel Nagy <danielnagy@posteo.de>2023-08-21 17:00:00 +0200
commitf58a6078fa737bd9a2c68db99486132f88b132af (patch)
tree052bc69d839e672feb7a46cc184480a9ab647248 /doc/languages-frameworks
parenta3dd3cce6e1aa8aaf1f8c9eba7233b2a334e686e (diff)
downloadnixlib-f58a6078fa737bd9a2c68db99486132f88b132af.tar
nixlib-f58a6078fa737bd9a2c68db99486132f88b132af.tar.gz
nixlib-f58a6078fa737bd9a2c68db99486132f88b132af.tar.bz2
nixlib-f58a6078fa737bd9a2c68db99486132f88b132af.tar.lz
nixlib-f58a6078fa737bd9a2c68db99486132f88b132af.tar.xz
nixlib-f58a6078fa737bd9a2c68db99486132f88b132af.tar.zst
nixlib-f58a6078fa737bd9a2c68db99486132f88b132af.zip
chickenPackages: turn into scope
The purpose of this change is to allow the overriding of one egg, which in turn
affects all dependents of that eggs.
Diffstat (limited to 'doc/languages-frameworks')
-rw-r--r--doc/languages-frameworks/chicken.section.md29
1 files changed, 29 insertions, 0 deletions
diff --git a/doc/languages-frameworks/chicken.section.md b/doc/languages-frameworks/chicken.section.md
index d329943dc3c2..72c2642a6478 100644
--- a/doc/languages-frameworks/chicken.section.md
+++ b/doc/languages-frameworks/chicken.section.md
@@ -47,3 +47,32 @@ 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.
+
+## Override Scope {#sec-chicken-override-scope}
+
+The chicken package and its eggs, respectively, reside in a scope. This means,
+the scope can be overridden to effect other packages in it.
+
+This example shows how to use a local copy of `srfi-180` and have it affect
+all the other eggs:
+
+```nix
+let
+  myChickenPackages = pkgs.chickenPackages.overrideScope' (self: super: {
+      # The chicken package itself can be overridden to effect the whole ecosystem.
+      # chicken = super.chicken.overrideAttrs {
+      #   src = ...
+      # };
+
+      chickenEggs = super.chickenEggs.overrideScope' (eggself: eggsuper: {
+        srfi-180 = eggsuper.srfi-180.overrideAttrs {
+          # path to a local copy of srfi-180
+          src = ...
+        };
+      });
+  });
+in
+# Here, `myChickenPackages.chickenEggs.json-rpc`, which depends on `srfi-180` will use
+# the local copy of `srfi-180`.
+# ...
+```