<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>

