Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 80 lines 2.6 kB view raw
1{ 2 lib, 3 newScope, 4 fetchurl, 5}: 6lib.makeScope newScope (self: rec { 7 akkuDerivation = self.callPackage ./akkuDerivation.nix { }; 8 akku = self.callPackage ./akku.nix { }; 9 10 akkuPackages = 11 let 12 overrides = self.callPackage ./overrides.nix { }; 13 makeAkkuPackage = 14 akkuself: pname: 15 { 16 version, 17 dependencies, 18 dev-dependencies, 19 license, 20 url, 21 sha256, 22 source, 23 synopsis ? "", 24 homepage ? "", 25 ... 26 }: 27 (akkuDerivation { 28 pname = "akku-${pname}"; 29 inherit version; 30 src = fetchurl { 31 inherit url sha256; 32 }; 33 buildInputs = builtins.map (x: akkuself.${x}) dependencies; 34 r7rs = source == "snow-fort"; 35 nativeBuildInputs = builtins.map (x: akkuself.${x}) dev-dependencies; 36 unpackPhase = "tar xf $src"; 37 38 meta.homepage = homepage; 39 meta.description = synopsis; 40 meta.license = 41 let 42 stringToLicense = 43 s: 44 ( 45 lib.licenses 46 // (with lib.licenses; { 47 "agpl" = agpl3Only; 48 "artistic" = artistic2; 49 "bsd" = bsd3; 50 "bsd-1-clause" = bsd1; 51 "bsd-2-clause" = bsd2; 52 "bsd-3-clause" = bsd3; 53 "gpl" = gpl3Only; 54 "gpl-2" = gpl2Only; 55 "gplv2" = gpl2Only; 56 "gpl-3" = gpl3Only; 57 "gpl-3.0" = gpl3Only; 58 "gplv3" = gpl3Only; 59 "lgpl" = lgpl3Only; 60 "lgpl-2" = lgpl2Only; 61 "lgpl-2.0+" = lgpl2Plus; 62 "lgpl-2.1" = lgpl21Only; 63 "lgpl-2.1-or-later" = lgpl21Plus; 64 "lgpl-3" = lgpl3Only; 65 "lgplv3" = lgpl3Only; 66 "public-domain" = publicDomain; 67 "srfi" = bsd3; 68 "unicode" = ucd; 69 "zlib-acknowledgement" = zlib; 70 }) 71 ).${s} or s; 72 in 73 if builtins.isList license then map stringToLicense license else stringToLicense license; 74 }).overrideAttrs 75 ({ "${pname}" = lib.id; } // overrides)."${pname}"; 76 deps = lib.importTOML ./deps.toml; 77 packages = lib.makeScope self.newScope (akkuself: lib.mapAttrs (makeAkkuPackage akkuself) deps); 78 in 79 lib.recurseIntoAttrs packages; 80})