From 85f1c033c4a489e3e38cd1af0c0495b273f2e727 Mon Sep 17 00:00:00 2001 From: Chris Wells Date: Sun, 22 Feb 2026 22:30:47 -0600 Subject: Initial commit --- module.nix | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 module.nix (limited to 'module.nix') diff --git a/module.nix b/module.nix new file mode 100644 index 0000000..8cd81eb --- /dev/null +++ b/module.nix @@ -0,0 +1,65 @@ +{ + lib, + flake-parts-lib, + ... +}: +let + inherit (lib) mkOption mkPackageOption mkEnableOption types; + inherit (flake-parts-lib) mkPerSystemOption; +in { + options.perSystem = mkPerSystemOption ({ config, ... }: { + options = { + texShell = { + scheme = mkPackageOption pkgs "texliveSmall" {}; + extraPackages = mkOption { + type = types.functionTo (types.listOf types.package); + description = "Extra packages to add to the texlive scheme"; + default = _: []; + }; + latexmk = { + enable = mkEnableOption "latexmk"; + rc = mkOption { + type = types.lines; + description = "contents of the .latexmkrc file"; + }; + rcFile = mkOption { + type = types.path; + default = pkgs.writeText "latexmkrc" config.texShell.latexmk.rc; + description = "the .latexmkrc file"; + }; + _wrapper = mkOption { + type = types.functionTo types.package; + readOnly = true; + internal = true; + default = tex: pkgs.symlinkJoin { + inherit (tex) name; + nativeBuildInputs = [ + pkgs.makeWrapper + ]; + paths = [ + tex + ]; + postBuild = '' + wrapProgram $out/bin/latexmk --add-flags "-r" --add-flags "${config.texShell.latexmk.rcFile}" + ''; + }; + }; + }; + }; + }; + + config = { + texShell.extraPackages = mkIf config.texShell.latexmk.enable (ps: [ ps.latexmk ]); + + packages.texShell = let + wrapper = if config.texShell.latexmk.enable then config.texShell.latexmk._wrapper else x: x; + in wrapper (config.texShell.scheme.withPackages config.texShell.scheme.extraPackages); + + devShells.texShell = pkgs.makeShell { + nativeBuildInputs = [ + config.packages.texShell + ]; + }; + }; + }); +} -- cgit v1.2.3