Demi Marie Obenour writes: > On 11/8/25 17:14, Alyssa Ross wrote: >> Alyssa Ross writes: >> >>> Demi Marie Obenour writes: >>> >>>> On 11/8/25 14:49, Alyssa Ross wrote: >>>>> Demi Marie Obenour writes: >>>>> >>>>>> @@ -113,14 +76,15 @@ let >>>>>> >>>>>> kernel = linux_latest; >>>>>> >>>>>> - appvm = callSpectrumPackage ../../img/app { inherit (foot) terminfo; }; >>>>>> - netvm = callSpectrumPackage ../../vm/sys/net { inherit (foot) terminfo; }; >>>>>> + appvm = callSpectrumPackage ../../img/app { inherit (no_pgo_foot) terminfo; }; >>>>>> + netvm = callSpectrumPackage ../../vm/sys/net { inherit (no_pgo_foot) terminfo; }; >>>>>> >>>>>> # Packages that should be fully linked into /usr, >>>>>> # (not just their bin/* files). >>>>>> usrPackages = [ >>>>>> - appvm kernel.modules firmware netvm >>>>>> - ] ++ (with pkgsGui; [ mesa dejavu_fonts westonLite ]); >>>>>> + appvm kernel.modules firmware kmod kmod.lib >>>>>> + netvm mesa dejavu_fonts westonLite >>>>>> + ]; >>>>>> >>>>>> appvms = { >>>>>> appvm-firefox = callSpectrumPackage ../../vm/app/firefox.nix {}; >>>>> >>>>> So based on what we'd discussed previously, I was ready to just apply >>>>> this and pare down the Nix changes myself since I don't have to worry >>>>> about rebuilds, etc., but in doing so I came across this. Do you know >>>>> why kmod.lib is required? Is something impurely dlopening it? Seems >>>>> very strange, but I did verify that it's required for Weston to start. >>>> >>>> systemd uses dlopen heavily. This allows dependencies to be optional >>>> at runtime. I remember strace showing that systemd-udevd dlopen's >>>> kmod.lib. In short, your diagnosis is correct. >>> >>> Okay, that's a packaging bug in Nixpkgs then. (See e.g. [1].) I'll see >>> what can be done. >>> >>> [1]: https://github.com/NixOS/nixpkgs/commit/2328731ad041735a2260698574ce6599591f33ad >> >> I have looked into it a bit and am now even more confused. From what I >> can see, loading libkmod should be done by libsystemd-shared.so, which >> has kmod.lib in its RUNPATH. > > According to https://wiki.debian.org/RpathIssue, only the RUNPATH of > the executable is honored. The RUNPATH of libraries is not honored. > For this to work, libsystemd-shared.so needs to have kmod.lib in its > RPATH, and udevadm *may* need to not have a RUNPATH. Right, so we might need to add --force-rpath to the patchelf invocation. I wonder why this doesn't affect every NixOS system, though. They certainly don't have /usr/lib/libkmod.so.2.