{ config, pkgs, lib, ... }: let cfg = config.pepe.services.immich; in { options.pepe.services.immich = with lib; { enable = mkEnableOption "Enable immich"; package = mkPackageOption pkgs "immich" { }; domain = mkOption { type = types.str; default = null; }; }; config = lib.mkIf cfg.enable { services = { immich = { enable = true; package = cfg.package; # accelerationDevices = null; }; }; pepe.core.vhost.hosts.${cfg.domain} = { locations."/" = { host = "[::1]"; port = config.services.immich.port; allowLAN = true; allowVPN = true; allowWAN = true; proxyWebsockets = true; extraConfig = '' # allow large file uploads client_max_body_size 50000M; ''; }; }; users.users.immich.extraGroups = [ "video" "render" "media" "nextcloud" ]; }; }