Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / office / trilium / desktop.nix
blobdd3f41df5230c9ac09f0ecb0d8ee15ffcb648cf1
1 { stdenv, lib, unzip, autoPatchelfHook
2 , fetchurl, makeWrapper
3 , alsa-lib, mesa, nss, nspr, systemd
4 , makeDesktopItem, copyDesktopItems, wrapGAppsHook
5 , metaCommon
6 }:
8 let
9   pname = "trilium-desktop";
10   version = "0.60.4";
12   linuxSource.url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-${version}.tar.xz";
13   linuxSource.sha256 = "02vbghvi2sbh943rslgm712x9zccvpjab3jvr5b1bw4bq5fzppgq";
15   darwinSource.url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-mac-x64-${version}.zip";
16   darwinSource.sha256 = "0z6dk16xdzkiyxrm1yh3iz5351c8sdzvk8v5l3jdqy7davxw9f86";
18   meta = metaCommon // {
19     mainProgram = "trilium";
20     platforms = [ "x86_64-linux" "x86_64-darwin" ];
21   };
23   linux = stdenv.mkDerivation rec {
24     inherit pname version meta;
26     src = fetchurl linuxSource;
28     # TODO: migrate off autoPatchelfHook and use nixpkgs' electron
29     nativeBuildInputs = [
30       autoPatchelfHook
31       makeWrapper
32       wrapGAppsHook
33       copyDesktopItems
34     ];
36     buildInputs = [
37       alsa-lib
38       mesa
39       nss
40       nspr
41       stdenv.cc.cc
42       systemd
43     ];
45     desktopItems = [
46       (makeDesktopItem {
47         name = "Trilium";
48         exec = "trilium";
49         icon = "trilium";
50         comment = meta.description;
51         desktopName = "Trilium Notes";
52         categories = [ "Office" ];
53         startupWMClass = "trilium notes";
54       })
55     ];
57     # Remove trilium-portable.sh, so trilium knows it is packaged making it stop auto generating a desktop item on launch
58     postPatch = ''
59       rm ./trilium-portable.sh
60     '';
62     installPhase = ''
63       runHook preInstall
64       mkdir -p $out/bin
65       mkdir -p $out/share/trilium
66       mkdir -p $out/share/icons/hicolor/128x128/apps
68       cp -r ./* $out/share/trilium
69       ln -s $out/share/trilium/trilium $out/bin/trilium
71       ln -s $out/share/trilium/icon.png $out/share/icons/hicolor/128x128/apps/trilium.png
72       runHook postInstall
73     '';
75     # LD_LIBRARY_PATH "shouldn't" be needed, remove when possible :)
76     # Error: libstdc++.so.6: cannot open shared object file: No such file or directory
77     preFixup = ''
78       gappsWrapperArgs+=(--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath buildInputs})
79     '';
81     dontStrip = true;
83     passthru.updateScript = ./update.sh;
84   };
86   darwin = stdenv.mkDerivation {
87     inherit pname version meta;
89     src = fetchurl darwinSource;
90     nativeBuildInputs = [ unzip ];
92     installPhase = ''
93       mkdir -p $out/Applications
94       cp -r *.app $out/Applications
95     '';
96   };
99   if stdenv.isDarwin then darwin else linux