Merge pull request #119126 from fabaff/pycomfoconnect
[NixPkgs.git] / pkgs / development / r-modules / wrapper-rstudio.nix
blob5eeac8fed30e90fae94556d88dd0113099bd84d7
1 { lib, runCommand, R, rstudio, wrapQtAppsHook, recommendedPackages, packages, qtbase }:
3 let
4   qtVersion = with lib.versions; "${major qtbase.version}.${minor qtbase.version}";
5 in
6 runCommand (rstudio.name + "-wrapper") {
7   preferLocalBuild = true;
8   allowSubstitutes = false;
10   nativeBuildInputs = [wrapQtAppsHook];
11   dontWrapQtApps = true;
13   buildInputs = [R rstudio] ++ recommendedPackages ++ packages;
15   # rWrapper points R to a specific set of packages by using a wrapper
16   # (as in https://nixos.org/nixpkgs/manual/#r-packages) which sets
17   # R_LIBS_SITE.  Ordinarily, it would be possible to make RStudio use
18   # this same set of packages by simply overriding its version of R
19   # with the wrapped one, however, RStudio internally overrides
20   # R_LIBS_SITE.  The below works around this by turning R_LIBS_SITE
21   # into an R file (fixLibsR) which achieves the same effect, then
22   # uses R_PROFILE_USER to load this code at startup in RStudio.
23   fixLibsR = "fix_libs.R";
26 mkdir $out
27 ln -s ${rstudio}/share $out
28 echo "# Autogenerated by wrapper-rstudio.nix from R_LIBS_SITE" > $out/$fixLibsR
29 echo -n ".libPaths(c(.libPaths(), \"" >> $out/$fixLibsR
30 echo -n $R_LIBS_SITE | sed -e 's/:/", "/g' >> $out/$fixLibsR
31 echo -n "\"))" >> $out/$fixLibsR
32 echo >> $out/$fixLibsR
33 makeQtWrapper ${rstudio}/bin/rstudio $out/bin/rstudio \
34   --set R_PROFILE_USER $out/$fixLibsR