diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/typesetting/tex/texlive/combine.nix')
-rw-r--r-- | nixpkgs/pkgs/tools/typesetting/tex/texlive/combine.nix | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/nixpkgs/pkgs/tools/typesetting/tex/texlive/combine.nix b/nixpkgs/pkgs/tools/typesetting/tex/texlive/combine.nix index 1821d1c090de..8a3265727168 100644 --- a/nixpkgs/pkgs/tools/typesetting/tex/texlive/combine.nix +++ b/nixpkgs/pkgs/tools/typesetting/tex/texlive/combine.nix @@ -1,4 +1,6 @@ -params: with params; +{ lib, buildEnv, runCommand, writeText, makeWrapper, libfaketime, makeFontsConf +, perl, bash, coreutils, gnused, gnugrep, gawk, ghostscript +, bin, tl }: # combine = args@{ pkgFilter ? (pkg: pkg.tlType == "run" || pkg.tlType == "bin" || pkg.pname == "core" @@ -8,6 +10,22 @@ args@{ , ... }: let + # combine a set of TL packages into a single TL meta-package + combinePkgs = pkgList: lib.catAttrs "pkg" ( + let + # a TeX package is 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 = { pkgs, ... }: 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; + }) pkgs; + pkgListToSets = lib.concatMap tlPkgToSets; in + builtins.genericClosure { + startSet = pkgListToSets pkgList; + operator = { pkg, ... }: pkgListToSets (pkg.tlDeps or []); + }); + pkgSet = removeAttrs args [ "pkgFilter" "extraName" "extraVersion" ]; pkgList = rec { combined = combinePkgs (lib.attrValues pkgSet); |