mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-25 08:23:09 +00:00
porn-vault: init at 0.30.0-rc.11
Co-Authored-By: Scrumplex <contact@scrumplex.net>
This commit is contained in:
parent
64e9f97a3a
commit
dbfde9db1c
2291
pkgs/by-name/po/porn-vault/Cargo.lock
generated
Normal file
2291
pkgs/by-name/po/porn-vault/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
109
pkgs/by-name/po/porn-vault/allow-use-of-systemd-temp-path.patch
Normal file
109
pkgs/by-name/po/porn-vault/allow-use-of-systemd-temp-path.patch
Normal file
@ -0,0 +1,109 @@
|
||||
diff --git a/server/binaries/ffmpeg.ts b/server/binaries/ffmpeg.ts
|
||||
index abb4de4f..cdcc0a02 100644
|
||||
--- a/server/binaries/ffmpeg.ts
|
||||
+++ b/server/binaries/ffmpeg.ts
|
||||
@@ -8,6 +8,7 @@ import { getConfig } from "../config";
|
||||
import { mkdirpAsync, rimrafAsync, statAsync } from "../utils/fs/async";
|
||||
import { formatMessage, handleError, logger } from "../utils/logger";
|
||||
import { generateTimestampsAtIntervals } from "../utils/misc";
|
||||
+import { tempPath } from "server/utils/path";
|
||||
|
||||
export async function takeScreenshot(
|
||||
inPath: string,
|
||||
@@ -112,7 +113,7 @@ export async function generatePreview(
|
||||
): Promise<void> {
|
||||
logger.debug(`Creating 100 small previews for ${sceneId}.`);
|
||||
|
||||
- const tmpFolder = resolve("tmp", "preview", sceneId);
|
||||
+ const tmpFolder = resolve(tempPath, "preview", sceneId);
|
||||
|
||||
const timestamps = generateTimestampsAtIntervals(PREVIEW_COUNT, durationSecs * 1000, {
|
||||
startPercentage: 2,
|
||||
diff --git a/server/database/index.ts b/server/database/index.ts
|
||||
index 80ff6432..c6feb11d 100755
|
||||
--- a/server/database/index.ts
|
||||
+++ b/server/database/index.ts
|
||||
@@ -15,7 +15,7 @@ import Studio from "../types/studio";
|
||||
import SceneView from "../types/watch";
|
||||
import { mkdirpSync } from "../utils/fs/async";
|
||||
import { logger } from "../utils/logger";
|
||||
-import { libraryPath } from "../utils/path";
|
||||
+import { libraryPath, tempPath } from "../utils/path";
|
||||
import { Izzy } from "./internal";
|
||||
|
||||
export function formatCollectionName(name: string) {
|
||||
@@ -261,11 +261,11 @@ export async function loadStore<T extends { _id: string }>(
|
||||
}
|
||||
|
||||
export async function loadStores(): Promise<void> {
|
||||
- if (!existsSync("tmp")) {
|
||||
- logger.info("Creating temporary directory 'tmp'");
|
||||
- mkdirpSync("tmp/");
|
||||
+ if (!existsSync(tempPath)) {
|
||||
+ logger.info(`Creating temporary directory '${tempPath}'`);
|
||||
+ mkdirpSync(tempPath);
|
||||
} else {
|
||||
- logger.debug("Temporary directory 'tmp' already exists");
|
||||
+ logger.debug(`Temporary directory '${tempPath}' already exists`);
|
||||
}
|
||||
|
||||
const crossReferencePath = libraryPath("cross_references.db");
|
||||
diff --git a/server/graphql/mutations/image.ts b/server/graphql/mutations/image.ts
|
||||
index 6554f145..a7853eea 100644
|
||||
--- a/server/graphql/mutations/image.ts
|
||||
+++ b/server/graphql/mutations/image.ts
|
||||
@@ -20,7 +20,7 @@ import Studio from "../../types/studio";
|
||||
import { mapAsync } from "../../utils/async";
|
||||
import { copyFileAsync, statAsync, unlinkAsync } from "../../utils/fs/async";
|
||||
import { logger } from "../../utils/logger";
|
||||
-import { getFolderPartition, libraryPath } from "../../utils/path";
|
||||
+import { getFolderPartition, libraryPath, tempPath } from "../../utils/path";
|
||||
import { getExtension, normalizeName } from "../../utils/string";
|
||||
import { Dictionary, isBoolean, isNumber, isString } from "../../utils/types";
|
||||
import { clearCaches } from "../datasources";
|
||||
@@ -110,7 +110,7 @@ export default {
|
||||
|
||||
const image = new Image(imageName);
|
||||
|
||||
- const outPath = `tmp/${image._id}${ext}`;
|
||||
+ const outPath = resolve(tempPath, `${image._id}${ext}`);
|
||||
|
||||
logger.debug(`Getting file...`);
|
||||
|
||||
diff --git a/server/routes/scene.ts b/server/routes/scene.ts
|
||||
index 601de160..fe8b8de5 100644
|
||||
--- a/server/routes/scene.ts
|
||||
+++ b/server/routes/scene.ts
|
||||
@@ -16,7 +16,7 @@ import Scene from "../types/scene";
|
||||
import { mkdirpAsync, readFileAsync, rimrafAsync } from "../utils/fs/async";
|
||||
import { handleError, logger } from "../utils/logger";
|
||||
import { generateTimestampsAtIntervals } from "../utils/misc";
|
||||
-import { getFolderPartition, libraryPath } from "../utils/path";
|
||||
+import { getFolderPartition, libraryPath, tempPath } from "../utils/path";
|
||||
import { IMAGE_CACHE_CONTROL } from "./media";
|
||||
|
||||
/* function streamTranscode(
|
||||
@@ -94,7 +94,7 @@ export async function attachScenePreviewGrid(scene: Scene): Promise<string | nul
|
||||
return null;
|
||||
}
|
||||
|
||||
- const gridFolder = path.resolve("tmp", "grid");
|
||||
+ const gridFolder = path.resolve(tempPath, "grid");
|
||||
const tmpFolder = path.resolve(gridFolder, "thumbs", randomUUID());
|
||||
await mkdirpAsync(tmpFolder);
|
||||
|
||||
diff --git a/server/utils/path.ts b/server/utils/path.ts
|
||||
index 05619e93..64964de8 100644
|
||||
--- a/server/utils/path.ts
|
||||
+++ b/server/utils/path.ts
|
||||
@@ -5,6 +5,7 @@ import { getConfig } from "../config";
|
||||
import { mkdirpSync } from "./fs/async";
|
||||
|
||||
const configFolder = process.env.PV_CONFIG_FOLDER || process.cwd();
|
||||
+export const tempPath = process.env.CACHE_DIRECTORY ?? "tmp";
|
||||
|
||||
export function libraryPath(str: string): string {
|
||||
return resolve(getConfig().persistence.libraryPath, "library", str);
|
||||
--
|
||||
2.47.0
|
||||
|
114
pkgs/by-name/po/porn-vault/package.nix
Normal file
114
pkgs/by-name/po/porn-vault/package.nix
Normal file
@ -0,0 +1,114 @@
|
||||
{
|
||||
fetchFromGitLab,
|
||||
fetchurl,
|
||||
rustPlatform,
|
||||
lib,
|
||||
pnpm_9,
|
||||
stdenvNoCC,
|
||||
nodejs_22,
|
||||
ffmpeg,
|
||||
imagemagick,
|
||||
makeWrapper,
|
||||
autoPatchelfHook,
|
||||
writeShellApplication,
|
||||
}:
|
||||
let
|
||||
izzy = rustPlatform.buildRustPackage rec {
|
||||
pname = "izzy";
|
||||
version = "2.0.1";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "porn-vault";
|
||||
repo = "izzy";
|
||||
rev = version;
|
||||
hash = "sha256-UauA5mZi5a5QF7d17pKSzvyaWbeSuFjBrXEAxR3wNkk=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
ln -s ${./Cargo.lock} Cargo.lock
|
||||
'';
|
||||
|
||||
cargoLock.lockFile = ./Cargo.lock;
|
||||
|
||||
meta = {
|
||||
description = "Rust In-Memory K-V Store with Redis-Style File Persistence and Secondary Indices";
|
||||
homepage = "https://gitlab.com/porn-vault/izzy";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = [ lib.maintainers.luNeder ];
|
||||
mainProgram = "izzy";
|
||||
};
|
||||
};
|
||||
pnpm = pnpm_9;
|
||||
nodejs = nodejs_22;
|
||||
in
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "porn-vault";
|
||||
version = "0.30.0-rc.11";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "porn-vault";
|
||||
repo = "porn-vault";
|
||||
rev = "4c6182c5825d85193cf67cb7cd927da2feaaecdb";
|
||||
hash = "sha256-wQ3dqLc0l2BmLGDYrbWxX2mPwO/Tqz0fY/fOQTEUv24=";
|
||||
};
|
||||
|
||||
pnpmDeps = pnpm.fetchDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
hash = "sha256-Xr9tRiP1hW+aFs9FnPvPkeJ0/LtJI57cjWY5bZQaRTQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
nodejs
|
||||
pnpm.configHook
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
patches = [
|
||||
./allow-use-of-systemd-temp-path.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace server/binaries/izzy.ts \
|
||||
--replace-fail 'chmodSync(izzyPath, "111");' ""
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
pnpm build
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dm644 package.json config.example.json remix.config.js -t $out/share/porn-vault
|
||||
cp -R public dist build node_modules graphql locale -t $out/share/porn-vault
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
makeWrapper "${lib.getExe nodejs}" "$out/bin/porn-vault" \
|
||||
--chdir "$out/share/porn-vault" \
|
||||
--add-flags "dist/index.js" \
|
||||
--set-default IZZY_PATH "${lib.getExe izzy}" \
|
||||
--prefix PATH : "${
|
||||
lib.makeBinPath [
|
||||
ffmpeg
|
||||
imagemagick
|
||||
izzy
|
||||
]
|
||||
}"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Porn-Vault is a self hosted organizer for adult videos and imagery.";
|
||||
homepage = "https://gitlab.com/porn-vault/porn-vault";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = [ lib.maintainers.luNeder ];
|
||||
inherit (nodejs.meta) platforms;
|
||||
mainProgram = "porn-vault";
|
||||
};
|
||||
})
|
Loading…
Reference in New Issue
Block a user