nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{ callPackage }:
2
3let
4 # Common passthru for all perl interpreters.
5 # copied from lua
6 passthruFun =
7 {
8 overrides,
9 perlOnBuildForBuild,
10 perlOnBuildForHost,
11 perlOnBuildForTarget,
12 perlOnHostForHost,
13 perlOnTargetForTarget,
14 perlAttr ? null,
15 tests ? { },
16 self, # is perlOnHostForTarget
17 }:
18 let
19 perlPackages =
20 callPackage
21 # Function that when called
22 # - imports perl-packages.nix
23 # - adds spliced package sets to the package set
24 (
25 {
26 stdenv,
27 pkgs,
28 perl,
29 callPackage,
30 makeScopeWithSplicing',
31 }:
32 let
33 perlPackagesFun = callPackage ../../../top-level/perl-packages.nix {
34 inherit stdenv pkgs;
35 perl = self;
36 };
37
38 otherSplices = {
39 selfBuildBuild = perlOnBuildForBuild.pkgs;
40 selfBuildHost = perlOnBuildForHost.pkgs;
41 selfBuildTarget = perlOnBuildForTarget.pkgs;
42 selfHostHost = perlOnHostForHost.pkgs;
43 selfTargetTarget = perlOnTargetForTarget.pkgs or { };
44 };
45 in
46 makeScopeWithSplicing' {
47 inherit otherSplices;
48 f = perlPackagesFun;
49 }
50 )
51 {
52 perl = self;
53 };
54 in
55 rec {
56 buildEnv = callPackage ./wrapper.nix {
57 perl = self;
58 inherit (pkgs) requiredPerlModules;
59 };
60 withPackages = f: buildEnv.override { extraLibs = f pkgs; };
61 pkgs = perlPackages // (overrides pkgs);
62 interpreter = "${self}/bin/perl";
63 libPrefix = "lib/perl5/site_perl";
64 perlOnBuild = perlOnBuildForHost.override {
65 inherit overrides;
66 self = perlOnBuild;
67 };
68
69 inherit tests;
70 };
71
72in
73rec {
74 perl5 = callPackage ./interpreter.nix {
75 self = perl5;
76 version = "5.42.0";
77 sha256 = "sha256-4JPvGE1/mhuXl+JGUpb1VRCtttq4hCsMPtUzKWYwltw=";
78 inherit passthruFun;
79 };
80}