Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 147 lines 3.5 kB view raw
1{ 2 lib, 3 python313, 4 fetchFromGitLab, 5 fetchPypi, 6 callPackage, 7 stdenv, 8 makeWrapper, 9 nixosTests, 10}: 11 12let 13 python = python313.override { 14 self = python; 15 packageOverrides = final: prev: { 16 django = final.django_5_2; 17 django-csp = prev.django-csp.overridePythonAttrs rec { 18 version = "4.0"; 19 src = fetchPypi { 20 inherit version; 21 pname = "django_csp"; 22 hash = "sha256-snAQu3Ausgo9rTKReN8rYaK4LTOLcPvcE8OjvShxKDM="; 23 }; 24 }; 25 django-ninja-cursor-pagination = prev.django-ninja-cursor-pagination.overridePythonAttrs { 26 # checks are failing with django 5 27 doCheck = false; 28 }; 29 }; 30 }; 31 32 pythonPackages = 33 with python.pkgs; 34 [ 35 aiohttp 36 anonymizeip 37 boto3 38 brotli 39 celery 40 celery-batches 41 cxxfilt 42 django 43 django-allauth 44 django-anymail 45 django-cors-headers 46 django-csp 47 django-environ 48 django-extensions 49 django-import-export 50 django-ipware 51 django-ninja 52 django-ninja-cursor-pagination 53 django-organizations 54 django-postgres-partition 55 django-prometheus 56 django-redis 57 django-storages 58 google-cloud-logging 59 gunicorn 60 orjson 61 psycopg 62 pydantic 63 # undocumented on django-allauth side 64 # https://codeberg.org/allauth/django-allauth/issues/4493 65 pyyaml 66 sentry-sdk 67 symbolic 68 user-agents 69 uvicorn 70 uwsgi-chunked 71 whitenoise 72 ] 73 ++ celery.optional-dependencies.redis 74 ++ django-allauth.optional-dependencies.mfa 75 ++ django-allauth.optional-dependencies.socialaccount 76 ++ django-redis.optional-dependencies.hiredis 77 ++ django-storages.optional-dependencies.boto3 78 ++ django-storages.optional-dependencies.azure 79 ++ django-storages.optional-dependencies.google 80 ++ psycopg.optional-dependencies.c 81 ++ psycopg.optional-dependencies.pool 82 ++ pydantic.optional-dependencies.email; 83 84 frontend = callPackage ./frontend.nix { }; 85in 86 87stdenv.mkDerivation (finalAttrs: { 88 pname = "glitchtip"; 89 version = "5.0.9"; 90 pyproject = true; 91 92 src = fetchFromGitLab { 93 owner = "glitchtip"; 94 repo = "glitchtip-backend"; 95 tag = "v${finalAttrs.version}"; 96 hash = "sha256-yRXrcwE5DDJpDiX4XB18ezrLn62AV4w/ASvrOoKD6p4="; 97 }; 98 99 propagatedBuildInputs = pythonPackages; 100 101 nativeBuildInputs = [ 102 makeWrapper 103 python 104 ]; 105 106 buildPhase = '' 107 runHook preBuild 108 109 export DEBUG=0 110 export DEBUG_TOOLBAR=0 111 112 ln -s ${finalAttrs.passthru.frontend} dist 113 python3 manage.py collectstatic 114 115 runHook postBuild 116 ''; 117 118 installPhase = '' 119 runHook preInstall 120 121 mkdir -p $out/lib 122 cp -r . $out/lib/glitchtip 123 chmod +x $out/lib/glitchtip/manage.py 124 makeWrapper $out/lib/glitchtip/manage.py $out/bin/glitchtip-manage \ 125 --prefix PYTHONPATH : "$PYTHONPATH" 126 127 runHook postInstall 128 ''; 129 130 passthru = { 131 inherit frontend python; 132 tests = { inherit (nixosTests) glitchtip; }; 133 updateScript = ./update.sh; 134 }; 135 136 meta = { 137 description = "Open source Sentry API compatible error tracking platform"; 138 homepage = "https://glitchtip.com"; 139 changelog = "https://gitlab.com/glitchtip/glitchtip-backend/-/blob/v${finalAttrs.version}/CHANGELOG"; 140 license = lib.licenses.mit; 141 maintainers = with lib.maintainers; [ 142 defelo 143 felbinger 144 ]; 145 mainProgram = "glitchtip-manage"; 146 }; 147})