Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
digitalbitbox: init at 2.2.2 (#33787)
* digitalbitbox: init at 2.2.2 The commits that lead to this have been squashed from independent commits see branch @vidbina/add/digitalbitbox-wip that did the following: - 0a3030f digitalbitbox: init at 2.2.2 - c18ffa3ffd4 digitalbitbox: moved meta to EOF - 0c5f3d6 digitalbitbox: using preConfigure + configureFlags - a85b1df digitalbitbox: nativeBuildInputs - 90bdd35 digitalbitbox: autoreconfHook - 91810ee digitalbitbox: default installPhase & makeWrapper - 90e43fb digitalbitbox: doc rm $PWD hack & printf-tee deal - fd033b2 digitalbitbox: cleanup, alphabetically sort attrs - c590798 digitalbitbox: added hardware module - 88e46bc digitalbitbox: added program module - amend to change name: dbb-app -> digitalbitbox - amend to add install instructions based on feedback (#33787 (comment)) - amend to add longDescription - moved program to its own dir - overridable udev rules handling - added docs to manual - added package attr to program module - added package attr to hardware module * digitalbitbox: use libsForQt5.callPackage
- Loading branch information
Showing
6 changed files
with
298 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
{ config, lib, pkgs, ... }: | ||
|
||
with lib; | ||
|
||
let | ||
cfg = config.hardware.digitalbitbox; | ||
in | ||
|
||
{ | ||
options.hardware.digitalbitbox = { | ||
enable = mkOption { | ||
type = types.bool; | ||
default = false; | ||
description = '' | ||
Enables udev rules for Digital Bitbox devices. | ||
''; | ||
}; | ||
|
||
package = mkOption { | ||
type = types.package; | ||
default = pkgs.digitalbitbox; | ||
defaultText = "pkgs.digitalbitbox"; | ||
description = "The Digital Bitbox package to use. This can be used to install a package with udev rules that differ from the defaults."; | ||
}; | ||
}; | ||
|
||
config = mkIf cfg.enable { | ||
services.udev.packages = [ cfg.package ]; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
{ config, lib, pkgs, ... }: | ||
|
||
with lib; | ||
|
||
let | ||
cfg = config.programs.digitalbitbox; | ||
in | ||
|
||
{ | ||
options.programs.digitalbitbox = { | ||
enable = mkOption { | ||
type = types.bool; | ||
default = false; | ||
description = '' | ||
Installs the Digital Bitbox application and enables the complementary hardware module. | ||
''; | ||
}; | ||
|
||
package = mkOption { | ||
type = types.package; | ||
default = pkgs.digitalbitbox; | ||
defaultText = "pkgs.digitalbitbox"; | ||
description = "The Digital Bitbox package to use. This can be used to install a package with udev rules that differ from the defaults."; | ||
}; | ||
}; | ||
|
||
config = mkIf cfg.enable { | ||
environment.systemPackages = [ cfg.package ]; | ||
hardware.digitalbitbox = { | ||
enable = true; | ||
package = cfg.package; | ||
}; | ||
}; | ||
|
||
meta = { | ||
doc = ./doc.xml; | ||
maintainers = with stdenv.lib.maintainers; [ vidbina ]; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
<chapter xmlns="http://docbook.org/ns/docbook" | ||
xmlns:xlink="http://www.w3.org/1999/xlink" | ||
xmlns:xi="http://www.w3.org/2001/XInclude" | ||
version="5.0" | ||
xml:id="module-programs-digitalbitbox"> | ||
|
||
<title>Digital Bitbox</title> | ||
|
||
<para> | ||
Digital Bitbox is a hardware wallet and second-factor authenticator. | ||
</para> | ||
|
||
<para> | ||
The <literal>digitalbitbox</literal> programs module may be | ||
installed by setting <literal>programs.digitalbitbox</literal> | ||
to <literal>true</literal> in a manner similar to | ||
|
||
<programlisting> | ||
programs.digitalbitbox.enable = true; | ||
</programlisting> | ||
|
||
and bundles the <literal>digitalbitbox</literal> package (see <xref | ||
linkend="sec-digitalbitbox-package" />), which contains the | ||
<literal>dbb-app</literal> and <literal>dbb-cli</literal> binaries, | ||
along with the hardware module (see <xref | ||
linkend="sec-digitalbitbox-hardware-module" />) which sets up the | ||
necessary udev rules to access the device. | ||
</para> | ||
|
||
<para> | ||
Enabling the digitalbitbox module is pretty much the easiest way to | ||
get a Digital Bitbox device working on your system. | ||
</para> | ||
|
||
<para> | ||
For more information, see | ||
<link xlink:href="https://digitalbitbox.com/start_linux" />. | ||
</para> | ||
|
||
<section xml:id="sec-digitalbitbox-package"> | ||
<title>Package</title> | ||
|
||
<para> | ||
The binaries, <literal>dbb-app</literal> (a GUI tool) and | ||
<literal>dbb-cli</literal> (a CLI tool), are available through the | ||
<literal>digitalbitbox</literal> package which could be installed | ||
as follows: | ||
|
||
<programlisting> | ||
environment.systemPackages = [ | ||
pkgs.digitalbitbox | ||
]; | ||
</programlisting> | ||
</para> | ||
</section> | ||
|
||
|
||
<section xml:id="sec-digitalbitbox-hardware-module"> | ||
<title>Hardware</title> | ||
|
||
<para> | ||
The digitalbitbox hardware package enables the udev rules for | ||
Digital Bitbox devices and may be installed as follows: | ||
|
||
<programlisting> | ||
hardware.digitalbitbox.enable = true; | ||
</programlisting> | ||
</para> | ||
|
||
<para> | ||
In order to alter the udev rules, one may provide different values for | ||
the <literal>udevRule51</literal> and <literal>udevRule52</literal> | ||
attributes by means of overriding as follows: | ||
|
||
<programlisting> | ||
programs.digitalbitbox = { | ||
enable = true; | ||
package = pkgs.digitalbitbox.override { | ||
udevRule51 = "something else"; | ||
}; | ||
}; | ||
</programlisting> | ||
</para> | ||
</section> | ||
</chapter> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
{ stdenv | ||
, autoreconfHook | ||
, curl | ||
, fetchFromGitHub | ||
, git | ||
, libevent | ||
, libtool | ||
, libqrencode | ||
, libudev | ||
, libusb | ||
, makeWrapper | ||
, pkgconfig | ||
, qtbase | ||
, qttools | ||
, qtwebsockets | ||
, qtmultimedia | ||
, udevRule51 ? '' | ||
, SUBSYSTEM=="usb", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="dbb%n", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2402" | ||
, '' | ||
, udevRule52 ? '' | ||
, KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2402", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="dbbf%n" | ||
, '' | ||
, writeText | ||
}: | ||
|
||
# Enabling the digitalbitbox program | ||
# | ||
# programs.digitalbitbox.enable = true; | ||
# | ||
# will install the digitalbitbox package and enable the corresponding hardware | ||
# module and is by far the easiest way to get started with the Digital Bitbox on | ||
# NixOS. | ||
|
||
# In case you install the package only, please be aware that you may need to | ||
# apply some udev rules to allow the application to identify and access your | ||
# wallet. In a nixos-configuration, one may accomplish this by enabling the | ||
# digitalbitbox hardware module | ||
# | ||
# hardware.digitalbitbox.enable = true; | ||
# | ||
# or by adding the digitalbitbox package to system.udev.packages | ||
# | ||
# system.udev.packages = [ pkgs.digitalbitbox ]; | ||
|
||
# See https://digitalbitbox.com/start_linux for more information. | ||
let | ||
copyUdevRuleToOutput = name: rule: | ||
"cp ${writeText name rule} $out/etc/udev/rules.d/${name}"; | ||
in stdenv.mkDerivation rec { | ||
name = "digitalbitbox-${version}"; | ||
version = "2.2.2"; | ||
|
||
src = fetchFromGitHub { | ||
owner = "digitalbitbox"; | ||
repo = "dbb-app"; | ||
rev = "v${version}"; | ||
sha256 = "1r77fvqrlaryzij5dfbnigzhvg1d12g96qb2gp8dy3xph1j0k3s1"; | ||
}; | ||
|
||
nativeBuildInputs = with stdenv.lib; [ | ||
autoreconfHook | ||
curl | ||
git | ||
makeWrapper | ||
pkgconfig | ||
qttools | ||
]; | ||
|
||
buildInputs = with stdenv.lib; [ | ||
libevent | ||
libtool | ||
libudev | ||
libusb | ||
libqrencode | ||
|
||
qtbase | ||
qtwebsockets | ||
qtmultimedia | ||
]; | ||
|
||
LUPDATE="${qttools.dev}/bin/lupdate"; | ||
LRELEASE="${qttools.dev}/bin/lrelease"; | ||
MOC="${qtbase.dev}/bin/moc"; | ||
QTDIR="${qtbase.dev}"; | ||
RCC="${qtbase.dev}/bin/rcc"; | ||
UIC="${qtbase.dev}/bin/uic"; | ||
|
||
configureFlags = [ | ||
"--enable-libusb" | ||
]; | ||
|
||
hardeningDisable = [ | ||
"format" | ||
]; | ||
|
||
postInstall = '' | ||
mkdir -p "$out/lib" | ||
cp src/libbtc/.libs/*.so* $out/lib | ||
cp src/libbtc/src/secp256k1/.libs/*.so* $out/lib | ||
cp src/hidapi/libusb/.libs/*.so* $out/lib | ||
cp src/univalue/.libs/*.so* $out/lib | ||
# [RPATH][patchelf] Avoid forbidden reference error | ||
rm -rf $PWD | ||
wrapProgram "$out/bin/dbb-cli" --prefix LD_LIBRARY_PATH : "$out/lib" | ||
wrapProgram "$out/bin/dbb-app" --prefix LD_LIBRARY_PATH : "$out/lib" | ||
# Provide udev rules as documented in https://digitalbitbox.com/start_linux | ||
mkdir -p "$out/etc/udev/rules.d" | ||
${copyUdevRuleToOutput "51-hid-digitalbox.rules" udevRule51} | ||
${copyUdevRuleToOutput "52-hid-digitalbox.rules" udevRule52} | ||
''; | ||
|
||
meta = with stdenv.lib; { | ||
description = "A QT based application for the Digital Bitbox hardware wallet"; | ||
longDescription = '' | ||
Digital Bitbox provides dbb-app, a GUI tool, and dbb-cli, a CLI tool, to manage Digital Bitbox devices. | ||
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 | ||
hardware.digitalbitbox.enable = true; | ||
to the configuration which is equivalent to adding this package to the udev.packages list. | ||
The easiest way to use the digitalbitbox package in NixOS is by adding | ||
programs.digitalbitbox.enable = true; | ||
to the configuration which installs the package and enables the hardware module. | ||
''; | ||
homepage = "https://digitalbitbox.com/"; | ||
license = licenses.mit; | ||
maintainers = with maintainers; [ | ||
vidbina | ||
]; | ||
platforms = platforms.linux; | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters