trezord: init at 1.2.0 (#22054)

Changed files
+127
lib
nixos
modules
services
hardware
pkgs
servers
top-level
+1
lib/maintainers.nix
···
c0dehero = "CodeHero <codehero@nerdpol.ch>";
calrama = "Moritz Maxeiner <moritz@ucworks.org>";
campadrenalin = "Philip Horger <campadrenalin@gmail.com>";
+
canndrew = "Andrew Cann <shum@canndrew.org>";
carlsverre = "Carl Sverre <accounts@carlsverre.com>";
cdepillabout = "Dennis Gosnell <cdep.illabout@gmail.com>";
cfouche = "Chaddaï Fouché <chaddai.fouche@gmail.com>";
+1
nixos/modules/module-list.nix
···
./services/hardware/tcsd.nix
./services/hardware/tlp.nix
./services/hardware/thinkfan.nix
+
./services/hardware/trezord.nix
./services/hardware/udev.nix
./services/hardware/udisks2.nix
./services/hardware/upower.nix
+54
nixos/modules/services/hardware/trezord.nix
···
+
{ config, lib, pkgs, ... }:
+
+
with lib;
+
let
+
cfg = config.services.trezord;
+
in {
+
+
### interface
+
+
options = {
+
services.trezord = {
+
enable = mkOption {
+
type = types.bool;
+
default = false;
+
description = ''
+
Enable Trezor bridge daemon, for use with Trezor hardware bitcoin wallets.
+
'';
+
};
+
};
+
};
+
+
### implementation
+
+
config = mkIf cfg.enable {
+
services.udev.packages = lib.singleton (pkgs.writeTextFile {
+
name = "trezord-udev-rules";
+
destination = "/etc/udev/rules.d/51-trezor.rules";
+
text = ''
+
SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n"
+
KERNEL=="hidraw*", ATTRS{idVendor}=="534c", ATTRS{idProduct}=="0001", MODE="0666", GROUP="dialout"
+
'';
+
});
+
+
systemd.services.trezord = {
+
description = "TREZOR Bridge";
+
after = [ "systemd-udev-settle.service" "network.target" ];
+
wantedBy = [ "multi-user.target" ];
+
path = [];
+
serviceConfig = {
+
Type = "simple";
+
ExecStart = "${pkgs.trezord}/bin/trezord -f";
+
User = "trezord";
+
};
+
};
+
+
users.users.trezord = {
+
group = "trezord";
+
description = "Trezor bridge daemon user";
+
};
+
+
users.groups.trezord = {};
+
};
+
}
+
+51
pkgs/servers/trezord/default.nix
···
+
{ stdenv, fetchgit, curl, cmake, boost, gcc5, protobuf, pkgconfig, jsoncpp
+
, libusb1, libmicrohttpd
+
}:
+
+
let
+
version = "1.2.0";
+
in
+
+
stdenv.mkDerivation rec {
+
name = "trezord-${version}";
+
+
src = fetchgit {
+
url = "https://github.com/trezor/trezord";
+
rev = "refs/tags/v${version}";
+
sha256 = "1606j5cfngryk4q21yiga1zvc3zpx4q8vqn6ljrvr679hpvlwni4";
+
};
+
+
meta = with stdenv.lib; {
+
description = "TREZOR Bridge daemon for TREZOR bitcoin hardware wallet";
+
homepage = https://mytrezor.com;
+
license = licenses.gpl3;
+
maintainers = with stdenv.lib.maintainers; [ canndrew jb55 ];
+
platforms = platforms.linux;
+
};
+
+
patches = [ ./dynamic-link.patch ];
+
+
nativeBuildInputs = [
+
cmake
+
gcc5
+
pkgconfig
+
];
+
+
buildInputs = [
+
curl
+
boost
+
protobuf
+
libusb1
+
libmicrohttpd
+
jsoncpp
+
];
+
+
LD_LIBRARY_PATH = "${stdenv.lib.makeLibraryPath [ curl ]}";
+
cmakeFlags="-DJSONCPP_LIBRARY='${jsoncpp}/lib/libjsoncpp.so'";
+
+
installPhase = ''
+
mkdir -p $out/bin
+
cp trezord $out/bin
+
'';
+
}
+
+18
pkgs/servers/trezord/dynamic-link.patch
···
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
+
index 7c0e2cf..0e3f4ac 100644
+
--- a/CMakeLists.txt
+
+++ b/CMakeLists.txt
+
@@ -59,13 +59,6 @@ target_link_libraries(trezord ${OS_LIBRARIES})
+
find_package(CURL REQUIRED)
+
find_package(libmicrohttpd REQUIRED)
+
+
-# add static libs
+
-if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+
- set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
+
- set(BUILD_SHARED_LIBS off)
+
- set(Boost_USE_STATIC_LIBS on)
+
- set(CMAKE_FIND_STATIC FIRST)
+
-endif(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+
find_package(Boost 1.53.0 REQUIRED
+
regex thread system unit_test_framework program_options chrono)
+
find_package(Protobuf 2.5.0 REQUIRED)
+2
pkgs/top-level/all-packages.nix
···
tpm-luks = callPackage ../tools/security/tpm-luks { };
+
trezord = callPackage ../servers/trezord { };
+
tthsum = callPackage ../applications/misc/tthsum { };
chaps = callPackage ../tools/security/chaps { };