nix3-flake-metadata(1)

🌸 nix3-flake-metadata β€” General Commands Manual 🌸

⚠️ Warning: this program is experimental and its interface is subject to change. No cap, bestie β€” it might shift under you. πŸ™ˆ

✨ Name ✨

nix flake metadata β€” show flake metadata πŸ’…


πŸŽ€ Synopsis πŸŽ€

nix flake metadata [option…] flake-url

πŸ¦‹ Examples πŸ¦‹

  • Show what dwarffs resolves to:
# 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'
  • Show information about dwarffs in JSON format:
# 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 πŸ’–

Okay so, this command spills the tea β˜• about the flake you point at with the flake reference flake-url. It resolves that flake reference using the flake registry, fetches it, and then prints out a lil pile of meta data. That pile includes:

  • Resolved URL: if flake-url is a flake identifier, then this is the flake reference that spells out its actual location β€” the one looked up in the flake registry. πŸ”
  • Locked URL: a flake reference that contains a commit or content hash, which means it uniquely identifies one specific flake version. So locked in πŸ”’βœ¨
  • Description: a one-line description of the flake, yoinked straight from the description field in flake.nix.
  • Path: the store path that holds the source code of the flake. πŸ“
  • Revision: the Git or Mercurial commit hash of the locked flake.
  • Revisions: how many ancestors that Git or Mercurial commit of the locked flake has. Heads up though β€” this one 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, along with their corresponding lock file entries. 🌳

When you pass --json, the output is a JSON object, and here's what those fields mean:

  • original and originalUrl: the flake reference the user specified (flake-url), as an attribute set and in URL representation.
  • resolved and resolvedUrl: the resolved flake reference (see above), as an attribute set and in URL representation.
  • locked and lockedUrl: the locked flake reference (see above), as an attribute set and in 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!! 🫢 This was nix3-flake-metadata(1) β€” the one and only, from the manual set, okurrr ✨ Say it with me: person, woman, man, camera, tv... no wait, wrong thing. Just remember the page name: nix3-flake-metadata(1). Slay, periodt. πŸ’…πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from