I'm always frustrated when running R --no-save --no-restore from the integrated terminal has the different behavior from the extension commands R: Create R terminal and R: Attach Active Terminal (click R: not attach button in the bottom status bar).
Currently, the whole extension always uses process.env to access environment variables. However, these environment variables belongs to the vscode process, and are inherited from the parent process which launches vscode process. Multiple vscode instances inherit process.env from the first vscode instance if --user-data-dir is not used. This makes process.env clutter.
For example, if one use conda or nix, then to make vscode see all environment variables exported by conda or nix, one has to activate conda or nix in a shell, and then launch vscode from that shell. Otherwise, the conda and nix environment variables are not in process.env. Currently, vscode-R provide configurations r.rpath.linux and r.rterm.linux and r.libPaths. However, r.libPaths is passed to VSCR_LIB_PATHS instead of the standard R_LIB_PATHS which is not used by R: Create R terminal and R: Attach Active Terminal. I think it will better to pass r.libPaths configuration to the standard R_LIB_PATHS.
A better solution would be to detect conda environment and default.nix file and parse their environment variables. Then add these environment variables to vscode.ExtensionContext.environmentVariableCollection in the scope of current workspace.