From 166ed9e82599a86b141be60ce271722faf82d39b Mon Sep 17 00:00:00 2001 From: m3tm3re
Date: Sat, 21 Feb 2026 18:30:27 +0100 Subject: [PATCH] fix: n8n build error --- pkgs/n8n/default.nix | 63 +++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/pkgs/n8n/default.nix b/pkgs/n8n/default.nix index 1527619..8931b37 100644 --- a/pkgs/n8n/default.nix +++ b/pkgs/n8n/default.nix @@ -1,22 +1,8 @@ -{ - stdenv, - lib, - nixosTests, - fetchFromGitHub, - nodejs, - pnpm_10, - fetchPnpmDeps, - pnpmConfigHook, - python3, - node-gyp, - cctools, - xcbuild, - libkrb5, - libmongocrypt, - libpq, - makeWrapper, -}: -stdenv.mkDerivation (finalAttrs: { +{ stdenv, lib, nixosTests, fetchFromGitHub, nodejs, pnpm_10, fetchPnpmDeps +, pnpmConfigHook, python3, node-gyp, cctools, xcbuild, libkrb5, libmongocrypt +, libpq, makeWrapper, }: +let python = python3.withPackages (ps: with ps; [ websockets ]); +in stdenv.mkDerivation (finalAttrs: { pname = "n8n"; version = "2.8.3"; @@ -34,17 +20,15 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-gX4pYiztKIRFbJNZhtQviWpp80teOzX1JaYKylGe4TY="; }; - nativeBuildInputs = - [ - pnpmConfigHook - pnpm_10 - python3 # required to build sqlite3 bindings - node-gyp # required to build sqlite3 bindings - makeWrapper - ] - ++ lib.optional stdenv.hostPlatform.isDarwin [cctools xcbuild]; + nativeBuildInputs = [ + pnpmConfigHook + pnpm_10 + python3 # required to build sqlite3 bindings + node-gyp # required to build sqlite3 bindings + makeWrapper + ] ++ lib.optional stdenv.hostPlatform.isDarwin [ cctools xcbuild ]; - buildInputs = [nodejs libkrb5 libmongocrypt libpq]; + buildInputs = [ nodejs libkrb5 libmongocrypt libpq ]; buildPhase = '' runHook preBuild @@ -80,11 +64,22 @@ stdenv.mkDerivation (finalAttrs: { runHook preInstall mkdir -p $out/{bin,lib/n8n} - mv {packages,node_modules} $out/lib/n8n + cp -r {packages,node_modules} $out/lib/n8n makeWrapper $out/lib/n8n/packages/cli/bin/n8n $out/bin/n8n \ --set N8N_RELEASE_TYPE "stable" + # JavaScript runner + makeWrapper ${nodejs}/bin/node $out/bin/n8n-task-runner \ + --add-flags "$out/lib/n8n/packages/@n8n/task-runner/dist/start.js" + + # Python runner + mkdir -p $out/lib/n8n-task-runner-python + cp -r packages/@n8n/task-runner-python/* $out/lib/n8n-task-runner-python/ + makeWrapper ${python}/bin/python $out/bin/n8n-task-runner-python \ + --add-flags "$out/lib/n8n-task-runner-python/src/main.py" \ + --prefix PYTHONPATH : "$out/lib/n8n-task-runner-python" + runHook postInstall ''; @@ -99,14 +94,16 @@ stdenv.mkDerivation (finalAttrs: { dontRewriteSymlinks = true; meta = { - description = "Free and source-available fair-code licensed workflow automation tool"; + description = + "Free and source-available fair-code licensed workflow automation tool"; longDescription = '' Free and source-available fair-code licensed workflow automation tool. Easily automate tasks across different services. ''; homepage = "https://n8n.io"; - changelog = "https://github.com/n8n-io/n8n/releases/tag/n8n@${finalAttrs.version}"; - maintainers = with lib.maintainers; [gepbird AdrienLemaire sweenu]; + changelog = + "https://github.com/n8n-io/n8n/releases/tag/n8n@${finalAttrs.version}"; + maintainers = with lib.maintainers; [ gepbird AdrienLemaire sweenu ]; license = lib.licenses.sustainableUse; mainProgram = "n8n"; platforms = lib.platforms.unix;