diff --git a/private_dot_config/nvim/lua/bootstrap.lua b/private_dot_config/nvim/lua/bootstrap.lua
new file mode 100644
index 0000000..4b1b171
--- /dev/null
+++ b/private_dot_config/nvim/lua/bootstrap.lua
@@ -0,0 +1,12 @@
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not (vim.uv or vim.loop).fs_stat(lazypath) then
+  vim.fn.system({
+    "git",
+    "clone",
+    "--filter=blob:none",
+    "https://github.com/folke/lazy.nvim.git",
+    "--branch=stable", -- latest stable release
+    lazypath,
+  })
+end
+vim.opt.rtp:prepend(lazypath)
diff --git a/private_dot_config/nvim/lua/deps.lua b/private_dot_config/nvim/lua/deps.lua
new file mode 100644
index 0000000..0490b7f
--- /dev/null
+++ b/private_dot_config/nvim/lua/deps.lua
@@ -0,0 +1 @@
+require("lazy").setup("plugins")
diff --git a/private_dot_config/nvim/lua/modules/commands.lua b/private_dot_config/nvim/lua/modules/commands.lua
new file mode 100644
index 0000000..9531e1c
--- /dev/null
+++ b/private_dot_config/nvim/lua/modules/commands.lua
@@ -0,0 +1,8 @@
+vim.api.nvim_create_user_command('CopyRelativePath', 'let @+ = expand("%:~:.")', {})
+
+vim.api.nvim_create_user_command('VirtualTextOn', function()
+  vim.diagnostic.config({virtual_text=true})
+end, {})
+vim.api.nvim_create_user_command('VirtualTextOff', function()
+  vim.diagnostic.config({virtual_text=false})
+end, {})
diff --git a/private_dot_config/nvim/lua/modules/mappings.lua b/private_dot_config/nvim/lua/modules/mappings.lua
new file mode 100644
index 0000000..43c54ab
--- /dev/null
+++ b/private_dot_config/nvim/lua/modules/mappings.lua
@@ -0,0 +1,13 @@
+vim.keymap.set('', ',e', ':NvimTreeOpen<CR>')
+vim.keymap.set('', ',f', ':NvimTreeOpen<CR>')
+vim.keymap.set('', ',t', ':NvimTreeToggle<CR>')
+vim.keymap.set('', '<leader>av', ':AnsibleVault<cr>')
+vim.keymap.set('', '<leader>au', ':AnsibleUnvault<cr>')
+
+vim.keymap.set('', '<leader>q', ':botright copen<cr>', { noremap = false })
+vim.keymap.set('', '<leader>Q', ':cclose<cr>', { noremap = false })
+
+vim.keymap.set('n', '<leader>ff', '<cmd>Telescope find_files<cr>', { noremap = false })
+vim.keymap.set('n', '<leader>fg', '<cmd>Telescope live_grep<cr>', { noremap = false })
+vim.keymap.set('n', '<leader>fb', '<cmd>Telescope buffers<cr>', { noremap = false })
+vim.keymap.set('n', '<leader>fh', '<cmd>Telescope help_tags<cr>', { noremap = false })
diff --git a/private_dot_config/nvim/lua/modules/options.lua b/private_dot_config/nvim/lua/modules/options.lua
new file mode 100644
index 0000000..6f4ea86
--- /dev/null
+++ b/private_dot_config/nvim/lua/modules/options.lua
@@ -0,0 +1,42 @@
+vim.o.tabstop = 2    -- tab width is 2 spaces
+vim.o.shiftwidth = 2 -- indent also with 2 spaces
+
+vim.o.number = true
+vim.o.relativenumber = true
+vim.g.mapleader = ','
+
+-- use indentation of previous line
+vim.o.autoindent = true
+vim.o.expandtab = true -- expand tabs to spaces
+
+-- intelligent comments
+vim.opt.comments = {
+  sl = '/*',
+  mb = ' *',
+  elx = ' */',
+}
+
+vim.opt.mouse = 'a'
+vim.opt.ruler = true
+
+-- Vimscript syntax highlighting unused:
+-- hi jjdescriptionHeader guifg=#b3deef ctermfg=153 guibg=NONE ctermbg=NONE gui=NONE cterm=NONE
+-- hi jjdescriptionSelectedType guifg=#9faa00 ctermfg=142 guibg=NONE ctermbg=NONE gui=NONE cterm=NONE
+-- hi jjdescriptionSelectedFile guifg=#c9d05c ctermfg=185 guibg=NONE ctermbg=NONE gui=NONE cterm=NONE
+
+-- == Mac fixes: ==
+-- So the backspace key works correctly with brew's vim
+-- vim.opt.backspace = "2"
+
+-- So MD italics show in italics
+vim.cmd.highlight('Comment', 'cterm=italic')
+
+-- To show nbsp characters (added by Alt+Space) as dots
+vim.opt.listchars={
+  tab = '» ',
+  extends = '›',
+  precedes = '‹',
+  nbsp = '·',
+  trail = '·',
+}
+vim.opt.list = true
diff --git a/private_dot_config/nvim/lua/modules/startup.lua b/private_dot_config/nvim/lua/modules/startup.lua
new file mode 100644
index 0000000..1948497
--- /dev/null
+++ b/private_dot_config/nvim/lua/modules/startup.lua
@@ -0,0 +1,4 @@
+-- (nvim-tree.lua configuration) disable netrw at the very start of your init.lua (strongly advised)
+vim.g.loaded_netrw = 1
+vim.g.loaded_netrwPlugin = 1
+vim.g.python3_host_prog = '/Users/avm99963/.pyenv/versions/neovim3/bin/python'
diff --git a/private_dot_config/nvim/lua/plugins/chezmoi.lua b/private_dot_config/nvim/lua/plugins/chezmoi.lua
new file mode 100644
index 0000000..5921b5b
--- /dev/null
+++ b/private_dot_config/nvim/lua/plugins/chezmoi.lua
@@ -0,0 +1,25 @@
+return {
+  {
+    'xvzc/chezmoi.nvim',
+    dependencies = {
+      'nvim-lua/plenary.nvim',
+    },
+    config = function()
+      require("chezmoi").setup{}
+
+      vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
+        pattern = { os.getenv("HOME") .. "/.local/share/chezmoi/*" },
+        callback = function()
+          vim.schedule(require("chezmoi.commands.__edit").watch)
+        end,
+      })
+    end
+  },
+  {
+    'alker0/chezmoi.vim',
+    lazy = false,
+    init = function()
+      vim.g['chezmoi#use_tmp_buffer'] = true
+    end,
+  },
+}
diff --git a/private_dot_config/nvim/lua/plugins/code_formatting.lua b/private_dot_config/nvim/lua/plugins/code_formatting.lua
new file mode 100644
index 0000000..9eca093
--- /dev/null
+++ b/private_dot_config/nvim/lua/plugins/code_formatting.lua
@@ -0,0 +1,26 @@
+return {
+  "editorconfig/editorconfig-vim",
+  {
+    "google/vim-codefmt",
+    dependencies = {
+      "google/vim-maktaba",
+      "google/vim-glaive",
+    },
+    config = function()
+      vim.cmd.Glaive({ "codefmt", "shfmt_options=`['-i', '2', '-ci']`" })
+      vim.cmd.Glaive({ "codefmt", "prettier_executable=`['npx', 'prettier']`" })
+
+      vim.api.nvim_create_augroup('autoformat_settings', { clear = true })
+      vim.api.nvim_create_autocmd({'FileType'}, {
+        pattern = 'javascript',
+        group = 'autoformat_settings',
+        command = 'let b:codefmt_formatter = \'clang-format\'',
+      })
+      vim.api.nvim_create_autocmd({'FileType'}, {
+        pattern = 'html',
+        group = 'autoformat_settings',
+        command = 'let b:codefmt_formatter = \'prettier\'',
+      })
+    end,
+  },
+}
diff --git a/private_dot_config/nvim/lua/plugins/github_copilot.lua.tmpl b/private_dot_config/nvim/lua/plugins/github_copilot.lua.tmpl
new file mode 100644
index 0000000..fe02344
--- /dev/null
+++ b/private_dot_config/nvim/lua/plugins/github_copilot.lua.tmpl
@@ -0,0 +1,25 @@
+return {
+{{if eq .env "work" -}}
+  {
+    'zbirenbaum/copilot.lua',
+    config = function()
+      require('copilot').setup({
+        suggestion = { enabled = false },
+        panel = { enabled = false },
+      })
+    end,
+  },
+  {
+    "CopilotC-Nvim/CopilotChat.nvim",
+    branch = "canary",
+    dependencies = {
+      { "zbirenbaum/copilot.lua" },
+      { "nvim-lua/plenary.nvim" },
+    },
+    build = "make tiktoken",
+    config = function()
+      require("CopilotChat").setup()
+    end,
+  },
+{{- end}}
+}
diff --git a/private_dot_config/nvim/lua/plugins/google.lua b/private_dot_config/nvim/lua/plugins/google.lua
new file mode 100644
index 0000000..fa94457
--- /dev/null
+++ b/private_dot_config/nvim/lua/plugins/google.lua
@@ -0,0 +1,12 @@
+return {
+  "google/vim-maktaba",
+  {
+    "google/vim-glaive",
+    dependencies = {
+      "google/vim-maktaba",
+    },
+    config = function()
+      vim.cmd('call glaive#Install()')
+    end,
+  },
+}
diff --git a/private_dot_config/nvim/lua/plugins/lsp_config.lua b/private_dot_config/nvim/lua/plugins/lsp_config.lua
new file mode 100644
index 0000000..89b1ae3
--- /dev/null
+++ b/private_dot_config/nvim/lua/plugins/lsp_config.lua
@@ -0,0 +1,228 @@
+return {
+  {
+    "neovim/nvim-lspconfig",
+    config = function()
+      -- @source: https://github.com/neovim/nvim-lspconfig?tab=readme-ov-file#suggested-configuration
+      -- LSP global mappings.
+      -- See `:help vim.diagnostic.*` for documentation on any of the below functions
+      vim.keymap.set('n', '<space>e', vim.diagnostic.open_float)
+      vim.keymap.set('n', '[d', vim.diagnostic.goto_prev)
+      vim.keymap.set('n', ']d', vim.diagnostic.goto_next)
+      vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist)
+
+      -- Use LspAttach autocommand to only map the following keys
+      -- after the language server attaches to the current buffer
+      vim.api.nvim_create_autocmd('LspAttach', {
+        group = vim.api.nvim_create_augroup('UserLspConfig', {}),
+        callback = function(ev)
+          -- Enable completion triggered by <c-x><c-o>
+          vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc'
+
+          -- Buffer local mappings.
+          -- See `:help vim.lsp.*` for documentation on any of the below functions
+          local opts = { buffer = ev.buf }
+          vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
+          vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
+          vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
+          vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts)
+          vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts)
+          vim.keymap.set('n', '<space>wl', function()
+            print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
+          end, opts)
+          vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts)
+          vim.keymap.set({ 'n', 'v' }, '<space>ca', vim.lsp.buf.code_action, opts)
+          vim.keymap.set('n', '<space>f', function()
+            vim.lsp.buf.format { async = true }
+          end, opts)
+        end,
+      })
+
+      local lspconfig = require('lspconfig')
+      local configs = require('lspconfig.configs')
+      local capabilities = require('cmp_nvim_lsp').default_capabilities()
+
+      lspconfig.pylsp.setup {
+        capabilities = capabilities
+      }
+      lspconfig.eslint.setup {
+        capabilities = capabilities
+      }
+      --require'typescript-tools'.setup {
+      --  capabilities = capabilities
+      --}
+      lspconfig.ts_ls.setup {
+        capabilities = capabilities,
+        -- NOTE: Enable this to troubleshoot tsserver
+        --init_options = {
+        --  tsserver = {
+        --    logDirectory = '/path/to/tsserver-logs',
+        --    logVerbosity = 'verbose',
+        --  },
+        --},
+      }
+      lspconfig.jdtls.setup {
+        capabilities = capabilities
+      }
+      lspconfig.terraformls.setup {
+        capabilities = capabilities
+      }
+
+      if not configs.protobuf_pls then
+        configs.protobuf_pls = {
+          default_config = {
+            cmd = { 'pls' },
+            filetypes = { 'proto' },
+            root_dir = function(fname)
+              return lspconfig.util.find_git_ancestor(fname)
+            end
+          },
+        }
+      end
+      lspconfig.protobuf_pls.setup{
+        capabilities = capabilities
+      }
+    end,
+  },
+  {
+    "zbirenbaum/copilot-cmp",
+    config = function ()
+      require'copilot_cmp'.setup()
+    end
+  },
+  {
+    "lttr/cmp-jira",
+    config = function ()
+      require'cmp_jira'.setup()
+    end
+  },
+  {
+    "hrsh7th/nvim-cmp",
+    dependencies = {
+      "hrsh7th/cmp-nvim-lsp",
+      "hrsh7th/cmp-buffer",
+      "hrsh7th/cmp-path",
+      "hrsh7th/cmp-cmdline",
+      --"quangnguyen30192/cmp-nvim-ultisnips",
+      "zbirenbaum/copilot-cmp",
+      "onsails/lspkind.nvim",
+      "lttr/cmp-jira",
+    },
+    config = function()
+      -- @source: https://github.com/hrsh7th/nvim-cmp/?tab=readme-ov-file#recommended-configuration
+      -- @source: https://github.com/onsails/lspkind.nvim?tab=readme-ov-file#option-2-nvim-cmp
+      -- @source: https://github.com/zbirenbaum/copilot-cmp?tab=readme-ov-file#highlighting--icon
+      -- Set up nvim-cmp.
+      local cmp = require'cmp'
+      local lspkind = require'lspkind'
+
+      cmp.setup({
+      --  snippet = {
+      --    expand = function(args)
+      --      vim.fn["UltiSnips#Anon"](args.body)
+      --    end,
+      --  },
+        window = {
+          -- completion = cmp.config.window.bordered(),
+          -- documentation = cmp.config.window.bordered(),
+        },
+        mapping = cmp.mapping.preset.insert({
+          ['<C-b>'] = cmp.mapping.scroll_docs(-4),
+          ['<C-f>'] = cmp.mapping.scroll_docs(4),
+          ['<C-Space>'] = cmp.mapping.complete(),
+          ['<C-e>'] = cmp.mapping.abort(),
+          ['<CR>'] = cmp.mapping.confirm({ select = false }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
+        }),
+        sources = cmp.config.sources(
+          {
+            { name = 'nvim_lsp' },
+        --    { name = 'ultisnips' },
+          }, {
+            {
+              name = 'buffer',
+              option = {
+                get_bufnrs = function()
+                  local bufs = {}
+                  for _, win in ipairs(vim.api.nvim_list_wins()) do
+                    bufs[vim.api.nvim_win_get_buf(win)] = true
+                  end
+                  return vim.tbl_keys(bufs)
+                end
+              },
+            },
+          },
+          {
+            { name = "copilot", group_index = 2 }
+          }
+        ),
+        formatting = {
+          format = lspkind.cmp_format({
+            mode = 'symbol',
+            maxwidth = 50,
+            ellipsis_char = '…',
+            show_labelDetails = true,
+            symbol_map = { Copilot = "" },
+          }),
+        },
+      })
+
+      -- Set configuration for specific filetype.
+      for i, fileType in ipairs({'gitcommit', 'jjdescription'}) do
+        cmp.setup.filetype(fileType, {
+          sources = cmp.config.sources(
+            {
+              { name = "jira" },
+            },
+            {
+              { name = 'git' }, -- You can specify the `git` source if [you were installed it](https://github.com/petertriho/cmp-git).
+            },
+            {
+              { name = 'buffer' },
+            }
+          ),
+          formatting = {
+            format = lspkind.cmp_format({
+              mode = 'symbol',
+              maxwidth = 100,
+              ellipsis_char = '…',
+              show_labelDetails = true,
+              symbol_map = {
+                Copilot = "",
+                Jira = "󰌃",
+              },
+            }),
+          },
+        })
+      end
+
+      -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
+      cmp.setup.cmdline({ '/', '?' }, {
+        mapping = cmp.mapping.preset.cmdline(),
+        sources = {
+          { name = 'buffer' }
+        }
+      })
+
+      -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
+      cmp.setup.cmdline(':', {
+        mapping = cmp.mapping.preset.cmdline(),
+        sources = cmp.config.sources({
+          { name = 'path' }
+        }, {
+          { name = 'cmdline' }
+        })
+      })
+    end,
+  },
+  -- Possible replacement: https://github.com/typescript-language-server/typescript-language-server.
+  -- Read http://shortn/hy55K.
+  {
+    "pmizio/typescript-tools.nvim",
+    dependencies = {
+      "nvim-lua/plenary.nvim",
+    },
+  },
+  {
+    "antosha417/nvim-lsp-file-operations",
+    config = true,
+  }
+}
diff --git a/private_dot_config/nvim/lua/plugins/markdown-preview.lua b/private_dot_config/nvim/lua/plugins/markdown-preview.lua
new file mode 100644
index 0000000..9584aec
--- /dev/null
+++ b/private_dot_config/nvim/lua/plugins/markdown-preview.lua
@@ -0,0 +1,11 @@
+return {
+  {
+    "iamcco/markdown-preview.nvim",
+    cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
+    build = "cd app && npm install",
+    init = function()
+      vim.g.mkdp_filetypes = { "markdown" }
+    end,
+    ft = { "markdown" },
+  },
+}
diff --git a/private_dot_config/nvim/lua/plugins/others.lua.tmpl b/private_dot_config/nvim/lua/plugins/others.lua.tmpl
new file mode 100644
index 0000000..37ad2ee
--- /dev/null
+++ b/private_dot_config/nvim/lua/plugins/others.lua.tmpl
@@ -0,0 +1,72 @@
+return {
+  {
+    -- Show result count (like  [2/93] )
+    "google/vim-searchindex",
+    dependencies = {
+      "google/vim-maktaba",
+      "google/vim-glaive",
+    },
+  },
+
+  -- Extra functionality
+  --{
+  --  "SirVer/ultisnips",
+  --  config = function()
+  --    vim.g.UltiSnipsExpandTrigger       = '<Tab>'    -- use Tab to expand snippets
+  --    vim.g.UltiSnipsJumpForwardTrigger  = '<Tab>'    -- use Tab to move forward through tabstops
+  --    vim.g.UltiSnipsJumpBackwardTrigger = '<S-Tab>'  -- use Shift-Tab to move backward through tabstops
+  --  end,
+  --}
+  --"honza/vim-snippets",
+  --{
+  --  "github/copilot.vim",
+  --  config = function()
+      -- @source https://stackoverflow.com/questions/75926959/activate-copilot-for-only-one-directory
+      -- Force disable everywhere
+      --vim.api.nvim_create_autocmd({ 'BufEnter' }, {
+      --    pattern = '*',
+      --    command = "Copilot disable"
+      --})
+
+      -- Force enable in allowlisted directories
+      --vim.api.nvim_create_autocmd({ 'BufEnter' }, {
+      --    pattern = vim.fn.expand('~') .. '/gitrepos/infinitegforums/*',
+      --    command = "Copilot enable"
+      --})
+      --vim.api.nvim_create_autocmd({ 'BufEnter' }, {
+      --    pattern = {
+      --        vim.fn.expand('~') .. '/gitrepos/translateselectedtext/*',
+      --        vim.fn.expand('~') .. '/gitrepos/screen-capture/*',
+      --    },
+      --    command = "Copilot enable"
+      --})
+  --  end,
+  --},
+  {
+    "ray-x/lsp_signature.nvim",
+    config = function()
+      require('lsp_signature').setup{
+        bind = true,
+        handler_opts = {
+          border = 'rounded',
+        },
+      }
+    end,
+  },
+  "folke/trouble.nvim",
+  {
+    "lervag/vimtex",
+    config = function()
+{{- if and .chezmoi.os (eq .chezmoi.os "linux") }}
+      vim.g.vimtex_view_method = 'zathura'
+{{- else}}
+      vim.g.vimtex_view_method = 'skim'
+{{- end}}
+      -- Error given by apuntsgenerics
+      vim.g.vimtex_quickfix_ignore_filters = {
+        'Package hyperref Warning: Token not allowed in a PDF string (Unicode): removing',
+      }
+    end,
+  },
+  "will133/vim-dirdiff",
+}
diff --git a/private_dot_config/nvim/lua/plugins/styles.lua b/private_dot_config/nvim/lua/plugins/styles.lua
new file mode 100644
index 0000000..09180ab
--- /dev/null
+++ b/private_dot_config/nvim/lua/plugins/styles.lua
@@ -0,0 +1,63 @@
+return {
+  {
+    "vim-airline/vim-airline",
+    dependencies = {
+      "vim-airline/vim-airline-themes",
+    },
+    config = function()
+      vim.g.airline_theme = 'tender'
+    end,
+  },
+  "rafi/awesome-vim-colorschemes",
+  {
+    "nvim-tree/nvim-tree.lua",
+    dependencies = {
+      "nvim-tree/nvim-web-devicons",
+    },
+    config = function()
+      -- set termguicolors to enable highlight groups
+      vim.opt.termguicolors = true
+
+      require("nvim-tree").setup({
+        view = {
+          adaptive_size = true,
+          width = {
+            max = 50
+          },
+        },
+        renderer = {
+          group_empty = true,
+          indent_markers = {
+            enable = false,
+            inline_arrows = false,
+          },
+        },
+        git = {
+          enable = true,
+          timeout = 5000,
+        },
+        filters = {
+          custom = {
+            "^\\.git$",
+            "^\\.jj",
+          },
+          git_ignored = true,
+          exclude = {
+            ".env",
+            ".local.yml",
+          },
+        },
+        diagnostics = {
+          enable = true,
+        },
+        modified = {
+          enable = true,
+        },
+        update_focused_file = {
+          enable = true,
+        },
+        select_prompts = true,
+      })
+    end,
+  }
+}
diff --git a/private_dot_config/nvim/lua/plugins/syntax_highlighting.lua b/private_dot_config/nvim/lua/plugins/syntax_highlighting.lua
new file mode 100644
index 0000000..1bcb77c
--- /dev/null
+++ b/private_dot_config/nvim/lua/plugins/syntax_highlighting.lua
@@ -0,0 +1,11 @@
+vim.g.vue_pre_processors = {}
+vim.g.htl_css_templates = 1
+
+return {
+  "posva/vim-vue", -- @deprecated
+  "chikamichi/mediawiki.vim",
+  "gburca/vim-logcat",
+  "kelwin/vim-smali",
+  "jonsmithers/vim-html-template-literals",
+  "https://gerrit.avm99963.com/vim/jjdescription",
+}
diff --git a/private_dot_config/nvim/lua/plugins/telescope.lua b/private_dot_config/nvim/lua/plugins/telescope.lua
new file mode 100644
index 0000000..06879a4
--- /dev/null
+++ b/private_dot_config/nvim/lua/plugins/telescope.lua
@@ -0,0 +1,40 @@
+return {
+  {
+    "nvim-telescope/telescope.nvim", branch = "0.1.x",
+    dependencies = {
+      "nvim-treesitter/nvim-treesitter",
+      "nvim-telescope/telescope-ui-select.nvim",
+      "nvim-lua/plenary.nvim", 
+    },
+    config = function()
+      require('telescope').setup {
+        extensions = {
+          ['ui-select'] = {
+            require('telescope.themes').get_dropdown{},
+          },
+        },
+        defaults = {
+          mappings = {
+            i = { ["<c-t>"] = require('trouble.sources.telescope').open },
+            n = { ["<c-t>"] = require('trouble.sources.telescope').open },
+          },
+          file_ignore_patterns = {
+            "%.git/",
+          },
+        },
+        pickers = {
+          find_files = {
+            hidden = true,
+          },
+        },
+      }
+      require('telescope').load_extension('ui-select')
+
+      local builtin = require'telescope.builtin'
+      vim.keymap.set('n', 'gd', builtin.lsp_definitions, opts)
+      vim.keymap.set('n', 'gi', builtin.lsp_implementations, opts)
+      vim.keymap.set('n', '<space>D', builtin.lsp_type_definitions, opts)
+      vim.keymap.set('n', 'gr', builtin.lsp_references, opts)
+    end,
+  },
+}
diff --git a/private_dot_config/nvim/lua/plugins/vim-ansible-vault.lua.tmpl b/private_dot_config/nvim/lua/plugins/vim-ansible-vault.lua.tmpl
new file mode 100644
index 0000000..11c8f34
--- /dev/null
+++ b/private_dot_config/nvim/lua/plugins/vim-ansible-vault.lua.tmpl
@@ -0,0 +1,10 @@
+return {
+{{- if and (index . "ansibleVault") (index .ansibleVault "passwordFile") (ne .ansibleVault.passwordFile "") -}}
+  {
+    "arouene/vim-ansible-vault",
+    config = function()
+      vim.g.ansible_vault_password_file = {{ .ansibleVault.passwordFile | quote }}
+    end
+  }
+{{- end -}}
+}
