{ pkgs, config, lib, ... }: with lib; with builtins; let cfg = config.vim.notes.orgmode; in { options.vim.notes = { orgmode = { enable = mkEnableOption "Neovim plugin for Emac Orgmode. Get the best of both worlds."; orgAgendaFiles = mkOption { type = types.str; default = "{'~/Dropbox/org/*', '~/my-orgs/**/*'}"; description = "List of org files to be used as agenda files."; }; orgDefaultNotesFile = mkOption { type = types.str; default = "~/Dropbox/org/refile.org"; description = "Default org file to be used for notes."; }; }; }; config = mkIf (cfg.enable) { vim.startPlugins = [ "orgmode-nvim" ]; vim.luaConfigRC.orgmode = nvim.dag.entryAnywhere '' -- Load custom treesitter grammar for org filetype require('orgmode').setup_ts_grammar() -- Treesitter configuration require('nvim-treesitter.configs').setup { -- If TS highlights are not enabled at all, or disabled via `disable` prop, -- highlighting will fallback to default Vim syntax highlighting highlight = { enable = true, -- Required for spellcheck, some LaTex highlights and -- code block highlights that do not have ts grammar additional_vim_regex_highlighting = {'org'}, }, ensure_installed = {'org'}, -- Or run :TSUpdate org } require('orgmode').setup({ org_agenda_files = ${cfg.orgAgendaFiles}, org_default_notes_file = '${cfg.orgDefaultNotesFile}', }) ''; }; }