diff options
author | Jörg Thalheim | 2024-04-30 09:42:28 +0200 |
---|---|---|
committer | GitHub | 2024-04-30 09:42:28 +0200 |
commit | 9ec6ea7160c566f36287c261b3dd61c3ef6c8ddd (patch) | |
tree | 2fd1cbc3b9ddcdca4a4da83b0a00a06ce6e3a613 /pkgs/development/tools | |
parent | ba0f4049d23e2a68666fb09b3ecb6df742cc28fd (diff) | |
parent | b68be644be598cd61b70aed80351e2aa05925368 (diff) |
Merge pull request #307467 from TomaSajt/redisinsight
redisinsight: fix build, refactor
Diffstat (limited to 'pkgs/development/tools')
-rw-r--r-- | pkgs/development/tools/redisinsight/default.nix | 151 |
1 files changed, 84 insertions, 67 deletions
diff --git a/pkgs/development/tools/redisinsight/default.nix b/pkgs/development/tools/redisinsight/default.nix index 5c4609e248d8..ffb5d9c547fd 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"; + pname = "redisinsight"; version = "2.32"; src = fetchFromGitHub { owner = "RedisInsight"; repo = "RedisInsight"; - rev = "${finalAttrs.version}"; + rev = finalAttrs.version; hash = "sha256-esaH10AyEooym/62F5LJL7oP5UmD6T2UX8g/9QniL9s="; }; offlineCache = fetchYarnDeps { yarnLock = finalAttrs.src + "/yarn.lock"; - sha256 = "NHKttywAaWAYkciGzYCnm1speHrWsv1t+dxL1DZgM7o="; + hash = "sha256-NHKttywAaWAYkciGzYCnm1speHrWsv1t+dxL1DZgM7o="; }; feOfflineCache = fetchYarnDeps { yarnLock = finalAttrs.src + "/redisinsight/yarn.lock"; - sha256 = "1S1KNUOtmywQ0eyqVS2oRlhpjcL9eps8CR7AtC9ujSU="; + hash = "sha256-1S1KNUOtmywQ0eyqVS2oRlhpjcL9eps8CR7AtC9ujSU="; }; apiOfflineCache = fetchYarnDeps { yarnLock = finalAttrs.src + "/redisinsight/api/yarn.lock"; - sha256 = "P99+1Dhdg/vznC2KepPrVGNlrofJFydXkZVxgwprIx4="; + hash = "sha256-P99+1Dhdg/vznC2KepPrVGNlrofJFydXkZVxgwprIx4="; }; - 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 = licenses.sspl; + maintainers = with lib.maintainers; [ + gmemstr + tomasajt + ]; + platforms = lib.platforms.linux; }; }) |