lix/doc/manual/rl-next/nix-hash-convert.md
John Ericson 202c5e2afc Start standardizing hash algo flags
Do this if we want to do `--hash-algo` everywhere, and not `--algo` for
hash commands.

The new `nix hash convert` is updated. Deprecated new CLI commands are
left as-is (`nix hash path` needs to be redone and is also left as-is).
2024-01-20 17:29:35 -05:00

2 KiB

synopsis prs
Add `nix hash convert` 9452

New nix hash convert sub command with a fast track to stabilization! Examples:

  • Convert the hash to nix32.

    $ nix hash convert --hash-algo "sha1" --to nix32 "800d59cfcd3c05e900cb4e214be48f6b886a08df"
    vw46m23bizj4n8afrc0fj19wrp7mj3c0
    

    nix32 is a base32 encoding with a nix-specific character set. Explicitly specify the hashing algorithm (optional with SRI hashes) but detect hash format by the length of the input hash.

  • Convert the hash to the sri format that includes an algorithm specification:

    nix hash convert --hash-algo "sha1" "800d59cfcd3c05e900cb4e214be48f6b886a08df"
    sha1-gA1Zz808BekAy04hS+SPa4hqCN8=
    

    or with an explicit -to format:

    nix hash convert --hash-algo "sha1" --to sri "800d59cfcd3c05e900cb4e214be48f6b886a08df"
    sha1-gA1Zz808BekAy04hS+SPa4hqCN8=
    
  • Assert the input format of the hash:

    nix hash convert --hash-algo "sha256" --from nix32 "ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0="
    error: input hash 'ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=' does not have the expected format '--from nix32'
    nix hash convert --hash-algo "sha256" --from nix32 "1b8m03r63zqhnjf7l5wnldhh7c134ap5vpj0850ymkq1iyzicy5s"
    sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=
    

The --to/--from/--hash-algo parameters have context-sensitive auto-completion.

The following commands are still available but will emit a deprecation warning. Please convert your code to nix hash convert:

  • nix hash to-base16 $hash1 $hash2: Use nix hash convert --to base16 $hash1 $hash2 instead.
  • nix hash to-base32 $hash1 $hash2: Use nix hash convert --to nix32 $hash1 $hash2 instead.
  • nix hash to-base64 $hash1 $hash2: Use nix hash convert --to base64 $hash1 $hash2 instead.
  • nix hash to-sri $hash1 $hash2: : Use nix hash convert --to sri $hash1 $hash2 or even just nix hash convert $hash1 $hash2 instead.