# Nushell Config File source ~/.cache/starship/init.nu alias zj = zellij alias zjd = zellij --layout ../.config/zellij/snowflake.kdl alias lg = lazygit alias ld = lazydocker alias l = exa -ughH --icons alias la = exa -alughH --git --icons alias calc = eva alias c = clear alias cat = bat alias rm = rm -i alias cp = cp -i alias mv = mv -i alias sakura = nix run github:serokell/deploy-rs ".#sakura" alias kariru = nix run github:serokell/deploy-rs ".#kariru" alias yuki = nix run github:serokell/deploy-rs ".#yuki" alias arashi = nix run github:serokell/deploy-rs ".#arashi" alias sora = nix run github:serokell/deploy-rs ".#sora" alias dx = nix run "nixpkgs#deadnix" alias sx = nix run "nixpkgs#statix" -- check alias sxfix = nix run "nixpkgs#statix" -- fix alias dl = yt-dlp -P ~/Videos/downloaded alias dlcd = yt-dlp alias up = rpaste -s "https://img.notohh.dev/" -e 1day let-env config = { ls: { use_ls_colors: true # use the LS_COLORS environment variable to colorize output clickable_links: true # enable or disable clickable links. Your terminal has to support links. } rm: { always_trash: false # always act as if -t was given. Can be overridden with -p } cd: { abbreviations: true # allows `cd s/o/f` to expand to `cd some/other/folder` } table: { mode: rounded # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other index_mode: always # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column trim: { methodology: wrapping # wrapping or truncating wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology truncating_suffix: "..." # A suffix used by the 'truncating' methodology } } history: { max_size: 10000 # Session has to be reloaded for this to take effect sync_on_enter: true # Enable to share history between multiple sessions, else you have to close the session to write history to file file_format: "sqlite" # "sqlite" or "plaintext" } completions: { case_sensitive: false # set to true to enable case-sensitive completions quick: true # set this to false to prevent auto-selecting completions when only one remains partial: true # set this to false to prevent partial filling of the prompt algorithm: "prefix" # prefix or fuzzy external: { enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up my be very slow max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options completer: null # check 'carapace_completer' above as an example } } filesize: { metric: true # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard) format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, zb, zib, auto } use_grid_icons: true footer_mode: "25" # always, never, number_of_rows, auto float_precision: 2 # buffer_editor: "emacs" # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL use_ansi_coloring: true edit_mode: vi # emacs, vi shell_integration: true # enables terminal markers and a workaround to arrow keys stop working issue show_banner: false # true or false to enable or disable the banner render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt. hooks: { pre_prompt: [{ || $nothing # replace with source code to run before the prompt is shown }] pre_execution: [{ || $nothing # replace with source code to run before the repl input is run }] env_change: { PWD: [{|before, after| $nothing # replace with source code to run if the PWD environment is different since the last repl input }] } display_output: { || if (term size).columns >= 100 { table -e } else { table } } } menus: [ # Configuration for default nushell menus # Note the lack of souce parameter { name: completion_menu only_buffer_difference: false marker: "| " type: { layout: columnar columns: 4 col_width: 20 # Optional value. If missing all the screen width is used to calculate column width col_padding: 2 } style: { text: green selected_text: green_reverse description_text: yellow } } { name: history_menu only_buffer_difference: true marker: "? " type: { layout: list page_size: 10 } style: { text: green selected_text: green_reverse description_text: yellow } } { name: help_menu only_buffer_difference: true marker: "? " type: { layout: description columns: 4 col_width: 20 # Optional value. If missing all the screen width is used to calculate column width col_padding: 2 selection_rows: 4 description_rows: 10 } style: { text: green selected_text: green_reverse description_text: yellow } } # Example of extra menus created using a nushell source # Use the source field to create a list of records that populates # the menu { name: commands_menu only_buffer_difference: false marker: "# " type: { layout: columnar columns: 4 col_width: 20 col_padding: 2 } style: { text: green selected_text: green_reverse description_text: yellow } source: { |buffer, position| $nu.scope.commands | where command =~ $buffer | each { |it| {value: $it.command description: $it.usage} } } } { name: vars_menu only_buffer_difference: true marker: "# " type: { layout: list page_size: 10 } style: { text: green selected_text: green_reverse description_text: yellow } source: { |buffer, position| $nu.scope.vars | where name =~ $buffer | sort-by name | each { |it| {value: $it.name description: $it.type} } } } { name: commands_with_description only_buffer_difference: true marker: "# " type: { layout: description columns: 4 col_width: 20 col_padding: 2 selection_rows: 4 description_rows: 10 } style: { text: green selected_text: green_reverse description_text: yellow } source: { |buffer, position| $nu.scope.commands | where command =~ $buffer | each { |it| {value: $it.command description: $it.usage} } } } ] keybindings: [ { name: completion_menu modifier: none keycode: tab mode: vi_normal # Options: emacs vi_normal vi_insert event: { until: [ { send: menu name: completion_menu } { send: menunext } ] } } { name: completion_previous modifier: shift keycode: backtab mode: [emacs, vi_normal, vi_insert] # Note: You can add the same keybinding to all modes by using a list event: { send: menuprevious } } { name: history_menu modifier: control keycode: char_r mode: emacs event: { send: menu name: history_menu } } { name: next_page modifier: control keycode: char_x mode: emacs event: { send: menupagenext } } { name: undo_or_previous_page modifier: control keycode: char_z mode: emacs event: { until: [ { send: menupageprevious } { edit: undo } ] } } { name: yank modifier: control keycode: char_y mode: emacs event: { until: [ {edit: pastecutbufferafter} ] } } { name: unix-line-discard modifier: control keycode: char_u mode: [emacs, vi_normal, vi_insert] event: { until: [ {edit: cutfromlinestart} ] } } { name: kill-line modifier: control keycode: char_k mode: [emacs, vi_normal, vi_insert] event: { until: [ {edit: cuttolineend} ] } } # Keybindings used to trigger the user defined menus { name: commands_menu modifier: control keycode: char_t mode: [emacs, vi_normal, vi_insert] event: { send: menu name: commands_menu } } { name: vars_menu modifier: alt keycode: char_o mode: [emacs, vi_normal, vi_insert] event: { send: menu name: vars_menu } } { name: commands_with_description modifier: control keycode: char_s mode: [emacs, vi_normal, vi_insert] event: { send: menu name: commands_with_description } } ] }