diff options
author | Andrew Dunham <andrew@du.nham.ca> | 2021-09-17 21:12:20 -0400 |
---|---|---|
committer | Andrew Dunham <andrew@du.nham.ca> | 2021-09-26 13:46:07 -0400 |
commit | ef9b3aea0836de44f26f8ece966d13a006fda1f0 (patch) | |
tree | 5937b177bbe6322adccce4dcf90b3b2af3b7916a /pkgs/servers/plex/default.nix | |
parent | 3d85bb08106a3d32350df2786fda62aa7fd49cd8 (diff) |
plex: add support for custom scanners
Diffstat (limited to 'pkgs/servers/plex/default.nix')
-rw-r--r-- | pkgs/servers/plex/default.nix | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/pkgs/servers/plex/default.nix b/pkgs/servers/plex/default.nix index 3d69d2197803d..fd580d52d8a08 100644 --- a/pkgs/servers/plex/default.nix +++ b/pkgs/servers/plex/default.nix @@ -63,13 +63,9 @@ buildFHSUserEnv { test -d "$pluginDir" || mkdir -p "$pluginDir" # First, remove all of the symlinks in the plugins directory. - echo "Removing old symlinks" - for f in $(ls "$pluginDir/"); do - if [[ -L "$pluginDir/$f" ]]; then - echo "Removing plugin symlink: $pluginDir/$f" - rm "$pluginDir/$f" - fi - done + while IFS= read -r -d $'\0' f; do + echo "Removing plugin symlink: $f" + done < <(find "$pluginDir" -type l -print0) echo "Symlinking plugins" IFS=':' read -ra pluginsArray <<< "$PLEX_PLUGINS" @@ -87,6 +83,39 @@ buildFHSUserEnv { done fi + if [[ -n "''${PLEX_SCANNERS:-}" ]]; then + for scannerType in Common Movies Music Series; do + echo "Preparing $scannerType scanners directory" + + scannerDir="$PLEX_DATADIR/Plex Media Server/Scanners/$scannerType" + test -d "$scannerDir" || mkdir -p "$scannerDir" + + # First, remove all of the symlinks in the scanners directory. + echo "Removing old symlinks" + while IFS= read -r -d $'\0' f; do + echo "Removing scanner symlink: $f" + done < <(find "$scannerDir" -type l -print0) + + echo "Symlinking scanners" + IFS=':' read -ra scannersArray <<< "$PLEX_SCANNERS" + for path in "''${scannersArray[@]}"; do + # The provided source should contain a 'Scanners' directory; symlink + # from inside that. + subpath="$path/Scanners/$scannerType" + while IFS= read -r -d $'\0' file; do + dest="$scannerDir/$(basename "$file")" + + if [[ -f "$dest" || -L "$dest" ]]; then + echo "Error symlinking scanner from $file to $dest: file or directory already exists" + else + echo "Symlinking scanner at: $file" + ln -s "$file" "$dest" + fi + done < <(find "$subpath" -type f -print0) + done + done + fi + # Tell Plex to use the data directory as the "Application Support" # directory, otherwise it tries to write things into the user's home # directory. |