Change:
Describe the bug The package doesn't install all dependent applications for file formats that it supports searching across, so if installed on a minimal system it issues errors. To Reproduce Steps to reproduce the behavior: a minimal system: to search across a directory with ZIP archives within. Will get the following error:
adapter: zip Error: Unsupported Zip archive: The file length is not available in the local header
$ rga test . ./parse- preprocessor command failed: '"rga-preproc" "./parse-"':
adapter: zip Error: Unsupported Zip archive: The file length is not available in the local header
$ $ nix run -c nix-info -m system: host os: multi-user?: sandbox: version: channels(root): nixpkgs: yaml attribute: ripgrep-all
The (known) missing dependencies are , , , , , and . Adding alone would likely increase the closure size of the package significantly. Do users of ripgrep-all expect all of its supported adapters to be available? I'm assuming that on other distros, users install the dependencies for the adapters they want to use. I see a few possibilities: the dependencies to support all the adapters. a "full" package which features support for all the adapters. a patch which forces ripgrep-all to look for executable dependencies in . This should allow users to install executable dependencies (like zip), similar to how they would do in other distros. Pinging the maintainer for insight.
Point 3 is already there. will look for executables in the , so it shouldn't necessary to pin it to a folder (especially since there are multiple ways to install binaries). Point 1 and 2 can be made available by doing something similar to what's done here: then using and prepending to the the selected binaries. That would also allow for overriding through an overlay.
Thank you, , I'll create a PR, but it will be merged into the master branch. If you need this backported to NixOS Loris (19.09) let me know so I can request it in the PR.
Note: The error about the unsupported zip file is not due to a missing dependency, but rather due to the Rust zip library used by ripgrep-all. See
I don't think it needs back porting… happy to wait. It might be related to the name of the package but my expectation was for all to be supported due to its name ripgrep-all…
tesseract/imagemagick are not enabled by default since it is very slow and not useful most of the time. All the other deps are used by default.

Discussion:
{ stdenv, lib, fetchFromGitHub, rustPlatform, makeWrapper, ffmpeg <del> , pandoc, poppler_utils, ripgrep, Security </del> <ins> , pandoc, poppler_utils, ripgrep, Security, imagemagick, tesseract </ins> }: rustPlatform.buildRustPackage rec {

postInstall = '' wrapProgram $out/bin/rga  <del> --prefix PATH ":" "${lib.makeBinPath [ ffmpeg pandoc poppler_utils ripgrep ]}" </del> <ins> --prefix PATH ":" "${lib.makeBinPath [ ffmpeg pandoc poppler_utils ripgrep imagemagick tesseract ]}" </ins> ''; <ins> # Use upstream's example data to run a couple of queries to ensure the dependencies # for all of the adapters are available. installCheckPhase = '' set -e export PATH="$PATH:$out/bin" test1=$(rga --rga-no-cache "hello" exampledir/ | wc -l) test2=$(rga --rga-no-cache --rga-adapters=tesseract "crate" exampledir/screenshot.png | wc -l) if [ $test1 != 26 ] then echo "ERROR: test1 failed! Could not find the word 'hello' 26 times in the sample data." exit 1 fi if [ $test2 != 1 ] then echo "ERROR: test2 failed! Could not find the word 'crate' in the screenshot." exit 1 fi ''; doInstallCheck = true; </ins> meta = with stdenv.lib; { description = "Ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, and more"; longDescription = ''