about summary refs log tree commit diff
path: root/pkgs/tools/misc/sharedown/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/misc/sharedown/default.nix')
-rw-r--r--pkgs/tools/misc/sharedown/default.nix36
1 files changed, 34 insertions, 2 deletions
diff --git a/pkgs/tools/misc/sharedown/default.nix b/pkgs/tools/misc/sharedown/default.nix
index 2fb9553a7fea9..048e8eb6008ad 100644
--- a/pkgs/tools/misc/sharedown/default.nix
+++ b/pkgs/tools/misc/sharedown/default.nix
@@ -3,6 +3,10 @@
 , fetchFromGitHub
 , ffmpeg
 , yt-dlp
+, libsecret
+, python3
+, pkg-config
+, nodejs
 , electron
 , makeWrapper
 , makeDesktopItem
@@ -13,13 +17,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "Sharedown";
-  version = "3.0.1";
+  version = "3.1.0";
 
   src = fetchFromGitHub {
     owner = "kylon";
     repo = pname;
     rev = version;
-    sha256 = "sha256-0moxrRxydH/g3J5cQmaFSDhTZh9OnUi8ncPVw7q1JC0=";
+    sha256 = "sha256-wQEP3fdp+Mhgoz873cgF65WouWtbEdCdXfLiVSmrjyA=";
   };
 
   nativeBuildInputs = [
@@ -55,6 +59,34 @@ stdenvNoCC.mkDerivation rec {
           "--production"
         ];
 
+        pkgConfig = {
+          keytar = {
+            nativeBuildInputs = [
+              python3
+              pkg-config
+            ];
+            buildInputs = [
+              libsecret
+            ];
+            postInstall = ''
+              yarn --offline run build
+              # Remove unnecessary store path references.
+              rm build/config.gypi
+            '';
+          };
+        };
+
+        preBuild = ''
+          # Set up headers for node-gyp, which is needed to build keytar.
+          mkdir -p "$HOME/.cache/node-gyp/${nodejs.version}"
+
+          # Set up version which node-gyp checks in <https://github.com/nodejs/node-gyp/blob/4937722cf597ccd1953628f3d5e2ab5204280051/lib/install.js#L87-L96> against the version in <https://github.com/nodejs/node-gyp/blob/4937722cf597ccd1953628f3d5e2ab5204280051/package.json#L15>.
+          echo 9 > "$HOME/.cache/node-gyp/${nodejs.version}/installVersion"
+
+          # Link node headers so that node-gyp does not try to download them.
+          ln -sfv "${nodejs}/include" "$HOME/.cache/node-gyp/${nodejs.version}"
+        '';
+
         packageJSON = "${src}/package.json";
         yarnLock = ./yarn.lock;
         yarnNix = ./yarndeps.nix;