Hi! Thanks for digging into this! Ricardo Wurmus skribis: > +(define inferior-package->manifest-entry > + (let ((results vlist-null)) > + (lambda* (package #:optional (output "out") > + #:key (parent (delay #f)) > + (properties '())) > + "Return a manifest entry for the OUTPUT of package PACKAGE." > + (or (and=> (vhash-assoc package results) cdr) There’s a catch here: OUTPUT should be taken into account. Also it’s better to use eq?-ness but… I realized ‘inferior-package-inputs’ & co. do not preserve eq?-ness. So I came up with the attached patch, which addresses these two issues. For me the ‘packages->manifest’ phase goes from 13s to 2.5s (19s to 4.6s for the whole script), which is still a lot, but that was without the other patches. Thoughts? Ludo’.