summary refs log tree commit diff
path: root/pkgs/top-level/php-packages.nix
diff options
context:
space:
mode:
authorArtturin <Artturin@artturin.com>2023-02-08 19:34:41 +0200
committerArtturin <Artturin@artturin.com>2023-02-08 19:34:41 +0200
commit4d32075a0e08712aba61c80312adb70c5e8ee822 (patch)
treeac70b4bc75899824801ca3d528768e5d22dd5e80 /pkgs/top-level/php-packages.nix
parent315664758c2d6154d769eb9c664892f01c580ac1 (diff)
downloadnixpkgs-4d32075a0e08712aba61c80312adb70c5e8ee822.tar
nixpkgs-4d32075a0e08712aba61c80312adb70c5e8ee822.tar.gz
nixpkgs-4d32075a0e08712aba61c80312adb70c5e8ee822.tar.bz2
nixpkgs-4d32075a0e08712aba61c80312adb70c5e8ee822.tar.lz
nixpkgs-4d32075a0e08712aba61c80312adb70c5e8ee822.tar.xz
nixpkgs-4d32075a0e08712aba61c80312adb70c5e8ee822.tar.zst
nixpkgs-4d32075a0e08712aba61c80312adb70c5e8ee822.zip
phpPackages.mkDerivation: use lib.{fix,extends} instead of //
// on a overrideAttrs'able works badly

here we use lib.fix and lib.extends instead of overrideAttrs to have
less of a performance impact
Diffstat (limited to 'pkgs/top-level/php-packages.nix')
-rw-r--r--pkgs/top-level/php-packages.nix25
1 files changed, 16 insertions, 9 deletions
diff --git a/pkgs/top-level/php-packages.nix b/pkgs/top-level/php-packages.nix
index 8b1bbecb249..905c0e1d9a3 100644
--- a/pkgs/top-level/php-packages.nix
+++ b/pkgs/top-level/php-packages.nix
@@ -57,15 +57,22 @@ lib.makeScope pkgs.newScope (self: with self; {
 
   # Wrap mkDerivation to prepend pname with "php-" to make names consistent
   # with how buildPecl does it and make the file easier to overview.
-  mkDerivation = { pname, ... }@args: pkgs.stdenv.mkDerivation (args // {
-    pname = "php-${pname}";
-    passthru = {
-      updateScript = nix-update-script {};
-    };
-    meta = args.meta // {
-      mainProgram = args.meta.mainProgram or pname;
-    };
-  });
+  mkDerivation = origArgs:
+    let
+      args = lib.fix (lib.extends
+        (_: previousAttrs: {
+          pname = "php-${previousAttrs.pname}";
+          passthru = (previousAttrs.passthru or { }) // {
+            updateScript = nix-update-script { };
+          };
+          meta = (previousAttrs.meta or { }) // {
+            mainProgram = previousAttrs.meta.mainProgram or previousAttrs.pname;
+          };
+        })
+        (if lib.isFunction origArgs then origArgs else (_: origArgs))
+      );
+    in
+    pkgs.stdenv.mkDerivation args;
 
   # Function to build an extension which is shipped as part of the php
   # source, based on the php version.