mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 19:12:38 +00:00 
			
		
		
		
	languages: move bash & dart configurations to standalone files
This commit is contained in:
		
					parent
					
						
							
								1847b9f1bf
							
						
					
				
			
			
				commit
				
					
						6eba2a5585
					
				
			
		
					 6 changed files with 94 additions and 184 deletions
				
			
		|  | @ -1,15 +1,17 @@ | ||||||
| { | { | ||||||
|   pkgs, |  | ||||||
|   config, |   config, | ||||||
|  |   pkgs, | ||||||
|   lib, |   lib, | ||||||
|   ... |   ... | ||||||
| }: let | }: let | ||||||
|   inherit (builtins) attrNames; |   inherit (builtins) attrNames; | ||||||
|   inherit (lib.options) mkOption mkEnableOption literalExpression; |   inherit (lib.options) mkOption mkEnableOption literalExpression; | ||||||
|  |   inherit (lib.modules) mkIf mkMerge; | ||||||
|   inherit (lib.lists) isList; |   inherit (lib.lists) isList; | ||||||
|   inherit (lib.types) enum either package listOf str bool; |   inherit (lib.types) enum either package listOf str bool; | ||||||
|   inherit (lib.nvim.lua) expToLua; |   inherit (lib.nvim.languages) diagnosticsToLua; | ||||||
|   inherit (lib.nvim.types) diagnostics mkGrammarOption; |   inherit (lib.nvim.types) diagnostics mkGrammarOption; | ||||||
|  |   inherit (lib.nvim.lua) expToLua; | ||||||
| 
 | 
 | ||||||
|   cfg = config.vim.languages.bash; |   cfg = config.vim.languages.bash; | ||||||
| 
 | 
 | ||||||
|  | @ -55,6 +57,7 @@ | ||||||
|           ls_sources, |           ls_sources, | ||||||
|           null_ls.builtins.diagnostics.shellcheck.with({ |           null_ls.builtins.diagnostics.shellcheck.with({ | ||||||
|             command = "${pkg}/bin/shellcheck", |             command = "${pkg}/bin/shellcheck", | ||||||
|  |             diagnostics_format = "#{m} [#{c}]" | ||||||
|           }) |           }) | ||||||
|         ) |         ) | ||||||
|       ''; |       ''; | ||||||
|  | @ -114,4 +117,30 @@ in { | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable (mkMerge [ | ||||||
|  |     (mkIf cfg.treesitter.enable { | ||||||
|  |       vim.treesitter.enable = true; | ||||||
|  |       vim.treesitter.grammars = [cfg.treesitter.package]; | ||||||
|  |     }) | ||||||
|  | 
 | ||||||
|  |     (mkIf cfg.lsp.enable { | ||||||
|  |       vim.lsp.lspconfig.enable = true; | ||||||
|  |       vim.lsp.lspconfig.sources.bash-lsp = servers.${cfg.lsp.server}.lspConfig; | ||||||
|  |     }) | ||||||
|  | 
 | ||||||
|  |     (mkIf cfg.format.enable { | ||||||
|  |       vim.lsp.null-ls.enable = true; | ||||||
|  |       vim.lsp.null-ls.sources.bash-format = formats.${cfg.format.type}.nullConfig; | ||||||
|  |     }) | ||||||
|  | 
 | ||||||
|  |     (mkIf cfg.extraDiagnostics.enable { | ||||||
|  |       vim.lsp.null-ls.enable = true; | ||||||
|  |       vim.lsp.null-ls.sources = diagnosticsToLua { | ||||||
|  |         lang = "bash"; | ||||||
|  |         config = cfg.extraDiagnostics.types; | ||||||
|  |         inherit diagnosticsProviders; | ||||||
|  |       }; | ||||||
|  |     }) | ||||||
|  |   ]); | ||||||
| } | } | ||||||
|  | @ -1,83 +0,0 @@ | ||||||
| { |  | ||||||
|   pkgs, |  | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   ... |  | ||||||
| }: let |  | ||||||
|   inherit (lib.lists) isList; |  | ||||||
|   inherit (lib.modules) mkIf mkMerge; |  | ||||||
|   inherit (lib.nvim.lua) expToLua; |  | ||||||
|   inherit (lib.nvim.languages) diagnosticsToLua; |  | ||||||
| 
 |  | ||||||
|   cfg = config.vim.languages.bash; |  | ||||||
|   diagnosticsProviders = { |  | ||||||
|     shellcheck = { |  | ||||||
|       package = pkgs.shellcheck; |  | ||||||
|       nullConfig = pkg: '' |  | ||||||
|         table.insert( |  | ||||||
|           ls_sources, |  | ||||||
|           null_ls.builtins.diagnostics.shellcheck.with({ |  | ||||||
|             command = "${pkg}/bin/shellcheck", |  | ||||||
|           }) |  | ||||||
|         ) |  | ||||||
|       ''; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   formats = { |  | ||||||
|     shfmt = { |  | ||||||
|       package = pkgs.shfmt; |  | ||||||
|       nullConfig = '' |  | ||||||
|         table.insert( |  | ||||||
|           ls_sources, |  | ||||||
|           null_ls.builtins.formatting.shfmt.with({ |  | ||||||
|             command = "${pkgs.shfmt}/bin/shfmt", |  | ||||||
|           }) |  | ||||||
|         ) |  | ||||||
|       ''; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   servers = { |  | ||||||
|     bash-ls = { |  | ||||||
|       package = pkgs.nodePackages.bash-language-server; |  | ||||||
|       lspConfig = '' |  | ||||||
|         lspconfig.bashls.setup{ |  | ||||||
|           capabilities = capabilities; |  | ||||||
|           on_attach = default_on_attach; |  | ||||||
|           cmd = ${ |  | ||||||
|           if isList cfg.lsp.package |  | ||||||
|           then expToLua cfg.lsp.package |  | ||||||
|           else ''{"${cfg.lsp.package}/bin/bash-language-server",  "start"}'' |  | ||||||
|         }; |  | ||||||
|         } |  | ||||||
|       ''; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| in { |  | ||||||
|   config = mkIf cfg.enable (mkMerge [ |  | ||||||
|     (mkIf cfg.treesitter.enable { |  | ||||||
|       vim.treesitter.enable = true; |  | ||||||
|       vim.treesitter.grammars = [cfg.treesitter.package]; |  | ||||||
|     }) |  | ||||||
| 
 |  | ||||||
|     (mkIf cfg.lsp.enable { |  | ||||||
|       vim.lsp.lspconfig.enable = true; |  | ||||||
|       vim.lsp.lspconfig.sources.bash-lsp = servers.${cfg.lsp.server}.lspConfig; |  | ||||||
|     }) |  | ||||||
| 
 |  | ||||||
|     (mkIf cfg.format.enable { |  | ||||||
|       vim.lsp.null-ls.enable = true; |  | ||||||
|       vim.lsp.null-ls.sources.bash-format = formats.${cfg.format.type}.nullConfig; |  | ||||||
|     }) |  | ||||||
| 
 |  | ||||||
|     (mkIf cfg.extraDiagnostics.enable { |  | ||||||
|       vim.lsp.null-ls.enable = true; |  | ||||||
|       vim.lsp.null-ls.sources = diagnosticsToLua { |  | ||||||
|         lang = "bash"; |  | ||||||
|         config = cfg.extraDiagnostics.types; |  | ||||||
|         inherit diagnosticsProviders; |  | ||||||
|       }; |  | ||||||
|     }) |  | ||||||
|   ]); |  | ||||||
| } |  | ||||||
|  | @ -1,6 +0,0 @@ | ||||||
| { |  | ||||||
|   imports = [ |  | ||||||
|     ./bash.nix |  | ||||||
|     ./config.nix |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,18 +1,23 @@ | ||||||
| { | { | ||||||
|   config, |   config, | ||||||
|   lib, |  | ||||||
|   pkgs, |   pkgs, | ||||||
|  |   lib, | ||||||
|   ... |   ... | ||||||
| }: let | }: let | ||||||
|   inherit (builtins) attrNames; |   inherit (builtins) attrNames; | ||||||
|  |   inherit (lib.modules) mkIf mkMerge; | ||||||
|  |   inherit (lib.trivial) boolToString; | ||||||
|   inherit (lib.lists) isList; |   inherit (lib.lists) isList; | ||||||
|   inherit (lib.options) mkEnableOption mkOption; |   inherit (lib.options) mkEnableOption mkOption; | ||||||
|   inherit (lib.types) enum either listOf package nullOr str bool; |   inherit (lib.types) enum either listOf package nullOr str bool; | ||||||
|   inherit (lib.strings) optionalString; |   inherit (lib.strings) optionalString; | ||||||
|   inherit (lib.nvim.lua) expToLua; |   inherit (lib.nvim.lua) expToLua; | ||||||
|   inherit (lib.nvim.types) mkGrammarOption; |   inherit (lib.nvim.types) mkGrammarOption; | ||||||
|  |   inherit (lib.nvim.dag) entryAnywhere; | ||||||
| 
 | 
 | ||||||
|   cfg = config.vim.languages.dart; |   cfg = config.vim.languages.dart; | ||||||
|  |   ftcfg = cfg.flutter-tools; | ||||||
|  | 
 | ||||||
|   defaultServer = "dart"; |   defaultServer = "dart"; | ||||||
|   servers = { |   servers = { | ||||||
|     dart = { |     dart = { | ||||||
|  | @ -48,15 +53,16 @@ in { | ||||||
|         default = defaultServer; |         default = defaultServer; | ||||||
|       }; |       }; | ||||||
|       package = mkOption { |       package = mkOption { | ||||||
|         description = "Dart LSP server package, or the command to run as a list of strings"; |  | ||||||
|         example = ''[lib.getExe pkgs.jdt-language-server "-data" "~/.cache/jdtls/workspace"]''; |  | ||||||
|         type = either package (listOf str); |         type = either package (listOf str); | ||||||
|         default = servers.${cfg.lsp.server}.package; |         default = servers.${cfg.lsp.server}.package; | ||||||
|  |         example = ''[lib.getExe pkgs.jdt-language-server "-data" "~/.cache/jdtls/workspace"]''; | ||||||
|  |         description = "Dart LSP server package, or the command to run as a list of strings"; | ||||||
|       }; |       }; | ||||||
|  | 
 | ||||||
|       opts = mkOption { |       opts = mkOption { | ||||||
|         description = "Options to pass to Dart LSP server"; |  | ||||||
|         type = nullOr str; |         type = nullOr str; | ||||||
|         default = null; |         default = null; | ||||||
|  |         description = "Options to pass to Dart LSP server"; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  | @ -70,23 +76,26 @@ in { | ||||||
| 
 | 
 | ||||||
|     flutter-tools = { |     flutter-tools = { | ||||||
|       enable = mkOption { |       enable = mkOption { | ||||||
|         description = "Enable flutter-tools for flutter support"; |  | ||||||
|         type = bool; |         type = bool; | ||||||
|         default = config.vim.languages.enableLSP; |         default = config.vim.languages.enableLSP; | ||||||
|  |         description = "Enable flutter-tools for flutter support"; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|       enableNoResolvePatch = mkOption { |       enableNoResolvePatch = mkOption { | ||||||
|         description = '' |  | ||||||
|           Patch flutter-tools so that it doesn't resolve symlinks when detecting flutter path. |  | ||||||
|           This is required if you want to use a flutter package built with nix. |  | ||||||
|           If you are using a flutter SDK installed from a different source and encounter the error "`dart` missing from PATH", disable this option. |  | ||||||
|         ''; |  | ||||||
|         type = bool; |         type = bool; | ||||||
|         default = true; |         default = true; | ||||||
|  |         description = '' | ||||||
|  |           Whether to patch flutter-tools so that it doesn't resolve | ||||||
|  |           symlinks when detecting flutter path. | ||||||
|  | 
 | ||||||
|  |           This is required if you want to use a flutter package built with nix. | ||||||
|  |           If you are using a flutter SDK installed from a different source | ||||||
|  |           and encounter the error "`dart` missing from PATH", disable this option. | ||||||
|  |         ''; | ||||||
|       }; |       }; | ||||||
| 
 | 
 | ||||||
|       color = { |       color = { | ||||||
|         enable = mkEnableOption "Whether or mot to highlight color variables at all"; |         enable = mkEnableOption "highlighting color variables"; | ||||||
| 
 | 
 | ||||||
|         highlightBackground = mkOption { |         highlightBackground = mkOption { | ||||||
|           type = bool; |           type = bool; | ||||||
|  | @ -112,4 +121,47 @@ in { | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  | 
 | ||||||
|  |   config = mkIf cfg.enable (mkMerge [ | ||||||
|  |     (mkIf cfg.treesitter.enable { | ||||||
|  |       vim.treesitter.enable = true; | ||||||
|  |       vim.treesitter.grammars = [cfg.treesitter.package]; | ||||||
|  |     }) | ||||||
|  | 
 | ||||||
|  |     (mkIf cfg.lsp.enable { | ||||||
|  |       vim.lsp.lspconfig.enable = true; | ||||||
|  | 
 | ||||||
|  |       vim.lsp.lspconfig.sources.dart-lsp = servers.${cfg.lsp.server}.lspConfig; | ||||||
|  |     }) | ||||||
|  | 
 | ||||||
|  |     (mkIf ftcfg.enable { | ||||||
|  |       vim.startPlugins = | ||||||
|  |         if ftcfg.enableNoResolvePatch | ||||||
|  |         then ["flutter-tools-patched"] | ||||||
|  |         else ["flutter-tools"]; | ||||||
|  | 
 | ||||||
|  |       vim.luaConfigRC.flutter-tools = entryAnywhere '' | ||||||
|  |         require('flutter-tools').setup { | ||||||
|  |           lsp = { | ||||||
|  |             color = { -- show the derived colours for dart variables | ||||||
|  |               enabled = ${boolToString ftcfg.color.enable}, -- whether or not to highlight color variables at all, only supported on flutter >= 2.10 | ||||||
|  |               background = ${boolToString ftcfg.color.highlightBackground}, -- highlight the background | ||||||
|  |               foreground = ${boolToString ftcfg.color.highlightForeground}, -- highlight the foreground | ||||||
|  |               virtual_text = ${boolToString ftcfg.color.virtualText.enable}, -- show the highlight using virtual text | ||||||
|  |               virtual_text_str = ${ftcfg.color.virtualText.character} -- the virtual text character to highlight | ||||||
|  |             }, | ||||||
|  | 
 | ||||||
|  |             capabilities = capabilities, | ||||||
|  |             on_attach = default_on_attach; | ||||||
|  |             flags = lsp_flags, | ||||||
|  |           }, | ||||||
|  |           ${optionalString cfg.dap.enable '' | ||||||
|  |           debugger = { | ||||||
|  |             enabled = true, | ||||||
|  |           }, | ||||||
|  |         ''} | ||||||
|  |         } | ||||||
|  |       ''; | ||||||
|  |     }) | ||||||
|  |   ]); | ||||||
| } | } | ||||||
|  | @ -1,76 +0,0 @@ | ||||||
| { |  | ||||||
|   config, |  | ||||||
|   lib, |  | ||||||
|   pkgs, |  | ||||||
|   ... |  | ||||||
| }: let |  | ||||||
|   inherit (lib.lists) isList; |  | ||||||
|   inherit (lib.modules) mkIf mkMerge; |  | ||||||
|   inherit (lib.strings) optionalString; |  | ||||||
|   inherit (lib.trivial) boolToString; |  | ||||||
|   inherit (lib.nvim.lua) expToLua; |  | ||||||
|   inherit (lib.nvim.dag) entryAnywhere; |  | ||||||
| 
 |  | ||||||
|   cfg = config.vim.languages.dart; |  | ||||||
|   ftcfg = cfg.flutter-tools; |  | ||||||
|   servers = { |  | ||||||
|     dart = { |  | ||||||
|       package = pkgs.dart; |  | ||||||
|       lspConfig = '' |  | ||||||
|         lspconfig.dartls.setup{ |  | ||||||
|           capabilities = capabilities; |  | ||||||
|           on_attach=default_on_attach; |  | ||||||
|           cmd = ${ |  | ||||||
|           if isList cfg.lsp.package |  | ||||||
|           then expToLua cfg.lsp.package |  | ||||||
|           else ''{"${cfg.lsp.package}/bin/dart", "language-server", "--protocol=lsp"}'' |  | ||||||
|         }; |  | ||||||
|           ${optionalString (cfg.lsp.opts != null) "init_options = ${cfg.lsp.dartOpts}"} |  | ||||||
|         } |  | ||||||
|       ''; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| in { |  | ||||||
|   config = mkIf cfg.enable (mkMerge [ |  | ||||||
|     (mkIf cfg.treesitter.enable { |  | ||||||
|       vim.treesitter.enable = true; |  | ||||||
|       vim.treesitter.grammars = [cfg.treesitter.package]; |  | ||||||
|     }) |  | ||||||
| 
 |  | ||||||
|     (mkIf cfg.lsp.enable { |  | ||||||
|       vim.lsp.lspconfig.enable = true; |  | ||||||
| 
 |  | ||||||
|       vim.lsp.lspconfig.sources.dart-lsp = servers.${cfg.lsp.server}.lspConfig; |  | ||||||
|     }) |  | ||||||
| 
 |  | ||||||
|     (mkIf ftcfg.enable { |  | ||||||
|       vim.startPlugins = |  | ||||||
|         if ftcfg.enableNoResolvePatch |  | ||||||
|         then ["flutter-tools-patched"] |  | ||||||
|         else ["flutter-tools"]; |  | ||||||
| 
 |  | ||||||
|       vim.luaConfigRC.flutter-tools = entryAnywhere '' |  | ||||||
|         require('flutter-tools').setup { |  | ||||||
|           lsp = { |  | ||||||
|             color = { -- show the derived colours for dart variables |  | ||||||
|               enabled = ${boolToString ftcfg.color.enable}, -- whether or not to highlight color variables at all, only supported on flutter >= 2.10 |  | ||||||
|               background = ${boolToString ftcfg.color.highlightBackground}, -- highlight the background |  | ||||||
|               foreground = ${boolToString ftcfg.color.highlightForeground}, -- highlight the foreground |  | ||||||
|               virtual_text = ${boolToString ftcfg.color.virtualText.enable}, -- show the highlight using virtual text |  | ||||||
|               virtual_text_str = ${ftcfg.color.virtualText.character} -- the virtual text character to highlight |  | ||||||
|             }, |  | ||||||
| 
 |  | ||||||
|             capabilities = capabilities, |  | ||||||
|             on_attach = default_on_attach; |  | ||||||
|             flags = lsp_flags, |  | ||||||
|           }, |  | ||||||
|           ${optionalString cfg.dap.enable '' |  | ||||||
|           debugger = { |  | ||||||
|             enabled = true, |  | ||||||
|           }, |  | ||||||
|         ''} |  | ||||||
|         } |  | ||||||
|       ''; |  | ||||||
|     }) |  | ||||||
|   ]); |  | ||||||
| } |  | ||||||
|  | @ -1,6 +0,0 @@ | ||||||
| { |  | ||||||
|   imports = [ |  | ||||||
|     ./dart.nix |  | ||||||
|     ./config.nix |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue