summaryrefslogtreecommitdiff
path: root/resources/nushell/env.nu
diff options
context:
space:
mode:
Diffstat (limited to 'resources/nushell/env.nu')
-rw-r--r--resources/nushell/env.nu89
1 files changed, 89 insertions, 0 deletions
diff --git a/resources/nushell/env.nu b/resources/nushell/env.nu
new file mode 100644
index 0000000..f6244d3
--- /dev/null
+++ b/resources/nushell/env.nu
@@ -0,0 +1,89 @@
+# Nushell Environment Config File
+#
+# version = 0.80.0
+
+def create_left_prompt [] {
+ mut home = ""
+ try {
+ if $nu.os-info.name == "windows" {
+ $home = $env.USERPROFILE
+ } else {
+ $home = $env.HOME
+ }
+ }
+
+ let dir = ([
+ ($env.PWD | str substring 0..($home | str length) | str replace --string $home "~"),
+ ($env.PWD | str substring ($home | str length)..)
+ ] | str join)
+
+ let path_color = (if (is-admin) { ansi red_bold } else { ansi green_bold })
+ let separator_color = (if (is-admin) { ansi light_red_bold } else { ansi light_green_bold })
+ let path_segment = $"($path_color)($dir)"
+
+ $path_segment | str replace --all --string (char path_sep) $"($separator_color)/($path_color)"
+}
+
+def create_right_prompt [] {
+ let time_segment_color = (ansi magenta)
+
+ let time_segment = ([
+ (ansi reset)
+ $time_segment_color
+ (date now | date format '%m/%d/%Y %r')
+ ] | str join | str replace --all "([/:])" $"(ansi light_magenta_bold)${1}($time_segment_color)" |
+ str replace --all "([AP]M)" $"(ansi light_magenta_underline)${1}")
+
+ let last_exit_code = if ($env.LAST_EXIT_CODE != 0) {([
+ (ansi rb)
+ ($env.LAST_EXIT_CODE)
+ ] | str join)
+ } else { "" }
+
+ ([$last_exit_code, (char space), $time_segment] | str join)
+}
+
+# Use nushell functions to define your right and left prompt
+let-env PROMPT_COMMAND = {|| create_left_prompt }
+let-env PROMPT_COMMAND_RIGHT = {|| create_right_prompt }
+
+# The prompt indicators are environmental variables that represent
+# the state of the prompt
+let-env PROMPT_INDICATOR = {|| "> " }
+let-env PROMPT_INDICATOR_VI_INSERT = {|| ": " }
+let-env PROMPT_INDICATOR_VI_NORMAL = {|| "> " }
+let-env PROMPT_MULTILINE_INDICATOR = {|| "::: " }
+
+# Specifies how environment variables are:
+# - converted from a string to a value on Nushell startup (from_string)
+# - converted from a value back to a string when running external commands (to_string)
+# Note: The conversions happen *after* config.nu is loaded
+let-env ENV_CONVERSIONS = {
+ "PATH": {
+ from_string: { |s| $s | split row (char esep) | path expand --no-symlink }
+ to_string: { |v| $v | path expand --no-symlink | str join (char esep) }
+ }
+ "Path": {
+ from_string: { |s| $s | split row (char esep) | path expand --no-symlink }
+ to_string: { |v| $v | path expand --no-symlink | str join (char esep) }
+ }
+}
+
+# Directories to search for scripts when calling source or use
+#
+# By default, <nushell-config-dir>/scripts is added
+let-env NU_LIB_DIRS = [
+ ($nu.default-config-dir | path join 'scripts')
+]
+
+# Directories to search for plugin binaries when calling register
+#
+# By default, <nushell-config-dir>/plugins is added
+let-env NU_PLUGIN_DIRS = [
+ ($nu.default-config-dir | path join 'plugins')
+]
+
+# To add entries to PATH (on Windows you might use Path), you can use the following pattern:
+# let-env PATH = ($env.PATH | split row (char esep) | prepend '/some/path')
+mkdir ~/.cache/starship
+starship init nu | save -f ~/.cache/starship/init.nu