notes/obsidian-nvim: remove unnecessary options and add integrations/compat

This commit is contained in:
alfarel 2025-10-31 19:46:43 +00:00
commit b9f641f34c
No known key found for this signature in database
3 changed files with 120 additions and 36 deletions

View file

@ -154,8 +154,6 @@
[LilleAila](https://github.com/LilleAila): [LilleAila](https://github.com/LilleAila):
- Remove `vim.notes.obsidian.setupOpts.dir`, which was set by default. Fixes
issue with setting the workspace directory.
- Add `vim.snippets.luasnip.setupOpts`, which was previously missing. - Add `vim.snippets.luasnip.setupOpts`, which was previously missing.
- Add `"prettierd"` as a formatter option in - Add `"prettierd"` as a formatter option in
`vim.languages.markdown.format.type`. `vim.languages.markdown.format.type`.
@ -283,6 +281,8 @@
[alfarel](https://github.com/alfarelcynthesis): [alfarel](https://github.com/alfarelcynthesis):
[conform.nvim]: https://github.com/stevearc/conform.nvim [conform.nvim]: https://github.com/stevearc/conform.nvim
[obsidian.nvim]: https://github.com/obsidian-nvim/obsidian.nvim
[markview.nvim]: https://github.com/OXY2DEV/markview.nvim
- Add missing `yazi.nvim` dependency (`snacks.nvim`). - Add missing `yazi.nvim` dependency (`snacks.nvim`).
- Add [mkdir.nvim](https://github.com/jghauser/mkdir.nvim) plugin for automatic - Add [mkdir.nvim](https://github.com/jghauser/mkdir.nvim) plugin for automatic
@ -305,6 +305,44 @@
- Fix YAML language module not activating LSP keybinds if the Helm language - Fix YAML language module not activating LSP keybinds if the Helm language
module was also enabled. module was also enabled.
- Fix `json` language module (default) language server not activating. - Fix `json` language module (default) language server not activating.
- Upgrade [obsidian.nvim] to use a maintained fork, instead of the unmaintained
upstream.
- Support [blink.cmp] and completion plugin autodetection.
- Support various pickers for prompts, including [snacks.nvim]'s
`snacks.picker`, [mini.nvim]'s `mini.pick`, `telescope`, and [fzf-lua]. nvf
will now pick one of these (in that order) if they are enabled.
- Merge commands like `ObsidianBacklinks` into `Obisidian backlinks`. The old
format is still supported by default.
- Add suggested integration with `snacks.image` for rendering in-workspace
assets.
- Various other improvements.
- Some `setupOpts` options have changed:
- `disable_frontmatter` -> `frontmatter.enabled` (and inverted), still
supported.
- `note_frontmatter_func` -> `frontmatter.func`, still supported.
- `statusline` module is now deprecated in favour of `footer`, still
supported.
- `dir` is no longer supported, use `workspaces`:
```nix
{
workspaces = [
{
name = "any-string";
path = "~/old/dir/path/value";
}
];
}
```
- `use_advanced_uri` -> `open.use_advanced_uri`.
- Mappings are now expected to be set using the built-in Neovim APIs,
managed by `vim.keymaps` in nvf, instead of `mappings` options.
- Some option defaults have changed.
- Supposedly detects if [render-markdown.nvim] or [markview.nvim] are enabled
and disables the `ui` module to prevent conflicts. In testing
`render-markdown.nvim` still has conflicts unless manually disabled, so nvf
will disable `ui.enable` explicitly if either is enabled.
[TheColorman](https://github.com/TheColorman): [TheColorman](https://github.com/TheColorman):

View file

@ -3,7 +3,8 @@
lib, lib,
... ...
}: let }: let
inherit (lib.modules) mkIf; inherit (lib.modules) mkIf mkMerge;
inherit (lib.generators) mkLuaInline;
inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.binds) pushDownDefault; inherit (lib.nvim.binds) pushDownDefault;
inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.lua) toLuaObject;
@ -25,6 +26,48 @@ in {
pluginRC.obsidian = entryAnywhere '' pluginRC.obsidian = entryAnywhere ''
require("obsidian").setup(${toLuaObject cfg.setupOpts}) require("obsidian").setup(${toLuaObject cfg.setupOpts})
''; '';
# Don't set option unless we have a useful setting for it.
notes.obsidian.setupOpts = let
snacks = config.vim.utility.snacks-nvim.setupOpts.picker.enabled or false;
mini = config.vim.mini.pick.enable;
telescope = config.vim.telescope.enable;
fzf-lua = config.vim.fzf-lua.enable;
markdownExtensions = config.vim.languages.markdown.extensions;
render-markdown = markdownExtensions.render-markdown-nvim.enable;
markview = markdownExtensions.markview-nvim.enable;
in
mkMerge [
(mkIf (snacks || mini || telescope || fzf-lua) {
# plugin doesn't detect/choose this
picker.name =
if snacks
then "snacks.pick"
else if mini
then "mini.pick"
else if telescope
then "telescope.nvim"
else if fzf-lua
then "fzf-lua"
# NOTE: Shouldn't happen
else null;
})
# Should be disabled automatically, but still causes issues in checkhealth.
(mkIf (render-markdown || markview) {ui.enable = false;})
];
# Resolve markdown image paths in the vault.
# Only actually used by snacks if image.enabled is set to true
utility.snacks-nvim.setupOpts = mkIf config.vim.utility.snacks-nvim.enable {
image.resolve = mkLuaInline ''
function(path, src)
if require("obsidian.api").path_is_note(path) then
return require("obsidian.api").resolve_image_path(src)
end
end
'';
};
}; };
}; };
} }

View file

@ -1,14 +1,7 @@
{ {lib, ...}: let
config, inherit (lib.options) mkEnableOption;
lib, inherit (lib.modules) mkRenamedOptionModule mkRemovedOptionModule;
...
}: let
inherit (lib.options) mkEnableOption mkOption;
inherit (lib.types) bool str nullOr;
inherit (lib.modules) mkRenamedOptionModule;
inherit (lib.nvim.types) mkPluginSetupOption; inherit (lib.nvim.types) mkPluginSetupOption;
autocompleteCfg = config.vim.autocomplete;
in { in {
imports = let imports = let
renamedSetupOption = oldPath: newPath: renamedSetupOption = oldPath: newPath:
@ -16,38 +9,48 @@ in {
(["vim" "notes" "obsidian"] ++ oldPath) (["vim" "notes" "obsidian"] ++ oldPath)
(["vim" "notes" "obsidian" "setupOpts"] ++ newPath); (["vim" "notes" "obsidian" "setupOpts"] ++ newPath);
in [ in [
(renamedSetupOption ["dir"] ["dir"]) (
mkRemovedOptionModule ["vim" "notes" "obsidian" "dir"]
''
`obsidian.nvim` has migrated to the `setupOpts.workspaces` option to support multiple vaults with a single interface.
To continue using a single vault, set:
```nix
{
notes.obsidian.setupOpts.workspaces = [
{
name = "any-string";
path = "~/old/dir/path/value";
}
];
}
```
''
)
(renamedSetupOption ["daily-notes" "folder"] ["daily_notes" "folder"]) (renamedSetupOption ["daily-notes" "folder"] ["daily_notes" "folder"])
(renamedSetupOption ["daily-notes" "date-format"] ["daily_notes" "date_format"]) (renamedSetupOption ["daily-notes" "date-format"] ["daily_notes" "date_format"])
(renamedSetupOption ["completion"] ["completion"]) (renamedSetupOption ["completion"] ["completion"])
]; ];
options.vim.notes = { options.vim.notes = {
obsidian = { obsidian = {
enable = mkEnableOption "complementary neovim plugins for Obsidian editor"; enable =
mkEnableOption ""
// {
description = ''
Whether to enable plugins to compliment the Obsidian markdown editor [obsidian.nvim].
setupOpts = mkPluginSetupOption "Obsidian.nvim" { This plugin depends on [vim-markdown] which by default folds headings, including outside of workspaces/vaults.
daily_notes = { Set `vim.g['vim_markdown_folding_disable'] = 1` to disable automatic folding,
folder = mkOption { or `vim.g['vim_markdown_folding_level'] = <number>` to set the default folding level.
type = nullOr str;
default = null; nvf will choose snacks.picker, mini.pick, telescope, or fzf-lua as the picker if they are enabled, in that order.
description = "Directory in which daily notes should be created";
}; The `ui` config module is automatically disabled if `render-markdown-nvim` or `markview-nvim` are enabled.
date_format = mkOption { '';
type = nullOr str;
default = null;
description = "Date format used for creating daily notes";
};
}; };
completion = { setupOpts = mkPluginSetupOption "obsidian.nvim" {};
nvim_cmp = mkOption {
# If using nvim-cmp, otherwise set to false
type = bool;
description = "If using nvim-cmp, otherwise set to false";
default = autocompleteCfg.nvim-cmp.enable || autocompleteCfg.blink-cmp.enable;
};
};
};
}; };
}; };
} }