diff --git a/data/darktableconfig.xml.in b/data/darktableconfig.xml.in index ebf93eed002a..6442022c909f 100644 --- a/data/darktableconfig.xml.in +++ b/data/darktableconfig.xml.in @@ -424,6 +424,13 @@ AI models GitHub repository GitHub repository for downloading AI models (format: owner/repo) + + plugins/ai/models_path + string + + custom AI models folder + folder where AI models are stored. leave empty for the default location. existing models in the default location are not migrated automatically + plugins/ai/cuda_device_id int diff --git a/src/common/ai_models.c b/src/common/ai_models.c index 885ceb854d50..4e2f6a00ca80 100644 --- a/src/common/ai_models.c +++ b/src/common/ai_models.c @@ -428,8 +428,23 @@ static void _setup_registry(dt_ai_registry_t *registry) char cachedir[PATH_MAX] = {0}; dt_loc_get_user_cache_dir(cachedir, sizeof(cachedir)); - registry->models_dir = g_build_filename(g_get_user_data_dir(), - "darktable", "models", NULL); + // honour plugins/ai/models_path override; "~/..." expands to $HOME + char *override = dt_conf_get_string("plugins/ai/models_path"); + if(override && override[0]) + { + if(override[0] == '~' && (override[1] == '/' || override[1] == '\0')) + registry->models_dir + = g_build_filename(g_get_home_dir(), override + 2, NULL); + else + registry->models_dir = g_strdup(override); + } + else + { + registry->models_dir = g_build_filename(g_get_user_data_dir(), + "darktable", "models", NULL); + } + g_free(override); + registry->cache_dir = g_build_filename(cachedir, "ai_downloads", NULL); _ensure_directory(registry->models_dir);