Add n8n service

This commit is contained in:
pazpi 2025-12-03 15:48:10 +01:00
parent 81bee0a7b9
commit 54fc411e13
8 changed files with 186 additions and 223 deletions

View file

@ -62,6 +62,12 @@ in
host = p.hosts.immich;
};
n8n.proxy = {
enable = true;
domain = p.domain.public;
host = p.hosts.n8n;
};
media-mgr.proxy = {
enable = true;
domain = p.domains.public;

View file

@ -17,9 +17,9 @@ let
}
);
pkgs =
system:
import nixpkgs {
mkPkgs =
nixpkgsSrc: system:
import nixpkgsSrc {
inherit system;
overlays = [
agenixOverlay
@ -28,243 +28,85 @@ let
config.allowUnfree = true;
};
pkgs-unstable =
system:
import nixpkgs-unstable {
inherit system;
overlays = [
agenixOverlay
customOverlays
];
config.allowUnfree = true;
# Helper function to create a Proxmox LXC host
mkLXC =
{
hostModule,
unstable ? false,
system ? "x86_64-linux",
extraModules ? [ ],
specialArgs ? { },
}:
let
nixpkgsSrc = if unstable then nixpkgs-unstable else nixpkgs;
in
nixpkgsSrc.lib.nixosSystem {
pkgs = mkPkgs nixpkgsSrc system;
modules = [
# Base modules for all hosts
authentik-nix.nixosModules.default
../modules
# Proxmox LXC support
"${nixpkgs}/nixos/modules/virtualisation/proxmox-lxc.nix"
../modules/virtualisation/proxmox.nix
# Agenix for secrets
agenix.nixosModules.default
# Host-specific module
hostModule
]
++ extraModules;
inherit specialArgs;
};
nodeBaseModules = {
imports = [
# lix-module.nixosModules.default
authentik-nix.nixosModules.default
../modules
];
};
proxmoxModule = {
imports = [
"${nixpkgs}/nixos/modules/virtualisation/proxmox-lxc.nix"
../modules/virtualisation/proxmox.nix
];
};
in
{
# deadbeef = nixpkgs.lib.nixosSystem {
# pkgs = pkgs "x86_64-linux";
# pkgs = mkPkgs nixpkgs "x86_64-linux";
# modules = [
# nodeBaseModules
# ./deadbeef
# nixos-hardware.nixosModules.dell-xps-15-9560
# home-manager.nixosModules.home-manager
# agenix.nixosModules.default
# ];
# # specialArgs = { };
# };
# baseLXC = nixpkgs.lib.nixosSystem {
# pkgs = pkgs "x86_64-linux";
# modules = [
# nodeBaseModules
# proxmoxModule
# ./base-lxc.nix
# agenix.nixosModules.default
# ];
# specialArgs = {
# inherit self;
# };
# };
arr = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./arr
agenix.nixosModules.default
];
# specialArgs = { };
baseLXC = mkLXC {
hostModule = ./base-lxc.nix;
specialArgs = { inherit self; };
};
caddy = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./caddy
agenix.nixosModules.default
];
# specialArgs = { };
arr = mkLXC { hostModule = ./arr; };
caddy = mkLXC { hostModule = ./caddy; };
colmena = mkLXC { hostModule = ./colmena; };
dns01 = mkLXC { hostModule = ./dns/dns-01.nix; };
dns02 = mkLXC { hostModule = ./dns/dns-02.nix; };
firefly-iii = mkLXC { hostModule = ./firefly-iii; };
forgejo = mkLXC { hostModule = ./forgejo; };
immich = mkLXC { hostModule = ./immich; };
metrics = mkLXC { hostModule = ./metrics; };
n8n = mkLXC { hostModule = ./n8n; };
nextcloud = mkLXC { hostModule = ./nextcloud; };
plex = mkLXC { hostModule = ./plex; };
portainer = mkLXC { hostModule = ./portainer; };
shadowsocks = mkLXC { hostModule = ./shadowsocks; };
vaultwarden = mkLXC { hostModule = ./vaultwarden; };
# Hosts requiring nixpkgs-unstable
authentik = mkLXC {
hostModule = ./authentik;
unstable = true;
};
metrics = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./metrics
agenix.nixosModules.default
];
# specialArgs = { };
paperless = mkLXC {
hostModule = ./paperless;
unstable = true;
};
nextcloud = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./nextcloud
agenix.nixosModules.default
];
# specialArgs = { };
zigbee2mqtt = mkLXC {
hostModule = ./zigbee2mqtt;
unstable = true;
};
plex = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./plex
agenix.nixosModules.default
];
# specialArgs = { };
};
vaultwarden = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./vaultwarden
agenix.nixosModules.default
];
# specialArgs = { };
};
portainer = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./portainer
agenix.nixosModules.default
];
# specialArgs = { };
};
authentik = nixpkgs-unstable.lib.nixosSystem {
pkgs = pkgs-unstable "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./authentik
agenix.nixosModules.default
];
# specialArgs = { };
};
colmena = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./colmena
agenix.nixosModules.default
];
# specialArgs = { };
};
dns01 = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./dns/dns-01.nix
agenix.nixosModules.default
];
# specialArgs = { };
};
dns02 = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./dns/dns-02.nix
agenix.nixosModules.default
];
# specialArgs = { };
};
shadowsocks = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./shadowsocks
agenix.nixosModules.default
];
# specialArgs = { };
};
immich = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./immich
agenix.nixosModules.default
];
# specialArgs = { };
};
firefly-iii = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./firefly-iii
agenix.nixosModules.default
];
# specialArgs = { };
};
paperless = nixpkgs-unstable.lib.nixosSystem {
pkgs = pkgs-unstable "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./paperless
agenix.nixosModules.default
];
# specialArgs = { };
};
zigbee2mqtt = nixpkgs-unstable.lib.nixosSystem {
pkgs = pkgs-unstable "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./zigbee2mqtt
agenix.nixosModules.default
];
# specialArgs = { };
};
forgejo = nixpkgs.lib.nixosSystem {
pkgs = pkgs "x86_64-linux";
modules = [
nodeBaseModules
proxmoxModule
./forgejo
agenix.nixosModules.default
];
# specialArgs = { };
};
}

View file

@ -175,6 +175,15 @@ in
];
};
n8n.deployment = {
targetHost = hosts.n8n;
tags = [
"lxc"
"bacco"
"n8n"
];
};
deadbeef.deployment = {
allowLocalDeployment = true;
targetHost = null;

23
hosts/n8n/default.nix Normal file
View file

@ -0,0 +1,23 @@
{
config,
pkgs,
lib,
...
}:
{
my = {
services.n8n.enable = true;
utils = {
commons.enable = true;
commons.gc.enable = true;
lxc-standard.enable = true;
};
virtualisation.proxmox.enable = true;
};
system.stateVersion = "25.11";
}

View file

@ -29,6 +29,7 @@ in
paperless = "paperless.${private-domain}";
zigbee2mqtt = "zigbee2mqtt.${private-domain}";
forgejo = "forgejo.${private-domain}";
n8n = "n8n.${private-domain}";
};
email = "davide@${public-domain}";
}