mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	feat: obsidian and orgmode neovim plugins
This commit is contained in:
		
					parent
					
						
							
								61d497e9ce
							
						
					
				
			
			
				commit
				
					
						07c101f447
					
				
			
		
					 5 changed files with 118 additions and 0 deletions
				
			
		|  | @ -55,6 +55,10 @@ with lib; let | |||
|     "presence-nvim" | ||||
|     "icon-picker-nvim" | ||||
|     "dressing-nvim" | ||||
|     "orgmode-nvim" | ||||
|     "obsidian-nvim" | ||||
|     "vim-markdown" | ||||
|     "tabular" | ||||
|   ]; | ||||
|   # You can either use the name of the plugin or a package. | ||||
|   pluginsType = with types; listOf (nullOr (either (enum availablePlugins) package)); | ||||
|  |  | |||
|  | @ -26,6 +26,7 @@ | |||
|     ./notifications | ||||
|     ./utility | ||||
|     ./presence | ||||
|     ./notes | ||||
|   ]; | ||||
| 
 | ||||
|   pkgsModule = {config, ...}: { | ||||
|  |  | |||
							
								
								
									
										6
									
								
								modules/notes/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								modules/notes/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| _: { | ||||
|   imports = [ | ||||
|     ./obsidian | ||||
|     ./orgmode | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										51
									
								
								modules/notes/obsidian/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								modules/notes/obsidian/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,51 @@ | |||
| { | ||||
|   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" | ||||
|       } | ||||
|         } | ||||
|       }) | ||||
|     ''; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										56
									
								
								modules/notes/orgmode/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								modules/notes/orgmode/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,56 @@ | |||
| { | ||||
|   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}', | ||||
|       }) | ||||
|     ''; | ||||
|   }; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 NotAShelf
				NotAShelf