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