2024-05-02 00:46:19 +00:00
|
|
|
# legacy texlive.combine wrapper
|
|
|
|
{
|
|
|
|
lib,
|
|
|
|
toTLPkgList,
|
|
|
|
toTLPkgSets,
|
|
|
|
buildTeXEnv,
|
|
|
|
}:
|
|
|
|
args@{
|
|
|
|
pkgFilter ? (
|
|
|
|
pkg: pkg.tlType == "run" || pkg.tlType == "bin" || pkg.pname == "core" || pkg.hasManpages or false
|
2024-06-30 08:16:52 +00:00
|
|
|
),
|
2024-05-02 00:46:19 +00:00
|
|
|
extraName ? "combined",
|
|
|
|
extraVersion ? "",
|
|
|
|
...
|
|
|
|
}:
|
|
|
|
let
|
|
|
|
pkgSet = removeAttrs args [
|
|
|
|
"pkgFilter"
|
|
|
|
"extraName"
|
|
|
|
"extraVersion"
|
|
|
|
];
|
|
|
|
|
|
|
|
# combine a set of TL packages into a single TL meta-package
|
|
|
|
combinePkgs =
|
|
|
|
pkgList:
|
|
|
|
lib.catAttrs "pkg" (
|
|
|
|
let
|
|
|
|
# a TeX package used to be an attribute set { pkgs = [ ... ]; ... } where pkgs is a list of derivations
|
|
|
|
# the derivations make up the TeX package and optionally (for backward compatibility) its dependencies
|
|
|
|
tlPkgToSets =
|
|
|
|
drv:
|
|
|
|
map (
|
|
|
|
{
|
|
|
|
tlType,
|
|
|
|
version ? "",
|
|
|
|
outputName ? "",
|
|
|
|
...
|
|
|
|
}@pkg:
|
|
|
|
{
|
|
|
|
# outputName required to distinguish among bin.core-big outputs
|
|
|
|
key = "${pkg.pname or pkg.name}.${tlType}-${version}-${outputName}";
|
|
|
|
inherit pkg;
|
|
|
|
}
|
|
|
|
) (drv.pkgs or (toTLPkgList drv));
|
|
|
|
pkgListToSets = lib.concatMap tlPkgToSets;
|
|
|
|
in
|
|
|
|
builtins.genericClosure {
|
|
|
|
startSet = pkgListToSets pkgList;
|
|
|
|
operator = { pkg, ... }: pkgListToSets (pkg.tlDeps or [ ]);
|
|
|
|
}
|
|
|
|
);
|
|
|
|
combined = combinePkgs (lib.attrValues pkgSet);
|
|
|
|
|
|
|
|
# convert to specified outputs
|
|
|
|
tlTypeToOut = {
|
|
|
|
run = "tex";
|
|
|
|
doc = "texdoc";
|
|
|
|
source = "texsource";
|
|
|
|
bin = "out";
|
|
|
|
tlpkg = "tlpkg";
|
|
|
|
};
|
|
|
|
toSpecified =
|
|
|
|
{ tlType, ... }@drv:
|
|
|
|
drv
|
|
|
|
// {
|
|
|
|
outputSpecified = true;
|
|
|
|
tlOutputName = tlTypeToOut.${tlType};
|
|
|
|
};
|
|
|
|
all = lib.filter pkgFilter combined ++ lib.filter (pkg: pkg.tlType == "tlpkg") combined;
|
|
|
|
converted = builtins.map toSpecified all;
|
|
|
|
in
|
|
|
|
buildTeXEnv {
|
|
|
|
__extraName = extraName;
|
|
|
|
__extraVersion = extraVersion;
|
|
|
|
requiredTeXPackages = _: converted;
|
|
|
|
__combine = true;
|
|
|
|
__fromCombineWrapper = true;
|
|
|
|
}
|