I used the existing anchors generated by Docbook, so the anchor part should be a no-op. This could be useful depending on the infrastructure we choose to use, and it is better to be explicit than rely on Docbook's id generating algorithms. I got rid of the metadata segments of the Markdown files, because they are outdated, inaccurate, and could make people less willing to change them without speaking with the author.
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