2019-06-10 17:05:36 +02:00
|
|
|
{ pkgs, lib, config, ... }:
|
|
|
|
|
with lib;
|
|
|
|
|
let
|
|
|
|
|
cfg = config.niveum.traadfri;
|
2021-12-31 16:57:45 +01:00
|
|
|
traadfri = pkgs.callPackage <traadfri> {
|
2020-06-10 17:37:25 +02:00
|
|
|
libcoap = pkgs.callPackage <niveum/packages/libcoap.nix> { tls = true; };
|
|
|
|
|
};
|
|
|
|
|
in {
|
2019-06-10 17:05:36 +02:00
|
|
|
options.niveum.traadfri = {
|
|
|
|
|
enable = mkEnableOption "Trådfri CLI";
|
|
|
|
|
user = mkOption { type = types.str; };
|
|
|
|
|
host = mkOption { type = types.str; };
|
|
|
|
|
key = mkOption { type = types.str; };
|
2020-06-10 17:37:25 +02:00
|
|
|
rooms = mkOption {
|
|
|
|
|
type = types.attrsOf types.int;
|
|
|
|
|
default = { };
|
|
|
|
|
};
|
|
|
|
|
bulbs = mkOption {
|
|
|
|
|
type = types.attrsOf types.int;
|
|
|
|
|
default = { };
|
|
|
|
|
};
|
2019-06-10 17:05:36 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
config = mkIf cfg.enable {
|
|
|
|
|
environment.systemPackages = [
|
2019-07-03 22:12:40 +02:00
|
|
|
(pkgs.writers.writeDashBin "traadfri" ''
|
2019-06-10 17:05:36 +02:00
|
|
|
TRAADFRI_USER="${cfg.user}" \
|
|
|
|
|
TRAADFRI_KEY="${cfg.key}" \
|
|
|
|
|
TRAADFRI_HUB="${cfg.host}" \
|
|
|
|
|
${traadfri}/bin/traadfri $@
|
|
|
|
|
'')
|
2022-01-31 09:33:04 +01:00
|
|
|
] ++ lib.mapAttrsToList (name: value: pkgs.writers.writeDashBin "traadfri-${name}" ''
|
2022-01-31 19:46:59 +01:00
|
|
|
exec traadfri --target Room ${toString value} "$@"
|
2022-01-31 09:33:04 +01:00
|
|
|
'') cfg.rooms
|
|
|
|
|
++ lib.mapAttrsToList (name: value: pkgs.writers.writeDashBin "traadfri-${name}" ''
|
2022-01-31 19:46:59 +01:00
|
|
|
exec traadfri --target Bulb ${toString value} "$@"
|
2022-01-31 09:33:04 +01:00
|
|
|
'') cfg.bulbs;
|
2019-06-10 17:05:36 +02:00
|
|
|
};
|
|
|
|
|
}
|