I need some advice how to handle project-specific plugin configuration for Neovim. My paid software gig involves work for several different client projects which are basically structured like this:

~/work-clientA
  - repoA1
  - repoA2
~/work-clientB
  - repoB1
  - repoB2
~/work-clientC
...

I manage the different environments using direnv.

What I struggle with is overriding/extending the config for Neovim plugins for each environment.

let’s say for example clientA uses a self-hosted GitLab instance which requires me to override the lazy.nvim config for some Git-related plugins. How could I achieve this?

I looked into exrc. afaict this would require duplicating any client-specific configuration for each new repository. Instead what I would like is something like ~/work-clientA/init.lua which would then be sourced automatically for each project (repo) inside work-clientA.

  • @sxwpb
    link
    1
    edit-2
    2 days ago

    what about using exrc (with like a .nvim.lua file inside the repos) with the content of

    dofile(“../init.lua”)
    -- maybe more repo specific config here
    

    and then say ~/work-clientA/init.lua with all client specific changes there.

    this would still require creating two separate files but the client setup will be the same for all client repos, and additionally you can add repo specific changes.