about summary refs log tree commit diff
path: root/pkgs/applications/misc/stretchly/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/misc/stretchly/default.nix')
-rw-r--r--pkgs/applications/misc/stretchly/default.nix140
1 files changed, 94 insertions, 46 deletions
diff --git a/pkgs/applications/misc/stretchly/default.nix b/pkgs/applications/misc/stretchly/default.nix
index 213f308646ab..75f3be85dadf 100644
--- a/pkgs/applications/misc/stretchly/default.nix
+++ b/pkgs/applications/misc/stretchly/default.nix
@@ -1,8 +1,12 @@
 { GConf
 , alsaLib
 , at-spi2-atk
+, at-spi2-core
 , atk
+, buildFHSUserEnv
 , cairo
+, common-updater-scripts
+, coreutils
 , cups
 , dbus
 , expat
@@ -29,15 +33,19 @@
 , libnotify
 , libpciaccess
 , libpng12
+, libuuid
 , libxcb
 , nspr
 , nss
 , pango
 , pciutils
 , pulseaudio
+, runtimeShell
 , stdenv
 , udev
 , wrapGAppsHook
+, writeScript
+, file
 }:
 
 let
@@ -45,6 +53,7 @@ let
     GConf
     alsaLib
     at-spi2-atk
+    at-spi2-core
     atk
     cairo
     cups
@@ -71,6 +80,7 @@ let
     libnotify
     libpciaccess
     libpng12
+    libuuid
     libxcb
     nspr
     nss
@@ -82,58 +92,96 @@ let
   ];
 
   libPath = lib.makeLibraryPath libs;
+
+  stretchly =
+    stdenv.mkDerivation rec {
+      pname = "stretchly";
+      version = "0.21.0";
+
+      src = fetchurl {
+        url = "https://github.com/hovancik/stretchly/releases/download/v${version}/stretchly-${version}.tar.xz";
+        sha256 = "1gyyr22xq8s4miiacs8wqhp7lxnwvkvlwhngnq8671l62s6iyjzl";
+      };
+
+      nativeBuildInputs = [
+        wrapGAppsHook
+        coreutils
+      ];
+
+      buildInputs = libs;
+
+      dontPatchELF = true;
+      dontBuild = true;
+      dontConfigure = true;
+
+      installPhase = ''
+        mkdir -p $out/bin $out/lib/stretchly
+        cp -r ./* $out/lib/stretchly/
+        ln -s $out/lib/stretchly/stretchly $out/bin/
+      '';
+
+      preFixup = ''
+        patchelf --set-rpath "${libPath}" $out/lib/stretchly/libffmpeg.so
+        patchelf --set-rpath "${libPath}" $out/lib/stretchly/libEGL.so
+        patchelf --set-rpath "${libPath}" $out/lib/stretchly/libGLESv2.so
+        patchelf --set-rpath "${libPath}" $out/lib/stretchly/swiftshader/libEGL.so
+        patchelf --set-rpath "${libPath}" $out/lib/stretchly/swiftshader/libGLESv2.so
+
+        patchelf \
+          --set-rpath "$out/lib/stretchly:${libPath}" \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          $out/lib/stretchly/stretchly
+
+        patchelf \
+          --set-rpath "$out/lib/stretchly:${libPath}" \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          $out/lib/stretchly/chrome-sandbox
+      '';
+
+      meta = with stdenv.lib; {
+        description = "A break time reminder app";
+        longDescription = ''
+          stretchly is a cross-platform electron app that reminds you to take
+          breaks when working on your computer. By default, it runs in your tray
+          and displays a reminder window containing an idea for a microbreak for 20
+          seconds every 10 minutes. Every 30 minutes, it displays a window
+          containing an idea for a longer 5 minute break.
+        '';
+        homepage = https://hovancik.net/stretchly;
+        downloadPage = https://hovancik.net/stretchly/downloads/;
+        license = licenses.bsd2;
+        maintainers = with maintainers; [ cdepillabout ];
+        platforms = platforms.linux;
+      };
+    };
+
 in
 
-stdenv.mkDerivation rec {
-  pname = "stretchly";
-  version = "0.19.1";
+buildFHSUserEnv {
+  inherit (stretchly) meta;
 
-  src = fetchurl {
-    url = "https://github.com/hovancik/stretchly/releases/download/v${version}/stretchly-${version}.tar.xz";
-    sha256 = "1q2wxfqs8qv9b1rfh5lhmyp3rrgdl05m6ihsgkxlgp0yzi07afz8";
-  };
+  name = "stretchly";
 
-  nativeBuildInputs = [
-    wrapGAppsHook
+  targetPkgs = pkgs: [
+     stretchly
   ];
 
-  buildInputs = libs;
-
-  dontPatchELF = true;
-  dontBuild = true;
-  dontConfigure = true;
-
-  installPhase = ''
-    mkdir -p $out/bin $out/lib/stretchly
-    cp -r ./* $out/lib/stretchly/
-    ln -s $out/lib/stretchly/libffmpeg.so $out/lib/
-    ln -s $out/lib/stretchly/libnode.so $out/lib/
-    ln -s $out/lib/stretchly/stretchly $out/bin/
-  '';
-
-  preFixup = ''
-    patchelf --set-rpath "${libPath}" $out/lib/stretchly/libffmpeg.so
-    patchelf --set-rpath "${libPath}" $out/lib/stretchly/libnode.so
-
-    patchelf \
-      --set-rpath "$out/lib/stretchly:${libPath}" \
-      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-      $out/lib/stretchly/stretchly
-  '';
-
-  meta = with stdenv.lib; {
-    description = "A break time reminder app";
-    longDescription = ''
-      stretchly is a cross-platform electron app that reminds you to take
-      breaks when working on your computer. By default, it runs in your tray
-      and displays a reminder window containing an idea for a microbreak for 20
-      seconds every 10 minutes. Every 30 minutes, it displays a window
-      containing an idea for a longer 5 minute break.
+  runScript = "stretchly";
+
+  passthru = {
+    updateScript = writeScript "update-stretchly" ''
+      #!${runtimeShell}
+
+      set -eu -o pipefail
+
+      # get the latest release version
+      latest_version=$(curl -s https://api.github.com/repos/hovancik/stretchly/releases/latest | jq --raw-output .tag_name | sed -e 's/^v//')
+
+      echo "updating to $latest_version..."
+
+      ${common-updater-scripts}/bin/update-source-version stretchly.passthru.stretchlyWrapped "$latest_version"
     '';
-    homepage = https://hovancik.net/stretchly;
-    downloadPage = https://hovancik.net/stretchly/downloads/;
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ cdepillabout ];
-    platforms = platforms.linux;
+
+    stretchlyWrapped = stretchly;
   };
 }