summary refs log tree commit diff
path: root/nixos/modules/hardware
diff options
context:
space:
mode:
authorYurii Rashkovskii <yrashk@gmail.com>2018-01-12 10:23:05 -0800
committerYurii Rashkovskii <yrashk@gmail.com>2018-03-18 12:49:13 +0700
commit738bcfdef8bb3bf4c4135375de8efaabe63f6eb4 (patch)
tree3254b0201b2ada04db3befb45ab1bae122f5dd17 /nixos/modules/hardware
parentb80dd958d053f56802874fdb440c8f821db751c3 (diff)
downloadnixlib-738bcfdef8bb3bf4c4135375de8efaabe63f6eb4.tar
nixlib-738bcfdef8bb3bf4c4135375de8efaabe63f6eb4.tar.gz
nixlib-738bcfdef8bb3bf4c4135375de8efaabe63f6eb4.tar.bz2
nixlib-738bcfdef8bb3bf4c4135375de8efaabe63f6eb4.tar.lz
nixlib-738bcfdef8bb3bf4c4135375de8efaabe63f6eb4.tar.xz
nixlib-738bcfdef8bb3bf4c4135375de8efaabe63f6eb4.tar.zst
nixlib-738bcfdef8bb3bf4c4135375de8efaabe63f6eb4.zip
config.hardware.onlykey configuration option
By default, OnlyKey device (https://crp.to/p/) won't work on Linux (and,
therefore, NixOS). This is unintuitive and requires one to search for a
solution in the documentation.

This change allows one to enable OnlyKey device support directly from
their NixOS configuration.
Diffstat (limited to 'nixos/modules/hardware')
-rw-r--r--nixos/modules/hardware/onlykey.nix33
-rw-r--r--nixos/modules/hardware/onlykey.udev4
2 files changed, 37 insertions, 0 deletions
diff --git a/nixos/modules/hardware/onlykey.nix b/nixos/modules/hardware/onlykey.nix
new file mode 100644
index 000000000000..b6820fe01911
--- /dev/null
+++ b/nixos/modules/hardware/onlykey.nix
@@ -0,0 +1,33 @@
+{ config, lib, ... }:
+
+with lib;
+
+{
+
+  ####### interface
+
+  options = {
+
+    hardware.onlykey = {
+      enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Enable OnlyKey device (https://crp.to/p/) support.
+        '';
+      };
+    };
+
+  };
+
+  ## As per OnlyKey's documentation piece (hhttps://docs.google.com/document/d/1Go_Rs218fKUx-j_JKhddbSVTqY6P0vQO831t2MKCJC8),
+  ## it is important to add udev rule for OnlyKey for it to work on Linux
+
+  ####### implementation
+
+  config = mkIf config.hardware.onlykey.enable {
+    services.udev.extraRules = builtin.readFile ./onlykey.udev;
+  };
+
+
+}
diff --git a/nixos/modules/hardware/onlykey.udev b/nixos/modules/hardware/onlykey.udev
new file mode 100644
index 000000000000..6583530e5684
--- /dev/null
+++ b/nixos/modules/hardware/onlykey.udev
@@ -0,0 +1,4 @@
+ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", ENV{ID_MM_DEVICE_IGNORE}="1"
+ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789A]?", ENV{MTP_NO_PROBE}="1"
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789ABCD]?", GROUP+="plugdev"
+KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789B]?", GROUP+="plugdev"