nixos/modules/containers/immich.nix

85 lines
2.0 KiB
Nix

{ config, ... }:
let
workDir = "/srv/containers/immich";
dataDir = "/srv/data/immich";
nextcloudDir = "/srv/data/nextcloud";
familyDir = "/srv/data/family";
in
{
systemd.tmpfiles.rules = [
"d ${workDir}/cache 2770 root admin"
"d ${workDir}/postgres 0700 999 999"
"d ${dataDir} 2770 root admin"
];
virtualisation.oci-containers.containers = {
immich = {
autoStart = true;
image = "ghcr.io/immich-app/immich-server:v2";
ports = [
"0.0.0.0:10008:2283"
];
volumes = [
"${dataDir}:/usr/src/app/upload"
"${nextcloudDir}:/usr/src/app/external:ro"
"${familyDir}:/usr/src/app/family:ro"
];
environment = {
TZ = "Europe/Bucharest";
DB_HOSTNAME = "immich-db";
REDIS_HOSTNAME = "immich-redis";
IMMICH_MACHINE_LEARNING_URL = "http://immich-machine-learning:3003";
#DB_STORAGE_TYPE: "HDD";
};
environmentFiles = [
config.age.secrets.immich.path
];
extraOptions = [
"--group-add=10000"
];
dependsOn = [
"immich-db"
"immich-redis"
"immich-machine-learning"
];
};
immich-machine-learning = {
autoStart = true;
image = "ghcr.io/immich-app/immich-machine-learning:v2";
volumes = [
"${workDir}/cache:/cache"
];
};
immich-redis = {
autoStart = true;
image = "redis:8-alpine";
};
immich-db = {
autoStart = true;
image = "ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0";
environmentFiles = [
config.age.secrets.immich.path
];
volumes = [
"${workDir}/postgres:/var/lib/postgresql/data"
];
};
};
}