btrbk: add mainProgram
[NixPkgs.git] / pkgs / by-name / ma / mattermost-desktop / package.nix
blob41c27ed7c19cae7ec34dee620b88fb3f9fde7596
1 { lib
2 , stdenv
3 , fetchurl
4 , electron
5 , makeWrapper
6 }:
8 let
10   pname = "mattermost-desktop";
11   version = "5.9.0";
13   srcs = {
14     "x86_64-linux" = {
15       url = "https://releases.mattermost.com/desktop/${version}/${pname}-${version}-linux-x64.tar.gz";
16       hash = "sha256-zLKdfu5p7TyJOw8vJX7i/uu4j0PrUf2/BDmb1kdqqMc=";
17     };
19     "aarch64-linux" = {
20       url = "https://releases.mattermost.com/desktop/${version}/${pname}-${version}-linux-arm64.tar.gz";
21       hash = "sha256-JljK7d4KLAn1+NwF+VcedL/7hEsp/9LzLdzROa1fgJA=";
22     };
23   };
25   inherit (stdenv.hostPlatform) system;
29 stdenv.mkDerivation {
30   inherit pname version;
32   src = fetchurl (srcs."${system}" or (throw "Unsupported system ${system}"));
34   nativeBuildInputs = [ makeWrapper ];
36   installPhase = ''
37     runHook preInstall
39     # Mattermost tarball comes with executable bit set for everything.
40     # We’ll apply it only to files that need it.
41     find . -type f -print0 | xargs -0 chmod -x
42     find . -type f \( -name '*.so.*' -o -name '*.s[oh]' \) -print0 | xargs -0 chmod +x
43     chmod +x mattermost-desktop chrome-sandbox
45     mkdir -p $out/bin $out/share/applications $out/share/${pname}/
46     cp -r app_icon.png create_desktop_file.sh locales/ resources/* $out/share/${pname}/
48     patchShebangs $out/share/${pname}/create_desktop_file.sh
49     $out/share/${pname}/create_desktop_file.sh
50     rm $out/share/${pname}/create_desktop_file.sh
51     mv Mattermost.desktop $out/share/applications/Mattermost.desktop
52     substituteInPlace $out/share/applications/Mattermost.desktop \
53       --replace /share/mattermost-desktop/mattermost-desktop /bin/mattermost-desktop
55     makeWrapper '${lib.getExe electron}' $out/bin/${pname} \
56       --set-default ELECTRON_IS_DEV 0 \
57       --add-flags $out/share/${pname}/app.asar \
58       --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
60     runHook postInstall
61   '';
63   meta = with lib; {
64     description = "Mattermost Desktop client";
65     mainProgram = "mattermost-desktop";
66     homepage = "https://about.mattermost.com/";
67     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
68     license = licenses.asl20;
69     platforms = [ "x86_64-linux" "aarch64-linux" ];
70     maintainers = [ maintainers.joko ];
71   };