about summary refs log tree commit diff
path: root/pkgs/applications/misc/insulator2/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/misc/insulator2/default.nix')
-rw-r--r--pkgs/applications/misc/insulator2/default.nix99
1 files changed, 99 insertions, 0 deletions
diff --git a/pkgs/applications/misc/insulator2/default.nix b/pkgs/applications/misc/insulator2/default.nix
new file mode 100644
index 000000000000..456ca5d2448e
--- /dev/null
+++ b/pkgs/applications/misc/insulator2/default.nix
@@ -0,0 +1,99 @@
+{ lib
+, cmake
+, dbus
+, fetchFromGitHub
+, fetchYarnDeps
+, openssl
+, pkg-config
+, freetype
+, libsoup
+, gtk3
+, webkitgtk
+, perl
+, cyrus_sasl
+, stdenv
+, fixup_yarn_lock
+, yarn
+, nodejs-slim
+, cargo-tauri
+, cargo
+, rustPlatform
+, rustc
+}:
+
+stdenv.mkDerivation rec {
+  pname = "insulator2";
+  version = "2.12.2";
+
+  src = fetchFromGitHub {
+    owner = "andrewinci";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-Bi9GCQr7yox5Plc7o0svRKYi1XoK/HDGj1VbW1z4jac=";
+  };
+
+  yarnOfflineCache = fetchYarnDeps {
+    yarnLock = "${src}/yarn.lock";
+    hash = "sha256-ih5NSOvYje981SkVfPHm/u2sS1B36kgxpfe9LmQaxdo=";
+  };
+
+  cargoDeps = rustPlatform.importCargoLock {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "apache-avro-0.15.0" = "sha256-bjA/x/IDzAYugsc1vn9fBVKaCiLOJYdA1Q9H2pffBh0=";
+      "openssl-src-111.25.0+1.1.1t" = "sha256-1BEtb38ilJJAw35KW+NOIe1rhxxOPsnz0gA2zJnof8c=";
+      "rdkafka-0.29.0" = "sha256-a739Fc+qjmIrK754GT22Gb/Ftd82lLSUzv53Ej7Khu4=";
+      "rust-keystore-0.1.1" = "sha256-Cj64uJFZNxnrplhRuqf9/HK/RAaawzfYHo/J9snZ+TU=";
+    };
+  };
+
+  configurePhase = ''
+    export HOME=$(mktemp -d)
+    yarn config --offline set yarn-offline-mirror ${yarnOfflineCache}
+    fixup_yarn_lock yarn.lock
+    yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive
+    patchShebangs node_modules/
+    yarn run postinstall --offline
+  '';
+
+  preBuild = ''
+    yarn tauri build -b deb
+  '';
+
+  cargoRoot = "backend/";
+
+  preInstall = ''
+    mv backend/target/release/bundle/deb/*/data/usr/ "$out"
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    perl
+    rustPlatform.cargoSetupHook
+    cargo
+    rustc
+    cargo-tauri
+    fixup_yarn_lock
+    yarn
+    nodejs-slim
+    cyrus_sasl
+  ];
+
+  buildInputs = [
+    dbus
+    openssl.out
+    freetype
+    libsoup
+    gtk3
+    webkitgtk
+  ];
+
+  meta = with lib; {
+    description = "A client UI to inspect Kafka topics, consume, produce and much more";
+    homepage = "https://github.com/andrewinci/insulator2";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ tc-kaluza ];
+  };
+
+}