{
  lib,
  pkgs,
  config,
  osConfig,
  ...
}: let
  ai-tooling-enabled = config.user.continue.enable && osConfig.host.ai.enable;
in {
  options = {
    user.continue = {
      enable = lib.mkEnableOption "should continue be enabled on this machine";
      docs = lib.mkOption {
        type = lib.types.attrsOf (lib.types.submodule ({name, ...}: {
          options = {
            name = lib.mkOption {
              type = lib.types.str;
              default = name;
            };
            startUrl = lib.mkOption {
              type = lib.types.str;
            };
          };
        }));
      };
      context = lib.mkOption {
        type = lib.types.attrsOf (lib.types.submodule ({name, ...}: {
          options = {
            provider = lib.mkOption {
              type = lib.types.str;
              default = name;
            };
          };
        }));
        default = {
          "code" = {};
          "docs" = {};
          "diff" = {};
          "terminal" = {};
          "problems" = {};
          "folder" = {};
          "codebase" = {};
        };
      };
    };
  };

  config =
    lib.mkIf ai-tooling-enabled
    (lib.mkMerge [
      {
        home = {
          file = {
            ".continue/config.yaml".source = (pkgs.formats.yaml {}).generate "continue-config" {
              name = "Assistant";
              version = "1.0.0";
              schema = "v1";
              models = lib.attrsets.attrValues osConfig.host.ai.models;
              context = lib.attrsets.attrValues config.user.continue.context;
              docs = lib.attrsets.attrValues config.user.continue.docs;
            };
          };
        };
      }
      (lib.mkIf osConfig.host.impermanence.enable {
        home.persistence."/persist${config.home.homeDirectory}" = {
          directories = [
            ".continue/index"
            ".continue/sessions"
          ];
          allowOther = true;
        };
      })
    ]);
}