/pinix

Progress In Nix - Pacman inspired frontend for Nix

Primary LanguageRustGNU Lesser General Public License v3.0LGPL-3.0

Progress In Nix

Crates.io License Crates.io Version

Pinix is a Pacman inspired frontend for Nix. It wraps a regular Nix command and replaces the output with a more modern and informative interface.

asciicast

It should work transparently for most commands, including when an interactive shell is spawned.

Installation

Using Nix

The repository defines a flake, so you can get the pinix package available by adding it to your flake.nix:

inputs = {
  pinix.url = github:remi-dupre/pinix;
};

Using Cargo

You can also install pinix from sources by using cargo:

cargo install pinix

# This will only install the main binary so you might want to add aliases for
# common nix commands.
alias pix="pinix --command nix"
alias pix-shell="pinix --command nix-shell"
alias pixos-rebuild="pinix --command nixos-rebuild"

Usage

The nix package provides you with drop-in replacements for common nix commands:

$ pix-shell -p htop
$ pixos-rebuild switch --flake .

Pinix has its how set of parameters, all prefixed with --pix-, they must be specified before any regular parameter. You can get list supported parameters through the help message:

$ pinix --pix-help
Wrap a Nix command to display rich logs while it is running

Usage: pinix [OPTIONS] [EXT]...

Arguments:
  [EXT]...  Arguments forwared to actual Nix command

Options:
      --pix-help               Display this help message
      --pix-command <COMMAND>  Specify the nix command that must be run
      --pix-debug              Display a debug bar
      --pix-log-downloads      Display a log line when a download is finished
      --pix-record <RECORD>    Save timestamped logs to a file

If you want to run a command for which you don't have an alias available you can call pinix followed by your regular command:

$ pinix nix-shell -p htop

Similar Tools

I'm not the first one who tried to improve nix output. Here are the tools that I know of:

  • nix-output-monitor: Pipe your nix-build output through the nix-output-monitor a.k.a nom to get additional information while building.
  • nvd: Nix/NixOS package version diff tool.
  • #4296: Some old suggestion for a more riche native progress indicator in nix.