From bf2bbb244610f68ca04afdb74e5a2f2162a1979e Mon Sep 17 00:00:00 2001 From: reo101 Date: Thu, 7 Sep 2023 01:00:43 +0300 Subject: [PATCH] fix(nushell): better (vi-mode) compatability with starship Also clean up the rest of `env.nu` --- .../home-manager/reo101-shell/nushell/env.nu | 87 ++----------------- .../home-manager/reo101-shell/starship.nix | 15 +++- 2 files changed, 16 insertions(+), 86 deletions(-) diff --git a/modules/home-manager/reo101-shell/nushell/env.nu b/modules/home-manager/reo101-shell/nushell/env.nu index 0d321b6..0aa38a1 100644 --- a/modules/home-manager/reo101-shell/nushell/env.nu +++ b/modules/home-manager/reo101-shell/nushell/env.nu @@ -1,82 +1,5 @@ -# Nushell Environment Config File -# -# version = "0.84.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 $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 (char path_sep) $"($separator_color)/($path_color)" -## } -## -## def create_right_prompt [] { -## # create a right prompt in magenta with green separators and am/pm underlined -## let time_segment = ([ -## (ansi reset) -## (ansi magenta) -## (date now | format date '%Y/%m/%d %r') -## ] | str join | str replace --regex --all "([/:])" $"(ansi green)${1}(ansi magenta)" | -## str replace --regex --all "([AP]M)" $"(ansi 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 -## $env.PROMPT_COMMAND = {|| create_left_prompt } -## # $env.PROMPT_COMMAND_RIGHT = {|| create_right_prompt } -## -## # The prompt indicators are environmental variables that represent -## # the state of the prompt -## $env.PROMPT_INDICATOR = {|| "> " } -## $env.PROMPT_INDICATOR_VI_INSERT = {|| ": " } -## $env.PROMPT_INDICATOR_VI_NORMAL = {|| "> " } -## $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 -$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 -$env.NU_LIB_DIRS = [ - # ($nu.default-config-dir | path join 'scripts') # add /scripts -] - -# Directories to search for plugin binaries when calling register -$env.NU_PLUGIN_DIRS = [ - # ($nu.default-config-dir | path join 'plugins') # add /plugins -] - -# To add entries to PATH (on Windows you might use Path), you can use the following pattern: -# $env.PATH = ($env.PATH | split row (char esep) | prepend '/some/path') +# NOTE: this should be possible to be configured from starship in the future +$env.PROMPT_INDICATOR = {|| " " } +$env.PROMPT_INDICATOR_VI_INSERT = {|| " " } +$env.PROMPT_INDICATOR_VI_NORMAL = {|| " " } +$env.PROMPT_MULTILINE_INDICATOR = {|| " " } diff --git a/modules/home-manager/reo101-shell/starship.nix b/modules/home-manager/reo101-shell/starship.nix index fdd5889..d19de12 100644 --- a/modules/home-manager/reo101-shell/starship.nix +++ b/modules/home-manager/reo101-shell/starship.nix @@ -7,7 +7,7 @@ format = '' [╭───────┨](bold green)[${username}](bright-white)[@](bold yellow)$hostname[┠───────>](bold green)$status$cmd_duration$git_branch$git_status$git_state$git_commit [│](bold green)$time$jobs: $directory$package - [╰─](bold green)$character + [╰─](bold green)''${custom.character_zsh}''${custom.character_nu} ''; # ${custom.local}\ @@ -17,9 +17,16 @@ add_newline = true; - character = { - success_symbol = "[→](bold green)"; - error_symbol = "[→](red)"; + custom.character_zsh = { + shell = "/bin/sh"; + when = "[ $STARSHIP_SHELL = zsh ]"; + format = "[](bold green) "; + }; + + custom.character_nu = { + shell = "/bin/sh"; + when = "[ $STARSHIP_SHELL = nu ]"; + format = ""; }; git_branch = {