lol

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.

+66 -35
+29
doc/languages-frameworks/chicken.section.md
··· 47 47 The first section of this file lists eggs which are required by `egg2nix` 48 48 itself; all other eggs go into the second section. After editing, follow the 49 49 procedure for updating eggs. 50 + 51 + ## Override Scope {#sec-chicken-override-scope} 52 + 53 + The chicken package and its eggs, respectively, reside in a scope. This means, 54 + the scope can be overridden to effect other packages in it. 55 + 56 + This example shows how to use a local copy of `srfi-180` and have it affect 57 + all the other eggs: 58 + 59 + ```nix 60 + let 61 + myChickenPackages = pkgs.chickenPackages.overrideScope' (self: super: { 62 + # The chicken package itself can be overridden to effect the whole ecosystem. 63 + # chicken = super.chicken.overrideAttrs { 64 + # src = ... 65 + # }; 66 + 67 + chickenEggs = super.chickenEggs.overrideScope' (eggself: eggsuper: { 68 + srfi-180 = eggsuper.srfi-180.overrideAttrs { 69 + # path to a local copy of srfi-180 70 + src = ... 71 + }; 72 + }); 73 + }); 74 + in 75 + # Here, `myChickenPackages.chickenEggs.json-rpc`, which depends on `srfi-180` will use 76 + # the local copy of `srfi-180`. 77 + # ... 78 + ```
+1 -1
pkgs/development/compilers/chicken/4/default.nix
··· 18 18 egg2nix = callPackage ./egg2nix.nix { }; 19 19 }; 20 20 21 - in lib.recurseIntoAttrs self 21 + in self
+34 -32
pkgs/development/compilers/chicken/5/default.nix
··· 1 1 { lib, newScope, fetchurl }: 2 - let 3 - callPackage = newScope self; 4 2 5 - self = with lib; { 6 - inherit callPackage; 3 + lib.makeScope newScope (self: { 7 4 8 - fetchegg = { pname, version, sha256, ... }: 9 - fetchurl { 10 - inherit sha256; 11 - url = 12 - "https://code.call-cc.org/egg-tarballs/5/${pname}/${pname}-${version}.tar.gz"; 13 - }; 14 - 15 - eggDerivation = callPackage ./eggDerivation.nix { }; 16 - 17 - chicken = callPackage ./chicken.nix { 18 - bootstrap-chicken = self.chicken.override { bootstrap-chicken = null; }; 5 + fetchegg = { pname, version, sha256, ... }: 6 + fetchurl { 7 + inherit sha256; 8 + url = 9 + "https://code.call-cc.org/egg-tarballs/5/${pname}/${pname}-${version}.tar.gz"; 19 10 }; 20 11 21 - chickenEggs = recurseIntoAttrs (mapAttrs (pname: 22 - eggData@{ version, synopsis, dependencies, license, ... }: 23 - self.eggDerivation { 24 - name = "${pname}-${version}"; 25 - src = self.fetchegg (eggData // { inherit pname; }); 26 - buildInputs = map (x: self.chickenEggs.${x}) dependencies; 27 - meta.homepage = 28 - "https://code.call-cc.org/cgi-bin/gitweb.cgi?p=eggs-5-latest.git;a=tree;f=${pname}/${version}"; 29 - meta.description = synopsis; 30 - meta.license = (licenses // { 31 - "bsd-2-clause" = licenses.bsd2; 32 - "bsd-3-clause" = licenses.bsd3; 33 - "public-domain" = licenses.publicDomain; 34 - }).${license} or license; 35 - }) (importTOML ./deps.toml)); 12 + eggDerivation = self.callPackage ./eggDerivation.nix { }; 36 13 37 - egg2nix = callPackage ./egg2nix.nix { }; 14 + chicken = self.callPackage ./chicken.nix { 15 + bootstrap-chicken = self.chicken.override { bootstrap-chicken = null; }; 38 16 }; 39 17 40 - in lib.recurseIntoAttrs self 18 + chickenEggs = lib.recurseIntoAttrs (lib.makeScope self.newScope (eggself: 19 + (lib.mapAttrs 20 + (pname: 21 + eggData@{ version, synopsis, dependencies, license, ... }: 22 + self.eggDerivation { 23 + name = "${pname}-${version}"; 24 + src = self.fetchegg (eggData // { inherit pname; }); 25 + buildInputs = map (x: eggself.${x}) dependencies; 26 + meta.homepage = 27 + "https://code.call-cc.org/cgi-bin/gitweb.cgi?p=eggs-5-latest.git;a=tree;f=${pname}/${version}"; 28 + meta.description = synopsis; 29 + meta.license = (lib.licenses // { 30 + "bsd-1-clause" = lib.licenses.bsd1; 31 + "bsd-2-clause" = lib.licenses.bsd2; 32 + "bsd-3-clause" = lib.licenses.bsd3; 33 + "lgpl-2.0+" = lib.licenses.lgpl2Plus; 34 + "lgpl-2.1-or-later" = lib.licenses.lgpl21Plus; 35 + "public-domain" = lib.licenses.publicDomain; 36 + }).${license} or license; 37 + }) 38 + (lib.importTOML ./deps.toml)))); 39 + 40 + egg2nix = self.callPackage ./egg2nix.nix { }; 41 + 42 + })
+2 -2
pkgs/top-level/all-packages.nix
··· 15418 15418 colmap = libsForQt5.callPackage ../applications/science/misc/colmap { inherit (config) cudaSupport; }; 15419 15419 colmapWithCuda = colmap.override { cudaSupport = true; }; 15420 15420 15421 - chickenPackages_4 = callPackage ../development/compilers/chicken/4 { }; 15422 - chickenPackages_5 = callPackage ../development/compilers/chicken/5 { }; 15421 + chickenPackages_4 = recurseIntoAttrs (callPackage ../development/compilers/chicken/4 { }); 15422 + chickenPackages_5 = recurseIntoAttrs (callPackage ../development/compilers/chicken/5 { }); 15423 15423 chickenPackages = dontRecurseIntoAttrs chickenPackages_5; 15424 15424 15425 15425 inherit (chickenPackages_5)