Run your nix programs with your host graphics drivers.
Go to file
Ivor Wanders 95456b5ed1 Make the copied library writable.
We need to make sure the library is writable before trying to patchelf
it.
2022-12-06 10:54:21 +01:00
overlays Nix: add patched libglvnd overlay 2022-11-24 17:03:46 +01:00
src Make the copied library writable. 2022-12-06 10:54:21 +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 Introduce a cache system 2022-12-05 13:33:01 +01:00
flake.lock Add Nix build infrastructure 2022-11-24 17:03:42 +01:00
flake.nix Nix: add patched libglvnd overlay 2022-11-24 17:03: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