Assembling a Tech Stack
MipMap #028: Why, why did I choose Linux?
The tools you use to program, create, and organize are the bread and butter of any creative. Without them, we’d be a bunch of idea guys jotting down unintelligible notes on pieces of paper we’d never keep track of. Good luck trying to find the note with the amazing concept you had, it’s currently sandwiched between a two-month-old receipt and that one pack of chewing gum that’s a couple years old, but still unopened so you’d feel guilty about throwing it out.
To save us from endless disorganization, a plethora of software is available to help us both realize the ideas we come up with and then implement them in some shape or form. And some of them are even free.
Personally, my software stack starts and ends with Obsidian, a wonderful note-taking app that I cannot rave more about. Every wild idea I have gets thrown into a markdown file which is then classified and tagged appropriately. But when I want to actually put those ideas into practice, Blender is my go-to source for creating. While it lacks the features to do anything 100% optimally, it can do almost anything with maybe 70% of the features other DCCs can do. Between Blender and Obsidian I’ve managed to create a fair number of 3D projects, but these days I’m more interested in interactive media. Specifically video games.
As some of you might know, I’m currently weed-whacking my way through the Unreal Engine, attempting to figure out how to get a game from concept to published project. Currently I’m wrapping my head around Blueprints, trying to figure out where to delegate to code, and where I can just move quickly by implementing Blueprint spaghetti. If you know, you know.
But what if I told you that I have found myself up against a greater challenge than the Unreal Engine? Would you believe me if I said that that challenge wasn’t as fulfilling as it once was? Maybe it’s just the ADHD hyper-fixation moving me from interest to interest, but as of late the Unreal Engine hasn’t been my greatest task.
Instead, that title has gone to the Linux kernel and it’s many derivations and distributions. The current flavour is NixOS, a declarative distribution that utilizes a proprietary C-like language to determine how your operating system functions. It’s a bit of a change of pace from your run-of-the-mill Windows system.
If you think me insane to take on both the task of learning an entire video game engine while also wrangling with Linux, you are correct. This is not a good decision, and it’s safe to say that there have been many, many moments where the easiest path has been to just return to Windows.
But as we’ll discuss, I am not a quitter. Instead, I’ve thrown myself into the deep end, head first, without a life jacket.
Let’s get into it.
I Like Challenges
Like I’ve detailed in a previous post, learning is a deeply personal process that involves challenging what you currently understand about a topic. For most things, it’s taking a status quo of knowing nothing and replacing it with something.
While it looks different for everyone, for me learning is all about creating new understandings. I like the challenge that learning presents. After a certain amount of investment though, you start to get bored of the current topic, and seek a new one. A different flavour of the month if you will. While it might not matter for trivially browsing through irrelevant content on the web, when you begin to get bored of your main profession it becomes an issue. A rather large issue, actually.
What I’d done in the past was simple move to an adjacent role within the realm of 3D, spend a couple weeks looking in material creation, then the next span with procedural generation, and so on. But you don’t really go very far with that approach. Something, something, ten thousand hours to be a master.
Instead, I needed something to change so that I could continue to focus on modeling and creating in 3D. And since the realm of my influence at this point in time extends to, well, my desktop mostly, it became a question of what could I change about my workstation that would sufficiently keep me engaged?
The easy answer is your operating system.
Enter NixOS
Microsoft has not had the best track record with making it’s Windows operating system controversy free. Whether it’s forcing AI implementation, locking older hardware out of updates, or incessantly pushing their latest offerings onto people, the tech giant is not doing itself any favours. Where Microsoft makes up for it’s numerous faults is in providing a solid working experience. Quite literally, almost everyone uses a Windows computer, which means that everything is built for Windows. Everything.
But this won’t be the case forever. The tides are ever so slowly turning against Microsoft. Not that we’ll see Windows usage plummet, but we’re starting to see frustration with Windows reaching new highs while the entry barriers for Linux continue to shrink. And the one company that’s done the most for Linux, has been … Valve?
See, Valve is actively pushing back against the de-facto monopoly that Microsoft has over the desktop experience in the only way they really can; games. By creating their Proton compatibility layer that enables a vast quantity of games to run on Linux distributions (albeit not perfectly) and then launching the Steam Deck (a Nintendo Switch-esque portable mini computer) with a custom Arch Linux based operating system called SteamOS, Valve has been incrementally showing us that you don’t need to automatically assume that Windows is the only operating system to be on.
But, we have to look a bit farther than just the ability to play games. How is Linux for making games? For use in general? As a totally inexperienced noob - it’s not horrible. Far from optimal though, and definitely not production ready.
Most of the big apps, barring the Adobe Creative Suite, have Linux versions. When I was contemplating the move to Linux, I created a list of every piece of software that I use on a semi-regular basis. Apart from some very niche exceptions (I’ll never forget you JSplacement), everything either had a Linux version, or had a more-or-less competent replacement.
To wrap it all up iss the distribution itself. What flavour of Linux did I choose? Well, it’s called NixOS. A declarative distribution that expects you to put together all the pieces you need like one big software Lego kit. It is simultaneously the most rewarding and frustrating experience to have to deal with. As an example, installing NVidia drivers has been a hassle all on its own. Thankfully team green has announced that they’re beginning the official process of transition their drivers to open source, meaning that the headaches might finally subside on that front.
I chose NixOS for the reasons I outlined above; I need a challenge when I learn. Learning how to control my environment allows me to explore the reaches of what I can do and then look back and see what I can build.
So how has my first week with Linux been?
The First Week
I am exhausted. And so immensely satisfied.
The first obstacle I thought I’d get stuck on was the Terminal. Taking actions through code is nothing short of mind blowing for someone who hasn’t seriously coded since my second year of high school. But it hasn’t been that bad, all things considered. Half the time I don’t know what I’m doing, but I do successfully know how to navigate through directories, assign and remove folder/file permissions, access root, and some other NixOS specific tasks.
The desktop experience hasn’t been too dissimilar to Windows. I’d already gotten myself trained to open applications through the search feature by pressing the power key, and have continued to do so on Linux. There does appear to be a small flickering occurring on the edges of one monitor whenever I play a video or view images though, which is something that I’ll have to investigate. However, a slight flicker on the edges of a monitor has been far from my top priority.
Throughout this whole endeavour, the largest inconvenience I’ve encountered is in trying to figure out what is going wrong. Part of the issue is that it’s Linux; there’s an assumed level of competency that you have in dealing with the basics of the system. Whereas the other part is that NixOS is niche even by Linux distribution standards. If you ever see a meme showing a Linux user explicitly letting people know that they use Linux, then NixOS users have the same reputation among other Linux users. Combine these two situations together and you have an extremely steep learning curve. But again, I knew what I was getting myself into.
As for the software itself, Blender works almost perfectly. The only issue is that, once again, my NVidia drivers aren’t recognized. Thankfully the small amount of client work I’ve done has been still frames, meaning that my trusted Ryzen CPU can pick up some of the slack until I fix this issue.
GIMP, is absolutely garbage compared to Photoshop, I will concede that. Although I’ve been told that GIMP is really only a partial replacement for Photoshop, and that there are several other software that each pick up a segment of what Photoshop is capable of.
For regular apps, Discord, Firefox, and Obsidian have worked out of the box with no issues whatsoever. There was a slight hiccup with Firefox and a certain extension preventing websites from loading, but that was remedied rather quickly.
Like I had mentioned above, Steam works well enough I supposed. There are several titles that I’ve tested so far that have worked wonderfully, however Steam itself is being rather finicky with how it wants to store files. I discovered this after looking to play Baldur’s Gate 3 and found that all 153 Gb had completely vanished. But that might have been a problem cause by me since I was fiddling with the disk partitions.
Finally, the status of the Unreal Engine on Linux.
It’s not looking great. Epic has provided documentation of setting up UE on Linux distributions, however I’ve encountered an issue where I can’t actually install the engine. Cloning and downloading the GitHub repo has worked, but I can’t seem to run the Setup.sh file that I’m supposed to. For whatever reason the Terminal can’t find the file. Go figure.
On top of the installation issues, Visual Studio Community is not available for Linux. Which means that I get use Visual Studio Code, it’s lightweight, stripped down cousin. However, UE support for VS Code is horrendous to the point where I can’t find a single Reddit thread or forum post of people that have managed to get VS Code to a working stable state with UE. Granted, I’ve found one YouTube video, but it’s more-so a demonstration rather than a tutorial. But the steps seem straightforward enough that I won’t cave and pay for the Rider IDE just yet. Although it is looking evermore tempting as the time passes.
Outro
Overall? I am liking Linux. NixOS has been a truly revolutionary experience, and while I am far from making use of all of the features that truly unlock one’s computer, I feel like I’m getting close to achieving a basic understanding. There is still a lot of features and settings that I have yet to tweak and work with, hopefully that allow me to improve my working ability on the platform. Here’s hoping that NVidia drivers start to work, that Unreal Engine can build, and that VS Code can work.
But until that point, my work station still sits firmly with Windows. While I dislike many of Microsoft’s practices, I cannot dismiss the fact that it is the most solid working experience that one can get. Especially when working with monolithic software like the Unreal Engine.
Until next time, stay declarative!
- Adam




