From 88fa6bb08ed9044efaf5cd759583ca2b37d58dde Mon Sep 17 00:00:00 2001 From: Spencer Heywood Date: Thu, 23 Jan 2025 22:34:03 -0700 Subject: [PATCH] fixed ssh-agent on servers, added yt-dlp script --- nixos/roles/media/youtube.nix | 24 ++++++++++++++++++++++++ nixos/server.nix | 5 +++++ 2 files changed, 29 insertions(+) diff --git a/nixos/roles/media/youtube.nix b/nixos/roles/media/youtube.nix index db5e4e8..05b36cc 100644 --- a/nixos/roles/media/youtube.nix +++ b/nixos/roles/media/youtube.nix @@ -6,11 +6,35 @@ let nameserver 1.1.1.1 nameserver 1.0.0.1 ''; + yt-dlp-wrapper = pkgs.writeShellScriptBin "yt-dlp-wrapper" '' + sudo -u media mkdir -p /tmp/yt-dlp + sudo -u media HOME=/tmp/yt-dlp ${pkgs.nix}/bin/nix --extra-experimental-features "nix-command flakes" run "github:nixos/nixpkgs/master#yt-dlp" -- --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:133.0) Gecko/20100101 Firefox/133.0" --cookies "/media/services/yt-dlp/cookies.txt" --cache-dir /tmp/yt-dlp -P "/media/home-media/disk2/videos/" $1 + ''; + youtube-dl = pkgs.writeShellScriptBin "youtube-dl" '' + ntfy_uri="http://ntfy/plex-notifications" + date="$(date +%Y%m%d-%H:%M:%S)" + outfile="/tmp/youtube-dl-$date.log" + ${yt-dlp-wrapper}/bin/yt-dlp-wrapper "$1" &> $outfile + + status=$? + if [ $status -eq 0 ]; then + message="Downloaded $1" + echo "$message" + else + message="Failed to download $1. Logfile at $outfile" + echo "$message" + fi + curl -d "$message" $ntfy_uri + ''; in { networking.firewall.allowedTCPPorts = [ 6081 ]; + environment.systemPackages = [ + youtube-dl + ]; + virtualisation.oci-containers = { backend = "docker"; containers = { diff --git a/nixos/server.nix b/nixos/server.nix index 11c7b58..37be500 100644 --- a/nixos/server.nix +++ b/nixos/server.nix @@ -94,6 +94,11 @@ in { programs.fish = { enable = true; interactiveShellInit = '' + if not ${pkgs.ps}/bin/ps -fjH -u $USER | ${pkgs.gnugrep}/bin/grep ssh-agent | ${pkgs.gnugrep}/bin/grep -q "$HOME/.ssh/agent.sock" &> /dev/null + mkdir -p $HOME/.ssh + rm -f $HOME/.ssh/agent.sock &> /dev/null + eval (${pkgs.openssh}/bin/ssh-agent -t 4h -c -a "$HOME/.ssh/agent.sock") &> /dev/null || true + end ''; };