[WIP] Immutable reproducable linux build through the Nix package manager


Heya, nixOS user here. I want to start using this platform. But found out I need to compile it myself.

So, to package this software under nix there are a few problems.

  1. The build environment does not have access to the internet.

This means that using VCPKG to download external dependencies is impossible. So I basically have to port all the dependencies it is installing to nix

  1. The build environment can not just “run a binary”

Since its runtime paths differ from a “standard” linux enviroment. This means I’ll have to patch every binary that might need grabbing. Or alternatively, compile them all from source.
I’m not sure how much of a problem this actually is, cause I’m not sure what all the dependencies actually are.

I’ll be using this thread to ask questions about how this stuff is put together and update on my progress towards getting the build out.

Of course if we got some builds for the client I wouldnt have to do all this and could just patch it :wink: But oh well

The good thing about this approach is that once it’s done, any Linux distro should be able to install hifi by just installing nix to their system or user. Maybe even MacOS users!


Officially listed dependencies are as follows:

Name Version Package
cmake 3.9 3.11.2
Qt 5.10.1 5.11.1
Python >3.6 Yes
Bullet Physics 2.83 2.87
glm 0.9.8
Polyvox 0.2.1 0.2.1
QuaZip 0.7.3 0.7.3
SDL2 2.0.3 2.0.8
Intel Threading Building Blocks 4.3 2018_U5
nvtt 2.1.1 (custom) Yes

Changing the versions of the libraries present is very simple so the only real problems are packaging the missing dependencies

Polyvox, VHACD. and the custom(?) nvtt

I’m also unsure what’s up with itt 2018_U5


I’ve now packaged Polyvox 0.2.1


I’ve now packaged nvtt


VHACD is more challenging to build as I’m not getting any outputs in my store. Probably need to do some manual exporting :frowning_face:

If anyone knows of any other dependencies not listed in the docs I would be very grateful, thanks :heart: