Project import generated by Copybara.

GitOrigin-RevId: 975161aa2f1036264c56d7a81b79ac74ba68b276
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 -}}
+}