config/guix/profile-to-manifest: Include version when non-default.
parent
8811706cbc
commit
ca08f44972
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue