9 Commits

Author SHA1 Message Date
e214c40d4d ignore direnv
All checks were successful
Check flake.lock / Check health of `flake.lock` (push) Successful in 6s
Check Nix flake / Perform Nix flake checks (push) Successful in 43s
2026-03-27 16:15:14 -04:00
213aa63aa1 rename main to resume
All checks were successful
Check flake.lock / Check health of `flake.lock` (push) Successful in 8s
Check Nix flake / Perform Nix flake checks (push) Successful in 1m1s
2026-03-27 16:13:07 -04:00
e38ed451df remove generated pdfs, rename tex file
Some checks failed
Build and Release Resume PDF / date-fetch (push) Successful in 2s
Check flake.lock / Check health of `flake.lock` (push) Successful in 7s
Check Nix flake / Perform Nix flake checks (push) Successful in 47s
Build and Release Resume PDF / build (push) Failing after 1m55s
2026-03-27 16:10:57 -04:00
e6c33a2eab remove generated pdfs, rename tex file
Some checks failed
Build and Release Resume PDF / date-fetch (push) Successful in 2s
Check flake.lock / Check health of `flake.lock` (push) Successful in 8s
Check Nix flake / Perform Nix flake checks (push) Successful in 51s
Build and Release Resume PDF / build (push) Failing after 1m44s
2026-03-27 16:08:58 -04:00
41befd6626 substring git sha
All checks were successful
Build and Release Resume PDF / date-fetch (push) Successful in 3s
Check flake.lock / Check health of `flake.lock` (push) Successful in 8s
Check Nix flake / Perform Nix flake checks (push) Successful in 45s
Build and Release Resume PDF / build (push) Successful in 1m37s
2026-03-27 16:05:39 -04:00
f3ae240c68 remove magic cache
Some checks failed
Build and Release Resume PDF / date-fetch (push) Successful in 3s
Check flake.lock / Check health of `flake.lock` (push) Successful in 7s
Build and Release Resume PDF / build (push) Has been cancelled
Check Nix flake / Perform Nix flake checks (push) Has been cancelled
2026-03-27 16:03:55 -04:00
1614e9aed0 add magic cache
Some checks failed
Build and Release Resume PDF / date-fetch (push) Successful in 2s
Check flake.lock / Check health of `flake.lock` (push) Successful in 8s
Check Nix flake / Perform Nix flake checks (push) Successful in 58s
Build and Release Resume PDF / build (push) Failing after 1m34s
2026-03-27 16:00:46 -04:00
6078e15cab change tag generation
Some checks failed
Build and Release Resume PDF / date-fetch (push) Successful in 2s
Check flake.lock / Check health of `flake.lock` (push) Successful in 7s
Check Nix flake / Perform Nix flake checks (push) Successful in 41s
Build and Release Resume PDF / build (push) Has been cancelled
2026-03-27 15:56:45 -04:00
bc69a21635 move resume workflow entirely to nix
All checks were successful
Check flake.lock / Check health of `flake.lock` (push) Successful in 9s
Check Nix flake / Perform Nix flake checks (push) Successful in 43s
2026-03-27 15:49:41 -04:00
8 changed files with 42 additions and 41 deletions

View File

@@ -1,19 +0,0 @@
#!/usr/bin/env bash
set -e
if [[ ! -d "/home/alice/.gitprojects/resumes" ]]; then
echo "Cannot find source directory; Did you move it?"
echo "(Looking for "/home/alice/.gitprojects/resumes")"
echo 'Cannot force reload with this script - use "direnv reload" manually and then try again'
exit 1
fi
# rebuild the cache forcefully
_nix_direnv_force_reload=1 direnv exec "/home/alice/.gitprojects/resumes" true
# Update the mtime for .envrc.
# This will cause direnv to reload again - but without re-building.
touch "/home/alice/.gitprojects/resumes/.envrc"
# Also update the timestamp of whatever profile_rc we have.
# This makes sure that we know we are up to date.
touch -r "/home/alice/.gitprojects/resumes/.envrc" "/home/alice/.gitprojects/resumes/.direnv"/*.rc

View File

@@ -1,28 +1,30 @@
# Project Guidelines # Project Guidelines
## Code Style ## Code Style
- Primary source is `main.tex`; keep edits focused there unless build config changes are required. - Primary source is `resume.tex`; keep edits focused there unless build config changes are required.
- Follow existing LaTeX macro style: reusable `\newcommand` helpers for resume blocks (e.g., `\resumeSubheading`, `\resumeEducation`, `\resumeItem`). - Follow existing LaTeX macro style: reusable `\newcommand` helpers for resume blocks (e.g., `\resumeSubheading`, `\resumeEducation`, `\resumeItem`).
- Preserve compact spacing/layout conventions (`\vspace`, custom `\titleformat`, `tabular*` alignment) unless asked to redesign formatting. - Preserve compact spacing/layout conventions (`\vspace`, custom `\titleformat`, `tabular*` alignment) unless asked to redesign formatting.
- Keep package usage consistent with current preamble and avoid adding new packages unless required for a user request. - Keep package usage consistent with current preamble and avoid adding new packages unless required for a user request.
## Architecture ## Architecture
- This workspace is a single-document resume project. - This workspace is a single-document resume project.
- `main.tex` contains both template macros and resume content. - `resume.tex` contains both template macros and resume content.
- Files like `main.aux`, `main.fdb_latexmk`, and `main.fls` are generated build artifacts, not source-of-truth. - Files like `resume.aux`, `resume.fdb_latexmk`, and `resume.fls` are generated build artifacts, not source-of-truth.
- `glyphtounicode` is included for text extractability/ATS friendliness via `\pdfgentounicode=1`. - `glyphtounicode` is included for text extractability/ATS friendliness via `\pdfgentounicode=1`.
## Build and Test ## Build and Test
- Build PDF (preferred): `latexmk -pdf main.tex` - Preferred reproducible build: `nix build .#default` (outputs `result/Alice_Huston_Resume_Software_Engineer.pdf`)
- Alternative build: `pdflatex main.tex` (run multiple times if references/layout need settling) - Local TeX build: `latexmk -pdf resume.tex`
- Alternative build: `pdflatex resume.tex` (run multiple times if references/layout need settling)
- Clean artifacts: `latexmk -c` - Clean artifacts: `latexmk -c`
- Validate by checking successful compile and reviewing resulting `main.pdf` for layout overflow/line wrapping regressions. - Validate by checking successful compile and reviewing resulting `resume.pdf` for layout overflow/line wrapping regressions.
## Project Conventions ## Project Conventions
- Use existing macros instead of ad-hoc formatting in section bodies. - Use existing macros instead of ad-hoc formatting in section bodies.
- Keep section/list structure aligned with current pattern: `\resumeSubHeadingListStart` / `\resumeSubHeadingListEnd` and `\resumeItemListStart` / `\resumeItemListEnd`. - Keep section/list structure aligned with current pattern: `\resumeSubHeadingListStart` / `\resumeSubHeadingListEnd` and `\resumeItemListStart` / `\resumeItemListEnd`.
- Keep content concise and achievement-oriented; avoid large prose blocks that break one-page layout assumptions. - Keep content concise and achievement-oriented; avoid large prose blocks that break one-page layout assumptions.
- Do not manually edit generated files (`*.aux`, `*.fdb_latexmk`, `*.fls`, etc.); `.gitignore` already treats these as build outputs. - Do not manually edit generated files (`*.aux`, `*.fdb_latexmk`, `*.fls`, etc.); `.gitignore` already treats these as build outputs.
- Prefer linking to existing guidance instead of duplicating it: see `.github/prompts/resume-review.prompt.md` for the structured review workflow.
## Integration Points ## Integration Points
- External links are rendered with `hyperref` (`hidelinks`) and should stay valid/HTTPS. - External links are rendered with `hyperref` (`hidelinks`) and should stay valid/HTTPS.

View File

@@ -12,14 +12,14 @@ Review the candidate's resume by following the steps below in order.
### Step 1 — Read the LaTeX source ### Step 1 — Read the LaTeX source
Read [main.tex](../main.tex) to understand the full content and structure of the resume: sections, roles, dates, technologies, bullet text, projects, certifications, and any formatting macros. Read [resume.tex](../../resume.tex) to understand the full content and structure of the resume: sections, roles, dates, technologies, bullet text, projects, certifications, and any formatting macros.
### Step 2 — Build the PDF ### Step 2 — Build the PDF
Run the following command in the terminal to compile the resume: Run the following command in the terminal to compile the resume:
``` ```
latexmk -pdf main.tex latexmk -pdf resume.tex
``` ```
If the build produces errors, include them as a finding under **Formatting & Layout** (e.g., "Compile error on line X — fix before submission"). Continue the review using the LaTeX source regardless. If the build produces errors, include them as a finding under **Formatting & Layout** (e.g., "Compile error on line X — fix before submission"). Continue the review using the LaTeX source regardless.
@@ -29,11 +29,11 @@ If the build produces errors, include them as a finding under **Formatting & Lay
Clean up any stale preview files, then convert the first page of the built PDF to a PNG and view it: Clean up any stale preview files, then convert the first page of the built PDF to a PNG and view it:
``` ```
rm -f main-preview*.png rm -f resume-preview*.png
pdftoppm -r 150 -png main.pdf main-preview pdftoppm -r 150 -png resume.pdf resume-preview
``` ```
Then use #tool:view_image to view `main-preview-1.png`. Then use #tool:view_image to view `resume-preview-1.png`.
If this step fails for any reason (conversion error, tool unavailable, file not found), note it briefly — e.g., *"PDF preview unavailable — layout assessment based on LaTeX source only"* — and proceed. Do not retry or block on this step. If this step fails for any reason (conversion error, tool unavailable, file not found), note it briefly — e.g., *"PDF preview unavailable — layout assessment based on LaTeX source only"* — and proceed. Do not retry or block on this step.

View File

@@ -5,12 +5,26 @@ on:
branches: branches:
- main - main
paths: paths:
- 'main.tex' - 'resume.tex'
- '.github/workflows/build-resume.yaml' - '.github/workflows/build-resume.yaml'
workflow_dispatch: workflow_dispatch:
jobs: jobs:
date-fetch:
runs-on: ubuntu-latest
outputs:
current-date: ${{ steps.get-date.outputs.current-date }}
commit-sha: ${{ steps.get-sha.outputs.commit-sha }}
steps:
- name: Get current date
id: get-date
run: echo "current-date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
- name: Get first 7 characters of commit SHA
id: get-sha
run: echo "commit-sha=$(echo $GITHUB_SHA | cut -c1-7)" >> $GITHUB_OUTPUT
build: build:
needs: date-fetch
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
contents: write contents: write
@@ -35,7 +49,7 @@ jobs:
uses: softprops/action-gh-release@v1 uses: softprops/action-gh-release@v1
with: with:
files: result/Alice_Huston_Resume_Software_Engineer.pdf files: result/Alice_Huston_Resume_Software_Engineer.pdf
tag_name: resume-${{ github.run_number }} tag_name: alice-huston-resume-${{ needs.date-fetch.outputs.current-date }}-${{ needs.date-fetch.outputs.commit-sha }}
body: "Resume PDF built from commit ${{ github.sha }}" body: "Resume PDF built from commit ${{ github.sha }} on ${{ needs.date-fetch.outputs.current-date }}."
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

6
.gitignore vendored
View File

@@ -11,4 +11,8 @@
*.fdb_latexmk *.fdb_latexmk
*.fls *.fls
*.synctex.gz *.synctex.gz
*.png *.png
*.pdf # all PDFs are generated, so ignore them all
result
.direnv

View File

@@ -16,16 +16,16 @@
tex = ( tex = (
pkgs.texlive.combine { pkgs.texlive.combine {
inherit (pkgs.texlive) inherit (pkgs.texlive)
scheme-medium scheme-basic
preprint preprint
titlesec titlesec
enumitem enumitem
sourcesanspro sourcesanspro
xifthen
ifmtarg
framed
paralist
fontawesome7 fontawesome7
latexmk
marvosym
ly1
xkeyval
; ;
} }
); );
@@ -46,8 +46,8 @@
buildPhase = '' buildPhase = ''
runHook preBuild runHook preBuild
latexmk -pdf -interaction=nonstopmode -halt-on-error main.tex latexmk -pdf -interaction=nonstopmode -halt-on-error resume.tex
mv main.pdf ${resume_final_pdf} mv resume.pdf ${resume_final_pdf}
runHook postBuild runHook postBuild
''; '';

BIN
main.pdf

Binary file not shown.