 95dfbe2d63
			
		
	
	
		95dfbe2d63
		
	
	
	
	
		
			
			Reorganize the chapters into parts and reduce the TOC depth to make the TOC useful again. The top-level TOC is very brief, but that is fine because every part will have its own TOC. Section titles of languages/frameworks are also simplified to just the name of the language/framework.
		
			
				
	
	
	
		
			2.9 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	R
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 uses a standard set of packages and ignores any custom R
environments or installed packages you may have.  To create a custom
environment, see rstudioWrapper, which functions similarly to
rWrapper:
{
    packageOverrides = super: let self = super.pkgs; in
    {
        rstudioEnv = super.rstudioWrapper.override {
            packages = with self.rPackages; [
                dplyr
                ggplot2
                reshape2
                ];
        };
    };
}
Then like above, nix-env -f "<nixpkgs>" -iA rstudioEnv will install
this into your user profile.
Alternatively, you can create a self-contained shell.nix without the need to
modify any configuration files:
{ pkgs ? import <nixpkgs> {}
}:
pkgs.rstudioWrapper.override {
  packages = with pkgs.rPackages; [ dplyr ggplot2 reshape2 ];
}
Executing nix-shell will then drop you into an environment equivalent to the
one above. If you need additional packages just add them to the list and
re-enter the shell.
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
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