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.

Changed files
+66 -35
doc
languages-frameworks
pkgs
development
compilers
chicken
top-level
+29
doc/languages-frameworks/chicken.section.md
···
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`.
+
# ...
+
```
+1 -1
pkgs/development/compilers/chicken/4/default.nix
···
egg2nix = callPackage ./egg2nix.nix { };
};
-
in lib.recurseIntoAttrs self
+
in self
+34 -32
pkgs/development/compilers/chicken/5/default.nix
···
{ lib, newScope, fetchurl }:
-
let
-
callPackage = newScope self;
-
self = with lib; {
-
inherit callPackage;
+
lib.makeScope newScope (self: {
-
fetchegg = { pname, version, sha256, ... }:
-
fetchurl {
-
inherit sha256;
-
url =
-
"https://code.call-cc.org/egg-tarballs/5/${pname}/${pname}-${version}.tar.gz";
-
};
-
-
eggDerivation = callPackage ./eggDerivation.nix { };
-
-
chicken = callPackage ./chicken.nix {
-
bootstrap-chicken = self.chicken.override { bootstrap-chicken = null; };
+
fetchegg = { pname, version, sha256, ... }:
+
fetchurl {
+
inherit sha256;
+
url =
+
"https://code.call-cc.org/egg-tarballs/5/${pname}/${pname}-${version}.tar.gz";
};
-
chickenEggs = recurseIntoAttrs (mapAttrs (pname:
-
eggData@{ version, synopsis, dependencies, license, ... }:
-
self.eggDerivation {
-
name = "${pname}-${version}";
-
src = self.fetchegg (eggData // { inherit pname; });
-
buildInputs = map (x: self.chickenEggs.${x}) dependencies;
-
meta.homepage =
-
"https://code.call-cc.org/cgi-bin/gitweb.cgi?p=eggs-5-latest.git;a=tree;f=${pname}/${version}";
-
meta.description = synopsis;
-
meta.license = (licenses // {
-
"bsd-2-clause" = licenses.bsd2;
-
"bsd-3-clause" = licenses.bsd3;
-
"public-domain" = licenses.publicDomain;
-
}).${license} or license;
-
}) (importTOML ./deps.toml));
+
eggDerivation = self.callPackage ./eggDerivation.nix { };
-
egg2nix = callPackage ./egg2nix.nix { };
+
chicken = self.callPackage ./chicken.nix {
+
bootstrap-chicken = self.chicken.override { bootstrap-chicken = null; };
};
-
in lib.recurseIntoAttrs self
+
chickenEggs = lib.recurseIntoAttrs (lib.makeScope self.newScope (eggself:
+
(lib.mapAttrs
+
(pname:
+
eggData@{ version, synopsis, dependencies, license, ... }:
+
self.eggDerivation {
+
name = "${pname}-${version}";
+
src = self.fetchegg (eggData // { inherit pname; });
+
buildInputs = map (x: eggself.${x}) dependencies;
+
meta.homepage =
+
"https://code.call-cc.org/cgi-bin/gitweb.cgi?p=eggs-5-latest.git;a=tree;f=${pname}/${version}";
+
meta.description = synopsis;
+
meta.license = (lib.licenses // {
+
"bsd-1-clause" = lib.licenses.bsd1;
+
"bsd-2-clause" = lib.licenses.bsd2;
+
"bsd-3-clause" = lib.licenses.bsd3;
+
"lgpl-2.0+" = lib.licenses.lgpl2Plus;
+
"lgpl-2.1-or-later" = lib.licenses.lgpl21Plus;
+
"public-domain" = lib.licenses.publicDomain;
+
}).${license} or license;
+
})
+
(lib.importTOML ./deps.toml))));
+
+
egg2nix = self.callPackage ./egg2nix.nix { };
+
+
})
+2 -2
pkgs/top-level/all-packages.nix
···
colmap = libsForQt5.callPackage ../applications/science/misc/colmap { inherit (config) cudaSupport; };
colmapWithCuda = colmap.override { cudaSupport = true; };
-
chickenPackages_4 = callPackage ../development/compilers/chicken/4 { };
-
chickenPackages_5 = callPackage ../development/compilers/chicken/5 { };
+
chickenPackages_4 = recurseIntoAttrs (callPackage ../development/compilers/chicken/4 { });
+
chickenPackages_5 = recurseIntoAttrs (callPackage ../development/compilers/chicken/5 { });
chickenPackages = dontRecurseIntoAttrs chickenPackages_5;
inherit (chickenPackages_5)