From 7a0003aff5262172700c5a10c53d91fa4421eec4 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Mon, 30 Sep 2024 19:32:31 +0200 Subject: fix(templates/latex/{academia,letter}): Share files and update to lpm v2.0 --- common/.envrc | 9 ++ common/flakes/latex/flake.nix | 126 ++++++++++++++++++++ common/scripts/latex/build.sh | 30 +++-- common/scripts/update.sh | 3 + .../latex/academia/%INIT_APPLICATION_NAME.tex | 16 +-- templates/latex/academia/.envrc | 10 +- templates/latex/academia/flake.nix | 127 +-------------------- templates/latex/academia/lpm.toml | 22 +++- templates/latex/academia/update.sh | 4 +- templates/latex/letter/.envrc | 10 +- templates/latex/letter/flake.nix | 101 +--------------- templates/latex/letter/update.sh | 4 +- 12 files changed, 196 insertions(+), 266 deletions(-) create mode 100644 common/.envrc create mode 100644 common/flakes/latex/flake.nix create mode 100755 common/scripts/update.sh mode change 100644 => 120000 templates/latex/academia/.envrc mode change 100644 => 120000 templates/latex/academia/flake.nix mode change 100755 => 120000 templates/latex/academia/update.sh mode change 100644 => 120000 templates/latex/letter/.envrc mode change 100644 => 120000 templates/latex/letter/flake.nix mode change 100755 => 120000 templates/latex/letter/update.sh diff --git a/common/.envrc b/common/.envrc new file mode 100644 index 0000000..3bc1085 --- /dev/null +++ b/common/.envrc @@ -0,0 +1,9 @@ +use flake || use nix +watch_file flake.nix + +PATH_add ./scripts + +if on_git_branch; then + echo && git status --short --branch && + echo && git fetch --verbose +fi diff --git a/common/flakes/latex/flake.nix b/common/flakes/latex/flake.nix new file mode 100644 index 0000000..6a21c68 --- /dev/null +++ b/common/flakes/latex/flake.nix @@ -0,0 +1,126 @@ +{ + description = "%INIT_DESCRIPTION"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + + treefmt-nix = { + url = "github:numtide/treefmt-nix"; + inputs = { + nixpkgs.follows = "nixpkgs"; + }; + }; + flake_version_update = { + url = "git+https://codeberg.org/soispha/flake_version_update.git"; + inputs = { + systems.follows = "systems"; + nixpkgs.follows = "nixpkgs"; + flake-utils.follows = "flake-utils"; + }; + }; + lpm = { + url = "git+https://codeberg.org/bpeetz/lpm.git"; + inputs = { + nixpkgs.follows = "nixpkgs"; + flake-compat.follows = "flake-compat"; + flake-utils.follows = "flake-utils"; + rust-overlay.follows = "rust-overlay"; + crane.follows = "crane"; + systems.follows = "systems"; + }; + }; + + # inputs for following + systems = { + url = "github:nix-systems/x86_64-linux"; # only evaluate for this system + }; + flake-compat = { + url = "github:edolstra/flake-compat"; + flake = false; + }; + flake-utils = { + url = "github:numtide/flake-utils"; + inputs = { + systems.follows = "systems"; + }; + }; + crane = { + url = "github:ipetkov/crane"; + inputs = { + nixpkgs.follows = "nixpkgs"; + }; + }; + rust-overlay = { + url = "github:oxalica/rust-overlay"; + inputs = { + nixpkgs.follows = "nixpkgs"; + flake-utils.follows = "flake-utils"; + }; + }; + }; + + outputs = { + self, + nixpkgs, + flake-utils, + treefmt-nix, + lpm, + flake_version_update, + ... + }: + flake-utils.lib.eachDefaultSystem (system: let + pkgs = nixpkgs.legacyPackages.${system}; + + # This version is set automatically on `cog bump --auto`; + version = "v%INIT_APPLICATION_VERSION"; # GUIDING VERSION STRING + + # TODO reduce to the needed ones + texlive = pkgs.texlive.combined.scheme-full; + + treefmtEval = import ./treefmt.nix {inherit treefmt-nix pkgs;}; + + build = pkgs.stdenv.mkDerivation { + pname = "%INIT_APPLICATION_NAME"; + inherit version; + src = ./.; + + buildInputs = [ + texlive + ]; + + # Run local + preferLocalBuild = true; + allowSubstitutes = false; + + buildPhase = '' + # TODO: I have no idea, why calling it with `./build.sh` does not work <2024-03-20> + bash ./build.sh + ''; + + installPhase = '' + install -D "./build/%INIT_APPLICATION_NAME.pdf" "$out/%INIT_APPLICATION_NAME.pdf"; + ''; + }; + in { + packages.default = build; + + checks = { + inherit build; + formatting = treefmtEval.config.build.check self; + }; + + formatter = treefmtEval.config.build.wrapper; + + devShells.default = pkgs.mkShell { + packages = with pkgs; [ + cocogitto + reuse + flake_version_update.packages."${system}".default + lpm.packages."${system}".default + texlive + + zathura + ]; + }; + }); +} diff --git a/common/scripts/latex/build.sh b/common/scripts/latex/build.sh index 1206ee7..c67ad52 100755 --- a/common/scripts/latex/build.sh +++ b/common/scripts/latex/build.sh @@ -1,14 +1,30 @@ #!/usr/bin/env sh -# if no parameter is given, use 'dst' as destination directory -if [ -z "$1" ]; then - dst=build -else - dst="$1" -fi +file="./%INIT_APPLICATION_NAME.tex" +dst=build + +clear=false + +for arg in "$@"; do + case "$arg" in + "--clear") + clear=true + ;; + --*) + echo "No such option: '$arg'" + exit 2 + ;; + *) + file="$arg" + ;; + esac +done # find all directories which are not the destination dir or inside it find . -type d -not -name "$dst" -not -path "./$dst/*" -printf '%P\n' | while IFS= read -r dir; do mkdir --parents "$dst/$dir" done -latexmk -outdir="$dst" -file-line-error -pdflatex -recorder "./%INIT_APPLICATION_NAME.tex" + +test "$clear" = true && rm "$dst/${file%tex}out" + +latexmk -outdir="$dst" -file-line-error -pdflatex -recorder "$file" diff --git a/common/scripts/update.sh b/common/scripts/update.sh new file mode 100755 index 0000000..49216b8 --- /dev/null +++ b/common/scripts/update.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env sh + +nix flake update diff --git a/templates/latex/academia/%INIT_APPLICATION_NAME.tex b/templates/latex/academia/%INIT_APPLICATION_NAME.tex index 5484bc6..b94aaa2 100644 --- a/templates/latex/academia/%INIT_APPLICATION_NAME.tex +++ b/templates/latex/academia/%INIT_APPLICATION_NAME.tex @@ -30,15 +30,17 @@ \makeatother -\includeonly{} +\includeonly { + % lpm::next_chapter_includeonly_marker +} \begin{document} - \onecolumn - \input{content/static/title} - \twocolumn +\onecolumn +\input{content/static/title} +\twocolumn - % NEXT_CHAPTER +% lpm::next_chapter_marker - \clearpage{} - \printbibliography\relax +\clearpage{} +\printbibliography\relax \end{document} diff --git a/templates/latex/academia/.envrc b/templates/latex/academia/.envrc deleted file mode 100644 index 3bc1085..0000000 --- a/templates/latex/academia/.envrc +++ /dev/null @@ -1,9 +0,0 @@ -use flake || use nix -watch_file flake.nix - -PATH_add ./scripts - -if on_git_branch; then - echo && git status --short --branch && - echo && git fetch --verbose -fi diff --git a/templates/latex/academia/.envrc b/templates/latex/academia/.envrc new file mode 120000 index 0000000..db044c7 --- /dev/null +++ b/templates/latex/academia/.envrc @@ -0,0 +1 @@ +../../../common/.envrc \ No newline at end of file diff --git a/templates/latex/academia/flake.nix b/templates/latex/academia/flake.nix deleted file mode 100644 index 9a85d5d..0000000 --- a/templates/latex/academia/flake.nix +++ /dev/null @@ -1,126 +0,0 @@ -{ - description = "%INIT_DESCRIPTION"; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - - treefmt-nix = { - url = "github:numtide/treefmt-nix"; - inputs = { - nixpkgs.follows = "nixpkgs"; - }; - }; - flake_version_update = { - url = "git+https://codeberg.org/soispha/flake_version_update.git"; - inputs = { - systems.follows = "systems"; - nixpkgs.follows = "nixpkgs"; - flake-utils.follows = "flake-utils"; - }; - }; - lpm = { - url = "git+https://codeberg.org/bpeetz/lpm.git"; - inputs = { - nixpkgs.follows = "nixpkgs"; - flake-compat.follows = "flake-compat"; - flake-utils.follows = "flake-utils"; - rust-overlay.follows = "rust-overlay"; - crane.follows = "crane"; - systems.follows = "systems"; - }; - }; - - # inputs for following - systems = { - url = "github:nix-systems/x86_64-linux"; # only evaluate for this system - }; - flake-compat = { - url = "github:edolstra/flake-compat"; - flake = false; - }; - flake-utils = { - url = "github:numtide/flake-utils"; - inputs = { - systems.follows = "systems"; - }; - }; - crane = { - url = "github:ipetkov/crane"; - inputs = { - nixpkgs.follows = "nixpkgs"; - }; - }; - rust-overlay = { - url = "github:oxalica/rust-overlay"; - inputs = { - nixpkgs.follows = "nixpkgs"; - flake-utils.follows = "flake-utils"; - }; - }; - }; - - outputs = { - self, - nixpkgs, - flake-utils, - treefmt-nix, - lpm, - flake_version_update, - ... - }: - flake-utils.lib.eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages.${system}; - - # This version is set automatically on `cog bump --auto`; - version = "v%INIT_APPLICATION_VERSION"; # GUIDING VERSION STRING - - # TODO reduce to the needed ones - texlive = pkgs.texlive.combined.scheme-full; - - treefmtEval = import ./treefmt.nix {inherit treefmt-nix pkgs;}; - - build = pkgs.stdenv.mkDerivation { - pname = "%INIT_APPLICATION_NAME"; - inherit version; - src = ./.; - - buildInputs = [ - texlive - ]; - - # Run local - preferLocalBuild = true; - allowSubstitutes = false; - - buildPhase = '' - # TODO: I have no idea, why calling it with `./build.sh` does not work <2024-03-20> - bash ./build.sh - ''; - - installPhase = '' - install -D ./build/main.pdf "$out/%INIT_APPLICATION_NAME.pdf"; - ''; - }; - in { - packages.default = build; - - checks = { - inherit build; - formatting = treefmtEval.config.build.check self; - }; - - formatter = treefmtEval.config.build.wrapper; - - devShells.default = pkgs.mkShell { - packages = with pkgs; [ - cocogitto - reuse - flake_version_update.packages."${system}".default - lpm.packages."${system}".default - texlive - - zathura - ]; - }; - }); -} diff --git a/templates/latex/academia/flake.nix b/templates/latex/academia/flake.nix new file mode 120000 index 0000000..3c2e48b --- /dev/null +++ b/templates/latex/academia/flake.nix @@ -0,0 +1 @@ +../../../common/flakes/latex/flake.nix \ No newline at end of file diff --git a/templates/latex/academia/lpm.toml b/templates/latex/academia/lpm.toml index d72f80f..1821b73 100644 --- a/templates/latex/academia/lpm.toml +++ b/templates/latex/academia/lpm.toml @@ -5,12 +5,30 @@ section = ''' %! TEX root = ../../../%INIT_APPLICATION_NAME.tex % LTeX: language=%INIT_LANGUAGE -\section{REPLACMENT_SECTION_TITLE} % DATE +\section{lpm::new_section_name} % lpm::current_date (lpm::current_chapter_name::title_case) ''' chapter = ''' %! TEX root = ../../%INIT_APPLICATION_NAME.tex % LTeX: language=%INIT_LANGUAGE -\chapter{REPLACEMENT_CHAPTER} +\chapter{lpm::new_chapter_name} % lpm::current_date +''' + +figure = ''' +% LTeX: language=%INIT_LANGUAGE +\documentclass[varwidth]{standalone} + +\input{../headers/preamble.tex} +\input{../headers/preamble_local.tex} + +\usepackage{tikz} + +\begin{document} % lpm::current_date (lpm::new_figure_name) + +\begin{tizkpicture} + \node at (0,0) {Hello world!}; +\end{tikzpicture} + +\end{document} ''' diff --git a/templates/latex/academia/update.sh b/templates/latex/academia/update.sh deleted file mode 100755 index 49216b8..0000000 --- a/templates/latex/academia/update.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env sh - -nix flake update diff --git a/templates/latex/academia/update.sh b/templates/latex/academia/update.sh new file mode 120000 index 0000000..e84e4e3 --- /dev/null +++ b/templates/latex/academia/update.sh @@ -0,0 +1 @@ +../../../common/scripts/update.sh \ No newline at end of file diff --git a/templates/latex/letter/.envrc b/templates/latex/letter/.envrc deleted file mode 100644 index 3bc1085..0000000 --- a/templates/latex/letter/.envrc +++ /dev/null @@ -1,9 +0,0 @@ -use flake || use nix -watch_file flake.nix - -PATH_add ./scripts - -if on_git_branch; then - echo && git status --short --branch && - echo && git fetch --verbose -fi diff --git a/templates/latex/letter/.envrc b/templates/latex/letter/.envrc new file mode 120000 index 0000000..db044c7 --- /dev/null +++ b/templates/latex/letter/.envrc @@ -0,0 +1 @@ +../../../common/.envrc \ No newline at end of file diff --git a/templates/latex/letter/flake.nix b/templates/latex/letter/flake.nix deleted file mode 100644 index 4847a9c..0000000 --- a/templates/latex/letter/flake.nix +++ /dev/null @@ -1,100 +0,0 @@ -{ - description = "%INIT_DESCRIPTION"; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - - treefmt-nix = { - url = "github:numtide/treefmt-nix"; - inputs = { - nixpkgs.follows = "nixpkgs"; - }; - }; - flake_version_update = { - url = "git+https://codeberg.org/soispha/flake_version_update.git"; - inputs = { - systems.follows = "systems"; - nixpkgs.follows = "nixpkgs"; - flake-utils.follows = "flake-utils"; - }; - }; - - # inputs for following - systems = { - url = "github:nix-systems/x86_64-linux"; # only evaluate for this system - }; - flake-compat = { - url = "github:edolstra/flake-compat"; - flake = false; - }; - flake-utils = { - url = "github:numtide/flake-utils"; - inputs = { - systems.follows = "systems"; - }; - }; - }; - - outputs = { - self, - nixpkgs, - flake-utils, - treefmt-nix, - flake_version_update, - ... - }: - flake-utils.lib.eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages.${system}; - - # This version is set automatically on `cog bump --auto`; - version = "v%INIT_APPLICATION_VERSION"; # GUIDING VERSION STRING - - # TODO reduce to the needed ones - texlive = pkgs.texlive.combined.scheme-full; - - treefmtEval = import ./treefmt.nix {inherit treefmt-nix pkgs;}; - - build = pkgs.stdenv.mkDerivation { - pname = "%INIT_APPLICATION_NAME"; - inherit version; - src = ./.; - - buildInputs = [ - texlive - ]; - - # Run local - preferLocalBuild = true; - allowSubstitutes = false; - - buildPhase = '' - # TODO: I have no idea, why calling it with `./build.sh` does not work <2024-03-20> - bash ./build.sh - ''; - - installPhase = '' - install -D ./build/main.pdf "$out/%INIT_APPLICATION_NAME.pdf"; - ''; - }; - in { - packages.default = build; - - checks = { - inherit build; - formatting = treefmtEval.config.build.check self; - }; - - formatter = treefmtEval.config.build.wrapper; - - devShells.default = pkgs.mkShell { - packages = with pkgs; [ - cocogitto - reuse - flake_version_update.packages."${system}".default - texlive - - zathura - ]; - }; - }); -} diff --git a/templates/latex/letter/flake.nix b/templates/latex/letter/flake.nix new file mode 120000 index 0000000..3c2e48b --- /dev/null +++ b/templates/latex/letter/flake.nix @@ -0,0 +1 @@ +../../../common/flakes/latex/flake.nix \ No newline at end of file diff --git a/templates/latex/letter/update.sh b/templates/latex/letter/update.sh deleted file mode 100755 index 49216b8..0000000 --- a/templates/latex/letter/update.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env sh - -nix flake update diff --git a/templates/latex/letter/update.sh b/templates/latex/letter/update.sh new file mode 120000 index 0000000..e84e4e3 --- /dev/null +++ b/templates/latex/letter/update.sh @@ -0,0 +1 @@ +../../../common/scripts/update.sh \ No newline at end of file -- cgit 1.4.1