Comment by Ericson2314
6 days ago
It's a goal of mine to get Valve using Nix. (I hope our in-progress Windows support would make this especially compelling.)
One advantage of this is that it will become very easy to not only build the original source of the game, but also build it with the original toolchain and dependencies, the toolchains for those dependencies, etc. etc., all the way down.
Hopefully something like that at your finger trips would have made finding the root cause of this bug a good bit easier!
> It's a goal of mine to get Valve using Nix
They’re using Arch Linux. Let’s call it a win and move on lol.
Using completely different packaging infrastructure for the different platforms you support is no good!
The goal with Nix should be that you can use the same infrastructure for all of Linux, macOS, and Windows. (And other Unixes, other OSes, etc. etc.)
Nix seems like a cool tool but nix users are becoming increasingly irritating.
> I hope our in-progress Windows support would make this especially compelling.
What is the current story for using Nix to build Windows binaries?
On Nixpkgs master, you can cross compile to MinGW and Cygwin.
Native Cygwin builds are also currently in progress: https://github.com/NixOS/nixpkgs/pull/447520. I would expect this to be done very soon, there year even (holidays permitting).
There is a MinGW build of Nix but it is missing some features. There has been MSVC build of a fork in the past and I would like to revive that also.
There some some open questions relating to Nixpkgs's heavy use of Bash, but longer term I would like to compete for Windows in all ways:
- Support all cross (MinGW, Cygwin/MSYS2, MSVC ABI with LLVM, MSVC with Wine) - Be Cygwin packages - Be https://github.com/msys2/MINGW-packages / https://github.com/msys2/MSYS2-packages - Be VCPKG
All these things have slightly different trade-offs, and Nixpkgs is very good at portability, so we should simply do them all.
Maybe I'm not seeing it. How would the bug finding be easier here? Seems like the same setup. They could compile with recent tools, and they already had the compiled version with old tools (hosted on Steam).
You could quickly rule out non-determinism by reproducing the build with the new and old tools.
You could also try the newer version of the codebase with the older tools (assuming nothing broke / no newer C++ features) if you like.