nixpkgs/pkgs/development/r-modules
Domen Kožar ffe935ee86 Merge pull request #23104 from dtzWill/fix/generate-shell
R/generate-shell: Use R from current tree, fix missing wget dep.
2017-02-27 14:06:17 +01:00
..
patches
bioc-annotation-packages.nix R: 3.2.4 -> 3.3.2 2017-02-24 15:22:12 +11:00
bioc-experiment-packages.nix R: 3.2.4 -> 3.3.2 2017-02-24 15:22:12 +11:00
bioc-packages.nix R: 3.2.4 -> 3.3.2 2017-02-24 15:22:12 +11:00
cran-packages.nix R: 3.2.4 -> 3.3.2 2017-02-24 15:22:12 +11:00
default.nix Merge pull request #22817 from jbedo/r 2017-02-27 14:02:13 +01:00
generate-r-packages.R R: 3.2.4 -> 3.3.2 2017-02-24 15:22:12 +11:00
generate-shell.nix R/generate-shell: Use R from current tree, fix missing wget dep. 2017-02-23 07:46:20 -06:00
generic-builder.nix darwin: R: provide gettext and gfortran as buildInputs on Darwin. 2016-07-22 13:31:40 -04:00
irkernel-packages.nix
README.md r-modules/README.md: mention generate-shell.nix 2017-02-22 04:48:50 +00:00
test-evaluation.nix
wrapper.nix RStudio: Optionally allow packages from custom R environment 2017-01-27 18:54:50 -05:00

R packages

Installation

Define an environment for R that contains all the libraries that you'd like to use by adding the following snippet to your $HOME/.config/nixpkgs/config.nix file:

{
    packageOverrides = super: let self = super.pkgs; in
    {

        rEnv = super.rWrapper.override {
            packages = with self.rPackages; [ 
                devtools
                ggplot2
                reshape2
                yaml
                optparse
                ];
        };
    };
}

Then you can use nix-env -f "<nixpkgs>" -iA rEnv to install it into your user profile. The set of available libraries can be discovered by running the command nix-env -f "<nixpkgs>" -qaP -A rPackages. The first column from that output is the name that has to be passed to rWrapper in the code snipped above.

However, if you'd like to add a file to your project source to make the environment available for other contributors, you can create a default.nix file like so:

let
  pkgs = import <nixpkgs> {};
  stdenv = pkgs.stdenv;
in with pkgs; {
  myProject = stdenv.mkDerivation {
    name = "myProject";
    version = "1";
    src = if pkgs.lib.inNixShell then null else nix;

    buildInputs = with rPackages; [
      R
      ggplot2
      knitr
    ];
  };
}

and then run nix-shell . to be dropped into a shell with those packages available.

RStudio

RStudio by default will not use the libraries installed like above. You must override its R version with your custom R environment, and set useRPackages to true, like below:

{
    packageOverrides = super: let self = super.pkgs; in
    {

        rEnv = super.rWrapper.override {
            packages = with self.rPackages; [ 
                devtools
                ggplot2
                reshape2
                yaml
                optparse
                ];
        };
        rstudioEnv = super.rstudio.override {
            R = rEnv;
            useRPackages = true;
        };
    };
}

Then like above, nix-env -f "<nixpkgs>" -iA rstudioEnv will install this into your user profile.

Updating the package set

nix-shell generate-shell.nix

Rscript generate-r-packages.R cran  > cran-packages.nix.new
mv cran-packages.nix.new cran-packages.nix

Rscript generate-r-packages.R bioc  > bioc-packages.nix.new
mv bioc-packages.nix.new bioc-packages.nix

Rscript generate-r-packages.R irkernel  > irkernel-packages.nix.new
mv irkernel-packages.nix.new irkernel-packages.nix

generate-r-packages.R <repo> reads <repo>-packages.nix, therefor the renaming.

Testing if the Nix-expression could be evaluated

nix-build test-evaluation.nix --dry-run

If this exits fine, the expression is ok. If not, you have to edit default.nix