Neither is a re-invention of the other; they happen to do things that are partially similar, but also totally different. NixOS uses the /nix/store structure to allow it to pin everything to everything in service of its goal of absolute reproducibility/determinism. GoboLinux restructured the filesystem in order to be "nicer" (very loosely speaking). The result is that (IMO) nix is more technically elegant, and Gobo is a lot friendlier to work with. (I type this from a NixOS machine and with love in my heart for both)
Linux is what made Unix into a mainstream consumer OS.
It came along 22 years after Unix itself.
It's never too late.
Remember that Windows itself was a flop until version 3, and that -- Windows 3.0, in 1990 -- was the little snowball rolling down a mountain that brought multitasking multimedia networked GUI computers to the mainstream.
And thereby created the mainstream marketplace of x86-32 computers: the substrate that allowed Linux to grow.
(DOS made so little use of the 80386 that an 80286 PC was adequate, and after 5 years the 386 made little inroads into the mass market -- they were too expensive, even after the 1989 budget-model 80386, the 386SX. But Windows 3 ran much better on a 386 than a 286, and soon after Windows came along, the 286 was dead.)
Thank you all for the informative advices. Here is the summary for those who are in the same situation:
1. Run Windows on Linux by using VM
for the applications you can’t run on Linux
Risks:
* some softwares may attempt to detect VMs and refuse running
* Anything what needs to touch hardware may not work.
2. separate "data" partition on D:
3. back up %APPDATA% and %USERPROFILE%
4. learn chocolatey, scoop or winget
Winget should be good enough
5. Don’t worry about C:\Program Files
6. (Mixed) Use/Don’t use Ansible (or saltstack/salt)
Use:
* Allows you to setup a new machine quickly and consistently when one breaks, get stolen, or lost in an inconvenient time.
* You can get a clean and consistent development environment so that you do not depend on anything accidentally installed on the machine.
* If you define specialised roles, create test playbooks for those individual roles, use these roles to compose more complex playbooks, and offload logic to custom ansible modules that are written in python, you won't wrestle with heavy logic in the template or playbook layer.
* installing software and pulling some configs and scripts down is fine
Don’t use:
* You will spend your days fighting a mix of yaml and Jinja.
* You will end up looking at Python errors because there are no static types.
* errors are cryptic.
7. Use WSL2
You need 32gb of ram, but ram is cheap so choose a good thinkpad
I think I’m going to learn software engineering and electronics.
I’ve been using VSCode + PlatformIO for ESP32 programming and I probably wouldn’t change this.
There are many software out there that requires configurations for better experience, so it’s an inevitable problem.
I’ve been just trying out different options listed on the official manual.
Options are searchable by ctrl-f.
I’d recommend you to use home-manager as well.
> I don’t understand what you’re referring to about configuration. Do you mean setting for networking, peripherals and reg edits to get rid of those darn folders for ‘games’ and ‘videos’?
Basically everything, including ones that you mentioned. Networking, for example, have these options (link below)
Not necessarily. As I hinted in the OP, I'm installed on separate drives. My Lenovo tiny has 2x M.2 SSD and 1x 2.5” SSD all in a 7”x7”x1.5” format.
And I don’t think you can avoid partitioning. Windows makes 4 partitions automatically—unless you’re making multiple installations, then it doesn’t duplicate boot (logically problematic) and WinRE
The first risk with virtualized setups is DRMs, if your uni use any kind of "professional" software with student or university wide license that makes use of pain in the ass DRM, you will be hung dry. That's the most probable reason. Typical culprits are CAD software, electronic design software, Adobe, etc.
The second risk is if they want to control your setup in some way with some sort of fleet management software. Windows VM inside another OS should be fine with that, but you never know.
Your escape hatch may be a big windows machine 16G+, preferably 24G minimum, and run your linux env in WSL2, android in WSA, or use Hyper-V, etc.
OP can still reinstall windows as main OS if he runs into a specific problem with a VM but that is very unlikely.
Most probably his UNI just do not want to hear excuses like "but I am running X and it is not working on my Operating System!" and have to deal with supporting people on stuff they don't know / don't want to know.