70c3a7fa4e
LMTX 2.11.02 is the new version shipped by TeX Live 2024, not 2023. This reverts commits7992ab336b
,4a2f32b16c
and other ConTeXt patches that were fixing issues caused by using the wrong version of LMTX.
421 lines
18 KiB
Nix
421 lines
18 KiB
Nix
{ stdenv, lib, tlpdb, bin, tlpdbxz, tl
|
|
, installShellFiles
|
|
, coreutils, findutils, gawk, getopt, ghostscript_headless, gnugrep
|
|
, gnumake, gnupg, gnused, gzip, html-tidy, ncurses, perl, python3, ruby, zip
|
|
}:
|
|
|
|
oldTlpdb:
|
|
|
|
let
|
|
tlpdbVersion = tlpdb."00texlive.config";
|
|
|
|
# most format -> engine links are generated by texlinks according to fmtutil.cnf at combine time
|
|
# so we remove them from binfiles, and add back the ones texlinks purposefully ignore (e.g. mptopdf)
|
|
removeFormatLinks = lib.mapAttrs (_: attrs:
|
|
if (attrs ? formats && attrs ? binfiles)
|
|
# TLPDB reports erroneously that various metafont binaries like "mf" are format links to engines
|
|
# like "mf-nowin"; core-big provides both binaries and links so we simply skip them here
|
|
then let formatLinks = lib.catAttrs "name" (lib.filter (f: f.name != f.engine && ! lib.hasSuffix "-nowin" f.engine) attrs.formats);
|
|
binNotFormats = lib.subtractLists formatLinks attrs.binfiles;
|
|
in if binNotFormats != [] then attrs // { binfiles = binNotFormats; } else removeAttrs attrs [ "binfiles" ]
|
|
else attrs);
|
|
|
|
orig = removeFormatLinks (removeAttrs oldTlpdb [ "00texlive.config" ]);
|
|
|
|
in lib.recursiveUpdate orig rec {
|
|
#### overrides of texlive.tlpdb
|
|
|
|
#### nonstandard script folders
|
|
context.scriptsFolder = "context/stubs-mkiv/unix";
|
|
context-legacy.scriptsFolder = "context/stubs/unix";
|
|
cyrillic-bin.scriptsFolder = "texlive-extra";
|
|
fontinst.scriptsFolder = "texlive-extra";
|
|
mptopdf.scriptsFolder = "context/perl";
|
|
pdftex.scriptsFolder = "simpdftex";
|
|
texlive-scripts.scriptsFolder = "texlive";
|
|
texlive-scripts-extra.scriptsFolder = "texlive-extra";
|
|
xetex.scriptsFolder = "texlive-extra";
|
|
|
|
#### interpreters not detected by looking at the script extensions
|
|
ctanbib.extraBuildInputs = [ bin.luatex ];
|
|
de-macro.extraBuildInputs = [ python3 ];
|
|
match_parens.extraBuildInputs = [ ruby ];
|
|
optexcount.extraBuildInputs = [ python3 ];
|
|
pdfbook2.extraBuildInputs = [ python3 ];
|
|
texlogsieve.extraBuildInputs = [ bin.luatex ];
|
|
|
|
#### perl packages
|
|
crossrefware.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ LWP URI ])) ];
|
|
ctan-o-mat.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ LWP LWPProtocolHttps ])) ];
|
|
ctanify.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ FileCopyRecursive ])) ];
|
|
ctanupload.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ HTMLFormatter WWWMechanize ])) ];
|
|
exceltex.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ SpreadsheetParseExcel ])) ];
|
|
latex-git-log.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ IPCSystemSimple ])) ];
|
|
latexindent.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ FileHomeDir LogDispatch LogLog4perl UnicodeLineBreak YAMLTiny ])) ];
|
|
pax.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ FileWhich ])) ];
|
|
ptex-fontmaps.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ Tk ])) ];
|
|
purifyeps.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ FileWhich ])) ];
|
|
svn-multi.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ TimeDate ])) ];
|
|
texdoctk.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ Tk ])) ];
|
|
ulqda.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ DigestSHA1 ])) ];
|
|
|
|
#### python packages
|
|
pythontex.extraBuildInputs = [ (python3.withPackages (ps: with ps; [ pygments ])) ];
|
|
|
|
#### other runtime PATH dependencies
|
|
a2ping.extraBuildInputs = [ ghostscript_headless ];
|
|
bibexport.extraBuildInputs = [ gnugrep ];
|
|
checklistings.extraBuildInputs = [ coreutils ];
|
|
cjk-gs-integrate.extraBuildInputs = [ ghostscript_headless ];
|
|
context.extraBuildInputs = [ coreutils ];
|
|
context-legacy.extraBuildInputs = [ ruby ];
|
|
cyrillic-bin.extraBuildInputs = [ coreutils gnused ];
|
|
dtxgen.extraBuildInputs = [ coreutils getopt gnumake zip ];
|
|
dviljk.extraBuildInputs = [ coreutils ];
|
|
epspdf.extraBuildInputs = [ ghostscript_headless ];
|
|
epstopdf.extraBuildInputs = [ ghostscript_headless ];
|
|
fragmaster.extraBuildInputs = [ ghostscript_headless ];
|
|
installfont.extraBuildInputs = [ coreutils getopt gnused ];
|
|
latexfileversion.extraBuildInputs = [ coreutils gnugrep gnused ];
|
|
listings-ext.extraBuildInputs = [ coreutils getopt ];
|
|
ltxfileinfo.extraBuildInputs = [ coreutils getopt gnused ];
|
|
ltximg.extraBuildInputs = [ ghostscript_headless ];
|
|
luaotfload.extraBuildInputs = [ ncurses ];
|
|
makeindex.extraBuildInputs = [ coreutils gnused ];
|
|
pagelayout.extraBuildInputs = [ gnused ncurses ];
|
|
pdfcrop.extraBuildInputs = [ ghostscript_headless ];
|
|
pdftex.extraBuildInputs = [ coreutils ghostscript_headless gnused ];
|
|
pdftex-quiet.extraBuildInputs = [ coreutils ];
|
|
pdfxup.extraBuildInputs = [ coreutils ghostscript_headless ];
|
|
pkfix-helper.extraBuildInputs = [ ghostscript_headless ];
|
|
ps2eps.extraBuildInputs = [ ghostscript_headless ];
|
|
pst2pdf.extraBuildInputs = [ ghostscript_headless ];
|
|
tex4ebook.extraBuildInputs = [ html-tidy ];
|
|
texlive-scripts.extraBuildInputs = [ gnused ];
|
|
texlive-scripts-extra.extraBuildInputs = [ coreutils findutils ghostscript_headless gnused ];
|
|
thumbpdf.extraBuildInputs = [ ghostscript_headless ];
|
|
tpic2pdftex.extraBuildInputs = [ gawk ];
|
|
wordcount.extraBuildInputs = [ coreutils gnugrep ];
|
|
xdvi.extraBuildInputs = [ coreutils gnugrep ];
|
|
xindy.extraBuildInputs = [ gzip ];
|
|
|
|
#### adjustments to binaries
|
|
# TODO patch the scripts from bin.* directly in bin.* instead of here
|
|
|
|
# mptopdf is a format link, but not generated by texlinks
|
|
# so we add it back to binfiles to generate it from mkPkgBin
|
|
mptopdf.binfiles = (orig.mptopdf.binfiles or []) ++ [ "mptopdf" ];
|
|
|
|
# remove man
|
|
texlive-scripts.binfiles = lib.remove "man" orig.texlive-scripts.binfiles;
|
|
# xindy is broken on some platforms unfortunately
|
|
xindy.binfiles = if bin ? xindy
|
|
then lib.subtractLists [ "xindy.mem" "xindy.run" ] orig.xindy.binfiles
|
|
else [];
|
|
|
|
#### additional symlinks
|
|
cluttex.binlinks = {
|
|
cllualatex = "cluttex";
|
|
clxelatex = "cluttex";
|
|
};
|
|
|
|
context.binlinks = {
|
|
context = "luametatex";
|
|
"context.lua" = tl.context.tex + "/scripts/context/lua/context.lua";
|
|
mtxrun = "luametatex";
|
|
"mtxrun.lua" = tl.context.tex + "/scripts/context/lua/mtxrun.lua";
|
|
};
|
|
|
|
epstopdf.binlinks.repstopdf = "epstopdf";
|
|
pdfcrop.binlinks.rpdfcrop = "pdfcrop";
|
|
|
|
# TODO: handle symlinks in bin.core
|
|
ptex.binlinks = {
|
|
pbibtex = tl.uptex + "/bin/upbibtex";
|
|
pdvitype = tl.uptex + "/bin/updvitype";
|
|
ppltotf = tl.uptex + "/bin/uppltotf";
|
|
ptftopl = tl.uptex + "/bin/uptftopl";
|
|
};
|
|
|
|
texdef.binlinks = {
|
|
latexdef = "texdef";
|
|
};
|
|
|
|
texlive-scripts.binlinks = {
|
|
mktexfmt = "fmtutil";
|
|
texhash = tl."texlive.infra" + "/bin/mktexlsr";
|
|
};
|
|
|
|
texlive-scripts-extra.binlinks = {
|
|
allec = "allcm";
|
|
kpsepath = "kpsetool";
|
|
kpsexpand = "kpsetool";
|
|
};
|
|
|
|
#### add PATH dependencies without wrappers
|
|
# TODO deduplicate this code
|
|
a2ping.postFixup = ''
|
|
sed -i '6i$ENV{PATH}='"'"'${lib.makeBinPath a2ping.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/a2ping
|
|
'';
|
|
|
|
bibexport.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath bibexport.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/bibexport
|
|
'';
|
|
|
|
checklistings.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath checklistings.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/checklistings
|
|
'';
|
|
|
|
cjk-gs-integrate.postFixup = ''
|
|
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath cjk-gs-integrate.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/cjk-gs-integrate
|
|
'';
|
|
|
|
context.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath context.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/{contextjit,mtxrunjit}
|
|
'';
|
|
|
|
context-legacy.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath context-legacy.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/texexec
|
|
'';
|
|
|
|
cyrillic-bin.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath cyrillic-bin.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/rumakeindex
|
|
'';
|
|
|
|
dtxgen.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath dtxgen.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/dtxgen
|
|
'';
|
|
|
|
dviljk.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath dviljk.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/dvihp
|
|
'';
|
|
|
|
epstopdf.postFixup = ''
|
|
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath epstopdf.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/epstopdf
|
|
'';
|
|
|
|
fragmaster.postFixup = ''
|
|
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath fragmaster.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/fragmaster
|
|
'';
|
|
|
|
installfont.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath installfont.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/installfont-tl
|
|
'';
|
|
|
|
latexfileversion.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath latexfileversion.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/latexfileversion
|
|
'';
|
|
|
|
listings-ext.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath listings-ext.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/listings-ext.sh
|
|
'';
|
|
|
|
ltxfileinfo.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath ltxfileinfo.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/ltxfileinfo
|
|
'';
|
|
|
|
ltximg.postFixup = ''
|
|
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath ltximg.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/ltximg
|
|
'';
|
|
|
|
luaotfload.postFixup = ''
|
|
sed -i '2ios.setenv("PATH","${lib.makeBinPath luaotfload.extraBuildInputs}" .. (os.getenv("PATH") and ":" .. os.getenv("PATH") or ""))' "$out"/bin/luaotfload-tool
|
|
'';
|
|
|
|
makeindex.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath makeindex.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/mkindex
|
|
'';
|
|
|
|
pagelayout.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath [ gnused ]}''${PATH:+:$PATH}"' "$out"/bin/pagelayoutapi
|
|
sed -i '2iPATH="${lib.makeBinPath [ ncurses ]}''${PATH:+:$PATH}"' "$out"/bin/textestvis
|
|
'';
|
|
|
|
pdfcrop.postFixup = ''
|
|
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath pdfcrop.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/pdfcrop
|
|
'';
|
|
|
|
pdftex.postFixup = ''
|
|
sed -i -e '2iPATH="${lib.makeBinPath [ coreutils gnused ]}''${PATH:+:$PATH}"' \
|
|
-e 's!^distillerpath="/usr/local/bin"$!distillerpath="${lib.makeBinPath [ ghostscript_headless ]}"!' \
|
|
"$out"/bin/simpdftex
|
|
'';
|
|
|
|
pdftex-quiet.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath pdftex-quiet.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/pdftex-quiet
|
|
'';
|
|
|
|
pdfxup.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath pdfxup.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/pdfxup
|
|
'';
|
|
|
|
pkfix-helper.postFixup = ''
|
|
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath pkfix-helper.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/pkfix-helper
|
|
'';
|
|
|
|
ps2eps.postFixup = ''
|
|
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath ps2eps.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/ps2eps
|
|
'';
|
|
|
|
pst2pdf.postFixup = ''
|
|
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath pst2pdf.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/pst2pdf
|
|
'';
|
|
|
|
tex4ebook.postFixup = ''
|
|
sed -i '2ios.setenv("PATH","${lib.makeBinPath tex4ebook.extraBuildInputs}" .. (os.getenv("PATH") and ":" .. os.getenv("PATH") or ""))' "$out"/bin/tex4ebook
|
|
'';
|
|
|
|
texlive-scripts.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath texlive-scripts.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/{fmtutil-user,mktexmf,mktexpk,mktextfm,updmap-user}
|
|
'';
|
|
|
|
thumbpdf.postFixup = ''
|
|
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath thumbpdf.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/thumbpdf
|
|
'';
|
|
|
|
tpic2pdftex.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath tpic2pdftex.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/tpic2pdftex
|
|
'';
|
|
|
|
wordcount.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath wordcount.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/wordcount
|
|
'';
|
|
|
|
# TODO patch in bin.xdvi
|
|
xdvi.postFixup = ''
|
|
sed -i '2iPATH="${lib.makeBinPath xdvi.extraBuildInputs}''${PATH:+:$PATH}"' "$out"/bin/xdvi
|
|
'';
|
|
|
|
xindy.postFixup = ''
|
|
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath xindy.extraBuildInputs}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/{texindy,xindy}
|
|
'';
|
|
|
|
#### other script fixes
|
|
# misc tab and python3 fixes
|
|
ebong.postFixup = ''
|
|
sed -Ei 's/import sre/import re/; s/file\(/open(/g; s/\t/ /g; s/print +(.*)$/print(\1)/g' "$out"/bin/ebong
|
|
'';
|
|
|
|
# find files in script directory, not binary directory
|
|
# add runtime dependencies to PATH
|
|
epspdf.postFixup = ''
|
|
sed -i '2ios.setenv("PATH","${lib.makeBinPath epspdf.extraBuildInputs}" .. (os.getenv("PATH") and ":" .. os.getenv("PATH") or ""))' "$out"/bin/epspdf
|
|
substituteInPlace "$out"/bin/epspdftk --replace-fail '[info script]' "\"$scriptsFolder/epspdftk.tcl\""
|
|
'';
|
|
|
|
# find files in script directory, not in binary directory
|
|
latexindent.postFixup = ''
|
|
substituteInPlace "$out"/bin/latexindent --replace-fail 'use FindBin;' "BEGIN { \$0 = '$scriptsFolder' . '/latexindent.pl'; }; use FindBin;"
|
|
'';
|
|
|
|
# flag lua dependency
|
|
texblend.scriptExts = [ "lua" ];
|
|
|
|
# Patch texlinks.sh back to 2015 version;
|
|
# otherwise some bin/ links break, e.g. xe(la)tex.
|
|
# add runtime dependencies to PATH
|
|
texlive-scripts-extra.postFixup = ''
|
|
patch -R "$out"/bin/texlinks < '${./texlinks.diff}'
|
|
sed -i '2iPATH="${lib.makeBinPath [ coreutils ]}''${PATH:+:$PATH}"' "$out"/bin/{allcm,dvired,mkocp,ps2frag}
|
|
sed -i '2iPATH="${lib.makeBinPath [ coreutils findutils ]}''${PATH:+:$PATH}"' "$out"/bin/allneeded
|
|
sed -i '2iPATH="${lib.makeBinPath [ coreutils ghostscript_headless ]}''${PATH:+:$PATH}"' "$out"/bin/dvi2fax
|
|
sed -i '2iPATH="${lib.makeBinPath [ gnused ]}''${PATH:+:$PATH}"' "$out"/bin/{kpsetool,texconfig,texconfig-sys}
|
|
sed -i '2iPATH="${lib.makeBinPath [ coreutils gnused ]}''${PATH:+:$PATH}"' "$out"/bin/texconfig-dialog
|
|
'';
|
|
|
|
# patch interpreter
|
|
texosquery.postFixup = ''
|
|
substituteInPlace "$out"/bin/* --replace-fail java "$interpJava"
|
|
'';
|
|
|
|
# hardcode revision numbers (since texlive.infra, tlshell are not in either system or user texlive.tlpdb)
|
|
tlshell.postFixup = ''
|
|
substituteInPlace "$out"/bin/tlshell \
|
|
--replace-fail '[dict get $::pkgs texlive.infra localrev]' '${toString orig."texlive.infra".revision}' \
|
|
--replace-fail '[dict get $::pkgs tlshell localrev]' '${toString orig.tlshell.revision}'
|
|
'';
|
|
|
|
#### dependency changes
|
|
# it seems to need it to transform fonts
|
|
xdvi.deps = (orig.xdvi.deps or []) ++ [ "metafont" ];
|
|
|
|
# remove dependency-heavy packages from the basic collections
|
|
collection-basic.deps = lib.subtractLists [ "metafont" "xdvi" ] orig.collection-basic.deps;
|
|
|
|
# add them elsewhere so that collections cover all packages
|
|
collection-metapost.deps = orig.collection-metapost.deps ++ [ "metafont" ];
|
|
collection-plaingeneric.deps = orig.collection-plaingeneric.deps ++ [ "xdvi" ];
|
|
|
|
#### misc
|
|
|
|
# RISC-V: https://github.com/LuaJIT/LuaJIT/issues/628
|
|
luajittex.binfiles = lib.optionals
|
|
(!(stdenv.hostPlatform.isPower && stdenv.hostPlatform.is64bit) && !stdenv.hostPlatform.isRiscV)
|
|
orig.luajittex.binfiles;
|
|
|
|
# tlpdb lists license as "unknown", but the README says lppl13: http://mirrors.ctan.org/language/arabic/arabi-add/README
|
|
arabi-add.license = [ "lppl13c" ];
|
|
|
|
texdoc = {
|
|
extraRevision = "-tlpdb${toString tlpdbVersion.revision}";
|
|
extraVersion = "-tlpdb-${toString tlpdbVersion.revision}";
|
|
|
|
extraNativeBuildInputs = [ installShellFiles ];
|
|
|
|
# build Data.tlpdb.lua (part of the 'tlType == "run"' package)
|
|
postUnpack = ''
|
|
if [[ -f "$out"/scripts/texdoc/texdoc.tlu ]]; then
|
|
unxz --stdout "${tlpdbxz}" > texlive.tlpdb
|
|
|
|
# create dummy doc file to ensure that texdoc does not return an error
|
|
mkdir -p support/texdoc
|
|
touch support/texdoc/NEWS
|
|
|
|
TEXMFCNF="${tl.kpathsea.tex}/web2c" TEXMF="$out" TEXDOCS=. TEXMFVAR=. \
|
|
"${bin.luatex}"/bin/texlua "$out"/scripts/texdoc/texdoc.tlu \
|
|
-c texlive_tlpdb=texlive.tlpdb -lM texdoc
|
|
|
|
cp texdoc/cache-tlpdb.lua "$out"/scripts/texdoc/Data.tlpdb.lua
|
|
fi
|
|
'';
|
|
|
|
# install zsh completion
|
|
postFixup = ''
|
|
TEXMFCNF="${tl.kpathsea.tex}"/web2c TEXMF="$scriptsFolder/../.." \
|
|
texlua "$out"/bin/texdoc --print-completion zsh > "$TMPDIR"/_texdoc
|
|
substituteInPlace "$TMPDIR"/_texdoc \
|
|
--replace-fail 'compdef __texdoc texdoc' '#compdef texdoc' \
|
|
--replace-fail '$(kpsewhich -var-value TEXMFROOT)/tlpkg/texlive.tlpdb' '$(kpsewhich Data.tlpdb.lua)' \
|
|
--replace-fail '/^name[^.]*$/ {print $2}' '/^ \["[^"]*"\] = {$/ { print substr($1,3,length($1)-4) }'
|
|
echo '__texdoc' >> "$TMPDIR"/_texdoc
|
|
installShellCompletion --zsh "$TMPDIR"/_texdoc
|
|
'';
|
|
};
|
|
|
|
"texlive.infra" = {
|
|
extraRevision = ".tlpdb${toString tlpdbVersion.revision}";
|
|
extraVersion = "-tlpdb-${toString tlpdbVersion.revision}";
|
|
|
|
# add license of tlmgr and TeXLive::* perl packages and of bin.core
|
|
license = [ "gpl2Plus" ] ++ lib.toList bin.core.meta.license.shortName ++ orig."texlive.infra".license or [ ];
|
|
|
|
scriptsFolder = "texlive";
|
|
extraBuildInputs = [ coreutils gnused gnupg tl.kpathsea (perl.withPackages (ps: with ps; [ Tk ])) ];
|
|
|
|
# make tlmgr believe it can use kpsewhich to evaluate TEXMFROOT
|
|
postFixup = ''
|
|
substituteInPlace "$out"/bin/tlmgr \
|
|
--replace-fail 'if (-r "$bindir/$kpsewhichname")' 'if (1)'
|
|
sed -i '2i$ENV{PATH}='"'"'${lib.makeBinPath [ gnupg ]}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/tlmgr
|
|
sed -i '2iPATH="${lib.makeBinPath [ coreutils gnused tl.kpathsea ]}''${PATH:+:$PATH}"' "$out"/bin/mktexlsr
|
|
'';
|
|
|
|
# add minimal texlive.tlpdb
|
|
postUnpack = ''
|
|
if [[ -d "$out"/TeXLive ]] ; then
|
|
xzcat "${tlpdbxz}" | sed -n -e '/^name \(00texlive.config\|00texlive.installation\)$/,/^$/p' > "$out"/texlive.tlpdb
|
|
fi
|
|
'';
|
|
};
|
|
}
|