diff options
Diffstat (limited to 'pkgs/servers/homepage-dashboard')
-rw-r--r-- | pkgs/servers/homepage-dashboard/default.nix | 58 | ||||
-rw-r--r-- | pkgs/servers/homepage-dashboard/prerender_cache_path.patch | 18 |
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({ |