about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/plex/raw.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/plex/raw.nix')
-rw-r--r--nixpkgs/pkgs/servers/plex/raw.nix69
1 files changed, 69 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/plex/raw.nix b/nixpkgs/pkgs/servers/plex/raw.nix
new file mode 100644
index 000000000000..aa8bac28bbdc
--- /dev/null
+++ b/nixpkgs/pkgs/servers/plex/raw.nix
@@ -0,0 +1,69 @@
+{ stdenv
+, fetchurl
+, rpmextract
+}:
+
+# The raw package that fetches and extracts the Plex RPM. Override the source
+# and version of this derivation if you want to use a Plex Pass version of the
+# server, and the FHS userenv and corresponding NixOS module should
+# automatically pick up the changes.
+stdenv.mkDerivation rec {
+  version = "1.19.3.2852-219a9974e";
+  pname = "plexmediaserver";
+
+  # Fetch the source
+  src = fetchurl {
+    url = "https://downloads.plex.tv/plex-media-server-new/${version}/redhat/plexmediaserver-${version}.x86_64.rpm";
+    sha256 = "0sp7lnzf3zrwdmcg54mpvml89q1cbaq6s1cl9gj2z31xfiz07a26";
+  };
+
+  outputs = [ "out" "basedb" ];
+
+  nativeBuildInputs = [ rpmextract ];
+
+  phases = [ "unpackPhase" "installPhase" "fixupPhase" "distPhase" ];
+
+  unpackPhase = ''
+    rpmextract $src
+  '';
+
+  installPhase = ''
+    mkdir -p "$out/lib"
+    cp -dr --no-preserve='ownership' usr/lib/plexmediaserver $out/lib/
+
+    # Location of the initial Plex plugins database
+    f=$out/lib/plexmediaserver/Resources/com.plexapp.plugins.library.db
+
+    # Store the base database in the 'basedb' output
+    cat $f > $basedb
+
+    # Overwrite the base database in the Plex package with an absolute symlink
+    # to the '/db' file; we create this path in the FHS userenv (see the "plex"
+    # package).
+    ln -fs /db $f
+  '';
+
+  # We're running in a FHS userenv; don't patch anything
+  dontPatchShebangs = true;
+  dontStrip = true;
+  dontPatchELF = true;
+  dontAutoPatchelf = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://plex.tv/";
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [
+      colemickens
+      forkk
+      lnl7
+      pjones
+      thoughtpolice
+    ];
+    description = "Media library streaming server";
+    longDescription = ''
+      Plex is a media server which allows you to store your media and play it
+      back across many different devices.
+    '';
+  };
+}