diff --git a/pkgs/by-name/re/readest/package.nix b/pkgs/by-name/re/readest/package.nix new file mode 100644 index 00000000000000..8f42a426f153fe --- /dev/null +++ b/pkgs/by-name/re/readest/package.nix @@ -0,0 +1,98 @@ +{ + rustPlatform, + pnpm_9, + cargo-tauri, + nodejs, + pkg-config, + webkitgtk_4_1, + wrapGAppsHook3, + fetchFromGitHub, + gtk3, + librsvg, + openssl, + autoPatchelfHook, + lib, + nix-update-script, + moreutils, + jq, +}: + +rustPlatform.buildRustPackage rec { + pname = "readest"; + version = "0.9.5"; + + src = fetchFromGitHub { + owner = "readest"; + repo = "readest"; + tag = "v${version}"; + hash = "sha256-JtxW3ngP+oHCE6E55+wUL3ptcJ86UEqj2LFXhDQW6/k="; + fetchSubmodules = true; + }; + + sourceRoot = "${src.name}/apps/readest-app"; + + pnpmDeps = pnpm_9.fetchDeps { + inherit pname version src; + hash = "sha256-YmuqMqO9AisSHv7iJK/ElQig/fF/+ngrqSzlvtnX2xc="; + }; + + pnpmRoot = ".."; + + cargoHash = "sha256-2Fx31kVJfQrOeGVtkL1ARCo+REbRKO1JBIZEZO93Lis="; + + cargoRoot = "src-tauri"; + + buildAndTestSubdir = cargoRoot; + + postPatch = '' + substituteInPlace $cargoRoot/Cargo.toml \ + --replace-fail '"devtools"' '"devtools", "rustls-tls"' + substituteInPlace $cargoRoot/tauri.conf.json \ + --replace-fail '"createUpdaterArtifacts": true' '"createUpdaterArtifacts": false' \ + --replace-fail '"Readest"' '"readest"' + jq 'del(.plugins."deep-link")' $cargoRoot/tauri.conf.json | sponge $cargoRoot/tauri.conf.json + ''; + + preConfigure = '' + chmod -R +w ../.. + ''; + + nativeBuildInputs = [ + cargo-tauri.hook + nodejs + pnpm_9.configHook + pkg-config + wrapGAppsHook3 + autoPatchelfHook + moreutils + jq + ]; + + buildInputs = [ + webkitgtk_4_1 + gtk3 + librsvg + openssl + ]; + + preBuild = '' + pnpm setup-pdfjs + ''; + + preFixup = '' + gappsWrapperArgs+=( + --set-default WEBKIT_DISABLE_DMABUF_RENDERER 1 + ) + ''; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Modern, feature-rich ebook reader"; + homepage = "https://github.com/readest/readest"; + mainProgram = "readest"; + license = lib.licenses.agpl3Plus; + maintainers = with lib.maintainers; [ aucub ]; + platforms = lib.platforms.linux; + }; +}