btrbk: add mainProgram (#356350)
[NixPkgs.git] / pkgs / by-name / bi / bilibili / package.nix
blob14b3e034837027ff1313d646af47ea0874cca8b4
2   lib,
3   stdenv,
4   fetchurl,
5   electron_30,
6   dpkg,
7   makeWrapper,
8   commandLineArgs ? "",
9 }:
10 let
11   version = "1.14.0-2";
12   srcs = {
13     x86_64-linux = fetchurl {
14       url = "https://github.com/msojocs/bilibili-linux/releases/download/v${version}/io.github.msojocs.bilibili_${version}_amd64.deb";
15       hash = "sha256-QQMdEpKE7r/fPMaX/yEoaa7KjilhiPMYLRvGPkv1jds=";
16     };
17     aarch64-linux = fetchurl {
18       url = "https://github.com/msojocs/bilibili-linux/releases/download/v${version}/io.github.msojocs.bilibili_${version}_arm64.deb";
19       hash = "sha256-UaGI4BLhfoYluZpARsj+I0iEmFXYYNfl4JWhBWOOip0=";
20     };
21   };
22   src =
23     srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
25 stdenv.mkDerivation {
26   pname = "bilibili";
27   inherit src version;
28   unpackPhase = ''
29     runHook preUnpack
30     dpkg -x $src ./
31     runHook postUnpack
32   '';
34   nativeBuildInputs = [
35     makeWrapper
36     dpkg
37   ];
39   installPhase = ''
40     runHook preInstall
42     mkdir -p $out/bin
43     cp -r usr/share $out/share
44     sed -i "s|Exec=.*|Exec=$out/bin/bilibili|" $out/share/applications/*.desktop
45     cp -r opt/apps/io.github.msojocs.bilibili/files/bin/app $out/opt
46     makeWrapper ${lib.getExe electron_30} $out/bin/bilibili \
47       --argv0 "bilibili" \
48       --add-flags "$out/opt/app.asar" \
49       --add-flags ${lib.escapeShellArg commandLineArgs}
51     runHook postInstall
52   '';
54   meta = {
55     description = "Electron-based bilibili desktop client";
56     homepage = "https://github.com/msojocs/bilibili-linux";
57     license = with lib.licenses; [
58       unfree
59       mit
60     ];
61     maintainers = with lib.maintainers; [
62       jedsek
63       kashw2
64       bot-wxt1221
65     ];
66     platforms = [
67       "x86_64-linux"
68       "aarch64-linux"
69     ];
70     sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
71     mainProgram = "bilibili";
72   };