CV-nixCfg

skill
Security Audit
Warn
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Pass
  • Code scan — Scanned 6 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

Curriculum Vitae — LaTeX source, compiled PDFs, markdown fragments for AI agents, and Claude Code configuration; tooling managed by flake-parts with a Nix devshell providing the TeX Live environment

README.md

CV-nixCfg

A reproducible LaTeX CV framework powered by Nix flakes — personal data lives in a separate private repo.



Contents


Overview

A LaTeX CV framework using the moderncv document class. The entire toolchain — texlive, formatters, pre-commit hooks, CI, and Europass PDF automation — is declared in a Nix flake.

Personal data (name, contact info, CV sections, Europass XML) is supplied via a separate cv-data flake input so the framework can be open-sourced while keeping your content private.

  • Template: tex/cv.tex — preamble + \input{cv-data/...} section hooks
  • Example data: data.example/ — placeholder structure showing what your data repo should contain
  • Europass builder: europass/build.py — Playwright automation for rendering via europass.europa.eu

Using Your Own Data

  1. Create a private repo (e.g. you/cv-data) with the layout shown in data.example/:
cv-data/
├── tex/
│   ├── header.tex       # \name, \phone, \email, \social, \extrainfo
│   ├── summary.tex
│   ├── skills.tex
│   ├── experience.tex
│   ├── research.tex
│   ├── projects.tex
│   ├── hackathons.tex
│   ├── honours.tex
│   ├── education.tex
│   └── languages.tex
├── europass/
│   └── cv.xml
└── final-pdfs/          # output PDFs written here by build scripts
  1. Override the cv-data input:
nix flake lock --override-input cv-data "git+ssh://[email protected]/you/cv-data"
  1. Enter the devshell — it creates tex/cv-data/ → your data's tex/ automatically:
nix develop   # or: direnv allow

Dev Environment

nix develop
# or with direnv:
direnv allow

The devshell provides texlive, python3 + Playwright, xmllint, nixd, alejandra, and installs git hooks. It also sets CV_DATA_DIR and symlinks tex/cv-data/ to your data.


Build

Compile the CV to PDF from inside the devshell:

# Auto-reruns as needed (recommended)
cd tex && latexmk -pdf cv.tex

# Single pass
cd tex && pdflatex cv.tex
# or: xelatex cv.tex

Build the Europass PDF (requires EUROPASS_EMAIL / EUROPASS_PASSWORD or .envrc.local):

./build-europass.sh

Formatting & Checks

nix fmt          # format all Nix files
nix flake check  # pre-commit hooks + formatting

Project Structure

.
├── .github/
│   └── workflows/               # Generated GitHub Actions (do not edit)
│       ├── flake-check.yml
│       └── flake-lock-update.yml
├── data.example/                # Placeholder cv-data layout (copy to your private repo)
│   ├── europass/
│   │   └── cv.xml
│   └── tex/
│       ├── header.tex
│       ├── summary.tex
│       ├── skills.tex
│       ├── experience.tex
│       ├── research.tex
│       ├── projects.tex
│       ├── hackathons.tex
│       ├── honours.tex
│       ├── education.tex
│       └── languages.tex
├── europass/
│   ├── build.py                 # Playwright automation for Europass PDF
│   └── schema/                  # Vendored Europass XSD v3.4.0
├── flake/
│   ├── actions/                 # GitHub Actions source (Nix → YAML)
│   │   ├── common.nix
│   │   ├── flake-check.nix
│   │   └── flake-lock-update.nix
│   ├── checks.nix               # Pre-commit hooks via git-hooks.nix
│   ├── devshells.nix            # devshell: texlive, Python, xmllint, Nix tools
│   └── formatters.nix           # treefmt config (alejandra, deadnix, statix)
├── tex/
│   └── cv.tex                   # LaTeX template — \input{cv-data/...} section hooks
├── build-europass.sh            # Entry point for Europass PDF build
├── flake.nix                    # Flake entry point (flake-parts + import-tree)
└── README.md

Reviews (0)

No results found