From 43ba96232d0670971913dcd74a362ef0b122f8d6 Mon Sep 17 00:00:00 2001 From: Ethan Carter Edwards Date: Tue, 8 Jul 2025 11:48:27 -0400 Subject: [PATCH 1/3] python3Packages.flask-session2: init at 1.3.1 Signed-off-by: Ethan Carter Edwards --- .../python-modules/flask-session2/default.nix | 82 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 84 insertions(+) create mode 100644 pkgs/development/python-modules/flask-session2/default.nix diff --git a/pkgs/development/python-modules/flask-session2/default.nix b/pkgs/development/python-modules/flask-session2/default.nix new file mode 100644 index 0000000000000..7a3457e97a476 --- /dev/null +++ b/pkgs/development/python-modules/flask-session2/default.nix @@ -0,0 +1,82 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + # build-system + poetry-core, + + # dependencies + cachelib, + flask, + pytz, + + # tests + elasticsearch, + flask-sqlalchemy, + peewee, + pymemcache, + pymongo, + pytestCheckHook, + redis, + redisTestHook, +}: + +buildPythonPackage rec { + pname = "flask-session2"; + version = "1.3.1"; + pyproject = true; + + __darwinAllowLocalNetworking = true; + + src = fetchFromGitHub { + owner = "christopherpickering"; + repo = "flask-session2"; + tag = "v${version}"; + hash = "sha256-kxUuEirUG/jZlygKyQy2Sm7hmB331K2q8vBmcIbp7/s="; + }; + + build-system = [ poetry-core ]; + + dependencies = [ + cachelib + flask + pytz + ]; + + pythonRelaxDeps = [ + "cachelib" + "flask" + "pytz" + ]; + + nativeCheckInputs = [ + elasticsearch + flask-sqlalchemy + peewee + pymemcache + pymongo + pytestCheckHook + redis + redisTestHook + ]; + + disabledTests = [ + "test_elasticsearch_session" + "test_flasksqlalchemy_session" + "test_flasksqlalchemy_session_with_signer" + "test_memcached_session" + "test_mongodb_session" + "test_session_use_signer" + ]; + + pythonImportsCheck = [ "flask_session" ]; + + meta = { + description = "Flask extension that adds support for server-side sessions"; + homepage = "https://github.com/christopherpickering/flask-session2"; + changelog = "https://github.com/christopherpickering/flask-session2/releases/tag/${version}"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ ethancedwards8 ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index ad4c7649a292b..8f5e38d309f4f 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -5252,6 +5252,8 @@ self: super: with self; { flask-session-captcha = callPackage ../development/python-modules/flask-session-captcha { }; + flask-session2 = callPackage ../development/python-modules/flask-session2 { }; + flask-simpleldap = callPackage ../development/python-modules/flask-simpleldap { }; flask-sock = callPackage ../development/python-modules/flask-sock { }; From 5837c0002df0b53f1edc424d5894813803fbfd35 Mon Sep 17 00:00:00 2001 From: Ethan Carter Edwards Date: Tue, 8 Jul 2025 09:19:44 -0400 Subject: [PATCH 2/3] python3Packages.password-strength: init at 0.0.3 Signed-off-by: Ethan Carter Edwards --- .../password-strength/default.nix | 39 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 41 insertions(+) create mode 100644 pkgs/development/python-modules/password-strength/default.nix diff --git a/pkgs/development/python-modules/password-strength/default.nix b/pkgs/development/python-modules/password-strength/default.nix new file mode 100644 index 0000000000000..edaa40cdbbf57 --- /dev/null +++ b/pkgs/development/python-modules/password-strength/default.nix @@ -0,0 +1,39 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + six, + nose2, +}: + +buildPythonPackage rec { + pname = "password-strength"; + version = "0.0.3"; + pyproject = true; + + src = fetchFromGitHub { + owner = "kolypto"; + repo = "py-password-strength"; + tag = "v${version}"; + hash = "sha256-8zjyo0jC4PxFJxM0VZ/u29heqqO5UbkOKAVxtNkcb7U="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + six + ]; + + # tests use nose + doCheck = false; + + pythonImportsCheck = [ "password_strength" ]; + + meta = { + description = "Password strength and validation checker"; + homepage = "https://github.com/kolypto/py-password-strength"; + license = lib.licenses.bsd2; + maintainers = with lib.maintainers; [ ethancedwards8 ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 8f5e38d309f4f..2bbaa7d35aa32 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -11200,6 +11200,8 @@ self: super: with self; { password-entropy = callPackage ../development/python-modules/password-entropy { }; + password-strength = callPackage ../development/python-modules/password-strength { }; + paste = callPackage ../development/python-modules/paste { }; pastedeploy = callPackage ../development/python-modules/pastedeploy { }; From e4bd3e7849742a31506ac2fa86bf0086a5c0573d Mon Sep 17 00:00:00 2001 From: Ethan Carter Edwards Date: Tue, 8 Jul 2025 12:02:39 -0400 Subject: [PATCH 3/3] liberaforms: init at 4.1.2 Signed-off-by: Ethan Carter Edwards --- pkgs/by-name/li/liberaforms/package.nix | 265 ++++++++++++++++++++++++ 1 file changed, 265 insertions(+) create mode 100644 pkgs/by-name/li/liberaforms/package.nix diff --git a/pkgs/by-name/li/liberaforms/package.nix b/pkgs/by-name/li/liberaforms/package.nix new file mode 100644 index 0000000000000..5ecb5fdb1c1c5 --- /dev/null +++ b/pkgs/by-name/li/liberaforms/package.nix @@ -0,0 +1,265 @@ +{ + lib, + python3Packages, + fetchFromGitea, + fetchPypi, + fetchFromGitHub, + callPackage, + + postgresql, + libxml2, + libxslt, + + # tests + postgresqlTestHook, +}: + +let + # liberaforms requires a very specific version of flask-babel + flask-babel = python3Packages.flask-babel.overridePythonAttrs rec { + version = "2.0.0"; + format = "setuptools"; + src = fetchPypi { + pname = "Flask-Babel"; + inherit version; + hash = "sha256-+fr0XNsuGjLqLsFEA1h9QpUQjzUBenghorGsuM/ZJX0="; + }; + nativeBuildInputs = [ ]; + propagatedBuildInputs = [ ]; + outputs = [ "out" ]; + dependencies = with python3Packages; [ + babel + flask + jinja2 + pytz + ]; + pythonImportsCheck = [ ]; + checkInputs = [ ]; + }; + # same with flask + flask = python3Packages.flask.overridePythonAttrs rec { + version = "2.2.2"; + pyproject = null; + format = "setuptools"; + src = fetchPypi { + pname = "Flask"; + inherit version; + hash = "sha256-ZCxFDRnErUgvlnKb0qj20yVUqh4jH09rTn5SZLFsyis="; + }; + dependencies = (with python3Packages; [ + click + blinker + itsdangerous + jinja2 + ] ++ [ werkzeug ]); + nativeCheckInputs = [ ]; + }; + # same with werkzeug + werkzeug = python3Packages.werkzeug.overridePythonAttrs rec { + version = "2.2.2"; + pyproject = null; + format = "setuptools"; + src = fetchPypi { + pname = "Werkzeug"; + inherit version; + hash = "sha256-fqLUgyLMfA+LOiFe1z6r17XXXQtQ4xqwBihsz/ngC48="; + }; + nativeCheckInputs = [ ]; + }; + sqlalchemy_1_4 = python3Packages.sqlalchemy_1_4.overridePythonAttrs rec { + version = "1.4.42"; + src = fetchFromGitHub { + owner = "sqlalchemy"; + repo = "sqlalchemy"; + rev = "rel_${lib.replaceStrings [ "." ] [ "_" ] version}"; + hash = "sha256-RVpreszvd5hn9BLzvnfKT4nibUuybtZwBRloe5NaP/E="; + }; + env.NIX_CFLAGS_COMPILE = "-Wno-error=implicit-function-declaration"; + disabledTestPaths = [ + # typing correctness, not interesting + "test/ext/mypy" + # slow and high memory usage, not interesting + "test/aaa_profiling" + # fetching and key slice failures, probably network related + "test/base/test_result.py" + "test/dialect/test_sqlite.py" + "test/ext/test_baked.py" + "test/ext/test_horizontal_shard.py" + "test/ext/test_hybrid.py" + "test/orm/" + "test/sql/test_resultset.py" + ]; + }; +in + +python3Packages.buildPythonPackage rec { + pname = "liberaforms"; + version = "4.1.2"; + format = "other"; + + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "LiberaForms"; + repo = "server"; + tag = "v${version}"; + hash = "sha256-OALAoaIbUPD9qrtxraoG50/lkUvShHq0n5d8etkSliI="; + }; + + build-system = with python3Packages; [ + setuptools + setuptools-scm + ]; + + dependencies = with python3Packages; [ + aiosmtpd + alembic + atpublic + attrs + babel + beautifulsoup4 + bleach + cairosvg + cachelib + certifi + cffi + charset-normalizer + click + cryptography + deepdiff + dnspython + email-validator + feedgen + flask + flask-babel + flask-login + flask-marshmallow + flask-migrate + flask-session2 + flask-session + flask-sqlalchemy + flask-wtf + greenlet + gunicorn + idna + importlib-metadata + importlib-resources + iniconfig + itsdangerous + jinja2 + ldap3 + lxml + mako + markdown + markupsafe + marshmallow + marshmallow-sqlalchemy + minio + packaging + passlib + password-strength + password-entropy + pillow + platformdirs + pluggy + portpicker + prometheus-client + psutil + psycopg2 + py + pyasn1 + pycodestyle + pycparser + pygments + pyjwt + pyparsing + pypng + pyqrcode + python-dateutil + python-dotenv + python-magic + pytz + requests + six + smtpdfix + snowballstemmer + soupsieve + sqlalchemy_1_4 + sqlalchemy-json + toml + unicodecsv + unidecode + urllib3 + webencodings + werkzeug + wtforms + zipp + ]; + + pythonRemoveDeps = [ + # removed + "typed-ast" + ]; + + nativeBuildInputs = [ + postgresql + libxml2 + libxslt + ]; + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + runHook preInstall + + cp -R ${src}/. $out + + runHook postInstall + ''; + + doCheck = true; + + nativeCheckInputs = + [ + postgresql + postgresqlTestHook + ] + ++ (with python3Packages; [ + faker + pytestCheckHook + pytest-dotenv + factory-boy + polib + ]); + + preCheck = '' + export LANG=C.UTF-8 + export PGUSER=db_user + export postgresqlEnableTCP=1 + ''; + + checkPhase = '' + runHook preCheck + + # Run pytest on the installed version. A running postgres database server is needed. + (cd tests && cp test.ini.example test.ini && pytest -k "not test_save_smtp_config and not test/ext/test_horizontal_shard.py\ + and not TestE2EEDisabledFeatures") #TODO why does this break? + + runHook postCheck + ''; + + # avoid writing in the migration process + postFixup = '' + cp $out/assets/brand/logo-default.png $out/assets/brand/logo.png + cp $out/assets/brand/favicon-default.ico $out/assets/brand/favicon.ico + sed -i "/shutil.copyfile/d" $out/liberaforms/models/site.py + sed -i "/brand_dir/d" $out/migrations/versions/6f0e2b9e9db3_.py + ''; + + meta = { + description = "Free form software"; + homepage = "https://gitlab.com/liberaforms/liberaforms"; + license = lib.licenses.agpl3Plus; + platforms = lib.platforms.all; + }; +}