Hi, I'm attaching the diff. Some comments: 1. 'psd-list' is a potential bottleneck. It will cause problems when we have more packages. If it's possible to evaluate it lazily, I'll rewrite it. (I haven't checked yet.) 2. The above is valid for 'package?' too. Also, it's probably possible to rewrite it using 'match', but I haven't found a way to do so. 3. The command-line part just mimics 'list-available'. (Maybe there is a better way.) 4. I've noticed that 'fold-packages' returns duplicates. Should it be fixed? Should I filter the output instead? Examples: # ./pre-inst-env guile scheme@(guile-user)> ,use (guix ui) (gnu packages) (guix packages) scheme@(guile-user)> (for-each display (sort (map (lambda (x) (string-append (package-name x) " " (location->string (package-location x)) "\n")) (fold-packages cons '())) string