summary refs log tree commit diff
path: root/doc/using
diff options
context:
space:
mode:
authorRobert Hensing <robert@roberthensing.nl>2021-03-04 17:54:35 +0100
committerRobert Hensing <robert@roberthensing.nl>2021-03-04 18:10:57 +0100
commit7d551ead60f90b8c879bea7ce421f54482406dbb (patch)
treef2f2eef1cdd0f71dfc1e953e24271eae98a4c90c /doc/using
parent0a4a486096bc2a6efb1bc0d11543f208eda23dc3 (diff)
downloadnixpkgs-7d551ead60f90b8c879bea7ce421f54482406dbb.tar
nixpkgs-7d551ead60f90b8c879bea7ce421f54482406dbb.tar.gz
nixpkgs-7d551ead60f90b8c879bea7ce421f54482406dbb.tar.bz2
nixpkgs-7d551ead60f90b8c879bea7ce421f54482406dbb.tar.lz
nixpkgs-7d551ead60f90b8c879bea7ce421f54482406dbb.tar.xz
nixpkgs-7d551ead60f90b8c879bea7ce421f54482406dbb.tar.zst
nixpkgs-7d551ead60f90b8c879bea7ce421f54482406dbb.zip
doc: Format
Diffstat (limited to 'doc/using')
-rw-r--r--doc/using/configuration.xml2
-rw-r--r--doc/using/overlays.xml256
2 files changed, 103 insertions, 155 deletions
diff --git a/doc/using/configuration.xml b/doc/using/configuration.xml
index 8e63e0072c8..3ef39733458 100644
--- a/doc/using/configuration.xml
+++ b/doc/using/configuration.xml
@@ -170,7 +170,7 @@
 </programlisting>
     </para>
     <para>
-      Note that <literal>allowlistedLicenses</literal> only applies to unfree licenses unless <literal>allowUnfree</literal> is enabled. It is not a generic allowlist for all types of licenses. <literal>blocklistedLicenses</literal> applies to all licenses.
+     Note that <literal>allowlistedLicenses</literal> only applies to unfree licenses unless <literal>allowUnfree</literal> is enabled. It is not a generic allowlist for all types of licenses. <literal>blocklistedLicenses</literal> applies to all licenses.
     </para>
    </listitem>
   </itemizedlist>
diff --git a/doc/using/overlays.xml b/doc/using/overlays.xml
index 8bda235d43d..1def8b06955 100644
--- a/doc/using/overlays.xml
+++ b/doc/using/overlays.xml
@@ -28,8 +28,7 @@
    </para>
 
    <para>
-    NOTE: DO NOT USE THIS in nixpkgs.
-    Further overlays can be added by calling the <literal>pkgs.extend</literal> or <literal>pkgs.appendOverlays</literal>, although it is often preferable to avoid these functions, because they recompute the Nixpkgs fixpoint, which is somewhat expensive to do.
+    NOTE: DO NOT USE THIS in nixpkgs. Further overlays can be added by calling the <literal>pkgs.extend</literal> or <literal>pkgs.appendOverlays</literal>, although it is often preferable to avoid these functions, because they recompute the Nixpkgs fixpoint, which is somewhat expensive to do.
    </para>
   </section>
 
@@ -139,98 +138,72 @@ self: super:
   </para>
  </section>
  <section xml:id="sec-overlays-alternatives">
-   <title>Using overlays to configure alternatives</title>
+  <title>Using overlays to configure alternatives</title>
+
+  <para>
+   Certain software packages have different implementations of the same interface. Other distributions have functionality to switch between these. For example, Debian provides <link
+     xlink:href="https://wiki.debian.org/DebianAlternatives">DebianAlternatives</link>. Nixpkgs has what we call <literal>alternatives</literal>, which are configured through overlays.
+  </para>
+
+  <section xml:id="sec-overlays-alternatives-blas-lapack">
+   <title>BLAS/LAPACK</title>
+
    <para>
-     Certain software packages have different implementations of the
-     same interface. Other distributions have functionality to switch
-     between these. For example, Debian provides <link
-     xlink:href="https://wiki.debian.org/DebianAlternatives">DebianAlternatives</link>.
-     Nixpkgs has what we call <literal>alternatives</literal>, which
-     are configured through overlays.
+    In Nixpkgs, we have multiple implementations of the BLAS/LAPACK numerical linear algebra interfaces. They are:
    </para>
-   <section xml:id="sec-overlays-alternatives-blas-lapack">
-     <title>BLAS/LAPACK</title>
+
+   <itemizedlist>
+    <listitem>
      <para>
-       In Nixpkgs, we have multiple implementations of the BLAS/LAPACK
-       numerical linear algebra interfaces. They are:
+      <link xlink:href="https://www.openblas.net/">OpenBLAS</link>
      </para>
-     <itemizedlist>
-       <listitem>
-         <para>
-           <link xlink:href="https://www.openblas.net/">OpenBLAS</link>
-         </para>
-         <para>
-           The Nixpkgs attribute is <literal>openblas</literal> for
-           ILP64 (integer width = 64 bits) and
-           <literal>openblasCompat</literal> for LP64 (integer width =
-           32 bits). <literal>openblasCompat</literal> is the default.
-         </para>
-       </listitem>
-       <listitem>
-         <para>
-           <link xlink:href="http://www.netlib.org/lapack/">LAPACK
-           reference</link> (also provides BLAS)
-         </para>
-         <para>
-           The Nixpkgs attribute is <literal>lapack-reference</literal>.
-         </para>
-       </listitem>
-       <listitem>
-         <para>
-           <link
-           xlink:href="https://software.intel.com/en-us/mkl">Intel
-           MKL</link> (only works on the x86_64 architecture, unfree)
-         </para>
-         <para>
-           The Nixpkgs attribute is <literal>mkl</literal>.
-         </para>
-       </listitem>
-       <listitem>
-         <para>
-           <link
+     <para>
+      The Nixpkgs attribute is <literal>openblas</literal> for ILP64 (integer width = 64 bits) and <literal>openblasCompat</literal> for LP64 (integer width = 32 bits). <literal>openblasCompat</literal> is the default.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <link xlink:href="http://www.netlib.org/lapack/">LAPACK reference</link> (also provides BLAS)
+     </para>
+     <para>
+      The Nixpkgs attribute is <literal>lapack-reference</literal>.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <link
+           xlink:href="https://software.intel.com/en-us/mkl">Intel MKL</link> (only works on the x86_64 architecture, unfree)
+     </para>
+     <para>
+      The Nixpkgs attribute is <literal>mkl</literal>.
+     </para>
+    </listitem>
+    <listitem>
+     <para>
+      <link
            xlink:href="https://github.com/flame/blis">BLIS</link>
-         </para>
-         <para>
-          BLIS, available through the attribute
-          <literal>blis</literal>, is a framework for linear algebra kernels. In
-          addition, it implements the BLAS interface.
-         </para>
-       </listitem>
-       <listitem>
-         <para>
-          <link
-           xlink:href="https://developer.amd.com/amd-aocl/blas-library/">AMD
-          BLIS/LIBFLAME</link> (optimized for modern AMD x86_64 CPUs)
-         </para>
-         <para>
-          The AMD fork of the BLIS library, with attribute
-          <literal>amd-blis</literal>, extends BLIS with optimizations for
-          modern AMD CPUs. The changes are usually submitted to
-          the upstream BLIS project after some time. However, AMD BLIS
-          typically provides some performance improvements on AMD Zen CPUs.
-          The complementary AMD LIBFLAME library, with attribute
-          <literal>amd-libflame</literal>, provides a LAPACK implementation.
-         </para>
-       </listitem>
-     </itemizedlist>
+     </para>
      <para>
-       Introduced in <link
-       xlink:href="https://github.com/NixOS/nixpkgs/pull/83888">PR
-       #83888</link>, we are able to override the <literal>blas</literal>
-       and <literal>lapack</literal> packages to use different implementations,
-       through the <literal>blasProvider</literal> and
-       <literal>lapackProvider</literal> argument. This can be used
-       to select a different provider. BLAS providers will have
-       symlinks in <literal>$out/lib/libblas.so.3</literal> and
-       <literal>$out/lib/libcblas.so.3</literal> to their respective
-       BLAS libraries. Likewise, LAPACK providers will have symlinks
-       in <literal>$out/lib/liblapack.so.3</literal> and
-       <literal>$out/lib/liblapacke.so.3</literal> to their respective
-       LAPACK libraries. For example, Intel MKL is both a BLAS and
-       LAPACK provider. An overlay can be created to use Intel MKL
-       that looks like:
+      BLIS, available through the attribute <literal>blis</literal>, is a framework for linear algebra kernels. In addition, it implements the BLAS interface.
      </para>
-     <programlisting>
+    </listitem>
+    <listitem>
+     <para>
+      <link
+           xlink:href="https://developer.amd.com/amd-aocl/blas-library/">AMD BLIS/LIBFLAME</link> (optimized for modern AMD x86_64 CPUs)
+     </para>
+     <para>
+      The AMD fork of the BLIS library, with attribute <literal>amd-blis</literal>, extends BLIS with optimizations for modern AMD CPUs. The changes are usually submitted to the upstream BLIS project after some time. However, AMD BLIS typically provides some performance improvements on AMD Zen CPUs. The complementary AMD LIBFLAME library, with attribute <literal>amd-libflame</literal>, provides a LAPACK implementation.
+     </para>
+    </listitem>
+   </itemizedlist>
+
+   <para>
+    Introduced in <link
+       xlink:href="https://github.com/NixOS/nixpkgs/pull/83888">PR #83888</link>, we are able to override the <literal>blas</literal> and <literal>lapack</literal> packages to use different implementations, through the <literal>blasProvider</literal> and <literal>lapackProvider</literal> argument. This can be used to select a different provider. BLAS providers will have symlinks in <literal>$out/lib/libblas.so.3</literal> and <literal>$out/lib/libcblas.so.3</literal> to their respective BLAS libraries. Likewise, LAPACK providers will have symlinks in <literal>$out/lib/liblapack.so.3</literal> and <literal>$out/lib/liblapacke.so.3</literal> to their respective LAPACK libraries. For example, Intel MKL is both a BLAS and LAPACK provider. An overlay can be created to use Intel MKL that looks like:
+   </para>
+
+<programlisting>
 self: super:
 
 {
@@ -243,46 +216,24 @@ self: super:
   };
 }
 </programlisting>
-     <para>
-       This overlay uses Intel’s MKL library for both BLAS and LAPACK
-       interfaces. Note that the same can be accomplished at runtime
-       using <literal>LD_LIBRARY_PATH</literal> of
-       <literal>libblas.so.3</literal> and
-       <literal>liblapack.so.3</literal>. For instance:
-     </para>
+
+   <para>
+    This overlay uses Intel’s MKL library for both BLAS and LAPACK interfaces. Note that the same can be accomplished at runtime using <literal>LD_LIBRARY_PATH</literal> of <literal>libblas.so.3</literal> and <literal>liblapack.so.3</literal>. For instance:
+   </para>
+
 <screen>
 <prompt>$ </prompt>LD_LIBRARY_PATH=$(nix-build -A mkl)/lib:$LD_LIBRARY_PATH nix-shell -p octave --run octave
 </screen>
-     <para>
-       Intel MKL requires an <literal>openmp</literal> implementation
-       when running with multiple processors. By default,
-       <literal>mkl</literal> will use Intel’s <literal>iomp</literal>
-       implementation if no other is specified, but this is a
-       runtime-only dependency and binary compatible with the LLVM
-       implementation. To use that one instead, Intel recommends users
-       set it with <literal>LD_PRELOAD</literal>. Note that
-       <literal>mkl</literal> is only available on
-       <literal>x86_64-linux</literal> and
-       <literal>x86_64-darwin</literal>. Moreover, Hydra is not
-       building and distributing pre-compiled binaries using it.
-     </para>
-     <para>
-       For BLAS/LAPACK switching to work correctly, all packages must
-       depend on <literal>blas</literal> or <literal>lapack</literal>.
-       This ensures that only one BLAS/LAPACK library is used at one
-       time. There are two versions versions of BLAS/LAPACK currently
-       in the wild, <literal>LP64</literal> (integer size = 32 bits)
-       and <literal>ILP64</literal> (integer size = 64 bits). Some
-       software needs special flags or patches to work with
-       <literal>ILP64</literal>. You can check if
-       <literal>ILP64</literal> is used in Nixpkgs with
-       <varname>blas.isILP64</varname> and
-       <varname>lapack.isILP64</varname>. Some software does NOT work
-       with <literal>ILP64</literal>, and derivations need to specify
-       an assertion to prevent this. You can prevent
-       <literal>ILP64</literal> from being used with the following:
-     </para>
-     <programlisting>
+
+   <para>
+    Intel MKL requires an <literal>openmp</literal> implementation when running with multiple processors. By default, <literal>mkl</literal> will use Intel’s <literal>iomp</literal> implementation if no other is specified, but this is a runtime-only dependency and binary compatible with the LLVM implementation. To use that one instead, Intel recommends users set it with <literal>LD_PRELOAD</literal>. Note that <literal>mkl</literal> is only available on <literal>x86_64-linux</literal> and <literal>x86_64-darwin</literal>. Moreover, Hydra is not building and distributing pre-compiled binaries using it.
+   </para>
+
+   <para>
+    For BLAS/LAPACK switching to work correctly, all packages must depend on <literal>blas</literal> or <literal>lapack</literal>. This ensures that only one BLAS/LAPACK library is used at one time. There are two versions versions of BLAS/LAPACK currently in the wild, <literal>LP64</literal> (integer size = 32 bits) and <literal>ILP64</literal> (integer size = 64 bits). Some software needs special flags or patches to work with <literal>ILP64</literal>. You can check if <literal>ILP64</literal> is used in Nixpkgs with <varname>blas.isILP64</varname> and <varname>lapack.isILP64</varname>. Some software does NOT work with <literal>ILP64</literal>, and derivations need to specify an assertion to prevent this. You can prevent <literal>ILP64</literal> from being used with the following:
+   </para>
+
+<programlisting>
 { stdenv, blas, lapack, ... }:
 
 assert (!blas.isILP64) &amp;&amp; (!lapack.isILP64);
@@ -291,41 +242,38 @@ stdenv.mkDerivation {
   ...
 }
 </programlisting>
-   </section>
-   <section xml:id="sec-overlays-alternatives-mpi">
-     <title>Switching the MPI implementation</title>
-     <para>
-       All programs that are built with
-       <link xlink:href="https://en.wikipedia.org/wiki/Message_Passing_Interface">MPI</link>
-       support use the generic attribute <varname>mpi</varname>
-       as an input. At the moment Nixpkgs natively provides two different
-       MPI implementations:
-       <itemizedlist>
-         <listitem>
-           <para>
-             <link xlink:href="https://www.open-mpi.org/">Open MPI</link>
-             (default), attribute name <varname>openmpi</varname>
-           </para>
-         </listitem>
-         <listitem>
-           <para>
-             <link xlink:href="https://www.mpich.org/">MPICH</link>,
-             attribute name <varname>mpich</varname>
-           </para>
-         </listitem>
-       </itemizedlist>
-     </para>
-     <para>
-       To provide MPI enabled applications that use <literal>MPICH</literal>, instead
-       of the default <literal>Open MPI</literal>, simply use the following overlay:
-     </para>
-     <programlisting>
+  </section>
+
+  <section xml:id="sec-overlays-alternatives-mpi">
+   <title>Switching the MPI implementation</title>
+
+   <para>
+    All programs that are built with <link xlink:href="https://en.wikipedia.org/wiki/Message_Passing_Interface">MPI</link> support use the generic attribute <varname>mpi</varname> as an input. At the moment Nixpkgs natively provides two different MPI implementations:
+    <itemizedlist>
+     <listitem>
+      <para>
+       <link xlink:href="https://www.open-mpi.org/">Open MPI</link> (default), attribute name <varname>openmpi</varname>
+      </para>
+     </listitem>
+     <listitem>
+      <para>
+       <link xlink:href="https://www.mpich.org/">MPICH</link>, attribute name <varname>mpich</varname>
+      </para>
+     </listitem>
+    </itemizedlist>
+   </para>
+
+   <para>
+    To provide MPI enabled applications that use <literal>MPICH</literal>, instead of the default <literal>Open MPI</literal>, simply use the following overlay:
+   </para>
+
+<programlisting>
 self: super:
 
 {
   mpi = self.mpich;
 }
      </programlisting>
-   </section>
+  </section>
  </section>
 </chapter>