I do not think you can have both. Packrat allow to use CRAN repo or CRAN-like repo, some remote source (like GH) or to have a local directory of
sources.
You can disable all package download to a src project folder with snapshot.sources = FALSE in argument or as packrat option. By default it is TRUE.
By default, you can also ignore some folder from control version : vcs.ignore.src and vcs.ignore.lib. The second is TRUE by default, but the first one is FALSE. So
src are in git repo by default but not
installed library folders.
About local repository, it is explained in the README. packrat::set_opts(local.repos = ...) allows you to set up the repo, and all packages installed by packrat::install_local(), they will be restored from the local.repos folder.
You cannot select some of the
to not be downloaded and others to be downloaded. However, you can set up in the local.repos directory the
you want to be present and disable download from CRAN for other. However, this is a manual step to set up the local repos (a helper function could be useful here to download and untar the src in folders).
Reminder: the options of packrat can be set as global through options or environment variable. You can then change the default on you system. Otherwise, it could be local to the projet through the packrat.opts file that you can put on git source tracking like the lockfile.
Hope it helps.