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.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
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.