1{ config, lib, pkgs, ... }:
2
3with lib;
4
5let
6 cfg = config.programs.k40-whisperer;
7 pkg = cfg.package.override {
8 udevGroup = cfg.group;
9 };
10in
11{
12 options.programs.k40-whisperer = {
13 enable = mkEnableOption (lib.mdDoc "K40-Whisperer");
14
15 group = mkOption {
16 type = types.str;
17 description = lib.mdDoc ''
18 Group assigned to the device when connected.
19 '';
20 default = "k40";
21 };
22
23 package = mkOption {
24 type = types.package;
25 default = pkgs.k40-whisperer;
26 defaultText = literalExpression "pkgs.k40-whisperer";
27 example = literalExpression "pkgs.k40-whisperer";
28 description = lib.mdDoc ''
29 K40 Whisperer package to use.
30 '';
31 };
32 };
33
34 config = mkIf cfg.enable {
35 users.groups.${cfg.group} = {};
36
37 environment.systemPackages = [ pkg ];
38 services.udev.packages = [ pkg ];
39 };
40}