{ lib , writers , writeText , linkFarmFromDrvs }: { genModels = configs: let name = lib.strings.sanitizeDerivationName (builtins.concatStringsSep "_" ([ "local-ai-models" ] ++ (builtins.attrNames configs))); genModelFiles = name: config: let templateName = type: name + "_" + type; config' = lib.recursiveUpdate config ({ inherit name; } // lib.optionalAttrs (lib.isDerivation config.parameters.model) { parameters.model = config.parameters.model.name; } // lib.optionalAttrs (config ? template) { template = builtins.mapAttrs (n: _: templateName n) config.template; }); in [ (writers.writeYAML "${name}.yaml" config') ] ++ lib.optional (lib.isDerivation config.parameters.model) config.parameters.model ++ lib.optionals (config ? template) (lib.mapAttrsToList (n: writeText "${templateName n}.tmpl") config.template); in linkFarmFromDrvs name (lib.flatten (lib.mapAttrsToList genModelFiles configs)); }