about summary refs log tree commit diff
path: root/pkgs/by-name/pr
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/pr')
-rw-r--r--pkgs/by-name/pr/pragtical/package.nix4
-rw-r--r--pkgs/by-name/pr/pre2k/package.nix1
-rw-r--r--pkgs/by-name/pr/presenterm/package.nix27
-rw-r--r--pkgs/by-name/pr/pretalx/package.nix40
-rw-r--r--pkgs/by-name/pr/pretalx/plugins/downstream.nix4
-rw-r--r--pkgs/by-name/pr/pretalx/plugins/media-ccc-de.nix4
-rw-r--r--pkgs/by-name/pr/pretalx/plugins/pages.nix4
-rw-r--r--pkgs/by-name/pr/pretalx/plugins/public-voting.nix4
-rw-r--r--pkgs/by-name/pr/pretalx/plugins/venueless.nix4
-rw-r--r--pkgs/by-name/pr/pretalx/plugins/vimeo.nix4
-rw-r--r--pkgs/by-name/pr/pretalx/plugins/youtube.nix4
-rw-r--r--pkgs/by-name/pr/pretix-banktool/package.nix48
-rw-r--r--pkgs/by-name/pr/pretix/package.nix61
-rw-r--r--pkgs/by-name/pr/pretix/plugins/default.nix2
-rw-r--r--pkgs/by-name/pr/pretix/plugins/zugferd.nix53
-rw-r--r--pkgs/by-name/pr/pretix/pr4362.patch50
-rw-r--r--pkgs/by-name/pr/prettier-d-slim/package.nix2
-rw-r--r--pkgs/by-name/pr/prettier-plugin-go-template/package.nix27
-rw-r--r--pkgs/by-name/pr/prettierd/package.json45
-rw-r--r--pkgs/by-name/pr/prettierd/package.nix55
-rw-r--r--pkgs/by-name/pr/previewqt/package.nix64
-rw-r--r--pkgs/by-name/pr/primecount/package.nix38
-rw-r--r--pkgs/by-name/pr/primesieve/package.nix27
-rw-r--r--pkgs/by-name/pr/prismlauncher/package.nix26
-rw-r--r--pkgs/by-name/pr/private-gpt/package.nix6
-rw-r--r--pkgs/by-name/pr/process-cpp/package.nix55
-rw-r--r--pkgs/by-name/pr/progress-tracker/package.nix58
-rw-r--r--pkgs/by-name/pr/prometheus-borgmatic-exporter/package.nix47
-rw-r--r--pkgs/by-name/pr/prometheus-deluge-exporter/package.nix34
-rw-r--r--pkgs/by-name/pr/prometheus-jmx-javaagent/package.nix4
-rw-r--r--pkgs/by-name/pr/prometheus-node-exporter/package.nix44
-rw-r--r--pkgs/by-name/pr/prometheus-restic-exporter/package.nix4
-rw-r--r--pkgs/by-name/pr/prometheus-squid-exporter/package.nix6
-rw-r--r--pkgs/by-name/pr/promql-cli/package.nix32
-rw-r--r--pkgs/by-name/pr/protege/package.nix6
-rw-r--r--pkgs/by-name/pr/proto/package.nix10
-rw-r--r--pkgs/by-name/pr/protoc-gen-elixir/package.nix44
-rw-r--r--pkgs/by-name/pr/protoc-gen-es/package.nix6
-rw-r--r--pkgs/by-name/pr/protoc-gen-js/package.nix4
-rw-r--r--pkgs/by-name/pr/proton-ge-bin/package.nix23
-rw-r--r--pkgs/by-name/pr/proton-pass/package.nix4
-rw-r--r--pkgs/by-name/pr/protonmail-desktop/package.nix83
-rwxr-xr-xpkgs/by-name/pr/protonmail-desktop/update.sh29
-rw-r--r--pkgs/by-name/pr/protonplus/package.nix4
-rw-r--r--pkgs/by-name/pr/prowler/package.nix32
-rw-r--r--pkgs/by-name/pr/prox/package.nix2
-rw-r--r--pkgs/by-name/pr/proxsuite/package.nix101
-rw-r--r--pkgs/by-name/pr/prrte/package.nix80
48 files changed, 1097 insertions, 219 deletions
diff --git a/pkgs/by-name/pr/pragtical/package.nix b/pkgs/by-name/pr/pragtical/package.nix
index 404d64790992f..5b5ee466a16cf 100644
--- a/pkgs/by-name/pr/pragtical/package.nix
+++ b/pkgs/by-name/pr/pragtical/package.nix
@@ -20,7 +20,7 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "pragtical";
-  version = "3.4.0";
+  version = "3.4.2";
   pluginManagerVersion = "1.2.9";
 
   src = fetchFromGitHub {
@@ -44,7 +44,7 @@ stdenv.mkDerivation (finalAttrs: {
       find subprojects -type d -name .git -prune -execdir rm -r {} +
     '';
 
-    hash = "sha256-6feS9ougTlunkIr1WRUYieR4O8vHN1++VdfX5DreWFg=";
+    hash = "sha256-mYLYRyyKfjTCD8mi1KrQNLqwd8QX1wgpJtpWASQCLQU=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/pr/pre2k/package.nix b/pkgs/by-name/pr/pre2k/package.nix
index 4865269b55654..98b763cb011df 100644
--- a/pkgs/by-name/pr/pre2k/package.nix
+++ b/pkgs/by-name/pr/pre2k/package.nix
@@ -24,7 +24,6 @@ python3.pkgs.buildPythonApplication rec {
 
   nativeBuildInputs = with python3.pkgs; [
     poetry-core
-    pythonRelaxDepsHook
   ];
 
   propagatedBuildInputs = with python3.pkgs; [
diff --git a/pkgs/by-name/pr/presenterm/package.nix b/pkgs/by-name/pr/presenterm/package.nix
index 5e7e767fef595..d2915f4f8a135 100644
--- a/pkgs/by-name/pr/presenterm/package.nix
+++ b/pkgs/by-name/pr/presenterm/package.nix
@@ -2,46 +2,47 @@
 , fetchFromGitHub
 , rustPlatform
 , libsixel
+, stdenv
+, nix-update-script
 , testers
 , presenterm
-, stdenv
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "presenterm";
-  version = "0.7.0";
+  version = "0.8.0";
 
   src = fetchFromGitHub {
     owner = "mfontanini";
     repo = "presenterm";
     rev = "refs/tags/v${version}";
-    hash = "sha256-I5L+Wygj9ApQu/5fm55okwNbyxOiF++7BDl765MLnjY=";
+    hash = "sha256-sMhowTXPzZcIOV4Ny9NzvgXGsZSPBJGDg9JvuoZoSUc=";
   };
 
   buildInputs = [
     libsixel
   ];
 
-  cargoHash = "sha256-w1uXCH8Ybf78EPTIKrhPlPHAnNBp1iiBpFJHY98IPWY=";
+  cargoHash = "sha256-2aHJnGSuP0TEBMxF1zljbEyk1g6ECTpnByyH8jaj78s=";
 
   # Crashes at runtime on darwin with:
   # Library not loaded: .../out/lib/libsixel.1.dylib
   buildFeatures = lib.optionals (!stdenv.isDarwin) [ "sixel" ];
 
-  # Skip test that currently doesn't work
-  checkFlags = [ "--skip=execute::test::shell_code_execution" ];
-
-  passthru.tests.version = testers.testVersion {
-    package = presenterm;
-    command = "presenterm --version";
+  passthru = {
+    updateScript = nix-update-script { };
+    tests.version = testers.testVersion {
+      package = presenterm;
+      command = "presenterm --version";
+    };
   };
 
-  meta = with lib; {
+  meta = {
     description = "Terminal based slideshow tool";
     changelog = "https://github.com/mfontanini/presenterm/releases/tag/v${version}";
     homepage = "https://github.com/mfontanini/presenterm";
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ mikaelfangel ];
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ mikaelfangel ];
     mainProgram = "presenterm";
   };
 }
diff --git a/pkgs/by-name/pr/pretalx/package.nix b/pkgs/by-name/pr/pretalx/package.nix
index 784976d06eaf8..94fb2357465bd 100644
--- a/pkgs/by-name/pr/pretalx/package.nix
+++ b/pkgs/by-name/pr/pretalx/package.nix
@@ -3,13 +3,13 @@
 , gettext
 , python3
 , fetchFromGitHub
-, fetchpatch2
 , plugins ? [ ]
 , nixosTests
 }:
 
 let
   python = python3.override {
+    self = python;
     packageOverrides = final: prev: {
       django-bootstrap4 = prev.django-bootstrap4.overridePythonAttrs (oldAttrs: rec {
         version = "3.0.0";
@@ -29,13 +29,13 @@ let
     };
   };
 
-  version = "2024.1.0";
+  version = "2024.2.1";
 
   src = fetchFromGitHub {
     owner = "pretalx";
     repo = "pretalx";
     rev = "v${version}";
-    hash = "sha256-rFOlovybaEZnv5wBx6Dv8bVkP1D+CgYAKRXuNb6hLKQ=";
+    hash = "sha256-D0ju9aOVy/new9GWqyFalZYCisdmM7irWSbn2TVCJYQ=";
   };
 
   meta = with lib; {
@@ -54,7 +54,7 @@ let
 
     sourceRoot = "${src.name}/src/pretalx/frontend/schedule-editor";
 
-    npmDepsHash = "sha256-B9R3Nn4tURNxzeyLDHscqHxYOQK9AcmDnyNq3k5WQQs=";
+    npmDepsHash = "sha256-EAdeXdcC3gHun6BOHzvqpzv9+oDl1b/VTeNkYLiD+hA=";
 
     npmBuildScript = "build";
 
@@ -71,15 +71,6 @@ python.pkgs.buildPythonApplication rec {
     "static"
   ];
 
-  patches = [
-    (fetchpatch2 {
-      # Backport support for Djangorestframework 3.15.x
-      name = "pretalx-drf-3.15.patch";
-      url = "https://github.com/pretalx/pretalx/commit/43a0416c6968d64ea57720abdb82f482940b11f8.patch";
-      hash = "sha256-Iw1xVF7j7c712kwIk1SMbQSF0ixMUZr1BJib3KAb2HY=";
-    })
-  ];
-
   postPatch = ''
     substituteInPlace src/pretalx/common/management/commands/rebuild.py \
       --replace 'subprocess.check_call(["npm", "run", "build"], cwd=frontend_dir, env=env)' ""
@@ -90,28 +81,33 @@ python.pkgs.buildPythonApplication rec {
 
   nativeBuildInputs = [
     gettext
-  ] ++ (with python.pkgs; [
-    pythonRelaxDepsHook
+  ];
+
+  build-system = with python.pkgs; [
     setuptools
-  ]);
+  ];
 
   pythonRelaxDeps = [
     "celery"
     "css-inline"
     "cssutils"
+    "defusedxml"
+    "django-compressor"
     "django-csp"
     "django-filter"
     "django-hierarkey"
     "djangorestframework"
     "markdown"
     "pillow"
+    "publicsuffixlist"
     "python-dateutil"
     "reportlab"
     "requests"
     "rules"
+    "whitenoise"
   ];
 
-  propagatedBuildInputs = with python.pkgs; [
+  dependencies = with python.pkgs; [
     beautifulsoup4
     bleach
     celery
@@ -119,6 +115,7 @@ python.pkgs.buildPythonApplication rec {
     csscompressor
     cssutils
     defusedcsv
+    defusedxml
     django
     django-bootstrap4
     django-compressor
@@ -146,9 +143,12 @@ python.pkgs.buildPythonApplication rec {
     vobject
     whitenoise
     zxcvbn
-  ] ++ beautifulsoup4.optional-dependencies.lxml ++ plugins;
+  ]
+  ++ beautifulsoup4.optional-dependencies.lxml
+  ++ django.optional-dependencies.argon2
+  ++ plugins;
 
-  passthru.optional-dependencies = {
+  optional-dependencies = {
     mysql = with python.pkgs; [
       mysqlclient
     ];
@@ -201,7 +201,7 @@ python.pkgs.buildPythonApplication rec {
     pytest-xdist
     pytestCheckHook
     responses
-  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+  ] ++ lib.flatten (lib.attrValues optional-dependencies);
 
   disabledTests = [
     # tries to run npm run i18n:extract
diff --git a/pkgs/by-name/pr/pretalx/plugins/downstream.nix b/pkgs/by-name/pr/pretalx/plugins/downstream.nix
index 074c84a90b031..ab94b50ac767d 100644
--- a/pkgs/by-name/pr/pretalx/plugins/downstream.nix
+++ b/pkgs/by-name/pr/pretalx/plugins/downstream.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "pretalx-downstream";
-  version = "1.2.0";
+  version = "1.3.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pretalx";
     repo = "pretalx-downstream";
     rev = "v${version}";
-    hash = "sha256-MzoK/tzf6ajZ/THIXyad/tfb3lsQD9k9J6aBfoP9ONo=";
+    hash = "sha256-xpacfU655vg6g1rD4uteeizj+Bll4fgI0AEddaGiCLE=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/by-name/pr/pretalx/plugins/media-ccc-de.nix b/pkgs/by-name/pr/pretalx/plugins/media-ccc-de.nix
index 91cb42f791e35..82bcf966e7d7b 100644
--- a/pkgs/by-name/pr/pretalx/plugins/media-ccc-de.nix
+++ b/pkgs/by-name/pr/pretalx/plugins/media-ccc-de.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "pretalx-media-ccc-de";
-  version = "1.2.1";
+  version = "1.3.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pretalx";
     repo = "pretalx-media-ccc-de";
     rev = "v${version}";
-    hash = "sha256-QCnZZpYjHxj92Dl2nRd4lXapufcqRmlVH6LEq0rzQ2U=";
+    hash = "sha256-Cr9qbkb1VOH2EtDLSA5jmLiCnn1ICdvHnmTugCvHLc0=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/by-name/pr/pretalx/plugins/pages.nix b/pkgs/by-name/pr/pretalx/plugins/pages.nix
index 3f8d254542a7c..67310f5387e5a 100644
--- a/pkgs/by-name/pr/pretalx/plugins/pages.nix
+++ b/pkgs/by-name/pr/pretalx/plugins/pages.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "pretalx-pages";
-  version = "1.4.0";
+  version = "1.5.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pretalx";
     repo = "pretalx-pages";
     rev = "v${version}";
-    hash = "sha256-Wzd3uf+mdoyeMCZ4ZYcPLGqlUWCqSL02eeKRubTiH00=";
+    hash = "sha256-wLMl+2hAJQksCyeBnXxMIFh1/Qkosm7PqByW6QxMsyg=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/by-name/pr/pretalx/plugins/public-voting.nix b/pkgs/by-name/pr/pretalx/plugins/public-voting.nix
index 49439ef92c51b..0d66725c72f47 100644
--- a/pkgs/by-name/pr/pretalx/plugins/public-voting.nix
+++ b/pkgs/by-name/pr/pretalx/plugins/public-voting.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "pretalx-public-voting";
-  version = "1.5.0";
+  version = "1.6.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pretalx";
     repo = "pretalx-public-voting";
     rev = "v${version}";
-    hash = "sha256-0dSnUVXtWEuu+m5PyFjjM2WVYE3+cNqZYlMkRQlI+2U=";
+    hash = "sha256-1zxJ1b2CHfV2AVAneUJxurZ0L3QoMzuBf8c2wrj7yBA=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/by-name/pr/pretalx/plugins/venueless.nix b/pkgs/by-name/pr/pretalx/plugins/venueless.nix
index 5d082c9abd6a7..12f98f1749770 100644
--- a/pkgs/by-name/pr/pretalx/plugins/venueless.nix
+++ b/pkgs/by-name/pr/pretalx/plugins/venueless.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "pretalx-venueless";
-  version = "1.3.0";
+  version = "1.4.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pretalx";
     repo = "pretalx-venueless";
     rev = "v${version}";
-    hash = "sha256-h8o5q1roFm8Bct/Qf8obIJYkkGPcz3WJ15quxZH48H8=";
+    hash = "sha256-llgRa18hxVoRSwU5UH6w4sE2W5ozCZm4Btbia2y0LbE=";
   };
 
   nativeBuildInputs = [ gettext ];
diff --git a/pkgs/by-name/pr/pretalx/plugins/vimeo.nix b/pkgs/by-name/pr/pretalx/plugins/vimeo.nix
index c823b7bce4b33..a9a3d7903f782 100644
--- a/pkgs/by-name/pr/pretalx/plugins/vimeo.nix
+++ b/pkgs/by-name/pr/pretalx/plugins/vimeo.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "pretalx-vimeo";
-  version = "2.2.0";
+  version = "2.3.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pretalx";
     repo = "pretalx-vimeo";
     rev = "v${version}";
-    hash = "sha256-CVP9C2wY51p8UDnzPpjzdVv5b9CSVanGbkaJiOo+9eY=";
+    hash = "sha256-ZlF/wWD5FaC4CfYIYvcbykPajoCOotmmaY+rQ0sGAo8=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/by-name/pr/pretalx/plugins/youtube.nix b/pkgs/by-name/pr/pretalx/plugins/youtube.nix
index 4424225c7b091..8d9d008c98373 100644
--- a/pkgs/by-name/pr/pretalx/plugins/youtube.nix
+++ b/pkgs/by-name/pr/pretalx/plugins/youtube.nix
@@ -7,14 +7,14 @@
 
 buildPythonPackage rec {
   pname = "pretalx-youtube";
-  version = "2.1.0";
+  version = "2.2.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "pretalx";
     repo = "pretalx-youtube";
     rev = "v${version}";
-    hash = "sha256-j3NZ+5QBbdpE2bxenqq5bW/42CWvQ9FqrKMmfYIe4Lo=";
+    hash = "sha256-cTxkFSK84NRn7Z2uWYBJ2NvQ3pOsUbdZDg6XE5yswPg=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/by-name/pr/pretix-banktool/package.nix b/pkgs/by-name/pr/pretix-banktool/package.nix
new file mode 100644
index 0000000000000..9628e2dbda72c
--- /dev/null
+++ b/pkgs/by-name/pr/pretix-banktool/package.nix
@@ -0,0 +1,48 @@
+{
+  lib,
+  python3Packages,
+  fetchFromGitHub,
+  fetchpatch2,
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "pretix-banktool";
+  version = "1.0.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pretix";
+    repo = "pretix-banktool";
+    rev = "v${version}";
+    hash = "sha256-vYHjotx1RujPV53Ei7bXAc3kL/3cwbWQB1T3sQ15MFA=";
+  };
+
+  patches = [
+    (fetchpatch2 {
+      # migrate to pyproject.toml, relax constraints
+      url = "https://github.com/pretix/pretix-banktool/commit/48a8125aba86d70f62c2b1f88bcf21c783402589.patch";
+      hash = "sha256-HbVzWoI5LlNyh0MZnPsLmzu7RMY8/BDfOwgDWMD+k5w=";
+    })
+  ];
+
+  build-system = with python3Packages; [ setuptools ];
+
+  dependencies = with python3Packages; [
+    click
+    fints
+    requests
+    mt-940
+  ];
+
+  doCheck = false; # no tests
+
+  pythonImportsCheck = [ "pretix_banktool" ];
+
+  meta = with lib; {
+    description = "Automatic bank data upload tool for pretix (with FinTS client)";
+    homepage = "https://github.com/pretix/pretix-banktool";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ hexa ];
+    mainProgram = "pretix-banktool";
+  };
+}
diff --git a/pkgs/by-name/pr/pretix/package.nix b/pkgs/by-name/pr/pretix/package.nix
index f4e744af6748f..4ce7fb727422d 100644
--- a/pkgs/by-name/pr/pretix/package.nix
+++ b/pkgs/by-name/pr/pretix/package.nix
@@ -11,7 +11,18 @@
 
 let
   python = python3.override {
+    self = python;
     packageOverrides = self: super: {
+      bleach = super.bleach.overridePythonAttrs (oldAttrs: rec {
+        version = "5.0.1";
+
+        src = fetchPypi {
+          pname = "bleach";
+          inherit version;
+          hash = "sha256-DQMlXEfrm9Lyaqm7fyEHcy5+j+GVyi9kcJ/POwpKCFw=";
+        };
+      });
+
       django = super.django_4;
 
       django-oauth-toolkit = super.django-oauth-toolkit.overridePythonAttrs (oldAttrs: {
@@ -34,17 +45,19 @@ let
       };
 
       pretix-plugin-build = self.callPackage ./plugin-build.nix { };
+
+      sentry-sdk = super.sentry-sdk_2;
     };
   };
 
   pname = "pretix";
-  version = "2024.5.0";
+  version = "2024.7.0";
 
   src = fetchFromGitHub {
     owner = "pretix";
     repo = "pretix";
     rev = "refs/tags/v${version}";
-    hash = "sha256-dLzCugbRQSGuOwe99a3WLMffisyvYWNRdSdcdW9knjY=";
+    hash = "sha256-08ykuFPcG3WvinJd9zadirXFqsMt9GbdOGU2CGbW7ls=";
   };
 
   npmDeps = buildNpmPackage {
@@ -52,7 +65,7 @@ let
     inherit version src;
 
     sourceRoot = "${src.name}/src/pretix/static/npm_dir";
-    npmDepsHash = "sha256-SEgAC3dmnxG1xM9QZQ/e+6NFOwXU3tXlbfZCzrAMFO0=";
+    npmDepsHash = "sha256-BfvKuwB5VLX09Lxji+EpMBvZeKTIQvptVtrHSRYY+14=";
 
     dontBuild = true;
 
@@ -74,6 +87,26 @@ python.pkgs.buildPythonApplication rec {
     # Discover pretix.plugin entrypoints during build and add them into
     # INSTALLED_APPS, so that their static files are collected.
     ./plugin-build.patch
+
+    # https://github.com/pretix/pretix/pull/4362
+    # Fix TOCTOU race in directory creation
+    ./pr4362.patch
+  ];
+
+  pythonRelaxDeps = [
+    "importlib-metadata"
+    "kombu"
+    "pillow"
+    "protobuf"
+    "python-bidi"
+    "requests"
+    "sentry-sdk"
+  ];
+
+  pythonRemoveDeps = [
+    "phonenumberslite" # we provide phonenumbers instead
+    "psycopg2-binary" # we provide psycopg2 instead
+    "vat-moss-forked" # we provide a patched vat-moss package
   ];
 
   postPatch = ''
@@ -86,19 +119,8 @@ python.pkgs.buildPythonApplication rec {
     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 "djangorestframework==3.15.*" djangorestframework \
-      --replace-fail "dnspython==2.6.*" dnspython \
-      --replace-fail "importlib_metadata==7.*" importlib_metadata \
-      --replace-fail "markdown==3.6" markdown \
-      --replace-fail "protobuf==5.27.*" protobuf \
-      --replace-fail "pycryptodome==3.20.*" pycryptodome \
-      --replace-fail "python-dateutil==2.9.*" python-dateutil \
-      --replace-fail "requests==2.32.*" "requests" \
-      --replace-fail "stripe==7.9.*" stripe
+      --replace-fail '"backend"' '"setuptools.build_meta"' \
+      --replace-fail 'backend-path = ["_build"]' ""
   '';
 
   build-system = with python.pkgs; [
@@ -226,6 +248,13 @@ python.pkgs.buildPythonApplication rec {
   disabledTests = [
     # unreliable around day changes
     "test_order_create_invoice"
+
+    # outdated translation files
+    # https://github.com/pretix/pretix/commit/c4db2a48b6ac81763fa67475d8182aee41c31376
+    "test_different_dates_spanish"
+    "test_same_day_spanish"
+    "test_same_month_spanish"
+    "test_same_year_spanish"
   ];
 
   preCheck = ''
diff --git a/pkgs/by-name/pr/pretix/plugins/default.nix b/pkgs/by-name/pr/pretix/plugins/default.nix
index 70e643705c008..a60316e521e48 100644
--- a/pkgs/by-name/pr/pretix/plugins/default.nix
+++ b/pkgs/by-name/pr/pretix/plugins/default.nix
@@ -10,4 +10,6 @@
   reluctant-stripe = callPackage ./reluctant-stripe.nix { };
 
   stretchgoals = callPackage ./stretchgoals.nix { };
+
+  zugferd = callPackage ./zugferd.nix { };
 }
diff --git a/pkgs/by-name/pr/pretix/plugins/zugferd.nix b/pkgs/by-name/pr/pretix/plugins/zugferd.nix
new file mode 100644
index 0000000000000..e96193a52b50e
--- /dev/null
+++ b/pkgs/by-name/pr/pretix/plugins/zugferd.nix
@@ -0,0 +1,53 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  pretix-plugin-build,
+  setuptools,
+  django,
+  drafthorse,
+  ghostscript_headless,
+}:
+
+buildPythonPackage rec {
+  pname = "pretix-zugferd";
+  version = "2.2.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "pretix";
+    repo = "pretix-zugferd";
+    rev = "v${version}";
+    hash = "sha256-ozFDNIA+0feHrHHvxcf+6Jh4L83svmPEE/rerd4Yim8=";
+  };
+
+  postPatch = ''
+    substituteInPlace pretix_zugferd/invoice.py \
+      --replace-fail 'fallback="gs"' 'fallback="${lib.getExe ghostscript_headless}"'
+  '';
+
+  pythonRelaxDeps = [ "drafthorse" ];
+
+  build-system = [
+    django
+    pretix-plugin-build
+    setuptools
+  ];
+
+  postBuild = ''
+    make
+  '';
+
+  dependencies = [ drafthorse ];
+
+  doCheck = false; # no tests
+
+  pythonImportsCheck = [ "pretix_zugferd" ];
+
+  meta = with lib; {
+    description = "Annotate pretix' invoices with ZUGFeRD data";
+    homepage = "https://github.com/pretix/pretix-zugferd";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/by-name/pr/pretix/pr4362.patch b/pkgs/by-name/pr/pretix/pr4362.patch
new file mode 100644
index 0000000000000..97d4a20c2239d
--- /dev/null
+++ b/pkgs/by-name/pr/pretix/pr4362.patch
@@ -0,0 +1,50 @@
+From 5688f3624005d02803f2a434db025f367b4963d3 Mon Sep 17 00:00:00 2001
+From: Martin Weinelt <hexa@darmstadt.ccc.de>
+Date: Thu, 1 Aug 2024 02:39:59 +0200
+Subject: [PATCH] Prevent race condition in directory creation
+
+Checking whether a path does not exist before trying to create it does
+not follow the Python paradigm of asking for forgiveness, rather than
+permission, and opens up a time-of-check to time-of-use race.
+---
+ src/pretix/settings.py | 17 +++++++++--------
+ 1 file changed, 9 insertions(+), 8 deletions(-)
+
+diff --git a/src/pretix/settings.py b/src/pretix/settings.py
+index 81ff644be..854187f05 100644
+--- a/src/pretix/settings.py
++++ b/src/pretix/settings.py
+@@ -37,6 +37,7 @@ import configparser
+ import logging
+ import os
+ import sys
++from contextlib import suppress
+ from json import loads
+ from urllib.parse import urlparse
+ 
+@@ -70,14 +71,14 @@ MEDIA_ROOT = os.path.join(DATA_DIR, 'media')
+ PROFILE_DIR = os.path.join(DATA_DIR, 'profiles')
+ CACHE_DIR = config.get('pretix', 'cachedir', fallback=os.path.join(DATA_DIR, 'cache'))
+ 
+-if not os.path.exists(DATA_DIR):
+-    os.mkdir(DATA_DIR)
+-if not os.path.exists(LOG_DIR):
+-    os.mkdir(LOG_DIR)
+-if not os.path.exists(MEDIA_ROOT):
+-    os.mkdir(MEDIA_ROOT)
+-if not os.path.exists(CACHE_DIR):
+-    os.mkdir(CACHE_DIR)
++def mkdir(path):
++    with suppress(FileExistsError):
++        os.mkdir(path)
++
++mkdir(DATA_DIR)
++mkdir(LOG_DIR)
++mkdir(MEDIA_ROOT)
++mkdir(CACHE_DIR)
+ 
+ if config.has_option('django', 'secret'):
+     SECRET_KEY = config.get('django', 'secret')
+-- 
+2.45.2
+
diff --git a/pkgs/by-name/pr/prettier-d-slim/package.nix b/pkgs/by-name/pr/prettier-d-slim/package.nix
index 3b92503d7423b..1f3938968fb21 100644
--- a/pkgs/by-name/pr/prettier-d-slim/package.nix
+++ b/pkgs/by-name/pr/prettier-d-slim/package.nix
@@ -23,6 +23,6 @@ buildNpmPackage rec {
     homepage = "https://github.com/mikew/prettier_d_slim";
     license = lib.licenses.mit;
     mainProgram = "prettier_d_slim";
-    maintainers = with lib.maintainers; [ ];
+    maintainers = [ ];
   };
 }
diff --git a/pkgs/by-name/pr/prettier-plugin-go-template/package.nix b/pkgs/by-name/pr/prettier-plugin-go-template/package.nix
new file mode 100644
index 0000000000000..79161f56c4819
--- /dev/null
+++ b/pkgs/by-name/pr/prettier-plugin-go-template/package.nix
@@ -0,0 +1,27 @@
+{
+  lib,
+  buildNpmPackage,
+  fetchFromGitHub,
+}:
+
+buildNpmPackage rec {
+  pname = "prettier-plugin-go-template";
+  version = "0-unstable-2023-07-26";
+
+  src = fetchFromGitHub {
+    owner = "NiklasPor";
+    repo = pname;
+    rev = "d91c82e1377b89592ea3365e7e5569688fbc7954";
+    hash = "sha256-3Tvh+OzqDTtzoaTp5dZpgEQiNA2Y2dbyq4SV9Od499A=";
+  };
+
+  npmDepsHash = "sha256-PpJnVZFRxpUHux2jIBDtyBS4qNo6IJY4kwTAq6stEVQ=";
+
+  meta = {
+    description = "Fixes prettier formatting for go templates";
+    mainProgram = "prettier-plugin-go-template";
+    homepage = "https://github.com/NiklasPor/prettier-plugin-go-template";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ jukremer ];
+  };
+}
diff --git a/pkgs/by-name/pr/prettierd/package.json b/pkgs/by-name/pr/prettierd/package.json
new file mode 100644
index 0000000000000..085e4ab73f7c3
--- /dev/null
+++ b/pkgs/by-name/pr/prettierd/package.json
@@ -0,0 +1,45 @@
+{
+  "name": "@fsouza/prettierd",
+  "version": "0.25.3",
+  "description": "prettier, as a daemon",
+  "bin": {
+    "prettierd": "./bin/prettierd"
+  },
+  "scripts": {
+    "prepare": "yarn build",
+    "build": "tsc -b",
+    "run": "node bin/prettierd",
+    "start": "node bin/prettierd start",
+    "prettier:check": "prettier --check .",
+    "prettier:fix": "prettier --write ."
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/fsouza/prettierd.git"
+  },
+  "author": "Francisco Souza",
+  "license": "ISC",
+  "bugs": {
+    "url": "https://github.com/fsouza/prettierd/issues"
+  },
+  "homepage": "https://github.com/fsouza/prettierd",
+  "devDependencies": {
+    "@types/node": "^20.12.7",
+    "@types/prettier": "^3.0.0",
+    "typescript": "^5.4.5"
+  },
+  "dependencies": {
+    "core_d": "^6.1.0",
+    "prettier": "^3.2.5"
+  },
+  "files": [
+    "bin",
+    "dist",
+    "LICENSE",
+    "README.md"
+  ],
+  "optionalDependencies": {
+    "@babel/parser": "^7.24.4",
+    "@typescript-eslint/typescript-estree": "^7.6.0"
+  }
+}
diff --git a/pkgs/by-name/pr/prettierd/package.nix b/pkgs/by-name/pr/prettierd/package.nix
new file mode 100644
index 0000000000000..1025a90fbd377
--- /dev/null
+++ b/pkgs/by-name/pr/prettierd/package.nix
@@ -0,0 +1,55 @@
+{
+  lib,
+  mkYarnPackage,
+  fetchFromGitHub,
+  makeWrapper,
+  nodejs,
+  fetchYarnDeps,
+}:
+mkYarnPackage rec {
+  pname = "prettierd";
+  version = "0.25.3";
+
+  src = fetchFromGitHub {
+    owner = "fsouza";
+    repo = "prettierd";
+    rev = "v${version}";
+    hash = "sha256-3lvFZ5/p+1kPnHIR2PlQtCY3SVo1rs8IuBigLaabxAE=";
+  };
+
+  offlineCache = fetchYarnDeps {
+    yarnLock = src + "/yarn.lock";
+    hash = "sha256-Ti2b102pzUKB6Xy3LwZ7DlrnW0cRscgNLTUIAKz+6Us=";
+  };
+
+  packageJSON = ./package.json;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildPhase = ''
+    runHook preBuild
+    export HOME=$(mktemp -d)
+    yarn --offline build
+    runHook postBuild
+  '';
+
+  # prettierd needs to be wrapped with nodejs so that it can be executed
+  postInstall = ''
+    wrapProgram "$out/bin/prettierd" --prefix PATH : "${nodejs}/bin"
+  '';
+
+  doDist = false;
+
+  meta = {
+    mainProgram = "prettierd";
+    description = "Prettier, as a daemon, for improved formatting speed";
+    homepage = "https://github.com/fsouza/prettierd";
+    license = lib.licenses.isc;
+    changelog = "https://github.com/fsouza/prettierd/blob/${src.rev}/CHANGELOG.md";
+    platforms = with lib.platforms; linux ++ darwin;
+    maintainers = with lib.maintainers; [
+      NotAShelf
+      n3oney
+    ];
+  };
+}
diff --git a/pkgs/by-name/pr/previewqt/package.nix b/pkgs/by-name/pr/previewqt/package.nix
new file mode 100644
index 0000000000000..f493f6ec3dab3
--- /dev/null
+++ b/pkgs/by-name/pr/previewqt/package.nix
@@ -0,0 +1,64 @@
+{
+  lib,
+  vips,
+  resvg,
+  mpv,
+  libraw,
+  imagemagick,
+  libdevil,
+  stdenv,
+  fetchFromGitLab,
+  cmake,
+  libarchive,
+  qt6Packages,
+  extra-cmake-modules,
+  exiv2,
+}:
+
+stdenv.mkDerivation rec {
+  pname = "previewqt";
+  version = "3.0";
+
+  src = fetchFromGitLab {
+    owner = "lspies";
+    repo = "previewqt";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-cDtqgezKGgSdhw8x1mM4cZ0H3SfUPEyWP6rRD+kRwXc=";
+  };
+
+  # can't find qtquick3d
+  strictDeps = false;
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+    qt6Packages.wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    exiv2
+    imagemagick
+    qt6Packages.poppler
+    qt6Packages.qtmultimedia
+    qt6Packages.qtquick3d
+    qt6Packages.qtsvg
+    qt6Packages.qttools
+    qt6Packages.qtwebengine
+    libarchive
+    libdevil
+    libraw
+    mpv
+    resvg
+    vips
+  ];
+
+  meta = {
+    description = "Qt-based file previewer";
+    homepage = "https://photoqt.org/previewqt";
+    changelog = "https://gitlab.com/lspies/previewqt/-/blob/v${version}/CHANGELOG";
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ eclairevoyant ];
+    mainProgram = "previewqt";
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/pr/primecount/package.nix b/pkgs/by-name/pr/primecount/package.nix
index d2b117138e73f..7a66f379965f3 100644
--- a/pkgs/by-name/pr/primecount/package.nix
+++ b/pkgs/by-name/pr/primecount/package.nix
@@ -1,30 +1,33 @@
-{ lib
-, cmake
-, fetchFromGitHub
-, primesieve
-, stdenv
+{
+  lib,
+  cmake,
+  fetchFromGitHub,
+  gitUpdater,
+  primesieve,
+  stdenv,
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "primecount";
-  version = "7.13";
+  version = "7.14";
 
   src = fetchFromGitHub {
     owner = "kimwalisch";
     repo = "primecount";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-VjsJjG2pSnDMVg3lY3cmpdnASeqClPjHUGY5wqupf2w=";
+    hash = "sha256-N4eENwYuf8ZR1JQyFtoWl6H3ITpGZVaOMEU3gx0f9yQ=";
   };
 
-  outputs = [ "out" "dev" "lib" "man" ];
-
-  nativeBuildInputs = [
-    cmake
+  outputs = [
+    "out"
+    "dev"
+    "lib"
+    "man"
   ];
 
-  buildInputs = [
-    primesieve
-  ];
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ primesieve ];
 
   strictDeps = true;
 
@@ -36,6 +39,13 @@ stdenv.mkDerivation (finalAttrs: {
     (lib.cmakeBool "BUILD_TESTS" true)
   ];
 
+  passthru = {
+    tests = {
+      inherit primesieve; # dependency
+    };
+    updateScript = gitUpdater { rev-prefix = "v"; };
+  };
+
   meta = {
     homepage = "https://github.com/kimwalisch/primecount";
     description = "Fast prime counting function implementations";
diff --git a/pkgs/by-name/pr/primesieve/package.nix b/pkgs/by-name/pr/primesieve/package.nix
index b5e2da37022d7..16b7bfe8801c9 100644
--- a/pkgs/by-name/pr/primesieve/package.nix
+++ b/pkgs/by-name/pr/primesieve/package.nix
@@ -1,22 +1,29 @@
-{ lib
-, cmake
-, fetchFromGitHub
-, stdenv
-, primecount
+{
+  lib,
+  cmake,
+  fetchFromGitHub,
+  gitUpdater,
+  stdenv,
+  primecount,
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "primesieve";
-  version = "12.3";
+  version = "12.4";
 
   src = fetchFromGitHub {
     owner = "kimwalisch";
     repo = "primesieve";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-jULYLJK3iwPKgWpdTEetmSz1Nv2md1XUfR9A9mTQu9M=";
+    hash = "sha256-3iVQsksnyw9KFBTYsmyZ6YxYICVq1GzOzemDBpqpU3M=";
   };
 
-  outputs = [ "out" "dev" "lib" "man" ];
+  outputs = [
+    "out"
+    "dev"
+    "lib"
+    "man"
+  ];
 
   nativeBuildInputs = [ cmake ];
 
@@ -26,6 +33,7 @@ stdenv.mkDerivation (finalAttrs: {
     tests = {
       inherit primecount; # dependent
     };
+    updateScript = gitUpdater { rev-prefix = "v"; };
   };
 
   meta = {
@@ -42,8 +50,7 @@ stdenv.mkDerivation (finalAttrs: {
     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 ]);
+    maintainers = lib.teams.sage.members;
     platforms = lib.platforms.unix;
   };
 })
diff --git a/pkgs/by-name/pr/prismlauncher/package.nix b/pkgs/by-name/pr/prismlauncher/package.nix
index c6ff6894389d5..bb08a19de3704 100644
--- a/pkgs/by-name/pr/prismlauncher/package.nix
+++ b/pkgs/by-name/pr/prismlauncher/package.nix
@@ -3,7 +3,8 @@
   stdenv,
   symlinkJoin,
   prismlauncher-unwrapped,
-  addOpenGLRunpath,
+  addDriverRunpath,
+  alsa-lib,
   flite,
   gamemode,
   glfw,
@@ -14,11 +15,13 @@
   jdk21,
   kdePackages,
   libGL,
+  libjack2,
   libpulseaudio,
   libusb1,
   makeWrapper,
   openal,
   pciutils,
+  pipewire,
   udev,
   vulkan-loader,
   xorg,
@@ -102,21 +105,28 @@ symlinkJoin {
       runtimeLibs =
         [
           # lwjgl
+          stdenv.cc.cc.lib
+          ## native versions
           glfw
-          libpulseaudio
-          libGL
           openal
-          stdenv.cc.cc.lib
 
-          vulkan-loader # VulkanMod's lwjgl
-
-          udev # oshi
+          ## openal
+          alsa-lib
+          libjack2
+          libpulseaudio
+          pipewire
 
+          ## glfw
+          libGL
           xorg.libX11
           xorg.libXext
           xorg.libXcursor
           xorg.libXrandr
           xorg.libXxf86vm
+
+          udev # oshi
+
+          vulkan-loader # VulkanMod's lwjgl
         ]
         ++ lib.optional textToSpeechSupport flite
         ++ lib.optional gamemodeSupport gamemode.lib
@@ -132,7 +142,7 @@ symlinkJoin {
     in
     [ "--prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}" ]
     ++ lib.optionals stdenv.isLinux [
-      "--set LD_LIBRARY_PATH ${addOpenGLRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}"
+      "--set LD_LIBRARY_PATH ${addDriverRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}"
       "--prefix PATH : ${lib.makeBinPath runtimePrograms}"
     ];
 
diff --git a/pkgs/by-name/pr/private-gpt/package.nix b/pkgs/by-name/pr/private-gpt/package.nix
index 1b717cc2bfb83..4912c42212c86 100644
--- a/pkgs/by-name/pr/private-gpt/package.nix
+++ b/pkgs/by-name/pr/private-gpt/package.nix
@@ -5,8 +5,10 @@
 python3Packages.toPythonApplication (python3Packages.private-gpt.overrideAttrs (oldAttrs: {
   nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ makeBinaryWrapper ];
 
-  passthru.cl100k_base = {
-    inherit (python3Packages.private-gpt.cl100k_base) tiktoken;
+  passthru = (oldAttrs.passthru or {}) // {
+    cl100k_base = {
+      inherit (python3Packages.private-gpt.cl100k_base) tiktoken;
+    };
   };
 
   postInstall = ''
diff --git a/pkgs/by-name/pr/process-cpp/package.nix b/pkgs/by-name/pr/process-cpp/package.nix
index 2a04e385c3254..eb9638e74ab1b 100644
--- a/pkgs/by-name/pr/process-cpp/package.nix
+++ b/pkgs/by-name/pr/process-cpp/package.nix
@@ -1,27 +1,28 @@
-{ lib
-, stdenv
-, fetchFromGitLab
-, testers
-, unstableGitUpdater
-, cmake
-, coreutils
-, boost
-, gtest
-, lomiri
-, properties-cpp
-, pkg-config
+{
+  lib,
+  stdenv,
+  fetchFromGitLab,
+  testers,
+  gitUpdater,
+  cmake,
+  coreutils,
+  boost,
+  gtest,
+  lomiri,
+  properties-cpp,
+  pkg-config,
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "process-cpp";
-  version = "3.0.1-unstable-2024-03-14";
+  version = "3.0.2";
 
   src = fetchFromGitLab {
     domain = "gitlab.com";
     owner = "ubports";
     repo = "development/core/lib-cpp/process-cpp";
-    rev = "7b0a829abcbcdd25d949e5f9e2c26bb985a58b31";
-    hash = "sha256-Az+lSJ7uVR4pAWvOeah5vFtIPb12eKp0nAFF1qsHZXA=";
+    rev = finalAttrs.version;
+    hash = "sha256-UCNmD5Ea2wnEwG9gkt88TaX0vfS4SCaIOPRMeNFx80Y=";
   };
 
   outputs = [
@@ -52,27 +53,29 @@ stdenv.mkDerivation (finalAttrs: {
     properties-cpp
   ];
 
-  checkInputs = [
-    gtest
-  ];
+  checkInputs = [ gtest ];
 
-  cmakeFlags = [
-    (lib.cmakeBool "BUILD_TESTING" finalAttrs.finalPackage.doCheck)
-  ];
+  cmakeFlags = [ (lib.cmakeBool "BUILD_TESTING" finalAttrs.finalPackage.doCheck) ];
 
   doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
 
   passthru = {
     tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
-    updateScript = unstableGitUpdater { };
+    updateScript = gitUpdater { };
   };
 
-  meta = with lib; {
+  meta = {
     description = "Simple convenience library for handling processes in C++11";
     homepage = "https://gitlab.com/ubports/development/core/lib-cpp/process-cpp";
-    license = with licenses; [ gpl3Only lgpl3Only ];
-    maintainers = with maintainers; [ onny OPNA2608 ];
-    platforms = platforms.linux;
+    license = with lib.licenses; [
+      gpl3Only
+      lgpl3Only
+    ];
+    maintainers = with lib.maintainers; [
+      onny
+      OPNA2608
+    ];
+    platforms = lib.platforms.linux;
     pkgConfigModules = [ "process-cpp" ];
   };
 })
diff --git a/pkgs/by-name/pr/progress-tracker/package.nix b/pkgs/by-name/pr/progress-tracker/package.nix
new file mode 100644
index 0000000000000..f67d334d54406
--- /dev/null
+++ b/pkgs/by-name/pr/progress-tracker/package.nix
@@ -0,0 +1,58 @@
+{
+  lib,
+  catch2_3,
+  cmake,
+  fetchFromGitHub,
+  gtkmm4,
+  libadwaita,
+  pcre2,
+  pkg-config,
+  stdenv,
+  tinyxml-2,
+  wrapGAppsHook4,
+}:
+stdenv.mkDerivation (finalAttrs: {
+  pname = "progress-tracker";
+  version = "1.6";
+
+  src = fetchFromGitHub {
+    owner = "smolBlackCat";
+    repo = "progress-tracker";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-uUw3+BJWRoCT1VH27SZBEBRsEbbpaP4IahKonfSOyeM=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    wrapGAppsHook4
+  ];
+
+  buildInputs = [
+    catch2_3
+    gtkmm4
+    libadwaita
+    pcre2
+    tinyxml-2
+  ];
+
+  postPatch = ''
+    substituteInPlace src/CMakeLists.txt \
+      --replace-fail "/usr/bin/" "${placeholder "out"}/bin/"
+
+    substituteInPlace po/CMakeLists.txt \
+      --replace-fail "/usr/share/" "${placeholder "out"}/share/"
+
+    substituteInPlace data/CMakeLists.txt \
+      --replace-fail "/usr/share/" "${placeholder "out"}/share/"
+  '';
+
+  meta = {
+    description = "Simple kanban-style task organiser";
+    homepage = "https://github.com/smolBlackCat/progress-tracker";
+    license = lib.licenses.mit;
+    mainProgram = "progress";
+    maintainers = with lib.maintainers; [ Guanran928 ];
+    platforms = lib.platforms.linux;
+  };
+})
diff --git a/pkgs/by-name/pr/prometheus-borgmatic-exporter/package.nix b/pkgs/by-name/pr/prometheus-borgmatic-exporter/package.nix
new file mode 100644
index 0000000000000..ad02307ffa0e2
--- /dev/null
+++ b/pkgs/by-name/pr/prometheus-borgmatic-exporter/package.nix
@@ -0,0 +1,47 @@
+{
+  lib,
+  fetchFromGitHub,
+  python3Packages,
+  borgmatic,
+}:
+python3Packages.buildPythonApplication rec {
+  pname = "prometheus-borgmatic-exporter";
+  version = "0.2.5";
+    pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "maxim-mityutko";
+    repo = "borgmatic-exporter";
+    rev = "v${version}";
+    hash = "sha256-SgP1utu4Eqs9214pYOT9wP0Ms7AUQH1A3czQF8+qBRo=";
+  };
+
+  nativeCheckInputs = with python3Packages; [
+    pytestCheckHook
+    pytest-mock
+  ];
+
+  buildInputs = [python3Packages.poetry-core];
+
+  propagatedBuildInputs =
+    [ borgmatic ]
+    ++ (with python3Packages; [
+      flask
+      arrow
+      click
+      loguru
+      pretty-errors
+      prometheus-client
+      timy
+      waitress
+    ]);
+
+  meta = with lib; {
+    description = "Prometheus exporter for Borgmatic";
+    homepage = "https://github.com/maxim-mityutko/borgmatic-exporter";
+    license = licenses.mit;
+    maintainers = with maintainers; [ flandweber ];
+    mainProgram = "borgmatic-exporter";
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/by-name/pr/prometheus-deluge-exporter/package.nix b/pkgs/by-name/pr/prometheus-deluge-exporter/package.nix
new file mode 100644
index 0000000000000..4adcaf0a747d6
--- /dev/null
+++ b/pkgs/by-name/pr/prometheus-deluge-exporter/package.nix
@@ -0,0 +1,34 @@
+{ lib
+, python3
+, fetchFromGitHub
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "deluge-exporter";
+  version = "2.4.0-unstable-2024-06-02";
+
+  src = fetchFromGitHub {
+    owner = "ibizaman";
+    repo = "deluge_exporter";
+    rev = "8d446c8cba4a324aa052e66c115121b23adc970f";
+    hash = "sha256-1brLWx6IEGffcvHPCkz10k9GCNQIXXJ9PYZuEzlKHTA=";
+  };
+
+  propagatedBuildInputs = with python3.pkgs; [
+    deluge-client
+    loguru
+    prometheus-client
+  ];
+
+  pythonImportsCheck = [
+    "deluge_exporter"
+  ];
+
+  meta = with lib; {
+    description = "Prometheus exporter for Deluge";
+    homepage = "https://github.com/ibizaman/deluge_exporter";
+    license = licenses.isc;
+    maintainers = with maintainers; [ ibizaman ];
+    mainProgram = "deluge-exporter";
+  };
+}
diff --git a/pkgs/by-name/pr/prometheus-jmx-javaagent/package.nix b/pkgs/by-name/pr/prometheus-jmx-javaagent/package.nix
index 179acfe520ace..49ca4c9d6d840 100644
--- a/pkgs/by-name/pr/prometheus-jmx-javaagent/package.nix
+++ b/pkgs/by-name/pr/prometheus-jmx-javaagent/package.nix
@@ -10,10 +10,10 @@ stdenv.mkDerivation (
   in
   {
     pname = "jmx-prometheus-javaagent";
-    version = "0.20.0";
+    version = "1.0.1";
     src = fetchurl {
       url = "mirror://maven/io/prometheus/jmx/jmx_prometheus_javaagent/${finalAttrs.version}/${jarName}";
-      sha256 = "sha256-i2ftQEhdR1ZIw20R0hRktIRAb4X6+RKzNj9xpqeGEyA=";
+      sha256 = "sha256-fWH3N/1mFhDMwUrqeXZPqh6pSjQMvI8AKbPS7eo9gME=";
     };
 
     dontUnpack = true;
diff --git a/pkgs/by-name/pr/prometheus-node-exporter/package.nix b/pkgs/by-name/pr/prometheus-node-exporter/package.nix
new file mode 100644
index 0000000000000..7ddf75a893aab
--- /dev/null
+++ b/pkgs/by-name/pr/prometheus-node-exporter/package.nix
@@ -0,0 +1,44 @@
+{ lib, stdenv, buildGoModule, fetchFromGitHub, nixosTests, darwin }:
+
+buildGoModule rec {
+  pname = "node_exporter";
+  version = "1.8.2";
+  rev = "v${version}";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "prometheus";
+    repo = "node_exporter";
+    hash = "sha256-b2uior67RcCCpUE+qx55G1eWiT2wWDVsnosSH9fd3/I=";
+  };
+
+  vendorHash = "sha256-sly8AJk+jNZG8ijTBF1Pd5AOOUJJxIG8jHwBUdlt8fM=";
+
+  # FIXME: tests fail due to read-only nix store
+  doCheck = false;
+
+  buildInputs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ CoreFoundation IOKit ]);
+
+  excludedPackages = [ "docs/node-mixin" ];
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/prometheus/common/version.Version=${version}"
+    "-X github.com/prometheus/common/version.Revision=${rev}"
+    "-X github.com/prometheus/common/version.Branch=unknown"
+    "-X github.com/prometheus/common/version.BuildUser=nix@nixpkgs"
+    "-X github.com/prometheus/common/version.BuildDate=unknown"
+  ];
+
+  passthru.tests = { inherit (nixosTests.prometheus-exporters) node; };
+
+  meta = with lib; {
+    description = "Prometheus exporter for machine metrics";
+    mainProgram = "node_exporter";
+    homepage = "https://github.com/prometheus/node_exporter";
+    changelog = "https://github.com/prometheus/node_exporter/blob/v${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ benley fpletz globin Frostman ];
+  };
+}
diff --git a/pkgs/by-name/pr/prometheus-restic-exporter/package.nix b/pkgs/by-name/pr/prometheus-restic-exporter/package.nix
index 603650a66ab63..d2dc4875282f0 100644
--- a/pkgs/by-name/pr/prometheus-restic-exporter/package.nix
+++ b/pkgs/by-name/pr/prometheus-restic-exporter/package.nix
@@ -8,13 +8,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "prometheus-restic-exporter";
-  version = "1.5.0";
+  version = "1.6.0";
 
   src = fetchFromGitHub {
     owner = "ngosang";
     repo = "restic-exporter";
     rev = version;
-    hash = "sha256-SC2ZCIQ33RaFI9+l/WI6edNzGEtsxJ2bBdeGNMHuyqY=";
+    hash = "sha256-gXiEts0EY9H01+rs+2o+cbVENotM33uhcQiGDtroSU4=";
   };
 
   buildInputs = [
diff --git a/pkgs/by-name/pr/prometheus-squid-exporter/package.nix b/pkgs/by-name/pr/prometheus-squid-exporter/package.nix
index 1c9098997010c..217449b85bb40 100644
--- a/pkgs/by-name/pr/prometheus-squid-exporter/package.nix
+++ b/pkgs/by-name/pr/prometheus-squid-exporter/package.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "squid-exporter";
-  version = "1.11.0";
+  version = "1.12.0";
 
   src = fetchFromGitHub {
     owner = "boynux";
     repo = "squid-exporter";
     rev = "v${version}";
-    sha256 = "sha256-43f6952IqUHoB5CN0p5R5J/sMKbTe2msF9FGqykwMBo=";
+    sha256 = "sha256-low1nIL7FbIYfIP7KWPskAQ50Hh+d7JI+ryYoR+mP10=";
   };
 
-  vendorHash = null;
+  vendorHash = "sha256-0BNhjNveUDd0+X0do4Md58zJjXe3+KN27MPEviNuF3g=";
 
   meta = {
     description = "Squid Prometheus exporter";
diff --git a/pkgs/by-name/pr/promql-cli/package.nix b/pkgs/by-name/pr/promql-cli/package.nix
new file mode 100644
index 0000000000000..d5188e83f2935
--- /dev/null
+++ b/pkgs/by-name/pr/promql-cli/package.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "promql-cli";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "nalbury";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-EV63fdG+GF+kVLH2TxHPhRcUU5xBvkW5bhHC1lEoj84=";
+  };
+
+  vendorHash = "sha256-jhNll04xGaxS6NJTh4spSW9zPrff8jk5OEQiRevPQwU=";
+
+  ldflags = [ "-s" "-w" ];
+
+  postInstall = ''
+    mv -v $out/bin/promql-cli $out/bin/promql
+  '';
+
+  meta = with lib; {
+    description = "Command-line tool to query a Prometheus server with PromQL and visualize the output";
+    homepage = "https://github.com/nalbury/promql-cli";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ arikgrahl ];
+    mainProgram = "promql";
+  };
+}
diff --git a/pkgs/by-name/pr/protege/package.nix b/pkgs/by-name/pr/protege/package.nix
index f6d22a08e2f57..efb34e4def488 100644
--- a/pkgs/by-name/pr/protege/package.nix
+++ b/pkgs/by-name/pr/protege/package.nix
@@ -8,10 +8,7 @@
 , maven
 }:
 
-let
-  mvn = maven.override { jdk = jdk11; };
-in
-mvn.buildMavenPackage rec {
+maven.buildMavenPackage rec {
   pname = "protege";
   version = "5.6.4";
 
@@ -22,6 +19,7 @@ mvn.buildMavenPackage rec {
     hash = "sha256-Q3MHa7nCeF31n7JPltcemFBc/sJwGA9Ev0ymjQhY/U0=";
   };
 
+  mvnJdk = jdk11;
   mvnHash = "sha256-kemP2gDv1CYuaoK0fwzBxdLTusarPasf2jCDQj/HPYE=";
 
   patches = [
diff --git a/pkgs/by-name/pr/proto/package.nix b/pkgs/by-name/pr/proto/package.nix
index 3afa04ec788a7..d108ed652b101 100644
--- a/pkgs/by-name/pr/proto/package.nix
+++ b/pkgs/by-name/pr/proto/package.nix
@@ -10,16 +10,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "proto";
-  version = "0.37.1";
+  version = "0.38.3";
 
   src = fetchFromGitHub {
     owner = "moonrepo";
-    repo = pname;
+    repo = "proto";
     rev = "v${version}";
-    hash = "sha256-IqXxjR+M1OCRKUA2HCT6WQvdBMOa0efT8m+drhyQCoE=";
+    hash = "sha256-o/du9XmiS7U5ypm6osQtVTjrJY60iLCkJ4DWCYOeIoY=";
   };
 
-  cargoHash = "sha256-NnTiT1jLMo9EfYau+U0FiAC+V67GnoI90vSsotwniio=";
+  cargoHash = "sha256-Z0XPouvv6eR9eKLQurI/UGSiRZyGUo/x1c/XbcJlO5A=";
 
   buildInputs = lib.optionals stdenv.isDarwin [
     darwin.apple_sdk.frameworks.SystemConfiguration
@@ -33,7 +33,7 @@ rustPlatform.buildRustPackage rec {
 
   postInstall = ''
     # proto looks up a proto-shim executable file in $PROTO_LOOKUP_DIR
-    wrapProgram $out/bin/${pname} \
+    wrapProgram $out/bin/proto \
       --set PROTO_LOOKUP_DIR $out/bin
   '';
 
diff --git a/pkgs/by-name/pr/protoc-gen-elixir/package.nix b/pkgs/by-name/pr/protoc-gen-elixir/package.nix
new file mode 100644
index 0000000000000..8e38f3317646d
--- /dev/null
+++ b/pkgs/by-name/pr/protoc-gen-elixir/package.nix
@@ -0,0 +1,44 @@
+{
+  beamPackages,
+  fetchFromGitHub,
+  lib,
+}:
+beamPackages.mixRelease rec {
+  pname = "protoc-gen-elixir";
+  version = "0.12.0";
+
+  src = fetchFromGitHub {
+    owner = "elixir-protobuf";
+    repo = "protobuf";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-wLU3iM9jI/Zc96/HfPUjNvjteGryWos6IobIb/4zqpw=";
+  };
+
+  mixFodDeps = beamPackages.fetchMixDeps {
+    inherit version src;
+    pname = "protoc-gen-elixir-deps";
+
+    hash = "sha256-H7yiBHoxuiqWcNbWwPU5X0Nnv8f6nM8z/ZAfZAGPZjE=";
+  };
+
+  postBuild = ''
+    mix do escript.build
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    cp protoc-gen-elixir $out/bin
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "A protoc plugin to generate Elixir code";
+    mainProgram = "protoc-gen-elixir";
+    homepage = "https://github.com/elixir-protobuf/protobuf";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ mattpolzin ];
+  };
+}
diff --git a/pkgs/by-name/pr/protoc-gen-es/package.nix b/pkgs/by-name/pr/protoc-gen-es/package.nix
index 4b357e4705503..fe36c239a8a7e 100644
--- a/pkgs/by-name/pr/protoc-gen-es/package.nix
+++ b/pkgs/by-name/pr/protoc-gen-es/package.nix
@@ -7,20 +7,20 @@
 
 buildNpmPackage rec {
   pname = "protoc-gen-es";
-  version = "1.10.0";
+  version = "2.0.0";
 
   src = fetchFromGitHub {
     owner = "bufbuild";
     repo = "protobuf-es";
     rev = "refs/tags/v${version}";
-    hash = "sha256-bHl8gqNrTm1+Cnj43RWmrLDUz+G11C4gprEiNOpyOdQ=";
+    hash = "sha256-foPt++AZjBfqKepzi2mKXB7zbpCqjmPftN9wyk5Yk8g=";
 
     postFetch = ''
       ${lib.getExe npm-lockfile-fix} $out/package-lock.json
     '';
   };
 
-  npmDepsHash = "sha256-ozkkakfSBycu83gTs8Orhm5Tg8kRSrF/vMJxVnPjhIw=";
+  npmDepsHash = "sha256-4m3xeiid+Ag9l1qNoBH08hu3wawWfNw1aqeniFK0Byc=";
 
   npmWorkspace = "packages/protoc-gen-es";
 
diff --git a/pkgs/by-name/pr/protoc-gen-js/package.nix b/pkgs/by-name/pr/protoc-gen-js/package.nix
index 08fb3345fedca..78d03e9b2b7be 100644
--- a/pkgs/by-name/pr/protoc-gen-js/package.nix
+++ b/pkgs/by-name/pr/protoc-gen-js/package.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, buildBazelPackage, bazel_6, fetchFromGitHub, darwin }:
+{ stdenv, lib, buildBazelPackage, bazel_6, fetchFromGitHub, cctools }:
 
 buildBazelPackage rec {
   pname = "protoc-gen-js";
@@ -17,7 +17,7 @@ buildBazelPackage rec {
   removeRulesCC = false;
   removeLocalConfigCC = false;
 
-  LIBTOOL = lib.optionalString stdenv.isDarwin "${darwin.cctools}/bin/libtool";
+  LIBTOOL = lib.optionalString stdenv.isDarwin "${cctools}/bin/libtool";
 
   fetchAttrs.sha256 = "sha256-WOBlZ0XNrl5UxIaSDxZeOfzS2a8ZkrKdTLKHBDC9UNQ=";
 
diff --git a/pkgs/by-name/pr/proton-ge-bin/package.nix b/pkgs/by-name/pr/proton-ge-bin/package.nix
index 186943dd9dca1..1d31e09525995 100644
--- a/pkgs/by-name/pr/proton-ge-bin/package.nix
+++ b/pkgs/by-name/pr/proton-ge-bin/package.nix
@@ -1,18 +1,22 @@
-{ lib
-, stdenvNoCC
-, fetchzip
-, writeScript
+{
+  lib,
+  stdenvNoCC,
+  fetchzip,
+  writeScript,
 }:
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "proton-ge-bin";
-  version = "GE-Proton9-7";
+  version = "GE-Proton9-11";
 
   src = fetchzip {
     url = "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/${finalAttrs.version}/${finalAttrs.version}.tar.gz";
-    hash = "sha256-/FXdyPuCe6rD5HoMOHPVlwRXu3DMJ3lEOnRloYZMA8s=";
+    hash = "sha256-OGsgR56R/MaFxahsb/42kA9CEexGDF/aTZlyf6v8tXo=";
   };
 
-  outputs = [ "out" "steamcompattool" ];
+  outputs = [
+    "out"
+    "steamcompattool"
+  ];
 
   buildCommand = ''
     runHook preBuild
@@ -50,7 +54,10 @@ stdenvNoCC.mkDerivation (finalAttrs: {
     '';
     homepage = "https://github.com/GloriousEggroll/proton-ge-custom";
     license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ NotAShelf shawn8901 ];
+    maintainers = with lib.maintainers; [
+      NotAShelf
+      shawn8901
+    ];
     platforms = [ "x86_64-linux" ];
     sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
   };
diff --git a/pkgs/by-name/pr/proton-pass/package.nix b/pkgs/by-name/pr/proton-pass/package.nix
index 1d22e7a5d5ba8..58d26335599a9 100644
--- a/pkgs/by-name/pr/proton-pass/package.nix
+++ b/pkgs/by-name/pr/proton-pass/package.nix
@@ -8,11 +8,11 @@
 }:
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "proton-pass";
-  version = "1.18.0";
+  version = "1.20.2";
 
   src = fetchurl {
     url = "https://proton.me/download/PassDesktop/linux/x64/ProtonPass_${finalAttrs.version}.deb";
-    hash = "sha256-dP6mXa5KOK35T3LCL/51/wi/dScqNj6bNYFOl4lCbcY=";
+    hash = "sha256-4QSBKVnEH7yDXwqY+29/a+yWv89i/TVCYO26V95KA4s=";
   };
 
   dontConfigure = true;
diff --git a/pkgs/by-name/pr/protonmail-desktop/package.nix b/pkgs/by-name/pr/protonmail-desktop/package.nix
index 3a500fe0c7698..2d937677045d6 100644
--- a/pkgs/by-name/pr/protonmail-desktop/package.nix
+++ b/pkgs/by-name/pr/protonmail-desktop/package.nix
@@ -10,27 +10,33 @@
 
 let
   mainProgram = "proton-mail";
+  srcHashes = {
+    # Upstream info: It's intended to stay like this in further releases
+    # https://github.com/NixOS/nixpkgs/pull/326152#discussion_r1679558135
+    universal-darwin = "sha256-6b+CNCvrkIA1CvSohSJZq/veZZNsA3lyhVv5SsBlJlw=";
+    x86_64-linux = "sha256-v8ufnQQEqTT5cr7fq8Fozje/NDlBzaCeKIzE6yU/biE=";
+  };
+
 in
 stdenv.mkDerivation rec {
   pname = "protonmail-desktop";
-  version = "1.0.4";
+  # Upstream info: "v"-prefix got dropped
+  version = "1.0.6";
 
-  src =
-    {
-      "x86_64-linux" = fetchurl {
-        url = "https://github.com/ProtonMail/inbox-desktop/releases/download/v${version}/proton-mail_${version}_amd64.deb";
-        hash = "sha256-KY/rjiJozOQW27FYljy5N1VKuKroJz3V485DPaH01JY=";
-      };
-      "x86_64-darwin" = fetchurl {
-        url = "https://github.com/ProtonMail/inbox-desktop/releases/download/v${version}/Proton.Mail-darwin-x64-${version}.zip";
-        hash = "sha256-I5Yj1JR3DaAmC6WKI4X/d/q9rvmsck9SE3Mx3AY6yvU=";
-      };
-      "aarch64-darwin" = fetchurl {
-        url = "https://github.com/ProtonMail/inbox-desktop/releases/download/v${version}/Proton.Mail-darwin-arm64-${version}.zip";
-        hash = "sha256-j1F8hhLSq/C1WQXGrYnvFK8nNz4qwoA1ohNzPsS3tiY=";
-      };
-    }
-    .${stdenv.hostPlatform.system};
+  src = fetchurl {
+    url =
+      if stdenv.isDarwin then
+        "https://github.com/ProtonMail/inbox-desktop/releases/download/${version}/Proton.Mail-darwin-universal-${version}.zip"
+      else
+        "https://github.com/ProtonMail/inbox-desktop/releases/download/${version}/proton-mail_${version}_amd64.deb";
+    sha256 =
+      {
+        x86_64-linux = srcHashes.x86_64-linux;
+        x86_64-darwin = srcHashes.universal-darwin;
+        aarch64-darwin = srcHashes.universal-darwin;
+      }
+      .${stdenv.hostPlatform.system} or (throw "unsupported system ${stdenv.hostPlatform.system}");
+  };
 
   sourceRoot = lib.optionalString stdenv.isDarwin ".";
 
@@ -42,18 +48,25 @@ stdenv.mkDerivation rec {
   ] ++ lib.optional stdenv.isLinux dpkg ++ lib.optional stdenv.isDarwin unzip;
 
   installPhase =
-    lib.optionalString stdenv.isLinux ''
-      runHook preInstall
-      mkdir -p $out
-      cp -r usr/share/ $out/
-      cp -r usr/lib/proton-mail/resources/app.asar $out/share/
-      runHook postInstall
+    let
+      darwin = ''
+        mkdir -p $out/{Applications,bin}
+        cp -r "Proton Mail.app" $out/Applications/
+        makeWrapper $out/Applications/"Proton Mail.app"/Contents/MacOS/Proton\ Mail $out/bin/protonmail-desktop
+      '';
+      linux = ''
+        runHook preInstall
+        mkdir -p $out
+        cp -r usr/share/ $out/
+        cp -r usr/lib/proton-mail/resources/app.asar $out/share/
+      '';
+
+    in
     ''
-    + lib.optionalString stdenv.isDarwin ''
       runHook preInstall
-      mkdir -p $out/{Applications,bin}
-      cp -r "Proton Mail.app" $out/Applications/
-      makeWrapper $out/Applications/"Proton Mail.app"/Contents/MacOS/Proton\ Mail $out/bin/protonmail-desktop
+
+      ${if stdenv.isDarwin then darwin else linux}
+
       runHook postInstall
     '';
 
@@ -66,17 +79,23 @@ stdenv.mkDerivation rec {
       --inherit-argv0
   '';
 
-  meta = with lib; {
+  passthru.updateScript = ./update.sh;
+
+  meta = {
     description = "Desktop application for Mail and Calendar, made with Electron";
     homepage = "https://github.com/ProtonMail/inbox-desktop";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [
       rsniezek
       sebtm
       matteopacini
     ];
-    platforms = [ "x86_64-linux" ] ++ platforms.darwin;
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    platforms = [
+      "x86_64-linux"
+      "x86_64-darwin"
+      "aarch64-darwin"
+    ];
+    sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
     inherit mainProgram;
   };
 }
diff --git a/pkgs/by-name/pr/protonmail-desktop/update.sh b/pkgs/by-name/pr/protonmail-desktop/update.sh
new file mode 100755
index 0000000000000..4b1a10f177386
--- /dev/null
+++ b/pkgs/by-name/pr/protonmail-desktop/update.sh
@@ -0,0 +1,29 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p common-updater-scripts jq
+
+# shellcheck disable=SC1008
+
+set -eu -o pipefail
+
+latestVersion=$(curl https://api.github.com/repos/ProtonMail/inbox-desktop/releases/latest | jq -r '.tag_name')
+
+declare -A platforms
+platforms[x86_64-linux]="amd64"
+platforms[x86_64-darwin]="universal"
+
+for platform in "${!platforms[@]}"
+do
+  arch=${platforms[$platform]}
+  os=$(echo "$platform" | cut -d "-" -f2)
+
+  if [[ "$os" == "linux" ]]; then
+    downloadUrl="https://github.com/ProtonMail/inbox-desktop/releases/download/${latestVersion}/proton-mail_${latestVersion}_${arch}.deb"
+  else
+    downloadUrl="https://github.com/ProtonMail/inbox-desktop/releases/download/${latestVersion}/Proton.Mail-${os}-${arch}-${latestVersion}.zip"
+  fi
+  echo "$downloadUrl"
+
+  latestSha=$(nix store prefetch-file "$downloadUrl" --json | jq -r '.hash')
+
+  update-source-version "protonmail-desktop" "$latestVersion" "$latestSha" --system="$platform" --ignore-same-version --file=./pkgs/by-name/pr/protonmail-desktop/package.nix
+done
diff --git a/pkgs/by-name/pr/protonplus/package.nix b/pkgs/by-name/pr/protonplus/package.nix
index ed74777fedecc..b6754c63a4265 100644
--- a/pkgs/by-name/pr/protonplus/package.nix
+++ b/pkgs/by-name/pr/protonplus/package.nix
@@ -20,13 +20,13 @@
 }:
 stdenv.mkDerivation (finalAttrs: {
   pname = "protonplus";
-  version = "0.4.10";
+  version = "0.4.13";
 
   src = fetchFromGitHub {
     owner = "Vysp3r";
     repo = "protonplus";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-dKhGXpsBCZBNNJRAjzSvP0B/3DbS9wRdhTS4WL2NZjE=";
+    hash = "sha256-eIW30Tl/vOLXlUXiN3lAcww7Ipkfshzilb9ntxjF8C0=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/pr/prowler/package.nix b/pkgs/by-name/pr/prowler/package.nix
index cf843d8ab1c75..98c1ddfd34f71 100644
--- a/pkgs/by-name/pr/prowler/package.nix
+++ b/pkgs/by-name/pr/prowler/package.nix
@@ -6,41 +6,19 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "prowler";
-  version = "3.15.0";
+  version = "3.16.11";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "prowler-cloud";
     repo = "prowler";
     rev = "refs/tags/${version}";
-    hash = "sha256-7aWWaGdHTveFwXsFNj4+tjX5g83/nD77jLAOrDOw8JE=";
+    hash = "sha256-cBqPD5lOhaMXh4OKo7+mERU3YjRU1NiRzSbnKFR6+1I=";
   };
 
-  pythonRelaxDeps = [
-    "azure-identity"
-    "azure-keyvault-keys"
-    "azure-mgmt-compute"
-    "azure-mgmt-containerservice"
-    "azure-mgmt-network"
-    "azure-mgmt-security"
-    "azure-mgmt-storage"
-    "azure-storage-blob"
-    "boto3"
-    "botocore"
-    "google-api-python-client"
-    "jsonschema"
-    "pydantic"
-    "pydantic"
-    "slack-sdk"
-  ];
-
-  nativeBuildInputs = with python3.pkgs; [
-    pythonRelaxDepsHook
-  ];
+  pythonRelaxDeps = true;
 
-  build-system = with python3.pkgs; [
-    poetry-core
-  ];
+  build-system = with python3.pkgs; [ poetry-core ];
 
   dependencies = with python3.pkgs; [
     alive-progress
@@ -73,10 +51,12 @@ python3.pkgs.buildPythonApplication rec {
     msgraph-sdk
     msrestazure
     pydantic_1
+    pytz
     schema
     shodan
     slack-sdk
     tabulate
+    tzlocal
   ];
 
   pythonImportsCheck = [ "prowler" ];
diff --git a/pkgs/by-name/pr/prox/package.nix b/pkgs/by-name/pr/prox/package.nix
index ef7b588ea51fe..7a92dc2ab56db 100644
--- a/pkgs/by-name/pr/prox/package.nix
+++ b/pkgs/by-name/pr/prox/package.nix
@@ -24,7 +24,7 @@ buildGoModule rec {
 
   meta = with lib; {
     homepage = "https://github.com/fgrosse/prox";
-    description = "Process runner for Procfile-based applications ";
+    description = "Process runner for Procfile-based applications";
     mainProgram = "prox";
     license = licenses.bsd2;
     maintainers = with maintainers; [ lucperkins ];
diff --git a/pkgs/by-name/pr/proxsuite/package.nix b/pkgs/by-name/pr/proxsuite/package.nix
new file mode 100644
index 0000000000000..dcaf8bc6f7f23
--- /dev/null
+++ b/pkgs/by-name/pr/proxsuite/package.nix
@@ -0,0 +1,101 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  fetchpatch,
+  cereal,
+  cmake,
+  doxygen,
+  eigen,
+  jrl-cmakemodules,
+  simde,
+  matio,
+  pythonSupport ? false,
+  python3Packages,
+}:
+stdenv.mkDerivation (finalAttrs: {
+  pname = "proxsuite";
+  version = "0.6.6";
+
+  src = fetchFromGitHub {
+    owner = "simple-robotics";
+    repo = "proxsuite";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-3kzFYADk3sCMU827KowilPlmOqgv69DJ3mOb7623Qdg=";
+  };
+
+  patches = [
+    # Allow use of system jrl-cmakemodules
+    # This was merged upstream, and can be removed on next release
+    (fetchpatch {
+      url = "https://github.com/Simple-Robotics/proxsuite/pull/334/commits/2bcadd4993a9940c545136faa71bf1e97a972735.patch";
+      hash = "sha256-BPtwogSwSXcEd5FM4eTTCq6LpGWvQ1SOCFmv/GVhl18=";
+    })
+    # Allow use of system cereal
+    # This was merged upstream, and can be removed on next release
+    (fetchpatch {
+      url = "https://github.com/Simple-Robotics/proxsuite/pull/334/commits/878337c6284c9fd73b19f1f80d5fa802def8cdc6.patch";
+      hash = "sha256-+HWYHLGtygjlvjM+FSD9WFDIwO+qPLlzci+7q42bo0I=";
+    })
+    # Allow use of system pybind11
+    # upstream will move to nanobind for next release, so this can be dismissed
+    (fetchpatch {
+      url = "https://github.com/Simple-Robotics/proxsuite/pull/337/commits/bbed9bdfb214da7c6c6909582971bd8b877f87c2.patch";
+      hash = "sha256-pYikPZinjmk7gsagiaIcQspmGFYwlhdiKdZPnqo7pcQ=";
+    })
+  ];
+
+  postPatch = ''
+    # discard failing tests for now
+    substituteInPlace test/CMakeLists.txt \
+      --replace-fail "proxsuite_test(dense_maros_meszaros src/dense_maros_meszaros.cpp)" "" \
+      --replace-fail "proxsuite_test(sparse_maros_meszaros src/sparse_maros_meszaros.cpp)" ""
+
+    # fix CMake syntax
+    substituteInPlace bindings/python/CMakeLists.txt \
+      --replace-fail "SYSTEM PRIVATE" "PRIVATE"
+  '';
+
+  outputs = [
+    "doc"
+    "out"
+  ];
+
+  cmakeFlags =
+    [
+      (lib.cmakeBool "BUILD_DOCUMENTATION" true)
+      (lib.cmakeBool "INSTALL_DOCUMENTATION" true)
+      (lib.cmakeBool "BUILD_PYTHON_INTERFACE" pythonSupport)
+    ]
+    ++ lib.optionals (stdenv.hostPlatform.system == "aarch64-linux") [
+      "-DCMAKE_CTEST_ARGUMENTS=--exclude-regex;ProxQP::dense: test primal infeasibility solving"
+    ];
+
+  strictDeps = true;
+
+  nativeBuildInputs = [
+    cmake
+    doxygen
+  ];
+  propagatedBuildInputs = [
+    cereal
+    eigen
+    jrl-cmakemodules
+    simde
+  ] ++ lib.optionals pythonSupport [ python3Packages.pybind11 ];
+  checkInputs =
+    [ matio ]
+    ++ lib.optionals pythonSupport [
+      python3Packages.numpy
+      python3Packages.scipy
+    ];
+
+  doCheck = true;
+
+  meta = {
+    description = "The Advanced Proximal Optimization Toolbox";
+    homepage = "https://github.com/Simple-Robotics/proxsuite";
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [ nim65s ];
+  };
+})
diff --git a/pkgs/by-name/pr/prrte/package.nix b/pkgs/by-name/pr/prrte/package.nix
new file mode 100644
index 0000000000000..de604217cc942
--- /dev/null
+++ b/pkgs/by-name/pr/prrte/package.nix
@@ -0,0 +1,80 @@
+{
+  lib,
+  stdenv,
+  removeReferencesTo,
+  fetchFromGitHub,
+  autoconf,
+  automake,
+  libtool,
+  gitMinimal,
+  perl,
+  python3,
+  flex,
+  hwloc,
+  libevent,
+  zlib,
+  pmix,
+}:
+
+stdenv.mkDerivation rec {
+  pname = "prrte";
+  version = "3.0.6";
+
+  src = fetchFromGitHub {
+    owner = "openpmix";
+    repo = "prrte";
+    rev = "v${version}";
+    sha256 = "sha256-0JHtUpGFdPKmgUk0+MNxTfZIUDz/vY/CV+Mqbmv0JFw=";
+    fetchSubmodules = true;
+  };
+
+  outputs = [
+    "out"
+    "dev"
+  ];
+
+  postPatch = ''
+    patchShebangs ./autogen.pl ./config
+  '';
+
+  preConfigure = ''
+    ./autogen.pl
+  '';
+
+  postInstall = ''
+    moveToOutput "bin/prte_info" "''${!outputDev}"
+    # Fix a broken symlink, created due to FHS assumptions
+    rm "$out/bin/pcc"
+    ln -s ${lib.getDev pmix}/bin/pmixcc "''${!outputDev}"/bin/pcc
+
+    remove-references-to -t "''${!outputDev}" $(readlink -f $out/lib/libprrte${stdenv.hostPlatform.extensions.library})
+  '';
+
+  nativeBuildInputs = [
+    removeReferencesTo
+    perl
+    python3
+    autoconf
+    automake
+    libtool
+    flex
+    gitMinimal
+  ];
+
+  buildInputs = [
+    libevent
+    hwloc
+    zlib
+    pmix
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "PMIx Reference Runtime Environment";
+    homepage = "https://docs.prrte.org/";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ markuskowa ];
+    platforms = lib.platforms.linux;
+  };
+}