diff --git a/pkgs/by-name/fi/firefly-iii/package.nix b/pkgs/by-name/fi/firefly-iii/package.nix index 0a15b4eaa9214..d8495f64e2990 100644 --- a/pkgs/by-name/fi/firefly-iii/package.nix +++ b/pkgs/by-name/fi/firefly-iii/package.nix @@ -1,8 +1,12 @@ { lib , fetchFromGitHub -, buildNpmPackage +, stdenvNoCC +, nodejs +, fetchNpmDeps +, buildPackages , php83 , nixosTests +, nix-update-script , dataDir ? "/var/lib/firefly-iii" }: @@ -10,6 +14,7 @@ let pname = "firefly-iii"; version = "6.1.18"; phpPackage = php83; + npmDepsHash = "sha256-MoxkNxfVeIFkiNVzfehQ9FpC65kBj8ZmvwaRf4MVRIg="; src = fetchFromGitHub { owner = "firefly-iii"; @@ -17,36 +22,62 @@ let rev = "v${version}"; hash = "sha256-mA7gvKhHouUUz1Aix7253O/+VcufoEFwdcJeZxnazEo="; }; - - assets = buildNpmPackage { - pname = "${pname}-assets"; - inherit version src; - npmDepsHash = "sha256-MoxkNxfVeIFkiNVzfehQ9FpC65kBj8ZmvwaRf4MVRIg="; - dontNpmBuild = true; - installPhase = '' - runHook preInstall - npm run prod --workspace=v1 - npm run build --workspace=v2 - cp -r ./public $out/ - runHook postInstall - ''; - }; in -phpPackage.buildComposerProject (finalAttrs: { +stdenvNoCC.mkDerivation (finalAttrs: { inherit pname src version; + buildInputs = [ phpPackage ]; + + nativeBuildInputs = [ + nodejs + nodejs.python + buildPackages.npmHooks.npmConfigHook + phpPackage.composerHooks.composerInstallHook + phpPackage.packages.composer-local-repo-plugin + ]; + + composerNoDev = true; + composerNoPlugins = true; + composerNoScripts = true; + composerStrictValidation = true; + strictDeps = true; + vendorHash = "sha256-EpMypgj6lZDz6T94bGoCUH9IVwh7VB4Ds08AcCsreRw="; + npmDeps = fetchNpmDeps { + inherit src; + name = "${pname}-npm-deps"; + hash = npmDepsHash; + }; + + composerRepository = phpPackage.mkComposerRepository { + inherit (finalAttrs) + pname + src + vendorHash + version + ; + composerNoDev = true; + composerNoPlugins = true; + composerNoScripts = true; + composerStrictValidation = true; + }; + + preInstall = '' + npm run prod --workspace=v1 + npm run build --workspace=v2 + ''; + passthru = { inherit phpPackage; tests = nixosTests.firefly-iii; + updateScript = nix-update-script { }; }; postInstall = '' mv $out/share/php/${pname}/* $out/ - rm -R $out/share $out/storage $out/bootstrap/cache $out/public - cp -a ${assets} $out/public + rm -R $out/share $out/storage $out/bootstrap/cache $out/node_modules ln -s ${dataDir}/storage $out/storage ln -s ${dataDir}/cache $out/bootstrap/cache ''; @@ -56,6 +87,6 @@ phpPackage.buildComposerProject (finalAttrs: { description = "Firefly III: a personal finances manager"; homepage = "https://github.com/firefly-iii/firefly-iii"; license = lib.licenses.agpl3Only; - maintainers = [ lib.maintainers.savyajha ]; + maintainers = [ lib.maintainers.savyajha lib.maintainers.patrickdag ]; }; })