config/guix/profile-to-manifest: Include version when non-default.
parent
8811706cbc
commit
ca08f44972
|
@ -2,18 +2,38 @@
|
||||||
;; guile -s FILE ~/.guix-profile
|
;; guile -s FILE ~/.guix-profile
|
||||||
|
|
||||||
(use-modules (guix profiles)
|
(use-modules (guix profiles)
|
||||||
|
(gnu packages) ; fold-packages
|
||||||
|
(guix packages) ; package structure
|
||||||
(ice-9 match)
|
(ice-9 match)
|
||||||
(ice-9 pretty-print))
|
(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)
|
(define (guix-manifest where)
|
||||||
(sort (map (lambda (entry)
|
(sort (map (lambda (entry)
|
||||||
(let ((out (manifest-entry-output entry)))
|
(let* ((name (manifest-entry-name entry))
|
||||||
(if (string= out "out")
|
(out (manifest-entry-output entry))
|
||||||
(manifest-entry-name entry)
|
(version (manifest-entry-version entry))
|
||||||
(format #f "~a:~a"
|
(default-version (match (packages-by-name name)
|
||||||
(manifest-entry-name entry)
|
((first-name . rest)
|
||||||
(manifest-entry-output entry)))))
|
(package-version
|
||||||
(manifest-entries (profile-manifest where)))
|
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<?))
|
string<?))
|
||||||
|
|
||||||
;; Thanks to Ivan Vilata-i-Balaguer for this:
|
;; Thanks to Ivan Vilata-i-Balaguer for this:
|
||||||
|
|
Loading…
Reference in New Issue