From 50f74d35e73529e67a27cee7fcd36e18a6d92e3a Mon Sep 17 00:00:00 2001 From: stuebinm Date: Wed, 22 Mar 2023 03:15:41 +0100 Subject: package glitchtip i don't know why i did this. i literally have no use for it. --- pkgs/0001-fix-poetry-name-issue.patch | 23 +++++++++ pkgs/glitchtip.nix | 87 +++++++++++++++++++++++++++++++++++ pkgs/overlay.nix | 7 +++ 3 files changed, 117 insertions(+) create mode 100644 pkgs/0001-fix-poetry-name-issue.patch create mode 100644 pkgs/glitchtip.nix (limited to 'pkgs') diff --git a/pkgs/0001-fix-poetry-name-issue.patch b/pkgs/0001-fix-poetry-name-issue.patch new file mode 100644 index 0000000..9cc82bd --- /dev/null +++ b/pkgs/0001-fix-poetry-name-issue.patch @@ -0,0 +1,23 @@ +From 6a38df44cc64a4952528afe71c03c3931526af15 Mon Sep 17 00:00:00 2001 +From: stuebinm +Date: Wed, 22 Mar 2023 00:36:23 +0100 +Subject: [PATCH] fix poetry name issue + +--- + pyproject.toml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pyproject.toml b/pyproject.toml +index 9eb393a..1704691 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -1,5 +1,5 @@ + [tool.poetry] +-name = "glitchtip-backend" ++name = "glitchtip" + version = "0.1.0" + description = "Django backend that powers GlitchTip, an open source reimplementation of Sentry" + authors = ["David Burke"] +-- +2.38.3 + diff --git a/pkgs/glitchtip.nix b/pkgs/glitchtip.nix new file mode 100644 index 0000000..fa1a594 --- /dev/null +++ b/pkgs/glitchtip.nix @@ -0,0 +1,87 @@ +{ stdenv, lib, poetry2nix, python, fetchFromGitLab, fetchurl, unzip }: + +let + version = "3.0.7"; + src = fetchFromGitLab { + owner = "glitchtip"; + repo = "glitchtip-backend"; + sha256 = "sha256-Dcdvv9DkU9znlamcSkGB/her+Ib6kV4mTkei6zoeZfE="; + rev = "v${version}"; + }; + frontend = fetchurl { + url = + "https://gitlab.com/api/v4/projects/15449363/jobs/artifacts/v${version}/download?job=build-assets"; + sha256 = "sha256-dv5/ilzcdmA8Ljee7u//my+yf5zPGevFNY8ig5YgWl0="; + }; + pythonApp = poetry2nix.mkPoetryApplication rec { + inherit python; + projectDir = src; + + patches = [ ./0001-fix-poetry-name-issue.patch ]; + + # a bunch of python packages seem to misdeclare their dependencies + # a few are also just broken when building with Nix, so use these + # from nixpkgs instead. Finally, some are inherited from nixpkgs + # just to prevent duplicate dependencies (where nixpkgs & glitchtip's + # lock file differ in package versions) + overrides = poetry2nix.defaultPoetryOverrides.extend (self: super: { + anonymizeip = super.anonymizeip.overridePythonAttrs (old: { + propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) + ++ [ super.setuptools ]; + }); + uwsgi-chunked = super.uwsgi-chunked.overridePythonAttrs (old: { + propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) + ++ [ super.setuptools ]; + }); + django-bitfield = super.django-bitfield.overridePythonAttrs (old: { + propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) + ++ [ super.setuptools ]; + }); + roundrobin = super.roundrobin.overridePythonAttrs (old: { + propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) + ++ [ super.setuptools ]; + }); + markuppy = super.markuppy.overridePythonAttrs (old: { + propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) + ++ [ super.setuptools ]; + }); + uwsgi = super.uwsgi.overridePythonAttrs (old: { + propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) + ++ [ super.setuptools ]; + }); + inherit (python.pkgs) + django-stubs-ext django-stubs django async-timeout mypy-extensions tomli + asgiref sqlparse typing-extensions pytz mypy; + }); + + # magically makes the cargo errors go away + preferWheels = true; + }; + + staticDir = stdenv.mkDerivation { + pname = "glitchtip-backend-static"; + inherit version; + + inherit src; + + buildInputs = [ unzip ]; + propagatedBuildInputs = [ pythonApp.dependencyEnv ]; + buildPhase = '' + unzip ${frontend} -d unpacked + mv unpacked/dist/glitchtip-frontend dist + rm -rf unpacked + ${pythonApp.dependencyEnv}/bin/python ${src}/manage.py collectstatic + ''; + + installPhase = '' + mkdir -p $out + cp -r * $out + rm $out/manage.py + install -Dm755 manage.py $out/manage.py + ''; + }; + +# this is mildly cursed. It returns the static dir as a package, +# but keeps the Nix meta-info of pythonApp in the attr set so we can +# also feed this to pythonPackages and the like to get a python env. +in pythonApp // staticDir diff --git a/pkgs/overlay.nix b/pkgs/overlay.nix index eaba1d9..ada5d47 100644 --- a/pkgs/overlay.nix +++ b/pkgs/overlay.nix @@ -3,4 +3,11 @@ self: super: { galmon-core = self.callPackage (import ./galmon.nix {}) {}; galmon-full = self.callPackage (import ./galmon.nix { buildAll = true; }) {}; + glitchtip = (self.callPackage ./glitchtip.nix { + python = super.python310.override ({ + packageOverrides = self: super: { + django = super.django_4; + }; + }); + }); } -- cgit v1.2.3