Add Nix flake for reproducible dev and CI/CD

- flake.nix pins the full toolchain (asciidoctor + pdf/epub3/diagram/
  mathematical, plantuml, graphviz, jre, vale, epubcheck) via bundlerEnv
- Gemfile/Gemfile.lock/gemset.nix lock the Ruby gems; work around the
  vendored mtex2MML cmake_minimum_required incompatibility
- 'nix build' produces book.pdf + book.epub; 'nix develop' gives a shell
  where all existing make targets work
- CI/CD workflows now install Nix and build/lint/validate through the flake
- devcontainer uses Nix; add .envrc for direnv; document in README

Co-authored-by: Shelley <shelley@exe.dev>
This commit is contained in:
Dunya Kirkali
2026-08-08 15:36:51 +00:00
committed by Dunya Kirkali
parent c0c95fdff5
commit 0f64b1133e
13 changed files with 822 additions and 31 deletions

View File

@@ -23,6 +23,7 @@ Odum
Peitgen
Polina
Rainforest
rainforests
Romanesco
Saupe
Slimbach

View File

@@ -4,32 +4,22 @@ on:
workflow_dispatch:
jobs:
pdf:
build:
runs-on: ubuntu-latest
container:
image: asciidoctor/docker-asciidoctor
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Generate PDF
run: make output/book.pdf
- name: Install Nix
uses: cachix/install-nix-action@630ae543ea3a38a9a4166f03376c02c50f408342 # v31.11.0
- name: Build book (PDF + EPUB)
run: nix build .#book -L
- name: Archive PDF
uses: actions/upload-artifact@v4
with:
name: pdf
path: output/book.pdf
epub:
runs-on: ubuntu-latest
container:
image: asciidoctor/docker-asciidoctor
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Generate EPUB
run: make output/book.epub
path: result/book.pdf
- name: Archive EPUB
uses: actions/upload-artifact@v4
with:
name: epub
path: output/book.epub
path: result/book.epub

View File

@@ -12,17 +12,27 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Nix
uses: cachix/install-nix-action@630ae543ea3a38a9a4166f03376c02c50f408342 # v31.11.0
- name: Count words
run: make count
run: nix develop --command make count
lint:
runs-on: ubuntu-latest
steps:
- name: Install Asciidoctor
run: sudo apt-get install -y asciidoctor
- name: Checkout
uses: actions/checkout@v4
- name: Install Nix
uses: cachix/install-nix-action@630ae543ea3a38a9a4166f03376c02c50f408342 # v31.11.0
- name: Vale
uses: errata-ai/vale-action@reviewdog
with:
files: source/
fail_on_error: true
run: nix develop --command make lint
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Nix
uses: cachix/install-nix-action@630ae543ea3a38a9a4166f03376c02c50f408342 # v31.11.0
- name: Build book (PDF + EPUB)
run: nix build .#book -L
- name: Validate EPUB
run: nix develop --command epubcheck result/book.epub