flake/modules/home/terminal/nvim/obsidian.nix
2025-12-22 18:27:52 +00:00

122 lines
3.3 KiB
Nix

{
lib,
config,
...
}: {
options.mods.obsidian.enable =
lib.mkEnableOption "enables obsidian";
config = lib.mkIf config.mods.obsidian.enable {
programs.nvf.settings.vim.notes.obsidian = {
enable = true;
setupOpts = {
workspaces = [
{
name = "agentic";
path = "~/work/vaults/agentic";
}
];
completion.nvim_cmp = true;
note_id_func =
lib.generators.mkLuaInline
# lua
''
function(title)
local suffix = ""
if title ~= nil then
-- If title is given, transform it into valid file name.
suffix = title:gsub(" ", "-"):gsub("[^A-Za-z0-9-]", ""):lower()
else
-- If title is nil, just add 4 random uppercase letters to the suffix.
for _ = 1, 4 do
suffix = suffix .. string.char(math.random(65, 90))
end
end
return tostring(os.date("%Y%m%d%H%M%S")) .. "-" .. suffix
end
'';
ui = {
enable = true;
update_debounce = 200;
max_file_length = 5000;
checkboxes = {
" " = {
char = "󰄱";
hl_group = "ObsidianTodo";
};
"x" = {
char = "";
hl_group = "ObsidianDone";
};
">" = {
char = "";
hl_group = "ObsidianRightArrow";
};
"~" = {
char = "󰰱";
hl_group = "ObsidianTilde";
};
"!" = {
char = "";
hl_group = "ObsidianImportant";
};
};
bullets = {
char = "";
hl_group = "ObsidianBullet";
};
external_link_icon = {
char = "";
hl_group = "ObsidianExtLinkIcon";
};
reference_text = {hl_group = "ObsidianRefText";};
highlight_text = {hl_group = "ObsidianHighlightText";};
tags = {hl_group = "ObsidianTag";};
block_ids = {hl_group = "ObsidianBlockID";};
hl_groups = {
ObsidianTodo = {
bold = true;
fg = "#f78c6c";
};
ObsidianDone = {
bold = true;
fg = "#89ddff";
};
ObsidianRightArrow = {
bold = true;
fg = "#f78c6c";
};
ObsidianTilde = {
bold = true;
fg = "#ff5370";
};
ObsidianImportant = {
bold = true;
fg = "#d73128";
};
ObsidianBullet = {
bold = true;
fg = "#89ddff";
};
ObsidianRefText = {
underline = true;
fg = "#c792ea";
};
ObsidianExtLinkIcon = {fg = "#c792ea";};
ObsidianTag = {
italic = true;
fg = "#89ddff";
};
ObsidianBlockID = {
italic = true;
fg = "#89ddff";
};
ObsidianHighlightText = {bg = "#75662e";};
};
};
};
};
};
}