Hiya! I'm following a gamedev degree in university. It's been a major challenge doing it from Linux, as everything is Windows stuff (.sln Visual Studio projects, DirectX API, excel graphs...). However I've gotten by by making my own tools and dipping into WINE when it gets too difficult. I'm replacing my laptop due to hardware faults (never buying from ASUS again) and my Framework 16 preorder should arrive in a month or two.
I'm considering trying out NixOS. I currently have Arch on the laptop because it makes it easy to get recent versions of libraries and compilers. However, I've had lots of issues due to inconsistent setup (SDDM theme randomly disappears, KDE apps have black text on dark background, video encoding does not work) and I figured having a declarative config might allow me to set things up better and more consistently. I do have a few worries though, given this is new to me:
- Installing proprietary software. For certain courses I unfortunately have to use software like Unreal Engine, Maya, Houdini, Unity, P4V, and a few others. I read NixOS has difficulty with running random binaries. I also could not find an UE5 package in nixpkgs, which Arch does have.
- Building binaries. I know nixos does some weird stuff with libraries and binaries. I need to be able to do normal stuff with binaries, and perhaps package and distribute them. It'd be really nice to be able to try out different compilers for my CMake/C++ projects also. Can NixOS do that easily?
- VMs. I will be doing dGPU passthrough for testing assignments before handin. I assume this is no problem but it requires some weird stuff so I want to be sure before diving in!
Am I better off just setting up a brittle Arch install again, or is NixOS worth the plunge?
I went from Arch to NixOS and I've been loving it. I also had all the time on the world to dive in with several machines to fall back to.
There are a lot of layers to wade through especially when you need a specific tool like your UE5 case. As others are saying, there are ways to make everything work, nix or non-nix, it's just more to work through after getting the bases covered.
Anecdotally, I had little trouble getting set up on my MSI laptop with an RTX2070, Primus and all. That was after learning the ropes on a Ryzen IdeaPad.
Rambling aside, I would definitely make sure to start in a non-mission-critical way, but do jump right in if you're comfortable. Maybe if you can stomach the Asus a bit longer, or get the Framework set up and play around with the Asus. And ask plenty of questions! I know I'm not alone in jumping in on nix questions any way I can :)
This could be a case for a more stable distro as base and distrobox for your development environment (in Arch, Bazzite, or Tumbleweed).
- Jetbrains toolbox is proprietary and I can still run it. You do have to explicitly state that you want proprietary software. You can even run random binaries if you setup nix-ld.
- The preferred way to do this is by creating a shell.nix for each of your projects with the dependencies defined within.
- Not sure about passthroughs, but qemu worked fine for me.
As for nix Vs arch, I still prefer arch. This is not because nix is bad, but because I have used arch for a long time. I use nix on my laptop because I want that reliability, but I will probably never switch to nix on my desktop. I still find that I can debug my mistakes easier on arch, but with nix I can just
git checkout oldcommit
. With that being said, I do have a distrobox container with arch in my nix machine, if I really wanna install something quickly.For my use the best solution i found so far is setting up the os stuff and tools i use a lot with nix and nixos and then using a debian distrobox for things that i just want to work. Nixos is really good for development but only if the thing youre developing already has a nix development environment or youre the one creating it. For most random github projects you wanna work on/compile etc using something traditional is better. I dont care if one of my distroboxes break i know nixos will always work and boot or i can roll back.
Why Nix? It will only make your life 2000% harder and quite frankly makes one hate Linux. As a developer the best dev distros I've used were Debian, Ubuntu and Arch
Slightly off-topic here, but have you considered Fedora? For me it just gets the job done and stays out of my way. I don't want to configure a whole bunch of things before I can get to work so I find fedora simple to use and well-integrated. Docs and forums are quite helpful too.