From 06a640cacb07501072163267c074c76c7d7dd3d4 Mon Sep 17 00:00:00 2001 From: Kerstin Humm Date: Mon, 2 Mar 2026 23:02:04 +0100 Subject: [PATCH 01/10] python3Packages.periodiq: relax on dramatiq --- pkgs/development/python-modules/periodiq/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/python-modules/periodiq/default.nix b/pkgs/development/python-modules/periodiq/default.nix index 6cc7a301c2ca..701bc88bc670 100644 --- a/pkgs/development/python-modules/periodiq/default.nix +++ b/pkgs/development/python-modules/periodiq/default.nix @@ -29,6 +29,8 @@ buildPythonPackage rec { --replace-fail 'poetry.masonry.api' 'poetry.core.masonry.api' ''; + pythonRelaxDeps = [ "dramatiq" ]; + nativeBuildInputs = [ poetry-core ]; propagatedBuildInputs = [ From b80d5bb418d151a5f66758c0651c6a02b8c81cad Mon Sep 17 00:00:00 2001 From: Kerstin Humm Date: Mon, 2 Mar 2026 23:02:26 +0100 Subject: [PATCH 02/10] python3Packages.flask-dramatiq: relax on dramatiq --- pkgs/development/python-modules/flask-dramatiq/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/development/python-modules/flask-dramatiq/default.nix b/pkgs/development/python-modules/flask-dramatiq/default.nix index cded223066c1..3dece04ef7a3 100644 --- a/pkgs/development/python-modules/flask-dramatiq/default.nix +++ b/pkgs/development/python-modules/flask-dramatiq/default.nix @@ -38,6 +38,8 @@ buildPythonPackage { build-system = [ poetry-core ]; + pythonRelaxDeps = [ "dramatiq" ]; + dependencies = [ dramatiq ]; nativeCheckInputs = [ From af2b494b79a7891ab261354986f07dec2520e6de Mon Sep 17 00:00:00 2001 From: Kerstin Humm Date: Mon, 27 Oct 2025 15:43:00 +0100 Subject: [PATCH 03/10] python3Packages.pydanclick: init at 0.5.1 --- .../python-modules/pydanclick/default.nix | 56 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 58 insertions(+) create mode 100644 pkgs/development/python-modules/pydanclick/default.nix diff --git a/pkgs/development/python-modules/pydanclick/default.nix b/pkgs/development/python-modules/pydanclick/default.nix new file mode 100644 index 000000000000..f113cc6f82bc --- /dev/null +++ b/pkgs/development/python-modules/pydanclick/default.nix @@ -0,0 +1,56 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + poetry-core, + pydantic, + pydantic-core, + click, + pytest7CheckHook, + pydantic-settings, +}: + +buildPythonPackage rec { + pname = "pydanclick"; + version = "0.5.1"; + + pyproject = true; + + src = fetchFromGitHub { + owner = "felix-martel"; + repo = "pydanclick"; + tag = "v${version}"; + hash = "sha256-Cgjq+9j6v7KILjfhK+4Y5joZPU2/ufJiIsdAfnSG9x4="; + }; + + build-system = [ poetry-core ]; + + dependencies = [ + pydantic + pydantic-core + click + ]; + + nativeCheckInputs = [ + # Still uses RaisesContext from pytest 7 + # https://github.com/felix-martel/pydanclick/issues/53 + pytest7CheckHook + pydantic-settings + ]; + + disabledTests = [ + # No idea about these two failures + "test_complex_types_example_help" + "test_simple_example_with_invalid_args" + ]; + + pythonImportsCheck = [ "pydanclick" ]; + + meta = { + description = "Add click options from a Pydantic model"; + homepage = "https://github.com/felix-martel/pydanclick"; + changelog = "https://github.com/felix-martel/pydanclick/releases/tag/${src.tag}"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.erictapen ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 8e27fb27d8d6..814de4876a21 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -13419,6 +13419,8 @@ self: super: with self; { pydal = callPackage ../development/python-modules/pydal { }; + pydanclick = callPackage ../development/python-modules/pydanclick { }; + pydanfossair = callPackage ../development/python-modules/pydanfossair { }; pydantic = callPackage ../development/python-modules/pydantic { }; From f5ffccaaeb7750072a6987f4c74f6469e43f60a9 Mon Sep 17 00:00:00 2001 From: Kerstin Humm Date: Mon, 27 Oct 2025 14:24:08 +0100 Subject: [PATCH 04/10] python3Packages.scim2-tester: 0.1.14 -> 0.2.6 Changelog: https://github.com/python-scim/scim2-tester/releases/tag/0.2.4 Changelog: https://github.com/python-scim/scim2-tester/releases/tag/0.2.5 Changelog: https://github.com/python-scim/scim2-tester/releases/tag/0.2.6 --- .../python-modules/scim2-tester/default.nix | 37 +++++++++++-------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/pkgs/development/python-modules/scim2-tester/default.nix b/pkgs/development/python-modules/scim2-tester/default.nix index 0b1e5f0824ce..2d744bc95727 100644 --- a/pkgs/development/python-modules/scim2-tester/default.nix +++ b/pkgs/development/python-modules/scim2-tester/default.nix @@ -1,38 +1,45 @@ { lib, buildPythonPackage, - fetchPypi, - hatchling, + pythonOlder, + fetchFromGitHub, + uv-build, scim2-client, + scim2-models, pytestCheckHook, - werkzeug, - scim2-server, + pytest-scim2-server, pytest-httpserver, - cacert, }: buildPythonPackage rec { pname = "scim2-tester"; - version = "0.2.4"; + version = "0.2.6"; pyproject = true; - src = fetchPypi { - inherit version; - pname = "scim2_tester"; - hash = "sha256-r67e3AnqhLWVmtOFDj3P2Baa2Ch3TjyHm3Ol8ZwXH/g="; + src = fetchFromGitHub { + owner = "python-scim"; + repo = "scim2-tester"; + tag = version; + hash = "sha256-PoaY3gPSm+J/C1ad81Dmn7zrbf00pies8CLmLdV+gus="; }; - build-system = [ hatchling ]; + postPatch = '' + substituteInPlace pyproject.toml \ + --replace-fail 'uv_build>=0.8.9,<0.9.0' 'uv_build' + ''; - dependencies = [ scim2-client ]; + build-system = [ uv-build ]; + + dependencies = [ + scim2-client + scim2-models + ]; nativeCheckInputs = [ pytestCheckHook - werkzeug - scim2-server + pytest-scim2-server pytest-httpserver - cacert ] ++ optional-dependencies.httpx; From f2045ca907ce582daf9cffdc4ba606d243208818 Mon Sep 17 00:00:00 2001 From: Kerstin Humm Date: Mon, 27 Oct 2025 14:28:05 +0100 Subject: [PATCH 05/10] python3Packages.scim2-models: 0.4.1 -> 0.6.4 Changelog: https://github.com/python-scim/scim2-models/releases/tag/0.6.4 --- pkgs/development/python-modules/scim2-models/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/scim2-models/default.nix b/pkgs/development/python-modules/scim2-models/default.nix index 310afb70b370..a54ff7ab78a9 100644 --- a/pkgs/development/python-modules/scim2-models/default.nix +++ b/pkgs/development/python-modules/scim2-models/default.nix @@ -9,7 +9,7 @@ buildPythonPackage (finalAttrs: { pname = "scim2-models"; - version = "0.5.1"; + version = "0.6.4"; pyproject = true; @@ -17,7 +17,7 @@ buildPythonPackage (finalAttrs: { owner = "python-scim"; repo = "scim2-models"; tag = finalAttrs.version; - hash = "sha256-ahwHmWsM9IoK+yq0Qd0c2+kagMlXGi80/rAB4UQsf6U="; + hash = "sha256-MyKe1OeaYwqHCma/HEunNCJ49ssHM+pTtnM4XnDZBCE="; }; postPatch = '' From 66238412563069b26f633bf79b0aea66a6e7d867 Mon Sep 17 00:00:00 2001 From: Kerstin Humm Date: Mon, 27 Oct 2025 15:07:35 +0100 Subject: [PATCH 06/10] python3Packages.scim2-server: 0.1.7 -> 0.1.8 Changelog: https://github.com/python-scim/scim2-server/releases/tag/0.1.8 --- .../python-modules/scim2-server/default.nix | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/pkgs/development/python-modules/scim2-server/default.nix b/pkgs/development/python-modules/scim2-server/default.nix index 4f5f468fb29b..540e9230b943 100644 --- a/pkgs/development/python-modules/scim2-server/default.nix +++ b/pkgs/development/python-modules/scim2-server/default.nix @@ -1,8 +1,8 @@ { lib, buildPythonPackage, - fetchPypi, - hatchling, + fetchFromGitHub, + uv-build, scim2-filter-parser, scim2-models, werkzeug, @@ -13,17 +13,23 @@ buildPythonPackage rec { pname = "scim2-server"; - version = "0.1.7"; + version = "0.1.8"; pyproject = true; - src = fetchPypi { - inherit version; - pname = "scim2_server"; - hash = "sha256-nMS6vjMZ/Lyu0kiVH+IlmxZsuu7McY7AZS/xamfZSlk="; + src = fetchFromGitHub { + owner = "python-scim"; + repo = "scim2-server"; + tag = version; + hash = "sha256-7st/8KI8xWDkeUiID6TUKFdc2U8uFWe+xDUFbe9w22M="; }; - build-system = [ hatchling ]; + postPatch = '' + substituteInPlace pyproject.toml \ + --replace-fail 'uv_build>=0.8.9,<0.9.0' 'uv_build' + ''; + + build-system = [ uv-build ]; dependencies = [ scim2-filter-parser From 9e680f10f511af9cef280938cfa37505a0dcbfaf Mon Sep 17 00:00:00 2001 From: Kerstin Humm Date: Mon, 27 Oct 2025 15:07:46 +0100 Subject: [PATCH 07/10] python3Packages.scim2-client: 0.6.1 -> 0.7.3 Changelog: https://github.com/python-scim/scim2-client/releases/tag/0.7.3 --- .../python-modules/scim2-client/default.nix | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/pkgs/development/python-modules/scim2-client/default.nix b/pkgs/development/python-modules/scim2-client/default.nix index e3b4245db7b1..011338a01859 100644 --- a/pkgs/development/python-modules/scim2-client/default.nix +++ b/pkgs/development/python-modules/scim2-client/default.nix @@ -1,8 +1,8 @@ { lib, buildPythonPackage, - fetchPypi, - hatchling, + fetchFromGitHub, + uv-build, scim2-models, pytestCheckHook, portpicker, @@ -16,17 +16,23 @@ buildPythonPackage rec { pname = "scim2-client"; - version = "0.6.1"; + version = "0.7.3"; pyproject = true; - src = fetchPypi { - inherit version; - pname = "scim2_client"; - hash = "sha256-5XOUOKf0vYHkewY22x5NQdhICXCd+EftKhsxtQurgHQ="; + src = fetchFromGitHub { + owner = "python-scim"; + repo = "scim2-client"; + tag = version; + hash = "sha256-jw8Dp/PekM0JrgxRkN+A896O2twkSDxQpsGsljJFdB0="; }; - build-system = [ hatchling ]; + postPatch = '' + substituteInPlace pyproject.toml \ + --replace-fail 'uv_build>=0.8.9,<0.9.0' 'uv_build' + ''; + + build-system = [ uv-build ]; dependencies = [ scim2-models ]; @@ -41,12 +47,6 @@ buildPythonPackage rec { ] ++ optional-dependencies.httpx; - # Werkzeug returns 500, didn't deem it worth it to investigate - disabledTests = [ - "test_search_request" - "test_query_dont_check_request_payload" - ]; - pythonImportsCheck = [ "scim2_client" ]; optional-dependencies = { From eb713d9c3d8a35c76d52f0c00f3f02fbad342885 Mon Sep 17 00:00:00 2001 From: Kerstin Humm Date: Fri, 12 Dec 2025 17:05:03 +0100 Subject: [PATCH 08/10] python3Packages.python-avatars: init at 1.4.1 --- .../python-modules/python-avatars/default.nix | 35 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 ++ 2 files changed, 37 insertions(+) create mode 100644 pkgs/development/python-modules/python-avatars/default.nix diff --git a/pkgs/development/python-modules/python-avatars/default.nix b/pkgs/development/python-modules/python-avatars/default.nix new file mode 100644 index 000000000000..7ba731110076 --- /dev/null +++ b/pkgs/development/python-modules/python-avatars/default.nix @@ -0,0 +1,35 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "python-avatars"; + version = "1.4.1"; + + pyproject = true; + + src = fetchFromGitHub { + owner = "ibonn"; + repo = "python_avatars"; + tag = "v${version}"; + hash = "sha256-8/uhzOr0AukH0VgUhnsPNSEGJ2D5z1tqdIKzNHyHCgY="; + }; + + build-system = [ setuptools ]; + + nativeCheckInputs = [ pytestCheckHook ]; + + pythonImportsCheck = [ "python_avatars" ]; + + meta = { + description = "Avatar generation package for Python"; + homepage = "https://github.com/ibonn/python_avatars"; + changelog = "https://github.com/ibonn/python_avatars/releases/tag/${src.tag}"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.erictapen ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 814de4876a21..0526ae598416 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -15395,6 +15395,8 @@ self: super: with self; { python-arango = callPackage ../development/python-modules/python-arango { }; + python-avatars = callPackage ../development/python-modules/python-avatars { }; + python-awair = callPackage ../development/python-modules/python-awair { }; python-axolotl = callPackage ../development/python-modules/python-axolotl { }; From 12aa26e5dc1e6a9a033932af078b42ff143f468e Mon Sep 17 00:00:00 2001 From: Kerstin Humm Date: Fri, 12 Dec 2025 17:17:42 +0100 Subject: [PATCH 09/10] python3Packages.dramatiq-eager-broker: init at 0.3.0 --- .../dramatiq-eager-broker/default.nix | 36 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 ++ 2 files changed, 38 insertions(+) create mode 100644 pkgs/development/python-modules/dramatiq-eager-broker/default.nix diff --git a/pkgs/development/python-modules/dramatiq-eager-broker/default.nix b/pkgs/development/python-modules/dramatiq-eager-broker/default.nix new file mode 100644 index 000000000000..ae93a5c9535c --- /dev/null +++ b/pkgs/development/python-modules/dramatiq-eager-broker/default.nix @@ -0,0 +1,36 @@ +{ + lib, + buildPythonPackage, + fetchFromGitea, + uv-build, + dramatiq, + pytestCheckHook, +}: + +buildPythonPackage rec { + pname = "dramatiq-eager-broker"; + version = "0.3.0"; + + pyproject = true; + + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "yaal"; + repo = "dramatiq-eager-broker"; + tag = version; + hash = "sha256-tz4Gy31y5oaTHFAzb5L7bg0AhG1U/JKDySGloA7/A/8="; + }; + + build-system = [ uv-build ]; + + dependencies = [ dramatiq ]; + + nativeCheckInputs = [ pytestCheckHook ]; + + meta = { + description = "An eager broker for Dramatiq that executes tasks synchronously and immediately, without queuing"; + homepage = "https://codeberg.org/yaal/dramatiq-eager-broker"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.erictapen ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 0526ae598416..62d4f950715c 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4651,6 +4651,8 @@ self: super: with self; { dramatiq-abort = callPackage ../development/python-modules/dramatiq-abort { }; + dramatiq-eager-broker = callPackage ../development/python-modules/dramatiq-eager-broker { }; + drawille = callPackage ../development/python-modules/drawille { }; drawilleplot = callPackage ../development/python-modules/drawilleplot { }; From 1d88e96ad652b0b08b82601fad44354aefe63b9b Mon Sep 17 00:00:00 2001 From: Kerstin Humm Date: Fri, 9 Jan 2026 11:21:43 +0100 Subject: [PATCH 10/10] canaille: 0.0.74 -> 0.2.1 Changelogs: https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.0.75/CHANGES.rst https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.0.76/CHANGES.rst https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.0.77/CHANGES.rst https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.0.78/CHANGES.rst https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.0.79/CHANGES.rst https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.0.80/CHANGES.rst https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.0.81/CHANGES.rst https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.0.82/CHANGES.rst https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.0.83/CHANGES.rst https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.0.84/CHANGES.rst https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.0.85/CHANGES.rst https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.0.86/CHANGES.rst https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.1.0/CHANGES.rst https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.2.0/CHANGES.rst https://gitlab.com/yaal/canaille/-/blob/refs/tags/0.2.1/CHANGES.rst --- nixos/modules/services/security/canaille.nix | 4 +- pkgs/by-name/ca/canaille/package.nix | 77 +++++++++++--------- 2 files changed, 43 insertions(+), 38 deletions(-) diff --git a/nixos/modules/services/security/canaille.nix b/nixos/modules/services/security/canaille.nix index cda274012743..e41c6f227739 100644 --- a/nixos/modules/services/security/canaille.nix +++ b/nixos/modules/services/security/canaille.nix @@ -40,7 +40,7 @@ let ++ old.optional-dependencies.otp ++ old.optional-dependencies.sms; makeWrapperArgs = (old.makeWrapperArgs or [ ]) ++ [ - "--set CONFIG /etc/canaille/config.toml" + "--set CANAILLE_CONFIG /etc/canaille/config.toml" "--set SECRETS_DIR \"${secretsDir}\"" ]; }); @@ -303,7 +303,7 @@ in ]; environment = { PYTHONPATH = "${pythonEnv}/${python.sitePackages}/"; - CONFIG = "/etc/canaille/config.toml"; + CANAILLE_CONFIG = "/etc/canaille/config.toml"; SECRETS_DIR = secretsDir; }; serviceConfig = commonServiceConfig // { diff --git a/pkgs/by-name/ca/canaille/package.nix b/pkgs/by-name/ca/canaille/package.nix index 780460c31d01..7d0c5a36a0dd 100644 --- a/pkgs/by-name/ca/canaille/package.nix +++ b/pkgs/by-name/ca/canaille/package.nix @@ -2,9 +2,9 @@ lib, python3, fetchFromGitLab, - fetchpatch, openldap, nixosTests, + postgresql, }: let @@ -12,55 +12,52 @@ let in python.pkgs.buildPythonApplication rec { pname = "canaille"; - version = "0.0.74"; + version = "0.2.1"; pyproject = true; src = fetchFromGitLab { owner = "yaal"; repo = "canaille"; tag = version; - hash = "sha256-FL02ADM7rUU43XR71UWr4FLr/NeUau7zRwTMOSFm1T4="; + hash = "sha256-6Ksvl03HgpVQRhHtKWQwTrPBkaXcVWoejGaMFBAykHM="; }; - patches = [ - # https://gitlab.com/yaal/canaille/-/merge_requests/275 - (fetchpatch { - url = "https://gitlab.com/yaal/canaille/-/commit/1c7fc8b1034a4423f7f46ad8adeced854910b702.patch"; - hash = "sha256-fu7D010NG7yUChOve7HY3e7mm2c/UGpfcTAiTU8BnGg="; - }) - ]; - build-system = with python.pkgs; [ hatchling babel setuptools ]; - dependencies = - with python.pkgs; - [ - blinker - flask - flask-caching - flask-wtf - pydantic-settings - httpx - wtforms - ] - ++ sentry-sdk.optional-dependencies.flask; + dependencies = with python.pkgs; [ + blinker + click + dramatiq + dramatiq-eager-broker + flask + flask-caching + flask-dramatiq + flask-session + flask-wtf + httpx + pydantic-settings + wtforms + ]; nativeCheckInputs = with python.pkgs; [ pytestCheckHook + postgresql coverage flask-webtest pyquery pytest-cov-stub pytest-httpserver pytest-lazy-fixtures + pytest-postgresql pytest-smtpd pytest-xdist + python-avatars scim2-tester slapd toml @@ -68,13 +65,7 @@ python.pkgs.buildPythonApplication rec { time-machine pytest-scim2-server ] - ++ optional-dependencies.front - ++ optional-dependencies.oidc - ++ optional-dependencies.scim - ++ optional-dependencies.ldap - ++ optional-dependencies.postgresql - ++ optional-dependencies.otp - ++ optional-dependencies.sms; + ++ (lib.concatLists (builtins.attrValues optional-dependencies)); postInstall = '' mkdir -p $out/etc/schema @@ -87,17 +78,21 @@ python.pkgs.buildPythonApplication rec { export SBIN="${openldap}/bin" export SLAPD="${openldap}/libexec/slapd" export SCHEMA="${openldap}/etc/schema" - - # Just use their example config for testing - export CONFIG=tests/app/fixtures/default-config.toml ''; + disabledTests = [ + # Tries to use DNS resolution + "test_send_new_email_error" + "test_send_test_email_ssl" + ]; + optional-dependencies = with python.pkgs; { front = [ email-validator flask-babel flask-talisman flask-themer + isodate pycountry pytz tomlkit @@ -108,10 +103,10 @@ python.pkgs.buildPythonApplication rec { joserfc ]; scim = [ - httpx - scim2-models authlib + httpx scim2-client + scim2-models ]; ldap = [ python-ldap ]; sentry = [ sentry-sdk ]; @@ -128,8 +123,18 @@ python.pkgs.buildPythonApplication rec { pillow qrcode ]; + fido = [ webauthn ]; sms = [ smpplib ]; - server = [ hypercorn ]; + captcha = [ captcha ]; + server = [ + asgiref + hypercorn + isodate + pydanclick + tomlkit + ]; + redis = [ dramatiq ] ++ dramatiq.optional-dependencies.redis; + rabbitmq = [ dramatiq ] ++ dramatiq.optional-dependencies.rabbitmq; }; passthru = {