{ description = "felschr's CV"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; typix = { url = "github:loqusion/typix"; inputs.nixpkgs.follows = "nixpkgs"; }; typst-packages = { url = "github:typst/packages"; flake = false; }; }; outputs = inputs: inputs.flake-utils.lib.eachDefaultSystem ( system: let pkgs = import inputs.nixpkgs { inherit system; }; typixLib = inputs.typix.lib.${system}; typstPackagesSrc = "${inputs.typst-packages}/packages"; typstPackagesCache = pkgs.stdenvNoCC.mkDerivation { name = "typst-packages-cache"; src = typstPackagesSrc; dontBuild = true; installPhase = '' mkdir -p "$out/typst/packages" cp -LR --reflink=auto --no-preserve=mode -t "$out/typst/packages" "$src"/* ''; }; mkTypst = entry: rec { src = typixLib.cleanTypstSource ./.; commonArgs = { typstSource = "src/${entry}.typ"; typstOutput = "out/${entry}.pdf"; fontPaths = [ "${pkgs.inter}/share/fonts/truetype" ]; virtualPaths = [ ]; }; commonBuildArgs = commonArgs // { XDG_CACHE_HOME = typstPackagesCache; }; build-drv = typixLib.buildTypstProject ( commonBuildArgs // { inherit src; } ); build-script = typixLib.buildTypstProjectLocal ( commonBuildArgs // { inherit src; } ); watch-script = typixLib.watchTypstProject commonArgs; }; typstMain = mkTypst "main"; typstWork = mkTypst "work"; in { checks = { inherit (typstMain) build-drv build-script watch-script; # inherit (typstWork) build-drv build-script watch-script; }; packages = { default = typstMain.build-drv; work = typstWork.build-drv; }; apps = rec { default = watch; build = inputs.flake-utils.lib.mkApp { drv = typstMain.build-script; }; watch = inputs.flake-utils.lib.mkApp { drv = typstMain.watch-script; }; build-work = inputs.flake-utils.lib.mkApp { drv = typstWork.build-script; }; watch-work = inputs.flake-utils.lib.mkApp { drv = typstWork.watch-script; }; }; devShells.default = typixLib.devShell { inherit (typstMain.commonArgs) fontPaths virtualPaths; packages = [ typstMain.watch-script pkgs.typstyle pkgs.tinymist pkgs.nixfmt-rfc-style ]; }; formatter = pkgs.nixfmt-rfc-style; } ); }