summary refs log tree commit diff
path: root/pkgs/tools/typesetting/bibtex-tidy
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/typesetting/bibtex-tidy')
-rw-r--r--pkgs/tools/typesetting/bibtex-tidy/default.nix35
-rw-r--r--pkgs/tools/typesetting/bibtex-tidy/remove-google-font-loader.patch52
2 files changed, 87 insertions, 0 deletions
diff --git a/pkgs/tools/typesetting/bibtex-tidy/default.nix b/pkgs/tools/typesetting/bibtex-tidy/default.nix
new file mode 100644
index 00000000000..7aeaf13fb02
--- /dev/null
+++ b/pkgs/tools/typesetting/bibtex-tidy/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildNpmPackage
+, fetchFromGitHub
+}:
+
+buildNpmPackage rec {
+  pname = "bibtex-tidy";
+  version = "1.11.0";
+
+  src = fetchFromGitHub {
+    owner = "FlamingTempura";
+    repo = "bibtex-tidy";
+    rev = "v${version}";
+    hash = "sha256-VjQuMQr3OJgjgX6FdH/C4mehf8H7XjDZ9Rxs92hyQVo=";
+  };
+
+  patches = [
+    # downloads Google fonts during `npm run build`
+    ./remove-google-font-loader.patch
+  ];
+
+  npmDepsHash = "sha256-u2lyG95F00S/bvsVwu0hIuUw2UZYQWFakCF31LIijSU=";
+
+  env = {
+    PUPPETEER_SKIP_DOWNLOAD = true;
+  };
+
+  meta = {
+    changelog = "https://github.com/FlamingTempura/bibtex-tidy/blob/${src.rev}/CHANGELOG.md";
+    description = "Cleaner and Formatter for BibTeX files";
+    homepage = "https://github.com/FlamingTempura/bibtex-tidy";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ bertof ];
+  };
+}
diff --git a/pkgs/tools/typesetting/bibtex-tidy/remove-google-font-loader.patch b/pkgs/tools/typesetting/bibtex-tidy/remove-google-font-loader.patch
new file mode 100644
index 00000000000..79c6850cf6c
--- /dev/null
+++ b/pkgs/tools/typesetting/bibtex-tidy/remove-google-font-loader.patch
@@ -0,0 +1,52 @@
+diff --git a/build.ts b/build.ts
+index ae4e350..3498ae7 100644
+--- a/build.ts
++++ b/build.ts
+@@ -312,7 +312,6 @@ async function buildWebBundle() {
+ 		target: ['esnext'],
+ 		plugins: [
+ 			sveltePlugin({ preprocess: autoPreprocess() }),
+-			googleFontPlugin,
+ 			regexpuPlugin,
+ 		],
+ 	});
+@@ -344,7 +343,6 @@ async function serveWeb() {
+ 				preprocess: autoPreprocess(),
+ 				compilerOptions: { enableSourcemap: true },
+ 			}),
+-			googleFontPlugin,
+ 		],
+ 	});
+ 	const server = await ctx.serve({ servedir: WEB_PATH });
+@@ -375,31 +373,6 @@ const regexpuPlugin: Plugin = {
+ 	},
+ };
+ 
+-// Downloads google fonts and injects them as base64 urls into bundle css
+-const googleFontPlugin: Plugin = {
+-	name: 'google-font-loader',
+-	setup(build) {
+-		build.onResolve({ filter: /^https?:\/\/fonts\./ }, (args) => ({
+-			path: args.path,
+-			namespace: 'http-url',
+-		}));
+-		build.onLoad(
+-			{ filter: /.*/, namespace: 'http-url' },
+-			async (args): Promise<OnLoadResult> => {
+-				const res = await fetch(args.path, {
+-					headers: {
+-						// ensures google responds with woff2 fonts
+-						'User-Agent': 'Mozilla/5.0 Firefox/90.0',
+-					},
+-				});
+-				const contents = Buffer.from(await res.arrayBuffer());
+-				const loader = args.path.endsWith('.woff2') ? 'dataurl' : 'css';
+-				return { contents, loader };
+-			}
+-		);
+-	},
+-};
+-
+ /**
+  * swc converts js syntax to support older browsers. ESBuild can kinda do this
+  * but only for more recent browsers. swc is also far easier to configure than