{ lib, pkgs, ... }: { services.n8n = { enable = true; # TODO webhookUrl = "http://n8n.elmo.mou.fo"; }; systemd.services.n8n = { environment = { # services.n8n.settings is deprecated for environment variables. N8N_CONFIG_FILES = lib.mkForce null; N8N_LISTEN_ADDRESS = "::1"; N8N_PORT = "7856"; N8N_RUNNERS_ENABLED = "true"; N8N_RUNNERS_BROKER_LISTEN_ADDRESS = "::1"; N8N_RUNNERS_BROKER_PORT = "7857"; # TODO N8N_SECURE_COOKIE = "false"; # https://docs.n8n.io/hosting/configuration/configuration-examples/isolation/ N8N_TEMPLATES_ENABLED = "false"; }; # Override the single instance of pkgs.n8n to use a custom derivation. # Looks like n8n build fails with less than 16GB of memory. # https://github.com/n8n-io/n8n/issues/14736 serviceConfig.ExecStart = let pkg = pkgs.n8n.overrideAttrs(_: { # https://github.com/n8n-io/n8n/blob/53594a90e438f25cea40b6e2510a2ba7c7ee9c32/.github/workflows/docker-build-push.yml NODE_OPTIONS = "--max-old-space-size=7168"; }); in lib.mkForce "${pkg}/bin/n8n"; }; services.nginx.virtualHosts."n8n.elmo.mou.fo" = { # TODO enableACME = true; # TODO forceSSL = true; locations."/" = { proxyPass = "http://[::1]:7856"; proxyWebsockets = true; }; }; }