From 91387d85037175db8ce3f189f68a1ce17ad326e0 Mon Sep 17 00:00:00 2001 From: lucasew Date: Sat, 14 Oct 2023 23:06:04 -0300 Subject: [PATCH] bruno: package from source (WIP) Signed-off-by: lucasew --- pkgs/by-name/br/bruno/package.nix | 103 ++++++++++++++++++++---------- 1 file changed, 68 insertions(+), 35 deletions(-) diff --git a/pkgs/by-name/br/bruno/package.nix b/pkgs/by-name/br/bruno/package.nix index 4dfa1375ef7a27b..4df7d3cbe412099 100644 --- a/pkgs/by-name/br/bruno/package.nix +++ b/pkgs/by-name/br/bruno/package.nix @@ -1,52 +1,85 @@ { lib -, stdenv -, fetchurl -, autoPatchelfHook -, dpkg -, wrapGAppsHook -, alsa-lib -, gtk3 -, mesa -, nspr -, nss -, systemd + +, fetchFromGitHub +, buildNpmPackage , nix-update-script +, electron_21-bin +, writeShellScriptBin +, makeWrapper }: -stdenv.mkDerivation rec { +let + electron = electron_21-bin; +in + +buildNpmPackage rec { pname = "bruno"; - version = "0.17.0"; + version = "0.20.0"; - src = fetchurl { - url = "https://github.com/usebruno/bruno/releases/download/v${version}/bruno_${version}_amd64_linux.deb"; - hash = "sha256-4FF9SEgWuIPQSarOBTaEvgdgRTkR1caRYr/bjfFmTLE="; + src = fetchFromGitHub { + # owner = "usebruno"; + owner = "lucasew"; + # repo = "bruno"; + repo = "CONTRIB-bruno"; + # rev = "master"; + rev = "6d0eadae82a93d2c60bd3749ba00f3b3606c3219"; + hash = "sha256-nCIe5KghTjW32eIo3bv58nm9up1zbHNnqqMuM8PSgEs="; + # rev = "v${version}"; }; + npmDepsHash = "sha256-CUou2uflKFB4L2UtJv18zjHoCiGhmZ5VA7EZfEsSOds="; + # npmWorkspace = "packages/bruno-electron"; - nativeBuildInputs = [ autoPatchelfHook dpkg wrapGAppsHook ]; - - buildInputs = [ - alsa-lib - gtk3 - mesa - nspr - nss + nativeBuildInputs = [ + (writeShellScriptBin "phantomjs" "echo 2.1.1") + makeWrapper ]; - runtimeDependencies = [ (lib.getLib systemd) ]; + postPatch = '' + substituteInPlace scripts/build-electron.sh \ + --replace 'if [ "$1" == "snap" ]; then' 'exit 0; echo foi; if [ "$1" == "snap" ]; then' + ''; + + ELECTRON_SKIP_BINARY_DOWNLOAD=1; + + dontNpmBuild = true; + postBuild = '' + npm run build --workspace=packages/bruno-graphql-docs + npm run build --workspace=packages/bruno-app + npm run build --workspace=packages/bruno-query + + bash scripts/build-electron.sh + + pushd packages/bruno-electron + + npm exec electron-builder -- \ + --dir \ + -c.electronDist=${electron}/libexec/electron \ + -c.electronVersion=${electron.version} \ + -c.npmRebuild=false + + popd + ''; + + npmPackFlags = [ "--ignore-scripts" ]; installPhase = '' runHook preInstall - mkdir -p "$out/bin" - cp -R opt $out - cp -R "usr/share" "$out/share" - ln -s "$out/opt/Bruno/bruno" "$out/bin/bruno" - chmod -R g-w "$out" - runHook postInstall - ''; - postFixup = '' - substituteInPlace "$out/share/applications/bruno.desktop" \ - --replace "/opt/Bruno/bruno" "$out/bin/bruno" + mkdir -p $out/opt/bruno $out/bin + + pushd packages/bruno-electron/dist/linux-unpacked + + cp -r locales resources{,.pak} $out/opt/bruno + + popd + + makeWrapper ${lib.getExe electron} $out/bin/bruno \ + --add-flags $out/opt/bruno/resources/app.asar \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \ + --set-default ELECTRON_IS_DEV 0 \ + --inherit-argv0 + + runHook postInstall ''; passthru.updateScript = nix-update-script { };