diff --git a/init.lua b/init.lua
index ea86b79..7323a7f 100644
--- a/init.lua
+++ b/init.lua
@@ -91,7 +91,7 @@ vim.g.mapleader = ' '
 vim.g.maplocalleader = ' '
 
 -- Set to true if you have a Nerd Font installed and selected in the terminal
-vim.g.have_nerd_font = false
+vim.g.have_nerd_font = true
 
 -- [[ Setting options ]]
 -- See `:help vim.opt`
@@ -102,10 +102,10 @@ vim.g.have_nerd_font = false
 vim.opt.number = true
 -- You can also add relative line numbers, to help with jumping.
 --  Experiment for yourself to see if you like it!
--- vim.opt.relativenumber = true
+vim.opt.relativenumber = true
 
 -- Enable mouse mode, can be useful for resizing splits for example!
-vim.opt.mouse = 'a'
+vim.opt.mouse = ''
 
 -- Don't show the mode, since it's already in the status line
 vim.opt.showmode = false
@@ -157,6 +157,14 @@ vim.opt.cursorline = true
 -- Minimal number of screen lines to keep above and below the cursor.
 vim.opt.scrolloff = 10
 
+-- Set foldmethod
+-- See `:help foldmethod`
+vim.opt.foldcolumn = '1'
+vim.opt.foldlevel = 99
+vim.opt.foldlevelstart = 99
+vim.opt.foldenable = true
+vim.opt.fillchars = [[eob: ,fold: ,foldopen:,foldsep: ,foldclose:]]
+
 -- [[ Basic Keymaps ]]
 --  See `:help vim.keymap.set()`
 
@@ -618,6 +626,27 @@ require('lazy').setup({
         -- ts_ls = {},
         --
 
+        cuelsp = {},
+        elixirls = {
+          elixirLS = {
+            dialyzerEnabled = true,
+            dialyzerFormat = 'dialyxir_long',
+            fetchDeps = false,
+            mixEnv = 'test',
+          },
+        },
+        gopls = {},
+        helm_ls = {},
+        html = { filetypes = { 'html', 'twig', 'hbs' } },
+        jsonls = {
+          settings = {
+            json = {
+              -- schemas = {
+              --   ["https://raw.githubusercontent.com/woodpecker-ci/woodpecker/main/pipeline/frontend/yaml/linter/schema/schema.json"] = "renovate.json",
+              -- },
+            },
+          },
+        },
         lua_ls = {
           -- cmd = {...},
           -- filetypes = { ...},
@@ -632,6 +661,32 @@ require('lazy').setup({
             },
           },
         },
+        pyright = {},
+        templ = {},
+        terraformls = {},
+        ts_ls = {},
+        yamlls = {
+          settings = {
+            yaml = {
+              schemas = {
+                ["https://json.schemastore.org/chart.json"] = "Chart.{yml,yaml}",
+                ["https://json.schemastore.org/drone.json"] = ".drone.{yml,yaml}",
+                ["https://json.schemastore.org/github-action.json"] = ".github/action.{yml,yaml}",
+                ["https://json.schemastore.org/github-workflow.json"] = ".github/workflows/*",
+                ["https://json.schemastore.org/kustomization.json"] = "kustomization.{yml,yaml}",
+                ["https://json.schemastore.org/prettierrc.json"] = ".prettierrc.{yml,yaml}",
+                ["https://json.schemastore.org/circleciconfig.json"] = ".circleci/config.{yml,yaml}",
+                ["https://json.schemastore.org/dependabot-v2"] = ".github/dependabot.{yml,yaml}",
+                ["https://raw.githubusercontent.com/OAI/OpenAPI-Specification/main/schemas/v3.1/schema.json"] = "*api*.{yml,yaml}",
+                ["https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/ansible.json#/$defs/playbook"] = "*play*.{yml,yaml}",
+                ["https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/ansible.json#/$defs/tasks"] = "roles/tasks/*.{yml,yaml}",
+                ["https://raw.githubusercontent.com/argoproj/argo-workflows/master/api/jsonschema/schema.json"] = "*flow*.{yml,yaml}",
+                ["https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json"] = "*docker-compose*.{yml,yaml}",
+                -- kubernetes = "*.{yml,yaml}",
+              }
+            }
+          }
+        }
       }
 
       -- Ensure the servers and tools above are installed
@@ -658,6 +713,33 @@ require('lazy').setup({
             -- by the server configuration above. Useful when disabling
             -- certain features of an LSP (for example, turning off formatting for ts_ls)
             server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
+            -- overwrite elixirls for older versions of elixir
+            --   * elixir 1.11 use version 0.12.0
+            --   * elixir 1.12 use verions 0.14.6
+            if server_name == 'elixirls' then
+              local version = vim.fn.system('mise current elixir') or ''
+              local elixir_servers = {
+                { version = '^1.11', path = '/elixir-ls/release/v0.12.0/language_server.sh' },
+                { version = '^1.12', path = '/elixir-ls/release/v0.14.6/language_server.sh' },
+              }
+              for _, ex_server in ipairs(elixir_servers) do
+                if string.match(version, ex_server.version) == nil then goto continue end
+                server = vim.tbl_extend('keep', server, { cmd = { vim.fn.expand('$LOCAL_SRC_HOME') .. ex_server.path } })
+                ::continue::
+              end
+            elseif server_name == 'pyright' then
+              local python_paths = {
+                { name = 'poetry', cmd = { 'poetry', 'env', 'info', '--executable' }},
+                { name = 'system', cmd = { 'which', 'python' }},
+              }
+              for _, py_server in ipairs(python_paths) do
+                local cmd = vim.system(py_server.cmd, { text = true }):wait()
+                if (cmd.code > 0) then goto continue end
+                local python_path = string.gsub(cmd.stdout, '\n', '')
+                server = vim.tbl_extend('keep', server, { settings = { python = { pythonPath = python_path } } })
+                ::continue::
+              end
+            end
             require('lspconfig')[server_name].setup(server)
           end,
         },
@@ -888,7 +970,39 @@ require('lazy').setup({
     main = 'nvim-treesitter.configs', -- Sets main module to use for opts
     -- [[ Configure Treesitter ]] See `:help nvim-treesitter`
     opts = {
-      ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' },
+      ensure_installed = {
+        'bash',
+        'c',
+        'css',
+        'diff',
+        'dockerfile',
+        'eex',
+        'elixir',
+        'erlang',
+        'gitcommit',
+        'go',
+        'heex',
+        'html',
+        'http',
+        'javascript',
+        'json',
+        'jsonc',
+        'lua',
+        'luadoc',
+        'markdown',
+        'markdown_inline',
+        'python',
+        'query',
+        'sql',
+        'templ',
+        'terraform',
+        'toml',
+        'tsx',
+        'typescript',
+        'vim',
+        'vimdoc',
+        'yaml',
+      },
       -- Autoinstall languages that are not installed
       auto_install = true,
       highlight = {
@@ -918,18 +1032,18 @@ require('lazy').setup({
   --  Uncomment any of the lines below to enable them (you will need to restart nvim).
   --
   -- require 'kickstart.plugins.debug',
-  -- require 'kickstart.plugins.indent_line',
+  require 'kickstart.plugins.indent_line',
   -- require 'kickstart.plugins.lint',
   -- require 'kickstart.plugins.autopairs',
   -- require 'kickstart.plugins.neo-tree',
-  -- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
+  require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
 
   -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
   --    This is the easiest way to modularize your config.
   --
   --  Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
   --    For additional information, see `:help lazy.nvim-lazy.nvim-structuring-your-plugins`
-  -- { import = 'custom.plugins' },
+  { import = 'custom.plugins' },
 }, {
   ui = {
     -- If you are using a Nerd Font: set icons to an empty table which will use the