dotnet: improve language coverage of passthru.tests for dotnet sdks (#370789)
[NixPkgs.git] / pkgs / by-name / lo / logseq / package.nix
blob892b1dc33beb9dc455c22b0df3d6175045c6c91e
1 { lib
2 , stdenv
3 , fetchurl
4 , appimageTools
5 , unzip
6 , makeWrapper
7   # Notice: graphs will not sync without matching upstream's major electron version
8   #         the specific electron version is set at top-level file to preserve override interface.
9   #         whenever updating this package also sync electron version at top-level file.
10 , electron_27
11 , autoPatchelfHook
12 , git
13 , nix-update-script
16 stdenv.mkDerivation (finalAttrs:
17 let
18   inherit (finalAttrs) pname version src;
19   inherit (stdenv.hostPlatform) system;
20   selectSystem = attrs: attrs.${system} or (throw "Unsupported system: ${system}");
21   suffix = selectSystem {
22     x86_64-linux = "linux-x64-${version}.AppImage";
23     x86_64-darwin = "darwin-x64-${version}.zip";
24     aarch64-darwin = "darwin-arm64-${version}.zip";
25   };
26   hash = selectSystem {
27     x86_64-linux = "sha256-XROuY2RlKnGvK1VNvzauHuLJiveXVKrIYPppoz8fCmc=";
28     x86_64-darwin = "sha256-0i9ozqBSeV/y8v+YEmQkbY0V6JHOv6tKub4O5Fdx2fQ=";
29     aarch64-darwin = "sha256-Uvv96XWxpFj14wPH0DwPT+mlf3Z2dy1g/z8iBt5Te7Q=";
30   };
33   pname = "logseq";
34   version = "0.10.9";
35   src = fetchurl {
36     inherit hash;
37     url = "https://github.com/logseq/logseq/releases/download/${version}/logseq-${suffix}";
38     name = lib.optionalString stdenv.hostPlatform.isLinux "logseq-${version}.AppImage";
39   };
41   nativeBuildInputs = [ makeWrapper ]
42     ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ]
43     ++ lib.optionals stdenv.hostPlatform.isDarwin [ unzip ];
44   buildInputs = [ (lib.getLib stdenv.cc.cc) ];
46   dontUnpack = stdenv.hostPlatform.isLinux;
47   dontConfigure = true;
48   dontBuild = true;
50   installPhase = ''
51     runHook preInstall
52   '' + lib.optionalString stdenv.hostPlatform.isLinux (
53     let
54       appimageContents = appimageTools.extract { inherit pname src version; };
55     in
56     ''
57       mkdir -p $out/bin $out/share/logseq $out/share/applications
58       cp -a ${appimageContents}/{locales,resources} $out/share/logseq
59       cp -a ${appimageContents}/Logseq.desktop $out/share/applications/logseq.desktop
61       # remove the `git` in `dugite` because we want the `git` in `nixpkgs`
62       chmod +w -R $out/share/logseq/resources/app/node_modules/dugite/git
63       chmod +w $out/share/logseq/resources/app/node_modules/dugite
64       rm -rf $out/share/logseq/resources/app/node_modules/dugite/git
65       chmod -w $out/share/logseq/resources/app/node_modules/dugite
67       mkdir -p $out/share/pixmaps
68       ln -s $out/share/logseq/resources/app/icons/logseq.png $out/share/pixmaps/logseq.png
70       substituteInPlace $out/share/applications/logseq.desktop \
71         --replace Exec=Logseq Exec=logseq \
72         --replace Icon=Logseq Icon=logseq
73     ''
74   ) + lib.optionalString stdenv.hostPlatform.isDarwin ''
75     mkdir -p $out/{Applications/Logseq.app,bin}
76     cp -R . $out/Applications/Logseq.app
77     makeWrapper $out/Applications/Logseq.app/Contents/MacOS/Logseq $out/bin/logseq
78   '' + ''
79     runHook postInstall
80   '';
82   postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
83     # set the env "LOCAL_GIT_DIRECTORY" for dugite so that we can use the git in nixpkgs
84     makeWrapper ${electron_27}/bin/electron $out/bin/logseq \
85       --set "LOCAL_GIT_DIRECTORY" ${git} \
86       --add-flags $out/share/logseq/resources/app \
87       --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}"
88   '';
90   passthru.updateScript = nix-update-script { };
92   meta = {
93     description = "Local-first, non-linear, outliner notebook for organizing and sharing your personal knowledge base";
94     homepage = "https://github.com/logseq/logseq";
95     changelog = "https://github.com/logseq/logseq/releases/tag/${version}";
96     license = lib.licenses.agpl3Plus;
97     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
98     maintainers = with lib.maintainers; [ cheeseecake ];
99     platforms = [ "x86_64-linux" ] ++ lib.platforms.darwin;
100     mainProgram = "logseq";
101   };