diff options
Diffstat (limited to 'pkgs/development/r-modules/wrapper.nix')
-rw-r--r-- | pkgs/development/r-modules/wrapper.nix | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/pkgs/development/r-modules/wrapper.nix b/pkgs/development/r-modules/wrapper.nix index 3b9a9b184506..25c765060279 100644 --- a/pkgs/development/r-modules/wrapper.nix +++ b/pkgs/development/r-modules/wrapper.nix @@ -1,12 +1,19 @@ { stdenv, R, makeWrapper, recommendedPackages, packages }: -stdenv.mkDerivation { +stdenv.mkDerivation rec { name = R.name + "-wrapper"; buildInputs = [makeWrapper R] ++ recommendedPackages ++ packages; unpackPhase = ":"; + # This filename is used in 'installPhase', but needs to be + # referenced elsewhere. This will be relative to this package's + # path. + passthru = { + fixLibsR = "fix_libs.R"; + }; + installPhase = '' mkdir -p $out/bin cd ${R}/bin @@ -14,6 +21,17 @@ stdenv.mkDerivation { makeWrapper ${R}/bin/$exe $out/bin/$exe \ --prefix "R_LIBS_SITE" ":" "$R_LIBS_SITE" done + # RStudio (and perhaps other packages) overrides the R_LIBS_SITE + # which the wrapper above applies, and as a result packages + # installed in the wrapper (as in the method described in + # https://nixos.org/nixpkgs/manual/#r-packages) aren't visible. + # The below turns R_LIBS_SITE into some R startup code which can + # correct this. + echo "# Autogenerated by wrapper.nix from R_LIBS_SITE" > $out/${passthru.fixLibsR} + echo -n ".libPaths(c(.libPaths(), \"" >> $out/${passthru.fixLibsR} + echo -n $R_LIBS_SITE | sed -e 's/:/", "/g' >> $out/${passthru.fixLibsR} + echo -n "\"))" >> $out/${passthru.fixLibsR} + echo >> $out/${passthru.fixLibsR} ''; meta = { |