about summary refs log tree commit diff
path: root/pkgs/servers/homepage-dashboard
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/servers/homepage-dashboard')
-rw-r--r--pkgs/servers/homepage-dashboard/default.nix58
-rw-r--r--pkgs/servers/homepage-dashboard/prerender_cache_path.patch18
2 files changed, 52 insertions, 24 deletions
diff --git a/pkgs/servers/homepage-dashboard/default.nix b/pkgs/servers/homepage-dashboard/default.nix
index af35e6edfe3d2..96c58a598187d 100644
--- a/pkgs/servers/homepage-dashboard/default.nix
+++ b/pkgs/servers/homepage-dashboard/default.nix
@@ -1,21 +1,23 @@
-{ buildNpmPackage
-, fetchFromGitHub
-, nodePackages
-, python3
-, stdenv
-, cctools
-, IOKit
-, lib
-, nixosTests
-, enableLocalIcons ? false
-, nix-update-script
+{
+  buildNpmPackage,
+  fetchFromGitHub,
+  nodePackages,
+  python3,
+  stdenv,
+  cctools,
+  IOKit,
+  lib,
+  nixosTests,
+  enableLocalIcons ? false,
+  nix-update-script,
+  git,
 }:
 let
   dashboardIcons = fetchFromGitHub {
     owner = "walkxcode";
     repo = "dashboard-icons";
-    rev = "a02a5999fe56948671721da8b0830cdd5b609ed7"; # Until 2024-02-25
-    hash = "sha256-s0Doh4j6CH66fZoQKMt4yc7aLStNFGMVoDp5dvs7+pk=";
+    rev = "be82e22c418f5980ee2a13064d50f1483df39c8c"; # Until 2024-07-21
+    hash = "sha256-z69DKzKhCVNnNHjRM3dX/DD+WJOL9wm1Im1nImhBc9Y=";
   };
 
   installLocalIcons = ''
@@ -27,16 +29,16 @@ let
 in
 buildNpmPackage rec {
   pname = "homepage-dashboard";
-  version = "0.9.2";
+  version = "0.9.10";
 
   src = fetchFromGitHub {
     owner = "gethomepage";
     repo = "homepage";
     rev = "v${version}";
-    hash = "sha256-4nSlL4m0SL3B7+lI/BGt1aY1UE46la7/4NU4BaJ7EwQ=";
+    hash = "sha256-qDbYgitMbjOMIZUyQuFSNAyb/ZRAcStm/jDrsIutKno=";
   };
 
-  npmDepsHash = "sha256-jYZUVwrOxoAbfHHSBkN5IlYhC6yZVVwRoZErkbYrjUs=";
+  npmDepsHash = "sha256-gAti4y4Ios7XjJ3nVOhzjwPzcAC2upODZ64qQjx17JE=";
 
   preBuild = ''
     mkdir -p config
@@ -48,15 +50,11 @@ buildNpmPackage rec {
     patchShebangs .next/standalone/server.js
   '';
 
-  nativeBuildInputs = lib.optionals stdenv.isDarwin [
-    cctools
-  ];
+  nativeBuildInputs = [ git ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ cctools ];
 
   buildInputs = [
     nodePackages.node-gyp-build
-  ] ++ lib.optionals stdenv.isDarwin [
-    IOKit
-  ];
+  ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ IOKit ];
 
   env.PYTHON = "${python3}/bin/python";
 
@@ -73,9 +71,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 ""}
 
@@ -99,6 +109,6 @@ buildNpmPackage rec {
     license = lib.licenses.gpl3;
     maintainers = with lib.maintainers; [ jnsgruk ];
     platforms = lib.platforms.all;
-    broken = stdenv.isDarwin;
+    broken = stdenv.hostPlatform.isDarwin;
   };
 }
diff --git a/pkgs/servers/homepage-dashboard/prerender_cache_path.patch b/pkgs/servers/homepage-dashboard/prerender_cache_path.patch
new file mode 100644
index 0000000000000..05746b5601c44
--- /dev/null
+++ b/pkgs/servers/homepage-dashboard/prerender_cache_path.patch
@@ -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({