nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 119 lines 2.8 kB view raw
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}