NixGL builds little wrapper programs which use the system libGL or nvidia libraries to run nixpkgs/home-manager programs which need OpenGL or whatever.
The nixGL source is pulled in as a flake input pinned by flake.lock:
nixgl = {
url = "github:nix-community/nixGL";
flake = false;
};nixGL Wrapper helper
Linked from
This plugs in to CCE Hypermedia to make it somewhat more durable to create functional wrappers for nixGL:
{ pkgs, stdenv, ... }:
{ name, package_name ? name, pkg ? null }:
let
nixGL = pkgs.nixGL;
pkg_to_shadow = if (isNull pkg)
then pkgs."${package_name}"
else pkg;
in
pkgs.symlinkJoin {
name = "${name}-nixgl-wrapper";
paths = [
(pkgs.writeScriptBin name ''
#!${pkgs.stdenv.shell}
exec ${nixGL}/bin/nixGLIntel ${pkg_to_shadow}/bin/${name} $@
'')
pkg_to_shadow
];
}{ inputs, stdenv, pkgs ? import <nixpkgs> {}, ... }:
let
nixGLgh = inputs.nixgl;
nixGL = (pkgs.callPackage nixGLgh {}).nixGLIntel;
in
nixGL