summary refs log tree commit diff
path: root/pkgs/applications/misc/logseq/default.nix
diff options
context:
space:
mode:
authorLoveIsGrief <loveisgrief@tuta.io>2022-12-08 00:05:50 +0100
committerLoveIsGrief <loveisgrief@tuta.io>2023-01-27 11:05:20 +0100
commit7db6808335f5307f94f0f49d73669e565f526f46 (patch)
treee7171b5bce07612507a51303627a33277deab4af /pkgs/applications/misc/logseq/default.nix
parent8a8f34c8ef80b366f026967618f4c9cee8fcf66a (diff)
downloadnixpkgs-7db6808335f5307f94f0f49d73669e565f526f46.tar
nixpkgs-7db6808335f5307f94f0f49d73669e565f526f46.tar.gz
nixpkgs-7db6808335f5307f94f0f49d73669e565f526f46.tar.bz2
nixpkgs-7db6808335f5307f94f0f49d73669e565f526f46.tar.lz
nixpkgs-7db6808335f5307f94f0f49d73669e565f526f46.tar.xz
nixpkgs-7db6808335f5307f94f0f49d73669e565f526f46.tar.zst
nixpkgs-7db6808335f5307f94f0f49d73669e565f526f46.zip
logseq: Fix publishing graph
Related to https://github.com/logseq/logseq/issues/6880

Logseq publishes graphs by copying application assets into a folder and then the graph files (+/- some operations).
In a normal linux distribution the application asset directories are rw but only by root.
On nix, the directories are read-only, which leads to the copied directories also being ro and logseq failing
 to copy the graph files into the target.

A fix from the logseq team isn't forthcoming (yet?), so we circumvent the entire ro issue by using
 run-appimage, which extracts the appimage into a user-writeable directory.
Diffstat (limited to 'pkgs/applications/misc/logseq/default.nix')
-rw-r--r--pkgs/applications/misc/logseq/default.nix25
1 files changed, 9 insertions, 16 deletions
diff --git a/pkgs/applications/misc/logseq/default.nix b/pkgs/applications/misc/logseq/default.nix
index ea855f3d30b..9a9db9d70f9 100644
--- a/pkgs/applications/misc/logseq/default.nix
+++ b/pkgs/applications/misc/logseq/default.nix
@@ -2,8 +2,8 @@
 , stdenv
 , fetchurl
 , appimageTools
+, appimage-run
 , makeWrapper
-, electron
 , git
 }:
 
@@ -30,30 +30,23 @@ stdenv.mkDerivation rec {
   installPhase = ''
     runHook preInstall
 
-    mkdir -p $out/bin $out/share/${pname} $out/share/applications
-    cp -a ${appimageContents}/{locales,resources} $out/share/${pname}
+    mkdir -p $out/bin $out/share/${pname} $out/share/applications $out/share/${pname}/resources/app/icons
+    cp -a ${appimageContents}/resources/app/icons/logseq.png $out/share/${pname}/resources/app/icons/logseq.png
     cp -a ${appimageContents}/Logseq.desktop $out/share/applications/${pname}.desktop
 
-    # remove the `git` in `dugite` because we want the `git` in `nixpkgs`
-    chmod +w -R $out/share/${pname}/resources/app/node_modules/dugite/git
-    chmod +w $out/share/${pname}/resources/app/node_modules/dugite
-    rm -rf $out/share/${pname}/resources/app/node_modules/dugite/git
-    chmod -w $out/share/${pname}/resources/app/node_modules/dugite
+    # set the env "LOCAL_GIT_DIRECTORY" for dugite so that we can use the git in nixpkgs
+    makeWrapper ${appimage-run}/bin/appimage-run $out/bin/logseq \
+      --set "LOCAL_GIT_DIRECTORY" ${git} \
+      --add-flags ${src}
 
+    # Make the desktop entry run the app using appimage-run
     substituteInPlace $out/share/applications/${pname}.desktop \
-      --replace Exec=Logseq Exec=${pname} \
+      --replace Exec=Logseq "Exec=$out/bin/logseq" \
       --replace Icon=Logseq Icon=$out/share/${pname}/resources/app/icons/logseq.png
 
     runHook postInstall
   '';
 
-  postFixup = ''
-    # set the env "LOCAL_GIT_DIRECTORY" for dugite so that we can use the git in nixpkgs
-    makeWrapper ${electron}/bin/electron $out/bin/${pname} \
-      --set "LOCAL_GIT_DIRECTORY" ${git} \
-      --add-flags $out/share/${pname}/resources/app
-  '';
-
   passthru.updateScript = ./update.sh;
 
   meta = with lib; {