{ lib, pkgs, ... }: let pkgsRepository = pkgs.codium-extensions; in { options.programs.vscode.profiles = lib.mkOption { type = lib.types.attrsOf (lib.types.submodule ({config, ...}: { options = { extraExtensions.aiCode = { enable = lib.mkEnableOption "should the ai code extension for vscode be enabled"; extension = lib.mkPackageOption pkgsRepository "ai-code" {}; ollamaHost = lib.mkOption { type = lib.types.nullOr lib.types.str; description = "what host should be used for ollama"; default = null; }; inlineCompletion = { enable = lib.mkOption { type = lib.types.bool; description = "should inline completion be enabled"; default = true; }; model = lib.mkOption { type = lib.types.nullOr lib.types.str; description = "what model should be used for ollama"; default = null; }; }; }; }; config = lib.mkIf config.extraExtensions.aiCode.enable { extensions = [ config.extraExtensions.aiCode.extension ]; userSettings = { "aiCode.ollamaHost" = lib.mkIf (config.extraExtensions.aiCode.ollamaHost != null) config.extraExtensions.aiCode.ollamaHost; "aiCode.inlineCompletion.enable" = config.extraExtensions.aiCode.inlineCompletion.enable; "aiCode.inlineCompletion.model" = lib.mkIf (config.extraExtensions.aiCode.inlineCompletion.model != null) config.extraExtensions.aiCode.inlineCompletion.model; }; }; })); }; }