{ config, lib, pkgs, ... }: with lib; let cfg = config.nixfiles.modules.x11; in { options.nixfiles.modules.x11.enable = mkEnableOption "X11"; config = mkIf cfg.enable { hm = { home = { sessionVariables = { XCOMPOSEFILE = pkgs.writeText "XCompose" '' include "${pkgs.xorg.libX11}/share/X11/locale/en_US.UTF-8/Compose" ''; XCOMPOSECACHE = "${config.dirs.cache}/libx11/compose"; }; packages = with pkgs; [ xclip ]; }; xresources.properties = { "Xft.antialias" = mkDefault 1; "Xft.autohint" = mkDefault 0; "Xft.hinting" = mkDefault 1; "Xft.hintstyle" = mkDefault "hintslight"; "Xft.lcdfilter" = mkDefault "lcddefault"; "Xft.rgba" = mkDefault "rgb"; }; services.xsettingsd = { enable = true; # https://codeberg.org/derat/xsettingsd#settings settings = let xprop = config.hm.xresources.properties; in { "Net/CursorBlink" = 1; "Net/CursorBlinkTime" = 1200; "Net/DndDragThreshold" = 0; "Net/DoubleClickDistance" = 5; "Net/DoubleClickTime" = 250; "Net/EnableEventSounds" = 1; "Net/EnableInputFeedbackSounds" = 1; "Xft/Antialias" = xprop."Xft.antialias"; "Xft/HintStyle" = xprop."Xft.hintstyle"; "Xft/Hinting" = xprop."Xft.hinting"; "Xft/RGBA" = xprop."Xft.rgba"; }; }; }; services.xserver = { enable = true; tty = mkDefault 1; autoRepeatDelay = 200; autoRepeatInterval = 50; monitorSection = '' Option "DPMS" "false" ''; serverFlagsSection = '' Option "BlankTime" "0" Option "OffTime" "0" Option "StandbyTime" "0" Option "SuspendTime" "0" ''; inputClassSections = [ '' Identifier "Mouse" MatchIsPointer "yes" Option "AccelerationNumerator" "2" Option "AccelerationDenominator" "1" Option "AccelerationThreshold" "4" '' ]; }; }; }