Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion src/nix/sigs.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include "nix/main/shared.hh"
#include "nix/store/store-open.hh"
#include "nix/util/thread-pool.hh"
#include "nix/store/filetransfer.hh"

#include <atomic>

Expand All @@ -28,6 +29,13 @@ struct CmdCopySigs : StorePathsCommand
return "copy store path signatures from substituters";
}

std::string doc() override
{
return
#include "store-copy-sigs.md"
;
}

void run(ref<Store> store, StorePaths && storePaths) override
{
if (substituterUris.empty())
Expand All @@ -38,7 +46,7 @@ struct CmdCopySigs : StorePathsCommand
for (auto & s : substituterUris)
substituters.push_back(openStore(s));

ThreadPool pool;
ThreadPool pool{fileTransferSettings.httpConnections};

std::atomic<size_t> added{0};

Expand Down
30 changes: 30 additions & 0 deletions src/nix/store-copy-sigs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
R""(

# Examples

* To copy signatures from a binary cache to the local store:

```console
# nix store copy-sigs --substituter https://cache.nixos.org \
--recursive /nix/store/y1x7ng5bmc9s8lqrf98brcpk1a7lbcl5-hello-2.12.1
```

* To copy signatures from one binary cache to another:

```console
# nix store copy-sigs --substituter https://cache.nixos.org \
--store file:///tmp/binary-cache \
--recursive -v \
/nix/store/y1x7ng5bmc9s8lqrf98brcpk1a7lbcl5-hello-2.12.1
imported 2 signatures
```

# Description

`nix store copy-sigs` copies store path signatures from one store to another.

It is not advised to copy signatures to binary cache stores. Binary cache signatures are stored in `.narinfo` files. Since these are cached aggressively, clients may not see the new signatures quickly. It is therefore better to set any required signatures when the paths are first uploaded to the binary cache.

Store paths are processed in parallel. The amount of parallelism is controlled by the [`http-connections`](@docroot@/command-ref/conf-file.md#conf-http-connections) settings.

)""