convert sql module

This commit is contained in:
sjcobb 2025-07-11 14:03:51 +01:00
commit 7e4a58b6f8

View file

@ -8,31 +8,27 @@
inherit (lib.options) mkEnableOption mkOption; inherit (lib.options) mkEnableOption mkOption;
inherit (lib.meta) getExe; inherit (lib.meta) getExe;
inherit (lib.modules) mkIf mkMerge; inherit (lib.modules) mkIf mkMerge;
inherit (lib.lists) isList; inherit (lib.types) enum listOf package str;
inherit (lib.types) enum either listOf package str;
inherit (lib.nvim.lua) expToLua;
inherit (lib.nvim.types) diagnostics; inherit (lib.nvim.types) diagnostics;
inherit (lib.nvim.attrsets) mapListToAttrs;
inherit (lib.generators) mkLuaInline;
cfg = config.vim.languages.sql; cfg = config.vim.languages.sql;
sqlfluffDefault = pkgs.sqlfluff; sqlfluffDefault = pkgs.sqlfluff;
defaultServer = "sqls"; defaultServers = ["sqls"];
servers = { servers = {
sqls = { sqls = {
package = pkgs.sqls; enable = true;
lspConfig = '' cmd = [(getExe pkgs.sqls)];
lspconfig.sqls.setup { filetypes = ["sql" "mysql"];
on_attach = function(client) root_markers = ["config.yml"];
client.server_capabilities.execute_command = true settings = {};
on_attach_keymaps(client, bufnr) on_attach = mkLuaInline ''
require'sqls'.setup{} function(client, bufnr)
end, client.server_capabilities.execute_command = true
cmd = ${ require'sqls'.setup{}
if isList cfg.lsp.package end
then expToLua cfg.lsp.package
else ''{ "${cfg.lsp.package}/bin/sqls", "-config", string.format("%s/config.yml", vim.fn.getcwd()) }''
}
}
''; '';
}; };
}; };
@ -81,17 +77,10 @@ in {
lsp = { lsp = {
enable = mkEnableOption "SQL LSP support" // {default = config.vim.lsp.enable;}; enable = mkEnableOption "SQL LSP support" // {default = config.vim.lsp.enable;};
server = mkOption { servers = mkOption {
description = "SQL LSP server to use"; description = "SQL LSP server to use";
type = enum (attrNames servers); type = listOf (enum (attrNames servers));
default = defaultServer; default = defaultServers;
};
package = mkOption {
description = "SQL 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);
default = servers.${cfg.lsp.server}.package;
}; };
}; };
@ -132,10 +121,12 @@ in {
vim = { vim = {
startPlugins = ["sqls-nvim"]; startPlugins = ["sqls-nvim"];
lsp.lspconfig = { lsp.servers =
enable = true; mapListToAttrs (n: {
sources.sql-lsp = servers.${cfg.lsp.server}.lspConfig; name = n;
}; value = servers.${n};
})
cfg.lsp.servers;
}; };
}) })