Nushell: Difference between revisions

Add a extra condition to invoke `nu` in `.bashrc`. If `bash` is invoked with `-l` AND `-c`, the original `.bashrc` will start `nu` instead of executing the command. It broke `niri-session` for me. `nu` should not be started if the command string is not empty.
 
Line 33: Line 33:
         # Common ls aliases and sort them by type and then name
         # Common ls aliases and sort them by type and then name
         # Inspired by https://github.com/nushell/nushell/issues/7190
         # Inspired by https://github.com/nushell/nushell/issues/7190
         def lla [...args] { ls -la ...(if $args == [] {["."]} else {$args}) {{!}} sort-by type name -i }
         def lla [...args] { ls -la ...(if $args == [] {["."]} else {$args}) | sort-by type name -i }
         def la  [...args] { ls -a  ...(if $args == [] {["."]} else {$args}) {{!}} sort-by type name -i }
         def la  [...args] { ls -a  ...(if $args == [] {["."]} else {$args}) | sort-by type name -i }
         def ll  [...args] { ls -l  ...(if $args == [] {["."]} else {$args}) {{!}} sort-by type name -i }
         def ll  [...args] { ls -l  ...(if $args == [] {["."]} else {$args}) | sort-by type name -i }
         def l  [...args] { ls    ...(if $args == [] {["."]} else {$args}) {{!}} sort-by type name -i }
         def l  [...args] { ls    ...(if $args == [] {["."]} else {$args}) | sort-by type name -i }


         # Completions
         # Completions
         # mainly pieced together from https://www.nushell.sh/cookbook/external_completers.html
         # mainly pieced together from https://www.nushell.sh/cookbook/external_completers.html


         # carapce completions https://www.nushell.sh/cookbook/external_completers.html#carapace-completer
         # carapace completions https://www.nushell.sh/cookbook/external_completers.html#carapace-completer
         # + fix https://www.nushell.sh/cookbook/external_completers.html#err-unknown-shorthand-flag-using-carapace
         # + fix https://www.nushell.sh/cookbook/external_completers.html#err-unknown-shorthand-flag-using-carapace
         # enable the package and integration bellow
         # enable the package and integration bellow
         let carapace_completer = {{{!}}spans: list<string>{{!}}
         let carapace_completer = {|spans: list<string>|
           carapace $spans.0 nushell ...$spans
           carapace $spans.0 nushell ...$spans
           | from json
           | from json
           | if ($in | default [] {{!}} where value == $"($spans {{!}} last)ERR" {{!}} is-empty) { $in } else { null }
           | if ($in | default [] | where value == $"($spans | last)ERR" | is-empty) { $in } else { null }
         }
         }
         # some completions are only available through a bridge
         # some completions are only available through a bridge
Line 55: Line 55:


         # fish completions https://www.nushell.sh/cookbook/external_completers.html#fish-completer
         # fish completions https://www.nushell.sh/cookbook/external_completers.html#fish-completer
         let fish_completer = {{{!}}spans{{!}}
         let fish_completer = {|spans|
           ${lib.getExe pkgs.fish} --command $'complete "--do-complete=($spans {{!}} str join " ")"'
           ${lib.getExe pkgs.fish} --command $'complete "--do-complete=($spans | str join " ")"'
           | $"value(char tab)description(char newline)" + $in
           | $"value(char tab)description(char newline)" + $in
           | from tsv --flexible --no-infer
           | from tsv --flexible --no-infer
Line 62: Line 62:


         # zoxide completions https://www.nushell.sh/cookbook/external_completers.html#zoxide-completer
         # zoxide completions https://www.nushell.sh/cookbook/external_completers.html#zoxide-completer
         let zoxide_completer = {{{!}}spans{{!}}
         let zoxide_completer = {|spans|
             $spans {{!}} skip 1 {{!}} zoxide query -l ...$in {{!}} lines {{!}} where {{{!}}x{{!}} $x != $env.PWD}
             $spans | skip 1 | zoxide query -l ...$in | lines | where {|x| $x != $env.PWD}
         }
         }


Line 69: Line 69:
         # the default will be carapace, but you can also switch to fish
         # the default will be carapace, but you can also switch to fish
         # https://www.nushell.sh/cookbook/external_completers.html#alias-completions
         # https://www.nushell.sh/cookbook/external_completers.html#alias-completions
         let multiple_completers = {{{!}}spans{{!}}
         let multiple_completers = {|spans|
           ## alias fixer start https://www.nushell.sh/cookbook/external_completers.html#alias-completions
           ## alias fixer start https://www.nushell.sh/cookbook/external_completers.html#alias-completions
           let expanded_alias = scope aliases
           let expanded_alias = scope aliases
Line 78: Line 78:
             $spans
             $spans
             | skip 1
             | skip 1
             | prepend ($expanded_alias | split row ' ' {{!}} take 1)
             | prepend ($expanded_alias | split row ' ' | take 1)
           } else {
           } else {
             $spans
             $spans
Line 85: Line 85:


           match $spans.0 {
           match $spans.0 {
             __zoxide_z {{!}} __zoxide_zi => $zoxide_completer
             __zoxide_z | __zoxide_zi => $zoxide_completer
             _ => $carapace_completer
             _ => $carapace_completer
           } {{!}} do $in $spans
           } | do $in $spans
         }
         }


Line 106: Line 106:
           }
           }
         }  
         }  
         $env.PATH = ($env.PATH {{!}}
         $env.PATH = ($env.PATH |
           split row (char esep) {{!}}
           split row (char esep) |
           prepend /home/myuser/.apps {{!}}
           prepend /home/myuser/.apps |
           append /usr/bin/env
           append /usr/bin/env
         )
         )
Line 134: Line 134:
}
}
</nowiki>|name=~/.config/nixpkgs/home.nix|lang=nix}}
</nowiki>|name=~/.config/nixpkgs/home.nix|lang=nix}}
==See also==
==See also==
* [[Command Shell]]
* [[Command Shell]]
[[Category:Shell]]
[[Category:Shell]]