Naposledy aktivní 1 year ago

nix-shell for python + poetry + psycopg

Revize d8317c710590338d67f780ca9be7abd0ffa4f4a7

shell.nix Raw
1# Small nix-shell environment for python 3.10 + poetry
2#
3# See https://nixos.wiki/wiki/Python
4# launch with nix-shell (and not 'nix shell' !)
5#
6# nix-shell --run 'python --version; poetry --version'
7# Python 3.10.13
8# Poetry (version 1.7.1)
9#
10# Also, you can heck https://nixos.org/manual/nixpkgs/stable/#sec-pkgs-mkShell
11#
12let
13 pkgs = import <nixpkgs> { };
14 pythonEnv = pkgs.python310.withPackages (pythonPackages: with pythonPackages; [
15 jinja2
16 pyyaml
17 pip
18 numpy
19 psycopg
20 virtualenv
21 ]);
22 packages = with pkgs; [
23 postgresql_14
24 pythonEnv
25 stdenv.cc.cc.lib
26 uwsgi
27
28 nodejs
29 yarn
30 nodePackages."@angular/cli"
31 ];
32in
33pkgs.mkShell {
34 packages = packages;
35 shellHook = ''
36 export LD_LIBRARY_PATH="${pkgs.postgresql_14.lib}/lib:${pkgs.stdenv.cc.cc.lib}/lib:$LD_LIBRARY_PATH"
37 python --version
38 poetry --version
39
40
41 export VIRTUAL_ENV_DISABLE_PROMPT=1
42 export POETRY_VENV=/tmp/.venv-py310-poetry
43
44 # Remove nodePackages."@angular/cli" from packages to avoid installing it globally
45 # npm set prefix ~/.npm-global-nix
46 # export PATH=~/.npm-global-nix/bin:$PATH
47 # which ng >/dev/null 2>/dev/null || (echo "Installing @angular/cli" && npm install -g @angular/cli)
48
49 if test ! -e $POETRY_VENV
50 then
51 python -m venv $POETRY_VENV
52 $POETRY_VENV/bin/pip install poetry
53 fi
54
55 alias ll='ls -ltr'
56 alias poetry=$POETRY_VENV/bin/poetry
57 '';
58}
59