TeX Live
Since release 15.09 there is a new TeX Live packaging that lives entirely under attribute texlive.
User's guide
For basic usage just pull texlive.combined.scheme-basic for an environment with basic LaTeX support.
It typically won't work to use separately installed packages together.
Instead, you can build a custom set of packages like this:
texlive.combine {
inherit (texlive) scheme-small collection-langkorean algorithms cm-super;
}
There are all the schemes, collections and a few thousand packages, as defined upstream (perhaps with tiny differences).
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 pkgFilter function to combine.
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
}
You can list packages e.g. by nix-repl.
$ nix-repl
nix-repl> :l <nixpkgs>
nix-repl> texlive.collection-<TAB>
Known problems
Some tools are still missing, e.g. luajittex;
some apps aren't packaged/tested yet (asymptote, biber, etc.);
feature/bug: when a package is rejected by pkgFilter, its dependencies are still propagated;
in case of any bugs or feature requests, file a github issue or better a pull request and /cc @vcunat.