{ config, lib, ... }: with lib; let cfg = config.voidcruiser.xconfig; in { options.voidcruiser.xconfig = { enable = mkEnableOption "Enables opinionated xorg config"; bqn.enable = mkEnableOption "Enables bqn layout"; touchpad.enableProperConfig = mkEnableOption "Enable the only correct touchpad settings"; touchpad.accelProfile = mkOption { type = types.enum [ "flat" "adaptive" ]; default = "adaptive"; example = "flat"; description = '' Usually want this on adaptive. ''; }; mouse.accelProfile = mkOption { type = types.enum [ "flat" "adaptive" ]; default = "flat"; example = "adaptive"; description = '' Use addaptive on trackball and touchpad; and flat on any normal mouse. ''; }; lightdm.enable = mkEnableOption "Enables the LightDM display manager and config"; lightdm.background = mkOption { default = ./images/city.png; type = types.path; description = '' Display manager background. ''; }; }; config = mkIf cfg.enable { services.xserver = { extraLayouts.bqn = mkIf cfg.bqn.enable { description = "BQN layout"; languages = [ "bqn" ]; symbolsFile = ./misc/bqn; }; layout = (if cfg.bqn.enable then "us,bqn" else "us"); xkbOptions = mkIf cfg.bqn.enable "grp:switch"; enable = true; autoRepeatDelay = 250; autoRepeatInterval = 30; windowManager = { windowmaker.enable = true; xmonad.enable = true; }; displayManager.lightdm = { enable = cfg.lightdm.enable; greeters.gtk.enable = true; background = cfg.lightdm.background; }; libinput = { mouse = { accelProfile = cfg.mouse.accelProfile; middleEmulation = false; }; touchpad.accelProfile = cfg.touchpad.accelProfile; touchpad = mkIf cfg.touchpad.enableProperConfig { tapping = false; disableWhileTyping = true; }; }; }; }; }