How to Install Nushell on Ubuntu: A Shell Built Around Structured Data

Nushell, run as nu, is a shell for people who are tired of gluing together grep, awk, sed, and cut just to slice a bit of output. Instead of moving unstructured text between commands, Nushell moves structured data: tables, records, and lists. Run ls and you get a table you can sort and filter; run ps and you get rows you can query; pipe JSON from a web request straight into filtering commands with no parsing gymnastics.

It effectively turns your terminal into a small, consistent data language. The same operators that filter a directory listing also filter API responses, CSV files, and system tables, which makes complex one-liners far easier to read and reason about.

Ubuntu does not ship Nushell in its default archives, and compiling it yourself means bringing in the whole Rust toolchain. The unofficial deb.griffo.io repository avoids that entirely, delivering a current prebuilt package you can install with apt.

What Makes Nushell Special?

  • ๐Ÿ“Š Structured pipelines - Every command emits tables and records rather than plain text.
  • ๐Ÿ”Ž Data-first commands - where, select, sort-by, group-by, and each feel like querying a dataset.
  • ๐Ÿงฉ Built-in format parsers - Read and write JSON, YAML, TOML, and CSV with from/to and open.
  • ๐Ÿ›ก๏ธ Typed values - Ints, strings, dates, and filesizes carry types so mistakes surface early.
  • ๐ŸŒ Same shell everywhere - Scripts behave identically on Ubuntu, macOS, and Windows.
  • โš™๏ธ Custom commands and modules - Build reusable, importable commands with typed arguments.
  • ๐ŸŽจ Helpful error messages - Errors highlight the exact expression that went wrong.
  • โšก Rust-powered - Fast, safe, and shipped as a single binary.

Why Use the deb.griffo.io Repository?

  • Straightforward installs and upgrades through APT, just like any Ubuntu package.
  • Automatic dependency management provided by the packaging.
  • Tracks upstream releases closely, so updates land promptly.
  • No source builds and no Rust toolchain to install or maintain.
  • Supports current Ubuntu releases (Jammy, Noble, and newer).

Prerequisites

Before you begin, make sure you have:

  • An Ubuntu system (Jammy 22.04 LTS, Noble 24.04 LTS, or newer)
  • sudo privileges
  • curl installed (sudo apt install curl if needed)

Step 1: Add the deb.griffo.io Repository

Register the key and repository with APT:

# Create the keyrings directory
sudo install -d -m 0755 /etc/apt/keyrings

# Download and install the repository GPG key
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg

# Add the repository (auto-detects your distro codename)
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null

# Update the package list
sudo apt update

Here is the breakdown:

  1. Creates the keyrings directory at /etc/apt/keyrings with the right permissions.
  2. Downloads and de-armours the GPG key so APT can validate package signatures.
  3. Adds the sources entry bound to that key, auto-detecting your Ubuntu codename.
  4. Refreshes the package index so APT sees the new packages.

Step 2: Update the Package List

If you skipped the last command, run it now:

sudo apt update

Step 3: Install Nushell

Install with APT:

sudo apt install nushell

The latest packaged Nushell and its dependencies are installed automatically.

Step 4: Verify the Installation

The executable is named nu, not nushell:

nu --version

You should see output similar to:

0.95.0

Drop into an interactive session whenever you like:

nu

Getting Started with Nushell

Your First Structured Pipeline

Start with ls, which returns a genuine table:

# Show the ten largest files
ls | sort-by size --reverse | first 10

# Only directories
ls | where type == dir

# Keep just a couple of columns
ls | select name size

Since every command speaks the same structured language, these snippets chain together cleanly.

Parsing and Emitting Data

Nushell understands common formats natively:

# Open a JSON file and inspect its keys
open package.json | columns

# Filter a CSV and export the result as JSON
open data.csv | where status == "active" | to json

# Query a live API response
http get https://api.github.com/repos/nushell/nushell | select name forks_count

Defining Custom Commands

Custom commands accept typed parameters and behave like built-ins:

def welcome [name: string] {
    $"Welcome to Nushell, ($name)!"
}

welcome "Ubuntu"

Collect related commands into a module and load it with use tools.nu.

Configuration Files

Nushell stores configuration under the XDG config directory. On Ubuntu that means:

~/.config/nushell/config.nu   # settings, aliases, keybindings
~/.config/nushell/env.nu      # environment and PATH setup

Open them directly from within Nushell:

config nu
config env

Setting Nushell as Your Default Shell

To use Nushell as your interactive login shell:

# Register nu as a valid shell
command -v nu | sudo tee -a /etc/shells

# Make it your login shell
chsh -s "$(command -v nu)"

Log out and back in to apply the change. Keep in mind that Nushell is not POSIX-compatible, so existing bash scripts will not run under it unchanged.

Keeping Nushell Updated

As a package from the repository, Nushell updates with everything else:

sudo apt update && sudo apt upgrade

Other Tools from deb.griffo.io

The repository packages several complementary shell tools:

  • starship - A fast, customisable prompt with first-class Nushell support.
  • zoxide - A smarter cd that ranks directories by use.
  • atuin - Searchable, synced shell history with context.
  • eza - A modern, colourful ls replacement with Git integration.

Troubleshooting

GPG or Key Errors

If APT says the repository is not signed, re-import the key:

sudo rm -f /etc/apt/keyrings/deb.griffo.io.gpg
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
sudo apt update

Package Not Found

If APT cannot find the nushell package:

  1. Re-run sudo apt update to refresh the index.
  2. Confirm your Ubuntu release is supported (Jammy, Noble, or newer).
  3. Check the sources entry:
cat /etc/apt/sources.list.d/deb.griffo.io.list

Familiar Bash Syntax Fails

Nushell is not POSIX, so export, &&, and command substitution with $(...) differ from bash. Lean on the built-in help to find the Nushell way:

help commands
help select

Uninstalling

To remove Nushell:

sudo apt remove nushell

If you made it your login shell, switch back to bash first:

chsh -s /bin/bash

To remove the repository as well:

sudo rm -f /etc/apt/sources.list.d/deb.griffo.io.list
sudo rm -f /etc/apt/keyrings/deb.griffo.io.gpg
sudo apt update

Conclusion

Nushell brings structured, queryable data to the command line, replacing brittle text munging with pipelines that read almost like plain English. On Ubuntu, installing it from deb.griffo.io gives you a current build that stays up to date through your normal apt upgrade routine.

Adopt it as a daily driver or keep it in your back pocket for data-heavy tasks; either way, Nushell makes the terminal a noticeably more capable place to work.

Resources


Disclaimer: The deb.griffo.io repository is an unofficial community project and is not affiliated with the official Debian or Ubuntu projects, or with the upstream Nushell project.