2024-05-13 21:24:10 +00:00
|
|
|
{ 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 }:
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
oldTlpdb:
|
|
|
|
|
|
|
|
let
|
|
|
|
tlpdbVersion = tlpdb."00texlive.config";
|
|
|
|
|
2024-05-13 21:24:10 +00:00
|
|
|
# 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" ]);
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
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
|
2024-05-13 21:24:10 +00:00
|
|
|
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
|
|
|
|
]))
|
|
|
|
];
|
2024-05-02 00:46:19 +00:00
|
|
|
pax.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ FileWhich ])) ];
|
2024-05-13 21:24:10 +00:00
|
|
|
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 ])) ];
|
2024-05-02 00:46:19 +00:00
|
|
|
texdoctk.extraBuildInputs = [ (perl.withPackages (ps: with ps; [ Tk ])) ];
|
2024-05-13 21:24:10 +00:00
|
|
|
ulqda.extraBuildInputs =
|
|
|
|
[ (perl.withPackages (ps: with ps; [ DigestSHA1 ])) ];
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
#### python packages
|
2024-05-13 21:24:10 +00:00
|
|
|
pythontex.extraBuildInputs =
|
|
|
|
[ (python3.withPackages (ps: with ps; [ pygments ])) ];
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
#### 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 ];
|
2024-05-13 21:24:10 +00:00
|
|
|
texlive-scripts-extra.extraBuildInputs =
|
|
|
|
[ coreutils findutils ghostscript_headless gnused ];
|
2024-05-02 00:46:19 +00:00
|
|
|
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
|
2024-05-13 21:24:10 +00:00
|
|
|
mptopdf.binfiles = (orig.mptopdf.binfiles or [ ]) ++ [ "mptopdf" ];
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
# remove man
|
|
|
|
texlive-scripts.binfiles = lib.remove "man" orig.texlive-scripts.binfiles;
|
|
|
|
# xindy is broken on some platforms unfortunately
|
2024-05-13 21:24:10 +00:00
|
|
|
xindy.binfiles = if bin ? xindy then
|
|
|
|
lib.subtractLists [ "xindy.mem" "xindy.run" ] orig.xindy.binfiles
|
|
|
|
else
|
|
|
|
[ ];
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
#### 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.out + "/bin/upbibtex";
|
|
|
|
pdvitype = tl.uptex.out + "/bin/updvitype";
|
|
|
|
ppltotf = tl.uptex.out + "/bin/uppltotf";
|
|
|
|
ptftopl = tl.uptex.out + "/bin/uptftopl";
|
|
|
|
};
|
|
|
|
|
2024-05-13 21:24:10 +00:00
|
|
|
texdef.binlinks = { latexdef = "texdef"; };
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
texlive-scripts.binlinks = {
|
|
|
|
mktexfmt = "fmtutil";
|
|
|
|
texhash = tl."texlive.infra".out + "/bin/mktexlsr";
|
|
|
|
};
|
|
|
|
|
|
|
|
texlive-scripts-extra.binlinks = {
|
|
|
|
allec = "allcm";
|
|
|
|
kpsepath = "kpsetool";
|
|
|
|
kpsexpand = "kpsetool";
|
|
|
|
};
|
|
|
|
|
|
|
|
#### add PATH dependencies without wrappers
|
|
|
|
# TODO deduplicate this code
|
|
|
|
a2ping.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '6i$ENV{PATH}='"'"'${
|
|
|
|
lib.makeBinPath a2ping.extraBuildInputs
|
|
|
|
}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/a2ping
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
bibexport.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath bibexport.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/bibexport
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
checklistings.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath checklistings.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/checklistings
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
cjk-gs-integrate.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2i$ENV{PATH}='"'"'${
|
|
|
|
lib.makeBinPath cjk-gs-integrate.extraBuildInputs
|
|
|
|
}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/cjk-gs-integrate
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
context.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath context.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/{contextjit,mtxrunjit}
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
context-legacy.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath context-legacy.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/texexec
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
cyrillic-bin.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath cyrillic-bin.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/rumakeindex
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
dtxgen.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath dtxgen.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/dtxgen
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
dviljk.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath dviljk.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/dvihp
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
epstopdf.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2i$ENV{PATH}='"'"'${
|
|
|
|
lib.makeBinPath epstopdf.extraBuildInputs
|
|
|
|
}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/epstopdf
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
fragmaster.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2i$ENV{PATH}='"'"'${
|
|
|
|
lib.makeBinPath fragmaster.extraBuildInputs
|
|
|
|
}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/fragmaster
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
installfont.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath installfont.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/installfont-tl
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
latexfileversion.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath latexfileversion.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/latexfileversion
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
listings-ext.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath listings-ext.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/listings-ext.sh
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
ltxfileinfo.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath ltxfileinfo.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/ltxfileinfo
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
ltximg.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2i$ENV{PATH}='"'"'${
|
|
|
|
lib.makeBinPath ltximg.extraBuildInputs
|
|
|
|
}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/ltximg
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
luaotfload.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2ios.setenv("PATH","${
|
|
|
|
lib.makeBinPath luaotfload.extraBuildInputs
|
|
|
|
}" .. (os.getenv("PATH") and ":" .. os.getenv("PATH") or ""))' "$out"/bin/luaotfload-tool
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
makeindex.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath makeindex.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/mkindex
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
pagelayout.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath [ gnused ]
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/pagelayoutapi
|
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath [ ncurses ]
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/textestvis
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
pdfcrop.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2i$ENV{PATH}='"'"'${
|
|
|
|
lib.makeBinPath pdfcrop.extraBuildInputs
|
|
|
|
}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/pdfcrop
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
pdftex.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i -e '2iPATH="${
|
|
|
|
lib.makeBinPath [ coreutils gnused ]
|
|
|
|
}''${PATH:+:$PATH}"' \
|
|
|
|
-e 's!^distillerpath="/usr/local/bin"$!distillerpath="${
|
|
|
|
lib.makeBinPath [ ghostscript_headless ]
|
|
|
|
}"!' \
|
2024-05-02 00:46:19 +00:00
|
|
|
"$out"/bin/simpdftex
|
|
|
|
'';
|
|
|
|
|
|
|
|
pdftex-quiet.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath pdftex-quiet.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/pdftex-quiet
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
pdfxup.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath pdfxup.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/pdfxup
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
pkfix-helper.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2i$ENV{PATH}='"'"'${
|
|
|
|
lib.makeBinPath pkfix-helper.extraBuildInputs
|
|
|
|
}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/pkfix-helper
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
ps2eps.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2i$ENV{PATH}='"'"'${
|
|
|
|
lib.makeBinPath ps2eps.extraBuildInputs
|
|
|
|
}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/ps2eps
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
pst2pdf.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2i$ENV{PATH}='"'"'${
|
|
|
|
lib.makeBinPath pst2pdf.extraBuildInputs
|
|
|
|
}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/pst2pdf
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
tex4ebook.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2ios.setenv("PATH","${
|
|
|
|
lib.makeBinPath tex4ebook.extraBuildInputs
|
|
|
|
}" .. (os.getenv("PATH") and ":" .. os.getenv("PATH") or ""))' "$out"/bin/tex4ebook
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
texlive-scripts.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath texlive-scripts.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/{fmtutil-user,mktexmf,mktexpk,mktextfm,updmap-user}
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
thumbpdf.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2i$ENV{PATH}='"'"'${
|
|
|
|
lib.makeBinPath thumbpdf.extraBuildInputs
|
|
|
|
}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/thumbpdf
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
tpic2pdftex.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath tpic2pdftex.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/tpic2pdftex
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
wordcount.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath wordcount.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/wordcount
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
# TODO patch in bin.xdvi
|
|
|
|
xdvi.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2iPATH="${
|
|
|
|
lib.makeBinPath xdvi.extraBuildInputs
|
|
|
|
}''${PATH:+:$PATH}"' "$out"/bin/xdvi
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
xindy.postFixup = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2i$ENV{PATH}='"'"'${
|
|
|
|
lib.makeBinPath xindy.extraBuildInputs
|
|
|
|
}'"'"' . ($ENV{PATH} ? ":$ENV{PATH}" : '"'''"');' "$out"/bin/{texindy,xindy}
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
#### 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 = ''
|
2024-05-13 21:24:10 +00:00
|
|
|
sed -i '2ios.setenv("PATH","${
|
|
|
|
lib.makeBinPath epspdf.extraBuildInputs
|
|
|
|
}" .. (os.getenv("PATH") and ":" .. os.getenv("PATH") or ""))' "$out"/bin/epspdf
|
2024-05-02 00:46:19 +00:00
|
|
|
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}'
|
2024-05-13 21:24:10 +00:00
|
|
|
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
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
# 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 \
|
2024-05-13 21:24:10 +00:00
|
|
|
--replace-fail '[dict get $::pkgs texlive.infra localrev]' '${
|
|
|
|
toString orig."texlive.infra".revision
|
|
|
|
}' \
|
|
|
|
--replace-fail '[dict get $::pkgs tlshell localrev]' '${
|
|
|
|
toString orig.tlshell.revision
|
|
|
|
}'
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
#### dependency changes
|
|
|
|
# it seems to need it to transform fonts
|
2024-05-13 21:24:10 +00:00
|
|
|
xdvi.deps = (orig.xdvi.deps or [ ]) ++ [ "metafont" ];
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
# remove dependency-heavy packages from the basic collections
|
2024-05-13 21:24:10 +00:00
|
|
|
collection-basic.deps =
|
|
|
|
lib.subtractLists [ "metafont" "xdvi" ] orig.collection-basic.deps;
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
# add them elsewhere so that collections cover all packages
|
|
|
|
collection-metapost.deps = orig.collection-metapost.deps ++ [ "metafont" ];
|
2024-05-13 21:24:10 +00:00
|
|
|
collection-plaingeneric.deps = orig.collection-plaingeneric.deps
|
|
|
|
++ [ "xdvi" ];
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
#### misc
|
|
|
|
|
|
|
|
# RISC-V: https://github.com/LuaJIT/LuaJIT/issues/628
|
|
|
|
luajittex.binfiles = lib.optionals
|
2024-05-13 21:24:10 +00:00
|
|
|
(!(stdenv.hostPlatform.isPower && stdenv.hostPlatform.is64bit)
|
|
|
|
&& !stdenv.hostPlatform.isRiscV) orig.luajittex.binfiles;
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
# tlpdb lists license as "unknown", but the README says lppl13: http://mirrors.ctan.org/language/arabic/arabi-add/README
|
2024-05-13 21:24:10 +00:00
|
|
|
arabi-add.license = [ "lppl13c" ];
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
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
|
2024-05-13 21:24:10 +00:00
|
|
|
license = [ "gpl2Plus" ] ++ lib.toList bin.core.meta.license.shortName
|
|
|
|
++ orig."texlive.infra".license or [ ];
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
scriptsFolder = "texlive";
|
2024-05-13 21:24:10 +00:00
|
|
|
extraBuildInputs = [
|
|
|
|
coreutils
|
|
|
|
gnused
|
|
|
|
gnupg
|
|
|
|
tl.kpathsea
|
|
|
|
(perl.withPackages (ps: with ps; [ Tk ]))
|
|
|
|
];
|
2024-05-02 00:46:19 +00:00
|
|
|
|
|
|
|
# make tlmgr believe it can use kpsewhich to evaluate TEXMFROOT
|
|
|
|
postFixup = ''
|
|
|
|
substituteInPlace "$out"/bin/tlmgr \
|
|
|
|
--replace-fail 'if (-r "$bindir/$kpsewhichname")' 'if (1)'
|
2024-05-13 21:24:10 +00:00
|
|
|
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
|
2024-05-02 00:46:19 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
# 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
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
}
|