resume/flake.nix
2024-11-23 23:38:40 -05:00

100 lines
3 KiB
Nix

{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
systems.url = "github:nix-systems/default";
};
outputs = {
self,
systems,
nixpkgs,
...
} @ inputs: let
eachSystem = f:
nixpkgs.lib.genAttrs (import systems) (
system:
f nixpkgs.legacyPackages.${system}
);
in {
packages = eachSystem (pkgs: {
default = pkgs.stdenvNoCC.mkDerivation rec {
name = "resume-latex";
src = self;
buildInputs = [
pkgs.coreutils
pkgs.findutils
pkgs.texlive.combined.scheme-full
pkgs.noto-fonts-color-emoji
pkgs.fontconfig
pkgs.dejavu_fonts
pkgs.gnugrep
];
FONTCONFIG_FILE = pkgs.makeFontsConf {
fontDirectories = [
pkgs.noto-fonts-color-emoji
pkgs.dejavu_fonts
];
};
buildPhase = ''
export PATH="${pkgs.lib.makeBinPath buildInputs}"
export XDG_CACHE_HOME="$PWD/.cache"
export FONTCONFIG_CACHE_DIR="$PWD/.cache/fontconfig"
mkdir -p .cache/texmf-var $FONTCONFIG_CACHE_DIR
# Rebuild font cache (redirect stderr to suppress font cache messages)
fc-cache -f -v 2>&1 | grep -v "caching" | grep -v "skipping" || true
# Run latexmk and filter out specific warnings
env TEXMFHOME=.cache TEXMFVAR=.cache/texmf-var \
isZoey=1 latexmk -interaction=nonstopmode -f resume.tex 2>&1 \
| grep -v "Missing character" \
| grep -v "Font.*cache" \
| grep -v "fontconfig:" \
| grep -v "looped directory detected" \
|| [ $? -eq 1 ] # Allow latexmk to fail but still show output
mv resume.pdf ZoeyMyersResume.pdf
env TEXMFHOME=.cache TEXMFVAR=.cache/texmf-var \
isZoey=0 latexmk -interaction=nonstopmode -f resume.tex 2>&1 \
| grep -v "Missing character" \
| grep -v "Font.*cache" \
| grep -v "fontconfig:" \
| grep -v "looped directory detected" \
|| [ $? -eq 1 ]
mv resume.pdf ZacharyMyersResume.pdf
'';
installPhase = ''
mkdir -p $out
cp *.pdf $out/
'';
};
pdf = pkgs.runCommand "resume-pdf" {} ''
mkdir -p $out/nix-support
cp ${self.packages.${pkgs.system}.default}/ZoeyMyersResume.pdf $out/
cp ${self.packages.${pkgs.system}.default}/ZacharyMyersResume.pdf $out/
echo "file pdf $out/ZoeyMyersResume.pdf" > $out/nix-support/hydra-build-products
echo "file pdf $out/ZacharyMyersResume.pdf" >> $out/nix-support/hydra-build-products
'';
});
hydraJobs = let
system = "x86_64-linux";
in {
build = self.packages.${system}.default;
pdf = self.packages.${system}.pdf;
};
devShells = eachSystem (pkgs: {
default = pkgs.mkShell {
buildInputs = [
pkgs.texlive.combined.scheme-full
pkgs.texlab
pkgs.termpdfpy
];
};
});
};
}