nix-dotfiles/utils/attic-push.bash

27 lines
856 B
Bash
Raw Normal View History

#!/usr/bin/env nix
#! nix shell nixpkgs#bash nixpkgs#jq nixpkgs#gnused nixpkgs#nixVersions.latest nixpkgs#attic-client --command bash
#set -x
#set -v
set -e
# retrieve all paths under 2G
2025-03-10 01:06:56 -04:00
# nix_paths=$(nix path-info --json --all --closure-size \
# | jq 'map_values(.closureSize | select(. < 2e9)) | to_entries | sort_by(.value)' \
# | jq 'map(.key) | join("\n")' | sed -E -e 's/\\n/\n/g;s/^"//g;s/"$//g')
# retrieve all paths
2025-03-13 17:50:03 -04:00
nix_paths=$(nix path-info --json --all --closure-size |
jq 'map_values(.closureSize | select(true)) | to_entries | sort_by(.value)' |
jq 'map(.key) | join("\n")' | sed -E -e 's/\\n/\n/g;s/^"//g;s/"$//g')
2025-03-10 01:06:56 -04:00
readarray -t nix_path_array < <(echo "$nix_paths")
batchsize=1000
2025-03-13 17:50:03 -04:00
for ((i = 0; i < ${#nix_path_array[@]}; i += batchsize)); do
part=("${nix_path_array[@]:i:batchsize}")
2025-03-13 17:50:03 -04:00
attic push nix-cache "${part[@]}"
done