{ lib, stdenv, fetchFromGitHub, buildNpmPackage, nix-update-script, electron, makeWrapper, copyDesktopItems, makeDesktopItem, pkg-config, pixman, cairo, pango, npm-lockfile-fix, jq, moreutils, }: buildNpmPackage rec { pname = "bruno"; version = "2.8.1"; src = fetchFromGitHub { owner = "usebruno"; repo = "bruno"; tag = "v${version}"; hash = "sha256-+Ce9jjOZH0kFj4EfRgAabUDA9iRmHq7umVD9pOqGBbw="; postFetch = '' ${lib.getExe npm-lockfile-fix} $out/package-lock.json ''; }; npmDepsHash = "sha256-+ecdxq5YwZdWRATl1Jc3BaDfyVW5n4T4flCLqzFoVIQ="; npmFlags = [ "--legacy-peer-deps" ]; nativeBuildInputs = [ pkg-config ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ makeWrapper copyDesktopItems ]; buildInputs = [ pixman cairo pango ]; desktopItems = [ (makeDesktopItem { name = "bruno"; desktopName = "Bruno"; exec = "bruno %U"; icon = "bruno"; comment = "Opensource API Client for Exploring and Testing APIs"; categories = [ "Development" ]; startupWMClass = "Bruno"; }) ]; postPatch = '' substituteInPlace scripts/build-electron.sh \ --replace-fail 'if [ "$1" == "snap" ]; then' 'exit 0; if [ "$1" == "snap" ]; then' # disable telemetry substituteInPlace packages/bruno-app/src/providers/App/index.js \ --replace-fail "useTelemetry({ version });" "" # fix version reported in sidebar and about page ${jq}/bin/jq '.version |= "${version}"' packages/bruno-electron/package.json | ${moreutils}/bin/sponge packages/bruno-electron/package.json ${jq}/bin/jq '.version |= "${version}"' packages/bruno-app/package.json | ${moreutils}/bin/sponge packages/bruno-app/package.json ''; postConfigure = '' # sh: line 1: /build/source/packages/bruno-common/node_modules/.bin/rollup: cannot execute: required file not found patchShebangs packages/*/node_modules ''; ELECTRON_SKIP_BINARY_DOWNLOAD = 1; # remove giflib dependency npmRebuildFlags = [ "--ignore-scripts" ]; preBuild = '' # upstream keeps removing and adding back canvas, only patch it when it is present if [[ -e node_modules/canvas/binding.gyp ]]; then substituteInPlace node_modules/canvas/binding.gyp \ --replace-fail "'with_gif%': '