config/guix/profile-to-manifest: Include version when non-default.

master
Pierre Neidhardt 2019-06-25 09:44:45 +02:00
parent 8811706cbc
commit ca08f44972
1 changed files with 27 additions and 7 deletions

View File

@ -2,18 +2,38 @@
;; guile -s FILE ~/.guix-profile
(use-modules (guix profiles)
(gnu packages) ; fold-packages
(guix packages) ; package structure
(ice-9 match)
(ice-9 pretty-print))
(define (packages-by-name name)
(fold-packages (lambda (package list)
(if (string=? (package-name package) name)
(cons package list)
list))
'()))
(define (guix-manifest where)
(sort (map (lambda (entry)
(let ((out (manifest-entry-output entry)))
(if (string= out "out")
(manifest-entry-name entry)
(format #f "~a:~a"
(manifest-entry-name entry)
(manifest-entry-output entry)))))
(manifest-entries (profile-manifest where)))
(let* ((name (manifest-entry-name entry))
(out (manifest-entry-output entry))
(version (manifest-entry-version entry))
(default-version (match (packages-by-name name)
((first-name . rest)
(package-version
first-name))
(else #f))))
(string-append name
(if (and default-version
(not (string= version default-version)))
(format #f "@~a" version)
"")
(if (string= out "out")
""
(format #f ":~a" out)))))
(manifest-entries (profile-manifest where)))
string<?))
;; Thanks to Ivan Vilata-i-Balaguer for this: