76 lines
2.2 KiB
Nix
76 lines
2.2 KiB
Nix
{ config, lib, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.settings.containers.immich;
|
|
in {
|
|
options = {
|
|
settings.containers.immich.enable = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = false;
|
|
description = ''
|
|
Enable immich container
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
services.podman.containers.immich-server = {
|
|
image = "ghcr.io/immich-app/immich-server:release";
|
|
network = "proxy";
|
|
volumes = [
|
|
"%h/containers/immich/upload:/usr/src/app/upload"
|
|
"/etc/localtime:/etc/localtime:ro"
|
|
];
|
|
extraConfig = {
|
|
Unit = {
|
|
After = [
|
|
"podman-immich-redis.service"
|
|
"podman-immich-database.service"
|
|
];
|
|
Requires = [
|
|
"podman-immich-redis.service"
|
|
"podman-immich-database.service"
|
|
];
|
|
};
|
|
};
|
|
environment = {
|
|
DB_PASSWORD = "changeme";
|
|
DB_USERNAME = "postgres";
|
|
DB_DATABASE_NAME = "immich";
|
|
DB_HOSTNAME = "immich-database";
|
|
REDIS_HOSTNAME = "immich-redis";
|
|
};
|
|
};
|
|
|
|
services.podman.containers.immich-machine-learning = {
|
|
image = "ghcr.io/immich-app/immich-machine-learning:release";
|
|
network = "proxy";
|
|
volumes = [
|
|
"%h/containers/immich/model-cache:/cache"
|
|
];
|
|
};
|
|
|
|
services.podman.containers.immich-redis = {
|
|
image = "docker.io/valkey/valkey:8-bookworm@sha256:42cba146593a5ea9a622002c1b7cba5da7be248650cbb64ecb9c6c33d29794b1";
|
|
network = "proxy";
|
|
};
|
|
|
|
services.podman.containers.immich-database = {
|
|
image = "docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:739cdd626151ff1f796dc95a6591b55a714f341c737e27f045019ceabf8e8c52";
|
|
network = "proxy";
|
|
volumes = [
|
|
"%h/containers/immich/database-data:/var/lib/postgresql/data"
|
|
];
|
|
environment = {
|
|
POSTGRES_PASSWORD = "changeme";
|
|
POSTGRES_USER = "postgres";
|
|
POSTGRES_DB = "immich";
|
|
POSTGRES_INITDB_ARGS = "--data-checksums";
|
|
};
|
|
exec = ''postgres -c shared_preload_libraries=vectors.so -c 'search_path="$$user", public, vectors' -c logging_collector=on -c max_wal_size=2GB -c shared_buffers=512MB -c wal_compression=on'';
|
|
};
|
|
};
|
|
}
|