nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 nix-update-script,
3 stdenvNoCC,
4 lib,
5 php,
6}:
7
8let
9 buildComposerProjectOverride =
10 finalAttrs: previousAttrs:
11
12 let
13 phpDrv = finalAttrs.php or php;
14 composer = finalAttrs.composer or phpDrv.packages.composer-local-repo-plugin;
15 in
16 {
17 composerLock = previousAttrs.composerLock or null;
18 composerNoDev = previousAttrs.composerNoDev or true;
19 composerNoPlugins = previousAttrs.composerNoPlugins or true;
20 composerNoScripts = previousAttrs.composerNoScripts or true;
21 composerStrictValidation = previousAttrs.composerStrictValidation or true;
22
23 nativeBuildInputs = (previousAttrs.nativeBuildInputs or [ ]) ++ [
24 composer
25 phpDrv
26 phpDrv.composerHooks.composerInstallHook
27 ];
28
29 buildInputs = (previousAttrs.buildInputs or [ ]) ++ [ phpDrv ];
30
31 patches = previousAttrs.patches or [ ];
32 strictDeps = previousAttrs.strictDeps or true;
33
34 # Should we keep these empty phases?
35 configurePhase =
36 previousAttrs.configurePhase or ''
37 runHook preConfigure
38
39 runHook postConfigure
40 '';
41
42 buildPhase =
43 previousAttrs.buildPhase or ''
44 runHook preBuild
45
46 runHook postBuild
47 '';
48
49 doCheck = previousAttrs.doCheck or true;
50 checkPhase =
51 previousAttrs.checkPhase or ''
52 runHook preCheck
53
54 runHook postCheck
55 '';
56
57 installPhase =
58 previousAttrs.installPhase or ''
59 runHook preInstall
60
61 runHook postInstall
62 '';
63
64 doInstallCheck = previousAttrs.doInstallCheck or false;
65 installCheckPhase =
66 previousAttrs.installCheckPhase or ''
67 runHook preInstallCheck
68
69 runHook postInstallCheck
70 '';
71
72 composerRepository =
73 previousAttrs.composerRepository or (phpDrv.mkComposerRepository {
74 inherit composer;
75 inherit (finalAttrs)
76 patches
77 pname
78 src
79 vendorHash
80 version
81 ;
82
83 composerLock = previousAttrs.composerLock or null;
84 composerNoDev = previousAttrs.composerNoDev or true;
85 composerNoPlugins = previousAttrs.composerNoPlugins or true;
86 composerNoScripts = previousAttrs.composerNoScripts or true;
87 composerStrictValidation = previousAttrs.composerStrictValidation or true;
88 });
89
90 # Projects providing a lockfile from upstream can be automatically updated.
91 passthru = previousAttrs.passthru or { } // {
92 updateScript =
93 previousAttrs.passthru.updateScript
94 or (if finalAttrs.composerRepository.composerLock == null then nix-update-script { } else null);
95 };
96
97 meta = previousAttrs.meta or { } // {
98 platforms = lib.platforms.all;
99 };
100 };
101in
102args: (stdenvNoCC.mkDerivation args).overrideAttrs buildComposerProjectOverride