attached is a patch series that gives us a recursive CRAN importer. I still haven't documented it in the manual, because I'm not sure if the implementation is acceptable.
Simply put, the procedure that produces a package expression now returns multiple values. The first is the package expression, the second is a list of dependencies (with their upstream names). This allows us to go through that list and check if any unpackaged inputs are among them. The recursive importer stops when a package cannot be imported (e.g. when a bioconductor package has unpackaged CRAN dependencies), or when all packages either already existed at runtime or have been packaged. To make this work well I had to create a list of packages that should not be imported (because they are part of the default R installation), and I had to make sure that R packages always get a predictable Guix package name. Comments are very welcome! ~~ Ricardo