;; Run with: ;; 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* ((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))) stringmanifest ',(guix-manifest where)))) (_ (error "Please provide the path to a Guix profile.")))