{ description = "LaTeX environment"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; }; outputs = inputs @ { self, flake-parts, ... }: flake-parts.lib.mkFlake {inherit inputs;} (top: { imports = []; flake = {}; systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; perSystem = { pkgs, self', ... }: let tex = pkgs.texlive.combine { inherit (pkgs.texlive) scheme-basic latexmk lipsum standalone filehook svn-prov import pgf luatex85 ; }; mainTexFileDrv = dir: file: pkgs.stdenvNoCC.mkDerivation rec { name = "${dir}/file"; src = self; buildInputs = [tex]; phases = ["unpackPhase" "buildPhase" "installPhase"]; buildPhase = '' export PATH="${pkgs.lib.makeBinPath (buildInputs ++ [pkgs.coreutils])}"; env \ HOME=$(mktemp -d) \ SOURCE_DATE_EPOCH=${toString self.lastModified} \ latexmk "${dir}/${file}.tex" ''; installPhase = '' mkdir -p $out cp "${dir}/${file}.pdf" $out/ ''; }; in { legacyPackages = pkgs; packages.default = self'.packages.main; packages.main = mainTexFileDrv "main"; packages.c01 = mainTexFileDrv "chapters" "01"; packages.c02 = mainTexFileDrv "chapters" "02"; devShells.default = pkgs.mkShellNoCC { buildInputs = [tex pkgs.texlab]; }; }; }); }