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