Update: Now got a very basic Solus core snap which has a default entry point for /bin/bash so I can debug it, and snapd is able to correctly mount and use it. Next steps, adding the rest of the runtime, chucking in Steam and making sure it all works, then cleaning it up
Had to make some ugly workarounds in my script to rename libdirs, which will require upstream confinement patches to understand lib64 + lib dirs, and some minor changes to allow supporting bash (not dash) with apparmor confinement in the base snap, but pretty trivial stuff so far.
Networking appears to be a bust at the moment, and LSI is currently buggering with /var/lib/snapd/lib/gl expections, so we need to actually build those redirects straight into liblsi-intercept.so. This is good progress though I think. In my local implementation I’ve opted to have the confinement mkdir a 32 subdir under the rootfs /var/lib/snapd/lib/gl and attempt to populate the symlink farm with /usr/lib32 libraries, and that’s working quite nicely.
What if we create snap package of nvidia driver which you can link to steam? and other apps? As you are saying 32-bit + 64-bit NVIDIA GL within the snap, it will increase the size of the snap even for non-nvidia binary driver user? Like flatpak have.
Correct me if i am wrong, i don’t really know how snap interact with gpu drivers.
Still need to teach the main shim to respect $SNAP environmental variable so it can set up the libraries without intervention, and I need to fix minor cruft in the runtime with broken SSL certs, but damn if we’re not close.