gnupg22: drop, libgcrypt_1_8: drop (#371269)
[NixPkgs.git] / pkgs / applications / misc / digitalbitbox / default.nix
blob1aa3ca72eb619159d07b92fe2afc762b8e3b8cf5
2   mkDerivation,
3   lib,
4   autoreconfHook,
5   curl,
6   fetchFromGitHub,
7   git,
8   libevent,
9   libtool,
10   qrencode,
11   udev,
12   libusb1,
13   makeWrapper,
14   pkg-config,
15   qtbase,
16   qttools,
17   qtwebsockets,
18   qtmultimedia,
19   udevRule51 ? ''
20     ,   SUBSYSTEM=="usb", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="dbb%n", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2402"
21     , '',
22   udevRule52 ? ''
23     ,   KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2402", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="dbbf%n"
24     , '',
25   writeText,
28 # Enabling the digitalbitbox program
30 #     programs.digitalbitbox.enable = true;
32 # will install the digitalbitbox package and enable the corresponding hardware
33 # module and is by far the easiest way to get started with the Digital Bitbox on
34 # NixOS.
36 # In case you install the package only, please be aware that you may need to
37 # apply some udev rules to allow the application to identify and access your
38 # wallet. In a nixos-configuration, one may accomplish this by enabling the
39 # digitalbitbox hardware module
41 #     hardware.digitalbitbox.enable = true;
43 # or by adding the digitalbitbox package to system.udev.packages
45 #     system.udev.packages = [ pkgs.digitalbitbox ];
47 # See https://digitalbitbox.com/start_linux for more information.
48 let
49   copyUdevRuleToOutput = name: rule: "cp ${writeText name rule} $out/etc/udev/rules.d/${name}";
51 mkDerivation rec {
52   pname = "digitalbitbox";
53   version = "3.0.0";
55   src = fetchFromGitHub {
56     owner = "digitalbitbox";
57     repo = "dbb-app";
58     rev = "v${version}";
59     sha256 = "ig3+TdYv277D9GVnkRSX6nc6D6qruUOw/IQdQCK6FoA=";
60   };
62   nativeBuildInputs = [
63     autoreconfHook
64     curl
65     git
66     makeWrapper
67     pkg-config
68     qttools
69   ];
71   buildInputs = [
72     libevent
73     libtool
74     udev
75     libusb1
76     qrencode
78     qtbase
79     qtwebsockets
80     qtmultimedia
81   ];
83   LUPDATE = "${qttools.dev}/bin/lupdate";
84   LRELEASE = "${qttools.dev}/bin/lrelease";
85   MOC = "${qtbase.dev}/bin/moc";
86   QTDIR = qtbase.dev;
87   RCC = "${qtbase.dev}/bin/rcc";
88   UIC = "${qtbase.dev}/bin/uic";
90   configureFlags = [
91     "--enable-libusb"
92   ];
94   hardeningDisable = [
95     "format"
96   ];
98   qtWrapperArgs = [ "--prefix LD_LIBRARY_PATH : $out/lib" ];
100   postInstall = ''
101     mkdir -p "$out/lib"
102     cp src/libbtc/.libs/*.so* $out/lib
103     cp src/libbtc/src/secp256k1/.libs/*.so* $out/lib
104     cp src/hidapi/libusb/.libs/*.so* $out/lib
105     cp src/univalue/.libs/*.so* $out/lib
107     # Provide udev rules as documented in https://digitalbitbox.com/start_linux
108     mkdir -p "$out/etc/udev/rules.d"
109     ${copyUdevRuleToOutput "51-hid-digitalbox.rules" udevRule51}
110     ${copyUdevRuleToOutput "52-hid-digitalbox.rules" udevRule52}
111   '';
113   # remove forbidden references to $TMPDIR
114   preFixup = ''
115     for f in "$out"/{bin,lib}/*; do
116       if [ -f "$f" ] && isELF "$f"; then
117         patchelf --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" "$f"
118       fi
119     done
120   '';
122   enableParallelBuilding = true;
124   meta = with lib; {
125     description = "QT based application for the Digital Bitbox hardware wallet";
126     longDescription = ''
127       Digital Bitbox provides dbb-app, a GUI tool, and dbb-cli, a CLI tool, to manage Digital Bitbox devices.
129       This package will only install the dbb-app and dbb-cli, however; in order for these applications to identify and access Digital Bitbox devices, one may want to enable the digitalbitbox hardware module by adding
131           hardware.digitalbitbox.enable = true;
133       to the configuration which is equivalent to adding this package to the udev.packages list.
136       The easiest way to use the digitalbitbox package in NixOS is by adding
138           programs.digitalbitbox.enable = true;
140       to the configuration which installs the package and enables the hardware module.
141     '';
142     homepage = "https://digitalbitbox.com/";
143     license = licenses.mit;
144     maintainers = with maintainers; [
145       vidbina
146     ];
147     platforms = platforms.linux;
148   };