{
  config,
  lib,
  pkgs,
  ...
}: let
  inherit (lib.options) mkEnableOption mkOption;
  inherit (lib.types) submodule listOf str;
  inherit (lib.nvim.types) mkGrammarOption mkPluginSetupOption;
in {
  options.vim.notes.neorg = {
    enable = mkEnableOption ''
      Neorg: An intuitive note-taking and organization tool with a structured nested syntax.
    '';

    setupOpts = mkPluginSetupOption "Neorg" {
      load = {
        "core.defaults" = mkOption {
          default = {};
          description = ''
            all of the most important modules that any user would want to have a "just works" experience
          '';

          type = submodule {
            options = {
              enable = mkEnableOption ''
                all of the most important modules that any user would want to have a "just works" experience
              '';
              config = {
                disable = mkOption {
                  description = ''
                    list of modules from to be disabled from core.defaults
                  '';
                  type = listOf str;
                  default = [];
                  example = ["core.autocommands" "core.itero"];
                };
              };
            };
          };
        };
      };
    };

    treesitter = {
      enable = mkEnableOption "Neorg treesitter" // {default = config.vim.languages.enableTreesitter;};
      norgPackage = mkGrammarOption pkgs "norg";
    };
  };
}