From ce751b2e38309df953936506fa5bcfa190f84830 Mon Sep 17 00:00:00 2001 From: Anton Tetov Date: Fri, 13 Jun 2025 18:38:10 +0200 Subject: [PATCH] karakeep: changing cache dir location away from nix store --- nixos/modules/services/web-apps/karakeep.nix | 6 +++++- pkgs/by-name/ka/karakeep/package.nix | 6 ++++++ .../patches/cache-from-env-not-nix-store.patch | 14 ++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 pkgs/by-name/ka/karakeep/patches/cache-from-env-not-nix-store.patch diff --git a/nixos/modules/services/web-apps/karakeep.nix b/nixos/modules/services/web-apps/karakeep.nix index 7867381007ac..3dda9667b02d 100644 --- a/nixos/modules/services/web-apps/karakeep.nix +++ b/nixos/modules/services/web-apps/karakeep.nix @@ -169,11 +169,15 @@ in "karakeep-workers.service" ]; partOf = [ "karakeep.service" ]; - environment = karakeepEnv; + environment = { + NEXT_CACHE_DIR = "%C/karakeep"; + } + // karakeepEnv; serviceConfig = { ExecStart = "${cfg.package}/lib/karakeep/start-web"; User = "karakeep"; Group = "karakeep"; + CacheDirectory = "karakeep"; StateDirectory = "karakeep"; EnvironmentFile = environmentFiles; PrivateTmp = "yes"; diff --git a/pkgs/by-name/ka/karakeep/package.nix b/pkgs/by-name/ka/karakeep/package.nix index f85048581e5c..dfd42dc7b7c6 100644 --- a/pkgs/by-name/ka/karakeep/package.nix +++ b/pkgs/by-name/ka/karakeep/package.nix @@ -80,6 +80,12 @@ stdenv.mkDerivation (finalAttrs: { runHook postBuild ''; + preInstall = '' + # provide a environment variable to override the cache directory + # https://github.com/vercel/next.js/discussions/58864 + patch -p1 -i ${./patches/cache-from-env-not-nix-store.patch} + ''; + installPhase = '' runHook preInstall diff --git a/pkgs/by-name/ka/karakeep/patches/cache-from-env-not-nix-store.patch b/pkgs/by-name/ka/karakeep/patches/cache-from-env-not-nix-store.patch new file mode 100644 index 000000000000..7be41dea8e7c --- /dev/null +++ b/pkgs/by-name/ka/karakeep/patches/cache-from-env-not-nix-store.patch @@ -0,0 +1,14 @@ +diff --git a/apps/web/.next/standalone/node_modules/next/dist/server/image-optimizer.js b/apps/web/.next/standalone/node_modules/next/dist/server/image-optimizer.js +index cba8876..c3d7c43 100644 +--- a/apps/web/.next/standalone/node_modules/next/dist/server/image-optimizer.js ++++ b/apps/web/.next/standalone/node_modules/next/dist/server/image-optimizer.js +@@ -409,7 +409,8 @@ class ImageOptimizerCache { + ]); + } + constructor({ distDir, nextConfig }){ +- this.cacheDir = (0, _path.join)(distDir, "cache", "images"); ++ const cacheDir = process.env["NEXT_CACHE_DIR"] || (0, _path.join)(distDir, "cache"); ++ this.cacheDir = (0, _path.join)(cacheDir, "images"); + this.nextConfig = nextConfig; + } + async get(cacheKey) {