about summary refs log tree commit diff
path: root/pkgs/by-name/mq/mqttx/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/mq/mqttx/package.nix')
-rw-r--r--pkgs/by-name/mq/mqttx/package.nix57
1 files changed, 57 insertions, 0 deletions
diff --git a/pkgs/by-name/mq/mqttx/package.nix b/pkgs/by-name/mq/mqttx/package.nix
new file mode 100644
index 0000000000000..ac37585846622
--- /dev/null
+++ b/pkgs/by-name/mq/mqttx/package.nix
@@ -0,0 +1,57 @@
+{ lib
+, stdenv
+, fetchurl
+, appimageTools
+, imagemagick
+}:
+
+let
+  pname = "mqttx";
+  version = "1.9.8";
+
+  suffixedUrl = suffix: "https://github.com/emqx/MQTTX/releases/download/v${version}/MQTTX-${version}${suffix}.AppImage";
+  sources = {
+    "aarch64-linux" = fetchurl {
+      url = suffixedUrl "-arm64";
+      hash = "sha256-pdR9LwWgFdO0Dtn7ByyYKpLrfoBnl75TzQ31aIAJ/gs=";
+    };
+    "x86_64-linux" = fetchurl {
+      url = suffixedUrl "";
+      hash = "sha256-XHAroiFuUcK0aUleNDskI1bfVX7HfTvIvSup9gKJj1w=";
+    };
+  };
+
+  src = sources.${stdenv.hostPlatform.system}
+    or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
+
+  appimageContents = appimageTools.extractType2 {
+    inherit pname version src;
+  };
+in
+appimageTools.wrapType2 {
+  inherit pname version src;
+
+  extraPkgs = pkgs: [ ];
+
+  extraInstallCommands = ''
+    mv $out/bin/${pname}-${version} $out/bin/${pname}
+    install -m 444 -D ${appimageContents}/${pname}.desktop $out/share/applications/${pname}.desktop
+    install -m 444 -D ${appimageContents}/${pname}.png $out/share/icons/hicolor/1024x1024/apps/${pname}.png
+
+    ${imagemagick}/bin/convert ${appimageContents}/mqttx.png -resize 512x512 ${pname}_512.png
+    install -m 444 -D ${pname}_512.png $out/share/icons/hicolor/512x512/apps/${pname}.png
+
+    substituteInPlace $out/share/applications/${pname}.desktop \
+      --replace 'Exec=AppRun' 'Exec=${pname}'
+  '';
+
+  meta = with lib; {
+    description = "Powerful cross-platform MQTT 5.0 Desktop, CLI, and WebSocket client tools";
+    homepage = "https://mqttx.app/";
+    changelog = "https://github.com/emqx/MQTTX/releases/tag/v${version}";
+    license = licenses.asl20;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ gaelreyrol ];
+    mainProgram = "mqttx";
+  };
+}