2024-02-10 20:49:27 -05:00
{
config ,
lib ,
. . .
} : let
2026-05-11 03:13:55 +02:00
inherit ( builtins ) seq ;
2024-03-23 20:14:39 -04:00
inherit ( lib . modules ) mkRemovedOptionModule mkRenamedOptionModule ;
2024-04-28 16:04:27 -04:00
inherit ( lib . options ) mkEnableOption mkOption literalExpression ;
2024-03-23 20:14:39 -04:00
inherit ( lib . strings ) toUpper ;
2024-04-28 16:04:27 -04:00
inherit ( lib . types ) int float bool str enum listOf attrsOf oneOf nullOr submodule ;
2026-05-11 03:13:55 +02:00
inherit ( lib . nvim . types ) mkPluginSetupOption' luaInline borderType ;
2024-03-16 09:29:32 +00:00
inherit ( lib . generators ) mkLuaInline ;
2024-02-10 20:49:27 -05:00
in {
2024-02-19 03:17:01 -05:00
imports = [
2024-02-19 11:10:44 +01:00
( mkRenamedOptionModule [ " v i m " " v i s u a l s " " f i d g e t - n v i m " " a l i g n " " b o t t o m " ] [ " v i m " " v i s u a l s " " f i d g e t - n v i m " " s e t u p O p t s " " n o t i f i c a t i o n " " w i n d o w " " a l i g n " ] )
2024-11-08 12:56:21 +03:00
( mkRemovedOptionModule [ " v i m " " v i s u a l s " " f i d g e t - n v i m " " a l i g n " " r i g h t " ] ''
Option ` vim . fidget-nvim . align . right ` has been removed and does not have an
equivalent replacement in rewritten fidget . nvim configuration . Please remove
it from your configuration .
'' )
2024-02-19 03:17:01 -05:00
] ;
2024-02-10 20:49:27 -05:00
options . vim . visuals . fidget-nvim = {
enable = mkEnableOption " n v i m L S P U I e l e m e n t [ f i d g e t - n v i m ] " ;
2026-05-11 03:13:55 +02:00
setupOpts = mkPluginSetupOption' " F i d g e t " ( { options , . . . }: {
options = {
progress = {
poll_rate = mkOption {
2024-03-23 20:14:39 -04:00
type = int ;
2026-05-11 03:13:55 +02:00
default = 0 ;
description = " H o w f r e q u e n t l y t o p o l l f o r L S P p r o g r e s s m e s s a g e s " ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
suppress_on_insert = mkOption {
type = bool ;
default = false ;
description = " S u p p r e s s n e w m e s s a g e s w h e n i n i n s e r t m o d e " ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
ignore_done_already = mkOption {
type = bool ;
default = false ;
description = " I g n o r e n e w t a s k s t h a t a r e a l r e a d y d o n e " ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
ignore_empty_message = mkOption {
2024-03-23 20:14:39 -04:00
type = bool ;
2026-05-11 03:13:55 +02:00
default = false ;
description = " I g n o r e n e w t a s k s w i t h e m p t y m e s s a g e s " ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
notification_group = mkOption {
2024-04-27 16:06:31 +02:00
type = luaInline ;
default = mkLuaInline ''
2026-05-11 03:13:55 +02:00
function ( msg )
return msg . lsp_client . name
end
2024-02-10 20:49:27 -05:00
'' ;
2026-05-11 03:13:55 +02:00
description = " H o w t o g e t a p r o g r e s s m e s s a g e ' s n o t i f i c a t i o n g r o u p k e y " ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
clear_on_detach = mkOption {
type = nullOr luaInline ;
2024-04-27 16:06:31 +02:00
default = mkLuaInline ''
2026-05-11 03:13:55 +02:00
function ( client_id )
local client = vim . lsp . get_client_by_id ( client_id )
return client and client . name or nil
end
2024-02-10 20:49:27 -05:00
'' ;
2026-05-11 03:13:55 +02:00
defaultText = literalExpression ''
default = mkLuaInline '' '
function ( client_id )
local client = vim . lsp . get_client_by_id ( client_id )
return client and client . name or nil
end
'' ' ;
2024-02-10 20:49:27 -05:00
'' ;
2026-05-11 03:13:55 +02:00
description = " C l e a r n o t i f i c a t i o n g r o u p w h e n L S P s e r v e r d e t a c h e s " ;
} ;
ignore = mkOption {
type = listOf str ;
default = [ ] ;
description = " I g n o r e L S P s e r v e r s b y n a m e " ;
2024-02-10 20:49:27 -05:00
} ;
2024-04-28 16:04:27 -04:00
2026-05-11 03:13:55 +02:00
display = {
render_limit = mkOption {
type = int ;
default = 16 ;
description = " M a x i m u m n u m b e r o f m e s s a g e s t o r e n d e r " ;
} ;
done_ttl = mkOption {
type = int ;
default = 3 ;
description = " H o w l o n g a m e s s a g e s h o u l d p e r s i s t w h e n c o m p l e t e " ;
} ;
done_icon = mkOption {
type = str ;
default = " ✓ " ;
description = " I c o n s h o w n w h e n L S P p r o g r e s s t a s k s a r e c o m p l e t e d " ;
} ;
done_style = mkOption {
type = str ;
default = " C o n s t a n t " ;
description = " H i g h l i g h t g r o u p f o r c o m p l e t e d L S P t a s k s " ;
} ;
progress_ttl = mkOption {
type = int ;
default = 99999 ;
description = " H o w l o n g a m e s s a g e s h o u l d p e r s i s t w h e n i n p r o g r e s s " ;
} ;
progress_icon = {
pattern = mkOption {
type = enum [
" d o t s "
" d o t s _ n e g a t i v e "
" d o t s _ s n a k e "
" d o t s _ f o o t s t e p s "
" d o t s _ h o p "
" l i n e "
" p i p e "
" d o t s _ e l l i p s i s "
" d o t s _ s c r o l l i n g "
" s t a r "
" f l i p "
" h a m b u r g e r "
" g r o w _ v e r t i c a l "
" g r o w _ h o r i z o n t a l "
" n o i s e "
" d o t s _ b o u n c e "
" t r i a n g l e "
" a r c "
" c i r c l e "
" s q u a r e _ c o r n e r s "
" c i r c l e _ q u a r t e r s "
" c i r c l e _ h a l v e s "
" d o t s _ t o g g l e "
" b o x _ t o g g l e "
" a r r o w "
" z i p "
" b o u n c i n g _ b a r "
" b o u n c i n g _ b a l l "
" c l o c k "
" e a r t h "
" m o o n "
" d o t s _ p u l s e "
" m e t e r "
] ;
default = " d o t s " ;
description = " P a t t e r n s h o w n w h e n L S P p r o g r e s s t a s k s a r e i n p r o g r e s s " ;
} ;
period = mkOption {
type = int ;
default = 1 ;
description = " P e r i o d o f t h e p a t t e r n " ;
} ;
} ;
progress_style = mkOption {
type = str ;
default = " W a r n i n g M s g " ;
description = " H i g h l i g h t g r o u p f o r i n - p r o g r e s s L S P t a s k s " ;
} ;
group_style = mkOption {
type = str ;
default = " T i t l e " ;
description = " H i g h l i g h t g r o u p f o r g r o u p n a m e ( L S P s e r v e r n a m e ) " ;
} ;
icon_style = mkOption {
type = str ;
default = " Q u e s t i o n " ;
description = " H i g h l i g h t g r o u p f o r g r o u p i c o n s " ;
} ;
priority = mkOption {
type = int ;
default = 30 ;
description = " P r i o r i t y o f t h e p r o g r e s s n o t i f i c a t i o n " ;
} ;
skip_history = mkOption {
type = bool ;
default = true ;
description = " S k i p a d d i n g m e s s a g e s t o h i s t o r y " ;
} ;
format_message = mkOption {
type = luaInline ;
default = mkLuaInline ''
require ( " f i d g e t . p r o g r e s s . d i s p l a y " ) . default_format_message
'' ;
description = " H o w t o f o r m a t a p r o g r e s s m e s s a g e " ;
} ;
format_annote = mkOption {
type = luaInline ;
default = mkLuaInline ''
function ( msg ) return msg . title end
'' ;
description = " H o w t o f o r m a t a p r o g r e s s a n n o t a t i o n " ;
} ;
format_group_name = mkOption {
type = luaInline ;
default = mkLuaInline ''
function ( group ) return tostring ( group ) end
'' ;
description = " H o w t o f o r m a t a p r o g r e s s n o t i f i c a t i o n g r o u p ' s n a m e " ;
} ;
overrides = mkOption {
type = attrsOf ( submodule {
options = {
name = mkOption {
type = nullOr ( oneOf [ str luaInline ] ) ;
default = null ;
description = ''
Name of the group , displayed in the notification window .
Can be a string or a function that returns a string .
If a function , it is invoked every render cycle with the items
list , useful for rendering animations and other dynamic content .
2024-04-28 16:04:27 -04:00
2026-05-11 03:13:55 +02:00
: : : { . note }
If you're looking for detailed information into the function
signature , you can refer to the fidget API documentation available
[ here ] ( https://github.com/j-hui/fidget.nvim/blob/1ba38e4cbb24683973e00c2e36f53ae64da38ef5/doc/fidget-api.txt #L70-L77)
: : :
'' ;
} ;
icon = mkOption {
type = nullOr ( oneOf [ str luaInline ] ) ;
default = null ;
description = ''
Icon of the group , displayed in the notification window .
Can be a string or a function that returns a string .
2024-04-28 16:04:27 -04:00
2026-05-11 03:13:55 +02:00
If a function , it is invoked every render cycle with the items
list , useful for rendering animations and other dynamic content .
2024-04-28 16:04:27 -04:00
2026-05-11 03:13:55 +02:00
: : : { . note }
If you're looking for detailed information into the function
signature , you can refer to the fidget API documentation available
[ here ] ( https://github.com/j-hui/fidget.nvim/blob/1ba38e4cbb24683973e00c2e36f53ae64da38ef5/doc/fidget-api.txt #L70-L77)
: : :
'' ;
} ;
icon_on_left = mkOption {
type = nullOr bool ;
default = null ;
description = " I f t r u e , i c o n i s r e n d e r e d o n t h e l e f t i n s t e a d o f r i g h t " ;
} ;
annote_separator = mkOption {
type = nullOr str ;
default = " " ;
description = " S e p a r a t o r b e t w e e n m e s s a g e f r o m a n n o t e " ;
} ;
ttl = mkOption {
type = nullOr int ;
default = 5 ;
description = " H o w l o n g a n o t i f i c a t i o n i t e m s h o u l d e x i s t " ;
} ;
render_limit = mkOption {
type = nullOr int ;
default = null ;
description = " H o w m a n y n o t i f i c a t i o n i t e m s t o s h o w a t o n c e " ;
} ;
group_style = mkOption {
type = nullOr str ;
default = " T i t l e " ;
description = " S t y l e u s e d t o h i g h l i g h t g r o u p n a m e " ;
} ;
icon_style = mkOption {
type = nullOr str ;
default = null ;
description = " S t y l e u s e d t o h i g h l i g h t i c o n , i f n u l l , u s e g r o u p _ s t y l e " ;
} ;
annote_style = mkOption {
type = nullOr str ;
default = " Q u e s t i o n " ;
description = " D e f a u l t s t y l e u s e d t o h i g h l i g h t i t e m a n n o t e s " ;
} ;
debug_style = mkOption {
type = nullOr str ;
default = null ;
description = " S t y l e u s e d t o h i g h l i g h t d e b u g i t e m a n n o t e s " ;
} ;
info_style = mkOption {
type = nullOr str ;
default = null ;
description = " S t y l e u s e d t o h i g h l i g h t i n f o i t e m a n n o t e s " ;
} ;
warn_style = mkOption {
type = nullOr str ;
default = null ;
description = " S t y l e u s e d t o h i g h l i g h t w a r n i t e m a n n o t e s " ;
} ;
error_style = mkOption {
type = nullOr str ;
default = null ;
description = " S t y l e u s e d t o h i g h l i g h t e r r o r i t e m a n n o t e s " ;
} ;
debug_annote = mkOption {
type = nullOr str ;
default = null ;
description = " D e f a u l t a n n o t a t i o n f o r d e b u g i t e m s " ;
} ;
info_annote = mkOption {
type = nullOr str ;
default = null ;
description = " D e f a u l t a n n o t a t i o n f o r i n f o i t e m s " ;
} ;
warn_annote = mkOption {
type = nullOr str ;
default = null ;
description = " D e f a u l t a n n o t a t i o n f o r w a r n i t e m s " ;
} ;
error_annote = mkOption {
type = nullOr str ;
default = null ;
description = " D e f a u l t a n n o t a t i o n f o r e r r o r i t e m s " ;
} ;
priority = mkOption {
type = nullOr int ;
default = 50 ;
description = " O r d e r i n w h i c h g r o u p s h o u l d b e d i s p l a y e d " ;
} ;
skip_history = mkOption {
type = nullOr bool ;
default = null ;
description = " W h e t h e r m e s s a g e s s h o u l d b e p r e s e r v e d i n h i s t o r y " ;
} ;
update_hook = mkOption {
type = nullOr ( oneOf [ bool luaInline ] ) ;
default = false ;
description = ''
Called when an item is updated .
2024-04-28 16:04:27 -04:00
2026-05-11 03:13:55 +02:00
If false , no action is taken .
If a function , it is invoked with the item being updated .
2024-04-28 16:04:27 -04:00
2026-05-11 03:13:55 +02:00
: : : { . note }
If you're looking for detailed information into the function
signature , you can refer to the fidget API documentation available
[ here ] ( https://github.com/j-hui/fidget.nvim/blob/1ba38e4cbb24683973e00c2e36f53ae64da38ef5/doc/fidget-api.txt #L114)
: : :
'' ;
} ;
2024-04-28 16:04:27 -04:00
} ;
2026-05-11 03:13:55 +02:00
} ) ;
default = { } ;
example = literalExpression ''
{
rust_analyzer = {
name = " R u s t A n a l y z e r " ;
} ;
}
'' ;
description = ''
Overrides the default configuration for a notification group defined
in { option } ` vim . visuals . fidget-nvim . setupOpts . notification . configs ` .
2026-05-10 02:48:04 +02:00
2026-05-11 03:13:55 +02:00
If any of the fields are null , the value from the default
configuration is used .
2026-05-10 02:48:04 +02:00
2026-05-11 03:13:55 +02:00
If default configuration is not defined , the following defaults are used :
` ` ` lua
{
name = " N o t i f i c a t i o n s " ,
icon = " ❰ ❰ " ,
ttl = 5 ,
group_style = " T i t l e " ,
icon_style = " S p e c i a l " ,
annote_style = " Q u e s t i o n " ,
debug_style = " C o m m e n t " ,
info_style = " Q u e s t i o n " ,
warn_style = " W a r n i n g M s g " ,
error_style = " E r r o r M s g " ,
debug_annote = " D E B U G " ,
info_annote = " I N F O " ,
warn_annote = " W A R N " ,
error_annote = " E R R O R " ,
update_hook = function ( item )
notification . set_content_key ( item )
end ,
}
` ` `
'' ;
} ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
lsp = {
progress_ringbuf_size = mkOption {
type = int ;
default = 100 ;
description = " N v i m ' s L S P c l i e n t r i n g b u f f e r s i z e " ;
} ;
log_handler = mkOption {
type = bool ;
default = false ;
description = " L o g ` $ / p r o g r e s s ` h a n d l e r i n v o c a t i o n s " ;
} ;
2024-02-10 20:49:27 -05:00
} ;
} ;
2026-05-11 03:13:55 +02:00
notification = {
poll_rate = mkOption {
type = int ;
default = 10 ;
description = " H o w f r e q u e n t l y t o u p d a t e a n d r e n d e r n o t i f i c a t i o n s " ;
2025-12-23 19:51:20 +01:00
} ;
2026-05-11 03:13:55 +02:00
filter = mkOption {
type = enum [ " d e b u g " " i n f o " " w a r n " " e r r o r " ] ;
default = " i n f o " ;
description = " M i n i m u m n o t i f i c a t i o n s l e v e l " ;
apply = filter : mkLuaInline " v i m . l o g . l e v e l s . ${ toUpper filter } " ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
history_size = mkOption {
type = int ;
default = 128 ;
description = " N u m b e r o f r e m o v e d m e s s a g e s t o r e t a i n i n h i s t o r y " ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
override_vim_notify = mkOption {
type = bool ;
default = false ;
description = " A u t o m a t i c a l l y o v e r r i d e v i m . n o t i f y ( ) w i t h F i d g e t " ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
configs = mkOption {
type = attrsOf luaInline ;
default = { default = mkLuaInline " r e q u i r e ( ' f i d g e t . n o t i f i c a t i o n ' ) . d e f a u l t _ c o n f i g " ; } ;
description = " H o w t o c o n f i g u r e n o t i f i c a t i o n g r o u p s w h e n i n s t a n t i a t e d " ;
2025-12-23 19:51:20 +01:00
} ;
2026-05-11 03:13:55 +02:00
redirect = mkOption {
2024-04-27 16:06:31 +02:00
type = luaInline ;
default = mkLuaInline ''
2026-05-11 03:13:55 +02:00
function ( msg , level , opts )
if opts and opts . on_open then
return require ( " f i d g e t . i n t e g r a t i o n . n v i m - n o t i f y " ) . delegate ( msg , level , opts )
end
2024-02-10 20:49:27 -05:00
end
'' ;
2026-05-11 03:13:55 +02:00
description = " C o n d i t i o n a l l y r e d i r e c t n o t i f i c a t i o n s t o a n o t h e r b a c k e n d " ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
view = {
stack_upwards = mkOption {
type = bool ;
default = true ;
description = " D i s p l a y n o t i f i c a t i o n i t e m s f r o m b o t t o m t o t o p " ;
} ;
align = mkOption {
type = enum [ " m e s s a g e " " a n n o t e " ] ;
default = " m e s s a g e " ;
description = " I n d e n t m e s s a g e s l o n g e r t h a n a s i n g l e l i n e " ;
} ;
reflow = mkOption {
type = enum [ " h a r d " " h y p h e n a t e " " e l l i p s i s " " f a l s e " ] ;
default = " f a l s e " ;
description = ''
Reflow ( wrap ) messages wider than notification window
2025-12-23 19:51:20 +01:00
2026-05-11 03:13:55 +02:00
The various options determine how wrapping is handled mid-word .
'' ;
} ;
icon_separator = mkOption {
type = str ;
default = " " ;
description = " S e p a r a t o r b e t w e e n g r o u p n a m e a n d i c o n " ;
} ;
group_separator = mkOption {
type = str ;
default = " - - - " ;
description = " S e p a r a t o r b e t w e e n n o t i f i c a t i o n g r o u p s " ;
} ;
group_separator_hl = mkOption {
type = str ;
default = " C o m m e n t " ;
description = " H i g h l i g h t g r o u p u s e d f o r g r o u p s e p a r a t o r " ;
} ;
line_margin = mkOption {
type = int ;
default = 1 ;
description = ''
Spaces to pad both sides of each non-empty line
Useful for adding a visual gap between notification text
and any buffer it may overlap with .
'' ;
} ;
render_message = mkOption {
type = luaInline ;
default = mkLuaInline ''
function ( msg , cnt )
return cnt = = 1 and msg or string . format ( " ( % d x ) % s " , cnt , msg )
end
'' ;
description = " H o w t o r e n d e r n o t i f i c a t i o n m e s s a g e s " ;
} ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
window = {
normal_hl = mkOption {
type = str ;
default = " C o m m e n t " ;
description = " B a s e h i g h l i g h t g r o u p i n t h e n o t i f i c a t i o n w i n d o w " ;
} ;
winblend = mkOption {
type = int ;
default = 100 ;
description = " B a c k g r o u n d c o l o r o p a c i t y i n t h e n o t i f i c a t i o n w i n d o w " ;
} ;
border = mkOption {
type = borderType ;
default =
if config . vim . ui . borders . enable
then config . vim . ui . borders . globalStyle
else " n o n e " ;
description = " B o r d e r s t y l e o f t h e n o t i f i c a t i o n w i n d o w " ;
} ;
border_hl = mkOption {
type = str ;
default = " " ;
description = ''
Highlight group for notification window border
Set to empty string to keep your theme's default ` FloatBorder ` highlight .
'' ;
} ;
zindex = mkOption {
type = int ;
default = 45 ;
description = " S t a c k i n g p r i o r i t y o f t h e n o t i f i c a t i o n w i n d o w " ;
} ;
max_width = mkOption {
type = int ;
default = 0 ;
description = " M a x i m u m w i d t h o f t h e n o t i f i c a t i o n w i n d o w " ;
} ;
max_height = mkOption {
type = int ;
default = 0 ;
description = " M a x i m u m h e i g h t o f t h e n o t i f i c a t i o n w i n d o w " ;
} ;
x_padding = mkOption {
type = int ;
default = 1 ;
description = " P a d d i n g f r o m r i g h t e d g e o f w i n d o w b o u n d a r y " ;
} ;
y_padding = mkOption {
type = int ;
default = 0 ;
description = " P a d d i n g f r o m b o t t o m e d g e o f w i n d o w b o u n d a r y " ;
} ;
align = mkOption {
type = enum [ " t o p " " b o t t o m " ] ;
default = " b o t t o m " ;
description = " H o w t o a l i g n t h e n o t i f i c a t i o n w i n d o w " ;
} ;
relative = mkOption {
type = enum [ " e d i t o r " " w i n " ] ;
default = " e d i t o r " ;
description = " W h a t t h e n o t i f i c a t i o n w i n d o w p o s i t i o n i s r e l a t i v e t o " ;
} ;
tabstop = mkOption {
type = int ;
default = 8 ;
description = " W i d t h o f e a c h t a b c h a r a c t e r i n t h e n o t i f i c a t i o n w i n d o w " ;
} ;
avoid = mkOption {
type = listOf str ;
default = [ ] ;
description = " F i l e t y p e s t h e n o t i f i c a t i o n w i n d o w s h o u l d a v o i d " ;
} ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
} ;
logger = {
level = mkOption {
type = enum [ " d e b u g " " e r r o r " " i n f o " " t r a c e " " w a r n " " o f f " ] ;
default = " w a r n " ;
description = " M i n i m u m l o g g i n g l e v e l " ;
apply = logLevel : mkLuaInline " v i m . l o g . l e v e l s . ${ toUpper logLevel } " ;
} ;
max_size = mkOption {
2024-03-23 20:14:39 -04:00
type = int ;
2026-05-11 03:13:55 +02:00
default = 10000 ;
description = " M a x i m u m l o g f i l e s i z e , i n K B " ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
float_precision = mkOption {
type = float ;
default = 0 .01 ;
description = " L i m i t t h e n u m b e r o f d e c i m a l s d i s p l a y e d f o r f l o a t s " ;
2025-12-23 19:51:20 +01:00
} ;
2026-05-11 03:13:55 +02:00
path = mkOption {
type = luaInline ;
default = mkLuaInline ''
string . format ( " % s / f i d g e t . n v i m . l o g " , vim . fn . stdpath ( " c a c h e " ) )
'' ;
description = " W h e r e F i d g e t w r i t e s i t s l o g s t o " ;
2025-12-23 19:51:20 +01:00
} ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
# removed, see below
integration = {
nvim-tree . enable = mkOption { visible = false ; } ;
xcodebuild-nvim . enable = mkOption { visible = false ; } ;
} ;
2024-02-10 20:49:27 -05:00
} ;
2026-05-11 03:13:55 +02:00
config = let
# can't do it as either `mkRemovedOptionModule` or assertions
# because these are inside of `mkPluginSetupOption` which is a submodule
# `mkOption`'s `apply` won't work either, it evaluates regardless of
# whether the option was set or not
# inspired by https://github.com/NixOS/nixpkgs/blob/0bdd08c33a3f6311f3d9fbe13bac0a0996230ecc/nixos/modules/virtualisation/nixos-containers.nix#L895-L931
assertions =
if options . integration . nvim-tree . enable . isDefined then
throw ''
2025-12-23 19:51:20 +01:00
Option ` vim . visuals . fidget-nvim . setupOpts . integration . nvim-tree . enable `
has been deprecated upstream . Use
` vim . visuals . fidget-nvim . setupOpts . notification . window . avoid = [ " N v i m T r e e " ] ` instead .
This is already set if ` vim . filetree . nvimTree . enable = = true ` .
2026-05-11 03:13:55 +02:00
''
else if options . integration . xcodebuild-nvim . enable . isDefined then
throw ''
2025-12-23 19:51:20 +01:00
Option ` vim . visuals . fidget-nvim . setupOpts . integration . xcodebuild-nvim . enable `
has been deprecated upstream . Use
` vim . visuals . fidget-nvim . setupOpts . notification . window . avoid = [ " T e s t E x p l o r e r " ] ` instead .
2026-05-11 03:13:55 +02:00
''
else
null ;
in
seq assertions { } ;
} ) ;
2024-02-10 20:49:27 -05:00
} ;
}