Skip to content

Commit

Permalink
Move all nixpkgs doc files in to the doc directory
Browse files Browse the repository at this point in the history
This makes a makefile-driven developer workflow nicer.
  • Loading branch information
grahamc committed Mar 25, 2018
1 parent a0c525b commit 92d5336
Show file tree
Hide file tree
Showing 16 changed files with 242 additions and 239 deletions.
40 changes: 20 additions & 20 deletions doc/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -45,45 +45,45 @@ pkgs.stdenv.mkDerivation {
cp -s '${sources-langs}'/* ./languages-frameworks
''
+ toDocbook {
inputFile = ./introduction.md;
outputFile = "introduction.xml";
inputFile = ./introduction.chapter.md;
outputFile = "introduction.chapter.xml";
useChapters = true;
}
+ toDocbook {
inputFile = ./shell.md;
outputFile = "shell.xml";
inputFile = ./shell.section.md;
outputFile = "shell.section.xml";
}
+ toDocbook {
inputFile = ./languages-frameworks/python.md;
outputFile = "./languages-frameworks/python.xml";
inputFile = ./languages-frameworks/python.section.md;
outputFile = "./languages-frameworks/python.section.xml";
}
+ toDocbook {
inputFile = ./languages-frameworks/haskell.md;
outputFile = "./languages-frameworks/haskell.xml";
inputFile = ./languages-frameworks/haskell.section.md;
outputFile = "./languages-frameworks/haskell.section.xml";
}
+ toDocbook {
inputFile = ../pkgs/development/idris-modules/README.md;
outputFile = "languages-frameworks/idris.xml";
inputFile = ./languages-frameworks/idris.section.md;
outputFile = "languages-frameworks/idris.section.xml";
}
+ toDocbook {
inputFile = ../pkgs/development/node-packages/README.md;
outputFile = "languages-frameworks/node.xml";
inputFile = ./languages-frameworks/node.section.md;
outputFile = "languages-frameworks/node.section.xml";
}
+ toDocbook {
inputFile = ../pkgs/development/r-modules/README.md;
outputFile = "languages-frameworks/r.xml";
inputFile = ./languages-frameworks/r.section.md;
outputFile = "languages-frameworks/r.section.xml";
}
+ toDocbook {
inputFile = ./languages-frameworks/rust.md;
outputFile = "./languages-frameworks/rust.xml";
inputFile = ./languages-frameworks/rust.section.md;
outputFile = "./languages-frameworks/rust.section.xml";
}
+ toDocbook {
inputFile = ./languages-frameworks/vim.md;
outputFile = "./languages-frameworks/vim.xml";
inputFile = ./languages-frameworks/vim.section.md;
outputFile = "./languages-frameworks/vim.section.xml";
}
+ toDocbook {
inputFile = ./languages-frameworks/emscripten.md;
outputFile = "./languages-frameworks/emscripten.xml";
inputFile = ./languages-frameworks/emscripten.section.md;
outputFile = "./languages-frameworks/emscripten.section.xml";
}
+ ''
echo ${lib.nixpkgsVersion} > .version
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
39 changes: 39 additions & 0 deletions doc/languages-frameworks/idris.section.md
Original file line number Diff line number Diff line change
@@ -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`.
16 changes: 8 additions & 8 deletions doc/languages-frameworks/index.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,20 @@ such as Perl or Haskell. These are described in this chapter.</para>
<xi:include href="bower.xml" />
<xi:include href="coq.xml" />
<xi:include href="go.xml" />
<xi:include href="haskell.xml" />
<xi:include href="idris.xml" /> <!-- generated from ../../pkgs/development/idris-modules/README.md -->
<xi:include href="haskell.section.xml" />
<xi:include href="idris.section.xml" />
<xi:include href="java.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="python.xml" />
<xi:include href="python.section.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="rust.xml" />
<xi:include href="rust.section.xml" />
<xi:include href="texlive.xml" />
<xi:include href="vim.xml" />
<xi:include href="emscripten.xml" />
<xi:include href="vim.section.xml" />
<xi:include href="emscripten.section.xml" />


</chapter>
51 changes: 51 additions & 0 deletions doc/languages-frameworks/node.section.md
Original file line number Diff line number Diff line change
@@ -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.
File renamed without changes.
120 changes: 120 additions & 0 deletions doc/languages-frameworks/r.section.md
Original file line number Diff line number Diff line change
@@ -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`
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion doc/manual.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

</info>

<xi:include href="introduction.xml" />
<xi:include href="introduction.chapter.xml" />
<xi:include href="quick-start.xml" />
<xi:include href="stdenv.xml" />
<xi:include href="multiple-output.xml" />
Expand Down
File renamed without changes.
40 changes: 1 addition & 39 deletions pkgs/development/idris-modules/README.md
Original file line number Diff line number Diff line change
@@ -1,39 +1 @@
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`.
Moved to [/doc/languages-frameworks/idris.section.md](/doc/languages-frameworks/idris.section.md)

0 comments on commit 92d5336

Please sign in to comment.