(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>
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 <cross-package-job>)
gexp-system gexp-target)
(match-record cross-package-job <cross-package-job>
(package system target)
(with-monad %store-monad
(package->cross-derivation package
(or target gexp-target)
(or system gexp-system)))))