(use-modules (guix) (gnu) (gnu packages file) (ice-9 match) (srfi srfi-1) (srfi srfi-26)) (define (file-input? inputs) (find (match-lambda ((label (? package? p) . _) (eq? p file)) (_ #f)) inputs)) (define (packages-using-file) (fold-packages (lambda (package result) (if (or (file-input? (package-inputs package)) (file-input? (package-propagated-inputs package))) (cons package result) result)) '())) (define (has-runtime-dependency-on-file? package) (with-store store (let* ((file (package-full-name file)) (drv (package-derivation store package)) (outs (map cdr (derivation->output-paths drv))) (info (substitutable-path-info store outs))) (find (lambda (info) (find (cut string-suffix? file <>) (substitutable-references info))) info)))) (define (packages-with-runtime-dependency-on-file) (filter has-runtime-dependency-on-file? (packages-using-file)))