about summary refs log tree commit diff
path: root/pkgs/development/web/insomnia/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/web/insomnia/default.nix')
-rw-r--r--pkgs/development/web/insomnia/default.nix151
1 files changed, 63 insertions, 88 deletions
diff --git a/pkgs/development/web/insomnia/default.nix b/pkgs/development/web/insomnia/default.nix
index 422c6b7378897..d46a098e89f9d 100644
--- a/pkgs/development/web/insomnia/default.nix
+++ b/pkgs/development/web/insomnia/default.nix
@@ -1,100 +1,75 @@
-{ lib, stdenv, makeWrapper, fetchurl, dpkg, alsa-lib, atk, cairo, cups, dbus, expat
-, fontconfig, freetype, gdk-pixbuf, glib, pango, mesa, nspr, nss, gtk3
-, at-spi2-atk, gsettings-desktop-schemas, gobject-introspection, wrapGAppsHook
-, libX11, libXScrnSaver, libXcomposite, libXcursor, libXdamage, libXext
-, libXfixes, libXi, libXrandr, libXrender, libXtst, libxcb, libxshmfence, nghttp2
-, libudev0-shim, glibc, curl, openssl, autoPatchelfHook }:
-
+{
+  lib,
+  stdenv,
+  fetchurl,
+  appimageTools
+}:
 let
-  runtimeLibs = lib.makeLibraryPath [
-    curl
-    glibc
-    libudev0-shim
-    nghttp2
-    openssl
-    stdenv.cc.cc.lib
-  ];
-in stdenv.mkDerivation rec {
   pname = "insomnia";
-  version = "8.6.1";
+  version = "9.0.0";
 
   src = fetchurl {
-    url = "https://github.com/Kong/insomnia/releases/download/core%40${version}/Insomnia.Core-${version}.deb";
-    hash = "sha256-qy2j6kdmtDgfTab8gTz7eb/uNKwtzbxcoJHNibVa35c=";
-  };
-
-  nativeBuildInputs = [
-    autoPatchelfHook
-    dpkg
-    makeWrapper
-    gobject-introspection
-    wrapGAppsHook
-  ];
-
-  buildInputs = [
-    alsa-lib
-    at-spi2-atk
-    atk
-    cairo
-    cups
-    dbus
-    expat
-    fontconfig
-    freetype
-    gdk-pixbuf
-    glib
-    pango
-    gtk3
-    gsettings-desktop-schemas
-    libX11
-    libXScrnSaver
-    libXcomposite
-    libXcursor
-    libXdamage
-    libXext
-    libXfixes
-    libXi
-    libXrandr
-    libXrender
-    libXtst
-    libxcb
-    libxshmfence
-    mesa # for libgbm
-    nspr
-    nss
-  ];
+    x86_64-darwin = {
+      url = "https://github.com/Kong/insomnia/releases/download/core%40${version}/Insomnia.Core-${version}.dmg";
+      hash = "sha256-QIArPdThQcNTUgrXpWP8JHaZfrZ/6ztekIvzFdoWjsY=";
+    };
+    x86_64-linux = {
+      url = "https://github.com/Kong/insomnia/releases/download/core%40${version}/Insomnia.Core-${version}.AppImage";
+      hash = "sha256-2UiqopYmNxnDcIqQMn/H89ugvOtTWkHH4LrmKkQErSs=";
+    };
+  }.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
 
-  dontBuild = true;
-  dontConfigure = true;
-  dontWrapGApps = true;
+  meta = with lib; {
+    homepage = "https://insomnia.rest";
+    description = " The open-source, cross-platform API client for GraphQL, REST, WebSockets, SSE and gRPC. With Cloud, Local and Git storage. ";
+    mainProgram = "insomnia";
+    changelog = "https://github.com/Kong/insomnia/releases/tag/core@${version}";
+    license = licenses.asl20;
+    platforms = [ "x86_64-linux" "x86_64-darwin" ];
+    maintainers = with maintainers; [ markus1189 babariviere kashw2 DataHearth ];
+  };
+in
+if stdenv.isDarwin then stdenv.mkDerivation {
+  inherit pname version src meta;
+    sourceRoot = ".";
 
-  unpackPhase = "dpkg-deb -x $src .";
+    unpackCmd = ''
+    echo "Creating temp directory"
+    mnt=$(TMPDIR=/tmp mktemp -d -t nix-XXXXXXXXXX)
+    function finish {
+      echo "Ejecting temp directory"
+      /usr/bin/hdiutil detach $mnt -force
+      rm -rf $mnt
+    }
+    # Detach volume when receiving SIG "0"
+    trap finish EXIT
+    # Mount DMG file
+    echo "Mounting DMG file into \"$mnt\""
+    /usr/bin/hdiutil attach -nobrowse -mountpoint $mnt $curSrc
+    # Copy content to local dir for later use
+    echo 'Copying extracted content into "sourceRoot"'
+    cp -a $mnt/Insomnia.app $PWD/
+  '';
 
   installPhase = ''
-    mkdir -p $out/share/insomnia $out/lib $out/bin
-
-    mv usr/share/* $out/share/
-    mv opt/Insomnia/* $out/share/insomnia
-
-    ln -s $out/share/insomnia/insomnia $out/bin/insomnia
-    sed -i 's|\/opt\/Insomnia|'$out'/bin|g' $out/share/applications/insomnia.desktop
+    runHook preInstall
+    mkdir -p "$out/Applications"
+    mv Insomnia.app $out/Applications/
+    runHook postInstall
   '';
+} else appimageTools.wrapType2 {
+  inherit pname version src meta;
 
-  preFixup = ''
-    wrapProgramShell "$out/bin/insomnia" \
-        "''${gappsWrapperArgs[@]}" \
-        --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform=wayland --enable-features=WaylandWindowDecorations}}" \
-        --prefix LD_LIBRARY_PATH : ${runtimeLibs}
+  extraInstallCommands = let
+    appimageContents = appimageTools.extract {
+      inherit pname version src;
+    };
+  in ''
+    # Install XDG Desktop file and its icon
+    install -Dm444 ${appimageContents}/insomnia.desktop -t $out/share/applications
+    install -Dm444 ${appimageContents}/insomnia.png -t $out/share/pixmaps
+    # Replace wrong exec statement in XDG Desktop file
+    substituteInPlace $out/share/applications/insomnia.desktop \
+        --replace-fail 'Exec=AppRun --no-sandbox %U' 'Exec=insomnia'
   '';
-
-  meta = with lib; {
-    homepage = "https://insomnia.rest/";
-    description = "The most intuitive cross-platform REST API Client";
-    mainProgram = "insomnia";
-    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
-    license = licenses.mit;
-    platforms = [ "x86_64-linux" ];
-    maintainers = with maintainers; [ markus1189 babariviere kashw2 ];
-  };
-
 }