From 5dc91eeebba32192c2fb00c8ccd9c72bfd765bcd Mon Sep 17 00:00:00 2001 From: m3tam3re
Date: Fri, 10 Jul 2026 12:42:04 +0200 Subject: [PATCH] fix: update n8n overlay to 2.29.8 --- docs/packages/n8n.md | 2 +- overlays/mods/n8n.nix | 17 ++++++++++++--- tests/n8n-overlay-test.nix | 43 +++++++++++++++++++++++--------------- 3 files changed, 41 insertions(+), 21 deletions(-) diff --git a/docs/packages/n8n.md b/docs/packages/n8n.md index a17a5c1..b75e909 100644 --- a/docs/packages/n8n.md +++ b/docs/packages/n8n.md @@ -265,7 +265,7 @@ n8n worker ## Build Information -- **Version**: 2.4.1 +- **Version**: 2.29.8 - **Language**: TypeScript/JavaScript (Node.js) - **Package Manager**: pnpm - **License**: Sustainable Use (Fair-Code) diff --git a/overlays/mods/n8n.nix b/overlays/mods/n8n.nix index 568c5a9..3959587 100644 --- a/overlays/mods/n8n.nix +++ b/overlays/mods/n8n.nix @@ -1,21 +1,32 @@ {prev}: prev.n8n.overrideAttrs (finalAttrs: previousAttrs: { - version = "2.28.6"; + version = "2.29.8"; src = prev.fetchFromGitHub { owner = "n8n-io"; repo = "n8n"; tag = "n8n@${finalAttrs.version}"; - hash = "sha256-xll2dZon+WyJUXaCoel0htwgOGUqzpZvef/tDLTomZQ="; + hash = "sha256-+eiAdofrX1TRNFeD9MtTHt+XBH06c8NQHvTk6vrOU/k="; }; pnpmDeps = prev.fetchPnpmDeps { inherit (finalAttrs) pname version src; pnpm = prev.pnpm_10; fetcherVersion = 3; - hash = "sha256-SjmKXjxIuRY1uFbFLTMlXd0WW+3cVfu4TU+NoZtEYSo="; + hash = "sha256-j0IrYjVl83SzRo29rhEDCQLrt8kslWHdS7m4pG11DgA="; }; + 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 // { diff --git a/tests/n8n-overlay-test.nix b/tests/n8n-overlay-test.nix index ef18edb..ad49839 100644 --- a/tests/n8n-overlay-test.nix +++ b/tests/n8n-overlay-test.nix @@ -15,11 +15,15 @@ modifiedPkgs = mkPkgs [self.overlays.modifications]; defaultPkgs = mkPkgs [self.overlays.default]; - expectedVersion = "2.28.6"; - expectedSrcHash = "sha256-xll2dZon+WyJUXaCoel0htwgOGUqzpZvef/tDLTomZQ="; - expectedPnpmHash = "sha256-SjmKXjxIuRY1uFbFLTMlXd0WW+3cVfu4TU+NoZtEYSo="; + expectedVersion = "2.29.8"; + expectedSrcHash = "sha256-+eiAdofrX1TRNFeD9MtTHt+XBH06c8NQHvTk6vrOU/k="; + expectedPnpmHash = "sha256-j0IrYjVl83SzRo29rhEDCQLrt8kslWHdS7m4pG11DgA="; expectedChangelog = "https://github.com/n8n-io/n8n/releases/tag/n8n@${expectedVersion}"; - expectedXlsxIntegrity = "sha512-+nKZ39+nvK7Qq6i0PvWWRA4j/EkfWOtkP/YhMtupm+lJIiHxUrgTr1CcKv1nBk1rHtkRRQ3O2+Ih/q/sA+FXZA=="; + expectedXlsxTarball = "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz"; + expectedRootNodeModuleSymlinks = [ + "ln -s .pnpm/node_modules/sass-embedded node_modules/sass-embedded" + "ln -s .pnpm/node_modules/sqlite3 node_modules/sqlite3" + ]; checkN8nOverride = overlayName: package: if package.version != expectedVersion @@ -32,19 +36,22 @@ then throw "${overlayName} n8n changelog is ${package.meta.changelog}, expected ${expectedChangelog}" else "ok"; - checkPhasesInherited = overlayName: package: - if (package.preBuild or null) != (upstreamPkgs.n8n.preBuild or null) - then throw "${overlayName} n8n preBuild should be inherited from upstream nixpkgs" - else if package.buildPhase != upstreamPkgs.n8n.buildPhase + checkBuildPhaseInherited = overlayName: package: + if package.buildPhase != upstreamPkgs.n8n.buildPhase then throw "${overlayName} n8n buildPhase should be inherited from upstream nixpkgs" else "ok"; - checkXlsxIntegrity = overlayName: package: - pkgs.runCommand "${overlayName}-n8n-xlsx-integrity-test" { - inherit expectedXlsxIntegrity; + checkRootNodeModuleSymlinks = overlayName: package: + if !(pkgs.lib.all (symlink: pkgs.lib.hasInfix symlink (package.preBuild or "")) expectedRootNodeModuleSymlinks) + then throw "${overlayName} n8n preBuild should create root node_modules symlinks required by the upstream buildPhase" + else "ok"; + + checkXlsxTarballLock = overlayName: package: + pkgs.runCommand "${overlayName}-n8n-xlsx-tarball-lock-test" { + inherit expectedXlsxTarball; } '' - grep -F "xlsx@https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz:" ${package.src}/pnpm-lock.yaml - grep -F "resolution: {integrity: $expectedXlsxIntegrity, tarball: https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz}" ${package.src}/pnpm-lock.yaml + grep -F "xlsx@$expectedXlsxTarball:" ${package.src}/pnpm-lock.yaml + grep -F "resolution: {tarball: $expectedXlsxTarball}" ${package.src}/pnpm-lock.yaml touch $out ''; in @@ -59,10 +66,12 @@ in else "ok"; modificationsOverlayN8n = checkN8nOverride "overlays.modifications" modifiedPkgs.n8n; defaultOverlayN8n = checkN8nOverride "overlays.default" defaultPkgs.n8n; - modificationsOverlayPhases = checkPhasesInherited "overlays.modifications" modifiedPkgs.n8n; - defaultOverlayPhases = checkPhasesInherited "overlays.default" defaultPkgs.n8n; - modificationsOverlayXlsxIntegrity = checkXlsxIntegrity "overlays.modifications" modifiedPkgs.n8n; - defaultOverlayXlsxIntegrity = checkXlsxIntegrity "overlays.default" defaultPkgs.n8n; + modificationsOverlayBuildPhase = checkBuildPhaseInherited "overlays.modifications" modifiedPkgs.n8n; + defaultOverlayBuildPhase = checkBuildPhaseInherited "overlays.default" defaultPkgs.n8n; + modificationsOverlayRootNodeModuleSymlinks = checkRootNodeModuleSymlinks "overlays.modifications" modifiedPkgs.n8n; + defaultOverlayRootNodeModuleSymlinks = checkRootNodeModuleSymlinks "overlays.default" defaultPkgs.n8n; + modificationsOverlayXlsxTarballLock = checkXlsxTarballLock "overlays.modifications" modifiedPkgs.n8n; + defaultOverlayXlsxTarballLock = checkXlsxTarballLock "overlays.default" defaultPkgs.n8n; } '' touch $out ''