ripasso-cursive: cosmetic changes (#361736)
[NixPkgs.git] / pkgs / by-name / fi / filebot / package.nix
blob196ec06c860650d3658173335ba1e568a8516ab5
2   lib,
3   stdenv,
4   fetchurl,
5   coreutils,
6   openjdk17,
7   makeWrapper,
8   autoPatchelfHook,
9   zlib,
10   libzen,
11   libmediainfo,
12   curlWithGnuTls,
13   libmms,
14   glib,
15   genericUpdater,
16   writeShellScript,
19 let
20   lanterna = fetchurl {
21     url = "https://search.maven.org/remotecontent?filepath=com/googlecode/lanterna/lanterna/3.1.1/lanterna-3.1.1.jar";
22     hash = "sha256-7zxCeXYW5v9ritnvkwRpPKdgSptCmkT3HJOaNgQHUmQ=";
23   };
25 stdenv.mkDerivation (finalAttrs: {
26   pname = "filebot";
27   version = "5.1.5";
29   src = fetchurl {
30     url = "https://web.archive.org/web/20230917142929/https://get.filebot.net/filebot/FileBot_${finalAttrs.version}/FileBot_${finalAttrs.version}-portable.tar.xz";
31     hash = "sha256-fwyo9J5O728xxWHWvq63bTJMV4IAMAHZR0yr3Pb6d7U=";
32   };
34   unpackPhase = "tar xvf $src";
36   nativeBuildInputs = [
37     makeWrapper
38     autoPatchelfHook
39   ];
41   buildInputs = [
42     zlib
43     libzen
44     libmediainfo
45     curlWithGnuTls
46     libmms
47     glib
48   ];
50   postPatch = ''
51     # replace lanterna.jar to be able to specify `com.googlecode.lanterna.terminal.UnixTerminal.sttyCommand`
52     cp ${lanterna} jar/lanterna.jar
53   '';
55   dontBuild = true;
56   installPhase = ''
57     mkdir -p $out/opt $out/bin
58     # Since FileBot has dependencies on relative paths between files, all required files are copied to the same location as is.
59     cp -r filebot.sh lib/ jar/ $out/opt/
60     # Filebot writes to $APP_DATA, which fails due to read-only filesystem. Using current user .local directory instead.
61     substituteInPlace $out/opt/filebot.sh \
62       --replace 'APP_DATA="$FILEBOT_HOME/data/$(id -u)"' 'APP_DATA=''${XDG_DATA_HOME:-$HOME/.local/share}/filebot/data' \
63       --replace '$FILEBOT_HOME/data/.license' '$APP_DATA/.license' \
64       --replace '-jar "$FILEBOT_HOME/jar/filebot.jar"' '-Dcom.googlecode.lanterna.terminal.UnixTerminal.sttyCommand=${coreutils}/bin/stty -jar "$FILEBOT_HOME/jar/filebot.jar"'
65     wrapProgram $out/opt/filebot.sh \
66       --prefix PATH : ${lib.makeBinPath [ openjdk17 ]}
67     # Expose the binary in bin to make runnable.
68     ln -s $out/opt/filebot.sh $out/bin/filebot
69   '';
71   passthru.updateScript = genericUpdater {
72     versionLister = writeShellScript "filebot-versionLister" ''
73       curl -s https://www.filebot.net \
74         | sed -rne 's,^.*FileBot_([0-9]*\.[0-9]+\.[0-9]+)-portable.tar.xz.*,\1,p'
75     '';
76   };
78   meta = with lib; {
79     description = "Ultimate TV and Movie Renamer";
80     longDescription = ''
81       FileBot is the ultimate tool for organizing and renaming your Movies, TV
82       Shows and Anime as well as fetching subtitles and artwork. It's smart and
83       just works.
84     '';
85     homepage = "https://filebot.net";
86     changelog = "https://www.filebot.net/forums/viewforum.php?f=7";
87     sourceProvenance = with sourceTypes; [
88       binaryBytecode
89       binaryNativeCode
90     ];
91     license = licenses.unfreeRedistributable;
92     maintainers = with maintainers; [
93       gleber
94       felschr
95     ];
96     platforms = platforms.linux;
97     mainProgram = "filebot";
98   };