mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-13 15:43:39 +00:00
Merge pull request #261139 from lucasew/bruno-src
bruno: package from source
This commit is contained in:
commit
d5fb68d097
@ -1,62 +1,119 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, autoPatchelfHook
|
||||
, dpkg
|
||||
, wrapGAppsHook
|
||||
, alsa-lib
|
||||
, gtk3
|
||||
, mesa
|
||||
, nspr
|
||||
, nss
|
||||
, systemd
|
||||
|
||||
, fetchFromGitHub
|
||||
, buildNpmPackage
|
||||
, nix-update-script
|
||||
, electron
|
||||
, writeShellScriptBin
|
||||
, makeWrapper
|
||||
, copyDesktopItems
|
||||
, makeDesktopItem
|
||||
, pkg-config
|
||||
, pixman
|
||||
, cairo
|
||||
, pango
|
||||
, npm-lockfile-fix
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
buildNpmPackage rec {
|
||||
pname = "bruno";
|
||||
version = "1.5.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/usebruno/bruno/releases/download/v${version}/bruno_${version}_amd64_linux.deb";
|
||||
hash = "sha256-kJfS3yORwvh7rMGgDV5Bn2L7+7ZMa8ZBpRI1P5y+ShQ=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "usebruno";
|
||||
repo = "bruno";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-GgXnsPEUurPHrijf966x5ldp+1lDrgS1iBinU+EkdYU=b";
|
||||
|
||||
postFetch = ''
|
||||
${lib.getExe npm-lockfile-fix} $out/package-lock.json
|
||||
'';
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook dpkg wrapGAppsHook ];
|
||||
npmDepsHash = "sha256-R5dEL4QbwCSE9+HHCXlf/pYLmjCaD15tmdSSLbZgmt0=";
|
||||
|
||||
buildInputs = [
|
||||
alsa-lib
|
||||
gtk3
|
||||
mesa
|
||||
nspr
|
||||
nss
|
||||
nativeBuildInputs = [
|
||||
(writeShellScriptBin "phantomjs" "echo 2.1.1")
|
||||
makeWrapper
|
||||
copyDesktopItems
|
||||
pkg-config
|
||||
];
|
||||
|
||||
runtimeDependencies = [ (lib.getLib systemd) ];
|
||||
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 'if [ "$1" == "snap" ]; then' 'exit 0; 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
|
||||
|
||||
cp -r packages/bruno-electron/dist/linux-unpacked/{locales,resources{,.pak}} $out/opt/bruno
|
||||
|
||||
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
|
||||
|
||||
for s in 16 32 48 64 128 256 512 1024; do
|
||||
size=${"$"}{s}x$s
|
||||
install -Dm644 $src/packages/bruno-electron/resources/icons/png/$size.png $out/share/icons/hicolor/$size/apps/bruno.png
|
||||
done
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Open-source IDE For exploring and testing APIs";
|
||||
description = "Open-source IDE For exploring and testing APIs.";
|
||||
homepage = "https://www.usebruno.com";
|
||||
inherit (electron.meta) platforms;
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ water-sucks lucasew kashw2 ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
mainProgram = "bruno";
|
||||
};
|
||||
}
|
||||
|
33
pkgs/by-name/np/npm-lockfile-fix/package.nix
Normal file
33
pkgs/by-name/np/npm-lockfile-fix/package.nix
Normal file
@ -0,0 +1,33 @@
|
||||
{ lib
|
||||
, python3
|
||||
, fetchFromGitHub
|
||||
, nix-update-script
|
||||
}:
|
||||
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "npm-lockfile-fix";
|
||||
version = "0.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jeslie0";
|
||||
repo = "npm-lockfile-fix";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-0EGPCPmCf6bxbso3aHCeJ1XBOpYp3jtMXv8LGdwrsbs=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
python3.pkgs.requests
|
||||
];
|
||||
|
||||
doCheck = false; # no tests
|
||||
|
||||
passthru.updateScript = nix-update-script {};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Add missing integrity and resolved fields to a package-lock.json file";
|
||||
mainProgram = "npm-lockfile-fix";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ maintainers.lucasew ];
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user