# Starship: how to install it, and the distro versions that gate it

> Starship is a Rust shell prompt whose README covers installs for a dozen package managers, but the table is versioned and a Nerd Font is a hard prerequisite. The Cargo manifest is the more interesting document: default features, a git dependency pinned away from its defaults, and an MSRV the project calls a hint.

**starship/starship** — Starship is a minimal, blazing-fast, and infinitely customizable shell prompt written in Rust, working across Bash, Zsh, Fish, PowerShell, and more on any OS.

- Repository: https://github.com/starship/starship
- Website: https://starship.rs
- Stars: 60,092 · Forks: 2,679
- Language: Rust
- License: ISC
- Published: 2026-08-08 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/starship-starship

## A Nerd Font is the one hard prerequisite

Before any install command matters, one requirement is stated: a Nerd Font installed and enabled in your terminal, with FiraCode Nerd Font offered as an example. That is a font in the terminal emulator, not in your editor, and the difference decides whether a working prompt is what you see. Starship describes itself as universal, working on any shell and any operating system, and it is, but the glyphs it prints depend on the terminal's font. Install the script happily on a machine whose terminal is still sending the default bitmap font, and you get boxes where the symbols should be, then an afternoon of blaming the prompt for a font setting. The install script does not check this, and the README puts it in a Prerequisites list of exactly one item.

## Windows gets an MSI and winget, and no shell script

Linux and macOS are the two platforms with a one line installer:

```sh
curl -sS https://starship.rs/install.sh | sh
```

Windows gets something else. The README points at MSI installers in the releases section, and lists crates.io, Chocolatey, Scoop, conda-forge and winget as package managers, with winget taking a fully qualified identifier, winget install --id Starship.Starship. So a Windows rollout has four mechanisms with different update stories, and the identifier matters if you script it. The crate itself is built for this platform: Cargo.toml includes /starship.exe.manifest and media/icon.ico in the published files, next to build.rs, LICENSE, src/**/* and the docs presets, so the Windows manifest and icon travel with the package rather than being fetched at install time.

## The distribution table is floored by version, not by name

Read the install table by version, because the numbers decide whether the command exists for you. Debian 13+ and Ubuntu 25.04+ get apt install starship, Fedora 40+ and CentOS 7+ go through a Copr repository with dnf copr enable atim/starship followed by dnf install starship, Alpine needs 3.13+ for apk add starship, and NixOS uses nix-env -iA nixpkgs.starship. The same package manager command appears for BSD and Linux side by side, and for Android the entry is Termux with pkg install starship, while FreeBSD uses FreshPorts and NetBSD uses pkgsrc. If your machine sits below one of those floors, the packaged route is closed to you, and the remaining options are the install script, crates.io, conda-forge or Homebrew on Linux.

## Every platform can also cargo install the crate

The fallback that appears in every table is crates.io, and it is the same line everywhere:

```sh
cargo install starship --locked
```

Two details in that line matter. --locked pins the versions in Cargo.lock, so a build reproduces the dependency set the project published rather than resolving fresh, which is what you want when a transitive update changes behaviour. And the manifest notes rust-version 1.95 with the comment that MSRV is only intended as a hint and only the latest version is officially supported, on an edition 2024 crate. For a team building Starship from source on an older toolchain, that comment is the whole policy: compilation may still work, but nothing older than the newest release is a supported target.

## default features include notify, which does not build on Nix for darwin

The features block is short and consequential. default = ["battery", "notify"], battery pulls in starship-battery, notify pulls in notify-rust, and config-schema is a separate switch that turns on schemars. Next to the notify dependency the manifest explains why it is optional even though it is on by default: the crate doesn't currently build for darwin with nix, with a link to the nixpkg issue. So a macOS machine building Starship through Nix has to leave the notify feature out, and that is not a cosmetic difference: the feature is what desktop notifications come from, so the build you get there is not the build everyone else installs. Turning it off is a decision you have to make explicitly rather than something the manifest decides for you.

## gix runs with its defaults switched off, on purpose

The git dependency is configured against its own defaults, and the comment above it names the reason: the default feature restriction addresses issue 4251 in this repository. The dependency is gix 0.87.1 with default-features = false and a short feature list of max-performance-safe, revision, status, sha1 and sha256. What that buys is a narrower git segment in the prompt, built without the transports and helpers a general purpose git library would pull in, and it is why upgrading gix here is not a routine version bump: the feature set is a decision tied to a specific defect, and switching defaults back on reintroduces whatever that defect was. If your prompt needs something outside revision and status information, this dependency will not provide it, and the README does not document a fallback.

## v1.26.0 shipped in June while commits landed in September

The release record and the commit record are not the same clock. Published versions are v1.26.0 on 2026-06-28, v1.25.1 on 2026-04-30 and v1.25.0 on 2026-04-18, and Cargo.toml carries version 1.26.0 to match. The last push to the repository was on 2026-09-29 and the project is not archived, so three months of work sit on main that no package manager has seen. The window between v1.25.0 and v1.26.0 was about ten weeks, which is the cadence to plan against if you need a specific fix: check the version you receive, not the branch you read. Release plumbing is in the tree, with release-please-config.json and CHANGELOG.md, and the repository also carries SECURITY.md, CONTRIBUTING.md, AI_POLICY.md, clippy.toml, deny.toml, typos.toml, .dprint.json and .rustfmt.toml.

## Twelve translated guides, and a schema behind a build feature

The front door for non-English readers is a translation, and there are a lot of them linked from the README: de-DE, es-ES, fr-FR, id-ID, it-IT, ja-JP, pt-BR, ru-RU, uk-UA, vi-VN, zh-CN and zh-TW, each a docs/<locale>/guide/README.md, with crowdin.yml at the top level pointing at the translation workflow. Only one of them ships with the crate. The include list in Cargo.toml carries /README.md with a leading slash, and the comment on that line says to keep the slash to exclude localized readmes, so the packaged artifact is English only even though the repository is not. Related: .github/config-schema.json is in the include list and ships to users, while the config-schema feature is what enables schemars, and the manifest does not explain how the committed file and that feature relate.

## Conclusion

Install Starship from your distribution's repository when your version clears the floor the README lists, otherwise use the install script, and on Windows pick the MSI or winget path since no script is offered. Turn the notify feature off deliberately if you build with Nix on macOS, because notify-rust is a default feature that does not currently build there. Before you build from source, read rust-version 1.95 and its comment: it is a hint, only the latest release is supported, and the newest packaged release is v1.26.0 from 2026-06-28 while commits continued to 2026-09-29.

## FAQ

### How do I install starship?

On Linux and macOS the README's script is curl -sS https://starship.rs/install.sh | sh. Starship is also on crates.io with cargo install starship --locked, on Homebrew and MacPorts, conda-forge, and in the Linux, BSD, Android and Windows package repositories listed in the README, and a Nerd Font has to be installed and enabled first.

### How do I install starship on ubuntu?

The README lists Ubuntu 25.04+ under Ubuntu Universe with apt install starship, and the same apt install starship line for Debian 13+ from Debian Main. If your Ubuntu release is older than 25.04, that entry does not apply and the install script or cargo install starship --locked are the documented alternatives.

### How do I install starship on fedora?

The README lists Fedora 40+ through a Copr repository, which takes two commands: dnf copr enable atim/starship, then dnf install starship. CentOS 7+ is listed with the same two lines.

### How do I use starship on linux?

Installation is step one, and the README's step two is configuring your shell to initialise starship, after the per-OS install instructions. Configuration detail lives on starship.rs/config/, and the shell has to be pointed at the binary yourself, which is where a fresh Linux install usually stalls.

## Sources

- [Official documentation](https://starship.rs)
- [Official README](https://github.com/starship/starship#readme)
- [Project repository](https://github.com/starship/starship)
- [Release notes](https://github.com/starship/starship/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/starship-starship
