Nixing Windows
Our modern tech landscape is a little bleak at the moment. It’s pretty much an open secret at this point that the machines once sold to us a a way to connect us and improve our lives have been subtly morphed into machines that study and influence us. This shift has been very visible to me as someone who witnessed the Cambridge Analytica controversy very early in my adult life.
I often think about ways that I can improve my relationship with my technology. Over the past five years or so I’ve been taking steps like uninstalling social media and setting up a NAS for my media. My biggest pipe dream for the longest time was switching to Linux. I used to really respect Windows, but my trust in Microsoft has been eroding with the rest of the corporate landscape. I put it off as infeasible for years, primarily because I play a lot of pc games and didn’t want to deal with the nightmare that is wine. I even dissuaded others from doing the same. It wasn’t until early this year that the incredible work that Valve has been doing with Proton was brought to my attention. Apparently, it turned out, most games just work now. While this excited me, I was still uneasy and very human in my aversion to change.
What finally put the nail in the coffin was the end of life announcement for Windows 10. My processor is almost a decade old, but it still works fine and I’ve never really had issues with it. However, Windows 11 will not run on it. The announcement forced me to think about my plan for my computer, since I couldn’t just roll over and let the update happen. I would have to sit on an unsupported operating system, or replace my whole motherboard and cpu to “upgrade” my os to more effectively serve me ads. Or, perhaps there was a third option… The more I thought about it, the prospect of having an excuse to finally sift through my filesystem that I’ve been Thesiusing since I was 18 started sounding appealing. Having a dev environment that wasn’t bogged down by all that technical debt with the power and elegance of Linux behind it. It called to me like a siren. Finally, I made the decision one day after opening my laptop for the first time in a while, a machine that has been running windows 11 for a few years, and finding copilot in notepad.
In order to orchestrate a successful escape, I needed to pick a distrobution. I actually didn’t look far because my partner, Star, had been running NixOs on their surface for a few months and was quite happy with it, so I decided to do some research on it. NixOs, not to be confused with the language that it’s configured with, nix (which I will now use interchangeably to confuse you,) is a distro that sells itself as “Reproducible, Declarative, Reliable”. Effectively the way that it works is that the entire system configuration for a machine is laid out in a file, written in nix (the language) and is built every time the os boots. All packages, from compilers to applications, are kept in the nix store (a directory in the filesystem), and installed to the system temporarily each time the system is rebuilt. If you’re curious, the website has a good overview and the manual is extensive and very interesting.
The Nix Logo
I was quickly struck by the promise of this system, as one of the problems that it directly attempts to resolve is conflicting package versions for software dependencies. Something that had plagued me for a few projects and was really starting to drain my joy for software development. The other aspect that caught my eye was the ability to roll back builds of the os to previous versions, something that can be done from the command line or at boot. Which, if used in conjunction with version control, makes a nix machine nearly impervious to unrecoverable states. The distrobution had a steep learning curve, but that rarely intimidates me when I’m excited about something.
One weekend, with a little gumption and a fresh paycheck in my pocket, I went to central computers looking for a modest ssd that I could use to dual boot to nix while I eased myself into the waters. A well meaning chap at the shop told me that sata ssds are in short supply these days with nvmes taking over the market. I didn’t really believe him but bought what they had anyway and went home. After fiddling around with a drive I had flashed nix to, I realized I hadn’t flashed it at all, so I plugged my windows drive back in to remedy the issue. Things went pretty south when I realized the black screen I was looking at had been lingering for a suspicious amount of time. My Windows drive wouldn’t boot. I spent about 20 minutes troubleshooting before laying down on the couch, looking at the ceiling and asking myself: Was I going to reallocate the afternoon I had set aside for setting up nix to fixing my windows drive, or was I going to dive headfirst into Linux? In all honesty, I didn’t think for that long. I wanted out. I unplugged the windows drive. It hasn’t been plugged in since.
I started out by firing up Cinnamon, the proprietary desktop from the LinuxMint ditro family. It was sleek and dark and clean, things windows wasn’t, but the layout was still familiar. Star gave me a hard time for not just picking Gnome, but the heavy focus on workspaces put me off because I foresaw jank with my two monitor setup. Cinnamon worked well enough. There was some issues with the ui scaling for fractional scales, but I was willing to live with that.
Most applications just worked; even the ones I was skeptical of, like Steam. It took me a while to get used to the nix method of installing apps; which is typing the name into a config file well beyond the bounds of my home directory, and then running a cli command to rebuild the system. It’s second nature to me now. I admittedly didn’t spend much time trying to get windows optimized programs running on my new system. Things like photoshop and word have workarounds but I had long since switched to open source versions of these applications, and thus didn’t lose any sleep over them.
The biggest problem I ran into was with Sunshine. Sunshine is a game streaming server, which I use because I like to play my pc games from the couch. It worked very well for me on windows as long as I had a hard network connection to the tv, but it was riddled with issues on my new setup. For one I couldn’t get it to stream my primary monitor for the life of me, and two, perhaps the bigger problem, the performance was dogshit. The frame rate was on the scale of a single digit number of frames each second and the latency was completely unusable. This is sadly an issue I still have not fixed, but I’m considering prioritizing it soon. I’m currently surviving off steam streaming but I’m not in love with it’s stability.
I also struggled with getting my usb-c dock to pass video data, but I just decided to switch to hdmi and moved on with my life.
I’ve since spent some time hopping between desktop environments, something made stupid simple by nix, and am currently settled in hyprland. I’ll probably write another post at some point about my adventures in customizing my desktop, but it’s beyond the scope of this post.
On the technical side of things, there’s not much interesting to say. I’ve gotten my hands dirty a few times for the hell of it but the vast majority of the environment just works. I one time was fiddling around with my graphics drivers and my machine blackscreened. I couldn’t get in and didn’t really know the tricks to circumventing the gui, so I just restarted the computer and rolled back to the last version. I undid the change I made to the configs and was back on track. 5 minute detour.
Personally, switching to Linux is probably the best decision I’ve made this year. I feel so much more connected to my computer, perhaps than I ever have. I feel an almost childish joy sitting down at my computer and messing with my configs, making digital art, bashing together cute little screenshots and writing code. Most importantly, I’ve learned a lot since doing it.
If you’re frustrated with the windows ecosystem, you should seriously think about Linux. Assuming you’re one of my non-techie friends (the majority of the people that actually read this blog,) don’t be intimidated by this post. I intentionally picked hard mode, an unsurprising decision if you are familiar with my proclivities. If you’re willing to make do every now and again, Linux is a very powerful os that gives you endless control over it. I believe firmly that Linux is suitable to the average consumer and a wonderland to the technically inclined.
I’ll leave you with a quick shot of my desktop, featuring the illustrious Miku Hatsune, and a blurry png of my final fantasy character, and a link to my nix configuration, if you’re interested. I promise to include more pictures next time to break up the monotony of my long-windedness.
またね