nixos/preload: init
[NixPkgs.git] / nixos / modules / hardware / ckb-next.nix
blob79977939eec81f245a074164954bf84ecd3ec6b0
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   cfg = config.hardware.ckb-next;
8 in
9   {
10     imports = [
11       (mkRenamedOptionModule [ "hardware" "ckb" "enable" ] [ "hardware" "ckb-next" "enable" ])
12       (mkRenamedOptionModule [ "hardware" "ckb" "package" ] [ "hardware" "ckb-next" "package" ])
13     ];
15     options.hardware.ckb-next = {
16       enable = mkEnableOption (lib.mdDoc "the Corsair keyboard/mouse driver");
18       gid = mkOption {
19         type = types.nullOr types.int;
20         default = null;
21         example = 100;
22         description = lib.mdDoc ''
23           Limit access to the ckb daemon to a particular group.
24         '';
25       };
27       package = mkOption {
28         type = types.package;
29         default = pkgs.ckb-next;
30         defaultText = literalExpression "pkgs.ckb-next";
31         description = lib.mdDoc ''
32           The package implementing the Corsair keyboard/mouse driver.
33         '';
34       };
35     };
37     config = mkIf cfg.enable {
38       environment.systemPackages = [ cfg.package ];
40       systemd.services.ckb-next = {
41         description = "Corsair Keyboards and Mice Daemon";
42         wantedBy = ["multi-user.target"];
43         serviceConfig = {
44           ExecStart = "${cfg.package}/bin/ckb-next-daemon ${optionalString (cfg.gid != null) "--gid=${builtins.toString cfg.gid}"}";
45           Restart = "on-failure";
46         };
47       };
48     };
50     meta = {
51       maintainers = with lib.maintainers; [ ];
52     };
53   }