about summary refs log tree commit diff
path: root/pkgs/development/tools/redisinsight/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools/redisinsight/default.nix')
-rw-r--r--pkgs/development/tools/redisinsight/default.nix155
1 files changed, 86 insertions, 69 deletions
diff --git a/pkgs/development/tools/redisinsight/default.nix b/pkgs/development/tools/redisinsight/default.nix
index 5c4609e248d85..c27cd9b47dfd2 100644
--- a/pkgs/development/tools/redisinsight/default.nix
+++ b/pkgs/development/tools/redisinsight/default.nix
@@ -1,70 +1,84 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, makeWrapper
-, makeDesktopItem
-, fixup_yarn_lock
-, yarn
-, nodejs_18
-, python3
-, fetchYarnDeps
-, electron
-, desktopToDarwinBundle
-, nest-cli
-, libsass
-, buildPackages
-, pkg-config
-, sqlite
-, xdg-utils
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  makeWrapper,
+  makeDesktopItem,
+  copyDesktopItems,
+  fixup-yarn-lock,
+  yarn,
+  nodejs_18,
+  python3,
+  fetchYarnDeps,
+  electron,
+  nest-cli,
+  libsass,
+  buildPackages,
+  pkg-config,
+  sqlite,
+  xdg-utils,
 }:
+
 let
   nodejs = nodejs_18;
 in
 stdenv.mkDerivation (finalAttrs: {
-  pname = "redisinsight-electron";
-  version = "2.32";
+  pname = "redisinsight";
+  version = "2.48.0";
 
   src = fetchFromGitHub {
     owner = "RedisInsight";
     repo = "RedisInsight";
-    rev = "${finalAttrs.version}";
-    hash = "sha256-esaH10AyEooym/62F5LJL7oP5UmD6T2UX8g/9QniL9s=";
+    rev = finalAttrs.version;
+    hash = "sha256-ek0Fp8v6j+mZPK2cEuFNrBgInXdYIKBBUg0UD1I51Sg=";
   };
 
   offlineCache = fetchYarnDeps {
     yarnLock = finalAttrs.src + "/yarn.lock";
-    sha256 = "NHKttywAaWAYkciGzYCnm1speHrWsv1t+dxL1DZgM7o=";
+    hash = "sha256-ohtU1h6wrg7asXDxTt1Jlzx9GaS3zDrGQD9P9tgzCOE=";
   };
 
   feOfflineCache = fetchYarnDeps {
     yarnLock = finalAttrs.src + "/redisinsight/yarn.lock";
-    sha256 = "1S1KNUOtmywQ0eyqVS2oRlhpjcL9eps8CR7AtC9ujSU=";
+    hash = "sha256-9xbIdDeLUEk4eNeK7RTwidqDGinA8SPfcumqml66kTw=";
   };
 
   apiOfflineCache = fetchYarnDeps {
     yarnLock = finalAttrs.src + "/redisinsight/api/yarn.lock";
-    sha256 = "P99+1Dhdg/vznC2KepPrVGNlrofJFydXkZVxgwprIx4=";
+    hash = "sha256-4zbffuneTceMEyKb8atTXTFhTv0DhrsRMdepZWgoxMQ=";
   };
 
-  nativeBuildInputs = [ yarn fixup_yarn_lock nodejs makeWrapper python3 nest-cli libsass pkg-config ]
-    ++ lib.optionals stdenv.isDarwin [ desktopToDarwinBundle ];
-
-  buildInputs = [ sqlite xdg-utils ];
+  nativeBuildInputs = [
+    yarn
+    fixup-yarn-lock
+    nodejs
+    makeWrapper
+    python3
+    nest-cli
+    libsass
+    pkg-config
+    copyDesktopItems
+  ];
+
+  buildInputs = [
+    sqlite
+    xdg-utils
+  ];
 
   configurePhase = ''
     runHook preConfigure
 
     export HOME=$(mktemp -d)
-    yarn config --offline set yarn-offline-mirror $offlineCache
-    fixup_yarn_lock yarn.lock
+    yarn config --offline set yarn-offline-mirror ${finalAttrs.offlineCache}
+    fixup-yarn-lock yarn.lock
     yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
 
-    yarn config --offline set yarn-offline-mirror $feOfflineCache
-    fixup_yarn_lock redisinsight/yarn.lock
+    yarn config --offline set yarn-offline-mirror ${finalAttrs.feOfflineCache}
+    fixup-yarn-lock redisinsight/yarn.lock
     yarn --offline --cwd redisinsight/ --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
 
-    yarn config --offline set yarn-offline-mirror $apiOfflineCache
-    fixup_yarn_lock redisinsight/api/yarn.lock
+    yarn config --offline set yarn-offline-mirror ${finalAttrs.apiOfflineCache}
+    fixup-yarn-lock redisinsight/api/yarn.lock
     yarn --offline --cwd redisinsight/api/ --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
 
     patchShebangs node_modules/
@@ -76,29 +90,32 @@ stdenv.mkDerivation (finalAttrs: {
     ln -sfv "${nodejs}/include" "$HOME/.node-gyp/${nodejs.version}"
     export npm_config_nodedir=${nodejs}
 
-    pushd redisinsight
     # Build the sqlite3 package.
+    pushd redisinsight
     npm_config_node_gyp="${buildPackages.nodejs}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" npm rebuild --verbose --sqlite=${sqlite.dev} sqlite3
     popd
 
+    # Build node-sass
+    LIBSASS_EXT=auto npm rebuild --verbose node-sass
+
     substituteInPlace redisinsight/api/config/default.ts \
-      --replace "process['resourcesPath']" "\"$out/share/redisinsight\"" \
+      --replace-fail "process['resourcesPath']" "\"$out/share/redisinsight\"" \
+
+    # has irrelevant files
+    rm -r resources/app
 
     runHook postConfigure
   '';
 
   buildPhase = ''
     runHook preBuild
-    yarn config --offline set yarn-offline-mirror $offlineCache
 
-    pushd node_modules/node-sass
-    LIBSASS_EXT=auto yarn run build --offline
-    popd
+    yarn config --offline set yarn-offline-mirror ${finalAttrs.offlineCache}
 
     yarn --offline build:prod
 
     yarn --offline electron-builder \
-      --dir ${if stdenv.isDarwin then "--macos" else "--linux"} ${if stdenv.hostPlatform.isAarch64 then "--arm64" else "--x64"} \
+      --dir \
       -c.electronDist=${electron}/libexec/electron \
       -c.electronVersion=${electron.version}
 
@@ -108,47 +125,47 @@ stdenv.mkDerivation (finalAttrs: {
   installPhase = ''
     runHook preInstall
 
-    # resources
-    mkdir -p "$out/share/redisinsight"
-    mkdir -p "$out/share/redisinsight/static/resources/plugins"
-    mkdir -p "$out/share/redisinsight/default"
+    mkdir -p "$out/share/redisinsight"/{app,defaults,static/plugins,static/resources/plugins}
 
-    cp -r release/${if stdenv.isDarwin then "darwin-" else "linux-"}${lib.optionalString stdenv.hostPlatform.isAarch64 "arm64-"}unpacked/resources/{app.asar,app.asar.unpacked} $out/share/redisinsight/
-    cp -r resources/ $out/share/redisinsight
+    cp -r release/*-unpacked/{locales,resources{,.pak}} "$out/share/redisinsight/app"
+    mv "$out/share/redisinsight/app/resources/resources" "$out/share/redisinsight"
 
     # icons
-    for icon in "$out/resources/icons/*.png"; do
+    for icon in "$out/share/redisinsight/resources/icons"/*.png; do
       mkdir -p "$out/share/icons/hicolor/$(basename $icon .png)/apps"
       ln -s "$icon" "$out/share/icons/hicolor/$(basename $icon .png)/apps/redisinsight.png"
     done
 
-    ln -s "${finalAttrs.desktopItem}/share/applications" "$out/share/applications"
-
     makeWrapper '${electron}/bin/electron' "$out/bin/redisinsight" \
-      --add-flags "$out/share/redisinsight/app.asar" \
+      --add-flags "$out/share/redisinsight/app/resources/app.asar" \
       --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
-      --chdir "$out/share/redisinsight" \
-      --argv0 "$out/share/redisinsight/app.asar"
+      --set-default ELECTRON_FORCE_IS_PACKAGED 1 \
+      --inherit-argv0
 
     runHook postInstall
   '';
 
-  desktopItem = makeDesktopItem {
-    name = "redisinsight";
-    exec = "redisinsight %u";
-    icon = "redisinsight";
-    desktopName = "RedisInsight";
-    genericName = "RedisInsight Redis Client";
-    comment = finalAttrs.meta.description;
-    categories = [ "Development" ];
-    startupWMClass = "redisinsight";
-  };
-
-  meta = with lib; {
+  desktopItems = [
+    (makeDesktopItem {
+      name = "redisinsight";
+      exec = "redisinsight %u";
+      icon = "redisinsight";
+      desktopName = "RedisInsight";
+      genericName = "RedisInsight Redis Client";
+      comment = finalAttrs.meta.description;
+      categories = [ "Development" ];
+      startupWMClass = "redisinsight";
+    })
+  ];
+
+  meta = {
     description = "RedisInsight Redis client powered by Electron";
     homepage = "https://github.com/RedisInsight/RedisInsight";
-    license = licenses.sspl;
-    maintainers = with maintainers; [ gmemstr ];
-    platforms = [ "x86_64-linux" ];
+    license = lib.licenses.sspl;
+    maintainers = with lib.maintainers; [
+      gmemstr
+      tomasajt
+    ];
+    platforms = lib.platforms.linux;
   };
 })