diff options
Diffstat (limited to 'pkgs/development/r-modules/wrapper-rstudio.nix')
-rw-r--r-- | pkgs/development/r-modules/wrapper-rstudio.nix | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/pkgs/development/r-modules/wrapper-rstudio.nix b/pkgs/development/r-modules/wrapper-rstudio.nix new file mode 100644 index 000000000000..dd9b0e9c5381 --- /dev/null +++ b/pkgs/development/r-modules/wrapper-rstudio.nix @@ -0,0 +1,33 @@ +{ stdenv, R, rstudio, makeWrapper, recommendedPackages, packages }: + +stdenv.mkDerivation rec { + + name = rstudio.name + "-wrapper"; + + buildInputs = [makeWrapper R rstudio] ++ recommendedPackages ++ packages; + + unpackPhase = ":"; + + # rWrapper points R to a specific set of packages by using a wrapper + # (as in https://nixos.org/nixpkgs/manual/#r-packages) which sets + # R_LIBS_SITE. Ordinarily, it would be possible to make RStudio use + # this same set of packages by simply overriding its version of R + # with the wrapped one, however, RStudio internally overrides + # R_LIBS_SITE. The below works around this by turning R_LIBS_SITE + # into an R file (fixLibsR) which achieves the same effect, then + # uses R_PROFILE_USER to load this code at startup in RStudio. + fixLibsR = "fix_libs.R"; + installPhase = '' + mkdir $out + echo "# Autogenerated by wrapper-rstudio.nix from R_LIBS_SITE" > $out/${fixLibsR} + echo -n ".libPaths(c(.libPaths(), \"" >> $out/${fixLibsR} + echo -n $R_LIBS_SITE | sed -e 's/:/", "/g' >> $out/${fixLibsR} + echo -n "\"))" >> $out/${fixLibsR} + echo >> $out/${fixLibsR} + makeWrapper ${rstudio}/bin/rstudio $out/bin/rstudio --set R_PROFILE_USER $out/${fixLibsR} + ''; + + meta = { + platforms = stdenv.lib.platforms.unix; + }; +} |