homepage-dashboard: patch to avoid unwritable prerender cache

This commit introduces the patching of the `dist` directory
of NextJS. Without this, homepage-dashboard errors when trying to
write its prerender cache.

This patch ensures that the cache implementation respects the env
variable `HOMEPAGE_CACHE_DIR`, which is set by default in the
wrapper below.
This commit is contained in:
Jon Seager 2024-08-28 10:02:00 +01:00
parent 004e38bd5b
commit 41f0ed5c0e
No known key found for this signature in database
2 changed files with 33 additions and 2 deletions

View File

@ -10,6 +10,7 @@
nixosTests,
enableLocalIcons ? false,
nix-update-script,
git,
}:
let
dashboardIcons = fetchFromGitHub {
@ -49,7 +50,7 @@ buildNpmPackage rec {
patchShebangs .next/standalone/server.js
'';
nativeBuildInputs = lib.optionals stdenv.isDarwin [ cctools ];
nativeBuildInputs = [ git ] ++ lib.optionals stdenv.isDarwin [ cctools ];
buildInputs = [ nodePackages.node-gyp-build ] ++ lib.optionals stdenv.isDarwin [ IOKit ];
@ -68,9 +69,21 @@ buildNpmPackage rec {
chmod +x $out/share/homepage/server.js
# This patch must be applied here, as it's patching the `dist` directory
# of NextJS. Without this, homepage-dashboard errors when trying to
# write its prerender cache.
#
# This patch ensures that the cache implementation respects the env
# variable `HOMEPAGE_CACHE_DIR`, which is set by default in the
# wrapper below.
pushd $out
git apply ${./prerender_cache_path.patch}
popd
makeWrapper $out/share/homepage/server.js $out/bin/homepage \
--set-default PORT 3000 \
--set-default HOMEPAGE_CONFIG_DIR /var/lib/homepage-dashboard
--set-default HOMEPAGE_CONFIG_DIR /var/lib/homepage-dashboard \
--set-default HOMEPAGE_CACHE_DIR /var/cache/homepage-dashboard
${if enableLocalIcons then installLocalIcons else ""}

View File

@ -0,0 +1,18 @@
diff --git a/share/homepage/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js b/share/homepage/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js
index b1b74d8..a46c80b 100644
--- a/share/homepage/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js
+++ b/share/homepage/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js
@@ -5,11 +5,12 @@ Object.defineProperty(exports, "__esModule", {
exports.default = void 0;
var _lruCache = _interopRequireDefault(require("next/dist/compiled/lru-cache"));
var _path = _interopRequireDefault(require("../../../shared/lib/isomorphic/path"));
+var path = require('node:path');
class FileSystemCache {
constructor(ctx){
this.fs = ctx.fs;
this.flushToDisk = ctx.flushToDisk;
- this.serverDistDir = ctx.serverDistDir;
+ this.serverDistDir = path.join(process.env.HOMEPAGE_CACHE_DIR, "homepage");
this.appDir = !!ctx._appDir;
if (ctx.maxMemoryCacheSize) {
this.memoryCache = new _lruCache.default({