nix-configs

Personal NixOS and home-manager configuration files
Log | Files | Refs

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 }