main
 1{
 2  lib,
 3  stdenv,
 4  appimageTools,
 5  fetchurl,
 6}: let
 7  pname = "navibeat";
 8  version = "1.0.40";
 9
10  src =
11    if stdenv.hostPlatform.isAarch64
12    then
13      fetchurl {
14        url = "https://github.com/nenadjokic/navibeat-linux/releases/download/v${version}/NaviBeat-linux-aarch64-slim.AppImage";
15        hash = "sha256-4po/F7CCXNntPXMb3o5gLo0hHNPfoM9HXDMguBijxjk=";
16      }
17    else
18      fetchurl {
19        url = "https://github.com/nenadjokic/navibeat-linux/releases/download/v${version}/NaviBeat-linux-x86_64-slim.AppImage";
20        hash = "sha256-BiTFWxK/RfdkJeqZiHjzdH6/FLcDVxnvh05w/2PAto8=";
21      };
22
23  appimageContents = appimageTools.extract {inherit pname version src;};
24in
25  appimageTools.wrapType2 {
26    inherit pname version src;
27
28    passthru.updateScript = [(toString ./update.sh)];
29    preferLocalBuild = true;
30
31    extraPkgs = pkgs: [
32      pkgs.vlc
33    ];
34
35    extraInstallCommands = ''
36      install -m 444 -D ${appimageContents}/NaviBeat.desktop $out/share/applications/NaviBeat.desktop
37      install -m 444 -D ${appimageContents}/NaviBeat.png $out/share/icons/hicolor/1024x1024/apps/NaviBeat.png
38      substituteInPlace $out/share/applications/NaviBeat.desktop \
39        --replace-fail 'Exec=NaviBeat' 'Exec=${pname}'
40    '';
41
42    meta = {
43      description = "Navidrome and Subsonic music client for Linux";
44      homepage = "https://navibeat.app/linux";
45      license = lib.licenses.unfree;
46      platforms = [
47        "x86_64-linux"
48        "aarch64-linux"
49      ];
50    };
51  }