toxic: 0.15.1 -> 0.16.0
[NixPkgs.git] / pkgs / by-name / lo / local-ai / lib.nix
blobbd0cc36d90beb315775ed30f610138f1577eba1b
2   lib,
3   writers,
4   writeText,
5   linkFarmFromDrvs,
6 }:
8   genModels =
9     configs:
10     let
11       name = lib.strings.sanitizeDerivationName (
12         builtins.concatStringsSep "_" ([ "local-ai-models" ] ++ (builtins.attrNames configs))
13       );
15       genModelFiles =
16         name: config:
17         let
18           templateName = type: name + "_" + type;
20           config' = lib.recursiveUpdate config (
21             {
22               inherit name;
23             }
24             // lib.optionalAttrs (lib.isDerivation config.parameters.model) {
25               parameters.model = config.parameters.model.name;
26             }
27             // lib.optionalAttrs (config ? template) {
28               template = builtins.mapAttrs (n: _: templateName n) config.template;
29             }
30           );
31         in
32         [ (writers.writeYAML "${name}.yaml" config') ]
33         ++ lib.optional (lib.isDerivation config.parameters.model) config.parameters.model
34         ++ lib.optionals (config ? template) (
35           lib.mapAttrsToList (n: writeText "${templateName n}.tmpl") config.template
36         );
37     in
38     linkFarmFromDrvs name (lib.flatten (lib.mapAttrsToList genModelFiles configs));