On 2022-07-06 19:13, Antero Mejr via Guix-patches via wrote: > * guix/scripts/package.scm (list-installed): New procedure. > * guix/scripts/home.scm: Use it. > --- > guix/scripts/home.scm | 13 +++++++++++++ > guix/scripts/package.scm | 30 +++++++++++++++++------------- > 2 files changed, 30 insertions(+), 13 deletions(-) > > diff --git a/guix/scripts/home.scm b/guix/scripts/home.scm > index 0f5c3388a1..7a5078fe3b 100644 > --- a/guix/scripts/home.scm > +++ b/guix/scripts/home.scm > @@ -4,6 +4,7 @@ > ;;; Copyright © 2021 Pierre Langlois > ;;; Copyright © 2021 Oleg Pykhalov > ;;; Copyright © 2022 Ludovic Courtès > +;;; Copyright © 2022 Antero Mejr > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -143,6 +144,10 @@ (define (show-help) > use BACKEND for 'extension-graph' and 'shepherd-graph'")) > (newline) > (display (G_ " > + -I, --list-installed[=REGEXP] > + list installed packages matching REGEXP")) > + (newline) > + (display (G_ " > -h, --help display this help and exit")) > (display (G_ " > -V, --version display version information and exit")) > @@ -183,6 +188,14 @@ (define %options > (option '("graph-backend") #t #f > (lambda (opt name arg result) > (alist-cons 'graph-backend arg result))) > + (option '(#\I "list-installed") #f #t > + (lambda (opt name arg result) > + (pretty-print-table > + (reverse > + (list-installed (or arg "") > + (list > + (string-append %guix-home "/profile"))))) > + (exit 0))) > > ;; Container options. > (option '(#\N "network") #f #f > diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm > index 99a6cfaa29..144d18a626 100644 > --- a/guix/scripts/package.scm > +++ b/guix/scripts/package.scm > @@ -11,6 +11,7 @@ > ;;; Copyright © 2020 Simon Tournier > ;;; Copyright © 2018 Steve Sprang > ;;; Copyright © 2022 Josselin Poiret > +;;; Copyright © 2022 Antero Mejr > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -773,6 +774,21 @@ (define absolute > > (add-indirect-root store absolute)) > > +(define-public (list-installed regexp profiles) > + (let* ((regexp (and regexp (make-regexp* regexp regexp/icase))) > + (manifest (concatenate-manifests > + (map profile-manifest profiles))) > + (installed (manifest-entries manifest))) > + (leave-on-EPIPE > + (let ((rows (filter-map > + (match-lambda > + (($ name version output path _) > + (and (regexp-exec regexp name) > + (list name (or version "?") output path)))) > + installed))) > + ;; Show most recently installed packages last. > + (reverse rows))))) > + > > ;;; > ;;; Queries and actions. > @@ -824,19 +840,7 @@ (define (diff-profiles profile numbers) > #t) > > (('list-installed regexp) > - (let* ((regexp (and regexp (make-regexp* regexp regexp/icase))) > - (manifest (concatenate-manifests > - (map profile-manifest profiles))) > - (installed (manifest-entries manifest))) > - (leave-on-EPIPE > - (let ((rows (filter-map > - (match-lambda > - (($ name version output path _) > - (and (regexp-exec regexp name) > - (list name (or version "?") output path)))) > - installed))) > - ;; Show most recently installed packages last. > - (pretty-print-table (reverse rows))))) > + (pretty-print-table (list-installed regexp profiles)) > #t) > > (('list-available regexp) -I --list-installed works great, thank you. Just a thought for future: Maybe it would be useful to have another option to list all the packages in profile, including propagated. -- Best regards, Andrew Tropin