70 lines
1.7 KiB
Nix
70 lines
1.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
|
|
{
|
|
options = {
|
|
server.cloud.immich = {
|
|
enable = lib.mkEnableOption "enable immich";
|
|
port = lib.mkOption {
|
|
default = 2283;
|
|
description = "immich port";
|
|
};
|
|
public = lib.mkEnableOption "public immich";
|
|
subdomain = lib.mkOption {
|
|
default = "photos";
|
|
description = "immich subdomain";
|
|
};
|
|
};
|
|
};
|
|
config = {
|
|
users =
|
|
if config.server.cloud.immich.enable then
|
|
{
|
|
users.immich = {
|
|
isSystemUser = true;
|
|
createHome = true;
|
|
home = "/var/lib/immich";
|
|
group = "immich";
|
|
extraGroups = [
|
|
"video"
|
|
"render"
|
|
];
|
|
};
|
|
groups.immich = { };
|
|
}
|
|
else
|
|
{ };
|
|
services = {
|
|
immich = {
|
|
enable = config.server.cloud.immich.enable;
|
|
port = config.server.cloud.immich.port;
|
|
host = "127.0.0.1";
|
|
machine-learning = {
|
|
enable = true;
|
|
environment = {
|
|
MACHINE_LEARNING_MODEL_TTL = "600";
|
|
MACHINE_LEARNING_REQUEST_THREADS = "4";
|
|
MACHINE_LEARNING_MODEL_INTER_OP_THREADS = "2";
|
|
};
|
|
};
|
|
};
|
|
nginx =
|
|
if config.server.cloud.immich.enable && config.server.cloud.immich.public then
|
|
{
|
|
virtualHosts."${config.server.cloud.immich.subdomain}.${config.networking.domain}" = {
|
|
enableACME = true;
|
|
forceSSL = true;
|
|
locations."/" = {
|
|
proxyPass = "http://127.0.0.1:${toString config.server.cloud.immich.port}";
|
|
};
|
|
};
|
|
}
|
|
else
|
|
{ };
|
|
};
|
|
};
|
|
}
|