summary refs log tree commit diff
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2020-12-16 00:06:42 +0100
committerJan Tojnar <jtojnar@gmail.com>2020-12-16 18:32:27 +0100
commitb2594c71c248b78b8526a62f43ad74151a31ac3a (patch)
tree46ba5291de16355c6a7ab4c411420405c8af5367
parent7e8b2b7e988cfd7e8e0745f0af3eb42b6a1918cb (diff)
downloadnixpkgs-b2594c71c248b78b8526a62f43ad74151a31ac3a.tar
nixpkgs-b2594c71c248b78b8526a62f43ad74151a31ac3a.tar.gz
nixpkgs-b2594c71c248b78b8526a62f43ad74151a31ac3a.tar.bz2
nixpkgs-b2594c71c248b78b8526a62f43ad74151a31ac3a.tar.lz
nixpkgs-b2594c71c248b78b8526a62f43ad74151a31ac3a.tar.xz
nixpkgs-b2594c71c248b78b8526a62f43ad74151a31ac3a.tar.zst
nixpkgs-b2594c71c248b78b8526a62f43ad74151a31ac3a.zip
php.packages: Make packages overridable
This will allow patching extensions without having to manually having to patch all occurrences in the dependency tree.
-rw-r--r--doc/languages-frameworks/php.section.md18
-rw-r--r--pkgs/development/interpreters/php/generic.nix3
2 files changed, 20 insertions, 1 deletions
diff --git a/doc/languages-frameworks/php.section.md b/doc/languages-frameworks/php.section.md
index 763beeb5935..5977363323f 100644
--- a/doc/languages-frameworks/php.section.md
+++ b/doc/languages-frameworks/php.section.md
@@ -135,3 +135,21 @@ Example of building `composer` with additional extensions:
   enabled ++ (with all; [ imagick redis ]))
 ).packages.composer
 ```
+
+### Overriding PHP packages {#ssec-php-user-guide-overriding-packages}
+
+`php-packages.nix` form a scope, allowing us to override the packages defined within. For example, to apply a patch to a `mysqlnd` extension, you can simply pass an overlay-style function to `php`’s `packageOverrides` argument:
+
+```nix
+php.override {
+  packageOverrides = final: prev: {
+    extensions = prev.extensions // {
+      mysqlnd = prev.extensions.mysqlnd.overrideAttrs (attrs: {
+        patches = attrs.patches or [] ++ [
+          …
+        ];
+      });
+    };
+  };
+}
+```
diff --git a/pkgs/development/interpreters/php/generic.nix b/pkgs/development/interpreters/php/generic.nix
index a3559de9440..82134e14406 100644
--- a/pkgs/development/interpreters/php/generic.nix
+++ b/pkgs/development/interpreters/php/generic.nix
@@ -13,6 +13,7 @@ let
     , version
     , sha256
     , extraPatches ? []
+    , packageOverrides ? (final: prev: {})
 
     # Sapi flags
     , cgiSupport ? true
@@ -50,7 +51,7 @@ let
 
               php-packages = (callPackage ../../../top-level/php-packages.nix {
                 phpPackage = phpWithExtensions;
-              });
+              }).overrideScope' packageOverrides;
 
               allExtensionFunctions = prevExtensionFunctions ++ [ extensions ];
               enabledExtensions =