When you’re putting together a whole system, or a container filesystem mount map, where should you put stuff?

If we’ve succeed, our whole ecosystem is full of path-agnostic stuff, so, technically, it doesn’t matter. You’re free.

... but sometimes conventions are nice anyway. Familiarity. Pre-made choices.

So!

Typical Paths

/apps/*
/libs/*
/envs/default/bin
/envs/*/bin
/home/*/envs/*/bin
/bin

None of these have to be absolute rooted paths. You can put them all in /warpsys/{apps,envs,libs}/ or in /whatever/{apps,envs,libs}/ and should be just fine and dandy.

It’s recommended that stuff in /apps/* be unpacked/mounted in directories that each contain a hash in the name. This satisfies co-installability. (We intend to build more tools that automate support for doing this, but haven’t yet.) If you’re in a container, though, it’s often fine to get lazy about this.

If you have a /libs/* dir, it’s probably working based on Warpsys Dynamic Library Linking Strategy... so almost certainly that is filled with directories where each contains a hash in the name. It’s necessary for packages to agree on that path naming convention or else things don’t actually get shared too well!