summary refs log tree commit diff
path: root/nixos/modules/hardware
diff options
context:
space:
mode:
authorMichele Guerini Rocco <rnhmjoj@users.noreply.github.com>2021-02-06 18:22:34 +0100
committerGitHub <noreply@github.com>2021-02-06 18:22:34 +0100
commit75156546fc493f3c6b3fe5b05f1091cce98ad7cc (patch)
tree31ad36bc1c8e7d98d908e578b607f28a4a9fae97 /nixos/modules/hardware
parentf612584976b473a318282931529cc30fced8a33c (diff)
parentafde0286728e1933ead350d7aabc72668db0194c (diff)
downloadnixpkgs-75156546fc493f3c6b3fe5b05f1091cce98ad7cc.tar
nixpkgs-75156546fc493f3c6b3fe5b05f1091cce98ad7cc.tar.gz
nixpkgs-75156546fc493f3c6b3fe5b05f1091cce98ad7cc.tar.bz2
nixpkgs-75156546fc493f3c6b3fe5b05f1091cce98ad7cc.tar.lz
nixpkgs-75156546fc493f3c6b3fe5b05f1091cce98ad7cc.tar.xz
nixpkgs-75156546fc493f3c6b3fe5b05f1091cce98ad7cc.tar.zst
nixpkgs-75156546fc493f3c6b3fe5b05f1091cce98ad7cc.zip
Merge pull request #111996 from rnhmjoj/i2c
nixos/i2c: add module to set up i2c permissions
Diffstat (limited to 'nixos/modules/hardware')
-rw-r--r--nixos/modules/hardware/i2c.nix43
1 files changed, 43 insertions, 0 deletions
diff --git a/nixos/modules/hardware/i2c.nix b/nixos/modules/hardware/i2c.nix
new file mode 100644
index 00000000000..ff14b4b1c89
--- /dev/null
+++ b/nixos/modules/hardware/i2c.nix
@@ -0,0 +1,43 @@
+{ config, lib, ... }:
+
+with lib;
+
+let
+  cfg = config.hardware.i2c;
+in
+
+{
+  options.hardware.i2c = {
+    enable = mkEnableOption ''
+      i2c devices support. By default access is granted to users in the "i2c"
+      group (will be created if non-existent) and any user with a seat, meaning
+      logged on the computer locally.
+    '';
+
+    group = mkOption {
+      type = types.str;
+      default = "i2c";
+      description = ''
+        Grant access to i2c devices (/dev/i2c-*) to users in this group.
+      '';
+    };
+  };
+
+  config = mkIf cfg.enable {
+
+    boot.kernelModules = [ "i2c-dev" ];
+
+    users.groups = mkIf (cfg.group == "i2c") {
+      i2c = { };
+    };
+
+    services.udev.extraRules = ''
+      # allow group ${cfg.group} and users with a seat use of i2c devices
+      ACTION=="add", KERNEL=="i2c-[0-9]*", TAG+="uaccess", GROUP="${cfg.group}", MODE="660"
+    '';
+
+  };
+
+  meta.maintainers = [ maintainers.rnhmjoj ];
+
+}