Run your nix programs with your host graphics drivers.
Go to file
Félix Baylac Jacqué 37d4a1b248
Bugfix: do not try to copy and patch unexisting DSOs
It seems like some drivers installations are missing some NVidia
subsystems. We stumbled upon the case of somebody missing the Cuda
libraries.

It did end up making fail the patchelf call.

Preventing the copying/patch routine to run when we do not have any
DSO to copy/patch.
2022-12-22 19:01:31 +01:00
src Bugfix: do not try to copy and patch unexisting DSOs 2022-12-22 19:01:31 +01:00
tests/fixtures/json_permut Hot Cache: use the DSO last write time/size instead of content hash 2022-12-14 19:20:10 +01:00
.envrc Introduce a cache system 2022-12-05 13:33:01 +01:00
INTERALS.md Update doc 2022-12-05 15:38:58 +01:00
README.md Update doc 2022-12-05 15:38:58 +01:00
default.nix Rename nixglhost_wrapper -> nixglhost 2022-12-14 19:20:31 +01:00
flake.lock Add Nix build infrastructure 2022-11-24 17:03:42 +01:00
flake.nix Remove unused nixpkgs overlay 2022-12-22 10:15:46 +01:00
shell.nix Add Nix build infrastructure 2022-11-24 17:03:42 +01:00

README.md

NixGLHost

Running OpenGL/Cuda/OpenCL Nix-built binaries on a foreign Linux distro is quite often a challenge. These programs are relying on some host-specific graphics drivers at runtime. These drivers are host-specific, it is obviously impossible to distribute the drivers for each and every hosts setup through a pre-defined generic nix closure.

NixGLHost solves this issue by re-using your host system graphics drivers. It copies them to an isolated environment and inject the said environment to the Nix runtime closure.

Current status: experimental.

How to Use

All you have to do is to wrap your nix-built OpenGL/Cuda program with nixglhost:

For instance, let's say you want to run my-gl-program, a nix-built program on your favorite distribution. All you'll have to do is:

nixglhost my-gl-program

Example

Let's nix-build glxgears, living in the glxinfo Nixpkgs derivation then execute it with nixglhost.

cd $thisRepoCheckout
PATH=$(nix build --print-out-paths)/bin:$PATH
nixglhost $(nix build  --print-out-paths .#glxinfo)/bin/glxgears

Internals

You can read the INTERNALS.md file to learn how exactly NixGLHost works.

Support

  • [-] Proprietary Nvidia
    • GLX
    • EGL
    • Cuda
    • OpenCL
  • Mesa
    • GLX
    • EGL
    • OpenCL

Alternative Approaches

  • NixGL: tries to auto detect the host vendor driver type/version, then download/install it from its Nixpkgs derivation.

Authors/Maintainers