neovim: add extended obsidian plugin module
This commit is contained in:
		
							parent
							
								
									928db722b4
								
							
						
					
					
						commit
						acb87b6bb1
					
				
					 14 changed files with 139 additions and 34 deletions
				
			
		
							
								
								
									
										90
									
								
								outputs/pkgs/ook-vim/modules/plugins/obsidian/obsidian.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								outputs/pkgs/ook-vim/modules/plugins/obsidian/obsidian.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,90 @@ | |||
| { | ||||
|   lib, | ||||
|   config, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib.options) mkOption mkEnableOption; | ||||
|   inherit (lib.types) str nullOr bool enum; | ||||
|   inherit (lib.nvim.binds) mkMappingOption; | ||||
|   inherit (lib.nvim.types) mkPluginSetupOption; | ||||
| in { | ||||
|   options.vim.notes.obsidianExtended = { | ||||
|     enable = mkEnableOption "Complementary neovim plugin for Obsidian editor"; | ||||
|     setupOpts = mkPluginSetupOption "Obsidian.nvim" { | ||||
|       dir = mkOption { | ||||
|         type = str; | ||||
|         default = "~/my-vault"; | ||||
|         description = "Location of Obsidian vault directory"; | ||||
|       }; | ||||
|       daily_notes = { | ||||
|         folder = mkOption { | ||||
|           type = nullOr str; | ||||
|           default = null; | ||||
|           description = "Directory in which daily notes should be created"; | ||||
|         }; | ||||
|         date_format = mkOption { | ||||
|           type = nullOr str; | ||||
|           default = null; | ||||
|           description = "Date format used for creating daily notes"; | ||||
|         }; | ||||
|       }; | ||||
|       completion = { | ||||
|         nvim_cmp = mkOption { | ||||
|           # If using nvim-cmp, otherwise set to false | ||||
|           type = bool; | ||||
|           description = "If using nvim-cmp, otherwise set to false"; | ||||
|           default = config.vim.autocomplete.nvim-cmp.enable; | ||||
|         }; | ||||
|       }; | ||||
|       new_notes_location = mkOption { | ||||
|         type = nullOr (enum ["current_dir" "notes_subdir"]); | ||||
|         default = null; | ||||
|         description = '' | ||||
|           Where to put new notes. Valid options are: | ||||
|           * "current_dir" - put notes in same directory as current buffer | ||||
|           * "notes_subdir" - put notes in the default notes subdirectory | ||||
| 
 | ||||
|           default option: "current_dir" | ||||
|         ''; | ||||
|       }; | ||||
|       templates = { | ||||
|         folder = mkOption { | ||||
|           type = nullOr str; | ||||
|           default = null; | ||||
|           description = "Obsidian templates directory"; | ||||
|         }; | ||||
|         date_format = mkOption { | ||||
|           type = nullOr str; | ||||
|           default = null; | ||||
|           description = "Date format used for templates"; | ||||
|         }; | ||||
|         time_format = mkOption { | ||||
|           type = nullOr str; | ||||
|           default = null; | ||||
|           description = "Time format used for templates"; | ||||
|         }; | ||||
|       }; | ||||
|       preferred_link_style = mkOption { | ||||
|         type = nullOr (enum ["wiki" "markdown"]); | ||||
|         default = null; | ||||
|         description = '' | ||||
|           Either "wiki" or "markdown" | ||||
|         ''; | ||||
|       }; | ||||
|       ui = { | ||||
|         enable = mkOption { | ||||
|           type = nullOr bool; | ||||
|           default = null; | ||||
|           description = '' | ||||
|             Set to false to disable all additional syntax features | ||||
|           ''; | ||||
|         }; | ||||
|         # TODO: add rest of ui options | ||||
|       }; | ||||
|     }; | ||||
|     mappings = { | ||||
|       openNote = mkMappingOption "Open note in obsidian" "<leader>oo"; | ||||
|       findNote = mkMappingOption "Open finder in obsidian vault" "<leader>of"; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue