fix: set LD_LIBRARY_PATH for python applications

This commit is contained in:
Nickolaj Jepsen 2025-12-01 13:19:48 +01:00
parent 36281c725e
commit b698c5b82a

View file

@ -1,20 +1,28 @@
{
pkgs,
lib,
pkgsUnstable,
...
}: {
}: let
# Sets LD_LIBRARY_PATH for various python-based tools
# Some python packages requires shared libraries to build C extensions.
mkWrapLDLibraryPath = pkg: let
mainProgram = pkg.meta.mainProgram or pkg.pname or (lib.getName pkg);
in pkgs.symlinkJoin {
name = "${pkg.name}-wrapped";
paths = [pkg];
nativeBuildInputs = [pkgs.makeWrapper];
postBuild = ''
wrapProgram $out/bin/${mainProgram} \
--run "export LD_LIBRARY_PATH=\$NIX_LD_LIBRARY_PATH"
'';
};
in {
environment.systemPackages = [
(pkgs.symlinkJoin {
name = "uv";
paths = [pkgsUnstable.uv];
nativeBuildInputs = [pkgs.makeWrapper];
postBuild = ''
wrapProgram $out/bin/uv \
--run "export LD_LIBRARY_PATH=\$NIX_LD_LIBRARY_PATH"
'';
})
pkgsUnstable.rye
pkgs.python3
(mkWrapLDLibraryPath pkgsUnstable.uv)
(mkWrapLDLibraryPath pkgsUnstable.rye)
(mkWrapLDLibraryPath pkgs.python3)
(mkWrapLDLibraryPath pkgsUnstable.prek)
];
# uv tool adds executable to $HOME/.local/bin, so add it to PATH