summary refs log tree commit diff
path: root/doc/meta.xml
diff options
context:
space:
mode:
authorGraham Christensen <graham@grahamc.com>2018-05-01 19:54:21 -0400
committerGraham Christensen <graham@grahamc.com>2018-05-01 19:54:21 -0400
commit77161de4546697f9bf2da6d081eeba4c399b3313 (patch)
tree8f77aeeb5a17cbc0c76b4401a090f55addabf975 /doc/meta.xml
parentfd2dce9708ff68e8a5474d9bf691a23c52c7273e (diff)
downloadnixlib-77161de4546697f9bf2da6d081eeba4c399b3313.tar
nixlib-77161de4546697f9bf2da6d081eeba4c399b3313.tar.gz
nixlib-77161de4546697f9bf2da6d081eeba4c399b3313.tar.bz2
nixlib-77161de4546697f9bf2da6d081eeba4c399b3313.tar.lz
nixlib-77161de4546697f9bf2da6d081eeba4c399b3313.tar.xz
nixlib-77161de4546697f9bf2da6d081eeba4c399b3313.tar.zst
nixlib-77161de4546697f9bf2da6d081eeba4c399b3313.zip
nixpkgs docs: format =)
Diffstat (limited to 'doc/meta.xml')
-rw-r--r--doc/meta.xml544
1 files changed, 294 insertions, 250 deletions
diff --git a/doc/meta.xml b/doc/meta.xml
index 5dbe810810d1..ad16e7683f58 100644
--- a/doc/meta.xml
+++ b/doc/meta.xml
@@ -1,14 +1,12 @@
 <chapter xmlns="http://docbook.org/ns/docbook"
          xmlns:xlink="http://www.w3.org/1999/xlink"
          xml:id="chap-meta">
-
-<title>Meta-attributes</title>
-
-<para>Nix packages can declare <emphasis>meta-attributes</emphasis>
-that contain information about a package such as a description, its
-homepage, its license, and so on.  For instance, the GNU Hello package
-has a <varname>meta</varname> declaration like this:
-
+ <title>Meta-attributes</title>
+ <para>
+  Nix packages can declare <emphasis>meta-attributes</emphasis> that contain
+  information about a package such as a description, its homepage, its license,
+  and so on. For instance, the GNU Hello package has a <varname>meta</varname>
+  declaration like this:
 <programlisting>
 meta = {
   description = "A program that produces a familiar, friendly greeting";
@@ -22,16 +20,15 @@ meta = {
   platforms = stdenv.lib.platforms.all;
 };
 </programlisting>
-
-</para>
-
-<para>Meta-attributes are not passed to the builder of the package.
-Thus, a change to a meta-attribute doesn’t trigger a recompilation of
-the package.  The value of a meta-attribute must be a string.</para>
-
-<para>The meta-attributes of a package can be queried from the
-command-line using <command>nix-env</command>:
-
+ </para>
+ <para>
+  Meta-attributes are not passed to the builder of the package. Thus, a change
+  to a meta-attribute doesn’t trigger a recompilation of the package. The
+  value of a meta-attribute must be a string.
+ </para>
+ <para>
+  The meta-attributes of a package can be queried from the command-line using
+  <command>nix-env</command>:
 <screen>
 $ nix-env -qa hello --json
 {
@@ -70,252 +67,299 @@ $ nix-env -qa hello --json
 
 
 </screen>
-
-<command>nix-env</command> knows about the
-<varname>description</varname> field specifically:
-
+  <command>nix-env</command> knows about the <varname>description</varname>
+  field specifically:
 <screen>
 $ nix-env -qa hello --description
 hello-2.3  A program that produces a familiar, friendly greeting
 </screen>
-
-</para>
-
-
-<section xml:id="sec-standard-meta-attributes"><title>Standard
-meta-attributes</title>
-
-<para>It is expected that each meta-attribute is one of the following:</para>
-
-<variablelist>
-
-  <varlistentry>
-    <term><varname>description</varname></term>
-    <listitem><para>A short (one-line) description of the package.
-    This is shown by <command>nix-env -q --description</command> and
-    also on the Nixpkgs release pages.</para>
-
-    <para>Don’t include a period at the end.  Don’t include newline
-    characters.  Capitalise the first character.  For brevity, don’t
-    repeat the name of package — just describe what it does.</para>
-
-    <para>Wrong: <literal>"libpng is a library that allows you to decode PNG images."</literal></para>
-
-    <para>Right: <literal>"A library for decoding PNG images"</literal></para>
-
+ </para>
+ <section xml:id="sec-standard-meta-attributes">
+  <title>Standard meta-attributes</title>
+
+  <para>
+   It is expected that each meta-attribute is one of the following:
+  </para>
+
+  <variablelist>
+   <varlistentry>
+    <term><varname>description</varname>
+    </term>
+    <listitem>
+     <para>
+      A short (one-line) description of the package. This is shown by
+      <command>nix-env -q --description</command> and also on the Nixpkgs
+      release pages.
+     </para>
+     <para>
+      Don’t include a period at the end. Don’t include newline characters.
+      Capitalise the first character. For brevity, don’t repeat the name of
+      package — just describe what it does.
+     </para>
+     <para>
+      Wrong: <literal>"libpng is a library that allows you to decode PNG
+      images."</literal>
+     </para>
+     <para>
+      Right: <literal>"A library for decoding PNG images"</literal>
+     </para>
     </listitem>
-  </varlistentry>
-
-  <varlistentry>
-    <term><varname>longDescription</varname></term>
-    <listitem><para>An arbitrarily long description of the
-    package.</para></listitem>
-  </varlistentry>
-
-  <varlistentry>
-    <term><varname>branch</varname></term>
-    <listitem><para>Release branch. Used to specify that a package is not
-    going to receive updates that are not in this branch; for example, Linux
-    kernel 3.0 is supposed to be updated to 3.0.X, not 3.1.</para></listitem>
-  </varlistentry>
-
-  <varlistentry>
-    <term><varname>homepage</varname></term>
-    <listitem><para>The package’s homepage.  Example:
-    <literal>http://www.gnu.org/software/hello/manual/</literal></para></listitem>
-  </varlistentry>
-
-  <varlistentry>
-    <term><varname>downloadPage</varname></term>
-    <listitem><para>The page where a link to the current version can be found.  Example:
-    <literal>http://ftp.gnu.org/gnu/hello/</literal></para></listitem>
-  </varlistentry>
-
-  <varlistentry>
-    <term><varname>license</varname></term>
+   </varlistentry>
+   <varlistentry>
+    <term><varname>longDescription</varname>
+    </term>
     <listitem>
-      <para>
-        The license, or licenses, for the package. One from the attribute set
-        defined in <link
+     <para>
+      An arbitrarily long description of the package.
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><varname>branch</varname>
+    </term>
+    <listitem>
+     <para>
+      Release branch. Used to specify that a package is not going to receive
+      updates that are not in this branch; for example, Linux kernel 3.0 is
+      supposed to be updated to 3.0.X, not 3.1.
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><varname>homepage</varname>
+    </term>
+    <listitem>
+     <para>
+      The package’s homepage. Example:
+      <literal>http://www.gnu.org/software/hello/manual/</literal>
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><varname>downloadPage</varname>
+    </term>
+    <listitem>
+     <para>
+      The page where a link to the current version can be found. Example:
+      <literal>http://ftp.gnu.org/gnu/hello/</literal>
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><varname>license</varname>
+    </term>
+    <listitem>
+     <para>
+      The license, or licenses, for the package. One from the attribute set
+      defined in
+      <link
           xlink:href="https://github.com/NixOS/nixpkgs/blob/master/lib/licenses.nix">
-          <filename>nixpkgs/lib/licenses.nix</filename></link>. At this moment
-        using both a list of licenses and a single license is valid. If the
-        license field is in the form of a list representation, then it means
-        that parts of the package are licensed differently.  Each license
-        should preferably be referenced by their attribute. The non-list
-        attribute value can also be a space delimited string representation of
-        the contained attribute shortNames or spdxIds. The following are all valid
-        examples:
-        <itemizedlist>
-          <listitem><para>Single license referenced by attribute (preferred)
-              <literal>stdenv.lib.licenses.gpl3</literal>.
-          </para></listitem>
-          <listitem><para>Single license referenced by its attribute shortName (frowned upon)
-              <literal>"gpl3"</literal>.
-          </para></listitem>
-          <listitem><para>Single license referenced by its attribute spdxId (frowned upon)
-              <literal>"GPL-3.0"</literal>.
-          </para></listitem>
-          <listitem><para>Multiple licenses referenced by attribute (preferred)
-              <literal>with stdenv.lib.licenses; [ asl20 free ofl ]</literal>.
-          </para></listitem>
-          <listitem><para>Multiple licenses referenced as a space delimited string of attribute shortNames (frowned upon)
-              <literal>"asl20 free ofl"</literal>.
-          </para></listitem>
-        </itemizedlist>
-        For details, see <xref linkend='sec-meta-license'/>.
-      </para>
+      <filename>nixpkgs/lib/licenses.nix</filename></link>. At this moment
+      using both a list of licenses and a single license is valid. If the
+      license field is in the form of a list representation, then it means that
+      parts of the package are licensed differently. Each license should
+      preferably be referenced by their attribute. The non-list attribute value
+      can also be a space delimited string representation of the contained
+      attribute shortNames or spdxIds. The following are all valid examples:
+      <itemizedlist>
+       <listitem>
+        <para>
+         Single license referenced by attribute (preferred)
+         <literal>stdenv.lib.licenses.gpl3</literal>.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Single license referenced by its attribute shortName (frowned upon)
+         <literal>"gpl3"</literal>.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Single license referenced by its attribute spdxId (frowned upon)
+         <literal>"GPL-3.0"</literal>.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Multiple licenses referenced by attribute (preferred) <literal>with
+         stdenv.lib.licenses; [ asl20 free ofl ]</literal>.
+        </para>
+       </listitem>
+       <listitem>
+        <para>
+         Multiple licenses referenced as a space delimited string of attribute
+         shortNames (frowned upon) <literal>"asl20 free ofl"</literal>.
+        </para>
+       </listitem>
+      </itemizedlist>
+      For details, see <xref linkend='sec-meta-license'/>.
+     </para>
     </listitem>
-  </varlistentry>
-
-  <varlistentry>
-    <term><varname>maintainers</varname></term>
-    <listitem><para>A list of names and e-mail addresses of the
-    maintainers of this Nix expression. If
-    you would like to be a maintainer of a package, you may want to add
-    yourself to <link
+   </varlistentry>
+   <varlistentry>
+    <term><varname>maintainers</varname>
+    </term>
+    <listitem>
+     <para>
+      A list of names and e-mail addresses of the maintainers of this Nix
+      expression. If you would like to be a maintainer of a package, you may
+      want to add yourself to
+      <link
     xlink:href="https://github.com/NixOS/nixpkgs/blob/master/maintainers/maintainer-list.nix"><filename>nixpkgs/maintainers/maintainer-list.nix</filename></link>
-    and write something like <literal>[ stdenv.lib.maintainers.alice
-    stdenv.lib.maintainers.bob ]</literal>.</para></listitem>
-  </varlistentry>
-
-  <varlistentry>
-    <term><varname>priority</varname></term>
-    <listitem><para>The <emphasis>priority</emphasis> of the package,
-    used by <command>nix-env</command> to resolve file name conflicts
-    between packages.  See the Nix manual page for
-    <command>nix-env</command> for details.  Example:
-    <literal>"10"</literal> (a low-priority
-    package).</para></listitem>
-  </varlistentry>
-
-  <varlistentry>
-    <term><varname>platforms</varname></term>
-    <listitem><para>The list of Nix platform types on which the
-    package is supported. Hydra builds packages according to the
-    platform specified. If no platform is specified, the package does
-    not have prebuilt binaries. An example is:
-
+      and write something like <literal>[ stdenv.lib.maintainers.alice
+      stdenv.lib.maintainers.bob ]</literal>.
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><varname>priority</varname>
+    </term>
+    <listitem>
+     <para>
+      The <emphasis>priority</emphasis> of the package, used by
+      <command>nix-env</command> to resolve file name conflicts between
+      packages. See the Nix manual page for <command>nix-env</command> for
+      details. Example: <literal>"10"</literal> (a low-priority package).
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><varname>platforms</varname>
+    </term>
+    <listitem>
+     <para>
+      The list of Nix platform types on which the package is supported. Hydra
+      builds packages according to the platform specified. If no platform is
+      specified, the package does not have prebuilt binaries. An example is:
 <programlisting>
 meta.platforms = stdenv.lib.platforms.linux;
 </programlisting>
-
-    Attribute Set <varname>stdenv.lib.platforms</varname> defines
-    <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/lib/systems/doubles.nix">
-    various common lists</link> of platforms types.</para></listitem>
-  </varlistentry>
-
-  <varlistentry>
-    <term><varname>hydraPlatforms</varname></term>
-    <listitem><para>The list of Nix platform types for which the Hydra
-    instance at <literal>hydra.nixos.org</literal> will build the
-    package.  (Hydra is the Nix-based continuous build system.)  It
-    defaults to the value of <varname>meta.platforms</varname>.  Thus,
-    the only reason to set <varname>meta.hydraPlatforms</varname> is
-    if you want <literal>hydra.nixos.org</literal> to build the
-    package on a subset of <varname>meta.platforms</varname>, or not
-    at all, e.g.
-
+      Attribute Set <varname>stdenv.lib.platforms</varname> defines
+      <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/lib/systems/doubles.nix">
+      various common lists</link> of platforms types.
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><varname>hydraPlatforms</varname>
+    </term>
+    <listitem>
+     <para>
+      The list of Nix platform types for which the Hydra instance at
+      <literal>hydra.nixos.org</literal> will build the package. (Hydra is the
+      Nix-based continuous build system.) It defaults to the value of
+      <varname>meta.platforms</varname>. Thus, the only reason to set
+      <varname>meta.hydraPlatforms</varname> is if you want
+      <literal>hydra.nixos.org</literal> to build the package on a subset of
+      <varname>meta.platforms</varname>, or not at all, e.g.
 <programlisting>
 meta.platforms = stdenv.lib.platforms.linux;
 meta.hydraPlatforms = [];
 </programlisting>
-
-    </para></listitem>
-  </varlistentry>
-
-  <varlistentry>
-    <term><varname>broken</varname></term>
-    <listitem><para>If set to <literal>true</literal>, the package is
-    marked as “broken”, meaning that it won’t show up in
-    <literal>nix-env -qa</literal>, and cannot be built or installed.
-    Such packages should be removed from Nixpkgs eventually unless
-    they are fixed.</para></listitem>
-  </varlistentry>
-
-  <varlistentry>
-    <term><varname>updateWalker</varname></term>
-    <listitem><para>If set to <literal>true</literal>, the package is
-    tested to be updated correctly by the <literal>update-walker.sh</literal>
-    script without additional settings. Such packages have
-    <varname>meta.version</varname> set and their homepage (or
-    the page specified by <varname>meta.downloadPage</varname>) contains
-    a direct link to the package tarball.</para></listitem>
-  </varlistentry>
-
-</variablelist>
-
-
-</section>
-
-
-<section xml:id="sec-meta-license"><title>Licenses</title>
-
-<para>The <varname>meta.license</varname> attribute should preferrably contain
-a value from <varname>stdenv.lib.licenses</varname> defined in
-<link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/lib/licenses.nix">
-<filename>nixpkgs/lib/licenses.nix</filename></link>,
-or in-place license description of the same format if the license is
-unlikely to be useful in another expression.</para>
-
-<para>Although it's typically better to indicate the specific license,
-a few generic options are available:
-
-<variablelist>
-
-  <varlistentry>
-    <term><varname>stdenv.lib.licenses.free</varname>,
-    <varname>"free"</varname></term>
-
-    <listitem><para>Catch-all for free software licenses not listed
-    above.</para></listitem>
-  </varlistentry>
-
-  <varlistentry>
-    <term><varname>stdenv.lib.licenses.unfreeRedistributable</varname>,
-    <varname>"unfree-redistributable"</varname></term>
-
-    <listitem><para>Unfree package that can be redistributed in binary
-    form. That is, it’s legal to redistribute the
-    <emphasis>output</emphasis> of the derivation.  This means that
-    the package can be included in the Nixpkgs
-    channel.</para>
-
-    <para>Sometimes proprietary software can only be redistributed
-    unmodified. Make sure the builder doesn’t actually modify the
-    original binaries; otherwise we’re breaking the license.  For
-    instance, the NVIDIA X11 drivers can be redistributed unmodified,
-    but our builder applies <command>patchelf</command> to make them
-    work. Thus, its license is <varname>"unfree"</varname> and it
-    cannot be included in the Nixpkgs channel.</para></listitem>
-  </varlistentry>
-
-  <varlistentry>
-    <term><varname>stdenv.lib.licenses.unfree</varname>,
-    <varname>"unfree"</varname></term>
-
-    <listitem><para>Unfree package that cannot be redistributed. You
-    can build it yourself, but you cannot redistribute the output of
-    the derivation. Thus it cannot be included in the Nixpkgs
-    channel.</para></listitem>
-  </varlistentry>
-
-  <varlistentry>
-    <term><varname>stdenv.lib.licenses.unfreeRedistributableFirmware</varname>,
-    <varname>"unfree-redistributable-firmware"</varname></term>
-
-    <listitem><para>This package supplies unfree, redistributable
-    firmware.  This is a separate value from
-    <varname>unfree-redistributable</varname> because not everybody
-    cares whether firmware is free.</para></listitem>
-  </varlistentry>
-
-</variablelist>
-
-</para>
-
-
-</section>
-
-
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><varname>broken</varname>
+    </term>
+    <listitem>
+     <para>
+      If set to <literal>true</literal>, the package is marked as “broken”,
+      meaning that it won’t show up in <literal>nix-env -qa</literal>, and
+      cannot be built or installed. Such packages should be removed from
+      Nixpkgs eventually unless they are fixed.
+     </para>
+    </listitem>
+   </varlistentry>
+   <varlistentry>
+    <term><varname>updateWalker</varname>
+    </term>
+    <listitem>
+     <para>
+      If set to <literal>true</literal>, the package is tested to be updated
+      correctly by the <literal>update-walker.sh</literal> script without
+      additional settings. Such packages have <varname>meta.version</varname>
+      set and their homepage (or the page specified by
+      <varname>meta.downloadPage</varname>) contains a direct link to the
+      package tarball.
+     </para>
+    </listitem>
+   </varlistentry>
+  </variablelist>
+ </section>
+ <section xml:id="sec-meta-license">
+  <title>Licenses</title>
+
+  <para>
+   The <varname>meta.license</varname> attribute should preferrably contain a
+   value from <varname>stdenv.lib.licenses</varname> defined in
+   <link xlink:href="https://github.com/NixOS/nixpkgs/blob/master/lib/licenses.nix">
+   <filename>nixpkgs/lib/licenses.nix</filename></link>, or in-place license
+   description of the same format if the license is unlikely to be useful in
+   another expression.
+  </para>
+
+  <para>
+   Although it's typically better to indicate the specific license, a few
+   generic options are available:
+   <variablelist>
+    <varlistentry>
+     <term><varname>stdenv.lib.licenses.free</varname>,
+    <varname>"free"</varname>
+     </term>
+     <listitem>
+      <para>
+       Catch-all for free software licenses not listed above.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><varname>stdenv.lib.licenses.unfreeRedistributable</varname>,
+    <varname>"unfree-redistributable"</varname>
+     </term>
+     <listitem>
+      <para>
+       Unfree package that can be redistributed in binary form. That is, it’s
+       legal to redistribute the <emphasis>output</emphasis> of the derivation.
+       This means that the package can be included in the Nixpkgs channel.
+      </para>
+      <para>
+       Sometimes proprietary software can only be redistributed unmodified.
+       Make sure the builder doesn’t actually modify the original binaries;
+       otherwise we’re breaking the license. For instance, the NVIDIA X11
+       drivers can be redistributed unmodified, but our builder applies
+       <command>patchelf</command> to make them work. Thus, its license is
+       <varname>"unfree"</varname> and it cannot be included in the Nixpkgs
+       channel.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><varname>stdenv.lib.licenses.unfree</varname>,
+    <varname>"unfree"</varname>
+     </term>
+     <listitem>
+      <para>
+       Unfree package that cannot be redistributed. You can build it yourself,
+       but you cannot redistribute the output of the derivation. Thus it cannot
+       be included in the Nixpkgs channel.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><varname>stdenv.lib.licenses.unfreeRedistributableFirmware</varname>,
+    <varname>"unfree-redistributable-firmware"</varname>
+     </term>
+     <listitem>
+      <para>
+       This package supplies unfree, redistributable firmware. This is a
+       separate value from <varname>unfree-redistributable</varname> because
+       not everybody cares whether firmware is free.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </section>
 </chapter>