diff options
Diffstat (limited to 'pkgs/development/web/insomnia/default.nix')
-rw-r--r-- | pkgs/development/web/insomnia/default.nix | 151 |
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 ]; - }; - } |