diff --git a/devShells/neovim-shells/default.nix b/devShells/neovim-shells/default.nix index 1791bcb2..53e4839c 100644 --- a/devShells/neovim-shells/default.nix +++ b/devShells/neovim-shells/default.nix @@ -19,11 +19,12 @@ langs); in mkLangsShells [ + "c-lang" "csharp" "json" "lua" "markdown" + "qml" "rust" "web" - "c-lang" ] diff --git a/homeManagerModules/neovim/langs/default.nix b/homeManagerModules/neovim/langs/default.nix index 6482a7c7..25a40dfe 100644 --- a/homeManagerModules/neovim/langs/default.nix +++ b/homeManagerModules/neovim/langs/default.nix @@ -20,6 +20,7 @@ in { ./json ./lua ./python + ./qml ./rust (import ./csharp self) diff --git a/homeManagerModules/neovim/langs/golang/default.nix b/homeManagerModules/neovim/langs/golang/default.nix index 0005ea1c..55d109c5 100644 --- a/homeManagerModules/neovim/langs/golang/default.nix +++ b/homeManagerModules/neovim/langs/golang/default.nix @@ -13,23 +13,17 @@ in { neovim = { extraPackages = with pkgs; [go gopls]; - plugins = [ - { - plugin = pkgs.vimPlugins.clangd_extensions-nvim; - type = "lua"; - config = - # lua - '' - local lsp = require('lspconfig'); - local default_capabilities = require('cmp_nvim_lsp').default_capabilities(); + extraLuaConfig = + # lua + '' + local lsp = require('lspconfig'); + local default_capabilities = require('cmp_nvim_lsp').default_capabilities(); - lsp.gopls.setup({ - cmd = { '${pkgs.gopls}/bin/gopls' }, - capabilities = default_capabilities, - }); - ''; - } - ]; + lsp.gopls.setup({ + cmd = { '${pkgs.gopls}/bin/gopls' }, + capabilities = default_capabilities, + }); + ''; }; }; }; diff --git a/homeManagerModules/neovim/langs/qml/default.nix b/homeManagerModules/neovim/langs/qml/default.nix new file mode 100644 index 00000000..c59f3488 --- /dev/null +++ b/homeManagerModules/neovim/langs/qml/default.nix @@ -0,0 +1,48 @@ +{ + config, + lib, + ... +}: let + inherit (lib) mkIf; + + cfg = config.programs.neovim; + flakeEnv = config.programs.bash.sessionVariables.FLAKE; +in { + config = mkIf cfg.enable { + programs = { + neovim = { + extraLuaConfig = + # lua + '' + vim.api.nvim_create_autocmd('FileType', { + pattern = { 'qml' }, + + callback = function() + vim.cmd[[setlocal ts=4 sw=4 sts=0 expandtab]]; + + if (devShells['qml'] == nil) then + devShells['qml'] = 1; + + require('nix-develop').nix_develop_extend({'${flakeEnv}#qml'}, function() + vim.cmd[[LspStart]]; + end); + end + end, + }); + + local lsp = require('lspconfig'); + local default_capabilities = require('cmp_nvim_lsp').default_capabilities(); + + lsp.qmlls.setup({ + cmd = { 'qmlls', '-E' }, + capabilities = default_capabilities, + autostart = false, + }); + ''; + }; + }; + }; + + # For accurate stack trace + _file = ./default.nix; +} diff --git a/homeManagerModules/neovim/langs/qml/shell.nix b/homeManagerModules/neovim/langs/qml/shell.nix new file mode 100644 index 00000000..45f1d489 --- /dev/null +++ b/homeManagerModules/neovim/langs/qml/shell.nix @@ -0,0 +1,10 @@ +{ + mkShell, + kdePackages, + ... +}: +mkShell { + packages = [ + kdePackages.qtdeclarative + ]; +}