No description
  • Typst 45.4%
  • Shell 41.9%
  • Nix 8.6%
  • Makefile 1.8%
  • Rust 1.7%
  • Other 0.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Markus Zoppelt 9cb9d72e58
All checks were successful
Report PDF / Build PDF (push) Successful in 1m8s
Add Forgejo Action to build and upload Typst PDF
Expose packages.report (nix build .#report). CI on ubuntu-latest installs
vanilla Nix as nixuser with flakes enabled, builds the PDF, and uploads
the system-benchmark-report artifact.
2026-08-02 19:04:22 +02:00
.forgejo/workflows Add Forgejo Action to build and upload Typst PDF 2026-08-02 19:04:22 +02:00
examples initial commit 2026-08-02 18:36:47 +02:00
fixtures initial commit 2026-08-02 18:36:47 +02:00
raw initial commit 2026-08-02 18:36:47 +02:00
report initial commit 2026-08-02 18:36:47 +02:00
results Add Forgejo Action to build and upload Typst PDF 2026-08-02 19:04:22 +02:00
scripts initial commit 2026-08-02 18:36:47 +02:00
.envrc initial commit 2026-08-02 18:36:47 +02:00
.gitignore Add Forgejo Action to build and upload Typst PDF 2026-08-02 19:04:22 +02:00
AGENTS.md initial commit 2026-08-02 18:36:47 +02:00
COOKBOOK.md initial commit 2026-08-02 18:36:47 +02:00
flake.lock initial commit 2026-08-02 18:36:47 +02:00
flake.nix Add Forgejo Action to build and upload Typst PDF 2026-08-02 19:04:22 +02:00
Makefile Add Forgejo Action to build and upload Typst PDF 2026-08-02 19:04:22 +02:00
README.md Add Forgejo Action to build and upload Typst PDF 2026-08-02 19:04:22 +02:00

pc-bench

Small, reproducible, privacy-friendly benchmarks for a Linux PC — aimed at people who care about Nix rebuilds, Rust/cargo, and Go compile times, plus simple CPU / RAM / disk baselines.

No accounts, no cloud upload. Tools come from a Nix flake (nixos-26.05).

Requirements

  • Nix with flakes enabled
  • Linux x86_64 (the flake targets x86_64-linux)
  • Optional: NVIDIA driver tools on PATH for GPU identity lines

Quick start

git clone https://git.zoppelt.net/mz/pc-bench.git
cd pc-bench
nix develop
./scripts/suite.sh    # → raw/<host>-<timestamp>/summary.json
# edit report/data.typ from the summary (see below)
make report           # → results/system-benchmark-report.pdf

What you get

Piece Role
scripts/suite.sh ~25min suite → stable summary.json keys
fixtures/ Pinned Rust crate versions + C TU source
report/ Typst → PDF (suite numbers + optional narrative interpretation)
examples/ Checked-in sample summary.json runs
COOKBOOK.md Metrics, env knobs, comparing two machines

Suite metrics (short)

  • sysbench CPU (multi + single), memory
  • 7-Zip integer throughput
  • fio sequential read/write on a temp file (root FS)
  • go build std (CGO off)
  • cargo release on a pinned fixture (cold / recompile / incremental)
  • 96× gcc -O2 -c serial vs parallel (nix-style many-TU proxy)
  • nix eval micro (single-thread leaning)

Your machine, your preferences

The suite is the same for everyone. The PDFs opinion layer is yours:

nix develop
./scripts/suite.sh
# copy raw/latest/summary.json numbers → report/data.typ (suite + hardware)
# set meta.preference  (e.g. "wait for next CPU gen" / "max battery")
# fill narrative.*  or set narrative.enabled: false  for numbers-only
make report
Field in report/data.typ Role
meta.preference Cover chip — the question you care about
suite / hardware Measured facts from the run
market Optional external CPU/GPU reference scores
narrative Headline, workload notes, default path, “if it hurts now”

Draft narrative by hand or with an LLM (prompt in COOKBOOK.md). Keep personal verdicts out of main.typ so the template stays reusable. Publish a run as examples/<label>/summary.json if you want.

Example baseline

From examples/ryzen9-3900x-rtx3080/:

Metric Value
CPU Ryzen 9 3900X (24 threads)
go build std cold 5.98 s
cargo release recompile 10.17 s
gcc 96 TU parallel 0.29 s (15.7× vs serial)
nix eval foldl 500k 0.115 s
fio root seq R/W 2207 / 1934 MiB/s

Treat these as relative anchors, not absolute lab scores (fio defaults to portable psync + direct=1; LUKS/FS overhead and turbo/thermals vary).

Project layout

scripts/suite.sh       # canonical entrypoint
fixtures/              # reproducible compile inputs
report/                # Typst report sources (main.typ + data.typ)
examples/              # sample summary.json files
raw/                   # local runs (gitignored)
results/               # local PDF (gitignored)
flake.nix              # dev shell + tools

CI PDF (Forgejo Actions)

Workflow: .forgejo/workflows/report.yml
Runner: ubuntu-latest (node:22-bookworm) + Nix install → nix build .#report
Artifact: system-benchmark-report (download from the Actions run).

Triggers: push to main, PRs, Run workflow. Enable Actions on the repo if needed.

Local: nix build .#report./result (PDF).

See also