What are all the ways to configure Gitpod?

I think it would be cool to briefly summarize all the different ways Gitpod can be configured, in one place.

This could cover:

  • .gitpod.yml
  • .gitpod.Dockerfile
  • .gitpod/ directory
  • .theia/ directory
  • .vscode/ directory
  • Preferences
  • Environment Variables
  • Prebuilds & the Gitpod App

A reply here with all the summaries would probably be useful enough.
(Also, we can now mark replies as “Accepted Solution”, like on Stack Overflow.)


Agree. It would be good to know some best practices.

Like say I want to install the Hugo executable (Go binary) to develop my Hugo website in gitpod. Should I:

  • install the Hugo release on command for workspace startup (super wasteful and perhaps error prone.)

  • install the Hugo release on init in a prebuild (seems wasteful — reinstall Hugo in every commit. Prebuild here will also cause a lot of unnecessary compute for the gitpod company)

  • Install Hugo in a custom .gitpod.Dockerfile (better solution. Build only when Dockerfile changes)

  • Install Hugo with Nix in prebuild and run nix-shell on launch (Perhaps the best? Prebuild would just check the local hash to make sure Hugo is installed. gitpod could be instrumental in making Nix as popular as dockerfiles, but it would take guidance to encourage people to use it)