(use-modules (guix packages) (guix build-system trivial) (guix gexp) (gnu packages base) (gnu packages bash) (gnu packages statistics) (gnu packages cran)) (package (name "r-hello") (version "0.0.0") (source (plain-file "empty" "")) (build-system trivial-build-system) (arguments '(#:modules ((guix build utils)) #:builder (begin (use-modules (guix build utils)) (let ((out (assoc-ref %outputs "out")) (r-in (assoc-ref %build-inputs "r-minimal")) (bash-in (assoc-ref %build-inputs "bash"))) (mkdir out) (mkdir (string-append out "/bin")) ;; Bug? PATH is not set (setenv "PATH" (string-append bash-in "/bin")) (call-with-output-file (string-append out "/bin/hello") (lambda (port) (format port "#!~a/bin/Rscript library (\"magrittr\") data <- (tibble::tibble (x = 1:10) %>% dplyr::mutate (y = x ^ 2)) print (data) " r-in))) (chmod (string-append out "/bin/hello") #o755) (wrap-program (string-append out "/bin/hello") `("R_LIBS_SITE" ":" = ,(map (lambda (r-package) ;; R_LIBS_SITE should point to the site-library ;; folder of the packages (string-append (assoc-ref %build-inputs r-package) "/site-library")) ;; Here are my R dependencies: '("r-magrittr" "r-tibble" "r-dplyr" ;; However, running hello requires these recursive ;; dependencies. How am I supposed to know? What if ;; they change with future versions of my ;; dependencies? "r-rlang" "r-vctrs" "r-r6" "r-generics" "r-glue" "r-lifecycle" "r-ellipsis" "r-pillar" "r-crayon" "r-pkgconfig" "r-tidyselect" "r-purrr" "r-cli" "r-assertthat" "r-fansi" "r-utf8")))))))) (native-inputs `(("bash" ,bash))) (inputs `(("r-minimal" ,r-minimal) ("bash" ,bash))) (propagated-inputs `(("r-magrittr" ,r-magrittr) ("r-tibble" ,r-tibble) ("r-dplyr" ,r-dplyr))) (synopsis "A script written in R") (description "How can I list the recursive R dependencies?") (home-page "http://example.com") (license '...))