I have a home server which I connect to with ssh -XY user@IP
in order to forward X11.
I am able to forward some X windows successfully, for example nix-shell -p xorg.xmessage --run "xmessage -center hello!"
. However I’m unable to forward anything requiring OpenGL:
$ glxgears
Error: couldn't get an RGB, Double-buffered visual
$ glxinfo
name of display: localhost:10.0
Error: couldn't find RGB GLX visual or fbconfig
A few things I’ve tried:
Using nouveau
drivers forward successfully, however I require CUDA which isn’t supported by nouveau
.
Using NixGL
doesn’t change the output
Relevant bits of my configuration:
services.xserver.videoDrivers = [ "intel" "nvidia" ]; # also fails with [ "nvidia" ]
boot.kernelModules = [ "nvidia-uvm" ]; # also fails with when unset
services.openssh.forwardX11 = true; # also fails with false
# custom zfsUnstable with zfs-head-master and linux 5_16
hardware.nvidia.package = pkgs.zfsUnstable.latestCompatibleLinuxPackages.nvidia_x11_beta; # also fails when unset
boot.kernelPackages = pkgs.zfsUnstable.latestCompatibleLinuxPackages
boot.initrd.availableKernelModules = [ "ehci_pci" "ahci" "isci" "usbhid" "usb_storage" "sd_mod" ];
# fails with or without the following code
hardware.nvidia.prime = {
sync.enable = true;
nvidiaBusId = "PCI:131:0:0";
intelBusId = "PCI:9:3:0";
};
hardware.nvidia.modesetting.enable = false;
hardware.opengl = {
driSupport = true;
driSupport32Bit = true;
};
System Details
$ nix-info
system: "x86_64-linux", multi-user?: yes, version: nix-env (Nix) 2.7.0pre20220127_558c4ee, channels(root): "nixos-21.11.335820.521e4d7d13b", channels(remote): "", nixpkgs: /etc/nixpkgs
$ uname -a
Linux host 5.16.8 #1-NixOS SMP PREEMPT Tue Feb 8 17:35:20 UTC 2022 x86_64 GNU/Linux
$nvidia-smi
...
| NVIDIA-SMI 510.47.03 Driver Version: 510.47.03 CUDA Version: 11.6 |
...
Interesting X log bit I found:
[ 6082.686] (II) AIGLX: Screen 0 is not DRI2 capable
[ 6082.716] (EE) AIGLX error: dlopen of /run/opengl-driver/lib/dri/swrast_dri.so failed (/run/opengl-driver/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory)
[ 6082.716] (EE) AIGLX error: unable to load driver swrast
[ 6082.716] (EE) GLX: could not load software renderer
[ 6082.716] (II) GLX: no usable GL providers found for screen 0
Debug:
$ lspci | grep -ia VGA
09:03.0 VGA compatible controller: Matrox Electronics Systems Ltd. MGA G200eW WPCM450 (rev 0a)
83:00.0 VGA compatible controller: NVIDIA Corporation GM204 [GeForce GTX 980] (rev a1)
$ echo $XDG_SESSION_CLASS
user
$ echo $XDG_SESSION_DESKTOP
$ echo $XDG_SESSION_TYPE
tty
$ ldd $(which glxinfo)
linux-vdso.so.1 (0x00007ffe5cfa6000)
libGLEW.so.2.2 => /nix/store/h9bkqvrlvziwli0k7axiybxf0arln01i-glew-2.2.0/lib/libGLEW.so.2.2 (0x00007fc289c82000)
libGLU.so.1 => /nix/store/04yj0nllw5bqzzlay5m6zzbmyw7csgnk-glu-9.0.2/lib/libGLU.so.1 (0x00007fc289c0e000)
libGL.so.1 => /nix/store/5lzlfgrc37wqj400b4qgpaa6kc9d2wr1-libglvnd-1.4.0/lib/libGL.so.1 (0x00007fc289b80000)
libm.so.6 => /nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108/lib/libm.so.6 (0x00007fc289a3f000)
libX11.so.6 => /nix/store/6pdb0rz2w2hsfsy66kwrbz67jd424wv7-libX11-1.7.2/lib/libX11.so.6 (0x00007fc2898fa000)
libXext.so.6 => /nix/store/a3yw11i2iskvr1zx2za4mwrj9sawq7hz-libXext-1.3.4/lib/libXext.so.6 (0x00007fc2898e3000)
libpthread.so.0 => /nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108/lib/libpthread.so.0 (0x00007fc2898c3000)
libc.so.6 => /nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108/lib/libc.so.6 (0x00007fc2896ed000)
libSM.so.6 => /nix/store/f30jdkd21p3bayd6s2z3is7xfm4a43h9-libSM-1.2.3/lib/libSM.so.6 (0x00007fc2896e2000)
libICE.so.6 => /nix/store/lmn5ybv6w9zsdk18sl37adlbvf9cm8c6-libICE-1.0.10/lib/libICE.so.6 (0x00007fc2896c4000)
libstdc++.so.6 => /nix/store/ndnqiz3nnifj1blhg9q626xlmkqq1nmh-gcc-10.3.0-lib/lib/../lib64/libstdc++.so.6 (0x00007fc2894ed000)
libgcc_s.so.1 => /nix/store/ndnqiz3nnifj1blhg9q626xlmkqq1nmh-gcc-10.3.0-lib/lib/../lib64/libgcc_s.so.1 (0x00007fc2894d3000)
libGLX.so.0 => /nix/store/5lzlfgrc37wqj400b4qgpaa6kc9d2wr1-libglvnd-1.4.0/lib/libGLX.so.0 (0x00007fc28949e000)
libGLdispatch.so.0 => /nix/store/5lzlfgrc37wqj400b4qgpaa6kc9d2wr1-libglvnd-1.4.0/lib/libGLdispatch.so.0 (0x00007fc2893e5000)
libdl.so.2 => /nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108/lib/libdl.so.2 (0x00007fc2893e0000)
/nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108/lib/ld-linux-x86-64.so.2 => /nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108/lib64/ld-linux-x86-64.so.2 (0x00007fc289d3f000)
libxcb.so.1 => /nix/store/n1h6395818hn30bi5dk31smjwvhwawax-libxcb-1.14/lib/libxcb.so.1 (0x00007fc2893b2000)
libuuid.so.1 => /nix/store/kx41yd3yyr9bwrsk85fhhx6qhavfwql6-util-linux-2.37.3-lib/lib/libuuid.so.1 (0x00007fc2893a9000)
libXau.so.6 => /nix/store/x14h74lzrxk7j05pgqmba8yicb2bms6f-libXau-1.0.9/lib/libXau.so.6 (0x00007fc2893a4000)
libXdmcp.so.6 => /nix/store/3ijd7iqmnwqvfyv4k8l5a8qw33agi1br-libXdmcp-1.1.3/lib/libXdmcp.so.6 (0x00007fc28939a000)
$ nix-store --query --references $(which glxinfo)
/nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108
/nix/store/6pdb0rz2w2hsfsy66kwrbz67jd424wv7-libX11-1.7.2
/nix/store/pi2h6nky70gww75w05zq1ch9fmycrvvy-libGL-1.4.0
$ nix-store --query --references $(which nvidia-smi)
/nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108
/nix/store/2mr45n3xcfsbvj6f9fl2s4v48chbhwy4-libdrm-2.4.109
/nix/store/n1h6395818hn30bi5dk31smjwvhwawax-libxcb-1.14
/nix/store/6pdb0rz2w2hsfsy66kwrbz67jd424wv7-libX11-1.7.2
/nix/store/a3yw11i2iskvr1zx2za4mwrj9sawq7hz-libXext-1.3.4
/nix/store/33gyg5fwgi7d76ybw5sdrcgs5jdhl4yk-libXrandr-1.5.2
/nix/store/4k40gdgf7ckimb3hlwywx76dj5435ack-libXv-1.0.11
/nix/store/ndnqiz3nnifj1blhg9q626xlmkqq1nmh-gcc-10.3.0-lib
/nix/store/pz2wx67gskw438ysws82nwk84whwd63d-wayland-1.20.0
/nix/store/5j7k2nrgvl6vnichkg4c1fwj1907nvgg-mesa-21.3.5
/nix/store/bqjh8dc6m5plswxrmmn9x4cpxrrw94lv-zlib-1.2.11
/nix/store/pi2h6nky70gww75w05zq1ch9fmycrvvy-libGL-1.4.0
/nix/store/1m06jadmgmzkqy0ry6sx9q0pkcbbkipv-nvidia-x11-510.47.03-5.10.99
$ ldd $(which nvidia-smi)
linux-vdso.so.1 (0x00007f1d13b33000)
libpthread.so.0 => /nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108/lib/libpthread.so.0 (0x00007f1d13b0d000)
libm.so.6 => /nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108/lib/libm.so.6 (0x00007f1d139cc000)
libdl.so.2 => /nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108/lib/libdl.so.2 (0x00007f1d139c7000)
libc.so.6 => /nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108/lib/libc.so.6 (0x00007f1d137ef000)
librt.so.1 => /nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108/lib/librt.so.1 (0x00007f1d137e4000)
/nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108/lib/ld-linux-x86-64.so.2 => /nix/store/4s21k8k7p1mfik0b33r2spq5hq7774k1-glibc-2.33-108/lib64/ld-linux-x86-64.so.2 (0x00007f1d13b35000)
$ sudo lshw -c display
*-display
physical id: 3
bus info: pci@0000:09:03.0
version: 0a
width: 32 bits
clock: 33MHz
capabilities: pm bus_master cap_list rom
configuration: driver=mgag200 latency=64 maxlatency=32 mingnt=16
resources: irq:16 memory:dd000000-ddffffff memory:df800000-df803fff memory:df000000-df7fffff memory:c0000-dffff
*-display
physical id: 0
bus info: pci@0000:83:00.0
version: a1
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list rom
configuration: driver=nvidia latency=0
resources: irq:69 memory:fa000000-faffffff memory:e0000000-efffffff memory:f0000000-f1ffffff ioport:d000(size=128) memory:fb000000-fb07ffff
$ modinfo nvidia
filename: /run/booted-system/kernel-modules/lib/modules/5.16.8/misc/nvidia.ko
firmware: nvidia/510.39.01/gsp.bin
alias: char-major-195-*
version: 510.39.01
supported: external
license: NVIDIA
srcversion: 70CDF5F4E6A9B189699C5B8
alias: pci:v000010DEd*sv*sd*bc06sc80i00*
alias: pci:v000010DEd*sv*sd*bc03sc02i00*
alias: pci:v000010DEd*sv*sd*bc03sc00i00*
depends: i2c-core,drm
retpoline: Y
name: nvidia
vermagic: 5.16.8 SMP preempt mod_unload
parm: NvSwitchRegDwords:NvSwitch regkey (charp)
parm: NvSwitchBlacklist:NvSwitchBlacklist=uuid[,uuid...] (charp)
parm: NVreg_ResmanDebugLevel:int
parm: NVreg_RmLogonRC:int
parm: NVreg_ModifyDeviceFiles:int
parm: NVreg_DeviceFileUID:int
parm: NVreg_DeviceFileGID:int
parm: NVreg_DeviceFileMode:int
parm: NVreg_InitializeSystemMemoryAllocations:int
parm: NVreg_UsePageAttributeTable:int
parm: NVreg_RegisterForACPIEvents:int
parm: NVreg_EnablePCIeGen3:int
parm: NVreg_EnableMSI:int
parm: NVreg_TCEBypassMode:int
parm: NVreg_EnableStreamMemOPs:int
parm: NVreg_RestrictProfilingToAdminUsers:int
parm: NVreg_PreserveVideoMemoryAllocations:int
parm: NVreg_EnableS0ixPowerManagement:int
parm: NVreg_S0ixPowerManagementVideoMemoryThreshold:int
parm: NVreg_DynamicPowerManagement:int
parm: NVreg_DynamicPowerManagementVideoMemoryThreshold:int
parm: NVreg_EnableGpuFirmware:int
parm: NVreg_EnableUserNUMAManagement:int
parm: NVreg_MemoryPoolSize:int
parm: NVreg_KMallocHeapMaxSize:int
parm: NVreg_VMallocHeapMaxSize:int
parm: NVreg_IgnoreMMIOCheck:int
parm: NVreg_NvLinkDisable:int
parm: NVreg_EnablePCIERelaxedOrderingMode:int
parm: NVreg_RegisterPCIDriver:int
parm: NVreg_EnableDbgBreakpoint:int
parm: NVreg_RegistryDwords:charp
parm: NVreg_RegistryDwordsPerDevice:charp
parm: NVreg_RmMsg:charp
parm: NVreg_GpuBlacklist:charp
parm: NVreg_TemporaryFilePath:charp
parm: NVreg_ExcludedGpus:charp
parm: rm_firmware_active:charp
$ lsmod
Module Size Used by
af_packet 53248 2
cfg80211 1052672 0
rfkill 32768 2 cfg80211
8021q 40960 0
nls_iso8859_1 16384 0
nls_cp437 20480 0
vfat 20480 0
fat 86016 1 vfat
xt_mark 16384 4
xt_owner 16384 4
xt_connmark 16384 1
nft_chain_nat 16384 4
nf_nat 57344 1 nft_chain_nat
xt_conntrack 16384 3
nf_conntrack 176128 3 xt_conntrack,nf_nat,xt_connmark
nf_defrag_ipv6 24576 1 nf_conntrack
nf_defrag_ipv4 16384 1 nf_conntrack
ipt_rpfilter 16384 1
xt_pkttype 16384 1
xt_LOG 20480 1
nf_log_syslog 20480 1
xt_tcpudp 20480 12
nft_compat 20480 28
dm_crypt 61440 6
nft_counter 16384 37
cbc 16384 0
encrypted_keys 24576 1 dm_crypt
trusted 40960 2 encrypted_keys,dm_crypt
asn1_encoder 16384 1 trusted
tee 36864 1 trusted
tpm 86016 1 trusted
rng_core 16384 1 tpm
nf_tables 266240 75 nft_compat,nft_counter,nft_chain_nat
libcrc32c 16384 3 nf_conntrack,nf_nat,nf_tables
crc32c_generic 16384 0
nfnetlink 20480 2 nft_compat,nf_tables
sch_fq_codel 20480 18
intel_rapl_msr 20480 0
edac_core 69632 0
intel_rapl_common 28672 1 intel_rapl_msr
x86_pkg_temp_thermal 20480 0
intel_powerclamp 20480 0
nvidia_drm 73728 0
snd_hda_codec_hdmi 73728 1
coretemp 20480 0
snd_hda_intel 57344 0
snd_intel_dspcfg 28672 1 snd_hda_intel
snd_intel_sdw_acpi 20480 1 snd_intel_dspcfg
crc32_pclmul 16384 0
snd_hda_codec 176128 2 snd_hda_codec_hdmi,snd_hda_intel
ghash_clmulni_intel 16384 0
atkbd 36864 0
nvidia_modeset 1163264 1 nvidia_drm
snd_hda_core 106496 3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
aesni_intel 380928 12
libps2 20480 1 atkbd
libaes 16384 1 aesni_intel
joydev 28672 0
serio 28672 1 atkbd
snd_hwdep 16384 1 snd_hda_codec
input_leds 16384 0
crypto_simd 16384 1 aesni_intel
cryptd 24576 8 crypto_simd,ghash_clmulni_intel
led_class 20480 1 input_leds
mgag200 40960 0
iTCO_wdt 16384 0
snd_pcm 147456 4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
igb 262144 0
mousedev 24576 0
evdev 24576 18
snd_timer 45056 1 snd_pcm
intel_pmc_bxt 16384 1 iTCO_wdt
loop 32768 0
drm_kms_helper 311296 4 mgag200,nvidia_drm
ipmi_ssif 40960 0
watchdog 24576 1 iTCO_wdt
snd 110592 6 snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_timer,snd_pcm
fb_sys_fops 16384 1 drm_kms_helper
mxm_wmi 16384 0
syscopyarea 16384 1 drm_kms_helper
mac_hid 16384 0
soundcore 16384 1 snd
sysfillrect 16384 1 drm_kms_helper
ptp 32768 1 igb
rapl 16384 0
sysimgblt 16384 1 drm_kms_helper
acpi_ipmi 20480 0
intel_cstate 20480 0
pps_core 24576 1 ptp
tun 61440 2
i2c_algo_bit 16384 2 igb,mgag200
ipmi_si 73728 1
tap 28672 0
lpc_ich 28672 0
ipmi_devintf 20480 0
intel_uncore 204800 0
macvlan 28672 0
hed 16384 0
ioatdma 61440 0
mfd_core 20480 2 intel_pmc_bxt,lpc_ich
mei_me 45056 0
ipmi_msghandler 73728 4 ipmi_devintf,ipmi_si,acpi_ipmi,ipmi_ssif
i2c_i801 36864 0
mei 151552 1 mei_me
bridge 303104 0
i2c_smbus 20480 1 i2c_i801
dca 16384 2 igb,ioatdma
stp 16384 1 bridge
llc 16384 2 bridge,stp
nvidia_uvm 1200128 0
wmi 36864 1 mxm_wmi
tiny_power_button 16384 0
button 24576 0
nvidia 39108608 2 nvidia_uvm,nvidia_modeset
drm 638976 5 drm_kms_helper,nvidia,mgag200,nvidia_drm
agpgart 49152 1 drm
backlight 24576 2 drm_kms_helper,drm
i2c_core 102400 9 drm_kms_helper,i2c_algo_bit,igb,nvidia,mgag200,i2c_smbus,i2c_i801,ipmi_ssif,drm
kvm_intel 352256 0
kvm 1028096 1 kvm_intel
configfs 57344 1
fuse 147456 1
irqbypass 16384 1 kvm
pstore 28672 1
ip_tables 28672 1
x_tables 53248 10 xt_conntrack,nft_compat,xt_LOG,xt_tcpudp,xt_owner,xt_connmark,ipt_rpfilter,xt_pkttype,ip_tables,xt_mark
autofs4 53248 7
hid_generic 16384 0
usbhid 65536 0
hid 147456 2 usbhid,hid_generic
sd_mod 57344 20
t10_pi 16384 1 sd_mod
crc_t10dif 20480 1 t10_pi
crct10dif_generic 16384 0
isci 163840 0
xhci_pci 20480 0
xhci_pci_renesas 20480 1 xhci_pci
ahci 45056 20
libsas 102400 1 isci
xhci_hcd 315392 1 xhci_pci
libahci 45056 1 ahci
scsi_transport_sas 49152 2 isci,libsas
ehci_pci 20480 0
libata 290816 4 isci,libahci,ahci,libsas
ehci_hcd 98304 1 ehci_pci
crct10dif_pclmul 16384 1
crct10dif_common 16384 3 crct10dif_generic,crc_t10dif,crct10dif_pclmul
usbcore 327680 5 xhci_hcd,ehci_pci,usbhid,ehci_hcd,xhci_pci
crc32c_intel 24576 1
scsi_mod 266240 5 isci,scsi_transport_sas,sd_mod,libsas,libata
usb_common 16384 3 xhci_hcd,usbcore,ehci_hcd
scsi_common 16384 3 scsi_mod,libsas,libata
rtc_cmos 28672 1
dm_mod 151552 19 dm_crypt
zfs 3895296 16
zunicode 335872 1 zfs
zzstd 569344 1 zfs
zlua 184320 1 zfs
zcommon 102400 1 zfs
znvpair 106496 2 zfs,zcommon
zavl 16384 1 zfs
icp 323584 1 zfs
spl 114688 6 zfs,icp,zzstd,znvpair,zcommon,zavl