diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 265f0fba8927..4031c3a9cc6f 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -13,7 +13,6 @@ on: - release-* - staging-* - haskell-updates - - python-updates permissions: {} diff --git a/ci/README.md b/ci/README.md index c55d0ca62d07..797f231aea62 100644 --- a/ci/README.md +++ b/ci/README.md @@ -36,7 +36,7 @@ For the purposes of CI, branches in the NixOS/nixpkgs repository are classified - Pull Requests required. - Long-lived, no deletion, no force push. - **Secondary development** branches - - `staging-` prefix, `haskell-updates` and `python-updates` + - `staging-` prefix and `haskell-updates` - Pull Requests normally required, except when merging development branches into each other. - Long-lived, no deletion, no force push. - **Work-In-Progress** branches diff --git a/ci/request-reviews/dev-branches.txt b/ci/request-reviews/dev-branches.txt index 9e0609e325ec..b34092546f18 100644 --- a/ci/request-reviews/dev-branches.txt +++ b/ci/request-reviews/dev-branches.txt @@ -6,4 +6,3 @@ staging release-* staging-* haskell-updates -python-updates diff --git a/ci/supportedBranches.js b/ci/supportedBranches.js index d1a826e89147..fd7dcc9144f3 100755 --- a/ci/supportedBranches.js +++ b/ci/supportedBranches.js @@ -9,7 +9,6 @@ const typeConfig = { staging: ['development', 'secondary'], 'staging-next': ['development', 'secondary'], 'haskell-updates': ['development', 'secondary'], - 'python-updates': ['development', 'secondary'], nixos: ['channel'], nixpkgs: ['channel'], } diff --git a/nixos/modules/services/misc/paperless.nix b/nixos/modules/services/misc/paperless.nix index db69d7424275..4a54e637507a 100644 --- a/nixos/modules/services/misc/paperless.nix +++ b/nixos/modules/services/misc/paperless.nix @@ -31,10 +31,7 @@ let PAPERLESS_REDIS = "unix://${redisServer.unixSocket}"; } // lib.optionalAttrs (cfg.settings.PAPERLESS_ENABLE_NLTK or true) { - PAPERLESS_NLTK_DIR = pkgs.symlinkJoin { - name = "paperless_ngx_nltk_data"; - paths = cfg.package.nltkData; - }; + PAPERLESS_NLTK_DIR = cfg.package.nltkDataDir; } // lib.optionalAttrs (cfg.openMPThreadingWorkaround) { OMP_NUM_THREADS = "1"; diff --git a/nixos/modules/services/video/frigate.nix b/nixos/modules/services/video/frigate.nix index 08fc665cc2d7..c63f3df3c063 100644 --- a/nixos/modules/services/video/frigate.nix +++ b/nixos/modules/services/video/frigate.nix @@ -103,14 +103,16 @@ let # Send a subrequest to verify if the user is authenticated and has permission to access the resource. auth_request /auth; - # Save the upstream metadata response headers from Authelia to variables. + # Save the upstream metadata response headers from the auth request to variables auth_request_set $user $upstream_http_remote_user; + auth_request_set $role $upstream_http_remote_role; auth_request_set $groups $upstream_http_remote_groups; auth_request_set $name $upstream_http_remote_name; auth_request_set $email $upstream_http_remote_email; # Inject the metadata response headers from the variables into the request made to the backend. proxy_set_header Remote-User $user; + proxy_set_header Remote-Role $role; proxy_set_header Remote-Groups $groups; proxy_set_header Remote-Email $email; proxy_set_header Remote-Name $name; @@ -195,9 +197,11 @@ in checkConfig = mkOption { type = bool; - default = pkgs.stdenv.buildPlatform.canExecute pkgs.stdenv.hostPlatform; - defaultText = literalExpression '' + default = pkgs.stdenv.buildPlatform.canExecute pkgs.stdenv.hostPlatform + && (!pkgs.stdenv.hostPlatform.isAarch64); + defaultText = literalExpression '' + pkgs.stdenv.buildPlatform.canExecute pkgs.stdenv.hostPlatform && !(pkgs.stdenv.hostPlaform.isAarch64) ''; description = '' Whether to check the configuration at build time. @@ -343,8 +347,15 @@ in expires off; keepalive_disable safari; + + # vod module returns 502 for non-existent media + # https://github.com/kaltura/nginx-vod-module/issues/468 + error_page 502 =404 /vod-not-found; ''; }; + "/vod-not-found" = { + return = 404; + }; "/stream/" = { alias = "/var/cache/frigate/stream/"; extraConfig = nginxAuthRequest + '' @@ -549,6 +560,23 @@ in add_header Cache-Control "public"; ''; }; + "/locales/" = { + root = cfg.package.web; + extraConfig = '' + access_log off; + add_header Cache-Control "public"; + ''; + }; + "~ ^/.*-([A-Za-z0-9]+)\.webmanifest$" = { + root = cfg.package.web; + extraConfig = '' + access_log off; + expires 1y; + add_header Cache-Control "public"; + default_type application/json; + proxy_set_header Accept-Encoding ""; + ''; + }; "/" = { root = cfg.package.web; tryFiles = "$uri $uri.html $uri/ /index.html"; @@ -583,6 +611,9 @@ in open_file_cache_errors on; aio on; + # file upload size + client_max_body_size 20M; + # https://github.com/kaltura/nginx-vod-module#vod_open_file_thread_pool vod_open_file_thread_pool default; @@ -657,7 +688,6 @@ in [ # unfree: # config.boot.kernelPackages.nvidiaPackages.latest.bin - ffmpeg-headless libva-utils procps radeontop diff --git a/pkgs/applications/audio/youtube-music/default.nix b/pkgs/applications/audio/youtube-music/default.nix index ba02694aa40f..cde0d6cd26ad 100644 --- a/pkgs/applications/audio/youtube-music/default.nix +++ b/pkgs/applications/audio/youtube-music/default.nix @@ -1,31 +1,37 @@ { lib, + stdenv, fetchFromGitHub, makeWrapper, electron, python3, - stdenv, copyDesktopItems, nodejs, pnpm, makeDesktopItem, + nix-update-script, }: stdenv.mkDerivation (finalAttrs: { pname = "youtube-music"; - version = "3.9.0"; + version = "3.10.0"; src = fetchFromGitHub { owner = "th-ch"; repo = "youtube-music"; - rev = "v${finalAttrs.version}"; - hash = "sha256-xaHYNfW5ZLYiaeJ0F32NQ87woMh6K4Ea9rjgNOyabck="; + tag = "v${finalAttrs.version}"; + hash = "sha256-+PCDA7lHaUQw9DhODRsEScyJC+9v8UPiZ1W8w2h/Ljg="; }; + patches = [ + # MPRIS's DesktopEntry property needs to match the desktop entry basename + ./fix-mpris-desktop-entry.patch + ]; + pnpmDeps = pnpm.fetchDeps { inherit (finalAttrs) pname version src; - fetcherVersion = 1; - hash = "sha256-xIQyTetHU37gTxCcQp4VCqzGdIfVQGy/aORCVba6YQ0="; + fetcherVersion = 2; + hash = "sha256-b5I0n3CedA6qCL68lePU3pwyGp1JlQHzUpfCvhqw2qI="; }; nativeBuildInputs = [ @@ -36,7 +42,7 @@ stdenv.mkDerivation (finalAttrs: { ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ copyDesktopItems ]; - ELECTRON_SKIP_BINARY_DOWNLOAD = 1; + env.ELECTRON_SKIP_BINARY_DOWNLOAD = 1; postBuild = lib.optionalString stdenv.hostPlatform.isDarwin '' @@ -51,6 +57,17 @@ stdenv.mkDerivation (finalAttrs: { -c.electronVersion=${electron.version} ''; + desktopItems = [ + (makeDesktopItem { + name = "com.github.th_ch.youtube_music"; + exec = "youtube-music %u"; + icon = "youtube-music"; + desktopName = "YouTube Music"; + startupWMClass = "com.github.th_ch.youtube_music"; + categories = [ "AudioVideo" ]; + }) + ]; + installPhase = '' runHook preInstall @@ -58,11 +75,11 @@ stdenv.mkDerivation (finalAttrs: { + lib.optionalString stdenv.hostPlatform.isDarwin '' mkdir -p $out/{Applications,bin} mv pack/mac*/YouTube\ Music.app $out/Applications - makeWrapper $out/Applications/YouTube\ Music.app/Contents/MacOS/YouTube\ Music $out/bin/youtube-music + ln -s "$out/Applications/YouTube Music.app/Contents/MacOS/YouTube Music" $out/bin/youtube-music '' + lib.optionalString (!stdenv.hostPlatform.isDarwin) '' - mkdir -p "$out/share/lib/youtube-music" - cp -r pack/*-unpacked/{locales,resources{,.pak}} "$out/share/lib/youtube-music" + mkdir -p "$out/share/youtube-music" + cp -r pack/*-unpacked/{locales,resources{,.pak}} "$out/share/youtube-music" pushd assets/generated/icons/png for file in *.png; do @@ -77,37 +94,23 @@ stdenv.mkDerivation (finalAttrs: { postFixup = lib.optionalString (!stdenv.hostPlatform.isDarwin) '' makeWrapper ${electron}/bin/electron $out/bin/youtube-music \ - --add-flags $out/share/lib/youtube-music/resources/app.asar \ - --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ + --add-flags $out/share/youtube-music/resources/app.asar \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true --wayland-text-input-version=3}}" \ --set-default ELECTRON_FORCE_IS_PACKAGED 1 \ --set-default ELECTRON_IS_DEV 0 \ --inherit-argv0 ''; - patches = [ - # MPRIS's DesktopEntry property needs to match the desktop entry basename - ./fix-mpris-desktop-entry.patch - ]; + passthru.updateScript = nix-update-script { }; - desktopItems = [ - (makeDesktopItem { - name = "com.github.th_ch.youtube_music"; - exec = "youtube-music %u"; - icon = "youtube-music"; - desktopName = "YouTube Music"; - startupWMClass = "com.github.th_ch.youtube_music"; - categories = [ "AudioVideo" ]; - }) - ]; - - meta = with lib; { + meta = { description = "Electron wrapper around YouTube Music"; homepage = "https://th-ch.github.io/youtube-music/"; changelog = "https://github.com/th-ch/youtube-music/blob/master/changelog.md#${ - lib.replaceStrings [ "." ] [ "" ] finalAttrs.src.rev + lib.replaceStrings [ "." ] [ "" ] finalAttrs.src.tag }"; - license = licenses.mit; - maintainers = with maintainers; [ + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ aacebedo SuperSandro2000 ]; diff --git a/pkgs/applications/editors/code-browser/default.nix b/pkgs/applications/editors/code-browser/default.nix deleted file mode 100644 index 4528c6a33687..000000000000 --- a/pkgs/applications/editors/code-browser/default.nix +++ /dev/null @@ -1,79 +0,0 @@ -{ - lib, - stdenv, - fetchurl, - copper, - python3, - pkg-config, - withQt ? false, - qtbase ? null, - wrapQtAppsHook ? null, - withGtk2 ? false, - gtk2, - withGtk3 ? false, - gtk3, - mkDerivation ? stdenv.mkDerivation, -}: -let - onlyOneEnabled = xs: 1 == builtins.length (builtins.filter lib.id xs); -in -assert onlyOneEnabled [ - withQt - withGtk2 - withGtk3 -]; -mkDerivation rec { - pname = "code-browser"; - version = "8.0"; - src = fetchurl { - url = "https://tibleiz.net/download/code-browser-${version}-src.tar.gz"; - sha256 = "sha256-beCp4lx4MI1+hVgWp2h3piE/zu51zfwQdB5g7ImgmwY="; - }; - postPatch = '' - substituteInPlace Makefile --replace "LFLAGS=-no-pie" "LFLAGS=-no-pie -L." - patchShebangs . - '' - + lib.optionalString withQt '' - substituteInPlace libs/copper-ui/Makefile --replace "moc -o" "${qtbase.dev}/bin/moc -o" - substituteInPlace libs/copper-ui/Makefile --replace "all: qt gtk gtk2" "all: qt" - '' - + lib.optionalString withGtk2 '' - substituteInPlace libs/copper-ui/Makefile --replace "all: qt gtk gtk2" "all: gtk2" - '' - + lib.optionalString withGtk3 '' - substituteInPlace libs/copper-ui/Makefile --replace "all: qt gtk gtk2" "all: gtk" - ''; - nativeBuildInputs = [ - copper - python3 - pkg-config - ] - ++ lib.optionals withGtk2 [ gtk2 ] - ++ lib.optionals withGtk3 [ gtk3 ] - ++ lib.optionals withQt [ - qtbase - wrapQtAppsHook - ]; - buildInputs = - lib.optionals withQt [ qtbase ] - ++ lib.optionals withGtk2 [ gtk2 ] - ++ lib.optionals withGtk3 [ gtk3 ]; - makeFlags = [ - "prefix=$(out)" - "COPPER=${copper}/bin/copper-elf64" - "with-local-libs" - ] - ++ lib.optionals withQt [ - "QINC=${qtbase.dev}/include" - "UI=qt" - ] - ++ lib.optionals withGtk2 [ "UI=gtk2" ] - ++ lib.optionals withGtk3 [ "UI=gtk" ]; - - meta = with lib; { - description = "Folding text editor, designed to hierarchically structure any kind of text file and especially source code"; - homepage = "https://tibleiz.net/code-browser/"; - license = licenses.gpl2; - platforms = platforms.x86_64; - }; -} diff --git a/pkgs/applications/misc/gxneur/default.nix b/pkgs/applications/misc/gxneur/default.nix deleted file mode 100644 index 4fecff22e3c7..000000000000 --- a/pkgs/applications/misc/gxneur/default.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ - lib, - stdenv, - fetchurl, - pkg-config, - intltool, - gtk2, - xorg, - glib, - xneur, - libglade, - GConf, - libappindicator-gtk2, - pcre, -}: - -stdenv.mkDerivation rec { - pname = "gxneur"; - version = "0.20.0"; - - src = fetchurl { - url = "https://github.com/AndrewCrewKuznetsov/xneur-devel/raw/f66723feb272c68f7c22a8bf0dbcafa5e3a8a5ee/dists/${version}/gxneur_${version}.orig.tar.gz"; - sha256 = "0avmhdcj0hpr55fc0iih8fjykmdhn34c8mwdnqvl8jh4nhxxchxr"; - }; - - # glib-2.62 deprecations - env.NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS"; - - nativeBuildInputs = [ - pkg-config - intltool - ]; - buildInputs = [ - xorg.libX11 - glib - gtk2 - xorg.libXpm - xorg.libXt - xorg.libXext - xneur - libglade - GConf - pcre - libappindicator-gtk2 - ]; - - meta = with lib; { - description = "GUI for XNEUR keyboard layout switcher"; - platforms = platforms.linux; - license = with licenses; [ - gpl2 - gpl3 - ]; - mainProgram = "gxneur"; - }; -} diff --git a/pkgs/build-support/appimage/default.nix b/pkgs/build-support/appimage/default.nix index 1235c039377d..de2b46050b72 100644 --- a/pkgs/build-support/appimage/default.nix +++ b/pkgs/build-support/appimage/default.nix @@ -128,6 +128,10 @@ rec { krb5 gsettings-desktop-schemas hicolor-icon-theme # dont show a gtk warning about hicolor not being installed + + # libraries not on the upstream include list, but nevertheless expected + # by at least one appimage + libsecret # For bitwarden, appimage is x86_64 only ]; # list of libraries expected in an appimage environment: @@ -244,8 +248,6 @@ rec { at-spi2-core pciutils # for FreeCAD pipewire # immersed-vr wayland support - - libsecret # For bitwarden libmpg123 # Slippi launcher brotli # TwitchDropsMiner ]; diff --git a/pkgs/by-name/au/authentik/package.nix b/pkgs/by-name/au/authentik/package.nix index 14e8700c416c..ef2639eb71ba 100644 --- a/pkgs/by-name/au/authentik/package.nix +++ b/pkgs/by-name/au/authentik/package.nix @@ -308,8 +308,6 @@ let substituteInPlace authentik/lib/default.yml \ --replace-fail '/blueprints' "$out/blueprints" \ --replace-fail './media' '/var/lib/authentik/media' - substituteInPlace pyproject.toml \ - --replace-fail 'djangorestframework-guardian' 'djangorestframework-guardian2' substituteInPlace authentik/stages/email/utils.py \ --replace-fail 'web/' '${webui}/' ''; @@ -346,7 +344,7 @@ let django-storages django-tenants djangorestframework - djangorestframework-guardian2 + djangorestframework-guardian docker drf-orjson-renderer drf-spectacular diff --git a/pkgs/by-name/cl/cloudflare-warp/package.nix b/pkgs/by-name/cl/cloudflare-warp/package.nix index e31cb4c5a24e..3a6c759ad1ad 100644 --- a/pkgs/by-name/cl/cloudflare-warp/package.nix +++ b/pkgs/by-name/cl/cloudflare-warp/package.nix @@ -92,9 +92,10 @@ stdenv.mkDerivation rec { patchelf --replace-needed libpcap.so.0.8 ${libpcap}/lib/libpcap.so $out/bin/warp-dex mv lib/systemd/system $out/lib/systemd/ substituteInPlace $out/lib/systemd/system/warp-svc.service \ - --replace "ExecStart=" "ExecStart=$out" + --replace-fail "ExecStart=" "ExecStart=$out" substituteInPlace $out/lib/systemd/user/warp-taskbar.service \ - --replace "ExecStart=" "ExecStart=$out" + --replace-fail "ExecStart=" "ExecStart=$out" \ + --replace-fail "BindsTo=" "PartOf=" cat >>$out/lib/systemd/user/warp-taskbar.service < 0: - request.app.camera_error_image = cv2.imread( -@@ -497,7 +500,7 @@ def recording_clip( - ) - - file_name = sanitize_filename(f"playlist_{camera_name}_{start_ts}-{end_ts}.txt") -- file_path = f"/tmp/cache/{file_name}" -+ file_path = os.path.join(CACHE_DIR, file_name) - with open(file_path, "w") as file: - clip: Recordings - for clip in recordings: -diff --git a/frigate/api/preview.py b/frigate/api/preview.py -index d14a15ff..2db2326a 100644 ---- a/frigate/api/preview.py -+++ b/frigate/api/preview.py -@@ -9,7 +9,7 @@ from fastapi import APIRouter - from fastapi.responses import JSONResponse - - from frigate.api.defs.tags import Tags --from frigate.const import CACHE_DIR, PREVIEW_FRAME_TYPE -+from frigate.const import BASE_DIR, CACHE_DIR, PREVIEW_FRAME_TYPE - from frigate.models import Previews - - logger = logging.getLogger(__name__) -@@ -52,7 +52,7 @@ def preview_ts(camera_name: str, start_ts: float, end_ts: float): - clips.append( - { - "camera": preview["camera"], -- "src": preview["path"].replace("/media/frigate", ""), -+ "src": preview["path"].replace(BASE_DIR, ""), - "type": "video/mp4", - "start": preview["start_time"], - "end": preview["end_time"], diff --git a/frigate/comms/webpush.py b/frigate/comms/webpush.py -index abfd52d1..ab4cf3c5 100644 +index c5986d45..b767e19e 100644 --- a/frigate/comms/webpush.py +++ b/frigate/comms/webpush.py -@@ -12,7 +12,7 @@ from pywebpush import WebPusher +@@ -17,7 +17,7 @@ from titlecase import titlecase + from frigate.comms.base_communicator import Communicator from frigate.comms.config_updater import ConfigSubscriber - from frigate.comms.dispatcher import Communicator from frigate.config import FrigateConfig -from frigate.const import CONFIG_DIR +from frigate.const import BASE_DIR, CONFIG_DIR from frigate.models import User logger = logging.getLogger(__name__) -@@ -151,7 +151,7 @@ class WebPushClient(Communicator): # type: ignore[misc] - camera: str = payload["after"]["camera"] - title = f"{', '.join(sorted_objects).replace('_', ' ').title()}{' was' if state == 'end' else ''} detected in {', '.join(payload['after']['data']['zones']).replace('_', ' ').title()}" - message = f"Detected on {camera.replace('_', ' ').title()}" +@@ -333,7 +333,7 @@ class WebPushClient(Communicator): # type: ignore[misc] + + title = f"{titlecase(', '.join(sorted_objects).replace('_', ' '))}{' was' if state == 'end' else ''} detected in {titlecase(', '.join(payload['after']['data']['zones']).replace('_', ' '))}" + message = f"Detected on {titlecase(camera.replace('_', ' '))}" - image = f"{payload['after']['thumb_path'].replace('/media/frigate', '')}" + image = f"{payload['after']['thumb_path'].replace(BASE_DIR, '')}" # if event is ongoing open to live view otherwise open to recordings view direct_url = f"/review?id={reviewId}" if state == "end" else f"/#{camera}" -diff --git a/frigate/const.py b/frigate/const.py -index 5976f47b..dc710467 100644 ---- a/frigate/const.py -+++ b/frigate/const.py -@@ -1,5 +1,6 @@ - import re - -+INSTALL_DIR = "/opt/frigate" - CONFIG_DIR = "/config" - DEFAULT_DB_PATH = f"{CONFIG_DIR}/frigate.db" - MODEL_CACHE_DIR = f"{CONFIG_DIR}/model_cache" -diff --git a/frigate/detectors/detector_config.py b/frigate/detectors/detector_config.py -index 452f1fee..13535a62 100644 ---- a/frigate/detectors/detector_config.py -+++ b/frigate/detectors/detector_config.py -@@ -9,7 +9,7 @@ import requests - from pydantic import BaseModel, ConfigDict, Field - from pydantic.fields import PrivateAttr - --from frigate.const import DEFAULT_ATTRIBUTE_LABEL_MAP -+from frigate.const import DEFAULT_ATTRIBUTE_LABEL_MAP, MODEL_CACHE_DIR - from frigate.plus import PlusApi - from frigate.util.builtin import generate_color_palette, load_labels - -@@ -117,7 +117,7 @@ class ModelConfig(BaseModel): - return - - model_id = self.path[7:] -- self.path = f"/config/model_cache/{model_id}" -+ self.path = os.path.join(MODEL_CACHE_DIR, model_id) - model_info_path = f"{self.path}.json" - - # download the model if it doesn't exist -diff --git a/frigate/detectors/plugins/hailo8l.py b/frigate/detectors/plugins/hailo8l.py -index b66d78bd..69e86bc5 100644 ---- a/frigate/detectors/plugins/hailo8l.py -+++ b/frigate/detectors/plugins/hailo8l.py -@@ -22,6 +22,7 @@ except ModuleNotFoundError: - from pydantic import BaseModel, Field - from typing_extensions import Literal - -+from frigate.const import MODEL_CACHE_DIR - from frigate.detectors.detection_api import DetectionApi - from frigate.detectors.detector_config import BaseDetectorConfig - -@@ -57,7 +58,7 @@ class HailoDetector(DetectionApi): - self.h8l_tensor_format = detector_config.model.input_tensor - self.h8l_pixel_format = detector_config.model.input_pixel_format - self.model_url = "https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v2.11.0/hailo8l/ssd_mobilenet_v1.hef" -- self.cache_dir = "/config/model_cache/h8l_cache" -+ self.cache_dir = os.path.join(MODEL_CACHE_DIR, "h8l_cache") - self.expected_model_filename = "ssd_mobilenet_v1.hef" - output_type = "FLOAT32" - -diff --git a/frigate/detectors/plugins/openvino.py b/frigate/detectors/plugins/openvino.py -index 51e48530..d199317b 100644 ---- a/frigate/detectors/plugins/openvino.py -+++ b/frigate/detectors/plugins/openvino.py -@@ -7,6 +7,7 @@ import openvino.properties as props - from pydantic import Field - from typing_extensions import Literal - -+from frigate.const import MODEL_CACHE_DIR - from frigate.detectors.detection_api import DetectionApi - from frigate.detectors.detector_config import BaseDetectorConfig, ModelTypeEnum - -@@ -35,8 +36,10 @@ class OvDetector(DetectionApi): - logger.error(f"OpenVino model file {detector_config.model.path} not found.") - raise FileNotFoundError - -- os.makedirs("/config/model_cache/openvino", exist_ok=True) -- self.ov_core.set_property({props.cache_dir: "/config/model_cache/openvino"}) -+ os.makedirs(os.path.join(MODEL_CACHE_DIR, "openvino"), exist_ok=True) -+ self.ov_core.set_property( -+ {props.cache_dir: os.path.join(MODEL_CACHE_DIR, "openvino")} -+ ) - self.interpreter = self.ov_core.compile_model( - model=detector_config.model.path, device_name=detector_config.device - ) -diff --git a/frigate/detectors/plugins/rknn.py b/frigate/detectors/plugins/rknn.py -index df94d7b6..bc3d9ae0 100644 ---- a/frigate/detectors/plugins/rknn.py -+++ b/frigate/detectors/plugins/rknn.py -@@ -6,6 +6,7 @@ from typing import Literal - - from pydantic import Field - -+from frigate.const import MODEL_CACHE_DIR - from frigate.detectors.detection_api import DetectionApi - from frigate.detectors.detector_config import BaseDetectorConfig, ModelTypeEnum - -@@ -17,7 +18,7 @@ supported_socs = ["rk3562", "rk3566", "rk3568", "rk3576", "rk3588"] - - supported_models = {ModelTypeEnum.yolonas: "^deci-fp16-yolonas_[sml]$"} - --model_cache_dir = "/config/model_cache/rknn_cache/" -+model_cache_dir = os.path.join(MODEL_CACHE_DIR, "rknn_cache/") - - - class RknnDetectorConfig(BaseDetectorConfig): -diff --git a/frigate/detectors/plugins/rocm.py b/frigate/detectors/plugins/rocm.py -index 60118d12..7c87edb5 100644 ---- a/frigate/detectors/plugins/rocm.py -+++ b/frigate/detectors/plugins/rocm.py -@@ -9,6 +9,7 @@ import numpy as np - from pydantic import Field - from typing_extensions import Literal - -+from frigate.const import MODEL_CACHE_DIR - from frigate.detectors.detection_api import DetectionApi - from frigate.detectors.detector_config import ( - BaseDetectorConfig, -@@ -116,7 +117,7 @@ class ROCmDetector(DetectionApi): - - logger.info(f"AMD/ROCm: saving parsed model into {mxr_path}") - -- os.makedirs("/config/model_cache/rocm", exist_ok=True) -+ os.makedirs(os.path.join(MODEL_CACHE_DIR, "rocm"), exist_ok=True) - migraphx.save(self.model, mxr_path) - - logger.info("AMD/ROCm: model loaded") -diff --git a/frigate/output/birdseye.py b/frigate/output/birdseye.py -index 00f17c8f..8331eb64 100644 ---- a/frigate/output/birdseye.py -+++ b/frigate/output/birdseye.py -@@ -16,7 +16,7 @@ import numpy as np - - from frigate.comms.config_updater import ConfigSubscriber - from frigate.config import BirdseyeModeEnum, FfmpegConfig, FrigateConfig --from frigate.const import BASE_DIR, BIRDSEYE_PIPE -+from frigate.const import BASE_DIR, BIRDSEYE_PIPE, INSTALL_DIR - from frigate.util.image import ( - SharedMemoryFrameManager, - copy_yuv_to_position, -@@ -297,7 +297,9 @@ class BirdsEyeFrameManager: - birdseye_logo = cv2.imread(custom_logo_files[0], cv2.IMREAD_UNCHANGED) - - if birdseye_logo is None: -- logo_files = glob.glob("/opt/frigate/frigate/images/birdseye.png") -+ logo_files = glob.glob( -+ os.path.join(INSTALL_DIR, "frigate/images/birdseye.png") -+ ) - - if len(logo_files) > 0: - birdseye_logo = cv2.imread(logo_files[0], cv2.IMREAD_UNCHANGED) -diff --git a/frigate/test/http_api/base_http_test.py b/frigate/test/http_api/base_http_test.py -index e7a1d03e..4fa4a5b5 100644 ---- a/frigate/test/http_api/base_http_test.py -+++ b/frigate/test/http_api/base_http_test.py -@@ -9,6 +9,7 @@ from playhouse.sqliteq import SqliteQueueDatabase - - from frigate.api.fastapi_app import create_fastapi_app - from frigate.config import FrigateConfig -+from frigate.const import BASE_DIR, CACHE_DIR - from frigate.models import Event, Recordings, ReviewSegment - from frigate.review.types import SeverityEnum - from frigate.test.const import TEST_DB, TEST_DB_CLEANUPS -@@ -72,19 +73,19 @@ class BaseTestHttp(unittest.TestCase): - "total": 67.1, - "used": 16.6, - }, -- "/media/frigate/clips": { -+ os.path.join(BASE_DIR, "clips"): { - "free": 42429.9, - "mount_type": "ext4", - "total": 244529.7, - "used": 189607.0, - }, -- "/media/frigate/recordings": { -+ os.path.join(BASE_DIR, "recordings"): { - "free": 0.2, - "mount_type": "ext4", - "total": 8.0, - "used": 7.8, - }, -- "/tmp/cache": { -+ CACHE_DIR: { - "free": 976.8, - "mount_type": "tmpfs", - "total": 1000.0, -diff --git a/frigate/test/test_config.py b/frigate/test/test_config.py -index e6cb1274..5a3deefd 100644 ---- a/frigate/test/test_config.py -+++ b/frigate/test/test_config.py -@@ -854,9 +854,9 @@ class TestConfig(unittest.TestCase): - assert frigate_config.model.merged_labelmap[0] == "person" - - def test_plus_labelmap(self): -- with open("/config/model_cache/test", "w") as f: -+ with open(os.path.join(MODEL_CACHE_DIR, "test"), "w") as f: - json.dump(self.plus_model_info, f) -- with open("/config/model_cache/test.json", "w") as f: -+ with open(os.path.join(MODEL_CACHE_DIR, "test.json"), "w") as f: - json.dump(self.plus_model_info, f) - - config = { -diff --git a/frigate/test/test_http.py b/frigate/test/test_http.py -index 21379425..66f9d22a 100644 ---- a/frigate/test/test_http.py -+++ b/frigate/test/test_http.py -@@ -12,6 +12,7 @@ from playhouse.sqliteq import SqliteQueueDatabase - - from frigate.api.fastapi_app import create_fastapi_app - from frigate.config import FrigateConfig -+from frigate.const import BASE_DIR, CACHE_DIR - from frigate.models import Event, Recordings, Timeline - from frigate.stats.emitter import StatsEmitter - from frigate.test.const import TEST_DB, TEST_DB_CLEANUPS -@@ -76,19 +77,19 @@ class TestHttp(unittest.TestCase): - "total": 67.1, - "used": 16.6, - }, -- "/media/frigate/clips": { -+ os.path.join(BASE_DIR, "clips"): { - "free": 42429.9, - "mount_type": "ext4", - "total": 244529.7, - "used": 189607.0, - }, -- "/media/frigate/recordings": { -+ os.path.join(BASE_DIR, "recordings"): { - "free": 0.2, - "mount_type": "ext4", - "total": 8.0, - "used": 7.8, - }, -- "/tmp/cache": { -+ CACHE_DIR: { - "free": 976.8, - "mount_type": "tmpfs", - "total": 1000.0, -diff --git a/frigate/util/config.py b/frigate/util/config.py -index d456c755..b6b270c9 100644 ---- a/frigate/util/config.py -+++ b/frigate/util/config.py -@@ -14,7 +14,7 @@ from frigate.util.services import get_video_properties - logger = logging.getLogger(__name__) - - CURRENT_CONFIG_VERSION = "0.15-1" --DEFAULT_CONFIG_FILE = "/config/config.yml" -+DEFAULT_CONFIG_FILE = os.path.join(CONFIG_DIR, "config.yml") - - - def find_config_file() -> str: -diff --git a/frigate/util/model.py b/frigate/util/model.py -index ce2c9538..6e93cb38 100644 ---- a/frigate/util/model.py -+++ b/frigate/util/model.py -@@ -12,6 +12,8 @@ except ImportError: - # openvino is not included - pass - -+from frigate.const import MODEL_CACHE_DIR -+ - logger = logging.getLogger(__name__) - - -@@ -46,7 +48,8 @@ def get_ort_providers( - # so it is not enabled by default - if device == "Tensorrt": - os.makedirs( -- "/config/model_cache/tensorrt/ort/trt-engines", exist_ok=True -+ os.path.join(MODEL_CACHE_DIR, "tensorrt/ort/trt-engines"), -+ exist_ok=True, - ) - device_id = 0 if not device.isdigit() else int(device) - providers.append(provider) -@@ -57,19 +60,23 @@ def get_ort_providers( - and os.environ.get("USE_FP_16", "True") != "False", - "trt_timing_cache_enable": True, - "trt_engine_cache_enable": True, -- "trt_timing_cache_path": "/config/model_cache/tensorrt/ort", -- "trt_engine_cache_path": "/config/model_cache/tensorrt/ort/trt-engines", -+ "trt_timing_cache_path": os.path.join( -+ MODEL_CACHE_DIR, "tensorrt/ort" -+ ), -+ "trt_engine_cache_path": os.path.join( -+ MODEL_CACHE_DIR, "tensorrt/ort/trt-engines" -+ ), - } - ) - else: - continue - elif provider == "OpenVINOExecutionProvider": -- os.makedirs("/config/model_cache/openvino/ort", exist_ok=True) -+ os.makedirs(os.path.join(MODEL_CACHE_DIR, "openvino/ort"), exist_ok=True) - providers.append(provider) - options.append( - { - "arena_extend_strategy": "kSameAsRequested", -- "cache_dir": "/config/model_cache/openvino/ort", -+ "cache_dir": os.path.join(MODEL_CACHE_DIR, "openvino/ort"), - "device_type": device, - } - ) -@@ -103,7 +110,7 @@ class ONNXModelRunner: - self.type = "ov" - self.ov = ov.Core() - self.ov.set_property( -- {ov.properties.cache_dir: "/config/model_cache/openvino"} -+ {ov.properties.cache_dir: os.path.join(MODEL_CACHE_DIR, "openvino")} - ) - self.interpreter = self.ov.compile_model( - model=model_path, device_name=device diff --git a/pkgs/by-name/fr/frigate/ffmpeg.patch b/pkgs/by-name/fr/frigate/ffmpeg.patch new file mode 100644 index 000000000000..78721dd6d3a4 --- /dev/null +++ b/pkgs/by-name/fr/frigate/ffmpeg.patch @@ -0,0 +1,39 @@ +diff --git a/frigate/config/camera/ffmpeg.py b/frigate/config/camera/ffmpeg.py +index 04bbfac7..4390a571 100644 +--- a/frigate/config/camera/ffmpeg.py ++++ b/frigate/config/camera/ffmpeg.py +@@ -70,18 +70,14 @@ class FfmpegConfig(FrigateBaseModel): + @property + def ffmpeg_path(self) -> str: + if self.path == "default": +- return f"/usr/lib/ffmpeg/{DEFAULT_FFMPEG_VERSION}/bin/ffmpeg" +- elif self.path in INCLUDED_FFMPEG_VERSIONS: +- return f"/usr/lib/ffmpeg/{self.path}/bin/ffmpeg" ++ return "@ffmpeg@" + else: + return f"{self.path}/bin/ffmpeg" + + @property + def ffprobe_path(self) -> str: + if self.path == "default": +- return f"/usr/lib/ffmpeg/{DEFAULT_FFMPEG_VERSION}/bin/ffprobe" +- elif self.path in INCLUDED_FFMPEG_VERSIONS: +- return f"/usr/lib/ffmpeg/{self.path}/bin/ffprobe" ++ return "@ffprobe@" + else: + return f"{self.path}/bin/ffprobe" + +diff --git a/frigate/record/export.py b/frigate/record/export.py +index 0d3f96da..09cadbcd 100644 +--- a/frigate/record/export.py ++++ b/frigate/record/export.py +@@ -126,7 +126,7 @@ class RecordingExporter(threading.Thread): + minutes = int(diff / 60) + seconds = int(diff % 60) + ffmpeg_cmd = [ +- "/usr/lib/ffmpeg/7.0/bin/ffmpeg", # hardcode path for exports thumbnail due to missing libwebp support ++ "@ffmpeg@", # hardcode path for exports thumbnail due to missing libwebp support + "-hide_banner", + "-loglevel", + "warning", +~ diff --git a/pkgs/by-name/fr/frigate/package.nix b/pkgs/by-name/fr/frigate/package.nix index 1ba1470bdadf..3c6c9d9b3660 100644 --- a/pkgs/by-name/fr/frigate/package.nix +++ b/pkgs/by-name/fr/frigate/package.nix @@ -2,31 +2,32 @@ lib, stdenv, callPackage, - python312, + replaceVars, + python312Packages, fetchFromGitHub, fetchurl, - rocmPackages, + ffmpeg-headless, sqlite-vec, frigate, nixosTests, }: let - version = "0.15.2"; + version = "0.16.0"; src = fetchFromGitHub { name = "frigate-${version}-source"; owner = "blakeblackshear"; repo = "frigate"; tag = "v${version}"; - hash = "sha256-YJFtMVCTtp8h9a9RmkcoZSQ+nIKb5o/4JVynVslkx78="; + hash = "sha256-O1rOFRrS3hDbf4fVgfz+KASo20R1aqbDoIf3JKQ1jhs="; }; frigate-web = callPackage ./web.nix { inherit version src; }; - python = python312; + python = python312Packages.python; # Tensorflow audio model # https://github.com/blakeblackshear/frigate/blob/v0.15.0/docker/main/Dockerfile#L125 @@ -55,14 +56,21 @@ let hash = "sha256-5Cj2vEiWR8Z9d2xBmVoLZuNRv4UOuxHSGZQWTJorXUQ="; }; in -python.pkgs.buildPythonApplication rec { +python312Packages.buildPythonApplication rec { pname = "frigate"; inherit version; format = "other"; inherit src; - patches = [ ./constants.patch ]; + patches = [ + ./constants.patch + + (replaceVars ./ffmpeg.patch { + ffmpeg = lib.getExe ffmpeg-headless; + ffprobe = lib.getExe' ffmpeg-headless "ffprobe"; + }) + ]; postPatch = '' echo 'VERSION = "${version}"' > frigate/version.py @@ -86,15 +94,6 @@ python.pkgs.buildPythonApplication rec { substituteInPlace frigate/db/sqlitevecq.py \ --replace-fail "/usr/local/lib/vec0" "${lib.getLib sqlite-vec}/lib/vec0${stdenv.hostPlatform.extensions.sharedLibrary}" - '' - # clang-rocm, provided by `rocmPackages.clr`, only works on x86_64-linux specifically - + lib.optionalString (with stdenv.hostPlatform; isx86_64 && isLinux) '' - substituteInPlace frigate/detectors/plugins/rocm.py \ - --replace-fail "/opt/rocm/bin/rocminfo" "rocminfo" \ - --replace-fail "/opt/rocm/lib" "${rocmPackages.clr}/lib" - - '' - + '' # provide default paths for models and maps that are shipped with frigate substituteInPlace frigate/config/config.py \ --replace-fail "/cpu_model.tflite" "${tflite_cpu_model}" \ @@ -106,30 +105,37 @@ python.pkgs.buildPythonApplication rec { substituteInPlace frigate/events/audio.py \ --replace-fail "/cpu_audio_model.tflite" "${placeholder "out"}/share/frigate/cpu_audio_model.tflite" \ --replace-fail "/audio-labelmap.txt" "${placeholder "out"}/share/frigate/audio-labelmap.txt" - - # work around onvif-zeep idiosyncrasy - substituteInPlace frigate/ptz/onvif.py \ - --replace-fail dist-packages site-packages ''; dontBuild = true; - dependencies = with python.pkgs; [ + dependencies = with python312Packages; [ # docker/main/requirements.txt scikit-build # docker/main/requirements-wheel.txt + aiofiles aiohttp + appdirs + argcomplete + contextlib2 click + distlib fastapi + filelock + future + importlib-metadata + importlib-resources google-generativeai - imutils joserfc + levenshtein markupsafe + netaddr + netifaces norfair numpy ollama onnxruntime - onvif-zeep + onvif-zeep-async openai opencv4 openvino @@ -138,9 +144,12 @@ python.pkgs.buildPythonApplication rec { pathvalidate peewee peewee-migrate + prometheus-client psutil py3nvml + pyclipper pydantic + python-multipart pytz py-vapid pywebpush @@ -149,14 +158,18 @@ python.pkgs.buildPythonApplication rec { ruamel-yaml scipy setproctitle + shapely slowapi starlette starlette-context tensorflow-bin + titlecase transformers tzlocal unidecode uvicorn + verboselogs + virtualenv ws4py ]; @@ -178,7 +191,7 @@ python.pkgs.buildPythonApplication rec { runHook postInstall ''; - nativeCheckInputs = with python.pkgs; [ + nativeCheckInputs = with python312Packages; [ pytestCheckHook ]; @@ -200,7 +213,7 @@ python.pkgs.buildPythonApplication rec { passthru = { web = frigate-web; inherit python; - pythonPath = (python.pkgs.makePythonPath dependencies) + ":${frigate}/${python.sitePackages}"; + pythonPath = (python312Packages.makePythonPath dependencies) + ":${frigate}/${python.sitePackages}"; tests = { inherit (nixosTests) frigate; }; diff --git a/pkgs/by-name/fr/frigate/web.nix b/pkgs/by-name/fr/frigate/web.nix index 45e6a3518519..4d355f864cb5 100644 --- a/pkgs/by-name/fr/frigate/web.nix +++ b/pkgs/by-name/fr/frigate/web.nix @@ -30,7 +30,7 @@ buildNpmPackage { --replace-fail "/tmp/cache" "/var/cache/frigate" ''; - npmDepsHash = "sha256-tPwydUJtFDJs17q0haJaUVEkxua+nHfmwQ9Z9Y24ca8="; + npmDepsHash = "sha256-CrK/6BaKmKIxlohEZdGEEKJkioszBUupyKQx4nBeLqI="; installPhase = '' cp -rv dist/ $out diff --git a/pkgs/by-name/fr/froide/package.nix b/pkgs/by-name/fr/froide/package.nix index 8b5e9ffc64d9..e4cf9a7cbcc2 100644 --- a/pkgs/by-name/fr/froide/package.nix +++ b/pkgs/by-name/fr/froide/package.nix @@ -135,7 +135,7 @@ python.pkgs.buildPythonApplication rec { ''; nativeCheckInputs = with python.pkgs; [ - (postgresql.withPackages (p: [ p.postgis ])) + (postgresql.withPackages (p: [ p.postgis ])).out postgresqlTestHook pytest-django pytest-playwright diff --git a/pkgs/by-name/pa/paperless-ngx/package.nix b/pkgs/by-name/pa/paperless-ngx/package.nix index 6773631561e8..607adc324deb 100644 --- a/pkgs/by-name/pa/paperless-ngx/package.nix +++ b/pkgs/by-name/pa/paperless-ngx/package.nix @@ -24,23 +24,24 @@ xcbuild, pango, pkg-config, + symlinkJoin, nltk-data, xorg, }: let - version = "2.17.1"; + version = "2.18.1"; src = fetchFromGitHub { owner = "paperless-ngx"; repo = "paperless-ngx"; tag = "v${version}"; - hash = "sha256-6FvP/HgomsPxqCtKrZFxMlD2fFyT2e/JII2L7ANiOao="; + hash = "sha256-POHF00cV8pl6i1rcwxtZ+Q1AlLybDj6gSlL0lPwSSCo="; }; python = python3.override { self = python; packageOverrides = final: prev: { - django = prev.django_5_1; + django = prev.django_5_2; fido2 = prev.fido2.overridePythonAttrs { version = "1.2.0"; @@ -71,73 +72,79 @@ let poppler-utils ]; - frontend = - let - frontendSrc = src + "/src-ui"; - in - stdenv.mkDerivation rec { - pname = "paperless-ngx-frontend"; - inherit version; + frontend = stdenv.mkDerivation (finalAttrs: { + pname = "paperless-ngx-frontend"; + inherit version; - src = frontendSrc; + src = src + "/src-ui"; - pnpmDeps = pnpm.fetchDeps { - inherit pname version src; - fetcherVersion = 1; - hash = "sha256-VtYYwpMXPAC3g1OESnw3dzLTwiGqJBQcicFZskEucok="; - }; - - nativeBuildInputs = [ - node-gyp - nodejs_20 - pkg-config - pnpm.configHook - python3 - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - xcbuild - ]; - - buildInputs = [ - pango - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - giflib - ]; - - CYPRESS_INSTALL_BINARY = "0"; - NG_CLI_ANALYTICS = "false"; - - buildPhase = '' - runHook preBuild - - pushd node_modules/canvas - node-gyp rebuild - popd - - pnpm run build --configuration production - - runHook postBuild - ''; - - doCheck = true; - checkPhase = '' - runHook preCheck - - pnpm run test - - runHook postCheck - ''; - - installPhase = '' - runHook preInstall - - mkdir -p $out/lib/paperless-ui - mv ../src/documents/static/frontend $out/lib/paperless-ui/ - - runHook postInstall - ''; + pnpmDeps = pnpm.fetchDeps { + inherit (finalAttrs) pname version src; + fetcherVersion = 1; + hash = "sha256-bx/jXlG3lRiwKyz1M0dU00Xn5xaeALSIxIAGzo8gAgo="; }; + + nativeBuildInputs = [ + node-gyp + nodejs_20 + pkg-config + pnpm.configHook + python3 + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + xcbuild + ]; + + buildInputs = [ + pango + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + giflib + ]; + + CYPRESS_INSTALL_BINARY = "0"; + NG_CLI_ANALYTICS = "false"; + + buildPhase = '' + runHook preBuild + + pushd node_modules/canvas + node-gyp rebuild + popd + + # cat forcefully disables angular cli's spinner which doesn't work with nix' tty which is 0x0 + pnpm run build --configuration production | cat + + runHook postBuild + ''; + + doCheck = true; + checkPhase = '' + runHook preCheck + + pnpm run test | cat + + runHook postCheck + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/lib/paperless-ui + mv ../src/documents/static/frontend $out/lib/paperless-ui/ + + runHook postInstall + ''; + }); + + nltkDataDir = symlinkJoin { + name = "paperless_ngx_nltk_data"; + paths = with nltk-data; [ + punkt-tab + snowball-data + stopwords + ]; + }; in python.pkgs.buildPythonApplication rec { pname = "paperless-ngx"; @@ -161,8 +168,7 @@ python.pkgs.buildPythonApplication rec { fi substituteInPlace pyproject.toml \ --replace-fail '"--numprocesses=auto",' "" \ - --replace-fail '--maxprocesses=16' "--numprocesses=$NIX_BUILD_CORES" \ - --replace-fail "djangorestframework-guardian~=0.3.0" "djangorestframework-guardian2" + --replace-fail '--maxprocesses=16' "--numprocesses=$NIX_BUILD_CORES" ''; nativeBuildInputs = [ @@ -171,6 +177,7 @@ python.pkgs.buildPythonApplication rec { ]; pythonRelaxDeps = [ + "django" "django-allauth" "django-auditlog" "django-guardian" @@ -185,6 +192,7 @@ python.pkgs.buildPythonApplication rec { dependencies = with python.pkgs; [ + babel bleach channels channels-redis @@ -204,6 +212,7 @@ python.pkgs.buildPythonApplication rec { } )) django-auditlog + django-cachalot django-celery-results django-compression-middleware django-cors-headers @@ -213,7 +222,7 @@ python.pkgs.buildPythonApplication rec { django-multiselectfield django-soft-delete djangorestframework - djangorestframework-guardian2 + djangorestframework-guardian drf-spectacular drf-spectacular-sidecar drf-writable-nested @@ -232,6 +241,7 @@ python.pkgs.buildPythonApplication rec { pathvalidate pdf2image psycopg + psycopg-pool python-dateutil python-dotenv python-gnupg @@ -320,6 +330,7 @@ python.pkgs.buildPythonApplication rec { export PATH="${path}:$PATH" export HOME=$(mktemp -d) export XDG_DATA_DIRS="${liberation_ttf}/share:$XDG_DATA_DIRS" + export PAPERLESS_NLTK_DIR=${passthru.nltkDataDir} ''; disabledTests = [ @@ -337,22 +348,22 @@ python.pkgs.buildPythonApplication rec { # Favicon tests fail due to static file handling in the test environment "test_favicon_view" "test_favicon_view_missing_file" + # Requires DNS + "test_send_webhook_data_or_json" + "test_workflow_webhook_send_webhook_retry" + "test_workflow_webhook_send_webhook_task" ]; doCheck = !stdenv.hostPlatform.isDarwin; passthru = { inherit - python - path frontend + nltkDataDir + path + python tesseract5 ; - nltkData = with nltk-data; [ - punkt-tab - snowball-data - stopwords - ]; tests = { inherit (nixosTests) paperless; }; }; diff --git a/pkgs/by-name/vi/victoriametrics/package.nix b/pkgs/by-name/vi/victoriametrics/package.nix index 1f44d8200909..a0b1ebafc8c0 100644 --- a/pkgs/by-name/vi/victoriametrics/package.nix +++ b/pkgs/by-name/vi/victoriametrics/package.nix @@ -13,13 +13,13 @@ buildGoModule (finalAttrs: { pname = "VictoriaMetrics"; - version = "1.123.0"; + version = "1.124.0"; src = fetchFromGitHub { owner = "VictoriaMetrics"; repo = "VictoriaMetrics"; tag = "v${finalAttrs.version}"; - hash = "sha256-GUVRMlF94BaZSVfz4Z+IBSpf6WuA5o1WQQmeZAqKZ1g="; + hash = "sha256-f0Mf/4cFnJ/3I8z/4UhhNJnSCau9Q7mFfR32lP9/yi0="; }; vendorHash = null; @@ -51,6 +51,10 @@ buildGoModule (finalAttrs: { # This appears to be some kind of test server for development purposes only. rm -f app/vmui/packages/vmui/web/{go.mod,main.go} + # Allow older go versions + substituteInPlace go.mod \ + --replace-fail "go 1.24.6" "go ${finalAttrs.passthru.go.version}" + # Increase timeouts in tests to prevent failure on heavily loaded builders substituteInPlace lib/storage/storage_test.go \ --replace-fail "time.After(10 " "time.After(120 " \ diff --git a/pkgs/by-name/xw/xwin/package.nix b/pkgs/by-name/xw/xwin/package.nix index 4efcd3e155e8..26ab31a10aed 100644 --- a/pkgs/by-name/xw/xwin/package.nix +++ b/pkgs/by-name/xw/xwin/package.nix @@ -2,6 +2,8 @@ lib, rustPlatform, fetchFromGitHub, + openssl, + pkg-config, versionCheckHook, }: rustPlatform.buildRustPackage (finalAttrs: { @@ -17,6 +19,20 @@ rustPlatform.buildRustPackage (finalAttrs: { cargoHash = "sha256-77ArdZ9mOYEon4nzNUNSL0x0UlE1iVujFLwreAd9iMM="; + strictDeps = true; + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + openssl + ]; + + buildNoDefaultFeatures = true; + buildFeatures = [ + "native-tls" + ]; + doCheck = true; # Requires network access checkFlags = [ diff --git a/pkgs/development/compilers/graalvm/default.nix b/pkgs/development/compilers/graalvm/default.nix index a8d1d91556d3..33842ffdc498 100644 --- a/pkgs/development/compilers/graalvm/default.nix +++ b/pkgs/development/compilers/graalvm/default.nix @@ -28,9 +28,12 @@ lib.makeScope pkgs.newScope ( (prev: { autoPatchelfIgnoreMissingDeps = [ "libonnxruntime.so.1" ]; }); + graalvm-oracle_24 = (self.callPackage ./graalvm-oracle { version = "24"; }).overrideAttrs (prev: { + autoPatchelfIgnoreMissingDeps = [ "libonnxruntime.so.1.18.0" ]; + }); graalvm-oracle_23 = self.callPackage ./graalvm-oracle { version = "23"; }; graalvm-oracle_17 = self.callPackage ./graalvm-oracle { version = "17"; }; - graalvm-oracle = self.graalvm-oracle_23; + graalvm-oracle = self.graalvm-oracle_24; } // lib.optionalAttrs config.allowAliases { graalvm-oracle_22 = throw "GraalVM 22 is EOL, use a newer version instead"; diff --git a/pkgs/development/compilers/graalvm/graalvm-oracle/default.nix b/pkgs/development/compilers/graalvm/graalvm-oracle/default.nix index 2f362857a3c9..d700c8cb78e5 100644 --- a/pkgs/development/compilers/graalvm/graalvm-oracle/default.nix +++ b/pkgs/development/compilers/graalvm/graalvm-oracle/default.nix @@ -4,7 +4,7 @@ fetchurl, graalvmPackages, useMusl ? false, - version ? "23", + version ? "24", }: graalvmPackages.buildGraalvm { diff --git a/pkgs/development/compilers/graalvm/graalvm-oracle/hashes.nix b/pkgs/development/compilers/graalvm/graalvm-oracle/hashes.nix index 6b3860592b6c..325824e2bfa3 100644 --- a/pkgs/development/compilers/graalvm/graalvm-oracle/hashes.nix +++ b/pkgs/development/compilers/graalvm/graalvm-oracle/hashes.nix @@ -22,6 +22,24 @@ url = "https://github.com/graalvm/oracle-graalvm-ea-builds/releases/download/jdk-25.0.0-ea.34/graalvm-jdk-25.0.0-ea.34_macos-aarch64_bin.tar.gz"; }; }; + "24" = { + "aarch64-linux" = { + hash = "sha256-dvJVfzLoz75ti3u/Mx8PCS674cw2omeOCYMFiSB2KYs="; + url = "https://download.oracle.com/graalvm/24/archive/graalvm-jdk-24.0.2_linux-aarch64_bin.tar.gz"; + }; + "x86_64-linux" = { + hash = "sha256-sBYaSbvB0PQGl1Mt36u4BSpaFeRjd15pRf4+SSAlm64="; + url = "https://download.oracle.com/graalvm/24/archive/graalvm-jdk-24.0.2_linux-x64_bin.tar.gz"; + }; + "x86_64-darwin" = { + hash = "sha256-3w+eXRASAcUL+muqPGV6gaKIPFtQl6n1q5PauG9+O6I="; + url = "https://download.oracle.com/graalvm/24/archive/graalvm-jdk-24.0.2_macos-x64_bin.tar.gz"; + }; + "aarch64-darwin" = { + hash = "sha256-LcdjTtk5xyXUGjU/c0Q/8y5w8vtXc2fxKmk2EH40lNw="; + url = "https://download.oracle.com/graalvm/24/archive/graalvm-jdk-24.0.2_macos-aarch64_bin.tar.gz"; + }; + }; "23" = { "aarch64-linux" = { hash = "sha256-VlB664/l7NWFQrPE3vEJvCXkEzKEJ0ck/HNU5pGGTwU="; diff --git a/pkgs/development/ocaml-modules/multicore-bench/default.nix b/pkgs/development/ocaml-modules/multicore-bench/default.nix index 7f367f983eea..4e7ecf88a560 100644 --- a/pkgs/development/ocaml-modules/multicore-bench/default.nix +++ b/pkgs/development/ocaml-modules/multicore-bench/default.nix @@ -2,6 +2,7 @@ lib, buildDunePackage, fetchurl, + backoff, domain-local-await, mtime, multicore-magic, @@ -10,14 +11,15 @@ buildDunePackage rec { pname = "multicore-bench"; - version = "0.1.4"; + version = "0.1.7"; src = fetchurl { url = "https://github.com/ocaml-multicore/multicore-bench/releases/download/${version}/multicore-bench-${version}.tbz"; - hash = "sha256-iCx5QvhYo/e53cW23Sza2as4aez4HeESVvLPF1DW85A="; + hash = "sha256-vrp9yiuTwhijhYjeDKPFRGyh/5LeydKWJSyMLZRRXIM="; }; propagatedBuildInputs = [ + backoff domain-local-await mtime multicore-magic diff --git a/pkgs/development/python-modules/django-auditlog/default.nix b/pkgs/development/python-modules/django-auditlog/default.nix index 80af50656ca1..61b66c736806 100644 --- a/pkgs/development/python-modules/django-auditlog/default.nix +++ b/pkgs/development/python-modules/django-auditlog/default.nix @@ -16,14 +16,14 @@ buildPythonPackage rec { pname = "django-auditlog"; - version = "3.2.0"; + version = "3.2.1"; pyproject = true; src = fetchFromGitHub { owner = "jazzband"; repo = "django-auditlog"; tag = "v${version}"; - hash = "sha256-NOtpnYh6HUo7VRSyCUhbpNDv0V9KWST0OEzl7Pt6eR8="; + hash = "sha256-159p82PT3za3wp2XhekGxy+NYxLyQfAyUOyhDjyr2CI="; }; nativeBuildInputs = [ diff --git a/pkgs/development/python-modules/django-cachalot/default.nix b/pkgs/development/python-modules/django-cachalot/default.nix index 4c6c85a46d67..7d8377e74039 100644 --- a/pkgs/development/python-modules/django-cachalot/default.nix +++ b/pkgs/development/python-modules/django-cachalot/default.nix @@ -7,8 +7,14 @@ psycopg2, jinja2, beautifulsoup4, + pytest-django, + pytestCheckHook, python, pytz, + redis, + redisTestHook, + setuptools, + stdenv, }: buildPythonPackage rec { @@ -29,18 +35,27 @@ buildPythonPackage rec { ./disable-unsupported-tests.patch ]; - propagatedBuildInputs = [ django ]; + build-system = [ setuptools ]; - checkInputs = [ + dependencies = [ django ]; + + nativeCheckInputs = [ beautifulsoup4 django-debug-toolbar psycopg2 jinja2 + pytest-django + pytestCheckHook pytz + redis + redisTestHook ]; pythonImportsCheck = [ "cachalot" ]; + # redisTestHook does not work on darwin + doCheck = !stdenv.hostPlatform.isDarwin; + # disable broken pinning test preCheck = '' substituteInPlace cachalot/tests/read.py \ diff --git a/pkgs/development/python-modules/djangorestframework-dataclasses/default.nix b/pkgs/development/python-modules/djangorestframework-dataclasses/default.nix index 149993805a6e..f3c6d0ed3776 100644 --- a/pkgs/development/python-modules/djangorestframework-dataclasses/default.nix +++ b/pkgs/development/python-modules/djangorestframework-dataclasses/default.nix @@ -3,6 +3,8 @@ buildPythonPackage, fetchFromGitHub, djangorestframework, + pytest-django, + pytestCheckHook, setuptools, }: @@ -18,21 +20,20 @@ buildPythonPackage rec { hash = "sha256-nUkR5xTyeBv7ziJ6Mej9TKvMOa5/k+ELBqt4BVam/wk="; }; - build-system = [ setuptools ]; - postPatch = '' patchShebangs manage.py ''; + build-system = [ setuptools ]; + dependencies = [ djangorestframework ]; - checkPhase = '' - runHook preCheck + nativeCheckInputs = [ + pytest-django + pytestCheckHook + ]; - ./manage.py test - - runHook postCheck - ''; + env.DJANGO_SETTINGS_MODULE = "tests.django_settings"; pythonImportsCheck = [ "rest_framework_dataclasses" ]; diff --git a/pkgs/development/python-modules/djangorestframework-guardian/default.nix b/pkgs/development/python-modules/djangorestframework-guardian/default.nix index 4d4a1d45fc9c..d722ff95ee74 100644 --- a/pkgs/development/python-modules/djangorestframework-guardian/default.nix +++ b/pkgs/development/python-modules/djangorestframework-guardian/default.nix @@ -2,36 +2,38 @@ lib, buildPythonPackage, fetchFromGitHub, - django, django-guardian, djangorestframework, + pytest-django, + pytestCheckHook, + setuptools, }: buildPythonPackage rec { pname = "djangorestframework-guardian"; - version = "0.3.0"; - format = "setuptools"; + version = "0.4.0"; + pyproject = true; src = fetchFromGitHub { owner = "rpkilby"; repo = "django-rest-framework-guardian"; rev = version; - hash = "sha256-jl/VEl1pUHU8J1d5ZQSGJweNJayIGw1iVAmwID85fqw="; + hash = "sha256-7SaKyWoLen5DAwSyrWeA4rEmjXMcPwJ7LM7WYxk+IKs="; }; - postPatch = '' - chmod +x manage.py - patchShebangs manage.py - ''; + build-system = [ setuptools ]; - propagatedBuildInputs = [ + dependencies = [ django-guardian djangorestframework ]; - checkPhase = '' - ./manage.py test - ''; + nativeCheckInputs = [ + pytest-django + pytestCheckHook + ]; + + env.DJANGO_SETTINGS_MODULE = "tests.settings"; pythonImportsCheck = [ "rest_framework_guardian" ]; @@ -40,7 +42,5 @@ buildPythonPackage rec { homepage = "https://github.com/rpkilby/django-rest-framework-guardian"; license = licenses.bsd3; maintainers = [ ]; - # unmaintained, last compatible version is 3.x, use djangorestframework-guardian2 instead - broken = lib.versionAtLeast django.version "4"; }; } diff --git a/pkgs/development/python-modules/djangorestframework-guardian2/default.nix b/pkgs/development/python-modules/djangorestframework-guardian2/default.nix deleted file mode 100644 index 25081535d2f0..000000000000 --- a/pkgs/development/python-modules/djangorestframework-guardian2/default.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - lib, - buildPythonPackage, - fetchFromGitHub, - django-guardian, - djangorestframework, - setuptools, -}: - -buildPythonPackage rec { - pname = "djangorestframework-guardian2"; - version = "0.7.0"; - pyproject = true; - - src = fetchFromGitHub { - owner = "johnthagen"; - repo = "django-rest-framework-guardian2"; - tag = "v${version}"; - hash = "sha256-LrIhOoBWC3HttjAGbul4zof++OW35pGMyFGZzUpG1Tk="; - }; - - postPatch = '' - chmod +x manage.py - patchShebangs manage.py - ''; - - build-system = [ setuptools ]; - - dependencies = [ - django-guardian - djangorestframework - ]; - - checkPhase = '' - ./manage.py test - ''; - - pythonImportsCheck = [ "rest_framework_guardian" ]; - - meta = with lib; { - description = "Django-guardian support for Django REST Framework"; - homepage = "https://github.com/johnthagen/django-rest-framework-guardian2/"; - license = licenses.bsd3; - maintainers = with maintainers; [ e1mo ]; - }; -} diff --git a/pkgs/development/python-modules/drf-spectacular-sidecar/default.nix b/pkgs/development/python-modules/drf-spectacular-sidecar/default.nix index bd8da61a4f6e..811e370ffc78 100644 --- a/pkgs/development/python-modules/drf-spectacular-sidecar/default.nix +++ b/pkgs/development/python-modules/drf-spectacular-sidecar/default.nix @@ -8,14 +8,14 @@ buildPythonPackage rec { pname = "drf-spectacular-sidecar"; - version = "2025.4.1"; + version = "2025.8.1"; pyproject = true; src = fetchFromGitHub { owner = "tfranzel"; repo = "drf-spectacular-sidecar"; rev = version; - hash = "sha256-YzSUwShj7QGCVKlTRM2Gro38Y+jGYQsMGBMAH0radmA="; + hash = "sha256-H2eHFX7VG7YqLztEV/G4QnVYytkfADeHxgBTRlmKt50="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/python-openstackclient/default.nix b/pkgs/development/python-modules/python-openstackclient/default.nix index 905cc3d4b17f..3898978c74d8 100644 --- a/pkgs/development/python-modules/python-openstackclient/default.nix +++ b/pkgs/development/python-modules/python-openstackclient/default.nix @@ -33,13 +33,13 @@ buildPythonPackage rec { pname = "python-openstackclient"; - version = "8.1.0"; + version = "8.2.0"; pyproject = true; src = fetchPypi { pname = "python_openstackclient"; inherit version; - hash = "sha256-m5xCs/a8S0tICmJU/FYKywGXh4MeCUOW2/msmuVxrks="; + hash = "sha256-1hKvGN/GbMjzHmzpZpC2wnOt6KJA7EC39INaiJb7vgE="; }; build-system = [ diff --git a/pkgs/development/python-modules/rq/default.nix b/pkgs/development/python-modules/rq/default.nix index a18a535ddd91..f4af7b1be9d4 100644 --- a/pkgs/development/python-modules/rq/default.nix +++ b/pkgs/development/python-modules/rq/default.nix @@ -49,6 +49,9 @@ buildPythonPackage rec { __darwinAllowLocalNetworking = true; + # redisTestHook does not work on darwin-x86_64 + doCheck = !(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64); + disabledTests = lib.optionals stdenv.hostPlatform.isDarwin [ # PermissionError: [Errno 13] Permission denied: '/tmp/rq-tests.txt' "test_deleted_jobs_arent_executed" diff --git a/pkgs/development/python-modules/sanic/default.nix b/pkgs/development/python-modules/sanic/default.nix index 94ce7ab55218..3c79d8a8785f 100644 --- a/pkgs/development/python-modules/sanic/default.nix +++ b/pkgs/development/python-modules/sanic/default.nix @@ -69,8 +69,6 @@ buildPythonPackage rec { ] ++ optional-dependencies.http3; - doCheck = !stdenv.hostPlatform.isDarwin; - preCheck = '' # Some tests depends on sanic on PATH PATH="$out/bin:$PATH" @@ -78,6 +76,11 @@ buildPythonPackage rec { # needed for relative paths for some packages cd tests + '' + # Work around "OSError: AF_UNIX path too long" + + lib.optionalString stdenv.hostPlatform.isDarwin '' + substituteInPlace worker/test_socket.py \ + --replace-fail '"./test.sock"' '"/tmp/test.sock"' ''; disabledTests = [ diff --git a/pkgs/development/python-modules/tika-client/default.nix b/pkgs/development/python-modules/tika-client/default.nix index 0639af3739a2..b16ace6df913 100644 --- a/pkgs/development/python-modules/tika-client/default.nix +++ b/pkgs/development/python-modules/tika-client/default.nix @@ -2,7 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, - pythonOlder, + anyio, hatchling, httpx, }: @@ -12,8 +12,6 @@ buildPythonPackage rec { version = "0.10.0"; pyproject = true; - disabled = pythonOlder "3.9"; - src = fetchFromGitHub { owner = "stumpylog"; repo = "tika-client"; @@ -23,14 +21,14 @@ buildPythonPackage rec { build-system = [ hatchling ]; - dependencies = [ httpx ]; + dependencies = [ + anyio + httpx + ]; pythonImportsCheck = [ "tika_client" ]; - # Almost all of the tests (all except one in 0.1.0) fail since there - # is no tika http API endpoint reachable. Since tika is not yet - # packaged for nixpkgs, it seems like an unreasonable amount of effort - # fixing these tests. + # The tests expect the tika-server to run in a docker container doChecks = false; meta = with lib; { diff --git a/pkgs/tools/backup/zbackup/default.nix b/pkgs/tools/backup/zbackup/default.nix deleted file mode 100644 index 21df241f7db8..000000000000 --- a/pkgs/tools/backup/zbackup/default.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ - lib, - stdenv, - fetchFromGitHub, - cmake, - protobufc, - libunwind, - lzo, - openssl, - protobuf, - zlib, -}: - -stdenv.mkDerivation rec { - pname = "zbackup"; - version = "1.4.4"; - - src = fetchFromGitHub { - owner = "zbackup"; - repo = "zbackup"; - rev = version; - hash = "sha256-9Fk4EhEeQ2J4Kirc7oad4CzmW70Mmza6uozd87qfgZI="; - }; - - patches = [ - # compare with https://github.com/zbackup/zbackup/pull/158; - # but that doesn't apply cleanly to this version - ./protobuf-api-change.patch - ]; - - # zbackup uses dynamic exception specifications which are not - # allowed in C++17 - env.NIX_CFLAGS_COMPILE = toString [ "--std=c++14" ]; - - buildInputs = [ - zlib - openssl - protobuf - lzo - libunwind - ]; - nativeBuildInputs = [ - cmake - protobufc - ]; - - meta = { - description = "Versatile deduplicating backup tool"; - mainProgram = "zbackup"; - homepage = "http://zbackup.org/"; - platforms = lib.platforms.linux; - license = lib.licenses.gpl2Plus; - }; -} diff --git a/pkgs/tools/backup/zbackup/protobuf-api-change.patch b/pkgs/tools/backup/zbackup/protobuf-api-change.patch deleted file mode 100644 index d071709878be..000000000000 --- a/pkgs/tools/backup/zbackup/protobuf-api-change.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/backup_restorer.cc -+++ b/backup_restorer.cc -@@ -48,7 +48,7 @@ - // TODO: this disables size checks for each separate message. Figure a better - // way to do this while keeping them enabled. It seems we need to create an - // instance of CodedInputStream for each message, but it might be expensive -- cis.SetTotalBytesLimit( backupData.size(), -1 ); -+ cis.SetTotalBytesLimit( backupData.size() ); - - // Used when emitting chunks - string chunk; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 5c6a8a61d6d8..44890b520e24 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -619,11 +619,15 @@ mapAliases { cloudlogoffline = throw "cloudlogoffline has been removed"; # added 2025-05-18 clwrapperFunction = throw "Lisp packages have been redesigned. See 'lisp-modules' in the nixpkgs manual."; # Added 2024-05-07 CoinMP = coinmp; # Added 2024-06-12 + code-browser-gtk = throw "'code-browser-gtk' has been removed, as it was broken since 22.11"; # Added 2025-08-22 + code-browser-gtk2 = throw "'code-browser-gtk2' has been removed, as it was broken since 22.11"; # Added 2025-08-22 + code-browser-qt = throw "'code-browser-qt' has been removed, as it was broken since 22.11"; # Added 2025-08-22 collada-dom = opencollada; # added 2024-02-21 colloid-kde = throw "'colloid-kde' has been removed, as it is only compatible with Plasma 5, which is EOL"; # Added 2025-08-20 colorpicker = throw "'colorpicker' has been removed due to lack of maintenance upstream. Consider using 'xcolor', 'gcolor3', 'eyedropper' or 'gpick' instead"; # Added 2024-10-19 colorstorm = throw "'colorstorm' has been removed because it was unmaintained in nixpkgs and upstream was rewritten."; # Added 2025-06-15 connman-ncurses = throw "'connman-ncurses' has been removed due to lack of maintenance upstream."; # Added 2025-05-27 + copper = throw "'copper' has been removed, as it was broken since 22.11"; # Added 2025-08-22 cordless = throw "'cordless' has been removed due to being archived upstream. Consider using 'discordo' instead."; # Added 2025-06-07 coriander = throw "'coriander' has been removed because it depends on GNOME 2 libraries"; # Added 2024-06-27 corretto19 = throw "Corretto 19 was removed as it has reached its end of life"; # Added 2024-08-01 @@ -1073,6 +1077,7 @@ mapAliases { guardian-agent = throw "'guardian-agent' has been removed, as it hasn't been maintained upstream in years and accumulated many vulnerabilities"; # Added 2024-06-09 guile-disarchive = disarchive; # Added 2023-10-27 gutenprintBin = gutenprint-bin; # Added 2025-08-21 + gxneur = throw "'gxneur' has been removed due to lack of maintenance and reliance on gnome2 and 2to3."; # Added 2025-08-17 ### H ### @@ -2439,6 +2444,7 @@ mapAliases { z3_4_8 = throw "'z3_4_8' has been removed in favour of the latest version. Use 'z3'."; # Added 2025-05-18 zabbix50 = throw "'zabbix50' has been removed, it would have reached its End of Life a few days after the release of NixOS 25.05. Consider upgrading to 'zabbix60' or 'zabbix70'."; zabbix64 = throw "'zabbix64' has been removed because it reached its End of Life. Consider upgrading to 'zabbix70'."; + zbackup = throw "'zbackup' has been removed due to being unmaintained upstream"; # Added 2025-08-22 zeroadPackages = recurseIntoAttrs { zeroad = lib.warnOnInstantiate "'zeroadPackages.zeroad' has been renamed to 'zeroad'" zeroad; # Added 2025-03-22 zeroad-data = lib.warnOnInstantiate "'zeroadPackages.zeroad-data' has been renamed to 'zeroad-data'" zeroad-data; # Added 2025-03-22 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c5a525521e23..45f0642642f0 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2615,10 +2615,6 @@ with pkgs; cask-server = libsForQt5.callPackage ../applications/misc/cask-server { }; - code-browser-qt = libsForQt5.callPackage ../applications/editors/code-browser { withQt = true; }; - code-browser-gtk2 = callPackage ../applications/editors/code-browser { withGtk2 = true; }; - code-browser-gtk = callPackage ../applications/editors/code-browser { withGtk3 = true; }; - cffconvert = python3Packages.toPythonApplication python3Packages.cffconvert; ckb-next = libsForQt5.callPackage ../tools/misc/ckb-next { }; @@ -4583,10 +4579,6 @@ with pkgs; # To expose more packages for Yi, override the extraPackages arg. yi = callPackage ../applications/editors/yi/wrapper.nix { }; - zbackup = callPackage ../tools/backup/zbackup { - protobuf = protobuf_21; - }; - zbar = libsForQt5.callPackage ../tools/graphics/zbar { }; # Nvidia support does not require any proprietary libraries, so CI can build it. @@ -13836,10 +13828,6 @@ with pkgs; ; }; - gxneur = callPackage ../applications/misc/gxneur { - inherit (gnome2) libglade GConf; - }; - xournalpp = callPackage ../applications/graphics/xournalpp { lua = lua5_3; }; diff --git a/pkgs/top-level/python-aliases.nix b/pkgs/top-level/python-aliases.nix index ca0de16f4600..0cb4576dd4a9 100644 --- a/pkgs/top-level/python-aliases.nix +++ b/pkgs/top-level/python-aliases.nix @@ -188,6 +188,7 @@ mapAliases ({ distutils_extra = distutils-extra; # added 2023-10-12 digital-ocean = python-digitalocean; # addad 2024-04-12 dj-stripe = throw "dj-stripe has been removed because it is unused and broken"; # added 2025-07-21 + djangorestframework-guardian2 = throw "djangorestframework-guardian2 has been removed because djangorestframework-guardian is active again and the upstream project was archived"; # added 2025-08-22 djangorestframework-jwt = drf-jwt; # added 2021-07-20 django-allauth-2fa = throw "django-allauth-2fa was removed because it was unused and django-allauth now contains 2fa logic itself."; # added 2025-02-15 django-sampledatahelper = throw "django-sampledatahelper was removed because it is no longer compatible to latest Django version"; # added 2022-07-18 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 29004145782e..d2165bd37c8f 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4142,10 +4142,6 @@ self: super: with self; { callPackage ../development/python-modules/djangorestframework-guardian { }; - djangorestframework-guardian2 = - callPackage ../development/python-modules/djangorestframework-guardian2 - { }; - djangorestframework-jsonp = callPackage ../development/python-modules/djangorestframework-jsonp { }; djangorestframework-recursive =