I've got an old ThinkPad w/ 16GB RAM. My daily workflow is a combo of Emacs, a bunch of JVM languages, Make, Docker and minikube. I've been running openSUSE Tumbleweed for ages and am quite happy w/ its performance, package availability and being up-to-date.
Here's a decent guide on how to do it for an Ubuntu VM (instructions should apply to Arch too.) Since you'll be manually downloading guest-additions, just skip the "prerequisites" section.
An here's a guide on how to install the extension pack.
Pray, post here if you run into any troubles (you shouldn't ✌️.)
Your pipeline keeps track of the git commit that resulted in each build/deploy. You can use that (curl your CI/CD API and feed it into jq) to check out the build definition file for app (eg app/build.gradle) from that particular revision, and simply grep for lib1 and lib2. It should technically be possible to do this in a few lines of shell script.
I'd say VirtualBox is still your best bet b/c of its well-polished user interface - ie unless you plan to play games.
very laggy
Had you installed "extension pack" & "guest additions"? If not, please do! They make a world of difference.
Grab them for the version you've installed from VirtualBox downloads directory. Install Oracle_VM_VirtualBox_Extension_Pack-x.y.z.vbox-extpack on your machine and VBoxGuestAdditions_x.y.z.iso on your VM.
You've probably already checked it out but make sure you've got only one of .profile, .bash_profile, .bashprofile. bash will only execute one of them in case there's more than one (not sure which one off the top of my head.)
That's something over which I used to be very jealous of Windows laptops 😕 But that was years ago...now my aging 3.2kg ThinkPad is just a "stationery" workstation!
Not a direct answer to your question but here's what I've learned and am learning:
It all boils down to "finding the right balance between the costs of implementation, the value the implementation offers given the circumstances and constraint." Essentially, the foundational guideline of engineering across all engineering principles.
Usually every decision brings about about a series of advantages/improvement but it's important to remember that "one must lose in order to gain."[1] That is, every improvement (value) comes at a price (cost). Unlike other principles of engineering (which are closer to bare maths), software engineering more closely resembles something intuition-based like art. That is what makes it difficult to see the values and costs and measure them. It takes lots of practice and introspective and extrospective (!) effort; doing things and potentially making mistakes and learning from them is as important as observing others do things and make mistakes.
In other words, it boils down to honing your intuition to "do the right thing, at the right time, the right way."
PS: Please note that I used the word "right" and not "correct."
[1] Dialectically speaking, every material good contains w/i itself its own seeds of destruction 😆
Yes. I wrote down the procedure a few weeks ago which may come in handy for you as well: https://www.bahmanm.com/2023/07/firefox-profiles-quickly-replicate-your-settings.html