docs: update readme
Some checks are pending
Deploy Quartz site to GitHub Pages using Nix / build (push) Waiting to run
Deploy Quartz site to GitHub Pages using Nix / deploy (push) Blocked by required conditions

This commit is contained in:
Youwen Wu 2024-12-29 03:22:13 -08:00
parent 2412feb190
commit 57606c93e3
Signed by: youwen5
GPG key ID: 865658ED1FE61EC3

View file

@ -9,38 +9,44 @@ Creative Commons Attribution-Noncommercial-Noderivatives 4.0 license), with one
exception. The Nix source code that helps provide the document compilation exception. The Nix source code that helps provide the document compilation
infrastructure is free and unencumbered software released into the public infrastructure is free and unencumbered software released into the public
domain. This includes all of the files in `./2024/nix` as well as any files domain. This includes all of the files in `./2024/nix` as well as any files
ending in `.nix` generally. See more details in [the source code ending in `.nix` generally. The contents of `./quartz` are copyright Jerry Zhao
README.](./2024/nix/README.md) under the MIT License.
I (and the license) do not grant permission for my work being passed off as I (and the license) do not grant permission for my work being passed off as
someone else's (perhaps for the purpose of plagiarism). Obviously this does not someone else's (perhaps for the purpose of plagiarism). Obviously this does not
extend to the Nix source code, which is in the public domain. extend to the Nix source code, which is in the public domain.
## Quartz 4 Web Deployment
The markdown files in this repository are Obsidian flavored and are
automatically compiled into the knowledge garden at
[garden.youwen.dev](https://garden.youwen.dev). Please visit!
## Typst compilation infrastructure ## Typst compilation infrastructure
This repository contains a sophisticated system for reproducibly compiling This repository contains a sophisticated system for reproducibly compiling
Typst documents using Nix, the purely functional package manager. Typst is a Typst documents using Nix, the purely functional package manager. Typst is a
modern typesetting system aiming to replace the venerable LaTeX system. modern typesetting system aiming to replace the venerable LaTeX system.
Within the [2024 directory](./2024), an ongoing experiment is taking place to Within the [documents](./documents), an ongoing experiment is taking place to
create a monorepo organization structure for a large amount of Typst documents. create a monorepo organization structure for a large amount of Typst documents.
Some custom Nix infrastructure has been created to provide a similar package Some custom Nix infrastructure has been created to provide a similar package
interface to the familiar `nixpkgs` package repository. Instead of building interface to the familiar `nixpkgs` package repository. Instead of building
programs, however, it builds documents. Review [the flake](./2024/flake.nix) programs, however, it builds documents. Review [the flake](./2024/flake.nix)
for more information. for more information.
Since the flake in [2024] provides a package set, you can use the `nix search` Since the flake in documents provides a package set, you can use the `nix
command on it to discover documents just like `nixpkgs`. Try: search` command on it to discover documents just like `nixpkgs`. Try:
```sh ```sh
nix search "git+https://code.youwen.dev/youwen5/alexandria?dir=2024" digression nix search "git+https://code.youwen.dev/youwen5/alexandria?dir=documents" digression
``` ```
You can compile any document in this repository yourself very easily! Simply You can compile any document in this repository yourself very easily! Simply
run: run:
```sh ```sh
nix build 'git+https://code.youwen.dev/youwen5/alexandria?dir=2024#digression-linear-algebra' nix build 'git+https://code.youwen.dev/youwen5/alexandria?dir=documents#digression-linear-algebra'
``` ```
The builds are managed by the amazing The builds are managed by the amazing
@ -57,28 +63,3 @@ 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 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 directory with a proper file name. Work is ongoing to make this as smooth as
possible. 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 `typst` 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.