about summary refs log tree commit diff
path: root/pkgs/development/r-modules/wrapper.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/r-modules/wrapper.nix')
-rw-r--r--pkgs/development/r-modules/wrapper.nix20
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 = {