yokutango-leaflet/flake.nix

94 lines
3.1 KiB
Nix

{ inputs = {
nixpkgs.url = "nixpkgs/nixos-22.11";
yokutango = {
url = "git+https://git.nani.wtf/h7x4/yokutango?ref=master";
flake = false;
};
noto-cjk-jp-otf-regular = {
url = "https://github.com/notofonts/noto-cjk/raw/main/Sans/OTF/Japanese/NotoSansCJKjp-Regular.otf";
flake = false;
};
};
outputs = { self, nixpkgs, yokutango, noto-cjk-jp-otf-regular }: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
inherit (pkgs) lib;
nativeBuildInputs = with pkgs; [
self.packages.${system}.yokutango2tex
texlive.combined.scheme-full
];
FONTCONFIG_FILE = pkgs.makeFontsConf {
fontDirectories = with pkgs; [
noto-fonts
self.packages.${system}.noto-sans-cjk-jp
];
};
mkYokutango-pdf = { paper ? "a4paper" }: let
template = lib.fileContents ./template.tex;
y2t-output-d = pkgs.runCommand "yokutango2tex-output" {} ''
${self.packages.${system}.yokutango2tex}/bin/yokutango2tex ${self.packages.${system}.yokutango-json} > $out
'';
y2t-output = lib.fileContents y2t-output-d;
combined = pkgs.writeText ''yokutango.tex'' (builtins.replaceStrings [
"% --- %"
"$paper$"
] [
y2t-output
paper
] template);
in pkgs.runCommand "yokutango-pdf" { inherit nativeBuildInputs FONTCONFIG_FILE; } ''
mkdir $out
ln -s ${combined} yokutango.tex
ln -s ${combined} $out/yokutango.tex
xelatex yokutango.tex
xelatex yokutango.tex
ln -s ${./2page-booklet-wrapper.tex} yokutango-book.tex
xelatex yokutango-book.tex
mv yokutango.pdf yokutango-book.pdf $out
'';
in {
devShells.${system}.default = pkgs.mkShell {
inherit nativeBuildInputs FONTCONFIG_FILE;
};
packages.${system} = {
default = self.packages.${system}.yokutango-pdf-a5;
noto-sans-cjk-jp = pkgs.runCommandLocal "noto-sans-cjk-jp" {} ''
mkdir -p $out/share/fonts/opentype/noto-cjk
ln -s ${noto-cjk-jp-otf-regular} $out/share/fonts/opentype/noto-cjk/NotoSansCJKjp-Regular.otf
'';
yokutango-json = pkgs.runCommandLocal "yokutango-json" {} ''
ln -s ${yokutango}/json $out
'';
yokutango-test = let
template = lib.fileContents ./template.tex;
body = lib.fileContents ./testContent.tex;
combined = pkgs.writeText ''yokutango-test.tex'' (builtins.replaceStrings ["% --- %"] [body] template);
in pkgs.runCommand "yokutango-pdf" { inherit nativeBuildInputs FONTCONFIG_FILE; } ''
mkdir $out
ln -s ${combined} yokutango-test.tex
ln -s ${combined} $out/yokutango-test.tex
xelatex yokutango-test.tex
xelatex yokutango-test.tex
mv yokutango-test.pdf $out
'';
yokutango2tex = pkgs.writers.writeHaskellBin "yokutango2tex" {
libraries = with pkgs.haskellPackages; [ aeson bytestring ];
} (lib.fileContents ./yokutango2tex.hs);
yokutango-pdf-a5 = mkYokutango-pdf { paper = "a5paper"; };
yokutango-pdf-a4 = mkYokutango-pdf { paper = "a4paper"; };
};
};
}