summaryrefslogtreecommitdiffstats
path: root/modules/plugins/notes/neorg/neorg.nix
blob: 684519c9684723fe107eae78ee9155ca69120d7e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{
  config,
  lib,
  pkgs,
  ...
}: let
  inherit (lib.options) mkPackageOption mkEnableOption mkOption;
  inherit (lib.types) submodule listOf str;
  inherit (lib.nvim.types) 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 = mkPackageOption pkgs ["norg-meta treesitter"] {
        default = ["tree-sitter-grammars" "tree-sitter-norg"];
      };
      norgMetaPackage = mkPackageOption pkgs ["norg-meta treesitter"] {
        default = ["tree-sitter-grammars" "tree-sitter-norg-meta"];
      };
    };
  };
}