add target for building theses to nix flake
This commit is contained in:
20
Makefile
20
Makefile
@@ -1,3 +1,5 @@
|
|||||||
|
TYPST_PACKAGES ?=
|
||||||
|
|
||||||
BUILD_DIR := target
|
BUILD_DIR := target
|
||||||
PACKS_ROOT := $(BUILD_DIR)/pack
|
PACKS_ROOT := $(BUILD_DIR)/pack
|
||||||
PACKDIR := $(PACKS_ROOT)/tultemplate2
|
PACKDIR := $(PACKS_ROOT)/tultemplate2
|
||||||
@@ -77,6 +79,14 @@ define replace_with_file_line
|
|||||||
sed "s/$(1)/$$(sed '$(3)q;d' $(2))/g"
|
sed "s/$(1)/$$(sed '$(3)q;d' $(2))/g"
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define typst_pkgs
|
||||||
|
$(if $(TYPST_PACKAGES), --package-cache-path $(TYPST_PACKAGES))
|
||||||
|
endef
|
||||||
|
|
||||||
|
define typst_compile
|
||||||
|
typst compile --font-path template/fonts$(call typst_pkgs) --root .
|
||||||
|
endef
|
||||||
|
|
||||||
# == LIBS ==
|
# == LIBS ==
|
||||||
|
|
||||||
$(LIBDIR):
|
$(LIBDIR):
|
||||||
@@ -94,7 +104,7 @@ template/lib/much_pdf_tools/much_pdf_tools.wasm: | $(LIB_MUCHPDFTOOLS)
|
|||||||
# == DOCUMENTATION ==
|
# == DOCUMENTATION ==
|
||||||
|
|
||||||
$(BUILD_DIR)/documentation.pdf: documentation.typ $(TEMPLATE_SRCS) | $(BUILD_DIR)
|
$(BUILD_DIR)/documentation.pdf: documentation.typ $(TEMPLATE_SRCS) | $(BUILD_DIR)
|
||||||
typst compile --font-path template/fonts $< $@
|
$(call typst_compile) $< $@
|
||||||
|
|
||||||
# == THESES EXAMPLES ==
|
# == THESES EXAMPLES ==
|
||||||
|
|
||||||
@@ -118,10 +128,10 @@ $(BUILD_DIR)/%.typ: $(BUILD_DIR)/header_%.txt $(BUILD_DIR)/content_%.txt | $(BUI
|
|||||||
cat $^ > $@
|
cat $^ > $@
|
||||||
|
|
||||||
$(BUILD_DIR)/%.pdf: $(BUILD_DIR)/%.typ $(TEMPLATE_SRCS) | $(BUILD_DIR)
|
$(BUILD_DIR)/%.pdf: $(BUILD_DIR)/%.typ $(TEMPLATE_SRCS) | $(BUILD_DIR)
|
||||||
typst compile --font-path template/fonts --root . $< $@
|
$(call typst_compile) $< $@
|
||||||
|
|
||||||
template/example_appendix.pdf: theses/example_appendix.typ
|
template/example_appendix.pdf: theses/example_appendix.typ
|
||||||
typst compile --font-path template/fonts --root . $< $@
|
$(call typst_compile) $< $@
|
||||||
|
|
||||||
# == PACKS - clean builds for direct use ==
|
# == PACKS - clean builds for direct use ==
|
||||||
|
|
||||||
@@ -182,10 +192,10 @@ $(BUNDLEDIR)/%.typ: $(BUILD_DIR)/content_%.txt | $(BUNDLEDIR)
|
|||||||
sed 's/\.\.\/template\//template\//' $< > $@
|
sed 's/\.\.\/template\//template\//' $< > $@
|
||||||
|
|
||||||
$(BUNDLEDIR)/title-pages.pdf: theses/title_pages.typ | $(BUNDLEDIR)
|
$(BUNDLEDIR)/title-pages.pdf: theses/title_pages.typ | $(BUNDLEDIR)
|
||||||
typst compile --root . --font-path template/fonts $< $@
|
$(call typst_compile) $< $@
|
||||||
|
|
||||||
$(BUNDLEDIR)/assignment.pdf: theses/assignment.typ | $(BUNDLEDIR)
|
$(BUNDLEDIR)/assignment.pdf: theses/assignment.typ | $(BUNDLEDIR)
|
||||||
typst compile --root . --font-path template/fonts $< $@
|
$(call typst_compile) $< $@
|
||||||
|
|
||||||
# == TESTS ==
|
# == TESTS ==
|
||||||
|
|
||||||
|
|||||||
78
flake.nix
78
flake.nix
@@ -21,26 +21,92 @@
|
|||||||
chmod +w $LIB/much_pdf_tools
|
chmod +w $LIB/much_pdf_tools
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
build_with_target = target: buildOutput: pkgs.stdenv.mkDerivation {
|
typstPkgs = [
|
||||||
inherit buildInputs target buildOutput;
|
{
|
||||||
name = name + "-" + target;
|
name = "alchemist";
|
||||||
|
version = "0.1.8";
|
||||||
|
hash = "18ckw65wq7q8ksayp1g86c9j6d9l1kfg9m100q0gddaw7ksqjqqq";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "cetz";
|
||||||
|
version = "0.4.1";
|
||||||
|
hash = "18xinq5agk6zi0r064l6qg09far170n9965a9z2zznz3zsv1h6is";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "oxifmt";
|
||||||
|
version = "1.0.0";
|
||||||
|
hash = "0bqc5ahiavjds966a8v5llw9imqqaa43x89ha9dl5nlp51vqmla6";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
pull_typst_package = pkg: pkgs.stdenv.mkDerivation {
|
||||||
|
name = "typst_package-${pkg.name}-${pkg.version}";
|
||||||
|
src = fetchTarball {
|
||||||
|
url = "https://packages.typst.org/preview/${pkg.name}-${pkg.version}.tar.gz";
|
||||||
|
sha256 = pkg.hash;
|
||||||
|
};
|
||||||
|
installPath = "${pkg.name}/${pkg.version}";
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/$installPath
|
||||||
|
cp -R . $out/$installPath
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
pull_typst_packages = pkgList: pkgs.stdenv.mkDerivation {
|
||||||
|
name = "typst-packages";
|
||||||
|
src = null;
|
||||||
|
dontUnpack = true;
|
||||||
|
buildInputs = builtins.map (pkg: pull_typst_package pkg) pkgList;
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/preview
|
||||||
|
for input in $buildInputs
|
||||||
|
do
|
||||||
|
ln -s $input/$(ls $input) $out/preview
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
build_with_targets = id: targets: buildOutputs: typstPkgs: pkgs.stdenv.mkDerivation {
|
||||||
|
inherit buildInputs targets buildOutputs;
|
||||||
|
name = name + "-" + id;
|
||||||
src = ./.;
|
src = ./.;
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
${envSetup}
|
${envSetup}
|
||||||
make $target
|
${
|
||||||
|
if builtins.length typstPkgs > 0
|
||||||
|
then
|
||||||
|
"ln -s ${pull_typst_packages typstPkgs} typst_packages"
|
||||||
|
else ""
|
||||||
|
}
|
||||||
|
for target in $targets
|
||||||
|
do
|
||||||
|
make $target ${
|
||||||
|
if builtins.length typstPkgs > 0 then "TYPST_PACKAGES=typst_packages" else ""
|
||||||
|
}
|
||||||
|
done
|
||||||
'';
|
'';
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir $out
|
mkdir $out
|
||||||
cp -R $buildOutput $out
|
for buildOutput in $buildOutputs
|
||||||
|
do
|
||||||
|
cp -R $buildOutput $out
|
||||||
|
done
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
build = id: targets: typstPkgs: (let
|
||||||
|
targetFiles = builtins.map (target: "target/${target}") targets;
|
||||||
|
in
|
||||||
|
build_with_targets id [targetFiles] [targetFiles] typstPkgs);
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
devShell = with pkgs; mkShell {
|
devShell = with pkgs; mkShell {
|
||||||
inherit buildInputs;
|
inherit buildInputs;
|
||||||
shellHook = envSetup;
|
shellHook = envSetup;
|
||||||
};
|
};
|
||||||
packages.bundle = build_with_target "bundle" "target/pack/bundle/.";
|
packages.bundle = build_with_targets "bundle" ["bundle"] ["target/pack/bundle/."] [];
|
||||||
|
packages.theses = build "theses" (builtins.map (file: "${file}.pdf") [
|
||||||
|
"bp_cs" "bp_en"
|
||||||
|
"dp_cs" "dp_en"
|
||||||
|
"prj_cs" "prj_en"
|
||||||
|
"sp_cs" "sp_en"
|
||||||
|
]) typstPkgs;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user