about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/php-packages
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/php-packages')
-rw-r--r--nixpkgs/pkgs/development/php-packages/apcu/default.nix17
-rw-r--r--nixpkgs/pkgs/development/php-packages/apcu_bc/default.nix18
-rw-r--r--nixpkgs/pkgs/development/php-packages/ast/default.nix10
-rw-r--r--nixpkgs/pkgs/development/php-packages/box/default.nix30
-rw-r--r--nixpkgs/pkgs/development/php-packages/composer/2.0.nix32
-rw-r--r--nixpkgs/pkgs/development/php-packages/composer/default.nix32
-rw-r--r--nixpkgs/pkgs/development/php-packages/couchbase/default.nix49
-rw-r--r--nixpkgs/pkgs/development/php-packages/event/default.nix34
-rw-r--r--nixpkgs/pkgs/development/php-packages/igbinary/default.nix14
-rw-r--r--nixpkgs/pkgs/development/php-packages/imagick/default.nix27
-rw-r--r--nixpkgs/pkgs/development/php-packages/mailparse/default.nix15
-rw-r--r--nixpkgs/pkgs/development/php-packages/maxminddb/default.nix24
-rw-r--r--nixpkgs/pkgs/development/php-packages/memcached/default.nix30
-rw-r--r--nixpkgs/pkgs/development/php-packages/mongodb/default.nix20
-rw-r--r--nixpkgs/pkgs/development/php-packages/oci8/default.nix15
-rw-r--r--nixpkgs/pkgs/development/php-packages/pcov/default.nix12
-rw-r--r--nixpkgs/pkgs/development/php-packages/pdlib/default.nix24
-rw-r--r--nixpkgs/pkgs/development/php-packages/pdo_sqlsrv/default.nix14
-rw-r--r--nixpkgs/pkgs/development/php-packages/php-cs-fixer/default.nix30
-rw-r--r--nixpkgs/pkgs/development/php-packages/php-parallel-lint/default.nix40
-rw-r--r--nixpkgs/pkgs/development/php-packages/php_excel/default.nix24
-rw-r--r--nixpkgs/pkgs/development/php-packages/phpcbf/default.nix30
-rw-r--r--nixpkgs/pkgs/development/php-packages/phpcs/default.nix30
-rw-r--r--nixpkgs/pkgs/development/php-packages/phpmd/default.nix33
-rw-r--r--nixpkgs/pkgs/development/php-packages/phpstan/default.nix37
-rw-r--r--nixpkgs/pkgs/development/php-packages/pinba/default.nix32
-rw-r--r--nixpkgs/pkgs/development/php-packages/protobuf/default.nix36
-rw-r--r--nixpkgs/pkgs/development/php-packages/psalm/default.nix30
-rw-r--r--nixpkgs/pkgs/development/php-packages/psysh/default.nix30
-rw-r--r--nixpkgs/pkgs/development/php-packages/pthreads/default.nix28
-rw-r--r--nixpkgs/pkgs/development/php-packages/rdkafka/default.nix21
-rw-r--r--nixpkgs/pkgs/development/php-packages/redis/default.nix18
-rw-r--r--nixpkgs/pkgs/development/php-packages/smbclient/default.nix14
-rw-r--r--nixpkgs/pkgs/development/php-packages/sqlsrv/default.nix16
-rw-r--r--nixpkgs/pkgs/development/php-packages/xdebug/default.nix15
-rw-r--r--nixpkgs/pkgs/development/php-packages/yaml/default.nix14
36 files changed, 895 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/php-packages/apcu/default.nix b/nixpkgs/pkgs/development/php-packages/apcu/default.nix
new file mode 100644
index 000000000000..04b611fd598f
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/apcu/default.nix
@@ -0,0 +1,17 @@
+{ buildPecl, lib, pcre' }:
+
+buildPecl {
+  pname = "apcu";
+
+  version = "5.1.19";
+  sha256 = "1q3c4y9jqh1yz5vps2iiz2x04vn0y1g5ibxg1x8zp7n7sncvqzw3";
+
+  buildInputs = [ pcre' ];
+  doCheck = true;
+  checkTarget = "test";
+  checkFlagsArray = [ "REPORT_EXIT_STATUS=1" "NO_INTERACTION=1" ];
+  makeFlags = [ "phpincludedir=$(dev)/include" ];
+  outputs = [ "out" "dev" ];
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/apcu_bc/default.nix b/nixpkgs/pkgs/development/php-packages/apcu_bc/default.nix
new file mode 100644
index 000000000000..132a25a2df4c
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/apcu_bc/default.nix
@@ -0,0 +1,18 @@
+{ buildPecl, lib, pcre', php }:
+
+buildPecl {
+  pname = "apcu_bc";
+
+  version = "1.0.5";
+  sha256 = "0ma00syhk2ps9k9p02jz7rii6x3i2p986il23703zz5npd6y9n20";
+
+  peclDeps = [ php.extensions.apcu ];
+
+  buildInputs = [ pcre' ];
+
+  postInstall = ''
+    mv $out/lib/php/extensions/apc.so $out/lib/php/extensions/apcu_bc.so
+  '';
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/ast/default.nix b/nixpkgs/pkgs/development/php-packages/ast/default.nix
new file mode 100644
index 000000000000..fb609b9f04f2
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/ast/default.nix
@@ -0,0 +1,10 @@
+{ buildPecl, lib }:
+
+buildPecl {
+  pname = "ast";
+
+  version = "1.0.10";
+  sha256 = "13s5r1szd80g1mqickghdd38mvjkwss221322mmbrykcfgp4fs30";
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/box/default.nix b/nixpkgs/pkgs/development/php-packages/box/default.nix
new file mode 100644
index 000000000000..8d6bba3e460c
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/box/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, fetchurl, pkgs, 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 = [ pkgs.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/nixpkgs/pkgs/development/php-packages/composer/2.0.nix b/nixpkgs/pkgs/development/php-packages/composer/2.0.nix
new file mode 100644
index 000000000000..5b0234fa7a14
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/composer/2.0.nix
@@ -0,0 +1,32 @@
+{ mkDerivation, fetchurl, pkgs, lib, php }:
+let
+  pname = "composer";
+  version = "2.0.9";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://getcomposer.org/download/${version}/composer.phar";
+    sha256 = "sha256-JPqlvIB+OZ8y6aIaM/u1sGht+ciFDvq+LAR8LM+5+cw=";
+  };
+
+  dontUnpack = true;
+
+  nativeBuildInputs = [ pkgs.makeWrapper ];
+
+  installPhase = ''
+    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 : ${pkgs.lib.makeBinPath [ pkgs.unzip ]}
+  '';
+
+  meta = with pkgs.lib; {
+    description = "Dependency Manager for PHP";
+    license = licenses.mit;
+    homepage = "https://getcomposer.org/";
+    maintainers = with maintainers; [ offline ] ++ teams.php.members;
+  };
+}
diff --git a/nixpkgs/pkgs/development/php-packages/composer/default.nix b/nixpkgs/pkgs/development/php-packages/composer/default.nix
new file mode 100644
index 000000000000..37c983507ce3
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/composer/default.nix
@@ -0,0 +1,32 @@
+{ mkDerivation, fetchurl, pkgs, lib, php }:
+let
+  pname = "composer";
+  version = "1.10.15";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://getcomposer.org/download/${version}/composer.phar";
+    sha256 = "1shsxsrc2kq74s1jbq3njn9wzidcz7ak66n9vyz8z8d0hqpg37d6";
+  };
+
+  dontUnpack = true;
+
+  nativeBuildInputs = [ pkgs.makeWrapper ];
+
+  installPhase = ''
+    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 : ${pkgs.lib.makeBinPath [ pkgs.unzip ]}
+  '';
+
+  meta = with pkgs.lib; {
+    description = "Dependency Manager for PHP";
+    license = licenses.mit;
+    homepage = "https://getcomposer.org/";
+    maintainers = with maintainers; [ offline ] ++ teams.php.members;
+  };
+}
diff --git a/nixpkgs/pkgs/development/php-packages/couchbase/default.nix b/nixpkgs/pkgs/development/php-packages/couchbase/default.nix
new file mode 100644
index 000000000000..4ec718469197
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/couchbase/default.nix
@@ -0,0 +1,49 @@
+{ buildPecl, lib, pkgs, php }:
+let
+  pname = "couchbase";
+  version = "2.6.2";
+in
+buildPecl {
+  inherit pname version;
+
+  src = pkgs.fetchFromGitHub {
+    owner = "couchbase";
+    repo = "php-couchbase";
+    rev = "v${version}";
+    sha256 = "0ymrymnz91qg9b2ns044qg46wc65dffhxx402wpx1b5cj2vr4ma3";
+  };
+
+  configureFlags = [ "--with-couchbase" ];
+  broken = lib.versionAtLeast php.version "8.0";
+
+  buildInputs = with pkgs; [ libcouchbase zlib ];
+  internalDeps = [] ++ lib.optionals (lib.versionOlder php.version "8.0") [ php.extensions.json ];
+  peclDeps = [ php.extensions.igbinary ];
+
+  patches = [
+    (pkgs.writeText "php-couchbase.patch" ''
+      --- a/config.m4
+      +++ b/config.m4
+      @@ -9,7 +9,7 @@ if test "$PHP_COUCHBASE" != "no"; then
+           LIBCOUCHBASE_DIR=$PHP_COUCHBASE
+         else
+           AC_MSG_CHECKING(for libcouchbase in default path)
+      -    for i in /usr/local /usr; do
+      +    for i in ${pkgs.libcouchbase}; do
+             if test -r $i/include/libcouchbase/couchbase.h; then
+               LIBCOUCHBASE_DIR=$i
+               AC_MSG_RESULT(found in $i)
+      @@ -154,6 +154,8 @@ COUCHBASE_FILES=" \
+           igbinary_inc_path="$phpincludedir"
+         elif test -f "$phpincludedir/ext/igbinary/igbinary.h"; then
+           igbinary_inc_path="$phpincludedir"
+      +  elif test -f "${php.extensions.igbinary.dev}/include/ext/igbinary/igbinary.h"; then
+      +    igbinary_inc_path="${php.extensions.igbinary.dev}/include"
+         fi
+         if test "$igbinary_inc_path" = ""; then
+           AC_MSG_WARN([Cannot find igbinary.h])
+    '')
+  ];
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/event/default.nix b/nixpkgs/pkgs/development/php-packages/event/default.nix
new file mode 100644
index 000000000000..940150ac9867
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/event/default.nix
@@ -0,0 +1,34 @@
+{ buildPecl, lib, pkgs, php }:
+buildPecl {
+  pname = "event";
+
+  version = "3.0.2";
+  sha256 = "1ws4l014z52vb23xbsfj6viwkf7fmh462af639xgbp0n6syf77dq";
+
+  configureFlags = [
+    "--with-event-libevent-dir=${pkgs.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 = [ pkgs.pkg-config ];
+  buildInputs = with pkgs; [ openssl libevent ];
+  internalDeps = [ php.extensions.sockets ];
+
+  meta = with pkgs.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/nixpkgs/pkgs/development/php-packages/igbinary/default.nix b/nixpkgs/pkgs/development/php-packages/igbinary/default.nix
new file mode 100644
index 000000000000..7a321cc90b4e
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/igbinary/default.nix
@@ -0,0 +1,14 @@
+{ buildPecl, lib }:
+
+buildPecl {
+  pname = "igbinary";
+
+  version = "3.2.1";
+  sha256 = "sha256-YBYgz/07PlWWIAmcBWm4xCR/Ap7BitwCBr8m+ONXU9s=";
+
+  configureFlags = [ "--enable-igbinary" ];
+  makeFlags = [ "phpincludedir=$(dev)/include" ];
+  outputs = [ "out" "dev" ];
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/imagick/default.nix b/nixpkgs/pkgs/development/php-packages/imagick/default.nix
new file mode 100644
index 000000000000..f697b44affd6
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/imagick/default.nix
@@ -0,0 +1,27 @@
+{ buildPecl, fetchpatch, lib, pkgs, pcre' }:
+
+buildPecl {
+  pname = "imagick";
+
+  version = "3.4.4";
+  sha256 = "0xvhaqny1v796ywx83w7jyjyd0nrxkxf34w9zi8qc8aw8qbammcd";
+
+  patches = [
+    # Fix compatibility with PHP 8.
+    (fetchpatch {
+      url = "https://github.com/Imagick/imagick/pull/336.patch";
+      sha256 = "nuRdh02qaMx0s/5OzlfWjyYgZG1zgrYnAjsZ/UVIrUM=";
+    })
+    # Fix detection of ImageMagick 7.
+    (fetchpatch {
+      url = "https://github.com/Imagick/imagick/commit/09551fbf38c16cdaf4ade7c08744501cd82d2747.patch";
+      sha256 = "qUeQHP08kKOzuQdEpR8RSZ18Yhi0U9z24KwQcAx1UVg=";
+    })
+  ];
+
+  configureFlags = [ "--with-imagick=${pkgs.imagemagick7.dev}" ];
+  nativeBuildInputs = [ pkgs.pkg-config ];
+  buildInputs = [ pcre' ];
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/mailparse/default.nix b/nixpkgs/pkgs/development/php-packages/mailparse/default.nix
new file mode 100644
index 000000000000..820bbbdbad6b
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/mailparse/default.nix
@@ -0,0 +1,15 @@
+{ 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.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/maxminddb/default.nix b/nixpkgs/pkgs/development/php-packages/maxminddb/default.nix
new file mode 100644
index 000000000000..2533a6ef06db
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/maxminddb/default.nix
@@ -0,0 +1,24 @@
+{ buildPecl, lib, pkgs }:
+let
+  pname = "maxminddb";
+  version = "1.9.0";
+in
+buildPecl {
+  inherit pname version;
+
+  src = pkgs.fetchFromGitHub {
+    owner = "maxmind";
+    repo = "MaxMind-DB-Reader-php";
+    rev = "v${version}";
+    sha256 = "sha256-sNG2FhnxzbHA4Lmzj97al1WFwSU70Mr1R2i5ygF1L6Y=";
+  };
+
+  buildInputs = [ pkgs.libmaxminddb ];
+  sourceRoot = "source/ext";
+
+  meta = with pkgs.lib; {
+    description = "C extension that is a drop-in replacement for MaxMind\\Db\\Reader";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ ajs124 das_j ] ++ teams.php.members;
+  };
+}
diff --git a/nixpkgs/pkgs/development/php-packages/memcached/default.nix b/nixpkgs/pkgs/development/php-packages/memcached/default.nix
new file mode 100644
index 000000000000..3eb1da463b9f
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/memcached/default.nix
@@ -0,0 +1,30 @@
+{ buildPecl, lib, fetchgit, php, pkgs }:
+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=${pkgs.zlib.dev}"
+    "--with-libmemcached-dir=${pkgs.libmemcached}"
+  ];
+
+  nativeBuildInputs = [ pkgs.pkg-config ];
+  buildInputs = with pkgs; [ cyrus_sasl zlib ];
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/mongodb/default.nix b/nixpkgs/pkgs/development/php-packages/mongodb/default.nix
new file mode 100644
index 000000000000..18bb515d15e1
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/mongodb/default.nix
@@ -0,0 +1,20 @@
+{ buildPecl, lib, pkgs, pcre' }:
+
+buildPecl {
+  pname = "mongodb";
+
+  version = "1.9.0";
+  sha256 = "16mbw3p80qxsj86nmjbfch8wv6jaq8wbz4rlpmixvhj9nwbp37hs";
+
+  nativeBuildInputs = [ pkgs.pkg-config ];
+  buildInputs = with pkgs; [
+    cyrus_sasl
+    icu64
+    openssl
+    snappy
+    zlib
+    pcre'
+  ] ++ lib.optional (pkgs.stdenv.isDarwin) pkgs.darwin.apple_sdk.frameworks.Security;
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/oci8/default.nix b/nixpkgs/pkgs/development/php-packages/oci8/default.nix
new file mode 100644
index 000000000000..697ad6740200
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/oci8/default.nix
@@ -0,0 +1,15 @@
+{ buildPecl, lib, pkgs, version, sha256 }:
+buildPecl {
+  pname = "oci8";
+
+  inherit version sha256;
+
+  buildInputs = [ pkgs.oracle-instantclient ];
+  configureFlags = [ "--with-oci8=shared,instantclient,${pkgs.oracle-instantclient.lib}/lib" ];
+
+  postPatch = ''
+    sed -i -e 's|OCISDKMANINC=`.*$|OCISDKMANINC="${pkgs.oracle-instantclient.dev}/include"|' config.m4
+  '';
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/pcov/default.nix b/nixpkgs/pkgs/development/php-packages/pcov/default.nix
new file mode 100644
index 000000000000..84fbc4f7a469
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/pcov/default.nix
@@ -0,0 +1,12 @@
+{ buildPecl, lib, pcre' }:
+
+buildPecl {
+  pname = "pcov";
+
+  version = "1.0.6";
+  sha256 = "1psfwscrc025z8mziq69pcx60k4fbkqa5g2ia8lplb94mmarj0v1";
+
+  buildInputs = [ pcre' ];
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/pdlib/default.nix b/nixpkgs/pkgs/development/php-packages/pdlib/default.nix
new file mode 100644
index 000000000000..830519467017
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/pdlib/default.nix
@@ -0,0 +1,24 @@
+{ buildPecl, lib, pkgs }:
+let
+  pname = "pdlib";
+  version = "1.0.2";
+in
+buildPecl {
+  inherit pname version;
+
+  src = pkgs.fetchFromGitHub {
+    owner = "goodspb";
+    repo = "pdlib";
+    rev = "v${version}";
+    sha256 = "0qnmqwlw5vb2rvliap4iz9val6mal4qqixcw69pwskdw5jka6v5i";
+  };
+
+  nativeBuildInputs = [ pkgs.pkg-config ];
+  buildInputs = [ (pkgs.dlib.override { guiSupport = true; }) ];
+
+  meta = with lib; {
+    description = "A PHP extension for Dlib";
+    license = with licenses; [ mit ];
+    maintainers = lib.teams.php.members;
+  };
+}
diff --git a/nixpkgs/pkgs/development/php-packages/pdo_sqlsrv/default.nix b/nixpkgs/pkgs/development/php-packages/pdo_sqlsrv/default.nix
new file mode 100644
index 000000000000..ae0159444430
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/pdo_sqlsrv/default.nix
@@ -0,0 +1,14 @@
+{ buildPecl, lib, pkgs, php }:
+
+buildPecl {
+  pname = "pdo_sqlsrv";
+
+  version = "5.9.0";
+  sha256 = "0n4cnkldvyp1lrpj18ky2ii2dcaa51dsmh8cspixm7w76dxl3khg";
+
+  internalDeps = [ php.extensions.pdo ];
+
+  buildInputs = [ pkgs.unixODBC ] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [ pkgs.libiconv ];
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/php-cs-fixer/default.nix b/nixpkgs/pkgs/development/php-packages/php-cs-fixer/default.nix
new file mode 100644
index 000000000000..c855b975e546
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/php-cs-fixer/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, fetchurl, pkgs, lib, php }:
+let
+  pname = "php-cs-fixer";
+  version = "2.18.2";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v${version}/php-cs-fixer.phar";
+    sha256 = "sha256-451be1O/y92ib5hZNVbf8iCkD+e9DoK47Z7IkMnwuo0=";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ pkgs.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 pkgs.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/nixpkgs/pkgs/development/php-packages/php-parallel-lint/default.nix b/nixpkgs/pkgs/development/php-packages/php-parallel-lint/default.nix
new file mode 100644
index 000000000000..f479581fb2ee
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/php-parallel-lint/default.nix
@@ -0,0 +1,40 @@
+{ mkDerivation, fetchFromGitHub, pkgs, 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 = [
+    pkgs.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 pkgs.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/nixpkgs/pkgs/development/php-packages/php_excel/default.nix b/nixpkgs/pkgs/development/php-packages/php_excel/default.nix
new file mode 100644
index 000000000000..ab6d193fcd4d
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/php_excel/default.nix
@@ -0,0 +1,24 @@
+{ buildPecl, fetchurl, lib, pkgs }:
+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 = with pkgs; [ libxl ];
+
+  configureFlags = [
+    "--with-excel"
+    "--with-libxl-incdir=${pkgs.libxl}/include_c"
+    "--with-libxl-libdir=${pkgs.libxl}/lib"
+  ];
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/phpcbf/default.nix b/nixpkgs/pkgs/development/php-packages/phpcbf/default.nix
new file mode 100644
index 000000000000..b58ba42a5d04
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/phpcbf/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, fetchurl, pkgs, lib, php }:
+let
+  pname = "phpcbf";
+  version = "3.5.8";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://github.com/squizlabs/PHP_CodeSniffer/releases/download/${version}/phpcbf.phar";
+    sha256 = "15ci30yvw3p9zlmzsk9s4mxzb3wax3gl9p55slhf1bzwn1xxwyb0";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ pkgs.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 pkgs.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/nixpkgs/pkgs/development/php-packages/phpcs/default.nix b/nixpkgs/pkgs/development/php-packages/phpcs/default.nix
new file mode 100644
index 000000000000..0e8557c04eb7
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/phpcs/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, fetchurl, pkgs, lib, php }:
+let
+  pname = "phpcs";
+  version = "3.5.8";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://github.com/squizlabs/PHP_CodeSniffer/releases/download/${version}/phpcs.phar";
+    sha256 = "037mdnpbgd9xaj556pf14h02a4a6f5zzdg58p2z1sivxcygf8aka";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ pkgs.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 pkgs.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/nixpkgs/pkgs/development/php-packages/phpmd/default.nix b/nixpkgs/pkgs/development/php-packages/phpmd/default.nix
new file mode 100644
index 000000000000..fd7390498ba3
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/phpmd/default.nix
@@ -0,0 +1,33 @@
+{ mkDerivation, fetchurl, pkgs, lib, php }:
+let
+  pname = "phpmd";
+  version = "2.8.2";
+
+  isPhp74 = lib.versionAtLeast php.version "7.4";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = pkgs.fetchurl {
+    url = "https://github.com/phpmd/phpmd/releases/download/${version}/phpmd.phar";
+    sha256 = "1i8qgzxniw5d8zjpypalm384y7qfczapfq70xmg129laq6xiqlqb";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ pkgs.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 pkgs.lib; {
+    description = "PHP code quality analyzer";
+    license = licenses.bsd3;
+    homepage = "https://phpmd.org/";
+    maintainers = teams.php.members;
+    broken = !isPhp74;
+  };
+}
diff --git a/nixpkgs/pkgs/development/php-packages/phpstan/default.nix b/nixpkgs/pkgs/development/php-packages/phpstan/default.nix
new file mode 100644
index 000000000000..f8124e43d7f5
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/phpstan/default.nix
@@ -0,0 +1,37 @@
+{ mkDerivation, fetchurl, pkgs, lib, php }:
+let
+  pname = "phpstan";
+  version = "0.12.74";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = pkgs.fetchurl {
+    url = "https://github.com/phpstan/phpstan/releases/download/${version}/phpstan.phar";
+    sha256 = "sha256-zEDqswyldyXha836ye+FmE4yYxH+7AzEvlKJYOje0xQ=";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ pkgs.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 pkgs.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/nixpkgs/pkgs/development/php-packages/pinba/default.nix b/nixpkgs/pkgs/development/php-packages/pinba/default.nix
new file mode 100644
index 000000000000..0880c2a46e21
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/pinba/default.nix
@@ -0,0 +1,32 @@
+{ buildPecl, lib, fetchFromGitHub, php }:
+let
+  pname = "pinba";
+
+  isPhp73 = lib.versionAtLeast php.version "7.3";
+
+  version = if isPhp73 then "1.1.2-dev" else "1.1.1";
+
+  src = fetchFromGitHub ({
+    owner = "tony2001";
+    repo = "pinba_extension";
+  } // (if (isPhp73) then {
+    rev = "edbc313f1b4fb8407bf7d5acf63fbb0359c7fb2e";
+    sha256 = "02sljqm6griw8ccqavl23f7w1hp2zflcv24lpf00k6pyrn9cwx80";
+  } else {
+    rev = "RELEASE_1_1_1";
+    sha256 = "1kdp7vav0y315695vhm3xifgsh6h6y6pny70xw3iai461n58khj5";
+  }));
+in
+buildPecl {
+  inherit pname version src;
+
+  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.
+    '';
+    homepage = "http://pinba.org/";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/nixpkgs/pkgs/development/php-packages/protobuf/default.nix b/nixpkgs/pkgs/development/php-packages/protobuf/default.nix
new file mode 100644
index 000000000000..e2ef068120d7
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/protobuf/default.nix
@@ -0,0 +1,36 @@
+{ buildPecl, lib, pcre', fetchpatch }:
+
+buildPecl {
+  pname = "protobuf";
+
+  version = "3.14.0";
+  sha256 = "1ldc4s28hq61cfg8l4c06pgicj0ng7k37f28a0dnnbs7xkr7cibd";
+
+  buildInputs = [ pcre' ];
+
+  patches = [
+    # TODO: remove with next update
+    (fetchpatch {
+      url = "https://github.com/protocolbuffers/protobuf/commit/823f351448f7c432bed40b89ee3309e0a94c1855.patch";
+      sha256 = "sha256-ozHtO8s9zvmh/+wBEge3Yn3n0pbpR3dAojJcuAg/G3s=";
+      stripLen = 4;
+      includes = [
+        "array.c"
+        "def.c"
+        "map.c"
+        "message.c"
+        "protobuf.h"
+        "wkt.inc"
+      ];
+    })
+  ];
+
+  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/nixpkgs/pkgs/development/php-packages/psalm/default.nix b/nixpkgs/pkgs/development/php-packages/psalm/default.nix
new file mode 100644
index 000000000000..1de01d1d09d1
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/psalm/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, fetchurl, pkgs, lib, php }:
+let
+  pname = "psalm";
+  version = "4.4.1";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://github.com/vimeo/psalm/releases/download/${version}/psalm.phar";
+    sha256 = "sha256-4hqgAPflzNmeQQaxQATpWYBB5Pz7jKu8Vlw3BiMyhtw=";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ pkgs.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 pkgs.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/nixpkgs/pkgs/development/php-packages/psysh/default.nix b/nixpkgs/pkgs/development/php-packages/psysh/default.nix
new file mode 100644
index 000000000000..4c5f703d025f
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/psysh/default.nix
@@ -0,0 +1,30 @@
+{ mkDerivation, fetchurl, pkgs, lib, php }:
+let
+  pname = "psysh";
+  version = "0.10.4";
+in
+mkDerivation {
+  inherit pname version;
+
+  src = fetchurl {
+    url = "https://github.com/bobthecow/psysh/releases/download/v${version}/psysh-v${version}.tar.gz";
+    sha256 = "005xh5rz12bsy9yvzzr69zpr0p7v4sh6cafhpinpfrvbwfq068f1";
+  };
+
+  phases = [ "installPhase" ];
+  nativeBuildInputs = [ pkgs.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 pkgs.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/nixpkgs/pkgs/development/php-packages/pthreads/default.nix b/nixpkgs/pkgs/development/php-packages/pthreads/default.nix
new file mode 100644
index 000000000000..31b32e82967d
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/pthreads/default.nix
@@ -0,0 +1,28 @@
+{ buildPecl, lib, fetchFromGitHub, php, pcre' }:
+let
+  pname = "pthreads";
+
+  isPhp73 = lib.versionAtLeast php.version "7.3";
+  isPhp74 = lib.versionAtLeast php.version "7.4";
+
+  version = if isPhp73 then "3.2.0-dev" else "3.2.0";
+
+  src = fetchFromGitHub ({
+    owner = "krakjoe";
+    repo = "pthreads";
+  } // (if (isPhp73) then {
+    rev = "4d1c2483ceb459ea4284db4eb06646d5715e7154";
+    sha256 = "07kdxypy0bgggrfav2h1ccbv67lllbvpa3s3zsaqci0gq4fyi830";
+  } else {
+    rev = "v3.2.0";
+    sha256 = "17hypm75d4w7lvz96jb7s0s87018yzmmap0l125d5fd7abnhzfvv";
+  }));
+in
+buildPecl {
+  inherit pname version src;
+
+  buildInputs = [ pcre'.dev ];
+
+  meta.broken = isPhp74;
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/rdkafka/default.nix b/nixpkgs/pkgs/development/php-packages/rdkafka/default.nix
new file mode 100644
index 000000000000..e5bdc2a22984
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/rdkafka/default.nix
@@ -0,0 +1,21 @@
+{ buildPecl, lib, pkgs, pcre' }:
+
+buildPecl {
+  pname = "rdkafka";
+
+  version = "5.0.0";
+  sha256 = "sha256-Qy+6rkPczhdxFbDhcuzmUTLMPUXYZ0HaheDBhkh4FXs=";
+
+  buildInputs = [ pkgs.rdkafka pcre' ];
+
+  postPhpize = ''
+    substituteInPlace configure \
+      --replace 'SEARCH_PATH="/usr/local /usr"' 'SEARCH_PATH=${pkgs.rdkafka}'
+  '';
+
+  meta = with lib; {
+    description = "Kafka client based on librdkafka";
+    homepage = "https://github.com/arnaud-lb/php-rdkafka";
+    maintainers = teams.php.members;
+  };
+}
diff --git a/nixpkgs/pkgs/development/php-packages/redis/default.nix b/nixpkgs/pkgs/development/php-packages/redis/default.nix
new file mode 100644
index 000000000000..fedc7a7ffde2
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/redis/default.nix
@@ -0,0 +1,18 @@
+{ buildPecl, lib, php }:
+
+buildPecl {
+  pname = "redis";
+
+  version = "5.3.3";
+  sha256 = "sha256-N3iRYeFkzVIjmjDJojjaYf7FyDlc2sOFtu2PDFD9kvA=";
+
+  internalDeps = with php.extensions; [
+    session
+  ] ++ lib.optionals (lib.versionOlder php.version "8.0") [
+    json
+  ] ++ lib.optionals (lib.versionOlder php.version "7.4") [
+    hash
+  ];
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/smbclient/default.nix b/nixpkgs/pkgs/development/php-packages/smbclient/default.nix
new file mode 100644
index 000000000000..1aec97251e1b
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/smbclient/default.nix
@@ -0,0 +1,14 @@
+{ buildPecl, lib, pkgs }:
+buildPecl {
+  pname = "smbclient";
+  version = "1.0.4";
+  sha256 = "07p72m5kbdyp3r1mfxhiayzdvymhc8afwcxa9s86m96sxbmlbbp8";
+
+  # TODO: remove this when upstream merges a fix - https://github.com/eduardok/libsmbclient-php/pull/66
+  LIBSMBCLIENT_INCDIR = "${pkgs.samba.dev}/include/samba-4.0";
+
+  nativeBuildInputs = [ pkgs.pkg-config ];
+  buildInputs = [ pkgs.samba ];
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/sqlsrv/default.nix b/nixpkgs/pkgs/development/php-packages/sqlsrv/default.nix
new file mode 100644
index 000000000000..939be27671b1
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/sqlsrv/default.nix
@@ -0,0 +1,16 @@
+{ buildPecl, lib, pkgs }:
+
+buildPecl {
+  pname = "sqlsrv";
+
+  version = "5.9.0";
+  sha256 = "1css440b4qrbblmcswd5wdr2v1rjxlj2iicbmvjq9fg81028w40a";
+
+  buildInputs = [
+    pkgs.unixODBC
+  ] ++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
+    pkgs.libiconv
+  ];
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/xdebug/default.nix b/nixpkgs/pkgs/development/php-packages/xdebug/default.nix
new file mode 100644
index 000000000000..780bb8c9086b
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/xdebug/default.nix
@@ -0,0 +1,15 @@
+{ buildPecl, lib }:
+
+buildPecl {
+  pname = "xdebug";
+
+  version = "3.0.2";
+  sha256 = "05sfgkw55ym7mg0b54l9x3i9598kf2bkp4z3sdl1hd31q3g4cv89";
+
+  doCheck = true;
+  checkTarget = "test";
+
+  zendExtension = true;
+
+  meta.maintainers = lib.teams.php.members;
+}
diff --git a/nixpkgs/pkgs/development/php-packages/yaml/default.nix b/nixpkgs/pkgs/development/php-packages/yaml/default.nix
new file mode 100644
index 000000000000..40e5a859f9e4
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/yaml/default.nix
@@ -0,0 +1,14 @@
+{ buildPecl, lib, pkgs }:
+
+buildPecl {
+  pname = "yaml";
+
+  version = "2.2.1";
+  sha256 = "sha256-4XrQTnUuJf0Jm93S350m3+8YPI0AxBebydei4cl9eBk=";
+
+  configureFlags = [ "--with-yaml=${pkgs.libyaml}" ];
+
+  nativeBuildInputs = [ pkgs.pkg-config ];
+
+  meta.maintainers = lib.teams.php.members;
+}