From c4fc17efa7ca403cd136db1ab345881e3300a44f Mon Sep 17 00:00:00 2001 From: teto <886074+teto@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:18:31 +0100 Subject: [PATCH 1/2] memento: 1.6.0 -> 1.7.0 Added optional support for OCR. Off by default because it doubles closure size plus one needs to download the model imperatively. Some stats: 1.6 weighs: /nix/store/86kmz0zc87hg1v3nwxgf0zd2839d539c-memento-1.6.0 1.3 GiB 1.7 without Ocr : /nix/store/ygd1zr809v5apyjvmydw6nccx1ycc2mh-memento-1.7.0 1.3 GiB 1.7 with ocr: /nix/store/19g1qk5g9kirsqgw1s0nasb676hj8qia-memento-1.7.0 3.3 GiB Amon the novelties, it now builds with system qcoro. --- pkgs/applications/video/memento/default.nix | 68 +++++++++++++++++---- 1 file changed, 57 insertions(+), 11 deletions(-) diff --git a/pkgs/applications/video/memento/default.nix b/pkgs/applications/video/memento/default.nix index d33f97021fd8..bf52b7c5a449 100644 --- a/pkgs/applications/video/memento/default.nix +++ b/pkgs/applications/video/memento/default.nix @@ -9,24 +9,59 @@ # before that => zeal sqlite, json_c, - mecab, libzip, mpv, yt-dlp, - # optional makeWrapper, + qcoro, + withOcr ? false, + python3, }: +let + libmocr = stdenv.mkDerivation { + pname = "libmocr"; + version = "unstable-2023-11-15"; # Placeholder version + + src = fetchFromGitHub { + owner = "ripose-jp"; + repo = "libmocr"; + rev = "24ec081102208d0ff6954c3003df2fb691713bd5"; + hash = "sha256-58W/LBJ+wIxQtutoXqq6TzpExbUBV3NfAfXTIl43ARg="; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ + qt6.qtbase + python3 + ]; + dontWrapQtApps = true; + meta = with lib; { + description = "A library for Manga OCR"; + homepage = "https://github.com/ripose-jp/libmocr"; + license = licenses.gpl2; + platforms = platforms.linux; + }; + }; +in stdenv.mkDerivation (finalAttrs: { pname = "memento"; - version = "1.6.0"; + version = "1.7.0"; src = fetchFromGitHub { owner = "ripose-jp"; repo = "Memento"; - rev = "v${finalAttrs.version}"; - hash = "sha256-IvzvlToSyA20FWU0x+wgE3rT0dYbuY6xyaGgz1D1f6Q="; + tag = "v${finalAttrs.version}"; + hash = "sha256-6ipzorykt9GoGTHTTLCyDf7vXx9mT5AITKA9pyQ3GwI="; }; + cmakeFlags = [ + (lib.cmakeBool "SYSTEM_QCORO" true) + (lib.cmakeBool "SYSTEM_MOCR" true) + ] + ++ lib.optionals withOcr [ + (lib.cmakeBool "OCR_SUPPORT" true) + ]; + nativeBuildInputs = [ cmake makeWrapper @@ -40,15 +75,26 @@ stdenv.mkDerivation (finalAttrs: { sqlite json_c libzip - mecab - ]; + qcoro + ] + + ++ lib.optionals withOcr [ libmocr ]; propagatedBuildInputs = [ mpv ]; - preFixup = '' - wrapProgram "$out/bin/memento" \ - --prefix PATH : "${yt-dlp}/bin" \ - ''; + preFixup = + let + pyEnv = python3.withPackages (p: [ + p.manga-ocr + p.jaconv + ]); + in + '' + wrapProgram "$out/bin/memento" \ + --prefix PATH : "${yt-dlp}/bin" ${lib.optionalString withOcr "--suffix PYTHONPATH : \"${pyEnv}/${pyEnv.sitePackages}\""} + ''; + + passthru.libmocr = libmocr; meta = { description = "Mpv-based video player for studying Japanese"; From 809daf193c943f86ca46b107297cec0e15ed0435 Mon Sep 17 00:00:00 2001 From: teto <886074+teto@users.noreply.github.com> Date: Fri, 2 Jan 2026 23:37:45 +0100 Subject: [PATCH 2/2] memento: moved to by-name --- .../me/memento/package.nix} | 27 +++++++++---------- pkgs/top-level/all-packages.nix | 3 --- 2 files changed, 12 insertions(+), 18 deletions(-) rename pkgs/{applications/video/memento/default.nix => by-name/me/memento/package.nix} (83%) diff --git a/pkgs/applications/video/memento/default.nix b/pkgs/by-name/me/memento/package.nix similarity index 83% rename from pkgs/applications/video/memento/default.nix rename to pkgs/by-name/me/memento/package.nix index bf52b7c5a449..d36c21ac3bca 100644 --- a/pkgs/applications/video/memento/default.nix +++ b/pkgs/by-name/me/memento/package.nix @@ -3,24 +3,21 @@ stdenv, fetchFromGitHub, cmake, - qt6, - wrapQtAppsHook, + qt6Packages, - # before that => zeal sqlite, json_c, libzip, mpv, yt-dlp, makeWrapper, - qcoro, withOcr ? false, python3, }: let libmocr = stdenv.mkDerivation { pname = "libmocr"; - version = "unstable-2023-11-15"; # Placeholder version + version = "0-unstable-2023-11-15"; src = fetchFromGitHub { owner = "ripose-jp"; @@ -31,15 +28,15 @@ let nativeBuildInputs = [ cmake ]; buildInputs = [ - qt6.qtbase + qt6Packages.qtbase python3 ]; dontWrapQtApps = true; - meta = with lib; { + meta = { description = "A library for Manga OCR"; homepage = "https://github.com/ripose-jp/libmocr"; - license = licenses.gpl2; - platforms = platforms.linux; + license = lib.licenses.gpl2; + platforms = lib.platforms.linux; }; }; in @@ -65,17 +62,17 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ cmake makeWrapper - wrapQtAppsHook + qt6Packages.wrapQtAppsHook ]; buildInputs = [ - qt6.qtbase - qt6.qtsvg - qt6.qtwayland + qt6Packages.qtbase + qt6Packages.qtsvg + qt6Packages.qtwayland sqlite json_c libzip - qcoro + qt6Packages.qcoro ] ++ lib.optionals withOcr [ libmocr ]; @@ -91,7 +88,7 @@ stdenv.mkDerivation (finalAttrs: { in '' wrapProgram "$out/bin/memento" \ - --prefix PATH : "${yt-dlp}/bin" ${lib.optionalString withOcr "--suffix PYTHONPATH : \"${pyEnv}/${pyEnv.sitePackages}\""} + --prefix PATH : "${yt-dlp}/bin" ${lib.optionalString withOcr "--suffix PYTHONPATH : \"${pyEnv}/${python3.sitePackages}\""} ''; passthru.libmocr = libmocr; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index e641a167e423..cf38b22b13ab 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11337,9 +11337,6 @@ with pkgs; withConplay = false; }; - # a somewhat more maintained fork of ympd - memento = qt6Packages.callPackage ../applications/video/memento { }; - mplayer = callPackage ../applications/video/mplayer ( { libdvdnav = libdvdnav_4_2_1;