from the cubicle next to youDude , spoiler alert ! <| sep |> EAGLES FANS HAVE TO ROOT FOR THE COWBOYS TODAY BAHAHAHAA <| sep |> TLDR it ' s not built for this , just using git or other VCS access control seems to work better at least in my experience . I have worked extensively in the following settings 1 . Private hackage . 2 . Several repositories with git submodules . 3 . Monorepository with directories containing haskell packages . A private hackage is very annoying because it takes a surprising amount of maintenance . The tools do not support this very well for example , I once accidentally almost uploaded a private package to hackage because cabal upload chose that as the default . I believe we set up the hackage server on an internal subnet so it could not be accessed from outside . I think 3 is by far the easiest to set up , and at least with stack it scales very , very well . If your application consists of both private source code and libraries that you want to open source , 2 might be a better solution .