summary refs log tree commit diff
path: root/pkgs/development/php-packages
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-08-04 10:43:07 +0000
committerAlyssa Ross <hi@alyssa.is>2021-08-04 10:43:07 +0000
commit62614cbef7da005c1eda8c9400160f6bcd6546b8 (patch)
treec2630f69080637987b68acb1ee8676d2681fe304 /pkgs/development/php-packages
parentd9c82ed3044c72cecf01c6ea042489d30914577c (diff)
parente24069138dfec3ef94f211f1da005bb5395adc11 (diff)
downloadnixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.gz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.bz2
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.lz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.xz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.zst
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.zip
Merge branch 'nixpkgs-update' into master
Diffstat (limited to 'pkgs/development/php-packages')
-rw-r--r--pkgs/development/php-packages/apcu/default.nix22
-rw-r--r--pkgs/development/php-packages/apcu_bc/default.nix24
-rw-r--r--pkgs/development/php-packages/ast/default.nix15
-rw-r--r--pkgs/development/php-packages/box/default.nix30
-rw-r--r--pkgs/development/php-packages/composer/default.nix35
-rw-r--r--pkgs/development/php-packages/couchbase/default.nix34
-rw-r--r--pkgs/development/php-packages/couchbase/libcouchbase.patch11
-rw-r--r--pkgs/development/php-packages/deployer/default.nix33
-rw-r--r--pkgs/development/php-packages/event/default.nix34
-rw-r--r--pkgs/development/php-packages/igbinary/default.nix19
-rw-r--r--pkgs/development/php-packages/imagick/default.nix19
-rw-r--r--pkgs/development/php-packages/mailparse/default.nix20
-rw-r--r--pkgs/development/php-packages/maxminddb/default.nix25
-rw-r--r--pkgs/development/php-packages/memcached/default.nix35
-rw-r--r--pkgs/development/php-packages/mongodb/default.nix36
-rw-r--r--pkgs/development/php-packages/oci8/default.nix20
-rw-r--r--pkgs/development/php-packages/pcov/default.nix17
-rw-r--r--pkgs/development/php-packages/pdlib/default.nix25
-rw-r--r--pkgs/development/php-packages/pdo_sqlsrv/default.nix19
-rw-r--r--pkgs/development/php-packages/php-cs-fixer/default.nix30
-rw-r--r--pkgs/development/php-packages/php-parallel-lint/default.nix40
-rw-r--r--pkgs/development/php-packages/php_excel/default.nix30
-rw-r--r--pkgs/development/php-packages/phpcbf/default.nix30
-rw-r--r--pkgs/development/php-packages/phpcs/default.nix30
-rw-r--r--pkgs/development/php-packages/phpmd/default.nix31
-rw-r--r--pkgs/development/php-packages/phpstan/default.nix37
-rw-r--r--pkgs/development/php-packages/pinba/default.nix24
-rw-r--r--pkgs/development/php-packages/protobuf/default.nix19
-rw-r--r--pkgs/development/php-packages/psalm/default.nix30
-rw-r--r--pkgs/development/php-packages/psysh/default.nix30
-rw-r--r--pkgs/development/php-packages/rdkafka/default.nix22
-rw-r--r--pkgs/development/php-packages/redis/default.nix23
-rw-r--r--pkgs/development/php-packages/smbclient/default.nix19
-rw-r--r--pkgs/development/php-packages/snuffleupagus/default.nix53
-rw-r--r--pkgs/development/php-packages/sqlsrv/default.nix19
-rw-r--r--pkgs/development/php-packages/swoole/default.nix21
-rw-r--r--pkgs/development/php-packages/xdebug/default.nix20
-rw-r--r--pkgs/development/php-packages/yaml/default.nix19
38 files changed, 1000 insertions, 0 deletions
diff --git a/pkgs/development/php-packages/apcu/default.nix b/pkgs/development/php-packages/apcu/default.nix
new file mode 100644
index 00000000000..0cfc7b4b44f
--- /dev/null
+++ b/pkgs/development/php-packages/apcu/default.nix
@@ -0,0 +1,22 @@
+{ buildPecl, lib, pcre2 }:
+
+buildPecl {
+  pname = "apcu";
+
+  version = "5.1.20";
+  sha256 = "sha256-uZ1A+v7Ab00TL87lPnUm3b/B0EHqbgThc4nfrSj5w5A=";
+
+  buildInputs = [ pcre2 ];
+  doCheck = true;
+  checkTarget = "test";
+  checkFlagsArray = [ "REPORT_EXIT_STATUS=1" "NO_INTERACTION=1" ];
+  makeFlags = [ "phpincludedir=$(dev)/include" ];
+  outputs = [ "out" "dev" ];
+
+  meta = with lib; {
+    description = "Userland cache for PHP";
+    license = licenses.php301;
+    homepage = "https://pecl.php.net/package/APCu";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/apcu_bc/default.nix b/pkgs/development/php-packages/apcu_bc/default.nix
new file mode 100644
index 00000000000..e487a075dbd
--- /dev/null
+++ b/pkgs/development/php-packages/apcu_bc/default.nix
@@ -0,0 +1,24 @@
+{ buildPecl, lib, pcre2, php }:
+
+buildPecl {
+  pname = "apcu_bc";
+
+  version = "1.0.5";
+  sha256 = "0ma00syhk2ps9k9p02jz7rii6x3i2p986il23703zz5npd6y9n20";
+
+  peclDeps = [ php.extensions.apcu ];
+
+  buildInputs = [ pcre2 ];
+
+  postInstall = ''
+    mv $out/lib/php/extensions/apc.so $out/lib/php/extensions/apcu_bc.so
+  '';
+
+  meta = with lib; {
+    description = "APCu Backwards Compatibility Module";
+    license = licenses.php301;
+    homepage = "https://pecl.php.net/package/apcu_bc";
+    maintainers = teams.php.members;
+    broken = versionAtLeast php.version "8";
+  };
+}
diff --git a/pkgs/development/php-packages/ast/default.nix b/pkgs/development/php-packages/ast/default.nix
new file mode 100644
index 00000000000..65e734e9254
--- /dev/null
+++ b/pkgs/development/php-packages/ast/default.nix
@@ -0,0 +1,15 @@
+{ buildPecl, lib }:
+
+buildPecl {
+  pname = "ast";
+
+  version = "1.0.12";
+  sha256 = "1mcfx989yrakixlsx2d8v6kyxawfwhig4mra9ccpjasfhad0d31x";
+
+  meta = with lib; {
+    description = "Exposes the abstract syntax tree generated by PHP";
+    license = licenses.bsd3;
+    homepage = "https://pecl.php.net/package/ast";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/box/default.nix b/pkgs/development/php-packages/box/default.nix
new file mode 100644
index 00000000000..8ff61920ac8
--- /dev/null
+++ b/pkgs/development/php-packages/box/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, fetchurl, makeWrapper, lib, php }:
+let
+  pname = "box";
+  version = "2.7.5";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://github.com/box-project/box2/releases/download/${version}/box-${version}.phar";
+    sha256 = "1zmxdadrv0i2l8cz7xb38gnfmfyljpsaz2nnkjzqzksdmncbgd18";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -D $src $out/libexec/box/box.phar
+    makeWrapper ${php}/bin/php $out/bin/box \
+      --add-flags "-d phar.readonly=0 $out/libexec/box/box.phar"
+  '';
+
+  meta = with lib; {
+    description = "An application for building and managing Phars";
+    license = licenses.mit;
+    homepage = "https://box-project.github.io/box2/";
+    maintainers = with maintainers; [ jtojnar ] ++ teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/composer/default.nix b/pkgs/development/php-packages/composer/default.nix
new file mode 100644
index 00000000000..15dd3f5bc59
--- /dev/null
+++ b/pkgs/development/php-packages/composer/default.nix
@@ -0,0 +1,35 @@
+{ mkDerivation, fetchurl, makeWrapper, unzip, lib, php }:
+let
+  pname = "composer";
+  version = "2.1.5";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://getcomposer.org/download/${version}/composer.phar";
+    sha256 = "1v4hjwbv1y5jvj91i2fj8bvmfsymp9ls8h231zd85svfqdy5b5dy";
+  };
+
+  dontUnpack = true;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/bin
+    install -D $src $out/libexec/composer/composer.phar
+    makeWrapper ${php}/bin/php $out/bin/composer \
+      --add-flags "$out/libexec/composer/composer.phar" \
+      --prefix PATH : ${lib.makeBinPath [ unzip ]}
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Dependency Manager for PHP";
+    license = licenses.mit;
+    homepage = "https://getcomposer.org/";
+    changelog = "https://github.com/composer/composer/releases/tag/${version}";
+    maintainers = with maintainers; [ offline ] ++ teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/couchbase/default.nix b/pkgs/development/php-packages/couchbase/default.nix
new file mode 100644
index 00000000000..7e72af65a30
--- /dev/null
+++ b/pkgs/development/php-packages/couchbase/default.nix
@@ -0,0 +1,34 @@
+{ lib, buildPecl, fetchFromGitHub, writeText, libcouchbase, zlib, php, substituteAll }:
+let
+  pname = "couchbase";
+  version = "3.1.2";
+in
+buildPecl {
+  inherit pname version;
+
+  src = fetchFromGitHub {
+    owner = "couchbase";
+    repo = "php-couchbase";
+    rev = "v${version}";
+    sha256 = "0zm2jm5lzjjqlhkiivm4v5gr4286pwqaf5nar1ga816hhwnyhj42";
+  };
+
+  configureFlags = [ "--with-couchbase" ];
+
+  buildInputs = [ libcouchbase zlib ];
+  internalDeps = lib.optionals (lib.versionOlder php.version "8.0") [ php.extensions.json ];
+
+  patches = [
+    (substituteAll {
+      src = ./libcouchbase.patch;
+      inherit libcouchbase;
+    })
+  ];
+
+  meta = with lib; {
+    description = "Couchbase Server PHP extension";
+    license = licenses.asl20;
+    homepage = "https://docs.couchbase.com/php-sdk/current/project-docs/sdk-release-notes.html";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/couchbase/libcouchbase.patch b/pkgs/development/php-packages/couchbase/libcouchbase.patch
new file mode 100644
index 00000000000..cd08da781a2
--- /dev/null
+++ b/pkgs/development/php-packages/couchbase/libcouchbase.patch
@@ -0,0 +1,11 @@
+--- a/config.m4
++++ b/config.m4
+@@ -28,7 +28,7 @@ if test "$PHP_COUCHBASE" != "no"; then
+
+   dnl fallback on standard directory
+   else
+-    for i in /usr/local /usr; do
++    for i in @libcouchbase@; do
+       if test -r $i/include/libcouchbase/couchbase.h; then
+         LIBCOUCHBASE_DIR=$i
+         AC_MSG_RESULT(found in $i)
diff --git a/pkgs/development/php-packages/deployer/default.nix b/pkgs/development/php-packages/deployer/default.nix
new file mode 100644
index 00000000000..7679fb5ea51
--- /dev/null
+++ b/pkgs/development/php-packages/deployer/default.nix
@@ -0,0 +1,33 @@
+{ mkDerivation, fetchurl, makeWrapper, installShellFiles, lib, php }:
+
+mkDerivation rec {
+  pname = "deployer";
+  version = "6.8.0";
+
+  src = fetchurl {
+    url = "https://deployer.org/releases/v${version}/${pname}.phar";
+    sha256 = "09mxwfa7yszsiljbkxpsd4sghqngl08cn18v4g1fbsxp3ib3kxi5";
+  };
+
+  dontUnpack = true;
+
+  nativeBuildInputs = [ makeWrapper installShellFiles ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -D $src $out/libexec/deployer/deployer.phar
+    makeWrapper ${php}/bin/php $out/bin/dep --add-flags "$out/libexec/deployer/deployer.phar"
+
+    # fish support currently broken: https://github.com/deployphp/deployer/issues/2527
+    installShellCompletion --cmd dep \
+      --bash <($out/bin/dep autocomplete --install) \
+      --zsh <($out/bin/dep autocomplete --install)
+  '';
+
+  meta = with lib; {
+    description = "A deployment tool for PHP";
+    license = licenses.mit;
+    homepage = "https://deployer.org/";
+    maintainers = with maintainers; teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/event/default.nix b/pkgs/development/php-packages/event/default.nix
new file mode 100644
index 00000000000..ed23bcc4b0b
--- /dev/null
+++ b/pkgs/development/php-packages/event/default.nix
@@ -0,0 +1,34 @@
+{ buildPecl, lib, php, pkg-config, openssl, libevent }:
+buildPecl {
+  pname = "event";
+
+  version = "3.0.5";
+  sha256 = "0q5a83mcl97cyry5rd85j5xsjvflnki6s5cm56igjm0szxvgj39c";
+
+  configureFlags = [
+    "--with-event-libevent-dir=${libevent.dev}"
+    "--with-event-core"
+    "--with-event-extra"
+    "--with-event-pthreads"
+  ];
+
+  postPhpize = ''
+    substituteInPlace configure --replace \
+      'as_fn_error $? "Couldn'\'''t find $phpincludedir/sockets/php_sockets.h. Please check if sockets extension installed" "$LINENO" 5' \
+      ':'
+  '';
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ openssl libevent ];
+  internalDeps = [ php.extensions.sockets ];
+
+  meta = with lib; {
+    description = ''
+      This is an extension to efficiently schedule I/O, time and signal based
+      events using the best I/O notification mechanism available for specific platform.
+    '';
+    license = licenses.php301;
+    homepage = "https://bitbucket.org/osmanov/pecl-event/";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/igbinary/default.nix b/pkgs/development/php-packages/igbinary/default.nix
new file mode 100644
index 00000000000..258b0debbae
--- /dev/null
+++ b/pkgs/development/php-packages/igbinary/default.nix
@@ -0,0 +1,19 @@
+{ buildPecl, lib }:
+
+buildPecl {
+  pname = "igbinary";
+
+  version = "3.2.3";
+  sha256 = "1ffaqhckkk1qr5dk1fl7f8dm2w4lj4gqrgazzmc67acsdmp7z5f0";
+
+  configureFlags = [ "--enable-igbinary" ];
+  makeFlags = [ "phpincludedir=$(dev)/include" ];
+  outputs = [ "out" "dev" ];
+
+  meta = with lib; {
+    description = "Binary serialization for PHP";
+    license = licenses.bsd3;
+    homepage = "https://github.com/igbinary/igbinary/";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/imagick/default.nix b/pkgs/development/php-packages/imagick/default.nix
new file mode 100644
index 00000000000..7da324b2e1a
--- /dev/null
+++ b/pkgs/development/php-packages/imagick/default.nix
@@ -0,0 +1,19 @@
+{ buildPecl, lib, imagemagick, pkg-config, pcre2 }:
+
+buildPecl {
+  pname = "imagick";
+
+  version = "3.5.0";
+  sha256 = "0afjyll6rr79am6d1p041bl4dj44hp9z4gzmlhrkvkdsdz1vfpbr";
+
+  configureFlags = [ "--with-imagick=${imagemagick.dev}" ];
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ pcre2 ];
+
+  meta = with lib; {
+    description = "Imagick is a native php extension to create and modify images using the ImageMagick API";
+    license = licenses.php301;
+    homepage = "https://pecl.php.net/package/imagick";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/mailparse/default.nix b/pkgs/development/php-packages/mailparse/default.nix
new file mode 100644
index 00000000000..1981b3d6aea
--- /dev/null
+++ b/pkgs/development/php-packages/mailparse/default.nix
@@ -0,0 +1,20 @@
+{ buildPecl, lib, php }:
+
+buildPecl {
+  pname = "mailparse";
+
+  version = "3.1.1";
+  sha256 = "02nfjbgyjbr48rw6r46gd713hkxh7nghg2rcbr726zhzz182c3y7";
+
+  internalDeps = [ php.extensions.mbstring ];
+  postConfigure = ''
+    echo "#define HAVE_MBSTRING 1" >> config.h
+  '';
+
+  meta = with lib; {
+    description = "Mailparse is an extension for parsing and working with email messages";
+    license = licenses.php301;
+    homepage = "https://pecl.php.net/package/mailparse";
+    maintainers = lib.teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/maxminddb/default.nix b/pkgs/development/php-packages/maxminddb/default.nix
new file mode 100644
index 00000000000..eae232b6c01
--- /dev/null
+++ b/pkgs/development/php-packages/maxminddb/default.nix
@@ -0,0 +1,25 @@
+{ buildPecl, lib, fetchFromGitHub, libmaxminddb }:
+let
+  pname = "maxminddb";
+  version = "1.10.1";
+in
+buildPecl {
+  inherit pname version;
+
+  src = fetchFromGitHub {
+    owner = "maxmind";
+    repo = "MaxMind-DB-Reader-php";
+    rev = "v${version}";
+    sha256 = "1m5y733x4ykldi1pym54mdahfwfnwy2r1n6fnndwi8jz9px9pa5k";
+  };
+
+  buildInputs = [ libmaxminddb ];
+  sourceRoot = "source/ext";
+
+  meta = with lib; {
+    description = "C extension that is a drop-in replacement for MaxMind\\Db\\Reader";
+    license = with licenses; [ asl20 ];
+    homepage = "https://github.com/maxmind/MaxMind-DB-Reader-php";
+    maintainers = with maintainers; [ ajs124 das_j ] ++ teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/memcached/default.nix b/pkgs/development/php-packages/memcached/default.nix
new file mode 100644
index 00000000000..0aea58572cb
--- /dev/null
+++ b/pkgs/development/php-packages/memcached/default.nix
@@ -0,0 +1,35 @@
+{ buildPecl, lib, fetchgit, php, cyrus_sasl, zlib, pkg-config, libmemcached }:
+let
+  pname = "memcached";
+  version = "3.1.5";
+in
+buildPecl {
+  inherit pname version;
+
+  src = fetchgit {
+    url = "https://github.com/php-memcached-dev/php-memcached";
+    rev = "v${version}";
+    sha256 = "01mbh2m3kfbdvih3c8g3g9h4vdd80r0i9g2z8b3lx3mi8mmcj380";
+  };
+
+  internalDeps = [
+    php.extensions.session
+  ] ++ lib.optionals (lib.versionOlder php.version "7.4") [
+    php.extensions.hash
+  ];
+
+  configureFlags = [
+    "--with-zlib-dir=${zlib.dev}"
+    "--with-libmemcached-dir=${libmemcached}"
+  ];
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ cyrus_sasl zlib ];
+
+  meta = with lib; {
+    description = "PHP extension for interfacing with memcached via libmemcached library";
+    license = licenses.php301;
+    homepage = "https://github.com/php-memcached-dev/php-memcached";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/mongodb/default.nix b/pkgs/development/php-packages/mongodb/default.nix
new file mode 100644
index 00000000000..b65862750e7
--- /dev/null
+++ b/pkgs/development/php-packages/mongodb/default.nix
@@ -0,0 +1,36 @@
+{ stdenv
+, buildPecl
+, lib
+, pcre2
+, pkg-config
+, cyrus_sasl
+, icu64
+, openssl
+, snappy
+, zlib
+, darwin
+}:
+
+buildPecl {
+  pname = "mongodb";
+
+  version = "1.9.1";
+  sha256 = "1mzyssy2a89grw7rwmh0x22lql377nmnqlcv9piam1c32qiwxlg9";
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [
+    cyrus_sasl
+    icu64
+    openssl
+    snappy
+    zlib
+    pcre2
+  ] ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.Security;
+
+  meta = with lib; {
+    description = "MongoDB driver for PHP";
+    license = licenses.asl20;
+    homepage = "https://docs.mongodb.com/drivers/php/";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/oci8/default.nix b/pkgs/development/php-packages/oci8/default.nix
new file mode 100644
index 00000000000..eb65b5a27cd
--- /dev/null
+++ b/pkgs/development/php-packages/oci8/default.nix
@@ -0,0 +1,20 @@
+{ buildPecl, lib, version, sha256, oracle-instantclient }:
+buildPecl {
+  pname = "oci8";
+
+  inherit version sha256;
+
+  buildInputs = [ oracle-instantclient ];
+  configureFlags = [ "--with-oci8=shared,instantclient,${oracle-instantclient.lib}/lib" ];
+
+  postPatch = ''
+    sed -i -e 's|OCISDKMANINC=`.*$|OCISDKMANINC="${oracle-instantclient.dev}/include"|' config.m4
+  '';
+
+  meta = with lib; {
+    description = "Extension for Oracle Database";
+    license = licenses.php301;
+    homepage = "https://pecl.php.net/package/oci8";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/pcov/default.nix b/pkgs/development/php-packages/pcov/default.nix
new file mode 100644
index 00000000000..f0e3e75c71c
--- /dev/null
+++ b/pkgs/development/php-packages/pcov/default.nix
@@ -0,0 +1,17 @@
+{ buildPecl, lib, pcre2 }:
+
+buildPecl {
+  pname = "pcov";
+
+  version = "1.0.9";
+  sha256 = "0q2ig5lxzpwz3qgr05wcyh5jzhfxlygkv6nj6jagkhiialng2710";
+
+  buildInputs = [ pcre2 ];
+
+  meta = with lib; {
+    description = "A self contained php-code-coverage compatible driver for PHP.";
+    license = licenses.php301;
+    homepage = "https://github.com/krakjoe/pcov";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/pdlib/default.nix b/pkgs/development/php-packages/pdlib/default.nix
new file mode 100644
index 00000000000..5a1e431d52d
--- /dev/null
+++ b/pkgs/development/php-packages/pdlib/default.nix
@@ -0,0 +1,25 @@
+{ buildPecl, fetchFromGitHub, lib, pkg-config, dlib }:
+let
+  pname = "pdlib";
+  version = "1.0.2";
+in
+buildPecl {
+  inherit pname version;
+
+  src = fetchFromGitHub {
+    owner = "goodspb";
+    repo = "pdlib";
+    rev = "v${version}";
+    sha256 = "0qnmqwlw5vb2rvliap4iz9val6mal4qqixcw69pwskdw5jka6v5i";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ (dlib.override { guiSupport = true; }) ];
+
+  meta = with lib; {
+    description = "A PHP extension for Dlib";
+    license = with licenses; [ mit ];
+    homepage = "https://github.com/goodspb/pdlib";
+    maintainers = lib.teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/pdo_sqlsrv/default.nix b/pkgs/development/php-packages/pdo_sqlsrv/default.nix
new file mode 100644
index 00000000000..ab7e6e71fea
--- /dev/null
+++ b/pkgs/development/php-packages/pdo_sqlsrv/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPecl, lib, libiconv, unixODBC, php }:
+
+buildPecl {
+  pname = "pdo_sqlsrv";
+
+  version = "5.9.0";
+  sha256 = "0n4cnkldvyp1lrpj18ky2ii2dcaa51dsmh8cspixm7w76dxl3khg";
+
+  internalDeps = [ php.extensions.pdo ];
+
+  buildInputs = [ unixODBC ] ++ lib.optionals stdenv.isDarwin [ libiconv ];
+
+  meta = with lib; {
+    description = "Microsoft Drivers for PHP for SQL Server";
+    license = licenses.mit;
+    homepage = "https://github.com/Microsoft/msphpsql";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/php-cs-fixer/default.nix b/pkgs/development/php-packages/php-cs-fixer/default.nix
new file mode 100644
index 00000000000..0c76ff56a60
--- /dev/null
+++ b/pkgs/development/php-packages/php-cs-fixer/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, fetchurl, makeWrapper, lib, php }:
+let
+  pname = "php-cs-fixer";
+  version = "3.0.0";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v${version}/php-cs-fixer.phar";
+    sha256 = "141rkcr0wbsqnc4s5vg4bk4dmxwigwxa3j0vi5c42b5k1lq3sgwr";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -D $src $out/libexec/php-cs-fixer/php-cs-fixer.phar
+    makeWrapper ${php}/bin/php $out/bin/php-cs-fixer \
+      --add-flags "$out/libexec/php-cs-fixer/php-cs-fixer.phar"
+  '';
+
+  meta = with lib; {
+    description = "A tool to automatically fix PHP coding standards issues";
+    license = licenses.mit;
+    homepage = "http://cs.sensiolabs.org/";
+    maintainers = with maintainers; [ jtojnar ] ++ teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/php-parallel-lint/default.nix b/pkgs/development/php-packages/php-parallel-lint/default.nix
new file mode 100644
index 00000000000..50fd23540ee
--- /dev/null
+++ b/pkgs/development/php-packages/php-parallel-lint/default.nix
@@ -0,0 +1,40 @@
+{ mkDerivation, fetchFromGitHub, makeWrapper, lib, php }:
+let
+  pname = "php-parallel-lint";
+  version = "1.0.0";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchFromGitHub {
+    owner = "JakubOnderka";
+    repo = "PHP-Parallel-Lint";
+    rev = "v${version}";
+    sha256 = "16nv8yyk2z3l213dg067l6di4pigg5rd8yswr5xgd18jwbys2vnw";
+  };
+
+  nativeBuildInputs = [
+    makeWrapper
+    php.packages.composer
+    php.packages.box
+  ];
+
+  buildPhase = ''
+    composer dump-autoload
+    box build
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -D parallel-lint.phar $out/libexec/php-parallel-lint/php-parallel-lint.phar
+    makeWrapper ${php}/bin/php $out/bin/php-parallel-lint \
+      --add-flags "$out/libexec/php-parallel-lint/php-parallel-lint.phar"
+  '';
+
+  meta = with lib; {
+    description = "Tool to check syntax of PHP files faster than serial check with fancier output";
+    license = licenses.bsd2;
+    homepage = "https://github.com/JakubOnderka/PHP-Parallel-Lint";
+    maintainers = with maintainers; [ jtojnar ] ++ teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/php_excel/default.nix b/pkgs/development/php-packages/php_excel/default.nix
new file mode 100644
index 00000000000..0930926a06e
--- /dev/null
+++ b/pkgs/development/php-packages/php_excel/default.nix
@@ -0,0 +1,30 @@
+{ buildPecl, fetchurl, lib, libxl, php }:
+let
+  pname = "php_excel";
+  phpVersion = "php7";
+  version = "1.0.2";
+in
+buildPecl {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://github.com/iliaal/php_excel/releases/download/Excel-1.0.2-PHP7/excel-${version}-${phpVersion}.tgz";
+    sha256 = "0dpvih9gpiyh1ml22zi7hi6kslkilzby00z1p8x248idylldzs2n";
+  };
+
+  buildInputs = [ libxl ];
+
+  configureFlags = [
+    "--with-excel"
+    "--with-libxl-incdir=${libxl}/include_c"
+    "--with-libxl-libdir=${libxl}/lib"
+  ];
+
+  meta = with lib; {
+    description = "PHP Extension interface to the Excel writing/reading library";
+    license = licenses.php301;
+    homepage = "https://github.com/iliaal/php_excel";
+    maintainers = lib.teams.php.members;
+    broken = lib.versionAtLeast php.version "8.0";
+  };
+}
diff --git a/pkgs/development/php-packages/phpcbf/default.nix b/pkgs/development/php-packages/phpcbf/default.nix
new file mode 100644
index 00000000000..caf3b515aab
--- /dev/null
+++ b/pkgs/development/php-packages/phpcbf/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, fetchurl, lib, php, makeWrapper }:
+let
+  pname = "phpcbf";
+  version = "3.6.0";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://github.com/squizlabs/PHP_CodeSniffer/releases/download/${version}/phpcbf.phar";
+    sha256 = "04wb1imm4934mpy2hxcmqh4cn7md1vwmfii39p6mby809325b5z1";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -D $src $out/libexec/phpcbf/phpcbf.phar
+    makeWrapper ${php}/bin/php $out/bin/phpcbf \
+      --add-flags "$out/libexec/phpcbf/phpcbf.phar"
+  '';
+
+  meta = with lib; {
+    description = "PHP coding standard beautifier and fixer";
+    license = licenses.bsd3;
+    homepage = "https://squizlabs.github.io/PHP_CodeSniffer/";
+    maintainers = with maintainers; [ cmcdragonkai ] ++ teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/phpcs/default.nix b/pkgs/development/php-packages/phpcs/default.nix
new file mode 100644
index 00000000000..87433066ea9
--- /dev/null
+++ b/pkgs/development/php-packages/phpcs/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, fetchurl, makeWrapper, lib, php }:
+let
+  pname = "phpcs";
+  version = "3.6.0";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://github.com/squizlabs/PHP_CodeSniffer/releases/download/${version}/phpcs.phar";
+    sha256 = "0sdi78hrwd3r5p1b38qmp89m41kfszh2qn4n5zhq2dmhsjdhjziz";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -D $src $out/libexec/phpcs/phpcs.phar
+    makeWrapper ${php}/bin/php $out/bin/phpcs \
+      --add-flags "$out/libexec/phpcs/phpcs.phar"
+  '';
+
+  meta = with lib; {
+    description = "PHP coding standard tool";
+    license = licenses.bsd3;
+    homepage = "https://squizlabs.github.io/PHP_CodeSniffer/";
+    maintainers = with maintainers; [ javaguirre ] ++ teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/phpmd/default.nix b/pkgs/development/php-packages/phpmd/default.nix
new file mode 100644
index 00000000000..bf6979f88ea
--- /dev/null
+++ b/pkgs/development/php-packages/phpmd/default.nix
@@ -0,0 +1,31 @@
+{ mkDerivation, fetchurl, makeWrapper, lib, php }:
+let
+  pname = "phpmd";
+  version = "2.8.2";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://github.com/phpmd/phpmd/releases/download/${version}/phpmd.phar";
+    sha256 = "1i8qgzxniw5d8zjpypalm384y7qfczapfq70xmg129laq6xiqlqb";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -D $src $out/libexec/phpmd/phpmd.phar
+    makeWrapper ${php}/bin/php $out/bin/phpmd \
+      --add-flags "$out/libexec/phpmd/phpmd.phar"
+  '';
+
+  meta = with lib; {
+    description = "PHP code quality analyzer";
+    license = licenses.bsd3;
+    homepage = "https://phpmd.org/";
+    maintainers = teams.php.members;
+    broken = versionAtLeast php.version "7.4";
+  };
+}
diff --git a/pkgs/development/php-packages/phpstan/default.nix b/pkgs/development/php-packages/phpstan/default.nix
new file mode 100644
index 00000000000..048ae71ff29
--- /dev/null
+++ b/pkgs/development/php-packages/phpstan/default.nix
@@ -0,0 +1,37 @@
+{ mkDerivation, fetchurl, makeWrapper, lib, php }:
+let
+  pname = "phpstan";
+  version = "0.12.90";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://github.com/phpstan/phpstan/releases/download/${version}/phpstan.phar";
+    sha256 = "0f8858w9b421s3dfz8a56g0mik4zyi1lp88lijw4zs2d94dcdl9s";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -D $src $out/libexec/phpstan/phpstan.phar
+    makeWrapper ${php}/bin/php $out/bin/phpstan \
+      --add-flags "$out/libexec/phpstan/phpstan.phar"
+  '';
+
+  meta = with lib; {
+    description = "PHP Static Analysis Tool";
+    longDescription = ''
+      PHPStan focuses on finding errors in your code without actually
+      running it. It catches whole classes of bugs even before you write
+      tests for the code. It moves PHP closer to compiled languages in the
+      sense that the correctness of each line of the code can be checked
+      before you run the actual line.
+    '';
+    license = licenses.mit;
+    homepage = "https://github.com/phpstan/phpstan";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/pinba/default.nix b/pkgs/development/php-packages/pinba/default.nix
new file mode 100644
index 00000000000..1649da7c654
--- /dev/null
+++ b/pkgs/development/php-packages/pinba/default.nix
@@ -0,0 +1,24 @@
+{ buildPecl, lib, fetchFromGitHub }:
+
+buildPecl {
+  pname = "pinba";
+  version = "1.1.2";
+
+  src = fetchFromGitHub {
+    owner = "tony2001";
+    repo = "pinba_extension";
+    rev = "RELEASE_1_1_2";
+    sha256 = "0wqcqq6sb51wiawa37hbd1h9dbvmyyndzdvz87xqji7lpr9vn8jy";
+  };
+
+  meta = with lib; {
+    description = "PHP extension for Pinba";
+    longDescription = ''
+      Pinba is a MySQL storage engine that acts as a realtime monitoring and
+      statistics server for PHP using MySQL as a read-only interface.
+    '';
+    license = licenses.lgpl2Plus;
+    homepage = "http://pinba.org/";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/protobuf/default.nix b/pkgs/development/php-packages/protobuf/default.nix
new file mode 100644
index 00000000000..87007b1ea12
--- /dev/null
+++ b/pkgs/development/php-packages/protobuf/default.nix
@@ -0,0 +1,19 @@
+{ buildPecl, lib, pcre2 }:
+
+buildPecl {
+  pname = "protobuf";
+
+  version = "3.17.3";
+  sha256 = "05nn6ps271vwrbr9w08lyyzsszabnqhz1x0vbblg0q8y2xrmb6dl";
+
+  buildInputs = [ pcre2 ];
+
+  meta = with lib; {
+    description = ''
+      Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data.
+    '';
+    license = licenses.bsd3;
+    homepage = "https://developers.google.com/protocol-buffers/";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/psalm/default.nix b/pkgs/development/php-packages/psalm/default.nix
new file mode 100644
index 00000000000..b5c5550806f
--- /dev/null
+++ b/pkgs/development/php-packages/psalm/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, fetchurl, makeWrapper, lib, php }:
+let
+  pname = "psalm";
+  version = "4.7.3";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://github.com/vimeo/psalm/releases/download/${version}/psalm.phar";
+    sha256 = "0d8gxkpm4rc00a8br5wzjpglkwx95kr15s4z3cvxyf6iik1j5r47";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -D $src $out/libexec/psalm/psalm.phar
+    makeWrapper ${php}/bin/php $out/bin/psalm \
+      --add-flags "$out/libexec/psalm/psalm.phar"
+  '';
+
+  meta = with lib; {
+    description = "A static analysis tool for finding errors in PHP applications";
+    license = licenses.mit;
+    homepage = "https://github.com/vimeo/psalm";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/psysh/default.nix b/pkgs/development/php-packages/psysh/default.nix
new file mode 100644
index 00000000000..c12eb6b4585
--- /dev/null
+++ b/pkgs/development/php-packages/psysh/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, fetchurl, makeWrapper, lib, php }:
+let
+  pname = "psysh";
+  version = "0.10.8";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://github.com/bobthecow/psysh/releases/download/v${version}/psysh-v${version}.tar.gz";
+    sha256 = "sha256-6opSBKR5eI5HlaJy4A94JrxYfUtCCNVlyntmLZbWfOE=";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    tar -xzf $src -C $out/bin
+    chmod +x $out/bin/psysh
+    wrapProgram $out/bin/psysh --prefix PATH : "${lib.makeBinPath [ php ]}"
+  '';
+
+  meta = with lib; {
+    description = "PsySH is a runtime developer console, interactive debugger and REPL for PHP.";
+    license = licenses.mit;
+    homepage = "https://psysh.org/";
+    maintainers = with maintainers; [ caugner ] ++ teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/rdkafka/default.nix b/pkgs/development/php-packages/rdkafka/default.nix
new file mode 100644
index 00000000000..1b963a01ad5
--- /dev/null
+++ b/pkgs/development/php-packages/rdkafka/default.nix
@@ -0,0 +1,22 @@
+{ buildPecl, lib, rdkafka, pcre2 }:
+
+buildPecl {
+  pname = "rdkafka";
+
+  version = "5.0.0";
+  sha256 = "sha256-Qy+6rkPczhdxFbDhcuzmUTLMPUXYZ0HaheDBhkh4FXs=";
+
+  buildInputs = [ rdkafka pcre2 ];
+
+  postPhpize = ''
+    substituteInPlace configure \
+      --replace 'SEARCH_PATH="/usr/local /usr"' 'SEARCH_PATH=${rdkafka}'
+  '';
+
+  meta = with lib; {
+    description = "Kafka client based on librdkafka";
+    license = licenses.mit;
+    homepage = "https://github.com/arnaud-lb/php-rdkafka";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/redis/default.nix b/pkgs/development/php-packages/redis/default.nix
new file mode 100644
index 00000000000..56e8a0a1fae
--- /dev/null
+++ b/pkgs/development/php-packages/redis/default.nix
@@ -0,0 +1,23 @@
+{ buildPecl, lib, php }:
+
+buildPecl {
+  pname = "redis";
+
+  version = "5.3.4";
+  sha256 = "1k5l7xxb06rlwq9jbmbbr03pc74d75vgv7h5bqjkbwan6dphafab";
+
+  internalDeps = with php.extensions; [
+    session
+  ] ++ lib.optionals (lib.versionOlder php.version "8.0") [
+    json
+  ] ++ lib.optionals (lib.versionOlder php.version "7.4") [
+    hash
+  ];
+
+  meta = with lib; {
+    description = "PHP extension for interfacing with Redis";
+    license = licenses.php301;
+    homepage = "https://github.com/phpredis/phpredis/";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/smbclient/default.nix b/pkgs/development/php-packages/smbclient/default.nix
new file mode 100644
index 00000000000..65cfad9ea3a
--- /dev/null
+++ b/pkgs/development/php-packages/smbclient/default.nix
@@ -0,0 +1,19 @@
+{ buildPecl, lib, samba, pkg-config }:
+buildPecl {
+  pname = "smbclient";
+  version = "1.0.6";
+  sha256 = "sha256-ZsQzdDt6NLRWBsA75om9zkxSvB6zBsvvPhXJZrX/KNc=";
+
+  # TODO: remove this when upstream merges a fix - https://github.com/eduardok/libsmbclient-php/pull/66
+  LIBSMBCLIENT_INCDIR = "${samba.dev}/include/samba-4.0";
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ samba ];
+
+  meta = with lib; {
+    description = "PHP wrapper for libsmbclient";
+    license = licenses.bsd2;
+    homepage = "https://github.com/eduardok/libsmbclient-php";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/snuffleupagus/default.nix b/pkgs/development/php-packages/snuffleupagus/default.nix
new file mode 100644
index 00000000000..4318a49a8aa
--- /dev/null
+++ b/pkgs/development/php-packages/snuffleupagus/default.nix
@@ -0,0 +1,53 @@
+{ buildPecl
+, lib
+, php
+, fetchFromGitHub
+, pcre2
+, fetchpatch
+}:
+
+buildPecl rec {
+  pname = "snuffleupagus";
+  version = "0.7.0";
+  src = fetchFromGitHub {
+    owner = "jvoisin";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1la6wa9xznc110b7isiy502x71mkvhisq6m8llhczpq4rs4nbcw2";
+  };
+
+  buildInputs = [
+    pcre2
+  ];
+
+  internalDeps = with php.extensions; [
+    session
+  ] ++ lib.optionals (lib.versionOlder php.version "7.4") [
+    hash
+  ];
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/jvoisin/snuffleupagus/commit/3c528d9d03cec872382a6f400b5701a8fbfd59b4.patch";
+      sha256 = "0lnj4xcl867f477mha697d1py1nwxhl18dvvg40qgflpdbywlzns";
+      stripLen = 1;
+    })
+  ];
+
+  sourceRoot = "source/src";
+
+  configureFlags = [
+    "--enable-snuffleupagus"
+  ];
+
+  postPhpize = ''
+    ./configure --enable-snuffleupagus
+  '';
+
+  meta = with lib; {
+    description = "Security module for php7 and php8 - Killing bugclasses and virtual-patching the rest!";
+    license = licenses.lgpl3Only;
+    homepage = "https://github.com/jvoisin/snuffleupagus";
+    maintainers = teams.php.members ++ [ maintainers.zupo ];
+  };
+}
diff --git a/pkgs/development/php-packages/sqlsrv/default.nix b/pkgs/development/php-packages/sqlsrv/default.nix
new file mode 100644
index 00000000000..37ff1cb187e
--- /dev/null
+++ b/pkgs/development/php-packages/sqlsrv/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, buildPecl, lib, unixODBC, libiconv }:
+
+buildPecl {
+  pname = "sqlsrv";
+
+  version = "5.9.0";
+  sha256 = "1css440b4qrbblmcswd5wdr2v1rjxlj2iicbmvjq9fg81028w40a";
+
+  buildInputs = [
+    unixODBC
+  ] ++ lib.optionals stdenv.isDarwin [ libiconv ];
+
+  meta = with lib; {
+    description = "Microsoft Drivers for PHP for SQL Server";
+    license = licenses.mit;
+    homepage = "https://github.com/Microsoft/msphpsql";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/swoole/default.nix b/pkgs/development/php-packages/swoole/default.nix
new file mode 100644
index 00000000000..c9ec1b3938f
--- /dev/null
+++ b/pkgs/development/php-packages/swoole/default.nix
@@ -0,0 +1,21 @@
+{ lib, buildPecl, php, valgrind, pcre2 }:
+
+buildPecl {
+  pname = "swoole";
+
+  version = "4.6.7";
+  sha256 = "107wp403z8skkqrcm240vyyy6wqx5a4v2bqhlshlknyi14r2v165";
+
+  buildInputs = [ valgrind pcre2 ];
+  internalDeps = lib.optionals (lib.versionOlder php.version "7.4") [ php.extensions.hash ];
+
+  doCheck = true;
+  checkTarget = "tests";
+
+  meta = with lib; {
+    description = "Coroutine-based concurrency library for PHP";
+    license = licenses.asl20;
+    homepage = "https://www.swoole.co.uk/";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/xdebug/default.nix b/pkgs/development/php-packages/xdebug/default.nix
new file mode 100644
index 00000000000..43387380dda
--- /dev/null
+++ b/pkgs/development/php-packages/xdebug/default.nix
@@ -0,0 +1,20 @@
+{ buildPecl, lib }:
+
+buildPecl {
+  pname = "xdebug";
+
+  version = "3.0.4";
+  sha256 = "1bvjmnx9bcfq4ikp02kiqg0f7ccgx4mkmz5d7g6v0d263x4r0wmj";
+
+  doCheck = true;
+  checkTarget = "test";
+
+  zendExtension = true;
+
+  meta = with lib; {
+    description = "Provides functions for function traces and profiling";
+    license = licenses.php301;
+    homepage = "https://xdebug.org/";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/pkgs/development/php-packages/yaml/default.nix b/pkgs/development/php-packages/yaml/default.nix
new file mode 100644
index 00000000000..ef58b315fae
--- /dev/null
+++ b/pkgs/development/php-packages/yaml/default.nix
@@ -0,0 +1,19 @@
+{ buildPecl, lib, pkg-config, libyaml }:
+
+buildPecl {
+  pname = "yaml";
+
+  version = "2.2.1";
+  sha256 = "sha256-4XrQTnUuJf0Jm93S350m3+8YPI0AxBebydei4cl9eBk=";
+
+  configureFlags = [ "--with-yaml=${libyaml}" ];
+
+  nativeBuildInputs = [ pkg-config ];
+
+  meta = with lib; {
+    description = "YAML-1.1 parser and emitter";
+    license = licenses.mit;
+    homepage = "http://bd808.com/pecl-file_formats-yaml/";
+    maintainers = teams.php.members;
+  };
+}