forked from jan-leila/nix-config
		
	
		
			
				
	
	
		
			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
 | |
|   };
 | |
| }
 |