Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
106 lines
2.4 KiB
Nix
106 lines
2.4 KiB
Nix
{
|
||
lib,
|
||
stdenv,
|
||
fetchFromGitHub,
|
||
runCommand,
|
||
buildNpmPackage,
|
||
clang,
|
||
go,
|
||
libsForQt5,
|
||
qt6,
|
||
udevCheckHook,
|
||
}:
|
||
|
||
let
|
||
# Qt 6 doesn’t provide the rcc binary so we create an ad hoc package pulling
|
||
# it from Qt 5.
|
||
rcc = runCommand "rcc" { } ''
|
||
mkdir -p $out/bin
|
||
cp ${lib.getExe' libsForQt5.qt5.qtbase.dev "rcc"} $out/bin
|
||
'';
|
||
in
|
||
stdenv.mkDerivation rec {
|
||
pname = "bitbox";
|
||
version = "4.48.1";
|
||
|
||
src = fetchFromGitHub {
|
||
owner = "BitBoxSwiss";
|
||
repo = "bitbox-wallet-app";
|
||
tag = "v${version}";
|
||
fetchSubmodules = true;
|
||
hash = "sha256-zpkjYnGsmPKjxUpp2H1qSzqthOO1mTmki3bPqo35sBo=";
|
||
};
|
||
|
||
postPatch = ''
|
||
substituteInPlace frontends/qt/resources/linux/usr/share/applications/bitbox.desktop \
|
||
--replace-fail 'Exec=BitBox %u' 'Exec=bitbox %u'
|
||
'';
|
||
|
||
dontConfigure = true;
|
||
|
||
passthru.web = buildNpmPackage {
|
||
pname = "bitbox-web";
|
||
inherit version;
|
||
inherit src;
|
||
sourceRoot = "${src.name}/frontends/web";
|
||
npmDepsHash = "sha256-9NS85U4L5sLX3n/uN4p4CB5vfpWMMcnf6wESlFdQPlI=";
|
||
installPhase = "cp -r build $out";
|
||
};
|
||
|
||
buildPhase = ''
|
||
runHook preBuild
|
||
|
||
ln -s ${passthru.web} frontends/web/build
|
||
export GOCACHE=$TMPDIR/go-cache
|
||
cd frontends/qt
|
||
make -C server linux
|
||
./genassets.sh
|
||
qmake -o build/Makefile
|
||
cd build
|
||
make
|
||
cd ../../..
|
||
|
||
runHook postBuild
|
||
'';
|
||
|
||
installPhase = ''
|
||
runHook preInstall
|
||
|
||
mkdir $out
|
||
cp -r frontends/qt/resources/linux/usr/share $out
|
||
mkdir $out/{bin,lib}
|
||
cp frontends/qt/build/BitBox $out/bin/bitbox
|
||
cp frontends/qt/build/assets.rcc $out/bin
|
||
cp frontends/qt/server/libserver.so $out/lib
|
||
install -Dt $out/lib/udev/rules.d ${./rules.d}/*
|
||
|
||
runHook postInstall
|
||
'';
|
||
|
||
buildInputs = [ qt6.qtwebengine ];
|
||
|
||
nativeBuildInputs = [
|
||
clang
|
||
go
|
||
qt6.wrapQtAppsHook
|
||
rcc
|
||
udevCheckHook
|
||
];
|
||
|
||
doInstallCheck = true;
|
||
|
||
meta = {
|
||
description = "Companion app for the BitBox02 hardware wallet";
|
||
homepage = "https://bitbox.swiss/app/";
|
||
downloadPage = "https://github.com/BitBoxSwiss/bitbox-wallet-app";
|
||
changelog = "https://github.com/BitBoxSwiss/bitbox-wallet-app/blob/master/CHANGELOG.md#${
|
||
builtins.replaceStrings [ "." ] [ "" ] version
|
||
}";
|
||
license = lib.licenses.asl20;
|
||
maintainers = [ lib.maintainers.tensor5 ];
|
||
mainProgram = "bitbox";
|
||
sourceProvenance = [ lib.sourceTypes.fromSource ];
|
||
platforms = [ "x86_64-linux" ];
|
||
};
|
||
}
|