Jump to content

Nushell

From NixOS Wiki
Revision as of 17:27, 13 August 2025 by Malix (talk | contribs) (general enhancement)

Nushell is a powerful and modern non-POSIX shell written in Rust

Installation

See Command Shell example if you want Nushell as your default shell

❄︎ /etc/nixos/configuration.nix
{
  pkgs,
  ...
}:
{
  environment.shells = [
    pkgs.nushell
  ];
  users.users.myuser= {
    shell = pkgs.nushell;
  };
}

Configuration

Nushell can be configured with Home Manager

Example

A configuration with Starship prompt and autosuggestion support with carapace or fish shell:

❄︎ ~/.config/nixpkgs/home.nix
 $"value(char tab)description(char newline)" + $in

Legacy config:

❄︎ ~/.config/nixpkgs/home.nix
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)";
       };
    };
  };
};

See also