- First create a symbolic link to the linker provided by nix-ld at
/lib64/ld-linux-x86-64.so.2
(assuming you're using x86_64)
I've done some works in https://gitlab.com/citreu/cireguix/-/blob/master/ciregnu/services/nix-ld.scm?ref_type=heads, it's far from perfect so I haven't upstream it.
- Create a profile contains commonly used libraries
Here's an example (the libraries are shamelessly copied from AppImage project)
(concatenate-manifests
(list
(specifications->manifest
'("glibc"
;; "gcc:lib"
"mesa"
"libxcb"
"libx11"
"libxcomposite"
"libxrandr"
"libxrender"
"libxext"
"libxfixes"
"libxinerama"
"libxdamage"
"libxcursor"
"libxscrnsaver"
"libxtst"
"libxi"
"libsm"
"libice"
"dbus"
;; "glib"
;; "gtk+@2"
"gtk+@3"
"libdbusmenu"
;; "at-spi2-core"
"gdk-pixbuf"
"webp-pixbuf-loader"
;; "cairo" propagated by gtk+
;; "cairo"
;; "pango"
"alsa-lib"
"fontconfig"
"libthai"
"freetype"
;; "harfbuzz"
"fribidi"
"expat"
"util-linux:lib" ;libuuid
"zlib"
"libgcrypt"
"nss"
;; "nspr" ;propagated from nss
"openssl"
"cups"
"pulseaudio"
))
(packages->manifest
`((,(@ (gnu packages gcc) gcc) "lib")))))
- Setup environment variables.
I've done it in Guix Home, but you can do it in the way you like
export NIX_LD=<path-to-glibc-dynamic-linker>
# NSS library in Guix are under different directory
export NIX_LD_LIBRARY_PATH=/<path-to-libraries-profile-prefix>/lib:<path-to-libraries-profile-prefix>/lib/nss
That's it!