ripasso-cursive: cosmetic changes (#361736)
[NixPkgs.git] / pkgs / by-name / n8 / n8n / package.nix
blob83cbd4fa8fa9c10d85c23d6504371fd362e101e8
2   stdenv,
3   lib,
4   nixosTests,
5   fetchFromGitHub,
6   nodejs,
7   pnpm,
8   python3,
9   node-gyp,
10   cacert,
11   xcbuild,
12   libkrb5,
13   libmongocrypt,
14   postgresql,
15   makeWrapper,
16   nix-update-script,
19 stdenv.mkDerivation (finalAttrs: {
20   pname = "n8n";
21   version = "1.70.1";
23   src = fetchFromGitHub {
24     owner = "n8n-io";
25     repo = "n8n";
26     rev = "n8n@${finalAttrs.version}";
27     hash = "sha256-acbC6MO2wM9NsjqUqcs8jPNHfBg/P0wEYF5MxbnFhQQ=";
28   };
30   pnpmDeps = pnpm.fetchDeps {
31     inherit (finalAttrs) pname version src;
32     hash = "sha256-h2hIOVK9H5OlyhyyoRs113CbE4z4SIxVVPha0Ia9I4A=";
33   };
35   nativeBuildInputs = [
36     pnpm.configHook
37     python3 # required to build sqlite3 bindings
38     node-gyp # required to build sqlite3 bindings
39     cacert # required for rustls-native-certs (dependency of turbo build tool)
40     makeWrapper
41   ] ++ lib.optional stdenv.hostPlatform.isDarwin [ xcbuild ];
43   buildInputs = [
44     nodejs
45     libkrb5
46     libmongocrypt
47     postgresql
48   ];
50   buildPhase = ''
51     runHook preBuild
53     pushd node_modules/sqlite3
54     node-gyp rebuild
55     popd
57     # TODO: use deploy after resolved https://github.com/pnpm/pnpm/issues/5315
58     pnpm build --filter=n8n
60     runHook postBuild
61   '';
63   preInstall = ''
64     echo "Removing non-deterministic files"
66     rm -r $(find -type d -name .turbo)
67     rm node_modules/.modules.yaml
68     rm packages/nodes-base/dist/types/nodes.json
70     echo "Removed non-deterministic files"
71   '';
73   installPhase = ''
74     runHook preInstall
76     mkdir -p $out/{bin,lib/n8n}
77     mv {packages,node_modules} $out/lib/n8n
79     makeWrapper $out/lib/n8n/packages/cli/bin/n8n $out/bin/n8n \
80       --set N8N_RELEASE_TYPE "stable"
82     runHook postInstall
83   '';
85   passthru = {
86     tests = nixosTests.n8n;
87     updateScript = nix-update-script { };
88   };
90   dontStrip = true;
92   meta = {
93     description = "Free and source-available fair-code licensed workflow automation tool";
94     longDescription = ''
95       Free and source-available fair-code licensed workflow automation tool.
96       Easily automate tasks across different services.
97     '';
98     homepage = "https://n8n.io";
99     changelog = "https://github.com/n8n-io/n8n/releases/tag/${finalAttrs.src.rev}";
100     maintainers = with lib.maintainers; [
101       gepbird
102     ];
103     license = lib.licenses.sustainableUse;
104     mainProgram = "n8n";
105     platforms = lib.platforms.unix;
106   };