diff --git a/nixos/modules/services/web-apps/immich.nix b/nixos/modules/services/web-apps/immich.nix index 1e46f3b855df..ca6b6dd62413 100644 --- a/nixos/modules/services/web-apps/immich.nix +++ b/nixos/modules/services/web-apps/immich.nix @@ -290,7 +290,7 @@ in wantedBy = [ "multi-user.target" ]; inherit (cfg.machine-learning) environment; serviceConfig = commonServiceConfig // { - ExecStart = lib.getExe cfg.package.machine-learning; + ExecStart = lib.getExe (cfg.package.machine-learning.override { immich = cfg.package; }); CacheDirectory = "immich"; User = cfg.user; Group = cfg.group; diff --git a/pkgs/by-name/im/immich/machine-learning.nix b/pkgs/by-name/im/immich-machine-learning/package.nix similarity index 71% rename from pkgs/by-name/im/immich/machine-learning.nix rename to pkgs/by-name/im/immich-machine-learning/package.nix index 7a6451825118..5b35ecfaea04 100644 --- a/pkgs/by-name/im/immich/machine-learning.nix +++ b/pkgs/by-name/im/immich-machine-learning/package.nix @@ -1,46 +1,43 @@ { lib, - src, fetchFromGitHub, immich, python3, - # Override Python packages using - # self: super: { pkg = super.pkg.overridePythonAttrs (oldAttrs: { ... }); } - # Applied after defaultOverrides - packageOverrides ? self: super: { }, }: let - defaultOverrides = self: super: { - pydantic = super.pydantic_1; - - versioningit = super.versioningit.overridePythonAttrs (_: { - doCheck = false; - }); - - albumentations = super.albumentations.overridePythonAttrs (_: rec { - version = "1.4.3"; - src = fetchFromGitHub { - owner = "albumentations-team"; - repo = "albumentations"; - rev = version; - hash = "sha256-JIBwjYaUP4Sc1bVM/zlj45cz9OWpb/LOBsIqk1m+sQA="; - }; - }); - }; - python = python3.override { self = python; - packageOverrides = lib.composeExtensions defaultOverrides packageOverrides; + + packageOverrides = self: super: { + pydantic = super.pydantic_1; + + versioningit = super.versioningit.overridePythonAttrs (_: { + doCheck = false; + }); + + albumentations = super.albumentations.overridePythonAttrs (_: rec { + version = "1.4.3"; + src = fetchFromGitHub { + owner = "albumentations-team"; + repo = "albumentations"; + rev = version; + hash = "sha256-JIBwjYaUP4Sc1bVM/zlj45cz9OWpb/LOBsIqk1m+sQA="; + }; + }); + }; }; in python.pkgs.buildPythonApplication { pname = "immich-machine-learning"; inherit (immich) version; - src = "${src}/machine-learning"; + src = "${immich.src}/machine-learning"; pyproject = true; postPatch = '' substituteInPlace pyproject.toml --replace-fail 'fastapi-slim' 'fastapi' + + # AttributeError: module 'cv2' has no attribute 'Mat' + substituteInPlace app/test_main.py --replace-fail ": cv2.Mat" "" ''; pythonRelaxDeps = [ "setuptools" ]; @@ -72,7 +69,12 @@ python.pkgs.buildPythonApplication { ] ++ uvicorn.optional-dependencies.standard; - doCheck = false; + nativeCheckInputs = with python.pkgs; [ + httpx + pytest-asyncio + pytest-mock + pytestCheckHook + ]; postInstall = '' mkdir -p $out/share/immich diff --git a/pkgs/by-name/im/immich/package.nix b/pkgs/by-name/im/immich/package.nix index ea64fd65945c..fe62f0ddc354 100644 --- a/pkgs/by-name/im/immich/package.nix +++ b/pkgs/by-name/im/immich/package.nix @@ -8,7 +8,7 @@ node-gyp, runCommand, nixosTests, - callPackage, + immich-machine-learning, # build-time deps glib, pkg-config, @@ -210,7 +210,7 @@ buildNpmPackage' { inherit (nixosTests) immich; }; - machine-learning = callPackage ./machine-learning.nix { inherit src; }; + machine-learning = immich-machine-learning; inherit src diff --git a/pkgs/by-name/im/immich/update.sh b/pkgs/by-name/im/immich/update.sh index 1558577b8b60..a1a5e2e0585c 100755 --- a/pkgs/by-name/im/immich/update.sh +++ b/pkgs/by-name/im/immich/update.sh @@ -41,4 +41,4 @@ for npm_component in cli server web "open-api/typescript-sdk"; do done rm "$lock" -cp "$sources_tmp" sources.json +mv "$sources_tmp" sources.json