mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-07-06 17:13:24 -05:00
[Backport release-26.05] ghostfolio: 2.254.0 -> 3.3.0 (#530912)
This commit is contained in:
commit
b5e61da309
1 changed files with 65 additions and 24 deletions
|
|
@ -5,19 +5,20 @@
|
|||
nodejs,
|
||||
faketty,
|
||||
openssl,
|
||||
prisma_6,
|
||||
prisma-engines_6,
|
||||
prisma_7,
|
||||
prisma-engines_7,
|
||||
runtimeShell,
|
||||
}:
|
||||
|
||||
buildNpmPackage rec {
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "ghostfolio";
|
||||
version = "2.254.0";
|
||||
version = "3.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ghostfolio";
|
||||
repo = "ghostfolio";
|
||||
tag = version;
|
||||
hash = "sha256-bcUr0tzq/X2pOmg7ZYj46+TQO9NBKmevm+C6PbyV/yc=";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-74CqCDyLrn3//FiTfo6xR5jLyo4jU+daBF9ES/uQE3E=";
|
||||
# populate values that require us to use git. By doing this in postFetch we
|
||||
# can delete .git afterwards and maintain better reproducibility of the src.
|
||||
leaveDotGit = true;
|
||||
|
|
@ -27,10 +28,21 @@ buildNpmPackage rec {
|
|||
'';
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-Wa15OSsd2IXTO1OjZoiFsSF0UhrzvS6fsymvxyPm0s8=";
|
||||
npmDepsHash = "sha256-klWmB6LYf6h1WPi3AasDrdVdaPCyb5ePWuO9zqMcXys=";
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace replace.build.mjs \
|
||||
--replace-fail 'new Date()' "new Date(''$(<SOURCE_DATE_EPOCH))"
|
||||
# SyntaxError: Named export 'PrismaClient' not found
|
||||
substituteInPlace prisma/seed.mts \
|
||||
--replace-fail "import { PrismaClient } from '@prisma/client';" \
|
||||
"import prismaClientPkg from '@prisma/client'; const { PrismaClient } = prismaClientPkg;"
|
||||
# storybook output is not used, skip it
|
||||
substituteInPlace package.json --replace-fail "nx run ui:build-storybook" "true"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
prisma_6
|
||||
prisma_7
|
||||
faketty
|
||||
];
|
||||
|
||||
|
|
@ -42,14 +54,10 @@ buildNpmPackage rec {
|
|||
|
||||
prisma generate
|
||||
|
||||
substituteInPlace replace.build.mjs \
|
||||
--replace-fail 'new Date()' "new Date(''$(<SOURCE_DATE_EPOCH))"
|
||||
|
||||
# Workaround for https://github.com/nrwl/nx/issues/22445
|
||||
faketty npm run build:production
|
||||
|
||||
cp -r node_modules dist/apps/api/
|
||||
cp -r prisma dist/apps/api/
|
||||
npm prune --omit=dev --no-save
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
|
@ -57,33 +65,66 @@ buildNpmPackage rec {
|
|||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p "$out/lib/node_modules/ghostfolio"
|
||||
cp -r dist/apps/{api,client} "$out/lib/node_modules/ghostfolio/"
|
||||
cp -r {node_modules,prisma} dist/apps/api/
|
||||
|
||||
mkdir -p $out/lib/ghostfolio
|
||||
cp -r dist/apps/{api,client} "$out/lib/ghostfolio/"
|
||||
|
||||
substituteInPlace .config/prisma.ts \
|
||||
--replace-fail "__dirname, '..', 'prisma'" "'$out/lib/ghostfolio/api/prisma'" \
|
||||
--replace-fail "node " "${lib.getExe nodejs} "
|
||||
install -Dm444 .config/prisma.ts "$out/lib/ghostfolio/api/prisma.config.ts"
|
||||
|
||||
mkdir "$out/bin"
|
||||
makeWrapper ${lib.getExe nodejs} "$out/bin/ghostfolio" \
|
||||
--add-flags "$out/lib/node_modules/ghostfolio/api/main" "''${user_args[@]}" \
|
||||
--add-flags "$out/lib/ghostfolio/api/main" "''${user_args[@]}" \
|
||||
--prefix PATH : ${lib.makeBinPath [ openssl ]} \
|
||||
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ openssl ]} \
|
||||
${lib.concatStringsSep " " (
|
||||
lib.mapAttrsToList (name: value: "--set ${name} ${lib.escapeShellArg value}") {
|
||||
PRISMA_SCHEMA_ENGINE_BINARY = lib.getExe' prisma-engines_6 "schema-engine";
|
||||
PRISMA_QUERY_ENGINE_BINARY = lib.getExe' prisma-engines_6 "query-engine";
|
||||
PRISMA_QUERY_ENGINE_LIBRARY = "${prisma-engines_6}/lib/libquery_engine.node";
|
||||
PRISMA_INTROSPECTION_ENGINE_BINARY = lib.getExe' prisma-engines_6 "introspection-engine";
|
||||
PRISMA_FMT_BINARY = lib.getExe' prisma-engines_6 "prisma-fmt";
|
||||
PRISMA_SCHEMA_ENGINE_BINARY = lib.getExe' prisma-engines_7 "schema-engine";
|
||||
PRISMA_QUERY_ENGINE_BINARY = lib.getExe' prisma-engines_7 "query-engine";
|
||||
PRISMA_QUERY_ENGINE_LIBRARY = "${prisma-engines_7}/lib/libquery_engine.node";
|
||||
PRISMA_INTROSPECTION_ENGINE_BINARY = lib.getExe' prisma-engines_7 "introspection-engine";
|
||||
PRISMA_FMT_BINARY = lib.getExe' prisma-engines_7 "prisma-fmt";
|
||||
}
|
||||
)}
|
||||
|
||||
cat > $out/bin/ghostfolio-migrate <<EOF
|
||||
#!${runtimeShell}
|
||||
set -euo pipefail
|
||||
${lib.getExe prisma_7} migrate deploy --config "$out/lib/ghostfolio/api/prisma.config.ts"
|
||||
${lib.getExe prisma_7} db seed --config "$out/lib/ghostfolio/api/prisma.config.ts"
|
||||
EOF
|
||||
chmod +x $out/bin/ghostfolio-migrate
|
||||
|
||||
# For compatibility
|
||||
mkdir -p $out/lib/node_modules
|
||||
ln -sr $out/lib/ghostfolio $out/lib/node_modules/ghostfolio
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
# Remove dev deps not needed at runtime
|
||||
preFixup = ''
|
||||
find $out/lib -name "*.py" -delete
|
||||
apiModules="$out/lib/ghostfolio/api/node_modules"
|
||||
rm -rf \
|
||||
"$out/lib/ghostfolio/client/development" \
|
||||
"$apiModules"/sass-embedded* \
|
||||
"$apiModules"/{@,}esbuild \
|
||||
"$apiModules"/{@,}rollup \
|
||||
"$apiModules"/@rolldown \
|
||||
"$apiModules"/@parcel/watcher-* \
|
||||
"$apiModules"/typescript \
|
||||
"$apiModules"/.{bin,cache} \
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Open Source Wealth Management Software";
|
||||
homepage = "https://github.com/ghostfolio/ghostfolio";
|
||||
changelog = "https://github.com/ghostfolio/ghostfolio/blob/${src.rev}/CHANGELOG.md";
|
||||
changelog = "https://github.com/ghostfolio/ghostfolio/blob/${finalAttrs.src.rev}/CHANGELOG.md";
|
||||
license = lib.licenses.agpl3Only;
|
||||
maintainers = with lib.maintainers; [ moraxyc ];
|
||||
mainProgram = "ghostfolio";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue