nix3-flake-info(1)

πŸ¦‹ nix3-flake-info(1) πŸ¦‹

okay bestie, so this is a page from the General Commands Manual, and it's literally the glow-up guide to nix flake info. πŸ’…

⚠️ Warning β€” this program is experimental and its interface is subject to change. no cap, they might switch it up on us. πŸ™ˆ

✨ Name ✨

nix flake info β€” show flake metadata πŸŽ€


πŸ’– Synopsis πŸ’–

nix flake info [option…] flake-url

🌸 Examples 🌸

okay so first up, wanna see what dwarffs actually resolves to? iconic behavior:

# nix flake metadata dwarffs
Resolved URL:  github:edolstra/dwarffs
Locked URL:    github:edolstra/dwarffs/f691e2c991e75edb22836f1dbe632c40324215c5
Description:   A filesystem that fetches DWARF debug info from the Internet on demand
Path:          /nix/store/vdyf2s1pygcl4y3dn3bm9wy7mnl8hxcv-source
Revision:      f691e2c991e75edb22836f1dbe632c40324215c5
Last modified: 2021-01-21 15:41:26
Inputs:
β”œβ”€β”€β”€nix: github:NixOS/nix/6254b1f5d298ff73127d7b0f0da48f142bdc753c
β”‚   β”œβ”€β”€β”€lowdown-src: github:kristapsdz/lowdown/1705b4a26fbf065d9574dce47a94e8c7c79e052f
β”‚   └───nixpkgs: github:NixOS/nixpkgs/ad0d20345219790533ebe06571f82ed6b034db31
└───nixpkgs follows input 'nix/nixpkgs'

next, get that same info as JSON because sometimes you just want machine-readable main character energy:

# nix flake metadata dwarffs --json | jq .
{
"description": "A filesystem that fetches DWARF debug info from the Internet on demand",
"lastModified": 1597153508,
"locked": {
  "lastModified": 1597153508,
  "narHash": "sha256-VHg3MYVgQ12LeRSU2PSoDeKlSPD8PYYEFxxwkVVDRd0=",
  "owner": "edolstra",
  "repo": "dwarffs",
  "rev": "d181d714fd36eb06f4992a1997cd5601e26db8f5",
  "type": "github"
},
"locks": { ... },
"original": {
  "id": "dwarffs",
  "type": "indirect"
},
"originalUrl": "flake:dwarffs",
"path": "/nix/store/l06r23gw4psl1f547il2hbnwnxaplbaz-source",
"resolved": {
  "owner": "edolstra",
  "repo": "dwarffs",
  "type": "github"
},
"resolvedUrl": "github:edolstra/dwarffs",
"revision": "d181d714fd36eb06f4992a1997cd5601e26db8f5",
"url": "github:edolstra/dwarffs/d181d714fd36eb06f4992a1997cd5601e26db8f5"
}

πŸ’œ Description πŸ’œ

so this command shows you info about the flake that flake-url points at. 🫢 It resolves the flake reference using the flake registry, fetches it, and prints some meta data. and that includes:

  • Resolved URL: if flake-url is a flake identifier, then this is the flake reference that specifies its actual location, looked up in the flake registry.
  • Locked URL: a flake reference that contains a commit or content hash and thus uniquely identifies a specific flake version.
  • Description: a one-line description of the flake, taken from the description field in flake.nix.
  • Path: the store path containing the source code of the flake.
  • Revision: the Git or Mercurial commit hash of the locked flake.
  • Revisions: the number of ancestors of the Git or Mercurial commit of the locked flake. heads up tho β€” this is not available for github flakes. πŸ’€
  • Last modified: for Git or Mercurial flakes, this is the commit time of the commit of the locked flake; for tarball flakes, it's the most recent timestamp of any file inside the tarball.
  • Inputs: the flake inputs with their corresponding lock file entries.

with --json, the output is a JSON object with the following fields:

  • original and originalUrl: the flake reference specified by the user (flake-url) in attribute set and URL representation.
  • resolved and resolvedUrl: the resolved flake reference (see above) in attribute set and URL representation.
  • locked and lockedUrl: the locked flake reference (see above) in attribute set and URL representation.
  • description: see Description above.
  • path: see Path above.
  • revision: see Revision above.
  • revCount: see Revisions above.
  • lastModified: see Last modified above.
  • locks: the contents of flake.lock.

⭐ OPTIONS ⭐

  • --json β€” produce output in JSON format, suitable for consumption by another program. πŸ€–
  • --no-pretty β€” print compact JSON output on a single line, even when the output is a terminal. some commands may print multiple JSON objects on separate lines.

see --pretty. πŸ‘€

  • --pretty β€” print multi-line, indented JSON output for readability. ✨

Default: indent if output is to a terminal.

This option is only effective when --json is also specified.

πŸ“ Common evaluation options

  • --arg name expr β€” pass the value expr as the argument name to Nix functions.
  • --arg-from-file name path β€” pass the contents of file path as the argument name to Nix functions.
  • --arg-from-stdin name β€” pass the contents of stdin as the argument name to Nix functions.
  • --argstr name string β€” pass the string string as the argument name to Nix functions.
  • --debugger β€” start an interactive environment if evaluation fails.
  • --eval-store store-url β€” the URL of the Nix store to use for evaluation, i.e. to store derivations (.drv files) and inputs referenced by them.
  • --impure β€” allow access to mutable paths and repositories.
  • --include / -I path β€” add path to search path entries used to resolve lookup paths.

This option may be given multiple times.

Paths added through -I take precedence over the nix-path configuration setting and the NIX_PATH environment variable.

  • --override-flake original-ref resolved-ref β€” override the flake registries, redirecting original-ref to resolved-ref.
  • --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.
DEPRECATED 🚫 Use --no-use-registries instead.
  • --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.
  • --output-lock-file flake-lock-path β€” write the given lock file instead of flake.lock within the top-level flake.
  • --override-input input-path flake-url β€” override a specific flake input (e.g. dwarffs/nixpkgs). the input path must not be empty. this implies --no-write-lock-file.
  • --recreate-lock-file β€” recreate the flake's lock file from scratch.
DEPRECATED 🚫 Use nix flake update instead.
  • --reference-lock-file flake-lock-path β€” read the given lock file instead of flake.lock within the top-level flake.
  • --update-input input-path β€” update a specific flake input (ignoring its previous entry in the lock file).
DEPRECATED 🚫 Use nix flake update instead.
  • --debug β€” set the logging verbosity level to 'debug'.
  • --log-format format β€” set the format of log output; one of raw, internal-json, bar or bar-with-logs.
  • --print-build-logs / -L β€” print full build logs on standard error.
  • --quiet β€” decrease the logging verbosity level.
  • --verbose / -v β€” increase the logging verbosity level.

πŸ”₯ Miscellaneous global options

  • --help β€” show usage information.
  • --offline β€” disable substituters and consider all previously downloaded files up-to-date.
  • --option name value β€” set the Nix configuration setting name to value (overriding nix.conf).
  • --refresh β€” consider all previously downloaded files out-of-date.
  • --repair β€” during evaluation, rewrite missing or corrupted files in the Nix store. During building, rebuild missing or corrupted store paths.
  • --version β€” show version information.
Note πŸ“ See man nix.conf for overriding configuration settings with command line flags.

and that's the whole page bestie, no crumbs left. 🫢 this lil writeup lives in the General Commands Manual and signs off as nix3-flake-info(1) β€” that's the version tag, that's the whole footer, we stan. πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from