(define-module (cross-shells cross-packages) #:use-module (guix records) #:use-module (guix monads) #:use-module (ice-9 match) #:use-module (guix packages) #:use-module (guix store) #:use-module (guix gexp) #:export (cross-package-job cross-package-job-package cross-package-job-system cross-package-job-target)) (define-record-type* cross-package-job make-cross-package-job cross-package-job? ; The package to build (package cross-package-job-package) ; If #f, use the system selected by ungexping (system cross-package-job-system (default #f)) ; If #f, use the target selected by ungexping (target cross-package-job-target (default #f))) (define-gexp-compiler (compile-cross-package-job (cross-package-job ) gexp-system gexp-target) (match-record cross-package-job (package system target) (with-monad %store-monad (package->cross-derivation package (or target gexp-target) (or system gexp-system)))))