@@ -17,7 +17,6 @@
|
||||
docker-image-grafana-image-renderer = import ./docker/grafana-image-renderer { inherit pkgs; };
|
||||
docker-image-grafana-to-ntfy = import ./docker/grafana-to-ntfy { inherit pkgs; };
|
||||
docker-image-grafana = import ./docker/grafana { inherit pkgs; };
|
||||
docker-image-jellyfin = import ./docker/jellyfin { inherit pkgs; };
|
||||
docker-image-jellyseerr = import ./docker/jellyseerr { inherit pkgs; };
|
||||
docker-image-littlelink-server = import ./docker/littlelink-server { inherit pkgs; };
|
||||
docker-image-mariadb = import ./docker/mariadb { inherit pkgs; };
|
||||
@@ -28,6 +27,7 @@
|
||||
docker-image-ntfy = import ./docker/ntfy { inherit pkgs; };
|
||||
docker-image-oidcwarden = import ./docker/oidcwarden { inherit pkgs; };
|
||||
docker-image-outline = import ./docker/outline { inherit pkgs; };
|
||||
docker-image-plex = import ./docker/plex { inherit pkgs; };
|
||||
docker-image-postgresql = import ./docker/postgresql { inherit pkgs; };
|
||||
docker-image-prometheus = import ./docker/prometheus { inherit pkgs; };
|
||||
docker-image-prometheus-fail2ban-exporter = import ./docker/prometheus-fail2ban-exporter {
|
||||
@@ -52,21 +52,6 @@
|
||||
docker-image-transmission-protonvpn = import ./docker/transmission-protonvpn { inherit pkgs; };
|
||||
docker-image-whoami = import ./docker/whoami { inherit pkgs; };
|
||||
|
||||
jellyfin-plugin-bookshelf-bin = import ./jellyfin/plugins/bookshelf { inherit pkgs; };
|
||||
jellyfin-plugin-intro-skipper-bin = import ./jellyfin/plugins/intro-skipper { inherit pkgs; };
|
||||
jellyfin-plugin-javascript-injector-bin = import ./jellyfin/plugins/javascript-injector {
|
||||
inherit pkgs;
|
||||
};
|
||||
jellyfin-plugin-opensubtitles-bin = import ./jellyfin/plugins/opensubtitles { inherit pkgs; };
|
||||
jellyfin-plugin-playbackreporting-bin = import ./jellyfin/plugins/playbackreporting {
|
||||
inherit pkgs;
|
||||
};
|
||||
jellyfin-plugin-reports-bin = import ./jellyfin/plugins/reports { inherit pkgs; };
|
||||
jellyfin-plugin-sso-bin = import ./jellyfin/plugins/sso { inherit pkgs; };
|
||||
jellyfin-plugin-subtitleextract-bin = import ./jellyfin/plugins/subtitleextract { inherit pkgs; };
|
||||
jellyfin-plugin-tmdbboxsets-bin = import ./jellyfin/plugins/tmdbboxsets { inherit pkgs; };
|
||||
jellyfin-plugin-tvdb-bin = import ./jellyfin/plugins/tvdb { inherit pkgs; };
|
||||
|
||||
littlelink-server = import ./littlelink-server { inherit pkgs; };
|
||||
|
||||
obsidian-plugin-better-word-count = import ./obsidian/plugins/better-word-count { inherit pkgs; };
|
||||
|
@@ -4,7 +4,7 @@ set -o errexit
|
||||
set -o nounset
|
||||
|
||||
atticd "$@" &
|
||||
PID=$!
|
||||
PID="$!"
|
||||
|
||||
if [ -f /etc/attic/post-start.sh ]; then
|
||||
# shellcheck disable=SC1091
|
||||
|
@@ -1,77 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
jellyfin = pkgs.jellyfin.overrideAttrs (_: {
|
||||
makeWrapperArgs = [
|
||||
"--add-flags"
|
||||
"--ffmpeg=${pkgs.jellyfin-ffmpeg}/bin/ffmpeg"
|
||||
];
|
||||
});
|
||||
|
||||
jellyfin-web = pkgs.runCommandLocal "jellyfin-web" { } ''
|
||||
mkdir -p $out/var/www
|
||||
cp -r ${pkgs.jellyfin-web}/share/jellyfin-web $out/var/www/jellyfin
|
||||
'';
|
||||
|
||||
entrypoint = pkgs.writeTextFile {
|
||||
name = "entrypoint";
|
||||
executable = true;
|
||||
destination = "/bin/entrypoint";
|
||||
text = builtins.readFile ./entrypoint.sh;
|
||||
};
|
||||
in
|
||||
pkgs.dockerTools.buildImage {
|
||||
name = "jellyfin";
|
||||
fromImage = pkgs.docker-image-base;
|
||||
|
||||
copyToRoot = pkgs.buildEnv {
|
||||
name = "root";
|
||||
paths =
|
||||
with pkgs;
|
||||
[
|
||||
entrypoint
|
||||
jellyfin
|
||||
jellyfin-web
|
||||
jellyfin-ffmpeg
|
||||
curl
|
||||
jq
|
||||
]
|
||||
++ (with jellyfinPlugins; [
|
||||
bookshelf
|
||||
intro-skipper
|
||||
javascript-injector
|
||||
opensubtitles
|
||||
playbackreporting
|
||||
reports
|
||||
sso
|
||||
subtitleextract
|
||||
tmdbboxsets
|
||||
tvdb
|
||||
]);
|
||||
pathsToLink = [
|
||||
"/bin"
|
||||
"/lib"
|
||||
"/var"
|
||||
];
|
||||
};
|
||||
|
||||
config = {
|
||||
Entrypoint = [ "entrypoint" ];
|
||||
ExposedPorts = {
|
||||
"8096/tcp" = { };
|
||||
};
|
||||
WorkingDir = "/var/lib/jellyfin";
|
||||
Volumes = {
|
||||
"/etc/jellyfin" = { };
|
||||
"/var/lib/jellyfin/data" = { };
|
||||
"/var/lib/jellyfin/metadata" = { };
|
||||
"/var/lib/jellyfin/root" = { };
|
||||
"/var/log/jellyfin" = { };
|
||||
"/tmp/jellyfin" = { };
|
||||
};
|
||||
Env = [
|
||||
# FIXME: https://github.com/NixOS/nixpkgs/issues/176081
|
||||
"FONTCONFIG_FILE=${pkgs.fontconfig.out}/etc/fonts/fonts.conf"
|
||||
"FONTCONFIG_PATH=${pkgs.fontconfig.out}/etc/fonts/"
|
||||
];
|
||||
};
|
||||
}
|
@@ -1,31 +0,0 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
|
||||
start() {
|
||||
jellyfin \
|
||||
-w /var/www/jellyfin \
|
||||
-c /etc/jellyfin \
|
||||
-d /var/lib/jellyfin \
|
||||
-l /var/log/jellyfin \
|
||||
-C /tmp/jellyfin \
|
||||
"$@" &
|
||||
|
||||
PID=$!
|
||||
}
|
||||
|
||||
start "$@"
|
||||
|
||||
if [ -f /etc/jellyfin/setup.sh ]; then
|
||||
# shellcheck disable=SC1091
|
||||
. /etc/jellyfin/setup.sh
|
||||
|
||||
kill "$PID"
|
||||
wait "$PID" 2>/dev/null || true
|
||||
start "$@"
|
||||
fi
|
||||
|
||||
trap 'kill -INT "$PID"' INT TERM
|
||||
wait "$PID"
|
||||
exit $?
|
@@ -34,6 +34,6 @@ fi
|
||||
|
||||
trap 'kill -QUIT "$PID"' INT TERM
|
||||
mariadbd --user=root --datadir="$DATADIR" "$@" &
|
||||
PID=$!
|
||||
PID="$!"
|
||||
wait "$PID"
|
||||
exit $?
|
||||
|
@@ -34,6 +34,6 @@ fi
|
||||
|
||||
trap 'kill -QUIT "$PID"' INT TERM
|
||||
mysqld --user=root --datadir="$DATADIR" "$@" &
|
||||
PID=$!
|
||||
PID="$!"
|
||||
wait "$PID"
|
||||
exit $?
|
||||
|
47
packages/docker/plex/default.nix
Normal file
47
packages/docker/plex/default.nix
Normal file
@@ -0,0 +1,47 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
entrypoint = pkgs.writeTextFile {
|
||||
name = "entrypoint";
|
||||
executable = true;
|
||||
destination = "/bin/entrypoint";
|
||||
text = builtins.readFile ./entrypoint.sh;
|
||||
};
|
||||
in
|
||||
pkgs.dockerTools.buildImage {
|
||||
name = "plex";
|
||||
fromImage = pkgs.docker-image-base;
|
||||
|
||||
copyToRoot = pkgs.buildEnv {
|
||||
name = "root";
|
||||
paths = with pkgs; [
|
||||
entrypoint
|
||||
util-linux
|
||||
plex
|
||||
xmlstarlet
|
||||
curl
|
||||
jq
|
||||
sqlite
|
||||
];
|
||||
pathsToLink = [
|
||||
"/bin"
|
||||
"/lib"
|
||||
"/var"
|
||||
"/usr"
|
||||
];
|
||||
};
|
||||
|
||||
config = {
|
||||
Entrypoint = [ "entrypoint" ];
|
||||
ExposedPorts = {
|
||||
"32400/tcp" = { };
|
||||
};
|
||||
WorkingDir = "/var/lib/plex";
|
||||
Volumes = {
|
||||
"/var/lib/plex" = { };
|
||||
};
|
||||
Env = [
|
||||
"LD_LIBRARY_PATH=/run/opengl-driver/lib"
|
||||
"PLEX_DATADIR=/var/lib/plex"
|
||||
];
|
||||
};
|
||||
}
|
59
packages/docker/plex/entrypoint.sh
Normal file
59
packages/docker/plex/entrypoint.sh
Normal file
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
|
||||
PREFERENCES="/var/lib/plex/Plex Media Server/Preferences.xml"
|
||||
TEMPLATE_PREFERENCES="/etc/plex/Preferences.xml"
|
||||
|
||||
getPref() {
|
||||
xmlstarlet sel -t -v "/Preferences/@$1" "$PREFERENCES" 2>/dev/null || true
|
||||
}
|
||||
|
||||
setPref() {
|
||||
name="$1"
|
||||
value="$2"
|
||||
|
||||
xmlstarlet ed --inplace \
|
||||
-d "/Preferences/@${name}" \
|
||||
-i "/Preferences" -t attr -n "${name}" -v "${value}" \
|
||||
"$PREFERENCES"
|
||||
}
|
||||
|
||||
mkdir -p "$(dirname "$PREFERENCES")"
|
||||
if [ ! -f "$PREFERENCES" ]; then
|
||||
echo '<?xml version="1.0" encoding="utf-8"?><Preferences/>' > "$PREFERENCES"
|
||||
fi
|
||||
|
||||
if [ -f "$TEMPLATE_PREFERENCES" ]; then
|
||||
ATTRS="$(xmlstarlet sel -t -m "/Preferences/@*" -v "concat(name(),'=',.)" -n "$TEMPLATE_PREFERENCES")"
|
||||
|
||||
if [ -n "$ATTRS" ]; then
|
||||
set --
|
||||
|
||||
while IFS='=' read -r name value; do
|
||||
[ -z "$name" ] && continue
|
||||
set -- "$@" -d "/Preferences/@${name}"
|
||||
set -- "$@" -i "/Preferences" -t attr -n "${name}" -v "${value}"
|
||||
done <<EOF
|
||||
$ATTRS
|
||||
EOF
|
||||
|
||||
if [ "$#" -gt 0 ]; then
|
||||
xmlstarlet ed --inplace "$@" "$PREFERENCES"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
rm -f "/var/lib/plex/Plex Media Server/plexmediaserver.pid"
|
||||
plexmediaserver &
|
||||
PID="$!"
|
||||
|
||||
if [ -f /etc/plex/post-start.sh ]; then
|
||||
# shellcheck disable=SC1091
|
||||
. /etc/plex/post-start.sh
|
||||
fi
|
||||
|
||||
trap 'kill -QUIT "$PID"' INT TERM
|
||||
wait "$PID"
|
||||
exit $?
|
@@ -32,7 +32,7 @@ set_config_value "InstanceName" "${INSTANCE_NAME:-Prowlarr}"
|
||||
set_config_value "AnalyticsEnabled" "False"
|
||||
|
||||
Prowlarr -data=/var/lib/prowlarr -nobrowser "$@" &
|
||||
PID=$!
|
||||
PID="$!"
|
||||
|
||||
if [ -f /etc/prowlarr/post-start.sh ]; then
|
||||
# shellcheck disable=SC1091
|
||||
|
@@ -32,7 +32,7 @@ set_config_value "InstanceName" "${INSTANCE_NAME:-Radarr}"
|
||||
set_config_value "AnalyticsEnabled" "False"
|
||||
|
||||
Radarr -data=/var/lib/radarr -nobrowser "$@" &
|
||||
PID=$!
|
||||
PID="$!"
|
||||
|
||||
if [ -f /etc/radarr/post-start.sh ]; then
|
||||
# shellcheck disable=SC1091
|
||||
|
@@ -32,7 +32,7 @@ set_config_value "InstanceName" "${INSTANCE_NAME:-Sonarr}"
|
||||
set_config_value "AnalyticsEnabled" "False"
|
||||
|
||||
Sonarr -data=/var/lib/sonarr -nobrowser "$@" &
|
||||
PID=$!
|
||||
PID="$!"
|
||||
|
||||
if [ -f /etc/sonarr/post-start.sh ]; then
|
||||
# shellcheck disable=SC1091
|
||||
|
@@ -68,7 +68,7 @@ transmission-daemon -f \
|
||||
--bind-address-ipv4 "$BIND_IP" \
|
||||
--bind-address-ipv6 "::1" \
|
||||
"$@" > "$PIPE" 2>&1 &
|
||||
PID=$!
|
||||
PID="$!"
|
||||
|
||||
CAT_PIPE=$(mktemp -u)
|
||||
GREP_PIPE=$(mktemp -u)
|
||||
@@ -108,7 +108,7 @@ rpc_url="http://127.0.0.1:9091${rpc_path}rpc/"
|
||||
sleep 45
|
||||
done
|
||||
) &
|
||||
NATPMP_PID=$!
|
||||
NATPMP_PID="$!"
|
||||
|
||||
# shellcheck disable=SC2317
|
||||
cleanup() {
|
||||
|
@@ -1,17 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
# AUTO-UPDATE: nix-update --flake jellyfin-plugin-bookshelf-bin
|
||||
pkgs.stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "bookshelf";
|
||||
version = "12";
|
||||
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/jellyfin/jellyfin-plugin-bookshelf/releases/download/v${finalAttrs.version}/bookshelf_${finalAttrs.version}.0.0.0.zip";
|
||||
sha256 = "sha256-P85SLXaJuFIv9AmAE6mPbxZDMBhqEt+88dZiPUKu2iQ=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r $src $out/var/lib/jellyfin/plugins/bookshelf
|
||||
'';
|
||||
})
|
@@ -1,22 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
# AUTO-UPDATE: nix-update --flake jellyfin-plugin-intro-skipper-bin
|
||||
pkgs.stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "intro-skipper";
|
||||
version = "10.10/v1.10.10.23";
|
||||
|
||||
src =
|
||||
let
|
||||
parts = pkgs.lib.strings.splitString "/" finalAttrs.version;
|
||||
full = builtins.elemAt parts 1;
|
||||
in
|
||||
pkgs.fetchzip {
|
||||
url = "https://github.com/intro-skipper/intro-skipper/releases/download/${finalAttrs.version}/intro-skipper-${full}.zip";
|
||||
sha256 = "sha256-r+syY/AlErws1xVkkiWm51aI+QxtefdLDc/sWC7oVo8=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r $src $out/var/lib/jellyfin/plugins/intro-skipper
|
||||
'';
|
||||
})
|
@@ -1,17 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
# AUTO-UPDATE: nix-update --flake jellyfin-plugin-javascript-injector-bin
|
||||
pkgs.stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "javascript-injector";
|
||||
version = "2.0.0.0";
|
||||
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/n00bcodr/Jellyfin-JavaScript-Injector/releases/download/${finalAttrs.version}/javascript-injector-${finalAttrs.version}.zip";
|
||||
sha256 = "sha256-BzT4Hk4ulHsnkV9eKyy2oK6su98Am0x6rydfjAY/AWY=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r $src $out/var/lib/jellyfin/plugins/javascript-injector
|
||||
'';
|
||||
})
|
@@ -1,17 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
# AUTO-UPDATE: nix-update --flake jellyfin-plugin-opensubtitles-bin
|
||||
pkgs.stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "opensubtitles";
|
||||
version = "20";
|
||||
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/jellyfin/jellyfin-plugin-opensubtitles/releases/download/v${finalAttrs.version}/open-subtitles_${finalAttrs.version}.0.0.0.zip";
|
||||
sha256 = "sha256-U17wQn32GB4nh05ExYJhzRw4nDvYOCB4EJtDoaaUnjI=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r $src $out/var/lib/jellyfin/plugins/opensubtitles
|
||||
'';
|
||||
})
|
@@ -1,17 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
# AUTO-UPDATE: nix-update --flake jellyfin-plugin-playbackreporting-bin
|
||||
pkgs.stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "playbackreporting";
|
||||
version = "16";
|
||||
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/jellyfin/jellyfin-plugin-playbackreporting/releases/download/v${finalAttrs.version}/playback-reporting_${finalAttrs.version}.0.0.0.zip";
|
||||
sha256 = "sha256-UrWxS0CpeeW4nYNyRNxnK0jqiAqXwfLv3YfFokfVH0A=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r $src $out/var/lib/jellyfin/plugins/playbackreporting
|
||||
'';
|
||||
})
|
@@ -1,17 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
# AUTO-UPDATE: nix-update --flake jellyfin-plugin-reports-bin
|
||||
pkgs.stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "reports";
|
||||
version = "17";
|
||||
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/jellyfin/jellyfin-plugin-reports/releases/download/v${finalAttrs.version}/reports_${finalAttrs.version}.0.0.0.zip";
|
||||
sha256 = "sha256-kN1UDhx5/1sw3PO5co2YkfbZNiDj56F2YAT8S/0EdZM=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r $src $out/var/lib/jellyfin/plugins/reports
|
||||
'';
|
||||
})
|
@@ -1,17 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
# AUTO-UPDATE: nix-update --flake jellyfin-plugin-sso-bin
|
||||
pkgs.stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "sso";
|
||||
version = "3.5.2.4";
|
||||
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/9p4/jellyfin-plugin-sso/releases/download/v${finalAttrs.version}/sso-authentication_${finalAttrs.version}.zip";
|
||||
sha256 = "sha256-e+w5m6/7vRAynStDj34eBexfCIEgDJ09huHzi5gQEbo=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r $src $out/var/lib/jellyfin/plugins/sso
|
||||
'';
|
||||
})
|
@@ -1,17 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
# AUTO-UPDATE: nix-update --flake jellyfin-plugin-subtitleextract-bin
|
||||
pkgs.stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "subtitleextract";
|
||||
version = "4";
|
||||
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/jellyfin/jellyfin-plugin-subtitleextract/releases/download/v${finalAttrs.version}/subtitle-extract_${finalAttrs.version}.0.0.0.zip";
|
||||
sha256 = "sha256-FstPWUYsZg416DNshIV4yOvbg6U21cRxKse8hITUyBY=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r $src $out/var/lib/jellyfin/plugins/subtitleextract
|
||||
'';
|
||||
})
|
@@ -1,17 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
# AUTO-UPDATE: nix-update --flake jellyfin-plugin-tmdbboxsets-bin
|
||||
pkgs.stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "tmdbboxsets";
|
||||
version = "11";
|
||||
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/jellyfin/jellyfin-plugin-tmdbboxsets/releases/download/v${finalAttrs.version}/tmdb-box-sets_${finalAttrs.version}.0.0.0.zip";
|
||||
sha256 = "sha256-cO3hpjFacS62kdXn8ebS7oMtFT9LJAt8Q4b36aSxwCQ=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r $src $out/var/lib/jellyfin/plugins/tmdbboxsets
|
||||
'';
|
||||
})
|
@@ -1,17 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
# AUTO-UPDATE: nix-update --flake jellyfin-plugin-tvdb-bin
|
||||
pkgs.stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "tvdb";
|
||||
version = "19";
|
||||
|
||||
src = pkgs.fetchzip {
|
||||
url = "https://github.com/jellyfin/jellyfin-plugin-tvdb/releases/download/v${finalAttrs.version}/thetvdb_${finalAttrs.version}.0.0.0.zip";
|
||||
sha256 = "sha256-011wpVwQy562XDAwAQ44GJTbu/ESHcyo5F/wrtNBAcs=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/var/lib/jellyfin/plugins
|
||||
cp -r $src $out/var/lib/jellyfin/plugins/tvdb
|
||||
'';
|
||||
})
|
Reference in New Issue
Block a user