nix-configs

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

tank-log.nix (1759B)


      1 { pkgs, username, ... }:
      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 	rclone ls "$log_remote" | sort -k2 >"$file_git_log"
     29 	printf "Appending size information...\n"
     30 	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 
     49   systemd.timers.tank-log = {
     50     wantedBy = [ "timers.target" ];
     51     timerConfig = {
     52       OnCalendar = [ "0/12:20:00" ];
     53       Persistent = true;
     54     };
     55   };
     56 
     57   systemd.services.tank-log = {
     58     script = "tank-log";
     59     path = [ "/run/current-system/sw" ];
     60     serviceConfig = {
     61       Type = "oneshot";
     62       User = "${username}";
     63     };
     64   };
     65 }