My dotfiles for neovim and other desktop applications can be found here.
I recently switched to the lazy.nvim since packer.nvim is no longer being maintained. Neovim now takes a lot less time to start since Lazy only loads plugins when they are being used.

Workflow
Most of the plugins I use are simply eye-candy (lualine, fidget, etc.) but some of them open up a slightly different workflow than traditional vim. I use bufferline to have multiple buffers accessible through hotkeys (my leader key is the default \):
<leader>b - Previous tab
<leader>n - Next tab
<leader>w - Close tab (like ctrl-w in browsers)
The file tree can be accessed through <leader>v (nvim-tree).
I also like telescope’s grep features which allow you to quickly jump between files in a project:
<leader>ff - Grep across workspace
<leader>fb - Find in buffer
<leader>fp - Find in project
<leader>p - Show diagnostics for buffer
For Git, I decided to ditch all of the fancy plugins. Instead, I use floatterm (toggled with <leader>t) and open an instance of lazygit whenever I need to update the repo I’m working on.
Neogen lets me quickly make docstrings for functions via <leader>d.
Finally, I use which-key and cheatsheet (<leader>?) if I ever need help remembering keybindings.
LSP
My LSP setup is pretty standard. The one thing worth mentioning is how the Julia language server is set up. The directions can be found here. You need to set up a new Julia environment in some convenient location and then run a makefile (found in the link) to build it. After that, the LSP should work.