commit
e7139f46cd
|
@ -16,6 +16,14 @@ in
|
||||||
description = "User account under which Jellyfin runs.";
|
description = "User account under which Jellyfin runs.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
example = literalExample "pkgs.jellyfin";
|
||||||
|
description = ''
|
||||||
|
Jellyfin package to use.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
group = mkOption {
|
group = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "jellyfin";
|
default = "jellyfin";
|
||||||
|
@ -35,11 +43,16 @@ in
|
||||||
Group = cfg.group;
|
Group = cfg.group;
|
||||||
StateDirectory = "jellyfin";
|
StateDirectory = "jellyfin";
|
||||||
CacheDirectory = "jellyfin";
|
CacheDirectory = "jellyfin";
|
||||||
ExecStart = "${pkgs.jellyfin}/bin/jellyfin --datadir '/var/lib/${StateDirectory}' --cachedir '/var/cache/${CacheDirectory}'";
|
ExecStart = "${cfg.package}/bin/jellyfin --datadir '/var/lib/${StateDirectory}' --cachedir '/var/cache/${CacheDirectory}'";
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.jellyfin.package = mkDefault (
|
||||||
|
if versionAtLeast config.system.stateVersion "20.09" then pkgs.jellyfin
|
||||||
|
else pkgs.jellyfin_10_5
|
||||||
|
);
|
||||||
|
|
||||||
users.users = mkIf (cfg.user == "jellyfin") {
|
users.users = mkIf (cfg.user == "jellyfin") {
|
||||||
jellyfin = {
|
jellyfin = {
|
||||||
group = cfg.group;
|
group = cfg.group;
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
{ stdenv, lib, fetchurl, unzip, sqlite, makeWrapper, dotnetCorePackages, ffmpeg,
|
||||||
|
fontconfig, freetype, nixosTests }:
|
||||||
|
|
||||||
|
let
|
||||||
|
os = if stdenv.isDarwin then "osx" else "linux";
|
||||||
|
arch =
|
||||||
|
with stdenv.hostPlatform;
|
||||||
|
if isx86_32 then "x86"
|
||||||
|
else if isx86_64 then "x64"
|
||||||
|
else if isAarch32 then "arm"
|
||||||
|
else if isAarch64 then "arm64"
|
||||||
|
else lib.warn "Unsupported architecture, some image processing features might be unavailable" "unknown";
|
||||||
|
musl = lib.optionalString stdenv.hostPlatform.isMusl
|
||||||
|
(if (arch != "x64")
|
||||||
|
then lib.warn "Some image processing features might be unavailable for non x86-64 with Musl" "musl-"
|
||||||
|
else "musl-");
|
||||||
|
runtimeDir = "${os}-${musl}${arch}";
|
||||||
|
|
||||||
|
in stdenv.mkDerivation rec {
|
||||||
|
pname = "jellyfin";
|
||||||
|
version = "10.5.5";
|
||||||
|
|
||||||
|
# Impossible to build anything offline with dotnet
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://github.com/jellyfin/jellyfin/releases/download/v${version}/jellyfin_${version}_portable.tar.gz";
|
||||||
|
sha256 = "1s3hva1j5w74qc9wyqnmr5clk4smzfi7wvx8qrzrwy81mx7r5w27";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
unzip
|
||||||
|
makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
dotnetCorePackages.aspnetcore_3_1
|
||||||
|
sqlite
|
||||||
|
];
|
||||||
|
|
||||||
|
preferLocalBuild = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
install -dm 755 "$out/opt/jellyfin"
|
||||||
|
cp -r * "$out/opt/jellyfin"
|
||||||
|
makeWrapper "${dotnetCorePackages.aspnetcore_3_1}/bin/dotnet" $out/bin/jellyfin \
|
||||||
|
--prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [
|
||||||
|
sqlite fontconfig freetype stdenv.cc.cc.lib
|
||||||
|
]}:$out/opt/jellyfin/runtimes/${runtimeDir}/native/" \
|
||||||
|
--add-flags "$out/opt/jellyfin/jellyfin.dll --ffmpeg ${ffmpeg}/bin/ffmpeg"
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru.tests = {
|
||||||
|
smoke-test = nixosTests.jellyfin;
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "The Free Software Media System";
|
||||||
|
homepage = "https://jellyfin.org/";
|
||||||
|
license = licenses.gpl2;
|
||||||
|
maintainers = with maintainers; [ nyanloutre minijackson ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -18,12 +18,12 @@ let
|
||||||
|
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
pname = "jellyfin";
|
pname = "jellyfin";
|
||||||
version = "10.5.5";
|
version = "10.6.2";
|
||||||
|
|
||||||
# Impossible to build anything offline with dotnet
|
# Impossible to build anything offline with dotnet
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/jellyfin/jellyfin/releases/download/v${version}/jellyfin_${version}_portable.tar.gz";
|
url = "https://repo.jellyfin.org/releases/server/portable/stable/combined/jellyfin_${version}.tar.gz";
|
||||||
sha256 = "1s3hva1j5w74qc9wyqnmr5clk4smzfi7wvx8qrzrwy81mx7r5w27";
|
sha256 = "16yib2k9adch784p6p0whgfb6lrjzwiigg1n14cp88dx64hyhxhb";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
@ -41,7 +41,6 @@ in stdenv.mkDerivation rec {
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
install -dm 755 "$out/opt/jellyfin"
|
install -dm 755 "$out/opt/jellyfin"
|
||||||
cp -r * "$out/opt/jellyfin"
|
cp -r * "$out/opt/jellyfin"
|
||||||
|
|
||||||
makeWrapper "${dotnetCorePackages.aspnetcore_3_1}/bin/dotnet" $out/bin/jellyfin \
|
makeWrapper "${dotnetCorePackages.aspnetcore_3_1}/bin/dotnet" $out/bin/jellyfin \
|
||||||
--prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [
|
--prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [
|
||||||
sqlite fontconfig freetype stdenv.cc.cc.lib
|
sqlite fontconfig freetype stdenv.cc.cc.lib
|
||||||
|
@ -55,7 +54,7 @@ in stdenv.mkDerivation rec {
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "The Free Software Media System";
|
description = "The Free Software Media System";
|
||||||
homepage = "https://jellyfin.github.io/";
|
homepage = "https://jellyfin.org/";
|
||||||
license = licenses.gpl2;
|
license = licenses.gpl2;
|
||||||
maintainers = with maintainers; [ nyanloutre minijackson ];
|
maintainers = with maintainers; [ nyanloutre minijackson ];
|
||||||
};
|
};
|
||||||
|
|
|
@ -2057,6 +2057,8 @@ in
|
||||||
|
|
||||||
jellyfin = callPackage ../servers/jellyfin { };
|
jellyfin = callPackage ../servers/jellyfin { };
|
||||||
|
|
||||||
|
jellyfin_10_5 = callPackage ../servers/jellyfin/10.5.x.nix { };
|
||||||
|
|
||||||
jellyfin-mpv-shim = python3Packages.callPackage ../applications/video/jellyfin-mpv-shim { };
|
jellyfin-mpv-shim = python3Packages.callPackage ../applications/video/jellyfin-mpv-shim { };
|
||||||
|
|
||||||
jotta-cli = callPackage ../applications/misc/jotta-cli { };
|
jotta-cli = callPackage ../applications/misc/jotta-cli { };
|
||||||
|
|
Loading…
Reference in New Issue