core/pkgs/by-name/te/texlive/combine-wrapper.nix

51 lines
1.8 KiB
Nix
Raw Normal View History

2024-05-02 00:46:19 +00:00
# legacy texlive.combine wrapper
{ lib, toTLPkgList, toTLPkgSets, buildTeXEnv }:
2024-05-13 21:24:10 +00:00
args@{ pkgFilter ? (pkg:
pkg.tlType == "run" || pkg.tlType == "bin" || pkg.pname == "core"
|| pkg.hasManpages or false), extraName ? "combined", extraVersion ? "", ...
2024-05-02 00:46:19 +00:00
}:
let
pkgSet = removeAttrs args [ "pkgFilter" "extraName" "extraVersion" ];
# combine a set of TL packages into a single TL meta-package
2024-05-13 21:24:10 +00:00
combinePkgs = pkgList:
lib.catAttrs "pkg" (let
2024-05-02 00:46:19 +00:00
# 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
2024-05-13 21:24:10 +00:00
tlPkgToSets = drv:
map ({ tlType, version ? "", outputName ? "", ... }@pkg: {
2024-05-02 00:46:19 +00:00
# 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));
2024-05-13 21:24:10 +00:00
pkgListToSets = lib.concatMap tlPkgToSets;
in builtins.genericClosure {
2024-05-02 00:46:19 +00:00
startSet = pkgListToSets pkgList;
2024-05-13 21:24:10 +00:00
operator = { pkg, ... }: pkgListToSets (pkg.tlDeps or [ ]);
2024-05-02 00:46:19 +00:00
});
combined = combinePkgs (lib.attrValues pkgSet);
# convert to specified outputs
2024-05-13 21:24:10 +00:00
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;
2024-05-02 00:46:19 +00:00
converted = builtins.map toSpecified all;
2024-05-13 21:24:10 +00:00
in buildTeXEnv {
2024-05-02 00:46:19 +00:00
__extraName = extraName;
__extraVersion = extraVersion;
requiredTeXPackages = _: converted;
__combine = true;
__fromCombineWrapper = true;
}