diff --git a/pkgs/tools/misc/ntfy/default.nix b/pkgs/tools/misc/ntfy/default.nix index c79ca23e1b5e..a37df5d36377 100644 --- a/pkgs/tools/misc/ntfy/default.nix +++ b/pkgs/tools/misc/ntfy/default.nix @@ -1,10 +1,10 @@ { lib, stdenv, - python39, + python3, fetchFromGitHub, fetchpatch, - withXmpp ? !stdenv.hostPlatform.isDarwin, + withXmpp ? false, # sleekxmpp doesn't support python 3.10, see https://github.com/dschep/ntfy/issues/266 withMatrix ? true, withSlack ? true, withEmoji ? true, @@ -13,15 +13,13 @@ }: let - python = python39.override { + python = python3.override { self = python; packageOverrides = self: super: { ntfy-webpush = self.callPackage ./webpush.nix { }; # databases, on which slack-sdk depends, is incompatible with SQLAlchemy 2.0 sqlalchemy = super.sqlalchemy_1_4; - - django = super.django_3; }; }; in @@ -38,11 +36,47 @@ python.pkgs.buildPythonApplication rec { sha256 = "09f02cn4i1l2aksb3azwfb70axqhn7d0d0vl2r6640hqr74nc1cv"; }; - nativeCheckInputs = with python.pkgs; [ - mock + patches = [ + # Fix Slack integration no longer working. + # From https://github.com/dschep/ntfy/pull/229 - "Swap Slacker for Slack SDK" + (fetchpatch { + name = "ntfy-Swap-Slacker-for-Slack-SDK.patch"; + url = "https://github.com/dschep/ntfy/commit/2346e7cfdca84c8f1afc7462a92145c1789deb3e.patch"; + sha256 = "13k7jbsdx0jx7l5s8whirric76hml5bznkfcxab5xdp88q52kpk7"; + }) + # Add compatibility with emoji 2.0 + # https://github.com/dschep/ntfy/pull/250 + (fetchpatch { + name = "ntfy-Add-compatibility-with-emoji-2.0.patch"; + url = "https://github.com/dschep/ntfy/commit/4128942bb7a706117e7154a50a73b88f531631fe.patch"; + sha256 = "sha256-V8dIy/K957CPFQQS1trSI3gZOjOcVNQLgdWY7g17bRw="; + }) + # Change getargspec to getfullargspec for python 3.11 compatibility + (fetchpatch { + url = "https://github.com/dschep/ntfy/commit/71be9766ea041d2df6ebbce2781f980eea002852.patch"; + hash = "sha256-6OChaTj4g3gxVDScc/JksBISHuq+5fbNQregchSXYaQ="; + }) + # Fix compatibility with Python 3.11 + # https://github.com/dschep/ntfy/pull/271 + (fetchpatch { + url = "https://github.com/dschep/ntfy/pull/271/commits/444b60bec7de474d029cac184e82885011dd1474.patch"; + hash = "sha256-PKTu8cOpws1z6f1T4uIi2iCJAoAwu+X0Pe7XnHYtHuI="; + }) + # Fix compatibility with Python 3.12 + # https://github.com/dschep/ntfy/pull/271 + (fetchpatch { + url = "https://github.com/dschep/ntfy/pull/271/commits/d49ab9f9dba4966a44b5f0c6911741edabd35f6b.patch"; + hash = "sha256-qTUWMS8EXWYCK/ZL0Us7iJp62UIKwYT1BqDy59832ig="; + }) ]; - propagatedBuildInputs = + postPatch = '' + # We disable the Darwin specific things because it relies on pyobjc, which we don't have. + substituteInPlace setup.py \ + --replace "':sys_platform == \"darwin\"'" "'darwin'" + ''; + + dependencies = with python.pkgs; ( [ @@ -72,31 +106,21 @@ python.pkgs.buildPythonApplication rec { ]) ); - patches = [ - # Fix Slack integration no longer working. - # From https://github.com/dschep/ntfy/pull/229 - "Swap Slacker for Slack SDK" - (fetchpatch { - name = "ntfy-Swap-Slacker-for-Slack-SDK.patch"; - url = "https://github.com/dschep/ntfy/commit/2346e7cfdca84c8f1afc7462a92145c1789deb3e.patch"; - sha256 = "13k7jbsdx0jx7l5s8whirric76hml5bznkfcxab5xdp88q52kpk7"; - }) - # Add compatibility with emoji 2.0 - # https://github.com/dschep/ntfy/pull/250 - (fetchpatch { - name = "ntfy-Add-compatibility-with-emoji-2.0.patch"; - url = "https://github.com/dschep/ntfy/commit/4128942bb7a706117e7154a50a73b88f531631fe.patch"; - sha256 = "sha256-V8dIy/K957CPFQQS1trSI3gZOjOcVNQLgdWY7g17bRw="; - }) + nativeCheckInputs = with python.pkgs; [ + mock + pytestCheckHook ]; - postPatch = '' - # We disable the Darwin specific things because it relies on pyobjc, which we don't have. - substituteInPlace setup.py \ - --replace "':sys_platform == \"darwin\"'" "'darwin'" - ''; + disabledTests = [ + "test_xmpp" + ]; - checkPhase = '' - HOME=$(mktemp -d) ${python.interpreter} setup.py test + disabledTestPaths = [ + "tests/test_xmpp.py" + ]; + + preCheck = '' + export HOME=$(mktemp -d) ''; meta = with lib; {