$env.config = { bracketed_paste: true buffer_editor: "hx" datetime_format: {} edit_mode: vi error_style: fancy float_precision: 2 footer_mode: 25 render_right_prompt_on_last_line: false show_banner: false use_ansi_coloring: true use_kitty_protocol: true shell_integration: { osc2: false osc7: true osc8: true osc9_9: false osc133: true osc633: true reset_application_mode: true } } $env.config.ls = { clickable_links: true use_ls_colors: true } $env.config.rm.always_trash = true $env.config.table = { header_on_separator: false index_mode: always mode: light padding: {left: 1 right: 1} show_empty: true trim: { methodology: wrapping wrapping_try_keep_words: true truncating_suffix: "..." } } $env.config.explore = { command_bar_text: {fg: "#C4C9C6"} highlight: {fg: black bg: yellow} status: { error: {fg: white bg: red} warn: {} info: {} } status_bar_background: {fg: "#1D1F21" bg: "#C4C9C6"} table: { split_line: {fg: "#404040"} selected_cell: {bg: light_blue} selected_row: {} selected_column: {} } } $env.config.history = { file_format: sqlite isolation: false max_size: 100_000 sync_on_enter: true } $env.config.cursor_shape = { vi_insert: line vi_normal: block } $env.config.hooks = { command_not_found: {|| } pre_execution: [ { let prompt = commandline | str trim if ($prompt | is-empty) { return } print $"(ansi title)($prompt) — nu(char bel)" } ] pre_prompt: [ { if (which direnv | is-empty) { return } direnv export json | from json | default {} | load-env # Direnv outputs $PATH as a string, but nushell silently breaks if isn't a list-like table. # The following behemoth of Nu code turns this into nu's format while following the standards of how to handle quotes, use it if you need quote handling instead of the line below it: # $env.PATH = $env.PATH | parse --regex ('' + `((?:(?:"(?:(?:\\[\\"])|.)*?")|(?:'.*?')|[^` + (char env_sep) + `]*)*)`) | each {|x| $x.capture0 | parse --regex `(?:"((?:(?:\\"|.))*?)")|(?:'(.*?)')|([^'"]*)` | each {|y| if ($y.capture0 != "") { $y.capture0 | str replace -ar `\\([\\"])` `$1` } else if ($y.capture1 != "") { $y.capture1 } else $y.capture2 } | str join } $env.PATH = $env.PATH | split row (char env_sep) } ] } $env.config.menus = [ { marker: $"(ansi yellow)╋ " name: help_menu only_buffer_difference: true style: { description_text: yellow selected_text: red_reverse text: yellow } type: { col_padding: 2 col_width: 20 columns: 4 description_rows: 10 layout: description selection_rows: 4 } } ] $env.config.keybindings = [ { name: copy_commandline modifier: alt keycode: char_c mode: [vi_normal vi_insert] event: { send: executehostcommand cmd: 'commandline | nu-highlight | $"```ansi\n($in)\n```" | wl-copy $in' } } { name: escape modifier: none keycode: escape mode: [vi_normal vi_insert] event: {send: esc} } { name: cancel_command modifier: control keycode: char_c mode: [vi_normal vi_insert] event: {send: ctrlc} } { name: quit_shell modifier: control keycode: char_d mode: [vi_normal vi_insert] event: {send: ctrld} } { name: clear_screen modifier: control keycode: char_l mode: [vi_normal vi_insert] event: {send: clearscreen} } { name: open_command_editor modifier: control keycode: char_o mode: [vi_normal vi_insert] event: {send: openeditor} } { name: abbr modifier: control keycode: space mode: [vi_normal vi_insert] event: [ {send: menu name: abbr_menu} {edit: insertchar value: " "} ] } { name: move_down modifier: none keycode: down mode: [vi_normal vi_insert] event: { until: [ {send: menudown} {send: down} ] } } { name: move_left modifier: none keycode: left mode: [vi_normal vi_insert] event: { until: [ {send: menuleft} {send: left} ] } } { name: move_right_or_take_history_hint modifier: none keycode: right mode: [vi_normal vi_insert] event: { until: [ {send: historyhintcomplete} {send: menuright} {send: right} ] } } { name: move_one_word_left modifier: control keycode: left mode: [vi_normal vi_insert] event: {edit: movewordleft} } { name: move_one_word_right_or_take_history_hint modifier: control keycode: right mode: [vi_normal vi_insert] event: { until: [ {send: historyhintwordcomplete} {edit: movewordright} ] } } { name: move_to_line_start modifier: control keycode: char_a mode: [vi_normal vi_insert] event: {edit: movetolinestart} } { name: move_to_line_end_or_take_history_hint modifier: control keycode: char_e mode: [vi_normal vi_insert] event: { until: [ {send: historyhintcomplete} {edit: movetolineend} ] } } { name: delete_one_character_backward modifier: none keycode: backspace mode: vi_insert event: {edit: backspace} } { name: delete_one_word_backward modifier: control keycode: backspace mode: vi_insert event: {edit: backspaceword} } { name: newline_or_run_command modifier: none keycode: enter mode: vi_insert event: {send: enter} } { name: take_history_hint modifier: control keycode: char_f mode: [vi_normal vi_insert] event: { until: [ {send: historyhintcomplete} ] } } ] let autoload_dir = $nu.user-autoload-dirs.0 mkdir $autoload_dir zoxide init nushell --cmd cd | save -f ($autoload_dir | path join zoxide.nu) atuin init nu | save -f ($autoload_dir | path join atuin.nu) carapace _carapace nushell | save -f ($autoload_dir | path join carapace.nu) source ./source_profile.nu source ./prompt.nu # fix sudo by prepending /run/wrappers/bin to the PATH. $env.PATH = ($env.PATH | split row (char esep) | prepend '/run/wrappers/bin') $env.LS_COLORS = (vivid generate lava) $env.EDITOR = "hx" $env.CARAPACE_BRIDGES = 'carapace,clap,inshellisense,fish' $env.CARAPACE_MATCH = 1 # Set environment variables according to the path of the clone $env.TOPIARY_CONFIG_FILE = ($env.HOME | path join .config | path join topiary languages.ncl) $env.TOPIARY_LANGUAGE_DIR = ($env.HOME | path join .config | path join topiary languages) # The prompt indicators are environmental variables that represent # the state of the prompt.