From 074a6ffb981a7c97876dcb93e0d5c2113a9bd74c Mon Sep 17 00:00:00 2001 From: stuebinm Date: Sun, 11 Feb 2024 17:14:24 +0100 Subject: pkgs: init bookwyrm this is still missing: - a nice way to do settings - lots of testing (run the manage.py test script in a nixos test?) - an actual way to deploy this in a halfway reasonable way --- flake.nix | 2 +- ilex/configuration.nix | 12 ++++- pkgs/bookwyrm.nix | 86 +++++++++++++++++++++++++++++++++++ pkgs/overlay.nix | 12 +++++ pkgs/python/bw-file-resubmit.nix | 27 +++++++++++ pkgs/python/django-imagekit.nix | 30 ++++++++++++ pkgs/python/django-sass-processor.nix | 30 ++++++++++++ 7 files changed, 196 insertions(+), 3 deletions(-) create mode 100644 pkgs/bookwyrm.nix create mode 100644 pkgs/python/bw-file-resubmit.nix create mode 100644 pkgs/python/django-imagekit.nix create mode 100644 pkgs/python/django-sass-processor.nix diff --git a/flake.nix b/flake.nix index 81e9768..18dbeb2 100644 --- a/flake.nix +++ b/flake.nix @@ -141,7 +141,7 @@ kijetesantakaluotokieni showrt isabelle-utils isabat travelynx crs-tracker crs-php bahnhof-name matrix-to hikari_unstable heartwood radicle-interface radicle-tui - inweb nomsring; + inweb nomsring bookwyrm; }; nixosModules = { glitchtip = import ./modules/glitchtip.nix; }; diff --git a/ilex/configuration.nix b/ilex/configuration.nix index 0f0e528..70ca74d 100644 --- a/ilex/configuration.nix +++ b/ilex/configuration.nix @@ -7,7 +7,7 @@ { imports = [ ./hardware-configuration.nix - ../modules/glitchtip.nix + # ../modules/glitchtip.nix ../modules/crs-tools.nix ]; @@ -40,7 +40,7 @@ services.postgresql = { enable = true; - ensureDatabases = [ "tracktrain" "glitchtrip" "crstracker" "travelynx" ]; + ensureDatabases = [ "tracktrain" "glitchtrip" "crstracker" "travelynx" "bookwyrm" ]; ensureUsers = [ { name = "tracktrain"; ensureDBOwnership = true; @@ -50,6 +50,9 @@ } { name = "glitchtrip"; ensureDBOwnership = true; + } { + name = "bookwyrm"; + ensureDBOwnership = true; } { name = "crstracker"; ensureDBOwnership = true; @@ -62,6 +65,11 @@ # package = pkgs.postgresql_11; }; + services.redis.servers."bookwyrm" = { + enable = true; + port = 6379; + }; + # services.glitchtip = { # enable = true; # databaseUrl = "postgres://glitchtrip@localhost:5432/glitchtrip"; diff --git a/pkgs/bookwyrm.nix b/pkgs/bookwyrm.nix new file mode 100644 index 0000000..5720d4c --- /dev/null +++ b/pkgs/bookwyrm.nix @@ -0,0 +1,86 @@ +{ lib +, fetchFromGitHub +, python +}: + + +python.pkgs.buildPythonApplication rec { + pname = "bookwyrm"; + version = "0.7.2"; + + format = "other"; + + src = fetchFromGitHub { + owner = "bookwyrm-social"; + repo = "bookwyrm"; + rev = "refs/tags/v${version}"; + hash = "sha256-5QhIHpNUn65qTh7ARlnGfUESoxw8hqFaoS2D2z+OSlM="; + }; + + propagatedBuildInputs = with python.pkgs; [ + aiohttp + bleach + celery + colorthief + django + django-celery-beat + bw-file-resubmit + django-compressor + django-imagekit + django-model-utils + django-sass-processor + django-csp + environs + flower + gunicorn + libsass + markdown + packaging + pillow + psycopg2 + pycryptodome + dateutil + redis + requests + responses + pytz + boto3 + django-storages + django-redis + opentelemetry-api + opentelemetry-exporter-otlp-proto-grpc + # opentelemetry-instrumentation-celery + opentelemetry-instrumentation-django + # opentelemetry-instrumentation-pyscopg2 + opentelemetry-sdk + protobuf + pyotp + qrcode + grpcio + ]; + + postBuild = '' + # TODO: nice build input for customisable settings + cp .env.example .env + substituteInPlace .env --replace " = (1024**2 * 100)" "=10000000" + substituteInPlace .env --replace "7(2w1sedok=aznpq)ta1mc4i%4h=xx@hxwx*o57ctsuml0x%fr" "asdjtuledjijkhtjphkedjjstihwhod" + python manage.py compile_themes + python manage.py collectstatic --no-input + ''; + + postInstall = '' + mkdir -p $out + cp -r static bookwyrm celerywyrm $out + ''; + + passthru = { + pythonPath = python.pkgs.makePythonPath propagatedBuildInputs; + gunicorn = python.pkgs.gunicorn; + celery = python.pkgs.celery; + }; + + # hacky hacky hack + shellHook = '' + export PYTHONPATH=${passthru.pythonPath} + ''; +} diff --git a/pkgs/overlay.nix b/pkgs/overlay.nix index 671a7c2..6e654b3 100644 --- a/pkgs/overlay.nix +++ b/pkgs/overlay.nix @@ -134,6 +134,18 @@ in #### packaged mostly as shitpost / to play around with #### + bookwyrm = (self.callPackage ./bookwyrm.nix { + python = super.python311.override ({ + packageOverrides = self: super: { + django = super.django_3; + python-crontab = super.python-crontab.overridePythonAttrs (_: { doCheck = false; }); + django-sass-processor = self.callPackage ./python/django-sass-processor.nix {}; + django-imagekit = self.callPackage ./python/django-imagekit.nix {}; + bw-file-resubmit = self.callPackage ./python/bw-file-resubmit.nix {}; + }; + }); + }); + glitchtip = (self.callPackage ./glitchtip.nix { python = super.python310.override ({ packageOverrides = self: super: { diff --git a/pkgs/python/bw-file-resubmit.nix b/pkgs/python/bw-file-resubmit.nix new file mode 100644 index 0000000..b21234f --- /dev/null +++ b/pkgs/python/bw-file-resubmit.nix @@ -0,0 +1,27 @@ +{ lib +, buildPythonPackage +, fetchPypi +, django +, python +, setuptools +}: + +buildPythonPackage rec { + pname = "bw-file-resubmit"; + version = "0.6.0rc2"; + format = "pyproject"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-wWZcRMRTCYCIOKtgaIQPIqxZ+8T49cZVsBXm0bJT+Ew="; + }; + + propagatedBuildInputs = [ + django + setuptools + ]; + + nativeCheckInputs = [ + django + ]; +} diff --git a/pkgs/python/django-imagekit.nix b/pkgs/python/django-imagekit.nix new file mode 100644 index 0000000..9a11a4f --- /dev/null +++ b/pkgs/python/django-imagekit.nix @@ -0,0 +1,30 @@ +{ lib +, buildPythonPackage +, fetchPypi +, django-appconf +, pilkit +, django +, python +}: + +buildPythonPackage rec { + pname = "django-imagekit"; + version = "4.1.0"; + format = "setuptools"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-5VmuquQ6M7NPh2Man6VpZFXkRR/6c4pCY1/eRC/trFw="; + }; + + propagatedBuildInputs = [ + django-appconf + pilkit + ]; + + nativeCheckInputs = [ + django + ]; + + doCheck = false; +} diff --git a/pkgs/python/django-sass-processor.nix b/pkgs/python/django-sass-processor.nix new file mode 100644 index 0000000..90bba5f --- /dev/null +++ b/pkgs/python/django-sass-processor.nix @@ -0,0 +1,30 @@ +{ lib +, buildPythonPackage +, fetchPypi +, django-compressor +, libsass +, django +, python +}: + +buildPythonPackage rec { + pname = "django-sass-processor"; + version = "1.2.2"; + format = "setuptools"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-9gmMGBzJWiFZPfa7UCeR4yAVYVIigD3iFv3Mi7QsD3c="; + }; + + propagatedBuildInputs = [ + django-compressor + libsass + ]; + + nativeCheckInputs = [ + django + ]; + + doCheck = false; +} -- cgit v1.2.3