{ 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]; }) ]; }