summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndrew Cann <shum@canndrew.org>2017-02-09 00:18:22 +0800
committerJoachim F <joachifm@users.noreply.github.com>2017-02-08 17:18:22 +0100
commit3082647e740cd6df15f9515c3c436d1344b52b53 (patch)
tree5382581d222888587a4cbbb9fad0c960d7492f52
parentae02508c2a378a5721769bb466b12e8a4ff2e7a2 (diff)
downloadnixpkgs-3082647e740cd6df15f9515c3c436d1344b52b53.tar
nixpkgs-3082647e740cd6df15f9515c3c436d1344b52b53.tar.gz
nixpkgs-3082647e740cd6df15f9515c3c436d1344b52b53.tar.bz2
nixpkgs-3082647e740cd6df15f9515c3c436d1344b52b53.tar.lz
nixpkgs-3082647e740cd6df15f9515c3c436d1344b52b53.tar.xz
nixpkgs-3082647e740cd6df15f9515c3c436d1344b52b53.tar.zst
nixpkgs-3082647e740cd6df15f9515c3c436d1344b52b53.zip
trezord: init at 1.2.0 (#22054)
-rw-r--r--lib/maintainers.nix1
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/hardware/trezord.nix54
-rw-r--r--pkgs/servers/trezord/default.nix51
-rw-r--r--pkgs/servers/trezord/dynamic-link.patch18
-rw-r--r--pkgs/top-level/all-packages.nix2
6 files changed, 127 insertions, 0 deletions
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index bf8eb6c4974..98cbc93bcd5 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -81,6 +81,7 @@
   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>";
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index bd427bc679c..ad823c755e2 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 00000000000..38d0a3a1d75
--- /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 00000000000..0fad00e882d
--- /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 00000000000..0f1f448a3f7
--- /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 47535f0ac0a..04db3d9d5dc 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 { };