{ config, lib, ... }: with lib; let cfg = config.nixfiles.modules.x11; in { options.nixfiles.modules.x11.enable = mkEnableOption "X11"; config = mkIf cfg.enable { nixfiles.modules.fonts.enable = true; hm = { home.sessionVariables = with config.dirs; { XCOMPOSEFILE = "${cache}/XComposeFile"; XCOMPOSECACHE = "${cache}/XComposeCache"; }; xsession.scriptPath = ".xinitrc"; xresources.properties = (let font = with config.fontScheme.monospaceFont; "${family}:style=${style}:size=${toString size}"; in { "*.font" = font; "Xft.antialias" = 1; "Xft.autohint" = 0; "Xft.dpi" = 96; "Xft.hinting" = 1; "Xft.hintstyle" = "hintslight"; "Xft.lcdfilter" = "lcddefault"; "Xft.rgba" = "rgb"; }) // (with config.colourScheme; { "*.color0" = black; "*.color8" = brightBlack; "*.color1" = red; "*.color9" = brightRed; "*.color2" = green; "*.color10" = brightGreen; "*.color3" = yellow; "*.color11" = brightYellow; "*.color4" = blue; "*.color12" = brightBlue; "*.color5" = magenta; "*.color13" = brightMagenta; "*.color6" = cyan; "*.color14" = brightCyan; "*.color7" = white; "*.color15" = brightWhite; "*.background" = background; "*.foreground" = foreground; }); }; services.xserver = { enable = true; tty = mkDefault 1; autoRepeatDelay = 200; autoRepeatInterval = 25; libinput.enable = true; 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" '' ]; }; }; }