120 lines
2.8 KiB
Nix
120 lines
2.8 KiB
Nix
|
|
{
|
||
|
|
nix-update-script,
|
||
|
|
stdenvNoCC,
|
||
|
|
lib,
|
||
|
|
php,
|
||
|
|
}@toplevel:
|
||
|
|
|
||
|
|
let
|
||
|
|
buildComposerProjectOverride =
|
||
|
|
finalAttrs:
|
||
|
|
{
|
||
|
|
php ? finalAttrs.php or toplevel.php,
|
||
|
|
composer ? finalAttrs.php.packages.composer or toplevel.php.packages.composer,
|
||
|
|
composerLock ? finalAttrs.composerLock or null,
|
||
|
|
vendorHash ? finalAttrs.vendorHash or "",
|
||
|
|
composerNoDev ? finalAttrs.composerNoDev or true,
|
||
|
|
composerNoPlugins ? finalAttrs.composerNoPlugins or true,
|
||
|
|
composerNoScripts ? finalAttrs.composerNoScripts or true,
|
||
|
|
composerStrictValidation ? finalAttrs.composerStrictValidation or true,
|
||
|
|
buildInputs ? [ ],
|
||
|
|
nativeBuildInputs ? [ ],
|
||
|
|
strictDeps ? true,
|
||
|
|
patches ? [ ],
|
||
|
|
doCheck ? true,
|
||
|
|
doInstallCheck ? true,
|
||
|
|
dontCheckForBrokenSymlinks ? true,
|
||
|
|
passthru ? { },
|
||
|
|
meta ? { },
|
||
|
|
...
|
||
|
|
}@args:
|
||
|
|
{
|
||
|
|
inherit
|
||
|
|
patches
|
||
|
|
strictDeps
|
||
|
|
doCheck
|
||
|
|
doInstallCheck
|
||
|
|
dontCheckForBrokenSymlinks
|
||
|
|
;
|
||
|
|
|
||
|
|
nativeBuildInputs = nativeBuildInputs ++ [
|
||
|
|
composer
|
||
|
|
php
|
||
|
|
php.composerHooks2.composerInstallHook
|
||
|
|
];
|
||
|
|
|
||
|
|
buildInputs = buildInputs ++ [ php ];
|
||
|
|
|
||
|
|
# Should we keep these empty phases?
|
||
|
|
configurePhase =
|
||
|
|
args.configurePhase or ''
|
||
|
|
runHook preConfigure
|
||
|
|
|
||
|
|
runHook postConfigure
|
||
|
|
'';
|
||
|
|
|
||
|
|
buildPhase =
|
||
|
|
args.buildPhase or ''
|
||
|
|
runHook preBuild
|
||
|
|
|
||
|
|
runHook postBuild
|
||
|
|
'';
|
||
|
|
|
||
|
|
checkPhase =
|
||
|
|
args.checkPhase or ''
|
||
|
|
runHook preCheck
|
||
|
|
|
||
|
|
runHook postCheck
|
||
|
|
'';
|
||
|
|
|
||
|
|
installPhase =
|
||
|
|
args.installPhase or ''
|
||
|
|
runHook preInstall
|
||
|
|
|
||
|
|
runHook postInstall
|
||
|
|
'';
|
||
|
|
|
||
|
|
installCheckPhase =
|
||
|
|
args.installCheckPhase or ''
|
||
|
|
runHook preInstallCheck
|
||
|
|
|
||
|
|
runHook postInstallCheck
|
||
|
|
'';
|
||
|
|
|
||
|
|
composerVendor =
|
||
|
|
args.composerVendor or (php.mkComposerVendor {
|
||
|
|
inherit (finalAttrs)
|
||
|
|
pname
|
||
|
|
src
|
||
|
|
vendorHash
|
||
|
|
version
|
||
|
|
;
|
||
|
|
inherit
|
||
|
|
php
|
||
|
|
composer
|
||
|
|
composerLock
|
||
|
|
composerNoDev
|
||
|
|
composerNoPlugins
|
||
|
|
composerNoScripts
|
||
|
|
composerStrictValidation
|
||
|
|
dontCheckForBrokenSymlinks
|
||
|
|
;
|
||
|
|
});
|
||
|
|
|
||
|
|
# Projects providing a lockfile from upstream can be automatically updated.
|
||
|
|
passthru = passthru // {
|
||
|
|
updateScript =
|
||
|
|
args.passthru.updateScript
|
||
|
|
or (if finalAttrs.composerVendor.composerLock == null then nix-update-script { } else null);
|
||
|
|
};
|
||
|
|
|
||
|
|
meta = meta // {
|
||
|
|
platforms = lib.platforms.all;
|
||
|
|
};
|
||
|
|
};
|
||
|
|
in
|
||
|
|
lib.extendMkDerivation {
|
||
|
|
constructDrv = stdenvNoCC.mkDerivation;
|
||
|
|
extendDrvArgs = buildComposerProjectOverride;
|
||
|
|
}
|