(define-module (ruther packages ripgrep-all) #:use-module (srfi srfi-26) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix utils) #:use-module (guix gexp) #:use-module (guix packages) #:use-module (guix git-download) #:use-module (guix download) #:use-module (gnu packages video) #:use-module (gnu packages sqlite) #:use-module (gnu packages haskell-xyz) #:use-module (gnu packages pdf) #:use-module (gnu packages rust-apps) #:use-module (gnu packages compression) #:use-module (gnu packages terminals) #:use-module (gnu packages pkg-config) #:use-module (guix build-system cargo) #:use-module (ruther packages rust-crates)) (define-public ripgrep-all (let ((wrap-paths (list "ffmpeg" "pandoc" "poppler" "ripgrep" "zip" "fzf"))) (package (name "ripgrep-all") (version "0.10.9") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/phiresky/ripgrep-all") (commit (string-append "v" version)))) (file-name (string-append name "-" version "-checkout")) (sha256 (base32 "1cks8b9z8fl1rs2xgklgsis79w9bylfmxxvns2adwsiilkpsxzxg")))) (build-system cargo-build-system) (native-inputs (list pkg-config xz)) (inputs `((,zstd "lib") ,sqlite ,(@ (gnu packages video) ffmpeg) ,pandoc ,poppler ,ripgrep ,zip ,fzf ,@(my-cargo-inputs 'ripgrep-all))) (arguments (list #:install-source? #f #:phases #~(modify-phases %standard-phases (add-after 'install 'wrap-with-path (lambda* _ (let* ((bin-dir (string-append #$output "/bin/")) (wrap-bin-folders (map (lambda (pkg) (string-append pkg "/bin")) '#$(map (cut this-package-input <>) wrap-paths))) (wrap-bin-path (string-join wrap-bin-folders ":"))) (for-each (lambda (bin) (wrap-program bin `("PATH" ":" prefix (,wrap-bin-path)))) (find-files bin-dir)))))))) (home-page "https://github.com/phiresky/ripgrep-all") (synopsis "rga: ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, etc") (description "This package provides rga, rga is a line-oriented search tool that allows you to look for a regex in a multitude of file types. rga wraps the awesome ripgrep and enables it to search in pdf, docx, sqlite, jpg, movie subtitles (mkv, mp4), etc.") (license license:agpl3+))))