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, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (builtins) toString; | ||||
|   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.lua) toLuaObject; | ||||
| 
 | ||||
|   cfg = config.vim.presence.neocord; | ||||
| in { | ||||
|  | @ -17,31 +14,7 @@ in { | |||
| 
 | ||||
|     vim.luaConfigRC.neocord = entryAnywhere '' | ||||
|       -- Description of each option can be found in https://github.com/IogaMaster/neocord#lua | ||||
|       require("neocord").setup({ | ||||
|           -- 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}", | ||||
|       }) | ||||
|       require("neocord").setup(${toLuaObject cfg.setupOpts}) | ||||
|     ''; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -1,86 +1,93 @@ | |||
| {lib, ...}: let | ||||
|   inherit (lib.modules) mkRemovedOptionModule; | ||||
|   inherit (lib.modules) mkRemovedOptionModule mkRenamedOptionModule; | ||||
|   inherit (lib.options) mkEnableOption mkOption literalExpression; | ||||
|   inherit (lib.types) bool int str enum nullOr listOf; | ||||
| in { | ||||
|   imports = [ | ||||
|     (mkRemovedOptionModule ["vim" "presence" "presence-nvim"] '' | ||||
|       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. | ||||
|   imports = | ||||
|     [ | ||||
|       (mkRemovedOptionModule ["vim" "presence" "presence-nvim"] '' | ||||
|         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. | ||||
| 
 | ||||
|       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 = { | ||||
|     enable = mkEnableOption "neocord plugin for discord rich presence"; | ||||
| 
 | ||||
|     logo = mkOption { | ||||
|       type = str; # TODO: can the default be documented better, maybe with an enum? | ||||
|       default = "auto"; | ||||
|       description = '' | ||||
|         Logo to be displayed on the RPC item | ||||
|     setupOpts = lib.nvim.mkPluginSetupOption "neocord" { | ||||
|       logo = mkOption { | ||||
|         type = str; # TODO: can the default be documented better, maybe with an enum? | ||||
|         default = "auto"; | ||||
|         description = '' | ||||
|           Logo to be displayed on the RPC item | ||||
| 
 | ||||
|         This must be either "auto" or an URL to your image of choice | ||||
|       ''; | ||||
|     }; | ||||
|           This must be either "auto" or an URL to your image of choice | ||||
|         ''; | ||||
|       }; | ||||
| 
 | ||||
|     logo_tooltip = mkOption { | ||||
|       type = str; | ||||
|       default = "The One True Text Editor"; | ||||
|       description = "Text displayed when hovering over the Neovim image"; | ||||
|     }; | ||||
|       logo_tooltip = mkOption { | ||||
|         type = str; | ||||
|         default = "The One True Text Editor"; | ||||
|         description = "Text displayed when hovering over the Neovim image"; | ||||
|       }; | ||||
| 
 | ||||
|     main_image = mkOption { | ||||
|       type = enum ["language" "logo"]; | ||||
|       default = "language"; | ||||
|       description = "Main image to be displayed"; | ||||
|     }; | ||||
|       main_image = mkOption { | ||||
|         type = enum ["language" "logo"]; | ||||
|         default = "language"; | ||||
|         description = "Main image to be displayed"; | ||||
|       }; | ||||
| 
 | ||||
|     client_id = mkOption { | ||||
|       type = str; | ||||
|       default = "1157438221865717891"; | ||||
|       description = "Client ID of the application"; | ||||
|     }; | ||||
|       client_id = mkOption { | ||||
|         type = str; | ||||
|         default = "1157438221865717891"; | ||||
|         description = "Client ID of the application"; | ||||
|       }; | ||||
| 
 | ||||
|     log_level = mkOption { | ||||
|       type = nullOr (enum ["debug" "info" "warn" "error"]); | ||||
|       default = null; | ||||
|       description = "Log level to be used by the plugin"; | ||||
|     }; | ||||
|       log_level = mkOption { | ||||
|         type = nullOr (enum ["debug" "info" "warn" "error"]); | ||||
|         default = null; | ||||
|         description = "Log level to be used by the plugin"; | ||||
|       }; | ||||
| 
 | ||||
|     debounce_timeout = mkOption { | ||||
|       type = int; | ||||
|       default = 10; | ||||
|       description = "Number of seconds to debounce events"; | ||||
|     }; | ||||
|       debounce_timeout = mkOption { | ||||
|         type = int; | ||||
|         default = 10; | ||||
|         description = "Number of seconds to debounce events"; | ||||
|       }; | ||||
| 
 | ||||
|     auto_update = mkOption { | ||||
|       type = bool; | ||||
|       default = true; | ||||
|       description = "Automatically update the presence"; | ||||
|     }; | ||||
|       auto_update = mkOption { | ||||
|         type = bool; | ||||
|         default = true; | ||||
|         description = "Automatically update the presence"; | ||||
|       }; | ||||
| 
 | ||||
|     enable_line_number = mkOption { | ||||
|       type = bool; | ||||
|       default = false; | ||||
|       description = "Show line number on the RPC item"; | ||||
|     }; | ||||
|       enable_line_number = mkOption { | ||||
|         type = bool; | ||||
|         default = false; | ||||
|         description = "Show line number on the RPC item"; | ||||
|       }; | ||||
| 
 | ||||
|     show_time = mkOption { | ||||
|       type = bool; | ||||
|       default = true; | ||||
|       description = "Show time on the RPC item"; | ||||
|     }; | ||||
|       show_time = mkOption { | ||||
|         type = bool; | ||||
|         default = true; | ||||
|         description = "Show time on the RPC item"; | ||||
|       }; | ||||
| 
 | ||||
|     blacklist = mkOption { | ||||
|       type = listOf str; | ||||
|       default = []; | ||||
|       example = literalExpression ''["Alpha"]''; | ||||
|       description = "List of filetypes to ignore"; | ||||
|     }; | ||||
|       blacklist = mkOption { | ||||
|         type = listOf str; | ||||
|         default = []; | ||||
|         example = literalExpression ''["Alpha"]''; | ||||
|         description = "List of filetypes to ignore"; | ||||
|       }; | ||||
| 
 | ||||
|     rich_presence = { | ||||
|       editing_text = mkOption { | ||||
|         type = str; | ||||
|         default = "Editing %s"; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Ching Pei Yang
				Ching Pei Yang