From 3082647e740cd6df15f9515c3c436d1344b52b53 Mon Sep 17 00:00:00 2001 From: Andrew Cann Date: Thu, 9 Feb 2017 00:18:22 +0800 Subject: [PATCH] trezord: init at 1.2.0 (#22054) --- lib/maintainers.nix | 1 + nixos/modules/module-list.nix | 1 + nixos/modules/services/hardware/trezord.nix | 54 +++++++++++++++++++++ pkgs/servers/trezord/default.nix | 51 +++++++++++++++++++ pkgs/servers/trezord/dynamic-link.patch | 18 +++++++ pkgs/top-level/all-packages.nix | 2 + 6 files changed, 127 insertions(+) create mode 100644 nixos/modules/services/hardware/trezord.nix create mode 100644 pkgs/servers/trezord/default.nix create mode 100644 pkgs/servers/trezord/dynamic-link.patch diff --git a/lib/maintainers.nix b/lib/maintainers.nix index bf8eb6c49742..98cbc93bcd5c 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -81,6 +81,7 @@ c0dehero = "CodeHero "; calrama = "Moritz Maxeiner "; campadrenalin = "Philip Horger "; + canndrew = "Andrew Cann "; carlsverre = "Carl Sverre "; cdepillabout = "Dennis Gosnell "; cfouche = "Chaddaï Fouché "; diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index bd427bc679c7..ad823c755e27 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -206,6 +206,7 @@ ./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 diff --git a/nixos/modules/services/hardware/trezord.nix b/nixos/modules/services/hardware/trezord.nix new file mode 100644 index 000000000000..38d0a3a1d752 --- /dev/null +++ b/nixos/modules/services/hardware/trezord.nix @@ -0,0 +1,54 @@ +{ 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 = {}; + }; +} + diff --git a/pkgs/servers/trezord/default.nix b/pkgs/servers/trezord/default.nix new file mode 100644 index 000000000000..0fad00e882da --- /dev/null +++ b/pkgs/servers/trezord/default.nix @@ -0,0 +1,51 @@ +{ 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 + ''; +} + diff --git a/pkgs/servers/trezord/dynamic-link.patch b/pkgs/servers/trezord/dynamic-link.patch new file mode 100644 index 000000000000..0f1f448a3f79 --- /dev/null +++ b/pkgs/servers/trezord/dynamic-link.patch @@ -0,0 +1,18 @@ +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) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 47535f0ac0a5..04db3d9d5dcc 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4086,6 +4086,8 @@ with pkgs; tpm-luks = callPackage ../tools/security/tpm-luks { }; + trezord = callPackage ../servers/trezord { }; + tthsum = callPackage ../applications/misc/tthsum { }; chaps = callPackage ../tools/security/chaps { };