commit 5bf33671f053f85cc31a1629c6743c5b60c86c4b
parent ce935087647d16d27dce16e7507904210699eaf0
Author: breadcat <breadcat@users.noreply.github.com>
Date: Wed, 30 Jul 2025 18:43:14 +0100
Move tank scripts and include timers
Diffstat:
3 files changed, 105 insertions(+), 1 deletion(-)
diff --git a/common/tank-log.nix b/common/tank-log.nix
@@ -0,0 +1,64 @@
+{ pkgs, username, ... }:
+
+let
+ tank-log = pkgs.writeShellScriptBin "tank-log" ''
+ # variables
+ git_directory="$HOME/vault/src/logger/"
+ file_git_log="$git_directory/media.log"
+ log_remote="nas:"
+ git_logger="git --git-dir=$git_directory/.git --work-tree=$git_directory"
+ # git configuruation
+ if [ ! -e "$git_directory" ]; then
+ printf "Logger directory not found, quitting...\n"
+ exit 1
+ fi
+ if [ ! -e "$git_directory/.git" ]; then
+ printf "Initialising blank git repo...\n"
+ $git_logger init
+ fi
+ if [ -e "$file_git_log.xz" ]; then
+ printf "Decompressing existing xz archive...\n"
+ xz -d "$file_git_log.xz"
+ fi
+ if [ -e "$file_git_log" ]; then
+ printf "Removing existing log file...\n"
+ rm "$file_git_log"
+ fi
+ printf "Creating log...\n"
+ rclone ls "$log_remote" | sort -k2 >"$file_git_log"
+ printf "Appending size information...\n"
+ rclone size "$log_remote" >>"$file_git_log"
+ printf "Commiting log file to repository...\n"
+ $git_logger add "$file_git_log"
+ $git_logger commit -m "Update: $(date +%F)"
+ if [ -e "$file_git_log.xz" ]; then
+ printf "Removing xz archive...\n"
+ rm "$file_git_log.xz"
+ fi
+ printf "Compressing log file...\n"
+ xz "$file_git_log"
+ printf "Compressing repository...\n"
+ $git_logger config pack.windowMemory 10m
+ $git_logger config pack.packSizeLimit 20m
+ $git_logger gc --aggressive --prune
+ printf "Log complete!\n"
+ '';
+in {
+ environment.systemPackages = [tank-log];
+
+ systemd.timers.tank-log = {
+ wantedBy = [ "timers.target" ];
+ timerConfig = {
+ OnUnitActiveSec = "12h";
+ Persistent = true;
+ };
+ };
+
+ systemd.services.tank-log = {
+ script = "tank-log";
+ serviceConfig = {
+ Type = "oneshot";
+ User = "${username}";
+ };
+ };
+}
diff --git a/common/tank-sort.nix b/common/tank-sort.nix
@@ -0,0 +1,39 @@
+{ pkgs, username, ... }:
+
+let
+ tank-sort = pkgs.writeShellScriptBin "tank-sort" ''
+ # variables
+ temp_mount="$(mktemp -d)"
+ rclone_config="$HOME/vault/src/dockerfiles/rclone.conf"
+ rclone_remote="seedbox:"
+ destination_tvshows="/mnt/media/videos/television"
+ template_tvshows="{{ .Name }}/{{ .Name }} S{{ printf \"%02d\" .Season }}E{{ printf \"%02d\" .Episode }}{{ if ne .ExtraEpisode -1 }}-{{ printf \"%02d\" .ExtraEpisode }}{{end}}.{{ .Ext }}"
+ destination_movies="/mnt/media/videos/movies"
+ template_movies="{{ .Name }} ({{ .Year }})/{{ .Name }}.{{ .Ext }}"
+ # mount remote
+ ${pkgs.rclone}/bin/rclone --config="$rclone_config" mount "$rclone_remote" "$temp_mount" --daemon
+ # sorting process
+ media-sort --action copy --concurrency 1 --accuracy-threshold 90 --tv-dir "$destination_tvshows" --movie-dir "$destination_movies" --tv-template "$template_tvshows" --movie-template "$template_movies" --recursive --overwrite-if-larger --extensions "mp4,m4v,mkv" "$temp_mount"
+ # unmount remote and remove
+ fusermount -uz "$temp_mount" 2>/dev/null
+ find "$temp_mount" -maxdepth 1 -mount -type d -empty -delete -print
+ '';
+in {
+ environment.systemPackages = [tank-sort];
+
+ systemd.timers.tank-sort = {
+ wantedBy = [ "timers.target" ];
+ timerConfig = {
+ OnUnitActiveSec = "12h";
+ Persistent = true;
+ };
+ };
+
+ systemd.services.tank-sort = {
+ script = "tank-sort";
+ serviceConfig = {
+ Type = "oneshot";
+ User = "${username}";
+ };
+ };
+}
diff --git a/machines/ilias.nix b/machines/ilias.nix
@@ -26,6 +26,8 @@ in {
(import ../common/ssh-tunnel.nix {inherit config pkgs username domain;})
(import ../common/ssh.nix {inherit username sshkey;})
(import ../common/syncthing.nix {inherit config pkgs username;})
+ (import ../common/tank-log.nix {inherit pkgs username;})
+ (import ../common/tank-sort.nix {inherit pkgs username;})
(import ../common/user.nix {inherit config pkgs username fullname;})
(import ../scripts/audiobook-cleaner.nix {inherit pkgs domain;})
../scripts/backup-local.nix
@@ -39,7 +41,6 @@ in {
(import ../scripts/overtid.nix {inherit pkgs;})
../scripts/payslips.nix
../scripts/phone-dump.nix
- ../scripts/tank-sort.nix
../scripts/watchedlist.nix
../scripts/youtube-id-rss.nix
];