nixos/system/home/programming/pyshell.nix

42 lines
856 B
Nix
Raw Normal View History

{
pkgs ? import <nixpkgs> { },
python3 ? pkgs.python3Full,
2025-01-28 11:21:12 +00:00
extraPackages ? [ ],
extraLibs ? [ ],
}:
let
inherit (pkgs) lib;
ldlibs = lib.makeLibraryPath (
(with pkgs; [
stdenv.cc.cc
glib
glibc
zlib
zstd
])
++ extraLibs
);
pythonWrapped = pkgs.symlinkJoin {
name = "python";
paths = [ python3 ];
buildInputs = [ pkgs.makeWrapper ];
postBuild = ''
for file in $out/bin/*; do wrapProgram "$file" --prefix LD_LIBRARY_PATH : "${ldlibs}"; done
'';
};
in
pkgs.mkShellNoCC {
2025-01-28 11:21:12 +00:00
packages = [
pythonWrapped
pkgs.uv
] ++ extraPackages;
shellHook = ''
if [ ! -d .venv ]; then
${pythonWrapped}/bin/python3 -m venv .venv
else
${pythonWrapped}/bin/python3 -m venv --upgrade .venv
fi
[ -f .venv/bin/activate ] && source .venv/bin/activate
'';
}