aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2018-02-08 11:26:18 -0500
committerShea Levy <shea@shealevy.com>2018-02-08 12:44:37 -0500
commit88cd2d41acb994684a3e4ead1b1676019f43b4b6 (patch)
tree7385aefa5755fd27983f3260b69020acef6de170 /doc
parentf201b7733e22cc236a41093a88cc789239d994bd (diff)
Add plugins to make Nix more extensible.
All plugins in plugin-files will be dlopened, allowing them to statically construct instances of the various Register* types Nix supports.
Diffstat (limited to 'doc')
-rw-r--r--doc/manual/command-ref/conf-file.xml27
-rw-r--r--doc/manual/release-notes/rl-2.0.xml7
2 files changed, 34 insertions, 0 deletions
diff --git a/doc/manual/command-ref/conf-file.xml b/doc/manual/command-ref/conf-file.xml
index fff7994f2..cede6db3c 100644
--- a/doc/manual/command-ref/conf-file.xml
+++ b/doc/manual/command-ref/conf-file.xml
@@ -742,6 +742,33 @@ builtins.fetchurl {
</varlistentry>
+ <varlistentry xml:id="conf-plugin-files">
+ <term><literal>plugin-files</literal></term>
+ <listitem>
+ <para>
+ A list of plugin files to be loaded by Nix. Each of these
+ files will be dlopened by Nix, allowing them to affect
+ execution through static initialization. In particular, these
+ plugins may construct static instances of RegisterPrimOp to
+ add new primops to the expression language,
+ RegisterStoreImplementation to add new store implementations,
+ and RegisterCommand to add new subcommands to the
+ <literal>nix</literal> command. See the constructors for those
+ types for more details.
+ </para>
+ <para>
+ Since these files are loaded into the same address space as
+ Nix itself, they must be DSOs compatible with the instance of
+ Nix running at the time (i.e. compiled against the same
+ headers, not linked to any incompatible libraries). They
+ should not be linked to any Nix libs directly, as those will
+ be available already at load time.
+ </para>
+ </listitem>
+
+ </varlistentry>
+
+
</variablelist>
</para>
diff --git a/doc/manual/release-notes/rl-2.0.xml b/doc/manual/release-notes/rl-2.0.xml
index 32cdb1d0c..effd2e39d 100644
--- a/doc/manual/release-notes/rl-2.0.xml
+++ b/doc/manual/release-notes/rl-2.0.xml
@@ -389,6 +389,13 @@ configureFlags = "--prefix=${placeholder "out"} --includedir=${placeholder "dev"
</para>
</listitem>
+ <listitem>
+ <para>
+ Nix can now be extended with plugins. See the documentation of
+ the 'plugin-files' option for more details.
+ </para>
+ </listitem>
+
</itemizedlist>
<para>Some features were removed:</para>