How can I build & maintain a personal, cross-platform toolkit of commonly used applications?

HOW TO -️ October 18, 2021

I've discovered a number of open source tools over the years which have become an essential part of my personal workflow & productivity in my current day job (project manager / business analyst). I can often move from company-to-company and even account/machine (and OS too) and want to get up and running with the minimum of fuss.

What I'm trying to combine:

  • apps/tools (which use a variety of frameworks and languages including python, flask, javascript, node, java etc)
  • config files
  • other misc. files (e.g. fonts)

However, by necessity, I am often behind corporate firewalls and restrictive IT policies which make it time-consuming to get internal license approvals for each tool, download each of the tools individually, keep them up-to-date, blocked external package repos, maintaining & building-upon the associated configuration files over time...

Docker is the obvious solution here, but...

... it is often blocked by these same IT policies, as are its alternatives.

What I've tried

Using a GitHub repository, I've since settled on building/installing everything locally, making it 'portable' (using batch scripts, symlinks and a number of config file tweaks) and then uploading.

Drawbacks of this approach include: the complexity, difficulty maintaining this cross-platform (currently windows-only), working around applications installed via git-clone, working around quirks of 'portable' versions of runtime dependencies like Python, github 50mb single file-size limits...

Another possible approach I considered

Using continuous integration (like Travis-CI and AppVeyor), my main concern here is that I've not actually 'built' some of the apps I use (e.g. emacs-w64, which I download the pre-built binaries for) so wondering if this will just add more complexity than my current solution ... and since Travis-CI doesn't support windows it adds an additional dependency, as well as the overhead of learning the continuous integration world & maintaining build scripts for linux, osx & windows..

I'm not looking to open up discussion here, but an answer that will meet my needs with the minimum of fuss (this is for personal use rather than devops for my company / others after all) from the experts ... even if the answer is simply that I need to put the effort into a CI solution...


One note: personally using a tool to do job-related work while employed of a company, sometimes even installing it on a company-provided machine doesn't typically qualify as personal use from the licensing prospective. Check the respective licensing agreements. Agreed, which is why I've tried to stick to open source tools with licenses that are permissive in the context of usage as a 'standalone tool' (Apache, MIT, GPL etc). The tools will never be linked with company code, and the licenses meet the quite restrictive terms for software acquisitions at one of the larger companies I've worked for. I do the same as you - I have a github repository for my ~/.emacs.d; and a Vagrantfile which spins up a Linux box with my favourite tools. I do not use Win10 (nor did I encounter it at work so far), so Docker is out. And Vagrant obviously needs some VM provider, which means local admin permissions, probably. I'm looking forward to answers that tell us how to do it better, I have not found a more complete solution yet.