And it's been doing the trick for years. Prior to building the tmux workspace, it even can call a bootstrap script (https://github.com/tony/tmuxp/blob/master/bootstrap_env.py) to check for and install dependencies.
When a tmuxp session file (https://github.com/tony/tmuxp/blob/master/.tmuxp.yaml) is loaded, it automatically can source the user into virtualenvs, launch file watchers, and so on.
Saves so much time.
Since most software projects involve the same flow (installing packages locally for the project, launching a test runner.)
Other things that help keeping it cross platform are using Makefile and commands conforming to POSIX (https://github.com/tony/tmuxp/blob/master/Makefile). So when bringing up a list of files for entr (a file watcher http://entrproject.org/) to run commands when files are saved, use posix find arguments only. Use $(MAKE) for recursive calls (https://www.gnu.org/software/make/manual/html_node/Recursion...).