From 2cefe69f6f97b705fc49cdfb9bccca4d01280fa0 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Sat, 12 Aug 2023 13:10:05 +0200 Subject: [PATCH] mailmanPackages.python: allow changing python package-set used for mailman When having a patch for a python module that should only be used for mailman, but for nothing else, it's now possible to apply it like this: self: super: { mailmanPackages = super.mailmanPackages.extend (mailmanSelf: mailmanSuper: { python3 = mailmanSuper.python3.override { overlay = pythonSelf: pythonSuper: { psycopg2 = /* ... */; }; }; }); } The underlying issue is that the `packageOverrides`-mechanism of `pkgs.python3` doesn't compose, so an optional overlay is manually applied to the `python3` used for mailman. --- pkgs/servers/mail/mailman/python.nix | 34 +++++++++++++++------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/pkgs/servers/mail/mailman/python.nix b/pkgs/servers/mail/mailman/python.nix index 288e48d814e4..58256a961aba 100644 --- a/pkgs/servers/mail/mailman/python.nix +++ b/pkgs/servers/mail/mailman/python.nix @@ -1,19 +1,21 @@ -{ python3, fetchPypi }: +{ python3, lib, overlay ? (_: _: {}) }: python3.override { - packageOverrides = self: super: { - # does not find tests - alembic = super.alembic.overridePythonAttrs (oldAttrs: { - doCheck = false; - }); - # Fixes `AssertionError: database connection isn't set to UTC` - psycopg2 = super.psycopg2.overridePythonAttrs (a: rec { - version = "2.8.6"; - src = fetchPypi { - inherit version; - inherit (a) pname; - sha256 = "fb23f6c71107c37fd667cb4ea363ddeb936b348bbd6449278eb92c189699f543"; - }; - }); - }; + packageOverrides = lib.composeExtensions + (self: super: { + # does not find tests + alembic = super.alembic.overridePythonAttrs (oldAttrs: { + doCheck = false; + }); + # Fixes `AssertionError: database connection isn't set to UTC` + psycopg2 = super.psycopg2.overridePythonAttrs (a: (rec { + version = "2.8.6"; + src = super.fetchPypi { + inherit version; + inherit (a) pname; + sha256 = "fb23f6c71107c37fd667cb4ea363ddeb936b348bbd6449278eb92c189699f543"; + }; + })); + }) + overlay; }