<section xmlns="http://docbook.org/ns/docbook"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         xml:id="sec-language-texlive">
 <title>TeX Live</title>

 <para>
  Since release 15.09 there is a new TeX Live packaging that lives entirely
  under attribute <varname>texlive</varname>.
 </para>

 <section>
  <title>User's guide</title>

  <itemizedlist>
   <listitem>
    <para>
     For basic usage just pull <varname>texlive.combined.scheme-basic</varname>
     for an environment with basic LaTeX support.
    </para>
   </listitem>
   <listitem>
    <para>
     It typically won't work to use separately installed packages together.
     Instead, you can build a custom set of packages like this:
<programlisting>
texlive.combine {
  inherit (texlive) scheme-small collection-langkorean algorithms cm-super;
}
      </programlisting>
     There are all the schemes, collections and a few thousand packages, as
     defined upstream (perhaps with tiny differences).
    </para>
   </listitem>
   <listitem>
    <para>
     By default you only get executables and files needed during runtime, and a
     little documentation for the core packages. To change that, you need to
     add <varname>pkgFilter</varname> function to <varname>combine</varname>.
<programlisting>
texlive.combine {
  # inherit (texlive) whatever-you-want;
  pkgFilter = pkg:
    pkg.tlType == "run" || pkg.tlType == "bin" || pkg.pname == "cm-super";
  # elem tlType [ "run" "bin" "doc" "source" ]
  # there are also other attributes: version, name
}
      </programlisting>
    </para>
   </listitem>
   <listitem>
    <para>
     You can list packages e.g. by <command>nix-repl</command>.
<programlisting>
$ nix-repl
nix-repl> :l &lt;nixpkgs>
nix-repl> texlive.collection-&lt;TAB>
      </programlisting>
    </para>
   </listitem>
  </itemizedlist>
 </section>

 <section>
  <title>Known problems</title>

  <itemizedlist>
   <listitem>
    <para>
     Some tools are still missing, e.g. luajittex;
    </para>
   </listitem>
   <listitem>
    <para>
     some apps aren't packaged/tested yet (asymptote, biber, etc.);
    </para>
   </listitem>
   <listitem>
    <para>
     feature/bug: when a package is rejected by <varname>pkgFilter</varname>,
     its dependencies are still propagated;
    </para>
   </listitem>
   <listitem>
    <para>
     in case of any bugs or feature requests, file a github issue or better a
     pull request and /cc @vcunat.
    </para>
   </listitem>
  </itemizedlist>
 </section>
</section>
