Nushell: Difference between revisions

m Add carapace bridges
 
(11 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[https://www.nushell.sh/ Nushell] is a powerfull [[Command Shell|shell]] written in Rust.
[https://www.nushell.sh/ Nushell] is a powerful and modern non-POSIX [[Command Shell|shell]] written in Rust  


== Installation ==
== Installation ==
See [[Command Shell]]
Using nushell as a login shell is not recommended. Since nushell is not a POSIX shell, it cannot execute the global shell rcfiles, which means that various environment variables that the general NixOS configuration expects to be set will not be set. To avoid these problems use the default bash interactive shell as a login shell and launch nushell from there:
example if you want Nushell as your default shell.
{{File|3={ pkgs, ... }: {
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
  environment.shells = [
users.users.myuser= {
    pkgs.nushell
  ...
  ];
        shell = pkgs.nushell;
 
};
  programs.bash.interactiveShellInit = ''
</nowiki>}}
    if ! [ "$TERM" = "dumb" ] && [ -z "$BASH_EXECUTION_STRING" ]; then
      exec nu
    fi
  '';
}|name=/etc/nixos/configuration.nix|lang=nix}}
The [[Command Shell]] page explains the process for setting shells as login shells if this is still desired.


== Configuration ==
== Configuration ==
Nushell can be configured with [[Home Manager]].
Nushell can be configured with [[Home Manager]]


====Examples====  
====Example====  
Configuration with [https://starship.rs/ Starship] prompt and autosuggestion support with [https://search.nixos.org/packages?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=carapace carapace] or [https://fishshell.com/ fish shell]<syntaxhighlight lang="nix" line="1">
A configuration with [https://starship.rs/ Starship] prompt and autosuggestion support with [https://carapace.sh/ carapace] or [https://fishshell.com/ fish shell]:
{{File|3=<nowiki>
{ lib, pkgs, ... }:
{ lib, pkgs, ... }:
{
{
Line 35: Line 41:
         # 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
Line 127: Line 133:
   };
   };
}
}
 
</nowiki>|name=~/.config/nixpkgs/home.nix|lang=nix}}
</syntaxhighlight>Legacy config:{{file|~/.config/nixpkgs/home.nix|nix|<nowiki>
programs = {
    nushell = { enable = true;
      # The config.nu can be anywhere you want if you like to edit your Nushell with Nu
      configFile.source = ./.../config.nu;
      # for editing directly to config.nu
      extraConfig = ''
      let carapace_completer = {|spans|
          carapace $spans.0 nushell ...$spans | from json
      }
      $env.config = {
        show_banner: false,
        completions: {
        case_sensitive: false # case-sensitive completions
        quick: true    # set to false to prevent auto-selecting completions
        partial: true    # set to false to prevent partial filling of the prompt
        algorithm: "fuzzy"    # prefix or fuzzy
        external: {
        # set to false to prevent nushell looking into $env.PATH to find more suggestions
            enable: true
        # set to lower can improve completion performance at the cost of omitting some options
            max_results: 100
            completer: $carapace_completer # check 'carapace_completer'
          }
        }
      }
      $env.PATH = ($env.PATH |
      split row (char esep) |
      prepend /home/myuser/.apps |
      append /usr/bin/env
      )
      '';
      shellAliases = {
      vi = "hx";
      vim = "hx";
      nano = "hx";
      };
  }; 
  carapace.enable = true;
  carapace.enableNushellIntegration = true;
 
  starship = { enable = true;
      settings = {
        add_newline = true;
        character = {
        success_symbol = "[➜](bold green)";
        error_symbol = "[➜](bold red)";
      };
    };
  };
};
</nowiki>}}


==See also==
==See also==
* [[Command Shell]]
* [[Command Shell]]
[[Category:Shell]]
[[Category:Shell]]