as of now, swh-environment within nix:
```
$ nix-shell swh.nix
```
with:
```
$ cat swh.nix
with import <nixpkgs> {};
with pkgs.python3Packages;
let ppackages = pkgs.python3Packages;
in stdenv.mkDerivation {
name = "swhEnv";
buildInputs = [
# required packages for virtualenvwrapper and pip to work
python3Full
ppackages.virtualenv
ppackages.virtualenvwrapper
ppackages.pip
# runtime dependencies needed for the python modules pip will try
# to install. In this particular environment the python modules
# listed in the accumulated requirements.txt require the following
# packages to be installed locally in order to compile any binary
# extensions they may require.
openssl
libffi
libzip
stdenv
zlib
pkgs.docker
pkgs.systemd.lib systemd
# subvertpy needs this
apr aprutil pkgs.subversion.dev
# web (not enough)
pkgs.libxml2 lxml
postgresql
];
src = null;
# ${lib.getLib pkgs.libsystemd}/lib;
shellHook =''
# set SOURCE_DATE_EPOCH so that we can use python wheels
SOURCE_DATE_EPOCH=$(date +%s)
source ${ppackages.virtualenvwrapper}/bin/virtualenvwrapper_lazy.sh
export LC_ALL=C.UTF-8ENV_NAME=swh2
export LC_CTYPE=C.UTF-8ENV_FOLDER=$HOME/.virtualenvs/$ENV_NAME/
install_or_update_env() {
export LANG pip install $( ./bin/pip-swh-packages --with-testing ) \
tox pifpaf flake8 codespell || echo "Install with error, skipping"
}
if [ ! -d $ENV_FOLDER ]; then
echo "Creating virtualenv $ENV_NAME at $ENV_FOLDER"
# export LC_ALL=C.UTF-8
# export LC_CTYPE=C.UTF-8
# export LANG=C.UTF-8
# subvertpy needs this for compilation
export SVN_PREFIX=${pkgs.subversion.dev}
# libsystemd need this
export PKG_CONFIG_PATH=${pkgs.systemd.lib}/lib
mkvirtualenv -p ${python3}/bin/python3 -a $SWH_ENVIRONMENT_HOME swh2$ENV_NAME
cp postactivate $SWH_ENV/bin/postactivate
install_or_update_env
echo "Creating virtualenv $ENV_NAME at $ENV_FOLDER. Done."
else
echo "Connecting to virtualenv $ENV_NAME at $ENV_FOLDER"
workon $ENV_NAME
fi
'';
}
```
$SWH_ENVIRONMENT_HOME/postactivate:
```
shell=$(basename $SHELL)
case "$shell" in
"zsh")
autocomplete_cmd=source_zsh
;;
*)
autocomplete_cmd=source
;;
esac
eval "$(_SWH_SCHEDULER_COMPLETE=$autocomplete_cmd swh-scheduler)"
export SWH_SCHEDULER_URL=http://127.0.0.1:5008/
export CELERY_BROKER_URL=amqp://127.0.0.1:5072/
export COMPOSE_FILE=$SWH_ENVIRONMENT_HOME/swh-docker-dev/docker-compose.yml:$SWH_ENVIRONMENT_HOME/swh-docker-dev/docker-compose.override.yml
alias doco=docker-compose
eval "$(_SWH_DEPOSIT_COMPLETE=$autocomplete_cmd swh-deposit)"
eval "$(_SWH_JOURNAL_COMPLETE=$autocomplete_cmd swh-journal)"
eval "$(_SWH_LISTER_COMPLETE=$autocomplete_cmd swh-lister)"
function swhclean {
find $SWH_ENVIRONMENT_HOME -type d -name __pycache__ -exec rm -rf {} \;
find $SWH_ENVIRONMENT_HOME -type d -name .tox -exec rm -rf {} \;
find $SWH_ENVIRONMENT_HOME -type d -name .hypothesis -exec rm -rf {} \;
find $SWH_ENVIRONMENT_HOME -type d -name .pytest_cache -exec rm -rf {} \;
}
Then from within the virtualenv, install following the getting-started:```
Then to update the environment from within
```
(swh2) $ pip install $( ./bin/pip-swh-packages --with-testing ) tox pifpaf_or_update_env
```