mirror of
https://gitee.com/spark-store-project/spark-store
synced 2026-06-22 06:03:49 +08:00
159 lines
3.5 KiB
Nix
159 lines
3.5 KiB
Nix
{
|
|
lib,
|
|
buildNpmPackage,
|
|
importNpmLock,
|
|
electron,
|
|
makeWrapper,
|
|
aria2,
|
|
apm,
|
|
coreutils,
|
|
gnugrep,
|
|
which,
|
|
xdg-utils,
|
|
bash,
|
|
}:
|
|
|
|
buildNpmPackage rec {
|
|
pname = "spark-store";
|
|
version = "5.1.1";
|
|
|
|
src = lib.cleanSourceWith {
|
|
src = ../.;
|
|
filter =
|
|
path: type:
|
|
let
|
|
baseName = baseNameOf path;
|
|
in
|
|
!(lib.elem baseName [
|
|
".git"
|
|
"dist"
|
|
"dist-electron"
|
|
"node_modules"
|
|
"release"
|
|
"result"
|
|
]);
|
|
};
|
|
|
|
npmDeps = importNpmLock {
|
|
npmRoot = ../.;
|
|
};
|
|
npmConfigHook = importNpmLock.npmConfigHook;
|
|
|
|
nativeBuildInputs = [
|
|
makeWrapper
|
|
];
|
|
|
|
env = {
|
|
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
|
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = "1";
|
|
};
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
npm run build:vite
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
appDir="$out/share/spark-store"
|
|
|
|
npm prune --omit=dev --ignore-scripts
|
|
|
|
substituteInPlace extras/shell-caller.sh \
|
|
--replace-fail "/usr/bin/apm" "${lib.getExe' apm "apm"}"
|
|
|
|
mkdir -p "$appDir" "$out/bin"
|
|
cp -r dist dist-electron package.json node_modules extras icons "$appDir"/
|
|
|
|
chmod -R u+w "$appDir"
|
|
find "$appDir/extras" -type f -exec chmod +x {} \;
|
|
|
|
substituteInPlace "$appDir/dist-electron/main/index.js" \
|
|
--replace-fail "/opt/spark-store/extras/shell-caller.sh" "$appDir/extras/shell-caller.sh" \
|
|
--replace-fail "/opt/spark-store/extras/app-launcher" "$appDir/extras/app-launcher"
|
|
|
|
install -Dm644 pkg/usr/share/applications/spark-store.desktop \
|
|
"$out/share/applications/spark-store.desktop"
|
|
|
|
install -Dm644 icons/spark-store.svg \
|
|
"$out/share/icons/hicolor/scalable/apps/spark-store.svg"
|
|
|
|
install -Dm644 icons/spark-store.png \
|
|
"$out/share/icons/hicolor/512x512/apps/spark-store.png"
|
|
|
|
install -Dm644 extras/store.spark-app.spark-store.policy \
|
|
"$out/share/polkit-1/actions/store.spark-app.spark-store.policy"
|
|
|
|
substituteInPlace "$out/share/polkit-1/actions/store.spark-app.spark-store.policy" \
|
|
--replace-fail "/opt/spark-store/extras/shell-caller.sh" "$appDir/extras/shell-caller.sh"
|
|
|
|
cat > "$out/bin/spark-store" <<EOF
|
|
#!${bash}/bin/bash
|
|
export PATH="${lib.makeBinPath [
|
|
aria2
|
|
coreutils
|
|
gnugrep
|
|
which
|
|
xdg-utils
|
|
]}:\$PATH"
|
|
|
|
electron_args=(--no-sandbox)
|
|
app_args=()
|
|
|
|
root_path="\$(${coreutils}/bin/readlink -f /proc/self/root)"
|
|
if [ "\$root_path" != "/" ]; then
|
|
app_args+=(--no-apm)
|
|
fi
|
|
|
|
if [ "\''${IS_ACE_ENV:-}" = "1" ]; then
|
|
app_args+=(--no-apm)
|
|
fi
|
|
|
|
if ! command -v apt >/dev/null 2>&1; then
|
|
app_args+=(--no-spark)
|
|
fi
|
|
|
|
if [ -r /etc/os-release ] && ${gnugrep}/bin/grep -q "ID=aosc" /etc/os-release; then
|
|
app_args+=(--no-spark)
|
|
fi
|
|
|
|
exec ${electron}/bin/electron "\''${electron_args[@]}" "$appDir" "\''${app_args[@]}" "\$@"
|
|
EOF
|
|
chmod +x "$out/bin/spark-store"
|
|
|
|
patchShebangs "$appDir/extras"
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
postFixup = ''
|
|
appDir="$out/share/spark-store"
|
|
|
|
wrapProgram "$appDir/extras/shell-caller.sh" \
|
|
--prefix PATH : ${
|
|
lib.makeBinPath [
|
|
aria2
|
|
bash
|
|
coreutils
|
|
which
|
|
xdg-utils
|
|
]
|
|
}
|
|
|
|
substituteInPlace "$appDir/extras/.shell-caller.sh-wrapped" \
|
|
--replace-fail "#!/bin/bash" "#!${bash}/bin/bash"
|
|
'';
|
|
|
|
meta = {
|
|
description = "Client for Spark App Store";
|
|
homepage = "https://spark-app.store";
|
|
license = lib.licenses.gpl3Only;
|
|
mainProgram = "spark-store";
|
|
platforms = lib.platforms.linux;
|
|
};
|
|
}
|