1 { pkgs, lib, stdenv, fetchFromGitHub, fetchzip, darktable, rawtherapee, ffmpeg, libheif, exiftool, imagemagick, makeWrapper, testers }:
4 version = "240420-ef5f14bc4";
7 src = fetchFromGitHub {
11 hash = "sha256-oJRd4eTwoTYKAJAsG9y0mnG+zF+eeLlSXNgaKLcb43w=";
14 libtensorflow = pkgs.callPackage ./libtensorflow.nix { };
15 backend = pkgs.callPackage ./backend.nix { inherit libtensorflow src version; };
16 frontend = pkgs.callPackage ./frontend.nix { inherit src version; };
18 fetchModel = { name, hash }:
21 url = "https://dl.photoprism.org/tensorflow/${name}.zip";
25 facenet = fetchModel {
27 hash = "sha256-aS5kkNhxOLSLTH/ipxg7NAa1w9X8iiG78jmloR1hpRo=";
32 hash = "sha256-bF25jPmZLyeSWy/CGXZE/VE2UupEG2q9Jmr0+1rUYWE=";
37 hash = "sha256-zy/HcmgaHOY7FfJUY6I/yjjsMPHR2Ote9ppwqemBlfg=";
40 assets_path = "$out/share/${pname}";
43 inherit pname version;
55 mkdir -p $out/bin ${assets_path}
58 ln -s ${backend}/bin/photoprism $out/bin/photoprism
59 wrapProgram $out/bin/photoprism \
60 --set PHOTOPRISM_ASSETS_PATH ${assets_path} \
61 --set PHOTOPRISM_DARKTABLE_BIN ${darktable}/bin/darktable-cli \
62 --set PHOTOPRISM_RAWTHERAPEE_BIN ${rawtherapee}/bin/rawtherapee-cli \
63 --set PHOTOPRISM_HEIFCONVERT_BIN ${libheif}/bin/heif-convert \
64 --set PHOTOPRISM_FFMPEG_BIN ${ffmpeg}/bin/ffmpeg \
65 --set PHOTOPRISM_EXIFTOOL_BIN ${exiftool}/bin/exiftool \
66 --set PHOTOPRISM_IMAGEMAGICK_BIN ${imagemagick}/bin/convert
69 ln -s ${frontend}/assets/* ${assets_path}
70 # install tensorflow models
71 ln -s ${nasnet}/nasnet ${assets_path}
72 ln -s ${nsfw}/nsfw ${assets_path}
73 ln -s ${facenet}/facenet ${assets_path}
78 passthru.tests.version = testers.testVersion { package = pkgs.photoprism; };
81 homepage = "https://photoprism.app";
82 description = "Personal Photo Management powered by Go and Google TensorFlow";
83 inherit (libtensorflow.meta) platforms;
84 license = licenses.agpl3Only;
85 maintainers = with maintainers; [ benesim ];
86 mainProgram = "photoprism";