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.
It should work transparently for most commands, including when an interactive shell is spawned.
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;
};
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"
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
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.