diff options
author | Luca Bruno <lethalman88@gmail.com> | 2015-06-24 22:57:37 +0200 |
---|---|---|
committer | Luca Bruno <lethalman88@gmail.com> | 2015-06-26 15:08:11 +0200 |
commit | 7f5f9072ad487ff6b3bffce716943d46fb167813 (patch) | |
tree | e636521c997ee5bc74302fd773db8713af60a741 /doc | |
parent | df92d1c711434ab864115597edd00bd4fa0d805c (diff) |
all-packages.nix: Add pkgs.overridePackages
Diffstat (limited to 'doc')
-rw-r--r-- | doc/functions.xml | 57 | ||||
-rw-r--r-- | doc/manual.xml | 1 |
2 files changed, 58 insertions, 0 deletions
diff --git a/doc/functions.xml b/doc/functions.xml new file mode 100644 index 0000000000000..16f4f262a25f9 --- /dev/null +++ b/doc/functions.xml @@ -0,0 +1,57 @@ +<chapter xmlns="http://docbook.org/ns/docbook" + xmlns:xlink="http://www.w3.org/1999/xlink" + xml:id="chap-functions"> + +<title>Functions reference</title> + +<para> + The nixpkgs repository has several utility functions to manipulate Nix expressions. +</para> + +<section xml:id="sec-pkgs-overridePackages"> + <title>pkgs.overridePackages</title> + + <para> + This function inside the nixpkgs expression (<varname>pkgs</varname>) + can be used to override the set of packages itself. + </para> + <para> + Warning: this function is expensive and must not be used from within + the nixpkgs repository. + </para> + <para> + Example usage: + + <programlisting>let + pkgs = import <nixpkgs> {}; + newpkgs = pkgs.overridePackages (self: super: { + foo = super.foo.override { ... }; + }; +in ...</programlisting> + </para> + + <para> + The resulting <varname>newpkgs</varname> will have the new <varname>foo</varname> + expression, and all other expressions depending on <varname>foo</varname> will also + use the new <varname>foo</varname> expression. + </para> + + <para> + The behavior of this function is similar to <link + linkend="sec-modify-via-packageOverrides">config.packageOverrides</link>. + </para> + + <para> + The <varname>self</varname> parameter refers to the final package set with the + applied overrides. Using this parameter may lead to infinite recursion if not + used consciously. + </para> + + <para> + The <varname>super</varname> parameter refers to the old package set. + It's equivalent to <varname>pkgs</varname> in the above example. + </para> + +</section> + +</chapter> diff --git a/doc/manual.xml b/doc/manual.xml index a6400c98d6e47..11f37184e6d5d 100644 --- a/doc/manual.xml +++ b/doc/manual.xml @@ -13,6 +13,7 @@ <xi:include href="quick-start.xml" /> <xi:include href="stdenv.xml" /> <xi:include href="packageconfig.xml" /> + <xi:include href="functions.xml" /> <xi:include href="meta.xml" /> <xi:include href="language-support.xml" /> <xi:include href="package-notes.xml" /> |