---
name: "nix3-path-info"
section: "1"
platform: "linux"
package: "nix-bin"
version: "2.26.3+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/nix3-path-info"
---

# nix3-path-info(1)

query information about store paths

**Warning** \
 This program is **experimental** ⟨@docroot@/development/experimental-features.md#xp-feature-nix-command⟩ 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 --recursive --closure-size /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 --recursive --size --closure-size --human-readable nixpkgs#rustc
/nix/store/01rrgsg5zk3cds0xgdsq40zpk6g51dz9-ncurses-6.2-dev      386.7 KiB   69.1 MiB
/nix/store/0q783wnvixpqz6dxjp16nw296avgczam-libpfm-4.11.0          5.9 MiB   37.4 MiB
…
```

- •

  Check the existence of a path in a binary cache:

```
# nix path-info --recursive /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)](/jq/1.md) command):

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

- •

  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 --closure-size \
| jq 'map_values(.closureSize | select(. < 1e9)) | to_entries | sort_by(.value)'
[
…,
{
  .key = "/nix/store/zqamz3cz4dbzfihki2mk7a63mbkxz9xq-nixos-system-machine-20.09.20201112.3090c65",
  .value = 5887562256,
}
]
```

- •

  Print the path of the store derivation ⟨@docroot@/glossary.md#gloss-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* ⟨./nix.md#installables⟩\\c , 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` ⟨#opt-closure-size⟩ / `-S`

-

  Print the sum of the sizes of the NAR serialisations of the closure of each path.

- •

  `--human-readable` ⟨#opt-human-readable⟩ / `-h`

-

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

- •

  `--json` ⟨#opt-json⟩

-

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

- •

  `--sigs` ⟨#opt-sigs⟩

-

  Show signatures.

- •

  `--size` ⟨#opt-size⟩ / `-s`

-

  Print the size of the NAR serialisation of each path.

- •

  `--stdin` ⟨#opt-stdin⟩

-

  Read installables from the standard input. No default installable applied.

### Common evaluation options

- •

  `--arg` ⟨#opt-arg⟩ *name* *expr*

-

  Pass the value *expr* as the argument *name* to Nix functions.

- •

  `--arg-from-file` ⟨#opt-arg-from-file⟩ *name* *path*

-

  Pass the contents of file *path* as the argument *name* to Nix functions.

- •

  `--arg-from-stdin` ⟨#opt-arg-from-stdin⟩ *name*

-

  Pass the contents of stdin as the argument *name* to Nix functions.

- •

  `--argstr` ⟨#opt-argstr⟩ *name* *string*

-

  Pass the string *string* as the argument *name* to Nix functions.

- •

  `--debugger` ⟨#opt-debugger⟩

-

  Start an interactive environment if evaluation fails.

- •

  `--eval-store` ⟨#opt-eval-store⟩ *store-url*

-

  The URL of the Nix store ⟨@docroot@/store/types/index.md#store-url-format⟩ to use for evaluation, i.e. to store derivations (`.drv` files) and inputs referenced by them.

- •

  `--impure` ⟨#opt-impure⟩

-

  Allow access to mutable paths and repositories.

- •

  `--include` ⟨#opt-include⟩ / `-I` *path*

-

  Add *path* to search path entries used to resolve lookup paths ⟨@docroot@/language/constructs/lookup-path.md⟩

-

  This option may be given multiple times.

-

  Paths added through `-I` take precedence over the `nix-path` configuration setting ⟨@docroot@/command-ref/conf-file.md#conf-nix-path⟩ and the `NIX_PATH` environment variable ⟨@docroot@/command-ref/env-common.md#env-NIX\_PATH⟩\\c .

- •

  `--override-flake` ⟨#opt-override-flake⟩ *original-ref* *resolved-ref*

-

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

### Common flake-related options

- •

  `--commit-lock-file` ⟨#opt-commit-lock-file⟩

-

  Commit changes to the flake’s lock file.

- •

  `--inputs-from` ⟨#opt-inputs-from⟩ *flake-url*

-

  Use the inputs of the specified flake as registry entries.

- •

  `--no-registries` ⟨#opt-no-registries⟩

-

  Don’t allow lookups in the flake registries.

  -

    **DEPRECATED**

  -

    Use `--no-use-registries` ⟨@docroot@/command-ref/conf-file.md#conf-use-registries⟩ instead.

- •

  `--no-update-lock-file` ⟨#opt-no-update-lock-file⟩

-

  Do not allow any updates to the flake’s lock file.

- •

  `--no-write-lock-file` ⟨#opt-no-write-lock-file⟩

-

  Do not write the flake’s newly generated lock file.

- •

  `--output-lock-file` ⟨#opt-output-lock-file⟩ *flake-lock-path*

-

  Write the given lock file instead of `flake.lock` within the top-level flake.

- •

  `--override-input` ⟨#opt-override-input⟩ *input-path* *flake-url*

-

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

- •

  `--recreate-lock-file` ⟨#opt-recreate-lock-file⟩

-

  Recreate the flake’s lock file from scratch.

  -

    **DEPRECATED**

  -

    Use `nix flake update` ⟨@docroot@/command-ref/new-cli/nix3-flake-update.md⟩ instead.

- •

  `--reference-lock-file` ⟨#opt-reference-lock-file⟩ *flake-lock-path*

-

  Read the given lock file instead of `flake.lock` within the top-level flake.

- •

  `--update-input` ⟨#opt-update-input⟩ *input-path*

-

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

  -

    **DEPRECATED**

  -

    Use `nix flake update` ⟨@docroot@/command-ref/new-cli/nix3-flake-update.md⟩ instead.

### Logging-related options

- •

  `--debug` ⟨#opt-debug⟩

-

  Set the logging verbosity level to ‘debug’.

- •

  `--log-format` ⟨#opt-log-format⟩ *format*

-

  Set the format of log output; one of `raw`, `internal-json`, `bar` or `bar-with-logs`.

- •

  `--print-build-logs` ⟨#opt-print-build-logs⟩ / `-L`

-

  Print full build logs on standard error.

- •

  `--quiet` ⟨#opt-quiet⟩

-

  Decrease the logging verbosity level.

- •

  `--verbose` ⟨#opt-verbose⟩ / `-v`

-

  Increase the logging verbosity level.

### Miscellaneous global options

- •

  `--help` ⟨#opt-help⟩

-

  Show usage information.

- •

  `--offline` ⟨#opt-offline⟩

-

  Disable substituters and consider all previously downloaded files up-to-date.

- •

  `--option` ⟨#opt-option⟩ *name* *value*

-

  Set the Nix configuration setting *name* to *value* (overriding `nix.conf`).

- •

  `--refresh` ⟨#opt-refresh⟩

-

  Consider all previously downloaded files out-of-date.

- •

  `--repair` ⟨#opt-repair⟩

-

  During evaluation, rewrite missing or corrupted files in the Nix store. During building, rebuild missing or corrupted store paths.

- •

  `--version` ⟨#opt-version⟩

-

  Show version information.

### Options that change the interpretation of **installables**

- •

  `--all` ⟨#opt-all⟩

-

  Apply the operation to every store path.

- •

  `--derivation` ⟨#opt-derivation⟩

-

  Operate on the store derivation ⟨@docroot@/glossary.md#gloss-store-derivation⟩ rather than its outputs.

- •

  `--expr` ⟨#opt-expr⟩ *expr*

-

  Interpret *installables* ⟨@docroot@/command-ref/new-cli/nix.md#installables⟩ as attribute paths relative to the Nix expression *expr*.

- •

  `--file` ⟨#opt-file⟩ / `-f` *file*

-

  Interpret *installables* ⟨@docroot@/command-ref/new-cli/nix.md#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. Implies `--impure`.

- •

  `--recursive` ⟨#opt-recursive⟩ / `-r`

-

  Apply operation to closure of the specified paths.

  **Note**

  See `man nix.conf` ⟨@docroot@/command-ref/conf-file.md#command-line-flags⟩ for overriding configuration settings with command line flags.
