Skip to content

Instantly share code, notes, and snippets.

@ausuwardi
Forked from cdepillabout/shell.nix
Last active July 18, 2024 14:59
Show Gist options
  • Save ausuwardi/d5937ecb46767db666e15c0c04b746a6 to your computer and use it in GitHub Desktop.
Save ausuwardi/d5937ecb46767db666e15c0c04b746a6 to your computer and use it in GitHub Desktop.
shell.nix for Python development using virtualenv and pip
let
nixpkgs-src = builtins.fetchTarball {
# 22.11
url = "https://github.com/NixOS/nixpkgs/archive/nixos-22.11.tar.gz";
};
pkgs = import nixpkgs-src {
config = {
# allowUnfree may be necessary for some packages, but in general you should not need it.
allowUnfree = false;
};
};
# This is the Python version that will be used.
myPython = pkgs.python311;
pythonWithPkgs = myPython.withPackages (pythonPkgs: with pythonPkgs; [
# This list contains tools for Python development.
# You can also add other tools, like black.
#
# Note that even if you add Python packages here like PyTorch or Tensorflow,
# they will be reinstalled when running `pip -r requirements.txt` because
# virtualenv is used below in the shellHook.
ipython
pip
setuptools
virtualenvwrapper
wheel
]);
lib-path = with pkgs; lib.makeLibraryPath [
libffi
openssl
stdenv.cc.cc
# If you want to use CUDA, you should uncomment this line.
# linuxPackages.nvidia_x11
];
shell = pkgs.mkShell {
buildInputs = [
# my python and packages
pythonWithPkgs
# other packages needed for compiling python libs
pkgs.readline
pkgs.libffi
pkgs.openssl
# unfortunately needed because of messing with LD_LIBRARY_PATH below
pkgs.git
pkgs.openssh
pkgs.rsync
];
shellHook = ''
# Allow the use of wheels.
SOURCE_DATE_EPOCH=$(date +%s)
# Augment the dynamic linker path
export "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${lib-path}"
# Setup the virtual environment if it doesn't already exist.
VENV=.venv
if test ! -d $VENV; then
virtualenv $VENV
fi
source ./$VENV/bin/activate
export PYTHONPATH=`pwd`/$VENV/${myPython.sitePackages}/:$PYTHONPATH
'';
};
in
shell
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment