To discourage bash outside shell one-liners (where it is appropriate), fabric/invoke could be used. Bash/ssh commands are glued together using Python:<p><a href="https://docs.fabfile.org/en/latest/getting-started.html#addendum-the-fab-command-line-tool" rel="nofollow">https://docs.fabfile.org/en/latest/getting-started.html#adde...</a><p>If you are Python dev, you could specify Python dependencies for script using pep 723
<a href="https://iscinumpy.dev/post/pep723/" rel="nofollow">https://iscinumpy.dev/post/pep723/</a>
(nix might be an overkill).<p>For notebooks, workflows, personal playbooks, notes Org Babel could be used (emacs)
Here's example code blocks in Haskell (but many other languages can be used such as shell, jupyter, plantuml) <a href="https://youtu.be/1qOFYluebBg?si=muGfsaC1kI7Cgpyw" rel="nofollow">https://youtu.be/1qOFYluebBg?si=muGfsaC1kI7Cgpyw</a><p>One of my favorite features are subtree specific settings that enable remote shell commands by configuring :dir to /ssh:host:
> What about org-wide things, like installing useful tools, generating boilerplate code, or running complex AWS commands that no one remembers?<p>You can do all of this with make and make includes.