(define-record-type* <custom-profile-configuration>
  custom-profile-configuration make-custom-profile-configuration
  custom-profile-configuration?
  (name custom-profile-name (default "profile"))
  (packages custom-profile-packages (default (list))))

(define (custom-profile-entries config)
  "Return a system entry for the profile containing PACKAGES."
  (mlet %store-monad ((_ (current-target-system)))
    (return `((,(custom-profile-name config)
               ,(profile
                 (content (packages->manifest
                           (map identity
                                (delete-duplicates
                                 (custom-profile-packages config) eq?))))))))))

(define home-custom-profile-service-type
  (service-type (name 'custom-profile)
                (extensions
                 (list (service-extension home-service-type
                                          custom-profile-entries)))
                (description
                 "This is a custom profile and can be found in
@file{~/.guix-home/custom-profile}.")))

Generated by Ricardo Wurmus using scpaste at Sat Oct 14 16:10:08 2023. CEST. (original)