Add conda-direnv package
This commit is contained in:
parent
8457523518
commit
3baf2453f2
50
packages/conda-direnv/default.nix
Normal file
50
packages/conda-direnv/default.nix
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
|
||||
# All other arguments come from NixPkgs. You can use `pkgs` to pull packages or helpers
|
||||
# programmatically or you may add the named attributes as arguments here.
|
||||
pkgs,
|
||||
stdenv,
|
||||
...
|
||||
}:
|
||||
|
||||
pkgs.writeShellApplication {
|
||||
name = "conda-direnv";
|
||||
|
||||
runtimeInputs = with pkgs; [
|
||||
conda
|
||||
yq
|
||||
];
|
||||
|
||||
text = ''
|
||||
if [ ! -f environment.yml ]; then
|
||||
echo "environment.yml does not exist! Exiting..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ENV_NAME=$(${pkgs.yq}/bin/yq ".name" environment.yml -r)
|
||||
if [ "$ENV_NAME" == "" ] || [ "$ENV_NAME" == "null" ]; then
|
||||
echo "Property \"name\" not in environment.yml or empty! Exiting..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo Welcome to your conda environment "$ENV_NAME"! Activating...
|
||||
|
||||
condanew() {
|
||||
conda env create -f environment.yml -n $ENV_NAME
|
||||
conda activate $ENV_NAME
|
||||
}
|
||||
|
||||
exec ${pkgs.conda}/bin/conda-shell
|
||||
conda activate $ENV_NAME || condanew
|
||||
|
||||
echo "Environment active! To update it, run:"
|
||||
echo -e "\tconda env update -f environment.yml -n $ENV_NAME"
|
||||
|
||||
"$SHELL" # needs to be last line so that conda-shell actually enters a shell
|
||||
'';
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user