diff --git a/pkgs/by-name/gr/grimoire/package.nix b/pkgs/by-name/gr/grimoire/package.nix index a4facc8..1776de9 100644 --- a/pkgs/by-name/gr/grimoire/package.nix +++ b/pkgs/by-name/gr/grimoire/package.nix @@ -15,9 +15,8 @@ callPackage, makeDesktopItem, copyDesktopItems, -}: -let - sources = callPackage ../../../../_sources/generated.nix { }; +}: let + sources = callPackage ../../../../_sources/generated.nix {}; src = sources.grimoire.src; version = src.rev; @@ -27,14 +26,14 @@ let owner = "Slush97"; repo = "grimoire-social"; rev = "main"; - hash = "sha256-f+wUZOR7dqigxd/IZtay1BrLS5rcSnaDage3NXxqsPE="; + hash = "sha256-AR2rTNDuge19t+VAqL/I6dmB8f5niIqINmNnRL70k94="; }; pnpmDeps = pnpm.fetchDeps { pname = "grimoire"; inherit version src; fetcherVersion = 4; - hash = "sha256-Mqvvemc3oDCiuY/UnDOc73P+dLqMEFnwQotodVhrPao="; + hash = "sha256-7Lh4Y3sr50tIO7vsVwfJNC2zKyiqMz6EO81egS/DC2k="; # hash = lib.fakeHash; }; @@ -42,107 +41,107 @@ let name = "grimoire"; exec = "grimoire %u"; desktopName = "Grimoire"; - categories = [ "Utility" ]; - mimeTypes = [ "x-scheme-handler/grimoire" ]; + categories = ["Utility"]; + mimeTypes = ["x-scheme-handler/grimoire"]; }; in -stdenv.mkDerivation { - pname = "grimoire"; - inherit version src; + stdenv.mkDerivation { + pname = "grimoire"; + inherit version src; - nativeBuildInputs = [ - nodejs_22 - pnpm - pnpm.configHook - python3 - gcc - gnumake - pkg-config - makeWrapper - electron_41 - copyDesktopItems - ]; + nativeBuildInputs = [ + nodejs_22 + pnpm + pnpm.configHook + python3 + gcc + gnumake + pkg-config + makeWrapper + electron_41 + copyDesktopItems + ]; - desktopItems = [ desktopItem ]; + desktopItems = [desktopItem]; - buildInputs = [ - sqlite - ]; + buildInputs = [ + sqlite + ]; - inherit pnpmDeps; + inherit pnpmDeps; - env = { - GRIMOIRE_SOCIAL_BASE_URL = "https://grimoire-social.slusheliott.workers.dev"; - # electron-builder must not try to fetch an Electron binary over the - # network; we hand it the Nix one via --config.electronDist below. - ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; - }; + env = { + GRIMOIRE_SOCIAL_BASE_URL = "https://grimoire-social.slusheliott.workers.dev"; + # electron-builder must not try to fetch an Electron binary over the + # network; we hand it the Nix one via --config.electronDist below. + ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; + }; - postPatch = '' - cp -r ${grimoire-social-src} ../grimoire-social - chmod -R u+w ../grimoire-social + postPatch = '' + cp -r ${grimoire-social-src} ../grimoire-social + chmod -R u+w ../grimoire-social - mkdir -p resources/vpkmerge - cp ${vpkmerge}/bin/vpkmerge resources/vpkmerge/vpkmerge-linux-x86_64 - chmod +x resources/vpkmerge/vpkmerge-linux-x86_64 - ''; + mkdir -p resources/vpkmerge + cp ${vpkmerge}/bin/vpkmerge resources/vpkmerge/vpkmerge-linux-x86_64 + chmod +x resources/vpkmerge/vpkmerge-linux-x86_64 + ''; - buildPhase = '' - runHook preBuild + buildPhase = '' + runHook preBuild - mkdir -p ../grimoire-social/node_modules - ln -sfn "$(realpath node_modules/zod)" ../grimoire-social/node_modules/zod + mkdir -p ../grimoire-social/node_modules + ln -sfn "$(realpath node_modules/zod)" ../grimoire-social/node_modules/zod - # Rebuild the better-sqlite3 native addon against the Electron ABI. We do - # this ourselves (and disable electron-builder's own rebuild below) so no - # network fetch of Electron headers is needed inside the sandbox. - ( - cd node_modules/better-sqlite3 - patch -p1 < ${./patches/better-sqlite3-thistogetthis.patch} - HOME="$TMPDIR" node \ - "${nodejs_22}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" \ - rebuild \ - --nodedir="${electron_41.headers}" - ) + # Rebuild the better-sqlite3 native addon against the Electron ABI. We do + # this ourselves (and disable electron-builder's own rebuild below) so no + # network fetch of Electron headers is needed inside the sandbox. + ( + cd node_modules/better-sqlite3 + patch -p1 < ${./patches/better-sqlite3-thistogetthis.patch} + HOME="$TMPDIR" node \ + "${nodejs_22}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" \ + rebuild \ + --nodedir="${electron_41.headers}" + ) - # Package the app the same way upstream CI does (release.yml): - # `electron-vite build && electron-builder`. We stop at the unpacked - # `--dir` output instead of building AppImage/deb installers, then wrap - # the Nix Electron around the produced app.asar. Building through - # electron-builder (rather than launching Electron on the raw dist/) - # makes `app.isPackaged` true, which is what disables the dev-only - # DevTools auto-open and the dev vpkmerge lookup path. - export HOME="$TMPDIR" - pnpm exec electron-vite build - pnpm exec electron-builder --linux dir \ - --config.npmRebuild=false \ - --config.electronDist=${electron_41.dist} \ - --config.electronVersion=${electron_41.version} + # Package the app the same way upstream CI does (release.yml): + # `electron-vite build && electron-builder`. We stop at the unpacked + # `--dir` output instead of building AppImage/deb installers, then wrap + # the Nix Electron around the produced app.asar. Building through + # electron-builder (rather than launching Electron on the raw dist/) + # makes `app.isPackaged` true, which is what disables the dev-only + # DevTools auto-open and the dev vpkmerge lookup path. + export HOME="$TMPDIR" + pnpm exec electron-vite build + pnpm exec electron-builder --linux dir \ + --config.npmRebuild=false \ + --config.electronDist=${electron_41.dist} \ + --config.electronVersion=${electron_41.version} - runHook postBuild - ''; + runHook postBuild + ''; - installPhase = '' - runHook preInstall + installPhase = '' + runHook preInstall - mkdir -p $out/lib/grimoire - # electron-builder emits the packaged app (app.asar, app.asar.unpacked, - # and extraResources such as vpkmerge) under release/linux-unpacked/resources. - cp -r release/linux-unpacked/resources $out/lib/grimoire/resources + mkdir -p $out/lib/grimoire + # electron-builder emits the packaged app (app.asar, app.asar.unpacked, + # and extraResources such as vpkmerge) under release/linux-unpacked/resources. + cp -r release/linux-unpacked/resources $out/lib/grimoire/resources - # Launch the Nix Electron against the packaged asar. process.resourcesPath - # resolves to the directory holding app.asar, so the bundled vpkmerge at - # resources/vpkmerge/ is found at runtime. - mkdir -p $out/bin - makeWrapper ${electron_41}/bin/electron $out/bin/grimoire \ - --add-flags "$out/lib/grimoire/resources/app.asar" \ - --set NODE_ENV production + # Launch the Nix Electron against the packaged asar. process.resourcesPath + # resolves to the directory holding app.asar, so the bundled vpkmerge at + # resources/vpkmerge/ is found at runtime. + mkdir -p $out/bin + makeWrapper ${electron_41}/bin/electron $out/bin/grimoire \ + --add-flags "$out/lib/grimoire/resources/app.asar" \ + --set NODE_ENV production - runHook postInstall - ''; + runHook postInstall + ''; - meta = { - description = "Grimoire — Electron-based mod manager"; - platforms = [ "x86_64-linux" ]; - }; -} + meta = { + description = "Grimoire — Electron-based mod manager"; + platforms = ["x86_64-linux"]; + }; + }