diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim
index 11507dd04a037a85d99f80c76daab6deeaa54131..82f159c244a5722cee4914c465a4f93fe7d14a85 100644
--- a/.config/nvim/init.vim
+++ b/.config/nvim/init.vim
@@ -41,7 +41,6 @@ EOF
 
 lua require('ztf.colorscheme').apply()
 
-lua require("ztf.lsp")
 lua require("ztf.dap")
 lua require('ztf.treesitter')
 
diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua
index 94e89618f8ca92bdf523dc02a7301509f534e2ed..9876c70b040c0874b979776aa0efc557728d6a8b 100644
--- a/.config/nvim/lua/plugins.lua
+++ b/.config/nvim/lua/plugins.lua
@@ -31,21 +31,35 @@ local plugins = {
   'tpope/vim-characterize',
   'tommcdo/vim-lion',
 
-  'neovim/nvim-lspconfig',
-  'mfussenegger/nvim-dap',
   {
-    "rcarriga/nvim-dap-ui",
-    lazy = true,
-    config = function() require("ztf.configure.dapui") end,
-    dependencies = { "mfussenegger/nvim-dap" },
+    "williamboman/mason.nvim",
+    opts = {},
   },
   {
-    "williamboman/mason.nvim",
+    "williamboman/mason-lspconfig.nvim",
     opts = {
       ensure_installed = {
         "tinymist",
+        "rust_analyzer",
+        "rust_analyzer",
+        "lua_ls",
       },
     },
+    dependencies = { "williamboman/mason.nvim" },
+  },
+  {
+    'neovim/nvim-lspconfig',
+    dependencies = { "williamboman/mason-lspconfig.nvim" },
+    config = function()
+      require("ztf.lsp")
+    end,
+  },
+  'mfussenegger/nvim-dap',
+  {
+    "rcarriga/nvim-dap-ui",
+    lazy = true,
+    config = function() require("ztf.configure.dapui") end,
+    dependencies = { "mfussenegger/nvim-dap" },
   },
   -- rust
   {