about summary refs log tree commit diff
path: root/pkgs/by-name/lo/local-ai/lib.nix
blob: 46f3ba88e5db7408efddb57a62979d8f4cb4e659 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{ 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));
}