46 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{lib, ...}: {
 | 
						|
  options.host = {
 | 
						|
    ai = {
 | 
						|
      enable = lib.mkEnableOption "should we use AI on this machine";
 | 
						|
      models = lib.mkOption {
 | 
						|
        type = lib.types.attrsOf (lib.types.submodule ({name, ...}: {
 | 
						|
          options = {
 | 
						|
            name = lib.mkOption {
 | 
						|
              type = lib.types.str;
 | 
						|
              default = name;
 | 
						|
            };
 | 
						|
            model = lib.mkOption {
 | 
						|
              type = lib.types.str;
 | 
						|
            };
 | 
						|
            provider = lib.mkOption {
 | 
						|
              type = lib.types.str;
 | 
						|
              default = "ollama";
 | 
						|
            };
 | 
						|
            apiBase = lib.mkOption {
 | 
						|
              type = lib.types.str;
 | 
						|
              default = "http://localhost:11434";
 | 
						|
            };
 | 
						|
            roles = lib.mkOption {
 | 
						|
              type = lib.types.listOf (lib.types.enum [
 | 
						|
                "chat"
 | 
						|
                "autocomplete"
 | 
						|
                "embed"
 | 
						|
                "rerank"
 | 
						|
                "edit"
 | 
						|
                "apply"
 | 
						|
                "summarize"
 | 
						|
              ]);
 | 
						|
              default = [];
 | 
						|
            };
 | 
						|
          };
 | 
						|
        }));
 | 
						|
      };
 | 
						|
      default = {};
 | 
						|
    };
 | 
						|
  };
 | 
						|
 | 
						|
  config = {
 | 
						|
    # TODO: configure ollama to download any modules listed in options.host.ai.models.{name}.model if options.host.ai.models.{name}.apiBase is localhost
 | 
						|
    # TODO: if we have any models that have a non localhost options.host.ai.models.{name}.apiBase then set services.ollama.enable to a lib.mkAfter true
 | 
						|
  };
 | 
						|
}
 |