mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	feat(neocord): custom setup
This commit is contained in:
		
					parent
					
						
							
								6fd35972d9
							
						
					
				
			
			
				commit
				
					
						0e802c03ef
					
				
			
		
					 2 changed files with 72 additions and 92 deletions
				
			
		|  | @ -3,12 +3,9 @@ | ||||||
|   lib, |   lib, | ||||||
|   ... |   ... | ||||||
| }: let | }: let | ||||||
|   inherit (builtins) toString; |  | ||||||
|   inherit (lib.modules) mkIf; |   inherit (lib.modules) mkIf; | ||||||
|   inherit (lib.trivial) boolToString; |  | ||||||
|   inherit (lib.strings) escapeNixString; |  | ||||||
|   inherit (lib.nvim.lua) listToLuaTable; |  | ||||||
|   inherit (lib.nvim.dag) entryAnywhere; |   inherit (lib.nvim.dag) entryAnywhere; | ||||||
|  |   inherit (lib.nvim.lua) toLuaObject; | ||||||
| 
 | 
 | ||||||
|   cfg = config.vim.presence.neocord; |   cfg = config.vim.presence.neocord; | ||||||
| in { | in { | ||||||
|  | @ -17,31 +14,7 @@ in { | ||||||
| 
 | 
 | ||||||
|     vim.luaConfigRC.neocord = entryAnywhere '' |     vim.luaConfigRC.neocord = entryAnywhere '' | ||||||
|       -- Description of each option can be found in https://github.com/IogaMaster/neocord#lua |       -- Description of each option can be found in https://github.com/IogaMaster/neocord#lua | ||||||
|       require("neocord").setup({ |       require("neocord").setup(${toLuaObject cfg.setupOpts}) | ||||||
|           -- General options |  | ||||||
|           logo                = "${cfg.logo}", |  | ||||||
|           logo_tooltip        = "${cfg.logo_tooltip}", |  | ||||||
|           main_image          = "${cfg.main_image}", |  | ||||||
|           client_id           = "${cfg.client_id}", |  | ||||||
|           log_level           = ${ |  | ||||||
|         if cfg.log_level == null |  | ||||||
|         then "nil" |  | ||||||
|         else "${escapeNixString cfg.log_level}" |  | ||||||
|       }, |  | ||||||
|           debounce_timeout    = ${toString cfg.debounce_timeout}, |  | ||||||
|           blacklist           = ${listToLuaTable cfg.blacklist}, |  | ||||||
|           show_time           = "${boolToString cfg.show_time}", |  | ||||||
| 
 |  | ||||||
|           -- Rich Presence text options |  | ||||||
|           editing_text        = "${cfg.rich_presence.editing_text}", |  | ||||||
|           file_explorer_text  = "${cfg.rich_presence.file_explorer_text}", |  | ||||||
|           git_commit_text     = "${cfg.rich_presence.git_commit_text}", |  | ||||||
|           plugin_manager_text = "${cfg.rich_presence.plugin_manager_text}", |  | ||||||
|           reading_text        = "${cfg.rich_presence.reading_text}", |  | ||||||
|           workspace_text      = "${cfg.rich_presence.workspace_text}", |  | ||||||
|           line_number_text    = "${cfg.rich_presence.line_number_text}", |  | ||||||
|           terminal_text       = "${cfg.rich_presence.terminal_text}", |  | ||||||
|       }) |  | ||||||
|     ''; |     ''; | ||||||
|   }; |   }; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,20 +1,28 @@ | ||||||
| {lib, ...}: let | {lib, ...}: let | ||||||
|   inherit (lib.modules) mkRemovedOptionModule; |   inherit (lib.modules) mkRemovedOptionModule mkRenamedOptionModule; | ||||||
|   inherit (lib.options) mkEnableOption mkOption literalExpression; |   inherit (lib.options) mkEnableOption mkOption literalExpression; | ||||||
|   inherit (lib.types) bool int str enum nullOr listOf; |   inherit (lib.types) bool int str enum nullOr listOf; | ||||||
| in { | in { | ||||||
|   imports = [ |   imports = | ||||||
|  |     [ | ||||||
|       (mkRemovedOptionModule ["vim" "presence" "presence-nvim"] '' |       (mkRemovedOptionModule ["vim" "presence" "presence-nvim"] '' | ||||||
|         The option vim.presence.presence-nvim has been deprecated in favor of the new neocord module. |         The option vim.presence.presence-nvim has been deprecated in favor of the new neocord module. | ||||||
|         Options provided by the plugin remain mostly the same, but manual migration is required. |         Options provided by the plugin remain mostly the same, but manual migration is required. | ||||||
| 
 | 
 | ||||||
|         Please see neocord documentation and the neovim-flake options for more info |         Please see neocord documentation and the neovim-flake options for more info | ||||||
|       '') |       '') | ||||||
|   ]; |     ] | ||||||
|  |     ++ (map | ||||||
|  |       (optName: mkRenamedOptionModule ["vim" "presence" "neocord" "rich_presence" optName] ["vim" "presence" "neocord" "setupOpts" optName]) | ||||||
|  |       ["debounce_timeout" "blacklist" "show_time" "editing_text" "file_explorer_text" "git_commit_text" "plugin_manager_text" "reading_text" "workspace_text" "line_number_text" "terminal_text"]) | ||||||
|  |     ++ (map | ||||||
|  |       (optName: mkRenamedOptionModule ["vim" "presence" "neocord" optName] ["vim" "presence" "neocord" "setupOpts" optName]) | ||||||
|  |       ["logo" "logo_tooltip" "main_image" "client_id" "log_level" "debounce_timeout" "blacklist" "show_time"]); | ||||||
| 
 | 
 | ||||||
|   options.vim.presence.neocord = { |   options.vim.presence.neocord = { | ||||||
|     enable = mkEnableOption "neocord plugin for discord rich presence"; |     enable = mkEnableOption "neocord plugin for discord rich presence"; | ||||||
| 
 | 
 | ||||||
|  |     setupOpts = lib.nvim.mkPluginSetupOption "neocord" { | ||||||
|       logo = mkOption { |       logo = mkOption { | ||||||
|         type = str; # TODO: can the default be documented better, maybe with an enum? |         type = str; # TODO: can the default be documented better, maybe with an enum? | ||||||
|         default = "auto"; |         default = "auto"; | ||||||
|  | @ -80,7 +88,6 @@ in { | ||||||
|         description = "List of filetypes to ignore"; |         description = "List of filetypes to ignore"; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|     rich_presence = { |  | ||||||
|       editing_text = mkOption { |       editing_text = mkOption { | ||||||
|         type = str; |         type = str; | ||||||
|         default = "Editing %s"; |         default = "Editing %s"; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ching Pei Yang
				Ching Pei Yang