tank-log.nix (1509B)
1 { pkgs, ... }: 2 3 let 4 tank-log = pkgs.writeShellScriptBin "tank-log" '' 5 # variables 6 export LC_ALL=C 7 git_directory="$HOME/vault/src/logger/" 8 file_git_log="$git_directory/media.log" 9 log_remote="nas:" 10 git_logger="git --git-dir=$git_directory/.git --work-tree=$git_directory" 11 # git configuruation 12 if [ ! -e "$git_directory" ]; then 13 printf "Logger directory not found, quitting...\n" 14 exit 1 15 fi 16 if [ ! -e "$git_directory/.git" ]; then 17 printf "Initialising blank git repo...\n" 18 $git_logger init 19 fi 20 if [ -e "$file_git_log.xz" ]; then 21 printf "Decompressing existing xz archive...\n" 22 xz -d "$file_git_log.xz" 23 fi 24 if [ -e "$file_git_log" ]; then 25 printf "Removing existing log file...\n" 26 rm "$file_git_log" 27 fi 28 printf "Creating log...\n" 29 ${pkgs.rclone}/bin/rclone ls "$log_remote" | sort -k2 >"$file_git_log" 30 printf "Appending size information...\n" 31 ${pkgs.rclone}/bin/rclone size "$log_remote" >>"$file_git_log" 32 printf "Commiting log file to repository...\n" 33 $git_logger add "$file_git_log" 34 $git_logger commit -m "Update: $(date +%F)" 35 if [ -e "$file_git_log.xz" ]; then 36 printf "Removing xz archive...\n" 37 rm "$file_git_log.xz" 38 fi 39 printf "Compressing log file...\n" 40 xz "$file_git_log" 41 printf "Compressing repository...\n" 42 $git_logger config pack.windowMemory 10m 43 $git_logger config pack.packSizeLimit 20m 44 $git_logger gc --aggressive --prune 45 printf "Log complete!\n" 46 ''; 47 in { 48 environment.systemPackages = [tank-log]; 49 }