xcursor-pro: init at 2.0.2 (#335188)
[NixPkgs.git] / pkgs / by-name / po / porn-vault / package.nix
blob68117be33e72db6e5d48c8988171d75b334eab73
2   fetchFromGitLab,
3   fetchurl,
4   rustPlatform,
5   lib,
6   pnpm_9,
7   stdenvNoCC,
8   nodejs_22,
9   ffmpeg,
10   imagemagick,
11   makeWrapper,
12   autoPatchelfHook,
13   writeShellApplication,
15 let
16   izzy = rustPlatform.buildRustPackage rec {
17     pname = "izzy";
18     version = "2.0.1";
20     src = fetchFromGitLab {
21       owner = "porn-vault";
22       repo = "izzy";
23       rev = version;
24       hash = "sha256-UauA5mZi5a5QF7d17pKSzvyaWbeSuFjBrXEAxR3wNkk=";
25     };
27     postPatch = ''
28       ln -s ${./Cargo.lock} Cargo.lock
29     '';
31     cargoLock.lockFile = ./Cargo.lock;
33     meta = {
34       description = "Rust In-Memory K-V Store with Redis-Style File Persistence and Secondary Indices";
35       homepage = "https://gitlab.com/porn-vault/izzy";
36       license = lib.licenses.gpl3Plus;
37       maintainers = [ lib.maintainers.luNeder ];
38       mainProgram = "izzy";
39     };
40   };
41   pnpm = pnpm_9;
42   nodejs = nodejs_22;
44 stdenvNoCC.mkDerivation (finalAttrs: {
45   pname = "porn-vault";
46   version = "0.30.0-rc.11";
48   src = fetchFromGitLab {
49     owner = "porn-vault";
50     repo = "porn-vault";
51     rev = "4c6182c5825d85193cf67cb7cd927da2feaaecdb";
52     hash = "sha256-wQ3dqLc0l2BmLGDYrbWxX2mPwO/Tqz0fY/fOQTEUv24=";
53   };
55   pnpmDeps = pnpm.fetchDeps {
56     inherit (finalAttrs) pname version src;
57     hash = "sha256-Xr9tRiP1hW+aFs9FnPvPkeJ0/LtJI57cjWY5bZQaRTQ=";
58   };
60   nativeBuildInputs = [
61     nodejs
62     pnpm.configHook
63     makeWrapper
64   ];
66   patches = [
67     ./allow-use-of-systemd-temp-path.patch
68   ];
70   postPatch = ''
71     substituteInPlace server/binaries/izzy.ts \
72       --replace-fail 'chmodSync(izzyPath, "111");' ""
73   '';
75   buildPhase = ''
76     runHook preBuild
78     pnpm build
80     runHook postBuild
81   '';
83   installPhase = ''
84     runHook preInstall
86     install -Dm644 package.json config.example.json remix.config.js -t $out/share/porn-vault
87     cp -R public dist build node_modules graphql locale -t $out/share/porn-vault
89     runHook postInstall
90   '';
92   preFixup = ''
93     makeWrapper "${lib.getExe nodejs}" "$out/bin/porn-vault" \
94       --chdir "$out/share/porn-vault" \
95       --add-flags "dist/index.js" \
96       --set-default IZZY_PATH "${lib.getExe izzy}" \
97       --prefix PATH : "${
98         lib.makeBinPath [
99           ffmpeg
100           imagemagick
101           izzy
102         ]
103       }"
104   '';
106   meta = {
107     description = "Porn-Vault is a self hosted organizer for adult videos and imagery.";
108     homepage = "https://gitlab.com/porn-vault/porn-vault";
109     license = lib.licenses.gpl3Plus;
110     maintainers = [ lib.maintainers.luNeder ];
111     inherit (nodejs.meta) platforms;
112     mainProgram = "porn-vault";
113   };