
Recently, most packages which were previously depending on `mesa` switched to `libGL`, which is supposed to find the host system opengl library, as long as it is available in the library search path.
111 lines
3.1 KiB
Nix
111 lines
3.1 KiB
Nix
{ system ? builtins.currentSystem,
|
|
nvidiaVersion ? null,
|
|
nvidiaHash ? null
|
|
}:
|
|
|
|
let
|
|
pkgs = import <nixpkgs> { inherit system; };
|
|
|
|
version = "1.0.0";
|
|
in
|
|
with pkgs;
|
|
rec {
|
|
nvidiaLibsOnly = (linuxPackages.nvidia_x11.override {
|
|
libsOnly = true;
|
|
kernel = null;
|
|
}).overrideAttrs(oldAttrs: rec {
|
|
name = "nvidia-${nvidiaVersion}";
|
|
src = fetchurl {
|
|
url = "http://download.nvidia.com/XFree86/Linux-x86_64/${nvidiaVersion}/NVIDIA-Linux-x86_64-${nvidiaVersion}.run";
|
|
sha256 = nvidiaHash;
|
|
};
|
|
useGLVND = 0;
|
|
});
|
|
|
|
nixGLNvidiaBumblebee = runCommand "nixGLNvidiaBumblebee-${version}" {
|
|
buildInputs = [ nvidiaLibsOnly bumblebee ];
|
|
|
|
meta = with pkgs.stdenv.lib; {
|
|
description = "A tool to launch OpenGL application on system other than NixOS - Nvidia bumblebee version";
|
|
homepage = "https://github.com/guibou/nixGL";
|
|
};
|
|
} ''
|
|
mkdir -p $out/bin
|
|
cat > $out/bin/nixGLNvidiaBumblebee << FOO
|
|
#!/usr/bin/env sh
|
|
export LD_LIBRARY_PATH=${nvidiaLibsOnly}/lib
|
|
${bumblebee}/bin/optirun "\$@"
|
|
FOO
|
|
|
|
chmod u+x $out/bin/nixGLNvidiaBumblebee
|
|
'';
|
|
|
|
nixNvidiaWrapper = api: runCommand "nix${api}Nvidia-${version}" {
|
|
buildInputs = [ nvidiaLibsOnly ];
|
|
|
|
meta = with pkgs.stdenv.lib; {
|
|
description = "A tool to launch ${api} application on system other than NixOS - Nvidia version";
|
|
homepage = "https://github.com/guibou/nixGL";
|
|
};
|
|
} ''
|
|
mkdir -p $out/bin
|
|
cat > $out/bin/nix${api}Nvidia << FOO
|
|
#!/usr/bin/env sh
|
|
export LD_LIBRARY_PATH=${nvidiaLibsOnly}/lib
|
|
"\$@"
|
|
FOO
|
|
|
|
chmod u+x $out/bin/nix${api}Nvidia
|
|
'';
|
|
|
|
nixGLNvidia = nixNvidiaWrapper "GL";
|
|
|
|
nixVulkanNvidia = nixNvidiaWrapper "Vulkan";
|
|
|
|
nixGLIntel = runCommand "nixGLIntel-${version}" {
|
|
buildInputs = [ mesa_drivers ];
|
|
|
|
meta = with pkgs.stdenv.lib; {
|
|
description = "A tool to launch OpenGL application on system other than NixOS - Intel version";
|
|
homepage = "https://github.com/guibou/nixGL";
|
|
};
|
|
} ''
|
|
mkdir -p $out/bin
|
|
cat > $out/bin/nixGLIntel << FOO
|
|
#!/usr/bin/env sh
|
|
export LIBGL_DRIVERS_PATH=${mesa_drivers}/lib/dri
|
|
export LD_LIBRARY_PATH=${mesa_drivers}/lib
|
|
"\$@"
|
|
FOO
|
|
|
|
chmod u+x $out/bin/nixGLIntel
|
|
'';
|
|
|
|
nixVulkanIntel = runCommand "nixVulkanIntel-${version}" {
|
|
meta = with pkgs.stdenv.lib; {
|
|
description = "A tool to launch Vulkan application on system other than NixOS - Intel version";
|
|
homepage = "https://github.com/guibou/nixGL";
|
|
};
|
|
} ''
|
|
mkdir -p "$out/bin"
|
|
cat > "$out/bin/nixVulkanIntel" << EOF
|
|
#!/usr/bin/env bash
|
|
if [ ! -z "$LD_LIBRARY_PATH" ]; then
|
|
echo "Warning, nixVulkanIntel overwriting existing LD_LIBRARY_PATH" 1>&2
|
|
fi
|
|
export LD_LIBRARY_PATH=${lib.makeLibraryPath [
|
|
zlib
|
|
libdrm
|
|
xorg.libX11
|
|
xorg.libxcb
|
|
xorg.libxshmfence
|
|
wayland
|
|
gcc.cc
|
|
]}
|
|
exec "\$@"
|
|
EOF
|
|
chmod u+x "$out/bin/nixVulkanIntel"
|
|
${shellcheck}/bin/shellcheck "$out/bin/nixVulkanIntel"
|
|
'';
|
|
}
|