Manifest and Lockfile
Manifest and Lockfile
Quiver projects are defined by nupackage.toml and reproduced by quiver.lock.
nupackage.toml
The manifest has a [package] section and dependency groups for modules and plugins.
[package]
name = "my-module"
version = "0.1.0"
description = "Example Quiver package"
license = "MIT"
authors = ["Your Name"]
nu-version = ">=0.109,<0.111"
[dependencies.modules]
nu-utils = { git = "https://github.com/user/nu-utils", tag = "v1.0.0" }
other-lib = { git = "https://github.com/user/other-lib", branch = "main" }
pinned = { git = "https://github.com/user/pinned", rev = "a3f9c12" }
[dependencies.plugins]
nu_plugin_inc = { git = "https://github.com/nushell/nu_plugin_inc", tag = "v0.91.0", bin = "nu_plugin_inc" }
nu_plugin_polars = { source = "nu-core", bin = "nu_plugin_polars" }Module dependencies
Each module dependency must set exactly one of:
tagbranchrev
Each module dependency also needs a secure git source URL.
Plugin dependencies
Plugin dependencies support two source modes:
- Git-based plugins with
gitplus exactly one oftag,branch, orrev source = "nu-core"plugins withbin, and no git ref fields
The optional bin field is used when the binary name differs from the dependency key or repository name.
quiver.lock
The lockfile pins resolved commits and installation checksums. Quiver writes it automatically after installation.
version = 1
[[package]]
name = "nu-utils"
git = "https://github.com/user/nu-utils"
tag = "v1.0.0"
rev = "d4e8f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8"
sha256 = "..."Plugin entries may also include:
kind = "plugin"pathasset_sha256asset_url
Resolution behavior
qv installreusesquiver.lockwhen it is present and still matches the manifest.qv install --frozenrefuses to resolve and requires a valid lockfile.qv updatedeletes the local lockfile and resolves again.
Commit quiver.lock to version control if you want reproducible installs across machines and CI.