about summary refs log tree commit diff
path: root/pkgs/servers/plex/default.nix
diff options
context:
space:
mode:
authorAndrew Dunham <andrew@du.nham.ca>2021-09-17 21:12:20 -0400
committerAndrew Dunham <andrew@du.nham.ca>2021-09-26 13:46:07 -0400
commitef9b3aea0836de44f26f8ece966d13a006fda1f0 (patch)
tree5937b177bbe6322adccce4dcf90b3b2af3b7916a /pkgs/servers/plex/default.nix
parent3d85bb08106a3d32350df2786fda62aa7fd49cd8 (diff)
plex: add support for custom scanners
Diffstat (limited to 'pkgs/servers/plex/default.nix')
-rw-r--r--pkgs/servers/plex/default.nix43
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.