{
  lib,
  config,
  pkgs,
  ...
}: {
  options.host.hardware = {
    piperMouse = {
      enable = lib.mkEnableOption "host has a piper mouse";
    };
    viaKeyboard = {
      enable = lib.mkEnableOption "host has a via keyboard";
    };
    openRGB = {
      enable = lib.mkEnableOption "host has open rgb hardware";
    };
    graphicsAcceleration = {
      enable = lib.mkEnableOption "host has a gpu for graphical acceleration";
    };
    directAccess = {
      enable = lib.mkEnableOption "can a host be used on its own";
    };
  };
  config = lib.mkMerge [
    (lib.mkIf config.host.hardware.piperMouse.enable {
      services.ratbagd.enable = true;
    })
    (lib.mkIf config.host.hardware.viaKeyboard.enable {
      hardware.keyboard.qmk.enable = true;

      services.udev.packages = [pkgs.via];
    })
  ];
}