From 453cde2a4b339f8ffc3ab80aedcaee872c9eea2c Mon Sep 17 00:00:00 2001 From: Nikolaos Karaolidis Date: Wed, 16 Jul 2025 16:11:26 +0100 Subject: [PATCH] Add jellyfin opensubtitles Signed-off-by: Nikolaos Karaolidis --- .../console/podman/media/jellyfin/default.nix | 10 +++++++++- .../console/podman/media/jellyfin/setup.sh | 12 ++++++++++++ packages/default.nix | 1 + packages/docker/jellyfin/default.nix | 10 +++++++++- .../jellyfin/plugins/opensubtitles/default.nix | 16 ++++++++++++++++ 5 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 packages/jellyfin/plugins/opensubtitles/default.nix diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/default.nix b/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/default.nix index 101c431..707df2b 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/default.nix +++ b/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/default.nix @@ -20,12 +20,16 @@ in "jellyfin/admin".sopsFile = ../../../../../../../secrets/secrets.yaml; "jellyfin/authelia/password".sopsFile = ../../../../../../../secrets/secrets.yaml; "jellyfin/authelia/digest".sopsFile = ../../../../../../../secrets/secrets.yaml; + "opensubtitles/username".sopsFile = ../../../../../../../../../secrets/personal/secrets.yaml; + "opensubtitles/password".sopsFile = ../../../../../../../../../secrets/personal/secrets.yaml; }; templates = { jellyfin-env.content = '' JELLYFIN_ADMIN_PASSWORD=${hmConfig.sops.placeholder."jellyfin/admin"} JELLYFIN_OIDC_SECRET=${hmConfig.sops.placeholder."jellyfin/authelia/password"} + OPENSUBTITLES_USERNAME=${hmConfig.sops.placeholder."opensubtitles/username"} + OPENSUBTITLES_PASSWORD=${hmConfig.sops.placeholder."opensubtitles/password"} ''; authelia-jellyfin.content = builtins.readFile ( @@ -70,6 +74,8 @@ in volumes = { jellyfin-config = { }; jellyfin-data = { }; + jellyfin-metadata = { }; + jellyfin-root = { }; jellyfin-log = { }; jellyfin-cache = { }; }; @@ -95,7 +101,9 @@ in "${setup}:/etc/jellyfin/setup.sh:ro" "${./libraries}:/etc/jellyfin/libraries:ro" "${volumes.jellyfin-config.ref}:/etc/jellyfin" - "${volumes.jellyfin-data.ref}:/var/lib/jellyfin" + "${volumes.jellyfin-data.ref}:/var/lib/jellyfin/data" + "${volumes.jellyfin-metadata.ref}:/var/lib/jellyfin/metadata" + "${volumes.jellyfin-root.ref}:/var/lib/jellyfin/root" "${volumes.jellyfin-log.ref}:/var/log/jellyfin" "${volumes.jellyfin-cache.ref}:/tmp/jellyfin" ]; diff --git a/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/setup.sh b/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/setup.sh index ec0c249..9bf575f 100644 --- a/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/setup.sh +++ b/hosts/jupiter/users/storm/configs/console/podman/media/jellyfin/setup.sh @@ -77,6 +77,18 @@ curl -sf "$JELLYFIN_HOST/Plugins/c83d86bb-a1e0-4c35-a113-e2101cf4ee6b/Configurat -H 'Authorization: MediaBrowser Token="'"$token"'"' \ --data-binary @- +curl -sf "$JELLYFIN_HOST/Plugins/4b9ed42f-5185-48b5-9803-6ff2989014c4/Configuration" \ + -H 'Authorization: MediaBrowser Token="'"$token"'"' \ + | jq --arg username "$OPENSUBTITLES_USERNAME" \ + --arg password "$OPENSUBTITLES_PASSWORD" \ + '.Username = $username + | .Password = $password' \ + | curl -sf "$JELLYFIN_HOST/Plugins/4b9ed42f-5185-48b5-9803-6ff2989014c4/Configuration" \ + -X POST \ + -H 'Content-Type: application/json' \ + -H 'Authorization: MediaBrowser Token="'"$token"'"' \ + --data-binary @- + curl -sf "$JELLYFIN_HOST/Plugins/b8715ed1-6c47-4528-9ad3-f72deb539cd4/Configuration" \ -H 'Authorization: MediaBrowser Token="'"$token"'"' \ | jq '.IncludeAdult = true' \ diff --git a/packages/default.nix b/packages/default.nix index 41443af..2f994f8 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -49,6 +49,7 @@ jellyfin-plugin-bookshelf = import ./jellyfin/plugins/bookshelf { inherit pkgs; }; jellyfin-plugin-intro-skipper = import ./jellyfin/plugins/intro-skipper { inherit pkgs; }; + jellyfin-plugin-opensubtitles = import ./jellyfin/plugins/opensubtitles { inherit pkgs; }; jellyfin-plugin-playbackreporting = import ./jellyfin/plugins/playbackreporting { inherit pkgs; }; jellyfin-plugin-reports = import ./jellyfin/plugins/reports { inherit pkgs; }; jellyfin-plugin-sso = import ./jellyfin/plugins/sso { inherit pkgs; }; diff --git a/packages/docker/jellyfin/default.nix b/packages/docker/jellyfin/default.nix index 1e47908..cd9e00b 100644 --- a/packages/docker/jellyfin/default.nix +++ b/packages/docker/jellyfin/default.nix @@ -29,6 +29,11 @@ let cp -r ${selfPkgs.jellyfin-plugin-intro-skipper} $out/var/lib/jellyfin/plugins/intro-skipper ''; + jellyfin-plugin-opensubtitles = pkgs.runCommandLocal "jellyfin-plugin-opensubtitles" { } '' + mkdir -p $out/var/lib/jellyfin/plugins + cp -r ${selfPkgs.jellyfin-plugin-opensubtitles} $out/var/lib/jellyfin/plugins/opensubtitles + ''; + jellyfin-plugin-playbackreporting = pkgs.runCommandLocal "jellyfin-plugin-playbackreporting" { } '' mkdir -p $out/var/lib/jellyfin/plugins cp -r ${selfPkgs.jellyfin-plugin-playbackreporting} $out/var/lib/jellyfin/plugins/playbackreporting @@ -73,6 +78,7 @@ pkgs.dockerTools.buildImage { jellyfin-web jellyfin-plugin-bookshelf jellyfin-plugin-intro-skipper + jellyfin-plugin-opensubtitles jellyfin-plugin-playbackreporting jellyfin-plugin-reports jellyfin-plugin-sso @@ -97,7 +103,9 @@ pkgs.dockerTools.buildImage { WorkingDir = "/var/lib/jellyfin"; Volumes = { "/etc/jellyfin" = { }; - "/var/lib/jellyfin" = { }; + "/var/lib/jellyfin/data" = { }; + "/var/lib/jellyfin/metadata" = { }; + "/var/lib/jellyfin/root" = { }; "/var/log/jellyfin" = { }; "/tmp/jellyfin" = { }; }; diff --git a/packages/jellyfin/plugins/opensubtitles/default.nix b/packages/jellyfin/plugins/opensubtitles/default.nix new file mode 100644 index 0000000..a22c7a4 --- /dev/null +++ b/packages/jellyfin/plugins/opensubtitles/default.nix @@ -0,0 +1,16 @@ +{ pkgs, ... }: +# AUTO-UPDATE: nix-update --flake jellyfin-plugin-opensubtitles +pkgs.stdenv.mkDerivation rec { + pname = "opensubtitles"; + version = "20"; + + src = pkgs.fetchzip { + url = "https://github.com/jellyfin/jellyfin-plugin-opensubtitles/releases/download/v${version}/open-subtitles_${version}.0.0.0.zip"; + sha256 = "sha256-U17wQn32GB4nh05ExYJhzRw4nDvYOCB4EJtDoaaUnjI="; + stripRoot = false; + }; + + installPhase = '' + cp -r $src $out + ''; +}