nix-config/modules/pi-sensors.nix

42 lines
1.0 KiB
Nix

{ pkgs, config, lib, ... }:
{
options.c3d2.pi-sensors = lib.mkOption {
default = [];
type = with lib.types; listOf (submodule (_: {
options = {
type = lib.mkOption {
description = "Sensor type";
type = enum ["dht22"];
};
pin = lib.mkOption {
description = "GPIO pin";
type = int;
};
location = lib.mkOption {
description = "Sensor location";
type = str;
};
};
}));
};
config = lib.mkIf (config.c3d2.pi-sensors != []) {
# GPIO requires access to /dev/mem
security.wrappers.pi-sensors = {
setuid = true;
owner = "root";
group = "root";
source = "${pkgs.pi-sensors}/bin/pi-sensors";
};
services.collectd.plugins.exec = ''
Exec "${config.services.collectd.user}" "/run/wrappers/bin/pi-sensors" "2"${lib.concatMapStrings (s: " \"${s}\"") (
lib.concatMap ({ type, pin, location }:
[ type (toString pin) location ]
) config.c3d2.pi-sensors
)}
'';
};
}