diff --git a/virtual_environments/conda.nu b/virtual_environments/conda.nu new file mode 100644 index 0000000..9f03de0 --- /dev/null +++ b/virtual_environments/conda.nu @@ -0,0 +1,39 @@ +def conda-env [env-name] { + let conda-info = (conda info --envs --json | from json) + let suffix = (if $env-name == "base" {""} {(["envs" $env-name] | path join)}) + let env-dir = ([$conda-info.root_prefix $suffix] | path join) + let old-path = ($nu.path | str collect (path-sep)) + let env-path = (if (windows?) { (conda-create-path-windows $env-dir) } { (conda-create-path-unix $env-dir) }) + let new-path = ([$env-path $nu.path] | flatten | str collect (path-sep)) + [[name, value]; + [CONDA_DEFAULT_ENV $env-name] + [CONDA_PREFIX $env-dir] + [CONDA_PROMPT_MODIFIER $"[($env-name)]"] + [CONDA_SHLVL "1"] + [CONDA_OLD_PATH $old-path] + [PATH $new-path]] +} + +def conda-create-path-windows [env-dir] { + [ + $env-dir + ([$env-dir "Scripts"] | path join) + ([$env-dir "Library" "mingw-w64"] | path join) + ([$env-dir "Library" "bin"] | path join) + ([$env-dir "Library" "usr" "bin"] | path join) + ] +} + +def conda-create-path-unix [env-dir] { + [ + ([$env-dir "bin"] | path join) + ] +} + +def windows? [] { + (sys).host.name == "Windows" +} + +def path-sep [] { + if (windows?) { ";" } { ":" } +} diff --git a/virtual_environments/conda_deactivate.nu b/virtual_environments/conda_deactivate.nu new file mode 100644 index 0000000..c2f9953 --- /dev/null +++ b/virtual_environments/conda_deactivate.nu @@ -0,0 +1,6 @@ +let-env PATH = $nu.env.CONDA_OLD_PATH +unlet-env CONDA_PROMPT_MODIFIER +unlet-env CONDA_PREFIX +unlet-env CONDA_SHLVL +unlet-env CONDA_DEFAULT_ENV +unlet-env CONDA_OLD_PATH diff --git a/virtual_environments/venv.nu b/virtual_environments/venv.nu new file mode 100644 index 0000000..64f26e7 --- /dev/null +++ b/virtual_environments/venv.nu @@ -0,0 +1,19 @@ +def venv [name] { + let venv-path = ($name | path expand) + let venv-bin-path = ([$venv-path "bin"] | path join) + let old-path = ($nu.path | str collect (path-sep)) + let new-path = ($nu.path | prepend $venv-bin-path | str collect (path-sep)) + [[name, value]; + [PATH $new-path] + [VENV_OLD_PATH $old-path] + [VIRTUAL_ENV $venv-path]] +} + +def windows? [] { + (sys).host.name == "Windows" +} + +def path-sep [] { + if (windows?) { ";" } { ":" } +} + diff --git a/virtual_environments/venv_deactivate.nu b/virtual_environments/venv_deactivate.nu new file mode 100644 index 0000000..64cec01 --- /dev/null +++ b/virtual_environments/venv_deactivate.nu @@ -0,0 +1,3 @@ +let-env PATH = $nu.env.VENV_OLD_PATH +unlet-env VIRTUAL_ENV +unlet-env VENV_OLD_PATH