nix path-info

Warning: This program is experimental and its interface is subject to change.

# Name

`nix path-info` - query information about store paths

# Synopsis

`nix path-info` [option...] installables...

# Examples

- Print the store path produced by `nixpkgs#hello`:

      # nix path-info nixpkgs#hello
      /nix/store/v5sv61sszx301i0x6xysaqzla09nksnd-hello-2.10

- Show the closure sizes of every path in the current NixOS system closure, sorted by size:

      # nix path-info -rS /run/current-system | sort -nk2
      /nix/store/hl5xwp9kdrd1zkm0idm3kkby9q66z404-empty                                                96
      /nix/store/27324qvqhnxj3rncazmxc4mwy79kz8ha-nameservers                                         112
      …
      /nix/store/539jkw9a8dyry7clcv60gk6na816j7y8-etc                                          5783255504
      /nix/store/zqamz3cz4dbzfihki2mk7a63mbkxz9xq-nixos-system-machine-20.09.20201112.3090c65  5887562256

- Show a package's closure size and all its dependencies with human readable sizes:

      # nix path-info -rsSh nixpkgs#rustc
      /nix/store/01rrgsg5zk3cds0xgdsq40zpk6g51dz9-ncurses-6.2-dev      386.7K   69.1M
      /nix/store/0q783wnvixpqz6dxjp16nw296avgczam-libpfm-4.11.0          5.9M   37.4M
      …

- Check the existence of a path in a binary cache:

      # nix path-info -r /nix/store/blzxgyvrk32ki6xga10phr4sby2xf25q-geeqie-1.5.1 --store https://cache.nixos.org/
      path '/nix/store/blzxgyvrk32ki6xga10phr4sby2xf25q-geeqie-1.5.1' is not valid

- Print the 10 most recently added paths (using --json and the jq(1) command):

      # nix path-info --json --all | jq -r 'sort_by(.registrationTime)[-11:-1][].path'

- Show the size of the entire Nix store:

      # nix path-info --json --all | jq 'map(.narSize) | add'
      49812020936

- Show every path whose closure is bigger than 1 GB, sorted by closure size:

      # nix path-info --json --all -S \
        | jq 'map(select(.closureSize > 1e9)) | sort_by(.closureSize) | map([.path, .closureSize])'
      [
        …,
        [
          "/nix/store/zqamz3cz4dbzfihki2mk7a63mbkxz9xq-nixos-system-machine-20.09.20201112.3090c65",
          5887562256
        ]
      ]

- Print the path of the store derivation produced by `nixpkgs#hello`:

      # nix path-info --derivation nixpkgs#hello
      /nix/store/s6rn4jz1sin56rf4qj5b5v8jxjm32hlk-hello-2.10.drv

# Description

This command shows information about the store paths produced by installables, or about all paths in the store if you pass `--all`.

By default, this command only prints the store paths. You can get additional information by passing flags such as `--closure-size`, `--size`, `--sigs` or `--json`.

> Warning

> Note that `nix path-info` does not build or substitute the installables you specify. Thus, if the corresponding store paths don't already exist, this command will fail. You can use `nix build` to ensure that they exist.

# Options

- `--closure-size` / `-S`
  Print the sum of the sizes of the NAR serialisations of the closure of each path.

- `--human-readable` / `-h`
  With `-s` and `-S`, print sizes in a human-friendly format such as `5.67G`.

- `--json`
  Produce output in JSON format, suitable for consumption by another program.

- `--sigs`
  Show signatures.

- `--size` / `-s`
  Print the size of the NAR serialisation of each path.

Common evaluation options:

- `--arg` name expr
  Pass the value expr as the argument name to Nix functions.

- `--argstr` name string
  Pass the string string as the argument name to Nix functions.

- `--eval-store` store-url
  The Nix store to use for evaluations.

- `--impure`
  Allow access to mutable paths and repositories.

- `--include` / `-I` path
  Add path to the list of locations used to look up `<...>` file names.

- `--override-flake` original-ref resolved-ref
  Override the flake registries, redirecting original-ref to resolved-ref.

Common flake-related options:

- `--commit-lock-file`
  Commit changes to the flake's lock file.

- `--inputs-from` flake-url
  Use the inputs of the specified flake as registry entries.

- `--no-registries`
  Don't allow lookups in the flake registries. This option is deprecated; use `--no-use-registries`.

- `--no-update-lock-file`
  Do not allow any updates to the flake's lock file.

- `--no-write-lock-file`
  Do not write the flake's newly generated lock file.

- `--override-input` input-path flake-url
  Override a specific flake input (e.g. `dwarffs/nixpkgs`). This implies `--no-write-lock-file`.

- `--recreate-lock-file`
  Recreate the flake's lock file from scratch.

- `--update-input` input-path
  Update a specific flake input (ignoring its previous entry in the lock file).

Options that change the interpretation of installables:

- `--all`
  Apply the operation to every store path.

- `--derivation`
  Operate on the store derivation rather than its outputs.

- `--expr` expr
  Interpret installables as attribute paths relative to the Nix expression expr.

- `--file` / `-f` file
  Interpret installables as attribute paths relative to the Nix expression stored in file. If file is the character -, then a Nix expression will be read from standard input.

- `--recursive` / `-r`
  Apply operation to closure of the specified paths.