From 5f708955dd92ef521082363e19b670f94b51bad1 Mon Sep 17 00:00:00 2001 From: Charlotte Van Petegem Date: Wed, 25 Oct 2023 13:49:36 +0200 Subject: [PATCH] Build PDFs in CI --- .gitlab-ci.yml | 16 ++++++++++++++++ flake.nix | 45 ++++++++++++++++++++++++--------------------- 2 files changed, 40 insertions(+), 21 deletions(-) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..c8b5399 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,16 @@ +default: + tags: + - nix + +stages: + - build + +build-pdfs: + stage: build + script: + - nix build .#build-diffed + - ./result/bin/build-diffed + artifacts: + paths: + - book.pdf + - diff.pdf diff --git a/flake.nix b/flake.nix index 4b9e391..7f0d446 100644 --- a/flake.nix +++ b/flake.nix @@ -24,6 +24,27 @@ packageElisp = builtins.readFile ./build.el; extraEmacsPackages = epkgs: [epkgs.citeproc]; }; + full-texlive = pkgs.texlive.combine { inherit (pkgs.texlive) scheme-full; inherit ugent2016; }; + build-diffed = pkgs.writeShellScriptBin "build-diffed" '' + set -E + atexit() { + git worktree remove -f .sent + rm book.tex sent.tex diff.tex -f + rm build -rf + } + trap "atexit" EXIT + ${emacs}/bin/emacs -batch -load build.el + ${pkgs.git}/bin/git worktree add .sent $(cat .sent-revision) + pushd .sent + ${emacs}/bin/emacs -batch -load ../build.el + mv book.tex ../sent.tex + popd + mkdir build + ${full-texlive}/bin/latexdiff --math-markup=whole -t CFONT sent.tex book.tex > diff.tex + ${full-texlive}/bin/latexmk -f -pdf -lualatex -interaction=nonstopmode -output-directory=build book.tex + ${full-texlive}/bin/latexmk -f -pdf -lualatex -interaction=nonstopmode -output-directory=build diff.tex + mv build/book.pdf build/diff.pdf . + ''; ugent2016 = pkgs.stdenvNoCC.mkDerivation (finalAttrs: { pname = "ugent2016"; version = "0.10.0"; @@ -81,7 +102,7 @@ devShells.default = pkgs.devshell.mkShell { name = "PhD thesis"; packages = [ - (pkgs.texlive.combine { inherit (pkgs.texlive) scheme-full; inherit ugent2016; }) + full-texlive pkgs.nixpkgs-fmt ]; commands = [ @@ -104,29 +125,11 @@ name = "build-diffed"; category = "general commands"; help = "build a diffed PDF between latest sent revision and current"; - command = '' - set -E - atexit() { - git worktree remove -f .sent - rm book.tex sent.tex diff.tex -f - rm build -rf - } - trap "atexit" EXIT - ${emacs}/bin/emacs -batch -load build.el - git worktree add .sent $(cat .sent-revision) - pushd .sent - ${emacs}/bin/emacs -batch -load ../build.el - mv book.tex ../sent.tex - popd - mkdir build - latexdiff --math-markup=whole -t CFONT sent.tex book.tex > diff.tex - latexmk -f -pdf -lualatex -interaction=nonstopmode -output-directory=build book.tex - latexmk -f -pdf -lualatex -interaction=nonstopmode -output-directory=build diff.tex - mv build/book.pdf build/diff.pdf . - ''; + package = build-diffed; } ]; }; + packages.build-diffed = build-diffed; } ); }