# This file originates from composer2nix
-{ stdenv, writeTextFile, fetchurl, php, unzip }:
+{ stdenv, lib, writeTextFile, fetchurl, php, unzip, composer ? php.packages.composer }:
let
- composer = stdenv.mkDerivation {
- name = "composer-1.8.0";
- src = fetchurl {
- url = https://github.com/composer/composer/releases/download/1.8.0/composer.phar;
- sha256 = "19pg9ip2mpyf5cyq34fld7qwl77mshqw3c4nif7sxmpnar6sh089";
- };
- buildInputs = [ php ];
-
- # We must wrap the composer.phar because of the impure shebang.
- # We cannot use patchShebangs because the executable verifies its own integrity and will detect that somebody has tampered with it.
-
- buildCommand = ''
- # Copy phar file
- mkdir -p $out/share/php
- cp $src $out/share/php/composer.phar
- chmod 755 $out/share/php/composer.phar
-
- # Create wrapper executable
- mkdir -p $out/bin
- cat > $out/bin/composer <<EOF
- #! ${stdenv.shell} -e
- exec ${php}/bin/php $out/share/php/composer.phar "\$@"
- EOF
- chmod +x $out/bin/composer
- '';
- meta = {
- description = "Dependency Manager for PHP";
- #license = stdenv.licenses.mit;
- maintainers = [ stdenv.lib.maintainers.sander ];
- platforms = stdenv.lib.platforms.unix;
- };
- };
-
buildZipPackage = { name, src }:
stdenv.mkDerivation {
inherit name src;
else
$allPackages = array();
- ${stdenv.lib.optionalString (!noDev) ''
+ ${lib.optionalString (!noDev) ''
if(array_key_exists("packages-dev", $config))
$allPackages = array_merge($allPackages, $config["packages-dev"]);
''}
};
bundleDependencies = dependencies:
- stdenv.lib.concatMapStrings (dependencyName:
+ lib.concatMapStrings (dependencyName:
let
dependency = dependencies.${dependencyName};
in
# Copy or symlink the provided dependencies
cd vendor
${bundleDependencies packages}
- ${stdenv.lib.optionalString (!noDev) (bundleDependencies devPackages)}
+ ${lib.optionalString (!noDev) (bundleDependencies devPackages)}
cd ..
# Reconstruct autoload scripts
# We use the optimize feature because Nix packages cannot change after they have been built
# Using the dynamic loader for a Nix package is useless since there is nothing to dynamically reload.
- composer dump-autoload --optimize ${stdenv.lib.optionalString noDev "--no-dev"}
+ composer dump-autoload --optimize ${lib.optionalString noDev "--no-dev"}
# Run the install step as a validation to confirm that everything works out as expected
- composer install --optimize-autoloader ${stdenv.lib.optionalString noDev "--no-dev"}
+ composer install --optimize-autoloader ${lib.optionalString noDev "--no-dev"}
- ${stdenv.lib.optionalString executable ''
+ ${lib.optionalString executable ''
# Reconstruct the bin/ folder if we deploy an executable project
${constructBin} composer.json
ln -s $(pwd)/vendor/bin $out/bin
''}
- ${stdenv.lib.optionalString (!symlinkDependencies) ''
+ ${lib.optionalString (!symlinkDependencies) ''
# Patch the shebangs if possible
if [ -d $(pwd)/vendor/bin ]
then
'';
} // extraArgs);
in
-{
- composer = stdenv.lib.makeOverridable composer;
- buildZipPackage = stdenv.lib.makeOverridable buildZipPackage;
- buildPackage = stdenv.lib.makeOverridable buildPackage;
-}
+{ inherit composer buildZipPackage buildPackage; }