Uploads stuff to your s3 binary cache, but skip stuff that exist on upstream caches to save you space and time. Unlike `nix copy`, we also upload build dependencies meaning you just say the package or store path and we figure out the rest. Specify upstream caches to check against with `-u` (can be specified multiple times, `cache.nixos.org` is always included). ## Usage Example: ``` nixcp --bucket nixcache --signing-key ~/cache-priv-key.pem --endpoint https://s3.cy7.sh -u https://nix-community.cachix.org push github:cything/nixcp/2025-04-12 ``` The signing key is generated with: ``` nix-store --generate-binary-cache-key nixcache.cy7.sh cache-priv-key.pem cache-pub-key.pem ``` `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` environment variables should be set with your s3 credentials. ``` Usage: nixcp push [OPTIONS] --bucket --signing-key [PATH]... Arguments: [PATH]... Path to upload e.g. ./result or /nix/store/y4qpcibkj767szhjb58i2sidmz8m24hb-hello-2.12.1 Options: --bucket The s3 bucket to upload to -u, --upstream Upstream cache to check against. Can be specified multiple times. cache.nixos.org is always included --signing-key Path to the file containing signing key e.g. ~/cache-priv-key.pem --region If unspecified, will get it form AWS_DEFAULT_REGION envar or default to us-east-1 --endpoint If unspecifed, will get it from AWS_ENDPOINT envar e.g. https://s3.example.com --no-default-upstream Do not include cache.nixos.org as upstream -h, --help Print help ``` ## Install with nix ``` nix profile install github:cything/nixcp ``` Or run without installing: ``` nix run github:cything/nixcp ``` Separate arguments with `--` to pass them through to `nixcp` like so: ``` nix run github:cything/nixcp -- --help ```