{
  pkgs,
  config,
  lib,
  ...
}:
with lib;
with builtins; let
  cfg = config.vim.notes.obsidian;
  auto = config.vim.autocomplete;
in {
  options.vim.notes = {
    obsidian = {
      enable = mkEnableOption "Complementary neovim plugins for Obsidian editor";
      dir = mkOption {
        type = types.str;
        default = "~/my-vault";
        description = "Obsidian vault directory";
      };

      completion = {
        nvim_cmp = mkOption {
          # if using nvim-cmp, otherwise set to false
          type = types.bool;
          description = "If using nvim-cmp, otherwise set to false";
        };
      };
    };
  };

  config = mkIf (cfg.enable) {
    vim.startPlugins = [
      "obsidian-nvim"
      "vim-markdown"
      "tabular"
    ];

    vim.luaConfigRC.obsidian = nvim.dag.entryAnywhere ''
      require("obsidian").setup({
        dir = "${cfg.dir}",
        completion = {
          nvim_cmp = ${
        if (auto.type == "nvim-cmp")
        then "true"
        else "false"
      }
        }
      })
    '';
  };
}