Nix is one of the few package managers that really obviates building these custom solutions over and over for each different language.
You can also use nix ontop of any distro. It's UX isn't as good as a custom built solution, but if you're a polyglot you'll appreciate not needing to use a different solution for java, node, python etc
Unfortunately, Windows support is not there yet (or am I wrong?).
I stopped using Linux as my main distro. I was tired of maintaining my OS with the only argument "but I can do whatever I want", and I've been doing that for 10 years (with Debian, Gentoo and even a LFS at some point), no more.
Windows 10 works well. The WSL works well. Docker Desktop works well (unless you use WSL2, then it's CPU/RAM/Disk IO hungry). chocolatey works well.
WSL works well, until it doesn't. For a non C# (or msft ecosystem) dev, Windows offers very little advantage for development. Every tool that is used mostly by Unix loving folks requires workarounds(when possible) to make it work on Windows. Terminal clients are subpar at best, the only selling point I see on Windows is the ability to play games. Without mentioning the privacy issues on Windows. Most mainstream Linux distros are rock solid stable. You can use out of the box Ubuntu as your daily driver with no configuration, besides installing the software you like. I'm not familiar with Gentoo, but yeah, if you install an arcane distro you could have issues with drivers, etc... MacOs is pretty solid too.
My daily driver is Debian WSL2, using wezterm (highly recommend) + tmux for terminal, and vscode integration for IDE. Aside from struggles getting custom subdomains to point to localhost, things have been quite stable.
I never thought I’d be saying this, but I find the Windows window manager the best out of the box, and as a bonus I get to do my unreal/vr dev side projects without booting into another OS.
I stayed on WSL1 for the shared localhost. And WSL2 still have some performance issues related to memory usage and Disk IO.
But yeah, I agree, Windows 10 has a great UX. I switched to windows because of the WSL, and I end up using it less and less over time: ssh, ansible, and avoiding cross-compiling toolchains when building releases, that's about it.
Yeah, I am in a similar boat. WSL 2 with Docker build environments gives me faster build times than my Mac. My default Windows Terminal is a Linux prompt with Zsh. It works surprisingly well. I built a Windows gaming rig and then wondered, “hmmm-this thing is fast. Can I work on it too?” And was delighted that our tool chain didn’t need any tweaking.
> for `helloworld` projects maybe, yeah, have you worked on a large Rust project?
No need to be condescending...
Yes as a matter of fact, I have. Never ran into any problem with "cargo" nor "rustup".
> have you tried setting up ENV variables in Windows? is a journey of clicks into config windows and options, and this is just an example.
Git bash still have a .bashrc, I set my environment variables here just like I did on Linux. For production I use Docker.
> I would rather be in Unix
good for you
> than just being able to play Fornite
No need to be condescending... I'm not even playing on my WORK computer...
> and having to "filter my outgoing traffic"
I hope you still do it with your Linux OS because with the amount of "curl | sudo bash" there is out there, I would not trust it either.
Where does it come from that only Windows is subject to telemetry/monitoring? Whenever you "sudo apt install" something you trust someone else. If you're paranoid enough to not trust Windows, why would you trust any third-party software even on Linux?
> it seems too much work. I just want something that "works".
My workflow works for me, I never tried to convince you like you try to convince me. Leave me be.
> have you tried setting up ENV variables in Windows?
Its quite easy.
> is a journey of clicks into config windows and option
or in CMD.exe (e.g., via a .bat file) a simple call to setx.
or in Powershell or Windows Powershell, [Environment]::SetEnvironmentVariable.
This assumed you want to durably set variables associated with the machine or user; transitory settings can be done via set (CMD.exe) or $env:path (either powershell line).
In my experience, though, Windows 10 has proved really annoying. Over the past 8 weeks,
1) Windows 10 update has broken sound (I occasionally have to disable/enable the Realtek Audio device)
2) Windows 10 update has fixed sound (without seeming to have changed the Realtek Audio driver)
3) Has throttled the performance of my graphics card (hash rate on Autolykos V2 dropped by 10x after an update), without having had changed the graphics driver
4) Windows 10 Pro won't allow certain applications to be downloaded or installed (immediately quarantined) and Virus & Threat Protection isn't visible in the Control Panel. This is a common issue, apparently [1]
Generally, Windows 10 seems to take control of configuring the operating system away from the user while adding a bunch of "telemetry" and "application monitoring". Not too happy. I'm in the process of moving to NixOS as my primary system [2]. I'll boot from a flash drive with a live version of the OS including all applications and files I need for local development; the flash drive will mount the OS into RAM; I'll unplug the flash drive and continue my development from RAM; I'll shut down my machine at the end of the day and have a clean slate the next time I boot into the OS [3].
Of course, but what's the point? I use WSL for 3-4 programs, that's it. My entire toolchain is Windows-compatible, and installed through chocolatey with the default configuration.
You can also use nix ontop of any distro. It's UX isn't as good as a custom built solution, but if you're a polyglot you'll appreciate not needing to use a different solution for java, node, python etc