Nixpkgs includes packages compiled for musl under the pkgsMusl
prefix. For example, pkgs.pkgsMusl.hello
. IIUC these only exist on a Linux system.
Maybe you can use those packages for everything by setting pkgsMusl
as your package set. For example if you are using Home Manager with a flake config you normally have a line like,
let pkgs = nixpkgs.legacyPackages.${system};
Maybe you could change that to
let pkgs = nixpkgs.legacyPackages.${system}.pkgsMusl;
I believe your last Linux experience in 2015 predates DXVK which has been transformative for Linux gaming. Wine used to have to implement its own DirectX replacement which necessarily lagged behind Microsoft’s implementation, and IIUC didn’t get the same level of hardware acceleration due to missing out on DirectX acceleration built into graphics cards.
Now DXVK acts as a compatibility bridge between DirectX and Vulkan. Vulkan is cross-platform, does generally the same stuff that DirectX does, and graphics cards have hardware acceleration for Vulkan calls the same way they do for DirectX calls. So game performance on Linux typically meets or exceeds performance on Windows, and you can play games using the latest DirectX version without waiting for some poor dev to reimplement it.
If you are using Steam with Proton, Lutris, or really any Wine gaming these days you are using DXVK. It’s easy to take for granted. But I remember the night-and-day difference it made.