{prev}: let xlsxTarball = "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz"; xlsxIntegrity = "sha512-+nKZ39+nvK7Qq6i0PvWWRA4j/EkfWOtkP/YhMtupm+lJIiHxUrgTr1CcKv1nBk1rHtkRRQ3O2+Ih/q/sA+FXZA=="; patchXlsxLockfile = '' substituteInPlace pnpm-lock.yaml \ --replace-fail \ "resolution: {tarball: ${xlsxTarball}}" \ "resolution: {integrity: ${xlsxIntegrity}, tarball: ${xlsxTarball}}" ''; in prev.n8n.overrideAttrs (finalAttrs: previousAttrs: { version = "2.29.8"; src = prev.fetchFromGitHub { owner = "n8n-io"; repo = "n8n"; tag = "n8n@${finalAttrs.version}"; hash = "sha256-+eiAdofrX1TRNFeD9MtTHt+XBH06c8NQHvTk6vrOU/k="; }; pnpmDeps = prev.fetchPnpmDeps { inherit (finalAttrs) pname version src; pnpm = prev.pnpm_10; fetcherVersion = 3; prePnpmInstall = patchXlsxLockfile; hash = "sha256-XMPvxTb7cKz3XmJFOAqN42B2VGyzyFPrF0eUU8g/KPU="; }; prePnpmInstall = (previousAttrs.prePnpmInstall or "") + patchXlsxLockfile; preBuild = (previousAttrs.preBuild or "") + '' if [ ! -e node_modules/sass-embedded ] && [ -e node_modules/.pnpm/node_modules/sass-embedded ]; then ln -s .pnpm/node_modules/sass-embedded node_modules/sass-embedded fi if [ ! -e node_modules/sqlite3 ] && [ -e node_modules/.pnpm/node_modules/sqlite3 ]; then ln -s .pnpm/node_modules/sqlite3 node_modules/sqlite3 fi ''; meta = previousAttrs.meta // { changelog = "https://github.com/n8n-io/n8n/releases/tag/n8n@${finalAttrs.version}"; }; })