From 6a2f59785b1dbc2f712d58aa34db196b04b3b7f7 Mon Sep 17 00:00:00 2001 From: Doloro1978 Date: Fri, 29 May 2026 11:47:53 +0100 Subject: [PATCH] add: grimorie (deadlock mod manager) --- pkgs/by-name/gr/grimorie/package.nix | 129 +++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 pkgs/by-name/gr/grimorie/package.nix diff --git a/pkgs/by-name/gr/grimorie/package.nix b/pkgs/by-name/gr/grimorie/package.nix new file mode 100644 index 0000000..0c4407e --- /dev/null +++ b/pkgs/by-name/gr/grimorie/package.nix @@ -0,0 +1,129 @@ +{ + lib, + stdenv, + fetchFromGitHub, + fetchurl, + nodejs_22, + pnpm, + python3, + gcc, + gnumake, + pkg-config, + makeWrapper, + electron_39, + sqlite, +}: +let + version = "1.13.1"; + + src = fetchFromGitHub { + owner = "Slush97"; + repo = "grimoire"; + rev = "v${version}"; + hash = "sha256-GSl0whxFtw6tHKBLB3yOulpQGAw8Hqn+2ipj+1zQHLY="; + }; + + grimoire-social-src = fetchFromGitHub { + owner = "Slush97"; + repo = "grimoire-social"; + rev = "main"; + hash = "sha256-f+wUZOR7dqigxd/IZtay1BrLS5rcSnaDage3NXxqsPE="; + }; + + pnpmDeps = pnpm.fetchDeps { + pname = "grimoire"; + inherit version src; + fetcherVersion = 2; + hash = "sha256-iFxXEb5iKRM0Bp+YrQZhsGXHa0pfPMWQDah/SUBJVBE="; + }; + + vpkmerge-bin = fetchurl { + url = "https://github.com/Slush97/vpkmerge/releases/download/v0.4.0/vpkmerge-linux-x86_64"; + sha256 = "6860a989335afec0aa19544cf30cbebac9dc6b88af3f3a8d9c3340a6435fa045"; + }; +in +stdenv.mkDerivation { + pname = "grimoire"; + inherit version src; + + nativeBuildInputs = [ + nodejs_22 + pnpm + pnpm.configHook + python3 + gcc + gnumake + pkg-config + makeWrapper + electron_39 + ]; + + buildInputs = [ + sqlite + ]; + + inherit pnpmDeps; + + env.GRIMOIRE_SOCIAL_BASE_URL = "https://grimoire-social.slusheliott.workers.dev"; + + postPatch = '' + cp -r ${grimoire-social-src} ../grimoire-social + chmod -R u+w ../grimoire-social + + mkdir -p resources/vpkmerge + cp ${vpkmerge-bin} resources/vpkmerge/vpkmerge-linux-x86_64 + chmod +x resources/vpkmerge/vpkmerge-linux-x86_64 + ''; + + buildPhase = '' + runHook preBuild + + mkdir -p ../grimoire-social/node_modules + ln -sfn "$(realpath node_modules/zod)" ../grimoire-social/node_modules/zod + + ( + cd node_modules/better-sqlite3 + HOME="$TMPDIR" node \ + "${nodejs_22}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" \ + rebuild \ + --nodedir="${electron_39.headers}" + ) + + pnpm exec electron-vite build + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/lib/grimoire + cp -r dist $out/lib/grimoire/dist + + mkdir -p $out/lib/grimoire/resources + cp -r resources/vpkmerge $out/lib/grimoire/resources/vpkmerge + echo '{"name":"grimoire","version":"${version}","main":"dist/main/index.js"}' \ + > $out/lib/grimoire/package.json + + cp -r node_modules $out/lib/grimoire/node_modules + + rm -rf "$out/lib/grimoire/node_modules/@grimoire" + + find "$out/lib/grimoire/node_modules" -type l | while read -r link; do + [ -e "$link" ] || rm -f "$link" + done + + mkdir -p $out/bin + makeWrapper ${electron_39}/bin/electron $out/bin/grimoire \ + --add-flags "$out/lib/grimoire" \ + --set ELECTRON_RESOURCES_PATH "$out/lib/grimoire" \ + --set NODE_ENV production + + runHook postInstall + ''; + + meta = { + description = "Grimoire — Electron-based mod manager"; + platforms = [ "x86_64-linux" ]; + }; +}