diff options
Diffstat (limited to 'pkgs/by-name/pr')
-rw-r--r-- | pkgs/by-name/pr/pretix/package.nix | 264 | ||||
-rw-r--r-- | pkgs/by-name/pr/pretix/plugin-build.nix | 37 | ||||
-rw-r--r-- | pkgs/by-name/pr/pretix/plugin-build.patch | 20 | ||||
-rw-r--r-- | pkgs/by-name/pr/pretix/plugins/default.nix | 13 | ||||
-rw-r--r-- | pkgs/by-name/pr/pretix/plugins/pages.nix | 37 | ||||
-rw-r--r-- | pkgs/by-name/pr/pretix/plugins/passbook-openssl.patch | 33 | ||||
-rw-r--r-- | pkgs/by-name/pr/pretix/plugins/passbook.nix | 59 | ||||
-rw-r--r-- | pkgs/by-name/pr/pretix/plugins/reluctant-stripe.nix | 37 | ||||
-rw-r--r-- | pkgs/by-name/pr/pretix/plugins/stretchgoals.nix | 37 | ||||
-rw-r--r-- | pkgs/by-name/pr/primecount/package.nix | 61 | ||||
-rw-r--r-- | pkgs/by-name/pr/primesieve/package.nix | 49 |
11 files changed, 647 insertions, 0 deletions
diff --git a/pkgs/by-name/pr/pretix/package.nix b/pkgs/by-name/pr/pretix/package.nix new file mode 100644 index 000000000000..952da297900f --- /dev/null +++ b/pkgs/by-name/pr/pretix/package.nix @@ -0,0 +1,264 @@ +{ lib +, buildNpmPackage +, fetchFromGitHub +, fetchPypi +, fetchpatch2 +, nodejs +, python3 +, gettext +, nixosTests +, plugins ? [ ] +}: + +let + python = python3.override { + packageOverrides = self: super: { + django = super.django_4; + + stripe = super.stripe.overridePythonAttrs rec { + version = "7.9.0"; + + src = fetchPypi { + pname = "stripe"; + inherit version; + hash = "sha256-hOXkMINaSwzU/SpXzjhTJp0ds0OREc2mtu11LjSc9KE="; + }; + }; + + pretix-plugin-build = self.callPackage ./plugin-build.nix { }; + }; + }; + + pname = "pretix"; + version = "2024.2.0"; + + src = fetchFromGitHub { + owner = "pretix"; + repo = "pretix"; + rev = "refs/tags/v${version}"; + hash = "sha256-emtF5dDXEXN8GIucHbjF+m9Vkg1Jj6nmQdHhBOkXMAs="; + }; + + npmDeps = buildNpmPackage { + pname = "pretix-node-modules"; + inherit version src; + + sourceRoot = "${src.name}/src/pretix/static/npm_dir"; + npmDepsHash = "sha256-kE13dcTdWZZNHPMcHEiK0a2dEcu3Z3/q815YhaVkLbQ="; + + dontBuild = true; + + installPhase = '' + runHook preInstall + + mkdir $out + cp -R node_modules $out/ + + runHook postInstall + ''; + }; +in +python.pkgs.buildPythonApplication rec { + inherit pname version src; + pyproject = true; + + patches = [ + # Discover pretix.plugin entrypoints during build and add them into + # INSTALLED_APPS, so that their static files are collected. + ./plugin-build.patch + + (fetchpatch2 { + # Allow customization of cache and log directory + # https://github.com/pretix/pretix/pull/3997 + name = "pretix-directory-customization.patch"; + url = "https://github.com/pretix/pretix/commit/e151d1d1f08917e547df49da0779b36bb73b7294.patch"; + hash = "sha256-lO5eCKSqUaCwSm7rouMTFMwauWl9Tz/Yf0JE/IO+bnI="; + }) + ]; + + postPatch = '' + NODE_PREFIX=src/pretix/static.dist/node_prefix + mkdir -p $NODE_PREFIX + cp -R ${npmDeps}/node_modules $NODE_PREFIX/ + chmod -R u+w $NODE_PREFIX/ + + # unused + sed -i "/setuptools-rust/d" pyproject.toml + + substituteInPlace pyproject.toml \ + --replace-fail phonenumberslite phonenumbers \ + --replace-fail psycopg2-binary psycopg2 \ + --replace-fail vat_moss_forked==2020.3.20.0.11.0 vat-moss \ + --replace-fail "bleach==5.0.*" bleach \ + --replace-fail "dnspython==2.5.*" dnspython \ + --replace-fail "importlib_metadata==7.*" importlib_metadata \ + --replace-fail "protobuf==4.25.*" protobuf \ + --replace-fail "pycryptodome==3.20.*" pycryptodome \ + --replace-fail "pypdf==3.9.*" pypdf \ + --replace-fail "python-dateutil==2.8.*" python-dateutil \ + --replace-fail "sentry-sdk==1.40.*" sentry-sdk \ + --replace-fail "stripe==7.9.*" stripe + ''; + + build-system = with python.pkgs; [ + gettext + nodejs + pythonRelaxDepsHook + setuptools + tomli + ]; + + dependencies = with python.pkgs; [ + arabic-reshaper + babel + beautifulsoup4 + bleach + celery + chardet + cryptography + css-inline + defusedcsv + dj-static + django + django-bootstrap3 + django-compressor + django-countries + django-filter + django-formset-js-improved + django-formtools + django-hierarkey + django-hijack + django-i18nfield + django-libsass + django-localflavor + django-markup + django-oauth-toolkit + django-otp + django-phonenumber-field + django-redis + django-scopes + django-statici18n + djangorestframework + dnspython + drf-ujson2 + geoip2 + importlib-metadata + isoweek + jsonschema + kombu + libsass + lxml + markdown + mt-940 + oauthlib + openpyxl + packaging + paypalrestsdk + paypal-checkout-serversdk + pyjwt + phonenumbers + pillow + pretix-plugin-build + protobuf + psycopg2 + pycountry + pycparser + pycryptodome + pypdf + python-bidi + python-dateutil + pytz + pytz-deprecation-shim + pyuca + qrcode + redis + reportlab + requests + sentry-sdk + sepaxml + slimit + static3 + stripe + text-unidecode + tlds + tqdm + vat-moss + vobject + webauthn + zeep + ] ++ plugins; + + optional-dependencies = with python.pkgs; { + memcached = [ + pylibmc + ]; + }; + + postInstall = '' + mkdir -p $out/bin + cp ./src/manage.py $out/bin/pretix-manage + + # Trim packages size + rm -rfv $out/${python.sitePackages}/pretix/static.dist/node_prefix + ''; + + dontStrip = true; # no binaries + + nativeCheckInputs = with python.pkgs; [ + pytestCheckHook + pytest-xdist + pytest-mock + pytest-django + pytest-asyncio + pytest-rerunfailures + freezegun + fakeredis + responses + ] ++ lib.flatten (lib.attrValues optional-dependencies); + + pytestFlagsArray = [ + "--reruns" "3" + + # tests fail when run before 4:30am + # https://github.com/pretix/pretix/pull/3987 + "--deselect=src/tests/base/test_orders.py::PaymentReminderTests::test_sent_days" + "--deselect=src/tests/plugins/sendmail/test_rules.py::test_sendmail_rule_specified_subevent" + ]; + + preCheck = '' + export PYTHONPATH=$(pwd)/src:$PYTHONPATH + export DJANGO_SETTINGS_MODULE=tests.settings + ''; + + passthru = { + inherit + npmDeps + python + ; + plugins = lib.recurseIntoAttrs + (python.pkgs.callPackage ./plugins { + inherit (python.pkgs) callPackage; + } + ); + tests = { + inherit (nixosTests) pretix; + }; + }; + + meta = with lib; { + description = "Ticketing software that cares about your event—all the way"; + homepage = "https://github.com/pretix/pretix"; + license = with licenses; [ + agpl3Only + # 3rd party components below src/pretix/static + bsd2 + isc + mit + ofl # fontawesome + unlicense + # all other files below src/pretix/static and src/pretix/locale and aux scripts + asl20 + ]; + maintainers = with maintainers; [ hexa ]; + }; +} diff --git a/pkgs/by-name/pr/pretix/plugin-build.nix b/pkgs/by-name/pr/pretix/plugin-build.nix new file mode 100644 index 000000000000..307ff4114eb7 --- /dev/null +++ b/pkgs/by-name/pr/pretix/plugin-build.nix @@ -0,0 +1,37 @@ +{ + lib, + buildPythonPackage, + fetchPypi, + setuptools, + django, + gettext, +}: + +buildPythonPackage rec { + pname = "pretix-plugin-build"; + version = "1.0.1"; + pyproject = true; + + src = fetchPypi { + inherit pname version; + hash = "sha256-iLbqcCAbeK4PyLXiebpdE27rt6bOP7eXczIG2bdvvYo="; + }; + + build-system = [ + setuptools + ]; + + dependencies = [ + django + gettext + ]; + + doCheck = false; # no tests + + meta = with lib; { + description = ""; + homepage = "https://github.com/pretix/pretix-plugin-build"; + license = licenses.asl20; + maintainers = with maintainers; [ hexa ]; + }; +} diff --git a/pkgs/by-name/pr/pretix/plugin-build.patch b/pkgs/by-name/pr/pretix/plugin-build.patch new file mode 100644 index 000000000000..aa935ed28148 --- /dev/null +++ b/pkgs/by-name/pr/pretix/plugin-build.patch @@ -0,0 +1,20 @@ +diff --git a/src/pretix/_build_settings.py b/src/pretix/_build_settings.py +index c03f56a1a..d1ea73b84 100644 +--- a/src/pretix/_build_settings.py ++++ b/src/pretix/_build_settings.py +@@ -24,6 +24,8 @@ + This file contains settings that we need at wheel require time. All settings that we only need at runtime are set + in settings.py. + """ ++from importlib_metadata import entry_points ++ + from ._base_settings import * # NOQA + + ENTROPY = { +@@ -47,3 +49,6 @@ HAS_MEMCACHED = False + HAS_CELERY = False + HAS_GEOIP = False + SENTRY_ENABLED = False ++ ++for entry_point in entry_points(group='pretix.plugin'): ++ INSTALLED_APPS.append(entry_point.module) # noqa: F405 diff --git a/pkgs/by-name/pr/pretix/plugins/default.nix b/pkgs/by-name/pr/pretix/plugins/default.nix new file mode 100644 index 000000000000..70e643705c00 --- /dev/null +++ b/pkgs/by-name/pr/pretix/plugins/default.nix @@ -0,0 +1,13 @@ +{ callPackage +, ... +}: + +{ + pages = callPackage ./pages.nix { }; + + passbook = callPackage ./passbook.nix { }; + + reluctant-stripe = callPackage ./reluctant-stripe.nix { }; + + stretchgoals = callPackage ./stretchgoals.nix { }; +} diff --git a/pkgs/by-name/pr/pretix/plugins/pages.nix b/pkgs/by-name/pr/pretix/plugins/pages.nix new file mode 100644 index 000000000000..91f8ef032f77 --- /dev/null +++ b/pkgs/by-name/pr/pretix/plugins/pages.nix @@ -0,0 +1,37 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, pretix-plugin-build +, setuptools +}: + +buildPythonPackage rec { + pname = "pretix-pages"; + version = "1.6.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "pretix"; + repo = "pretix-pages"; + rev = "v${version}"; + hash = "sha256-cO5tAiOifLpqFEQwYgrGoByUecpzvue8YmChpPwm+y0="; + }; + + build-system = [ + pretix-plugin-build + setuptools + ]; + + doCheck = false; # no tests + + pythonImportsCheck = [ + "pretix_pages" + ]; + + meta = with lib; { + description = "Plugin to add static pages to your pretix event"; + homepage = "https://github.com/pretix/pretix-pages"; + license = licenses.asl20; + maintainers = with maintainers; [ hexa ]; + }; +} diff --git a/pkgs/by-name/pr/pretix/plugins/passbook-openssl.patch b/pkgs/by-name/pr/pretix/plugins/passbook-openssl.patch new file mode 100644 index 000000000000..44c0d56886af --- /dev/null +++ b/pkgs/by-name/pr/pretix/plugins/passbook-openssl.patch @@ -0,0 +1,33 @@ +diff --git a/pretix_passbook/apps.py b/pretix_passbook/apps.py +index e34eee1..a7ad382 100644 +--- a/pretix_passbook/apps.py ++++ b/pretix_passbook/apps.py +@@ -22,15 +22,6 @@ class PassbookApp(AppConfig): + def ready(self): + from . import signals # NOQA + +- @cached_property +- def compatibility_errors(self): +- import shutil +- +- errs = [] +- if not shutil.which("openssl"): +- errs.append("The OpenSSL binary is not installed or not in the PATH.") +- return errs +- + @cached_property + def compatibility_warnings(self): + errs = [] +diff --git a/pretix_passbook/forms.py b/pretix_passbook/forms.py +index 2a38604..aec38de 100644 +--- a/pretix_passbook/forms.py ++++ b/pretix_passbook/forms.py +@@ -41,7 +41,7 @@ class CertificateFileField(forms.FileField): + return SimpleUploadedFile("cert.pem", content, "text/plain") + + openssl_cmd = [ +- "openssl", ++ "@openssl@", + "x509", + "-inform", + "DER", diff --git a/pkgs/by-name/pr/pretix/plugins/passbook.nix b/pkgs/by-name/pr/pretix/plugins/passbook.nix new file mode 100644 index 000000000000..b7d380aa681d --- /dev/null +++ b/pkgs/by-name/pr/pretix/plugins/passbook.nix @@ -0,0 +1,59 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, substituteAll + +# build-system +, pretix-plugin-build +, setuptools + +# runtime +, openssl + +# dependencies +, googlemaps +, wallet-py3k +}: + +buildPythonPackage rec { + pname = "pretix-passbook"; + version = "1.13.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "pretix"; + repo = "pretix-passbook"; + rev = "v${version}"; + hash = "sha256-bp64wCEMon05JhOaDr/cVbqUxc+7ndcsSuSesxJt8GE="; + }; + + patches = [ + (substituteAll { + src = ./passbook-openssl.patch; + openssl = lib.getExe openssl; + }) + ]; + + build-system = [ + pretix-plugin-build + setuptools + ]; + + dependencies = [ + googlemaps + wallet-py3k + ]; + + doCheck = false; # no tests + + pythonImportsCheck = [ + "pretix_passbook" + ]; + + meta = with lib; { + description = "Support for Apple Wallet/Passbook files in pretix"; + homepage = "https://github.com/pretix/pretix-passbook"; + license = licenses.asl20; + maintainers = with maintainers; [ hexa ]; + }; +} diff --git a/pkgs/by-name/pr/pretix/plugins/reluctant-stripe.nix b/pkgs/by-name/pr/pretix/plugins/reluctant-stripe.nix new file mode 100644 index 000000000000..40ab96a36bca --- /dev/null +++ b/pkgs/by-name/pr/pretix/plugins/reluctant-stripe.nix @@ -0,0 +1,37 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, pretix-plugin-build +, setuptools +}: + +buildPythonPackage { + pname = "pretix-reluctant-stripe"; + version = "unstable-2023-08-03"; + pyproject = true; + + src = fetchFromGitHub { + owner = "metarheinmain"; + repo = "pretix-reluctant-stripe"; + rev = "ae2d770442553e5fc00815ff4521a8fd2c113fd9"; + hash = "sha256-bw9aDMxl4/uar5KHjj+wwkYkaGMRxHWY/c1N75bxu0o="; + }; + + build-system = [ + pretix-plugin-build + setuptools + ]; + + doCheck = false; # no tests + + pythonImportsCheck = [ + "pretix_reluctant_stripe" + ]; + + meta = with lib; { + description = "Nudge users to not use Stripe as a payment provider"; + homepage = "https://github.com/metarheinmain/pretix-reluctant-stripe"; + license = licenses.asl20; + maintainers = with maintainers; [ hexa ]; + }; +} diff --git a/pkgs/by-name/pr/pretix/plugins/stretchgoals.nix b/pkgs/by-name/pr/pretix/plugins/stretchgoals.nix new file mode 100644 index 000000000000..4d1cb8d02e84 --- /dev/null +++ b/pkgs/by-name/pr/pretix/plugins/stretchgoals.nix @@ -0,0 +1,37 @@ +{ lib +, buildPythonPackage +, fetchFromGitHub +, pretix-plugin-build +, setuptools +}: + +buildPythonPackage { + pname = "pretix-avgchart"; + version = "unstable-2023-11-27"; + pyproject = true; + + src = fetchFromGitHub { + owner = "rixx"; + repo = "pretix-avgchart"; + rev = "219816c7ec523a5c23778523b2616ac0c835cb3a"; + hash = "sha256-1V/0PUvStgQeBQ0v6GoofAgyPmWs3RD+v5ekmAO9vFU="; + }; + + build-system = [ + pretix-plugin-build + setuptools + ]; + + doCheck = false; # no tests + + pythonImportsCheck = [ + "pretix_stretchgoals" + ]; + + meta = with lib; { + description = "Display the average ticket sales price over time"; + homepage = "https://github.com/rixx/pretix-avgchart"; + license = licenses.asl20; + maintainers = with maintainers; [ hexa ]; + }; +} diff --git a/pkgs/by-name/pr/primecount/package.nix b/pkgs/by-name/pr/primecount/package.nix new file mode 100644 index 000000000000..791acca6ae5d --- /dev/null +++ b/pkgs/by-name/pr/primecount/package.nix @@ -0,0 +1,61 @@ +{ lib +, cmake +, fetchFromGitHub +, primesieve +, stdenv +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "primecount"; + version = "7.10"; + + src = fetchFromGitHub { + owner = "kimwalisch"; + repo = "primecount"; + rev = "v${finalAttrs.version}"; + hash = "sha256-z7sHGR6zZSTV1PbL0WPGHf52CYQ572KC1yznCuIEJbQ="; + }; + + outputs = [ "out" "dev" "lib" "man" ]; + + nativeBuildInputs = [ + cmake + ]; + + buildInputs = [ + primesieve + ]; + + strictDeps = true; + + cmakeFlags = [ + (lib.cmakeBool "BUILD_LIBPRIMESIEVE" true) + (lib.cmakeBool "BUILD_PRIMECOUNT" true) + (lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic)) + (lib.cmakeBool "BUILD_STATIC_LIBS" stdenv.hostPlatform.isStatic) + (lib.cmakeBool "BUILD_TESTS" true) + ]; + + meta = { + homepage = "https://github.com/kimwalisch/primecount"; + description = "Fast prime counting function implementations"; + longDescription = '' + primecount is a command-line program and C/C++ library that counts the + primes below an integer x ≤ 10^31 using highly optimized implementations + of the combinatorial prime counting algorithms. + + primecount includes implementations of all important combinatorial prime + counting algorithms known up to this date all of which have been + parallelized using OpenMP. primecount contains the first ever open source + implementations of the Deleglise-Rivat algorithm and Xavier Gourdon's + algorithm (that works). primecount also features a novel load balancer + that is shared amongst all implementations and that scales up to hundreds + of CPU cores. primecount has already been used to compute several prime + counting function world records. + ''; + changelog = "https://github.com/kimwalisch/primecount/blob/${finalAttrs.src.rev}/ChangeLog"; + license = lib.licenses.bsd2; + mainProgram = "primecount"; + inherit (primesieve.meta) maintainers platforms; + }; +}) diff --git a/pkgs/by-name/pr/primesieve/package.nix b/pkgs/by-name/pr/primesieve/package.nix new file mode 100644 index 000000000000..470b62111b3f --- /dev/null +++ b/pkgs/by-name/pr/primesieve/package.nix @@ -0,0 +1,49 @@ +{ lib +, cmake +, fetchFromGitHub +, stdenv +, primecount +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "primesieve"; + version = "12.1"; + + src = fetchFromGitHub { + owner = "kimwalisch"; + repo = "primesieve"; + rev = "v${finalAttrs.version}"; + hash = "sha256-AHl2GfZ1oJ8ZyjJzvg10AqN7TA7HFZ+qa6N2v51Qa78="; + }; + + outputs = [ "out" "dev" "lib" "man" ]; + + nativeBuildInputs = [ cmake ]; + + strictDeps = true; + + passthru = { + tests = { + inherit primecount; # dependent + }; + }; + + meta = { + homepage = "https://primesieve.org/"; + description = "Fast C/C++ prime number generator"; + longDescription = '' + primesieve is a command-line program and C/C++ library for quickly + generating prime numbers. It is very cache efficient, it detects your + CPU's L1 & L2 cache sizes and allocates its main data structures + accordingly. It is also multi-threaded by default, it uses all available + CPU cores whenever possible i.e. if sequential ordering is not + required. primesieve can generate primes and prime k-tuplets up to 264. + ''; + changelog = "https://github.com/kimwalisch/primesieve/blob/${finalAttrs.src.rev}/ChangeLog"; + license = lib.licenses.bsd2; + mainProgram = "primesieve"; + maintainers = lib.teams.sage.members ++ + (with lib.maintainers; [ abbradar AndersonTorres ]); + platforms = lib.platforms.unix; + }; +}) |