summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorPeter Jones <pjones@devalot.com>2017-04-14 11:19:29 -0700
committerPeter Jones <pjones@devalot.com>2017-04-14 11:19:29 -0700
commit5a50b266624bceee5243c6eadf86d958768bfa6c (patch)
tree931f51f630edefe56564341ae9a07a3eb3645231 /nixos
parent3ed0d7e2dfd5c197a29c3142f69eaa48d71cade9 (diff)
downloadnixpkgs-5a50b266624bceee5243c6eadf86d958768bfa6c.tar
nixpkgs-5a50b266624bceee5243c6eadf86d958768bfa6c.tar.gz
nixpkgs-5a50b266624bceee5243c6eadf86d958768bfa6c.tar.bz2
nixpkgs-5a50b266624bceee5243c6eadf86d958768bfa6c.tar.lz
nixpkgs-5a50b266624bceee5243c6eadf86d958768bfa6c.tar.xz
nixpkgs-5a50b266624bceee5243c6eadf86d958768bfa6c.tar.zst
nixpkgs-5a50b266624bceee5243c6eadf86d958768bfa6c.zip
plex: Don't overwrite primary database on restart
This change fixes two major issues:

  1. If you don't use SIGQUIT to stop Plex it will corrupt its own
     database :(

  2. Newer versions of Plex keep metadata in the
     `com.plexapp.plugins.library.db` database.  This is the file that
     we copy into `/var/lib/plex/.skeleton`.  If we copy the empty
     database on top of this one the user will lose their entire
     library metadata.  This change skips the copy if the file
     already exists.
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/services/misc/plex.nix5
1 files changed, 4 insertions, 1 deletions
diff --git a/nixos/modules/services/misc/plex.nix b/nixos/modules/services/misc/plex.nix
index f6bf2dee986..9c0bea8d3bf 100644
--- a/nixos/modules/services/misc/plex.nix
+++ b/nixos/modules/services/misc/plex.nix
@@ -93,7 +93,9 @@ in
         # why this is done.
         test -d "${cfg.dataDir}/.skeleton" || mkdir "${cfg.dataDir}/.skeleton"
         for db in "com.plexapp.plugins.library.db"; do
-            cp "${cfg.package}/usr/lib/plexmediaserver/Resources/base_$db" "${cfg.dataDir}/.skeleton/$db"
+            if [ ! -e  "${cfg.dataDir}/.skeleton/$db" ]; then
+              cp "${cfg.package}/usr/lib/plexmediaserver/Resources/base_$db" "${cfg.dataDir}/.skeleton/$db"
+            fi
             chmod u+w "${cfg.dataDir}/.skeleton/$db"
             chown ${cfg.user}:${cfg.group} "${cfg.dataDir}/.skeleton/$db"
         done
@@ -136,6 +138,7 @@ in
         Group = cfg.group;
         PermissionsStartOnly = "true";
         ExecStart = "/bin/sh -c ${cfg.package}/usr/lib/plexmediaserver/Plex\\ Media\\ Server";
+        KillSignal = "SIGQUIT";
         Restart = "on-failure";
       };
       environment = {