alexandria/README.md
2024-10-20 02:20:24 -07:00

2.8 KiB

An Archive

of all of my digitized work and notes. Want to steal my stuff? This is where you do it.

Please note, all of my work is licensed under CC-BY-NC-ND 4.0 (that's the Creative Commons Attribution-Noncommercial-Noderivatives 4.0 license).

Additionally, I (and the license) do not grant permission for my work being passed off as someone else's (perhaps for the purpose of plagiarism).

Typst compilation infrastructure

This repository contains a sophisticated system for reproducibly compiling Typst documents using Nix, the purely functional package manager. Typst is a modern typesetting system aiming to replace the venerable LaTeX system.

Within the 2024 directory, an ongoing experiment is taking place to create a monorepo organization structure for a large amount of Typst documents. Some custom Nix infrastructure has been created to provide a similar package interface to the familiar nixpkgs package repository. Instead of building programs, however, it builds documents. Review the flake for more information.

You can test this local compilation yourself very easily! Simply run:

nix build 'git+https://code.youwen.dev/youwen5/alexandria?dir=2024#digression-linear-algebra'

This will create a result that points to the compiled PDF in the Nix store. Currently, the file is not marked as a PDF with a .pdf file extension, but one should be able to easily cp the file from the Nix store into another directory with a proper file name. Work is ongoing to make this as smooth as possible.

Goal of the experiment

The end goal is to produce an easy-to-use infrastructure for creating personal repositories of Typst documents. LaTeX documents could feasibly be supported as well in the repository with some refactoring, but this is not a priority as the I am not currently using LaTeX.

All of the work is sectioned into a 2024 directory for two reasons.

Firstly, since all of the documents in the repository depend on the nixpkgs and Typix specified in the central flake.nix, breaking changes may require refactoring and maintenance of old documents. This is how nixpkgs works, but these repositories host documents, not software. Thus, I have opted to organize the tree in such way that each year should be its own standalone repository. This means that a year's worth of documents can be frozen in time at the end to ensure that all of the existing documents will be able to reproducible compile in the future without any maintenance, as the nixpkgs and typst versions will be frozen in time.

Secondly, this will encourage further development each year to incrementally improve the infrastructure.

Eventually, if the experiment is successful, I may decide to create a standardized library or repository template for people to use.