nix-configs

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

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:
Acommon/tank-log.nix | 64++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acommon/tank-sort.nix | 39+++++++++++++++++++++++++++++++++++++++
Mmachines/ilias.nix | 3++-
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 ];