nixos-config/hosts/chunk/immich.nix

99 lines
2.5 KiB
Nix
Raw Permalink Normal View History

2024-12-17 04:02:34 -05:00
{
pkgs,
config,
...
2024-12-19 02:32:58 -05:00
}:
let
2024-12-17 04:02:34 -05:00
uploadLocation = "/mnt/photos/immich";
thumbsLocation = "/opt/immich/thumbs";
profileLocation = "/opt/immich/profile";
dbDataLocation = "/opt/immich/postgres";
2024-12-19 02:32:58 -05:00
in
{
2024-12-17 04:02:34 -05:00
virtualisation.oci-containers.containers = {
immich-server = {
image = "ghcr.io/immich-app/immich-server:release";
autoStart = true;
2024-12-19 02:32:58 -05:00
ports = [ "127.0.0.1:2283:2283" ];
2024-12-17 04:02:34 -05:00
pull = "newer";
volumes = [
"${uploadLocation}:/usr/src/app/upload"
"${thumbsLocation}:/usr/src/app/upload/thumbs"
"${profileLocation}:/usr/src/app/upload/profile"
];
environment = {
REDIS_HOSTNAME = "immich-redis";
DB_HOSTNAME = "immich-db";
};
2024-12-19 02:32:58 -05:00
networks = [ "immich-net" ];
dependsOn = [
"immich-db"
"immich-redis"
];
2024-12-17 04:02:34 -05:00
};
immich-redis = {
image = "redis:6.2-alpine";
autoStart = true;
pull = "newer";
2024-12-19 02:32:58 -05:00
networks = [ "immich-net" ];
2024-12-17 04:02:34 -05:00
};
immich-db = {
image = "tensorchord/pgvecto-rs:pg14-v0.2.0";
autoStart = true;
pull = "newer";
environment = {
POSTGRES_PASSWORD = "postgres";
POSTGRES_USER = "postgres";
POSTGRES_DB = "immich";
POSTGRES_INITDB_ARGS = "--data-checksums";
};
2024-12-19 02:32:58 -05:00
volumes = [ "${dbDataLocation}:/var/lib/postgresql/data" ];
2024-12-17 04:02:34 -05:00
cmd = [
"postgres"
2024-12-19 02:32:58 -05:00
"-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"
2024-12-17 04:02:34 -05:00
];
2024-12-19 02:32:58 -05:00
networks = [ "immich-net" ];
2024-12-17 04:02:34 -05:00
};
2024-12-20 18:17:59 -05:00
# immich-ml = {
# image = "ghcr.io/immich-app/immich-machine-learning:release";
# autoStart = true;
# pull = "newer";
# environment = {
# REDIS_HOSTNAME = "immich-redis";
# DB_HOSTNAME = "immich-db";
# };
# volumes = [ "${modelCache}:/cache" ];
# networks = [ "immich-net" ];
# };
2024-12-17 04:02:34 -05:00
};
systemd.services.create-immich-net = {
serviceConfig.Type = "oneshot";
2024-12-25 01:46:00 -05:00
requiredBy = with config.virtualisation.oci-containers; [
2024-12-17 04:02:34 -05:00
"${backend}-immich.service"
"${backend}-immich-db.service"
"${backend}-immich-redis.service"
2024-12-20 18:17:59 -05:00
# "${backend}-immich-ml.service"
2024-12-17 04:02:34 -05:00
];
2024-12-25 01:46:00 -05:00
before = config.systemd.services.create-immich-net.requiredBy;
2024-12-17 04:02:34 -05:00
script = ''
${pkgs.podman}/bin/podman network exists immich-net || \
${pkgs.podman}/bin/podman network create immich-net
'';
};
}