From 02497f8342d93ec1162b4ea060c3d69eae1f408e Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Thu, 24 Jul 2025 15:06:00 +0800 Subject: [PATCH] fava: build frontend from source --- .../fa/fava/dont-compile-frontend.patch | 11 ++++++ pkgs/by-name/fa/fava/package.nix | 38 ++++++++++++++++--- 2 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 pkgs/by-name/fa/fava/dont-compile-frontend.patch diff --git a/pkgs/by-name/fa/fava/dont-compile-frontend.patch b/pkgs/by-name/fa/fava/dont-compile-frontend.patch new file mode 100644 index 000000000000..11996cbf7bcd --- /dev/null +++ b/pkgs/by-name/fa/fava/dont-compile-frontend.patch @@ -0,0 +1,11 @@ +--- a/_build_backend.py ++++ b/_build_backend.py +@@ -87,7 +87,7 @@ + + def _build_fava() -> None: + """Run the build steps for Fava.""" +- _compile_frontend() ++ # _compile_frontend() + _compile_translations() + + diff --git a/pkgs/by-name/fa/fava/package.nix b/pkgs/by-name/fa/fava/package.nix index e4e6dd530b31..983f75114bcc 100644 --- a/pkgs/by-name/fa/fava/package.nix +++ b/pkgs/by-name/fa/fava/package.nix @@ -1,19 +1,45 @@ { lib, python3Packages, - fetchPypi, + buildNpmPackage, + fetchFromGitHub, stdenv, }: +let + src = buildNpmPackage (finalAttrs: { + pname = "fava-frontend"; + version = "1.30.5"; -python3Packages.buildPythonApplication rec { + src = fetchFromGitHub { + owner = "beancount"; + repo = "fava"; + tag = "v${finalAttrs.version}"; + hash = "sha256-46ze+1sdgXq9Unhu1ec4buXbH3s/PCcfCx+rmYc+fZw="; + }; + sourceRoot = "${finalAttrs.src.name}/frontend"; + + npmDepsHash = "sha256-ImBNqccAd61c9ASzklcooQyh7BYdgJW9DTcQRmFHqho="; + makeCacheWritable = true; + + preBuild = '' + chmod -R u+w .. + ''; + + installPhase = '' + runHook preInstall + cp -R .. $out + runHook postInstall + ''; + }); +in +python3Packages.buildPythonApplication { pname = "fava"; version = "1.30.5"; pyproject = true; - src = fetchPypi { - inherit pname version; - hash = "sha256-pfnRNhAcyuYFHqPBF0qCrK7w1PJiMOdYXCGj+xXi6uQ="; - }; + inherit src; + + patches = [ ./dont-compile-frontend.patch ]; postPatch = '' substituteInPlace tests/test_cli.py \