Installation

From a release

Releases have binaries for Linux on x86_64 and aarch64. The install script picks the right one and puts it in ~/.local/bin:

curl -fsSL https://raw.githubusercontent.com/luispedro/luish/main/install.sh | sh

If you have no configuration yet (~/.config/luish is missing or empty), the script then asks whether to write the recommended one, and fetches its plugins (which needs git). It is the configuration that luish’s first run offers, with luish-extra: completion for about 270 more commands, and colour schemes (style -c lists them). Without a terminal to ask on, it writes nothing, and luish’s first run offers a configuration instead.

Advanced options for the install script

Options go after sh -s --, such as curl -fsSL .../install.sh | sh -s -- --musl --dir /usr/local/bin:

Option

Environment variable

Meaning

--dir DIR

LUISH_INSTALL_DIR

Where to put luish (default: ~/.local/bin)

--version TAG

A release tag such as v0.1.0 (default: the latest release)

--gnu, --musl

LUISH_LIBC (gnu or musl)

Which build (see below)

--config

Write the recommended configuration (with luish-extra) without asking, if there is none

--no-config

Don’t offer to write a configuration

The script uses colours when its output is a terminal, unless NO_COLOR is set. It checks the download’s SHA-256 checksum, and replaces an existing luish by renaming, so shells that are running keep working. Running it again updates luish. To uninstall, remove the file.

There are two builds:

  • gnu (the default wherever it runs) is linked dynamically against glibc, and needs glibc 2.17 or later: any distribution from 2014 on (RHEL and CentOS 7, Debian 8, Ubuntu 14.04), except NixOS, whose dynamic loader is elsewhere. Unless you choose a build, the script installs the musl build where this one doesn’t run.

  • musl is a static binary, which runs on any Linux (Alpine, NixOS, containers without a C library). It starts faster, but it runs a bit slower, since musl’s malloc is slower.

With Nix

The repository is a Nix flake (flake.nix), for x86_64 and aarch64 Linux.

nix run github:luispedro/luish                  # run it without installing
nix profile install github:luispedro/luish      # install it in your profile

The first time you run it, it might take a few minutes to download the dependencies and build the binary, afterwards it be cached and run quickly.

On NixOS, add the flake to your system’s inputs (inputs.luish.url = "github:luispedro/luish";) and use its package, here as a login shell:

{ pkgs, inputs, ... }:
let
  luish = inputs.luish.packages.${pkgs.stdenv.hostPlatform.system}.default;
in
{
  environment.systemPackages = [ luish ];
  environment.shells = [ luish ];
  users.users.alice.shell = luish;
}

With Home Manager, add the same package to home.packages. nix develop gives a shell with the Rust toolchain and the tests’ reference shells (see DEVELOPING.md).

From source

luish uses pixi to provide the Rust toolchain:

pixi run release                  # release build: target/release/luish

Plain cargo build --release also works, with Rust 1.95 or later.