You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is to track various changes to modernize texlive and make it work like haskell, lua, perl, python, which seem to have converged on the same interface. This comes after quite a lot of work to make the existing texlive almost 100% functional and with lots of tests, so we should be able to spot breakages easily. That's the theory anyway.
The changes will also make it easier to ship different snapshots of TeX Live, or at least to upgrade/downgrade locally, and to package tlcontrib. We should also become able to deduplicate the formats.
Roadmap
Here is a tentative roadmap. I believe we have enough of the difficult parts in draft form to make it by 23.11, and be prepared to drop the old stuff in 24.05/24.11, so that we make a single big change. We should really try to do this once: I already made a mistake this cycle when introducing tlDeps, which in hindsight was the wrong choice (see requiredTeXPackages below)!
Still, each step should be fully backward compatible, so we can stop halfway if we don't make it.
Internals (no rebuild, fully backward compatible, new interface undocumented and prefixed with _)
Backward compatibility: provide 'alias' texlivePackages.example.pkgs with old tlType interface, set texlive.example = { inherit (texlivePackages.example) pkgs; }. Edit: maybe there won't be a texlivePackages.
Implement texlive._buildEnv and shorthand texlive._withPackages.
This is to track various changes to modernize
texlive
and make it work like haskell, lua, perl, python, which seem to have converged on the same interface. This comes after quite a lot of work to make the existingtexlive
almost 100% functional and with lots of tests, so we should be able to spot breakages easily. That's the theory anyway.Feedback and comments are very welcome. Cc @veprbl @apfelkuchen6.
Intended outcome
Building a new TeX Live environment:
Building a TeX Live environment with documentation or a different paper size:
Building a TeX Live package outside of
texlive
Replace a TeX Live package with a different version, or pass other overrides
The changes will also make it easier to ship different snapshots of TeX Live, or at least to upgrade/downgrade locally, and to package tlcontrib. We should also become able to deduplicate the formats.
Roadmap
Here is a tentative roadmap. I believe we have enough of the difficult parts in draft form to make it by 23.11, and be prepared to drop the old stuff in 24.05/24.11, so that we make a single big change. We should really try to do this once: I already made a mistake this cycle when introducing
tlDeps
, which in hindsight was the wrong choice (seerequiredTeXPackages
below)!Still, each step should be fully backward compatible, so we can stop halfway if we don't make it.
Internals (no rebuild, fully backward compatible, new interface undocumented and prefixed with
_
)tests.texlive.licenses
.outside of. Edit: new scope postponed as it takes more thinking than I expected.texlive
(fix texlive.combine: package 'combine' from CTAN not usable #237227)buildTeXLivePackage
(ready in texlive: refactor package builder in separate expression #247550). Strictly for TeX Live packages so tightly coupled withtlpdb.nix
, not for general use.buildTeXLivePackage
accordingly (ready in texlive: multi-output packages (subset of #250805) #250963).Backward compatibility: provide 'alias'Edit: maybe there won't be atexlivePackages.example.pkgs
with oldtlType
interface, settexlive.example = { inherit (texlivePackages.example) pkgs; }
.texlivePackages
.texlive._buildEnv
and shorthandtexlive._withPackages
.combine
logic for multi-output packages (mostly ready in texlive: overrideTeXConfig/withPackages #250805; proof-of-concept with more improvements in [WIP] texlive: change TeX Live packages into attribute sets instead of lists #249803). Suggested arguments:{ extraName, extraOutputsToInstall, extraVersion, packageOverrides, packages, paperSize }
. For instanceextraOutputsToInstall = [ "texdoc" ]
adds the package docs;packages = [ example example.texdoc ]
adds the docs forexample
only. (paperSize
implemented in texlive.combine: add paperSize parameter for setting paper sizes #248768).tlDeps = [ ... ]
dependencies intorequiredTeXPackages = ps: [ ... ]
. Otherwise the packages may be pulled from the wrong scope.tlDeps
for dependencies andpkgFilter
for adding or removing packages (ready in texlive: overrideTeXConfig/withPackages #250805).combine
a thin layer overbuildEnv
(ready in texlive: overrideTeXConfig/withPackages #250805).Switch on new interface
.withPackages
..withPackages
treewide: switch to texlive.withPackages #265514..withPackages
(texlive: document new texlive.withPackages interface #265658)..overrideTeXConfig
and document it.tlType
,tlDeps
,pkgs
.Next release cycle?
buildTeXLivePackage
, decoupled from the quirks oftlpdb.nix
as much as possible.overrideTeXLiveAttrs
.texlive
; it must be possible to override binaries and packages simultaneously in a consistent way, and supporting cross compiling as far as possible (buildEnv
cannot be cross compiled, unfortunately). Discussion in progress at texlive: create scope #250416 and texlive: transform into overridable scope and extract generic interface #250626..combine
.By deprecation, I mean add a deprecation notice with
lib.warn
and useconfig.allowedAliases
to prevent usage within Nixpkgs.Ideal scenario, we merge everything by the end of September, to have a good period of testing before 23.11.
The text was updated successfully, but these errors were encountered: