Move all nixpkgs doc files in to the doc directory
This makes a makefile-driven developer workflow nicer.
This commit is contained in:
parent
a0c525bd0a
commit
92d53362d4
|
@ -45,45 +45,45 @@ pkgs.stdenv.mkDerivation {
|
||||||
cp -s '${sources-langs}'/* ./languages-frameworks
|
cp -s '${sources-langs}'/* ./languages-frameworks
|
||||||
''
|
''
|
||||||
+ toDocbook {
|
+ toDocbook {
|
||||||
inputFile = ./introduction.md;
|
inputFile = ./introduction.chapter.md;
|
||||||
outputFile = "introduction.xml";
|
outputFile = "introduction.chapter.xml";
|
||||||
useChapters = true;
|
useChapters = true;
|
||||||
}
|
}
|
||||||
+ toDocbook {
|
+ toDocbook {
|
||||||
inputFile = ./shell.md;
|
inputFile = ./shell.section.md;
|
||||||
outputFile = "shell.xml";
|
outputFile = "shell.section.xml";
|
||||||
}
|
}
|
||||||
+ toDocbook {
|
+ toDocbook {
|
||||||
inputFile = ./languages-frameworks/python.md;
|
inputFile = ./languages-frameworks/python.section.md;
|
||||||
outputFile = "./languages-frameworks/python.xml";
|
outputFile = "./languages-frameworks/python.section.xml";
|
||||||
}
|
}
|
||||||
+ toDocbook {
|
+ toDocbook {
|
||||||
inputFile = ./languages-frameworks/haskell.md;
|
inputFile = ./languages-frameworks/haskell.section.md;
|
||||||
outputFile = "./languages-frameworks/haskell.xml";
|
outputFile = "./languages-frameworks/haskell.section.xml";
|
||||||
}
|
}
|
||||||
+ toDocbook {
|
+ toDocbook {
|
||||||
inputFile = ../pkgs/development/idris-modules/README.md;
|
inputFile = ./languages-frameworks/idris.section.md;
|
||||||
outputFile = "languages-frameworks/idris.xml";
|
outputFile = "languages-frameworks/idris.section.xml";
|
||||||
}
|
}
|
||||||
+ toDocbook {
|
+ toDocbook {
|
||||||
inputFile = ../pkgs/development/node-packages/README.md;
|
inputFile = ./languages-frameworks/node.section.md;
|
||||||
outputFile = "languages-frameworks/node.xml";
|
outputFile = "languages-frameworks/node.section.xml";
|
||||||
}
|
}
|
||||||
+ toDocbook {
|
+ toDocbook {
|
||||||
inputFile = ../pkgs/development/r-modules/README.md;
|
inputFile = ./languages-frameworks/r.section.md;
|
||||||
outputFile = "languages-frameworks/r.xml";
|
outputFile = "languages-frameworks/r.section.xml";
|
||||||
}
|
}
|
||||||
+ toDocbook {
|
+ toDocbook {
|
||||||
inputFile = ./languages-frameworks/rust.md;
|
inputFile = ./languages-frameworks/rust.section.md;
|
||||||
outputFile = "./languages-frameworks/rust.xml";
|
outputFile = "./languages-frameworks/rust.section.xml";
|
||||||
}
|
}
|
||||||
+ toDocbook {
|
+ toDocbook {
|
||||||
inputFile = ./languages-frameworks/vim.md;
|
inputFile = ./languages-frameworks/vim.section.md;
|
||||||
outputFile = "./languages-frameworks/vim.xml";
|
outputFile = "./languages-frameworks/vim.section.xml";
|
||||||
}
|
}
|
||||||
+ toDocbook {
|
+ toDocbook {
|
||||||
inputFile = ./languages-frameworks/emscripten.md;
|
inputFile = ./languages-frameworks/emscripten.section.md;
|
||||||
outputFile = "./languages-frameworks/emscripten.xml";
|
outputFile = "./languages-frameworks/emscripten.section.xml";
|
||||||
}
|
}
|
||||||
+ ''
|
+ ''
|
||||||
echo ${lib.nixpkgsVersion} > .version
|
echo ${lib.nixpkgsVersion} > .version
|
||||||
|
|
39
doc/languages-frameworks/idris.section.md
Normal file
39
doc/languages-frameworks/idris.section.md
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
Idris packages
|
||||||
|
==============
|
||||||
|
|
||||||
|
This directory contains build rules for idris packages. In addition,
|
||||||
|
it contains several functions to build and compose those packages.
|
||||||
|
Everything is exposed to the user via the `idrisPackages` attribute.
|
||||||
|
|
||||||
|
callPackage
|
||||||
|
------------
|
||||||
|
|
||||||
|
This is like the normal nixpkgs callPackage function, specialized to
|
||||||
|
idris packages.
|
||||||
|
|
||||||
|
builtins
|
||||||
|
---------
|
||||||
|
|
||||||
|
This is a list of all of the libraries that come packaged with Idris
|
||||||
|
itself.
|
||||||
|
|
||||||
|
build-idris-package
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
A function to build an idris package. Its sole argument is a set like
|
||||||
|
you might pass to `stdenv.mkDerivation`, except `build-idris-package`
|
||||||
|
sets several attributes for you. See `build-idris-package.nix` for
|
||||||
|
details.
|
||||||
|
|
||||||
|
build-builtin-package
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
A version of `build-idris-package` specialized to builtin libraries.
|
||||||
|
Mostly for internal use.
|
||||||
|
|
||||||
|
with-packages
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Bundle idris together with a list of packages. Because idris currently
|
||||||
|
only supports a single directory in its library path, you must include
|
||||||
|
all desired libraries here, including `prelude` and `base`.
|
|
@ -17,20 +17,20 @@ such as Perl or Haskell. These are described in this chapter.</para>
|
||||||
<xi:include href="bower.xml" />
|
<xi:include href="bower.xml" />
|
||||||
<xi:include href="coq.xml" />
|
<xi:include href="coq.xml" />
|
||||||
<xi:include href="go.xml" />
|
<xi:include href="go.xml" />
|
||||||
<xi:include href="haskell.xml" />
|
<xi:include href="haskell.section.xml" />
|
||||||
<xi:include href="idris.xml" /> <!-- generated from ../../pkgs/development/idris-modules/README.md -->
|
<xi:include href="idris.section.xml" />
|
||||||
<xi:include href="java.xml" />
|
<xi:include href="java.xml" />
|
||||||
<xi:include href="lua.xml" />
|
<xi:include href="lua.xml" />
|
||||||
<xi:include href="node.xml" /> <!-- generated from ../../pkgs/development/node-packages/README.md -->
|
<xi:include href="node.section.xml" />
|
||||||
<xi:include href="perl.xml" />
|
<xi:include href="perl.xml" />
|
||||||
<xi:include href="python.xml" />
|
<xi:include href="python.section.xml" />
|
||||||
<xi:include href="qt.xml" />
|
<xi:include href="qt.xml" />
|
||||||
<xi:include href="r.xml" /> <!-- generated from ../../pkgs/development/r-modules/README.md -->
|
<xi:include href="r.section.xml" />
|
||||||
<xi:include href="ruby.xml" />
|
<xi:include href="ruby.xml" />
|
||||||
<xi:include href="rust.xml" />
|
<xi:include href="rust.section.xml" />
|
||||||
<xi:include href="texlive.xml" />
|
<xi:include href="texlive.xml" />
|
||||||
<xi:include href="vim.xml" />
|
<xi:include href="vim.section.xml" />
|
||||||
<xi:include href="emscripten.xml" />
|
<xi:include href="emscripten.section.xml" />
|
||||||
|
|
||||||
|
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
51
doc/languages-frameworks/node.section.md
Normal file
51
doc/languages-frameworks/node.section.md
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
Node.js packages
|
||||||
|
================
|
||||||
|
The `pkgs/development/node-packages` folder contains a generated collection of
|
||||||
|
[NPM packages](https://npmjs.com/) that can be installed with the Nix package
|
||||||
|
manager.
|
||||||
|
|
||||||
|
As a rule of thumb, the package set should only provide *end user* software
|
||||||
|
packages, such as command-line utilities. Libraries should only be added to the
|
||||||
|
package set if there is a non-NPM package that requires it.
|
||||||
|
|
||||||
|
When it is desired to use NPM libraries in a development project, use the
|
||||||
|
`node2nix` generator directly on the `package.json` configuration file of the
|
||||||
|
project.
|
||||||
|
|
||||||
|
The package set also provides support for multiple Node.js versions. The policy
|
||||||
|
is that a new package should be added to the collection for the latest stable LTS
|
||||||
|
release (which is currently 6.x), unless there is an explicit reason to support
|
||||||
|
a different release.
|
||||||
|
|
||||||
|
If your package uses native addons, you need to examine what kind of native
|
||||||
|
build system it uses. Here are some examples:
|
||||||
|
|
||||||
|
* `node-gyp`
|
||||||
|
* `node-gyp-builder`
|
||||||
|
* `node-pre-gyp`
|
||||||
|
|
||||||
|
After you have identified the correct system, you need to override your package
|
||||||
|
expression while adding in build system as a build input. For example, `dat`
|
||||||
|
requires `node-gyp-build`, so we override its expression in `default-v6.nix`:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
dat = nodePackages.dat.override (oldAttrs: {
|
||||||
|
buildInputs = oldAttrs.buildInputs ++ [ nodePackages.node-gyp-build ];
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
To add a package from NPM to nixpkgs:
|
||||||
|
|
||||||
|
1. Modify `pkgs/development/node-packages/node-packages-v6.json` to add, update
|
||||||
|
or remove package entries. (Or `pkgs/development/node-packages/node-packages-v4.json`
|
||||||
|
for packages depending on Node.js 4.x)
|
||||||
|
2. Run the script: `(cd pkgs/development/node-packages && ./generate.sh)`.
|
||||||
|
3. Build your new package to test your changes:
|
||||||
|
`cd /path/to/nixpkgs && nix-build -A nodePackages.<new-or-updated-package>`.
|
||||||
|
To build against a specific Node.js version (e.g. 4.x):
|
||||||
|
`nix-build -A nodePackages_4_x.<new-or-updated-package>`
|
||||||
|
4. Add and commit all modified and generated files.
|
||||||
|
|
||||||
|
For more information about the generation process, consult the
|
||||||
|
[README.md](https://github.com/svanderburg/node2nix) file of the `node2nix`
|
||||||
|
tool.
|
120
doc/languages-frameworks/r.section.md
Normal file
120
doc/languages-frameworks/r.section.md
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
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:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
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:
|
||||||
|
```nix
|
||||||
|
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`:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
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:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{ 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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nix-build test-evaluation.nix --dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
If this exits fine, the expression is ok. If not, you have to edit `default.nix`
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
</info>
|
</info>
|
||||||
|
|
||||||
<xi:include href="introduction.xml" />
|
<xi:include href="introduction.chapter.xml" />
|
||||||
<xi:include href="quick-start.xml" />
|
<xi:include href="quick-start.xml" />
|
||||||
<xi:include href="stdenv.xml" />
|
<xi:include href="stdenv.xml" />
|
||||||
<xi:include href="multiple-output.xml" />
|
<xi:include href="multiple-output.xml" />
|
||||||
|
|
|
@ -1,39 +1 @@
|
||||||
Idris packages
|
Moved to [/doc/languages-frameworks/idris.section.md](/doc/languages-frameworks/idris.section.md)
|
||||||
==============
|
|
||||||
|
|
||||||
This directory contains build rules for idris packages. In addition,
|
|
||||||
it contains several functions to build and compose those packages.
|
|
||||||
Everything is exposed to the user via the `idrisPackages` attribute.
|
|
||||||
|
|
||||||
callPackage
|
|
||||||
------------
|
|
||||||
|
|
||||||
This is like the normal nixpkgs callPackage function, specialized to
|
|
||||||
idris packages.
|
|
||||||
|
|
||||||
builtins
|
|
||||||
---------
|
|
||||||
|
|
||||||
This is a list of all of the libraries that come packaged with Idris
|
|
||||||
itself.
|
|
||||||
|
|
||||||
build-idris-package
|
|
||||||
--------------------
|
|
||||||
|
|
||||||
A function to build an idris package. Its sole argument is a set like
|
|
||||||
you might pass to `stdenv.mkDerivation`, except `build-idris-package`
|
|
||||||
sets several attributes for you. See `build-idris-package.nix` for
|
|
||||||
details.
|
|
||||||
|
|
||||||
build-builtin-package
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
A version of `build-idris-package` specialized to builtin libraries.
|
|
||||||
Mostly for internal use.
|
|
||||||
|
|
||||||
with-packages
|
|
||||||
-------------
|
|
||||||
|
|
||||||
Bundle idris together with a list of packages. Because idris currently
|
|
||||||
only supports a single directory in its library path, you must include
|
|
||||||
all desired libraries here, including `prelude` and `base`.
|
|
||||||
|
|
|
@ -1,51 +1 @@
|
||||||
Node.js packages
|
Moved to [/doc/languages-frameworks/node.section.md](/doc/languages-frameworks/node.section.md)
|
||||||
================
|
|
||||||
The `pkgs/development/node-packages` folder contains a generated collection of
|
|
||||||
[NPM packages](https://npmjs.com/) that can be installed with the Nix package
|
|
||||||
manager.
|
|
||||||
|
|
||||||
As a rule of thumb, the package set should only provide *end user* software
|
|
||||||
packages, such as command-line utilities. Libraries should only be added to the
|
|
||||||
package set if there is a non-NPM package that requires it.
|
|
||||||
|
|
||||||
When it is desired to use NPM libraries in a development project, use the
|
|
||||||
`node2nix` generator directly on the `package.json` configuration file of the
|
|
||||||
project.
|
|
||||||
|
|
||||||
The package set also provides support for multiple Node.js versions. The policy
|
|
||||||
is that a new package should be added to the collection for the latest stable LTS
|
|
||||||
release (which is currently 6.x), unless there is an explicit reason to support
|
|
||||||
a different release.
|
|
||||||
|
|
||||||
If your package uses native addons, you need to examine what kind of native
|
|
||||||
build system it uses. Here are some examples:
|
|
||||||
|
|
||||||
* `node-gyp`
|
|
||||||
* `node-gyp-builder`
|
|
||||||
* `node-pre-gyp`
|
|
||||||
|
|
||||||
After you have identified the correct system, you need to override your package
|
|
||||||
expression while adding in build system as a build input. For example, `dat`
|
|
||||||
requires `node-gyp-build`, so we override its expression in `default-v6.nix`:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
dat = nodePackages.dat.override (oldAttrs: {
|
|
||||||
buildInputs = oldAttrs.buildInputs ++ [ nodePackages.node-gyp-build ];
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
To add a package from NPM to nixpkgs:
|
|
||||||
|
|
||||||
1. Modify `pkgs/development/node-packages/node-packages-v6.json` to add, update
|
|
||||||
or remove package entries. (Or `pkgs/development/node-packages/node-packages-v4.json`
|
|
||||||
for packages depending on Node.js 4.x)
|
|
||||||
2. Run the script: `(cd pkgs/development/node-packages && ./generate.sh)`.
|
|
||||||
3. Build your new package to test your changes:
|
|
||||||
`cd /path/to/nixpkgs && nix-build -A nodePackages.<new-or-updated-package>`.
|
|
||||||
To build against a specific Node.js version (e.g. 4.x):
|
|
||||||
`nix-build -A nodePackages_4_x.<new-or-updated-package>`
|
|
||||||
4. Add and commit all modified and generated files.
|
|
||||||
|
|
||||||
For more information about the generation process, consult the
|
|
||||||
[README.md](https://github.com/svanderburg/node2nix) file of the `node2nix`
|
|
||||||
tool.
|
|
||||||
|
|
|
@ -1,120 +1 @@
|
||||||
R packages
|
Moved to [/doc/languages-frameworks/r.section.md](/doc/languages-frameworks/r.section.md)
|
||||||
==========
|
|
||||||
|
|
||||||
## 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:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{
|
|
||||||
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:
|
|
||||||
```nix
|
|
||||||
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`:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{
|
|
||||||
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:
|
|
||||||
|
|
||||||
```nix
|
|
||||||
{ 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
|
|
||||||
|
|
||||||
```bash
|
|
||||||
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
|
|
||||||
|
|
||||||
```bash
|
|
||||||
nix-build test-evaluation.nix --dry-run
|
|
||||||
```
|
|
||||||
|
|
||||||
If this exits fine, the expression is ok. If not, you have to edit `default.nix`
|
|
||||||
|
|
Loading…
Reference in a new issue