nixpkgs/pkgs/by-name/di/dim/package.nix
2024-02-17 14:53:40 -03:00

101 lines
2.3 KiB
Nix

{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
buildNpmPackage,
makeWrapper,
ffmpeg_5,
git,
pkg-config,
sqlite,
libvaSupport ? stdenv.hostPlatform.isLinux,
libva,
}:
rustPlatform.buildRustPackage rec {
pname = "dim";
version = "0-unstable-2023-12-29";
src = fetchFromGitHub {
owner = "Dusk-Labs";
repo = "dim";
rev = "3ccb4ab05fc1d7dbd4ebbba9ff2de0ecc9139b27";
hash = "sha256-1mgbrDnIkIdWy78uj4EjjgwBQxw/rIS1LCFNscXXPbk=";
};
frontend = buildNpmPackage {
pname = "dim-ui";
inherit version;
src = "${src}/ui";
postPatch = ''
ln -s ${./package-lock.json} package-lock.json
'';
npmDepsHash = "sha256-6oSm3H6RItHOrBIvP6uvR7sBboBRWFuP3VwU38GMfgQ=";
installPhase = ''
runHook preInstall
cp -r build $out
runHook postInstall
'';
};
patches = [
# Upstream uses a 'ffpath' function to look for config directory and
# (ffmpeg) binaries in the same directory as the binary. Patch it to use
# the working dir and PATH instead.
./relative-paths.diff
];
postConfigure = ''
ln -ns $frontend ui/build
'';
nativeBuildInputs = [
makeWrapper
pkg-config
git
];
buildInputs = [
sqlite
] ++ lib.optional libvaSupport libva;
buildFeatures = lib.optional libvaSupport "vaapi";
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"mp4-0.8.2" = "sha256-OtVRtOTU/yoxxoRukpUghpfiEgkKoJZNflMQ3L26Cno=";
"nightfall-0.3.12-rc4" = "sha256-DtSXdIDg7XBgzEYzHdzjrHdM1ESKTQdgByeerH5TWwU=";
};
};
checkFlags = [
# Requires network
"--skip=tmdb::tests::johhny_test_seasons"
"--skip=tmdb::tests::once_upon_get_year"
"--skip=tmdb::tests::tmdb_get_cast"
"--skip=tmdb::tests::tmdb_get_details"
"--skip=tmdb::tests::tmdb_get_episodes"
"--skip=tmdb::tests::tmdb_get_seasons"
"--skip=tmdb::tests::tmdb_search"
# Broken doctest
"--skip=dim-utils/src/lib.rs"
];
postInstall = ''
wrapProgram $out/bin/dim \
--prefix PATH : ${lib.makeBinPath [ffmpeg_5]}
'';
meta = {
homepage = "https://github.com/Dusk-Labs/dim";
description = "Self-hosted media manager";
license = lib.licenses.agpl3Only;
mainProgram = "dim";
maintainers = [ lib.maintainers.misterio77 ];
platforms = lib.platforms.unix;
};
}