nixconfig/modules/containers/docker/immich.nix
2026-01-14 03:23:23 -08:00

59 lines
No EOL
1.7 KiB
Nix

{ config, pkgs, ... }:
{
virtualisation.oci-containers.containers = {
# Immich Server Container
immich-server = {
image = "ghcr.io/immich-app/immich-server:release";
ports = [ "2283:2283" ];
volumes = [
"/storage/services/immich/upload:/data" # Consolidate upload data
"/etc/localtime:/etc/localtime:ro"
];
user = "immich";
environment = {
DB_HOSTNAME = "localhost";
DB_PORT = "5432";
DB_USERNAME = "immich";
DB_DATABASE_NAME = "immich_db";
REDIS_HOSTNAME = "immich-redis";
REDIS_PORT = "6379";
MACHINE_LEARNING_HOSTNAME = "immich-machine-learning";
};
environmentFiles = [ "/etc/nixos/secrets/immich.env" ];
dependsOn = [ "immich-redis" "immich-machine-learning" ];
autoStart = true;
};
# Immich Machine Learning Container
immich-machine-learning = {
image = "ghcr.io/immich-app/immich-machine-learning:release";
volumes = [
"/storage/services/immich/model-cache:/cache" # Host path for model cache
];
user = "immich";
environment = {
REDIS_HOSTNAME = "immich-redis";
REDIS_PORT = "6379";
DB_HOSTNAME = "localhost";
DB_PORT = "5432";
DB_USERNAME = "immich";
DB_DATABASE_NAME = "immich_db";
};
environmentFiles = [ "/etc/nixos/secrets/immich.env" ];
autoStart = true;
};
# Immich Redis Container
immich-redis = {
image = "redis:latest";
volumes = [
"/storage/services/immich/redis-data:/data" # Persistent Redis data
];
autoStart = true;
};
};
# No named Docker volumes needed.
virtualisation.docker.volumes = { };
}