diff options
author | Michele Guerini Rocco <rnhmjoj@users.noreply.github.com> | 2021-02-06 18:22:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-06 18:22:34 +0100 |
commit | 75156546fc493f3c6b3fe5b05f1091cce98ad7cc (patch) | |
tree | 31ad36bc1c8e7d98d908e578b607f28a4a9fae97 /nixos/modules | |
parent | f612584976b473a318282931529cc30fced8a33c (diff) | |
parent | afde0286728e1933ead350d7aabc72668db0194c (diff) |
Merge pull request #111996 from rnhmjoj/i2c
nixos/i2c: add module to set up i2c permissions
Diffstat (limited to 'nixos/modules')
-rw-r--r-- | nixos/modules/hardware/i2c.nix | 43 | ||||
-rw-r--r-- | nixos/modules/module-list.nix | 1 |
2 files changed, 44 insertions, 0 deletions
diff --git a/nixos/modules/hardware/i2c.nix b/nixos/modules/hardware/i2c.nix new file mode 100644 index 0000000000000..ff14b4b1c891d --- /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 ]; + +} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index acd5ad9de2e77..7a656a58e9c27 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -46,6 +46,7 @@ ./hardware/cpu/intel-microcode.nix ./hardware/digitalbitbox.nix ./hardware/device-tree.nix + ./hardware/i2c.nix ./hardware/sensor/hddtemp.nix ./hardware/sensor/iio.nix ./hardware/keyboard/zsa.nix |