Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Cleanest way to manage Windows OS?
39 points by meatjuice on Feb 22, 2024 | hide | past | favorite | 77 comments
So, I'm going to enroll in a university and they specify that I need to use Windows in class because there are some softwares that only works on Windows. My initial plan was to use nix-darwin on MacOS, but since I can't do that anymore, I'm looking for some alternatives on Windows. Would you tell me some tips and tricks on how to manage Windows clean? I would like my Windows setup to meet these conditions, if possible:

1. No use of dotfiles

I don't like dotfiles because they're difficult to debug and are tend to be bloated, inefficient and complicated. When using home-manager with nix, those are managed by a file named home.nix so it's very clean. It's also error-free as long as options are set appropriately. Maybe my dotfiles management is just terrible, if you know any good way to do this on Windows, please tell me.

2. Everything is configurable from a single file

On NixOS and MacOS with nix-darwin, you can configure basically everything, from package management to system configuration, in a file: configuration.nix

I would like to do the same on Windows. One thing I considered is to make a powershell script that configures everything on execution.

ChatGPT says that I can use something called [Desired State Configuration](https://learn.microsoft.com/en-us/powershell/dsc/getting-started/wingettingstarted?view=dsc-1.1), but as far as I can see the documentation, it's not something I'm looking for. (correct me if I'm wrong)

3. Containered environment for development

On Nix, you can declare everything necessary to build a package so you don't need to install packages on your system by yourself. I don't want to put myself into a dependency hell anymore. But I have an idea for this: using docker. Docker separates developing environment from host's system so there would be no pre-installed dependencies. It would be good and I'm considering learning docker. Next thing I'm considering is to use something like [nx](https://nx.dev/). If you have better ideas, please tell me.

This is pretty much everything I need for my next Windows environment. Every small tips or tricks are welcome.




Pro tip: run Linux on host, run Windows in a vm for just those applications you need to run on Win.

That way you contain the inherent mess that a Windows install will eventually devolve into. You also get the ability to snapshot states of your windows install, which makes it possible to mess around a bit and then roll back to a previous state.

You didn't tell what Windows software you want to run, but depending on your needs you could even do a pci-passthrough in this setup.

I do not recommend Ansible as someone else did. 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. Never again.


Some software, mostly multiplayer games with anti-cheat but also RDR2 singleplayer, attempt to detect VMs. Probably because cheaters use them. I love my pci passthrough setup but these anticheats are a pain.

Hopefully not relevant for uni work, but still worth mentioning.


This may actually be relevant if OP has to take remote exams with mandatory invasive proctoring software :/ Although I'm not sure if these attempt to detect VMs.


They can and do refuse to work if they detect they're running in a VM.


pubg recently also started to kick me for detecting a vm. currently am using two separate windows installations (one native, one in a vm). will try to switch to one installation that can be used for both usecases, but this will cause headache with drivers, or some that is tied to certain hardware ids (copy protection)


Ansible can be fine, but the errors are indeed cryptic.

If anyone is thinking about using ansible, I would suggest approaching it like a software project.

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. This way you catch template problems early and won't wrestle with heavy logic in the template or playbook layer.


I have used Ansible for my Windows desktop setup for several years now, and I haven't fought those things in it. It has been pretty straightforward as I'm mostly just installing software and pulling some configs and scripts down.


> That way you contain the inherent mess that a Windows install will eventually devolve into.

Came here to say exactly this, and lo, top comment.

Don't let windows anywhere near you actual hardware.


Anything what needs to touch hardware is not going to work.


Not true, usb and pci passthrough is a thing.


Works with very narrow set of hardware when stars align correctly and there is not too many spots on the Sun. Usually utterly useless in practice


VMware Workstation passthoughs are very reliable for me. I can't say the same for VirtualBox though.


My experience for generic Virtual Serial Port hardware

* MacOS Parallels - Abysmal performance, constant USB timeouts. Virtually useless

* Virtual box on Windows, emulating Windows - Able to detect device, but unable to talk to it.

* Virtual box on Linux emulating Windows - USB does not even detect.


I never had any problems with vbox usb passthru from lin.host to win.guest, so you might have a really specific case here, but I know there are loads of people running qemu on lin.host with all kinds of advanced hardware pass through configurations.

Thinking about it, if you have a very old motherboard the IOMMU layout might have hindered proper hardware separation.

But I doubt OP really need pass-through at all.


A lot of management solutions assume that you want to run a whole fleet of machines. However, you as a person will only have 1 machine. It's going to be a "pet" not "cattle".

The only things I'd suggest as worth it are:

- separate "data" partition on D:, backed up

- back up %APPDATA% and %USERPROFILE%

- learn one of chocolatey or winget

- WSL2 is a Linux VM; "git bash" is surprisingly good at providing a hybrid environment on the Windows filesystem

- otherwise, just let everything dump itself into C:\Program Files and don't worry too much about it. This is what everyone else will be doing.

It used to be beneficial to do regular reinstalls, but those days are long past. I'd expect you to be able to make it through a 3 year course without having a broken installation incident.

(Not clear what tooling you'll be using? Visual Studio? VSCode? What language(s)?)


C:\ (BOB) and D:\ (DATA) have been the names of my window partitions for literally as long as I can remember.

Bob is a homage to an old (deceased sadly) family friend, he worked in aerospace in the 1980's and since he knew I was into computers he was kind enough to give me his deprecated kit - so my first PC had a partition named Bob and I've continued it ever since :).

Without Bob I'd most likely be working a near minimum wage job doing something I hated - he gave me access to an IBM PC Compatible when no way could my family have afforded one plus he was a programmer so he gave me books (those paper things we had before the internet).


> However, you as a person will only have 1 machine.

1 machine at a time.

A configuration allows you to setup a new machine quickly and consistently when one breaks, get stolen, or lost in an inconvenient time.

More importantly, as a developer you want a clean and consistent development environment so that you do not depend on anything accidentally installed on the machine.

In a previous project, development was tied to a specific machine and until I fixed it, the team simply could not migrate to a new machine if anything happened to it.


I’m my experience, softwares (and related configs) change enough from one machine to the next that it’s mostly a waste of time. Unless you plan on switching hardware yearly or something it’s a waste of time to overthink so sort of config management.

On top of that you are unlikely to do and need the exact same thing when you will be switching hardware (considering how evolution has slowed down); and new hardware is very often motivated by a change of activity (so the relevant specs and setup te d to change).

Don’t overthink it, just install a plain old windows, use VMs to test stuff and fix things as you go along. Nowadays Windows is stable enough that you are unlikely to need much fixing until you are ready to change the hardware anyway…


If windows is running in a VM, it might end up being faster having backups of said VM and keep using nix as the host OS.


> - back up %APPDATA% and %USERPROFILE%

%APPDATA% lives in %USERPROFILE% as far as I can tell.

> - separate "data" partition on D:, backed up

Since you already back up your %USERPROFILE%, which supposedly lives on C:, what benefit is there in having "data" on a separate partition?


It can be a lot clearer organizationally to keep things created intentionally on a separate partition, to distinguish from all the stuff dumped into your profile by applications. And if you fill up the "data" partition accidentally it doesn't prevent the system from functioning.


scoop is pretty great IMO


Super simple.

Install WSL2, do everything development under WSL2. It works very well. It even has x server forwarding now, and supports CUDA. No need for docker, simply use VSCode and the Remote SSH extension works natively with WSL2.

Just make sure to get at least 32gb of ram (most windows laptops you can upgrade the ram).


I tried that before, but it’s not very clean, is it? That way, I still need to deal with “Windows”.

And I think laptops with 32gb of RAM are too expensive for me.


I paid 350€ for my Thinkpad E580 with i7 and 32GB of ram.

Having said that my attempt to bear a corporate windows on a corporate laptop with WSL2 was terrible and I ended up installing linux on it and using the online version of office 365. I would run Linux as a host OS and a windows VM for anything specific to windows. There are ways to share filesystems nowadays.


> I think laptops with 32gb of RAM are too expensive for me.

ram is cheap. brand new things are too expensive. check ebay.


I dunno what you mean by "deal". You just install the required programs on it from your school, vscode and a chrome browser, and leave it alone. You dont have to manage it apart from occasional restarts for updates.

Whenever you wanna develop, just launch VSCode.

Once you are done with school, just install linux in it fully.


I don't know about the aesthetics, but it's "mostly reliable." It still breaks in undocumented and opaque ways from time to time, but that's life in the Windows ecosystem.


Depending on your budget I recently picked up a refurbished Thinkpad T580 with i7 / 32GB / 512GB for under €500. My first thinkpad and so far very impressed...


I’m probably going to buy Thinkpad (I’ve been thinking this as the only option before I open this thread, actually).

I was talking about Thinkpad X13 Gen 4, but yours seems to be better in terms of cost. I don’t really like numerical pads, though.


Upgrade the ram yourself. It's usually easy. Check a youtube video before buying to make sure the laptop design isn't hostile.


My opinion: don't try to turn Windows into NixOS. You'll only struggle with it.

Set up WSL2 for all your Nix and fancy configuration needs. It acts and works like a Linux VM, except with Windows 11 you can also run GUI programs. Set up Windows like any normal Windows user would (pay special attention to the disk encryption not being enabled properly if you don't log in with a Microsoft account) and use it as intended.

Windows does not do dotfiles. Well, some Linux programs do, because they don't really care about user experience, but in general everything configuration related will be stored in %appdata% and the registry.

There is no single file configuration for Windows. There are group policy editors that can control a lot of settings, but what you're looking for doesn't exist and existing tools aren't designed for Windows. Trying to make them work will only frustrate you.

As for containers, WSL2 and Docker work fine. They're running on a Linux VM, so they work as well as they do on Linux, barring some minor overhead from networking and file system integrations.

Alternatively, run Windows in a VM if you already have the Macbook. See how far you'll come before you need some kind of hardware acceleration, you may just be able to use a VM for the few Windows only tools you'll actually he using.


I tried to go this route with a work computer and had a lot of pain with WSL2 with Win10.

Hopefully the latest versions of windows fix these issues. Too many to detail, I can only say I'm on a very locked down, managed version of windows and thankful to have an administrator account for my machine.


Windows 11 does a lot better with WSL2 than Windows 10. Performance seems better, memory usage seems to be reclaimed a bit better, and natively being able to run graphical programs is a lot better than the X server workarounds that were necessary before.

Locking Windows down does add some challenges, though. The close integration allows for WSL2 to become a method to bypass some restrictions, so it makes sense that strictly configured MDM solutions will cause issues.

That doesn't seem to apply to OP, though.


I switched to Win 11 pro after about a decade with Mac.

WSL2 + VSCode is enough for most of my use cases. Get Power Toys. You can now create a dev drive that has better performance with many small files like in node, if you are not using WSL. Multiple Desktop/Monitor is so much better than Mac. Need to spend couple of hours initially to tune it to my liking, after that it is mostly smooth run. I thought using Choco/WinGet initially but initial installation by going to each site isn't that big a pain. Go with lot of RAM if using Docker.


Yep this is very similar to my experience. Modern Windows 11 is pretty good. Powertoys is cool and they are even file managers to get Miller columns browsing like in the Finder (I tend to like that very much, very fast).


I'm half convinced everyone complaining about Windows has not used Windows since ME or XP. Windows is perfectly good. It sucks that dev tools cater to people who want to spend thousands of dollars for a laptop and monitor stand but otherwise it's great.


I think what would help here is to understand what you need to run on windows. If you're averse to using Windows as a daily driver, you might consider limiting its use to just the one class that requires that particular software, e.g., with a VM or dual booting.

What software do you need to run?


I don’t know. They specify the requirements in a pdf file downloaded from their website, and it just says MacOS/Chromebook/iPad is not appropriate.


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.


I wouldn't worry too much just yet. What subject is the course in?


Run windows as a VM host with Linux VMs in which you can run all your nix.

You can script windows things with powershell and package managers — which you can test on Windows VMs.

Just make the VMs your primary work machines, and leave the host are unmodified as possible unless absolutely necessary.

Alternatively, you can use a Linux host for VMs.


Assuming your talking about a laptop then I would recommend Windows as the base os just for power management.

Then follow the advice of being disciplined about separating data and os/programs and just use backups.

Then use wsl2 with nixos as your main dev env and backup/src control your configs.

This setup is really nice and has the benefit of being able to run just about anything.

If you really want to go nuts you could setup a lvl1 hypervisor like proxmox and run All the OSes. I have a machine setup like this and run macos, windows 7-11, various linux. The one you use for video games you can do hardware pass through to get native video performance. Overkill but fun!


You're massively overthinking this. Get yourself a decent installer snapshot diff tool like Total Uninstall, run it each time you set up a new app, and just use the machine. The ability to thoroughly remove software you discover was bloaty will let you run this thing cleanly until well after the version of Windows is no longer supported. (And no, don't be so naive to think Windows X will really be the last version ever published and you'll just auto update forever, ain't gonna happen).


For a bit of perspective and amusement, both of my kids are students. One is 3rd year in college, the other in grad school. The most common thing is to get some kind of computer and leave it completely un-managed for 4 years or longer. This is regardless of whether they're in technical fields or not.

Backups are a good thing, but most kids do their schoolwork in the cloud. Possibly the greatest risk is not software related, but either mechanical damage or theft. And battery death. Don't treat a portable appliance as your most prized possession.

And this is also true of people in general: There doesn't seem to be a correlation between how fussy someone is about keeping their computer just right, and actually getting reliable use out of it. So part of the process is deciding for yourself whether you tend to need more computer management, or less, than the average person.

Maybe the Windows requirement is for running anti-cheating software? There is the chance of you being required to install some bizarre spyware. That kind of stuff can also be highly platform specific, which is usually a sign of it being poorly written.


Can you narrow down what type of development you are doing? I think that will help as there is some ambiguity in the way you are asking this.


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.


Just get a cheap Windows laptop, and only use it for that one class. You can get a 15" HP with 16 GB of RAM for $300 brand new, retail. Use the "Restore" when you're done and give it away to someone who needs a computer.

I'm assuming most people here aren't in the precariat like me. If you are, then get a used Windows laptop, they're even cheaper.


Or, if even $300 seems steep for a computer to use for just some windows software, go to a used computer shop. I picked up my daughter’s Thinkpad for like $150

Edit: sorry, missed the portion of the parent comment mentioning used.


You could help the nix team add windows support!

Honestly, there's just not a solution you're going to be happy with, coming from Nix. Windows is like categorically maybe the OS most fundamentally unsuited for folks who appreciate sane ways of managing computers.

If you only need it for one piece of software I'd absolutely use wine or a VM.


> Windows is like categorically maybe the OS most fundamentally unsuited for folks who appreciate sane ways of managing computers

Tell that to the billion-or-so Windows computers that are straightforwardly managed and remoted-into with Active Directory, SMB, and Remote Desktop. Not to mention group policies, registry files, and PowerShell.


It's interesting that these are completely orthogonal approaches. The UNIX world took a lot longer to develop fleet management tools, and when it did they came from a headless server point of view rather than the "hundreds of anonymous desktop machines" point of view.

Powershell remoting achieves similar management objectives to ssh but is a very different interface.


I heard about devbox [1] but I haven't tried it yet. Perhaps it could suit your needs.

Back in the day I used "Norton Ghost" to create a full image of a just-installed windows just in case I needed to go back in time. Windows includes a snapshot feature built-in but I did not really trust it. These days you can use a "sysprep" tool [2] to create a similar system snapshot. Make a partition and keep everything you don't want deleted on drive D: or something :-).

--

1: https://www.jetpack.io/devbox

2: like https://www.ntlite.com or https://fogproject.org


I’m reading this post with curiosity and interest. I’ve been toying with my Windows machine to have dual boot win10/win11. It’s easy to do, unless you want complete installation on separate disks. I’ve been also researching disk images as a means to restore working windows installation with minimal downtime.

So it’s with curiosity that I read this, but 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’?

As much as I try to make my own improvements and insurance against downtime, I find I’m spending a lot of time to only discover its best to let Windows do its thing.


> 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)

https://search.nixos.org/options?channel=23.11&from=0&size=5...

peripherals are typically managed by “home-manager”

Registry in this context is specific to Windows so I don’t know. Environment variables are configurable.

Dual-booting requires partitioning so I personally don’t really like it.


“Dual-booting requires partitioning…”

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


IF you can run Windows in Virtualbox with a mounted volume on the hosts for data, just keep up with VM snaps to have a clean system, not programmatically manageable from a config like NixOS but keep the system clean.

IF NOT then use ntfs snapshots extensively to being able to recover and keep data on a *nix host well managed.

Windows have proprietary automation but being designed as an "endpoint OS", meaning a value-less thing you deploy mostly in a default state without much customization there is not much you can do at a domestic level. BTW if an Uni in 2024 demand Windows specifically to students I doubt can be really a good choice...


I think you are way overthinking this to your detriment.

Do something like this: https://christitus.com/windows-11-perfect-install/

And avoid too many registry tweaks or other unsupported hacks as they will likely break security updates or the Windows system itself.

If you need containers, Docker Desktop + WSL works great.

Or run Linux and use Windows in a virtual machine for the specific things you need Windows for.


A dedicated Windows laptop is the cleanest way to manage Windows.

Run it in its own silo and use the magic of networking for interfacing with your preferred OS.

Architecturally:

  Windows <---> Network Protocols <---> Your Preferred OS
Basically, use the ubiquitous API's rather than trying to write your own. The API's are built into each OS to solve the exact problem.

Also, hardware is a useful abstraction. Two laptops make it easier to partition the dimensions of your daily life. And there is nothing magical bout them. Computers are cattle not pets.

Good luck.


> and they specify that I need to use Windows in class because there are some softwares that only works on Windows

While it's good to have windows ready, keep in mind this is often not strictly true, but rather a strong recommendation. I survived at uni while translating MATLAB exercises to Octave, compiling windows stuff for Wine, etc. If you set up dual booting, you'll likely be able to spend 99% of your time in whatever system you want.


WSL 2 + Docker for Desktop + VS Code + Devcontainers extension allows you to create development environments that are defined by a dockerfile / docker-compose file + .devcontainer.json.

Forget about configuration as code in pure Windows, been there, it's a waste of your time.

Also I'm not 100% positive but you might need a Windows Pro license to run Docker in Windows (something something virtualization can't recall correctly)


It sounds like you're using Nix as a sort of configuration management solution. CM just isn't worth it for managing a single desktop IMO. It triples the effort for whenever you need to add or remove a package, as you must now add that also to your nix configuration. You're supposed to be able to make that back up in time saved restoring to the next machine, but inevitably the next machine will be different enough that you'll have to edit it all anyway. In the end I just got tired of trying to manage my own machine with infrastructure as code (though in fairness I was using puppet at the time not nix).

I keep a git repository with all my dot files in it[1]. This seems to work the best. It has a Windows folder as well, and I copy that out whenever I need to set up Windows.

A lot of people like using WSL but I hate how it hogs on my memory. Hyper-V is a terrible virtualization engine for consumer-grade use cases because it can't thin provision RAM. If I need to use docker, I will spin up a small Linux VM using vagrant[3] with Virtualbox[4] and put Docker on there. Vagrant is an extremely underrated tool in my opinion, particularly in a Windows context.

I use scoop[5] for package management. Typically I will scoop install msys2 and then pin it so that it doesn't get blown away by the next upgrade.

Then I basically do all of my development inside of msys2. I can get most things running in there without virtualization. In my case that means sbcl and roswell for common lisp, senpai for irc, and tmux and nvim for sanity. Msys2 uses the pacman package manager and this is good enough.

All In all, I set up my Windows machine affresh after a while of not using it and it took me about 3 hours. Most of that time was just getting through upgrades though, I felt like it was pretty fast.

1: https://git.sr.ht/~skin/dotfiles

2: https://www.msys2.org/

3: https://www.vagrantup.com/

4: https://www.virtualbox.org/

5: https://scoop.sh/


You could use nixos in WSL2 https://nix-community.github.io/NixOS-WSL as you are already comfortable with Nix. It's (mostly) just Linux in a VM nowadays.


Just run NixOS in VirtualBox, tbh. You'll probably get frustrated with anything less.


What are your majoring in? I'm curious because if it's something like electrical engineering, you might not want to go the VM route as you'll need to hookup test equipment and such to your computer.


The Powershell windows equivalent of .bash_profile or .zshrc is:

notepad $PROFILE

From there you can configure environment variables, path, etc.


hey meatjuice.

Any guides on using nix-darwin for system configuration and etc? Ive been using it for a while and Id love to learn more!


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.

https://daiderd.com/nix-darwin/manual/index.html


uuu cool stuff. Ill def try and start using it


Maybe you need to try using NixOS with WSL.


Devenv in WSL is the way to go


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

8. Debloat with Recommended Tweaks

Run

irm christitus.com/win | iex

from Administrator Terminal (Powershell)

The link leads to https://raw.githubusercontent.com/ChrisTitusTech/winutil/mai...

VirusTotal

https://www.virustotal.com/gui/file/709834b0e003b6bb546cf16e...

9. Get [PowerToys](https://github.com/microsoft/PowerToys)

10. Use Devbox for containered environment

https://www.jetpack.io/devbox

11. Dual-Booting Linux and Windows

If you use physically separated drives, you don’t need partitioning.

12. Dedicated Windows machine for class

Yes it sure would be the cleanest solution but I prefer one device for everything

13. keep a git repository with all dot files in it

Many people suggested that using virtualization is the way, otherwise just let Windows be Windows.

Also, backing up seems to be a good practice.

I’m planning to write a blog about this, if it worked.

Again, thank you all for the helps!


Lots of other advice is echoing portions of this -- just let Windows be Windows -- don't try to force it to be Linux. A pickup truck and an El Camino look kind of similar if you squint, but serve very different purposes.

Get an off-lease refurb laptop (Newegg has tons of these [0], $300 can get you a decent 15" Lenovo / HP / Dell with SSD, 32GB ram, i7, etc)

Wipe it and install Windows 10 LTSC [1], install all known required university software, Git for Windows, Chocolatey, text editor(s) of choice, etc.

Image the main drive as a fresh starting point for when the machine gets hosed.

If you NEED real Linux, install those to VMs on a secondary drive or partition (I like VirtualBox as host but there are others) -- better to virtualize the least-demanding OS rather than the most.

Sync your browser bookmarks/history to the cloud.

Keep all of your code in separate private repos so they're backed up and you can pull down if you need to.

While on Windows, if you're trying to do Linux things, just use Git Bash. I doubt you'll ever need to touch Powershell or anything like that in general usage.

I wouldn't waste my time with Docker either -- it's dreadfully slow when using WSL, usable if you go back to regular Hyper-V and crank the RAM, but try as I might, I just have never found a scenario where it felt like the right solution to a problem on Windows.

It's also never a bad idea to find ways to separate your concerns -- my daily setup is a Windows 10 desktop, a Mac mini and a Linux desktop all in a closet, Windows on the main monitor, MacOS on the monitor to the right, keyboard and mouse shared via Synergy, and I SSH into the Linux box from Windows. I do most things on Windows, Mac things on the Mac, Linux things on Linux, but it's ergonomic and feels like one system (to me).

And do pick up all the other tips in this discussion -- good advice in there on snapshots, what to back up, etc.

There's no "correct configuration" for any of this stuff, you'll find a combo that feels good to you. Keep it simple and lean and you'll be fine. I've been using Windows as my primary desktop OS since 3.11 for Workgroups, it can be a fickle lover, sure, but Windows is incredibly capable in 2024.

Links:

[0] https://www.newegg.com/p/pl?N=4131%204016%20600566986%201000...

[1] https://massgrave.dev/windows_ltsc_links.html


Ansible?


or saltstack


Interesting. I’ll look into it




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: