nix-configs

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

tank-log.nix (1441B)


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