From ca08f44972dc73123816f4d326981b9966c9d9b5 Mon Sep 17 00:00:00 2001 From: Pierre Neidhardt Date: Tue, 25 Jun 2019 09:44:45 +0200 Subject: [PATCH] config/guix/profile-to-manifest: Include version when non-default. --- .config/guix/profile-to-manifest.scm | 34 ++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/.config/guix/profile-to-manifest.scm b/.config/guix/profile-to-manifest.scm index 8af9a2f0..efee076f 100644 --- a/.config/guix/profile-to-manifest.scm +++ b/.config/guix/profile-to-manifest.scm @@ -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