All Projects → Mic92 → tex2nix

Mic92 / tex2nix

Licence: MIT license
texlive expressions for documents

Programming Languages

python
139335 projects - #7 most used programming language
Nix
1067 projects

tex2nix

Generate Texlive environment containing all dependencies for your document rather than downloading gigabytes of texlive packages.

Installation

With stable nix you can do:

nix-build && ./result/bin/tex2nix

If you use flakes put the following in your inputs

{
  inputs.tex2nix.url = "github:Mic92/tex2nix";
  inputs.tex2nix.inputs.utils.follows = "nixpkgs";
}

or just do:

$ nix run github:Mic92/tex2nix

USAGE

$ tex2nix main.tex
wrote tex-env.nix
$ cat tex-env.nix
# Generated with tex2nix 0.0.0
{ texlive }:
(texlive.combine {
    inherit (texlive) scheme-small;
    "varwidth" = texlive."varwidth";
    "tabu" = texlive."tabu";

})

tex2nix does not follow \input or \include. However you can specify multiple texfiles as input

$ tex2nix *.tex

The resulting expression can be imported like this to in your document directory:

# shell.nix
with import <nixpkgs> {};
mkShell {
  buildInputs = [ (pkgs.callPackage ./tex-env.nix {}) ];
}
$ nix-shell shell.nix
nix-shell> pdflatex --version
pdfTeX 3.14159265-2.6-1.40.21 (TeX Live 2020/NixOS.org)
...

To add additional packages you can use the extraTexPackages field:

with import <nixpkgs> {};
mkShell {
  buildInputs = [ (pkgs.callPackage ./tex-env.nix {
    extraTexPackages = {
      inherit (texlive) latexmk;
    };
  }) ];
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].