nix/moduler/services/immich/default.nix
2025-12-01 09:41:09 +01:00

63 lines
1.4 KiB
Nix

{
lib,
pkgs,
config,
myhost,
...
}:
let
cfg = config.services.immich;
srv = cfg.settings.server;
in
with lib;
{
options = {
immich = {
enable = mkEnableOption "enables immich";
domain = lib.mkOption {
type = lib.types.str;
default = "immich.wastring.com";
description = "The hostname that Immich is served on.";
};
port = lib.mkOption {
type = lib.types.int;
default = 8000;
description = "The port that Immich is served on.";
};
};
};
config = mkMerge [
(mkIf config.immich.enable {
services.nginx = {
virtualHosts.${config.immich.domain} = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://[::1]:${toString config.immich.port}";
proxyWebsockets = true;
recommendedProxySettings = true;
extraConfig = ''
client_max_body_size 50000M;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
send_timeout 600s;
'';
};
};
};
sops.secrets.immich-secrets-file = { };
services.immich = {
enable = true;
port = config.immich.port;
settings = {
server.externalDomain = "https://${toString config.immich.domain}";
};
secretsFile = config.sops.secrets.immich-secrets-file.path;
};
})
];
}