{ config, lib, pkgs, ... }:


let
  inherit (lib) mkDefault mkEnableOption mkIf mkMerge;

  cfg = config.microsoft-surface.surface-control;

in {
  options.microsoft-surface.surface-control = {
    enable = mkEnableOption "Enable 'surface-control' for Microsoft Surface";
  };

  config = mkMerge [
    {
      microsoft-surface.surface-control.enable = mkDefault false;
    }

    (mkIf cfg.enable {
      environment.systemPackages = with pkgs; [ surface-control ];
      services.udev.packages = with pkgs; [ surface-control];
      users.groups.surface-control = { };
    })
  ];
}