{ config, pkgs, lib, ... }: let inherit (config.nmasur.settings) username; cfg = config.nmasur.profiles.gui; in { options.nmasur.profiles.gui.enable = lib.mkEnableOption "GUI machine"; config = lib.mkIf cfg.enable { nmasur.presets.services.kanata.enable = lib.mkDefault true; # Mouse customization services.ratbagd.enable = lib.mkDefault true; environment.systemPackages = lib.mkDefault [ pkgs.libratbag # Mouse adjustments pkgs.piper # Mouse adjustments GUI pkgs.ddcutil # Monitor brightness control ]; services.libinput.mouse = { # Disable mouse acceleration accelProfile = lib.mkDefault "flat"; accelSpeed = lib.mkDefault "1.15"; }; # Enable touchpad support services.libinput.enable = true; services.xserver = { xkb.layout = lib.mkDefault "us"; # Keyboard responsiveness autoRepeatDelay = lib.mkDefault 250; autoRepeatInterval = lib.mkDefault 40; windowManager = { i3 = { enable = lib.mkDefault true; }; }; }; # Detect monitors (brightness) for ddcutil hardware.i2c.enable = lib.mkDefault true; users.users.${username} = { # Grant main user access to external monitors extraGroups = lib.mkDefault [ "i2c" ]; # Automatically create a password to start hashedPassword = lib.mkDefault (lib.fileContents ../../../../../misc/password.sha512); }; services.xserver.displayManager = { # Put the login screen on the left monitor lightdm.greeters.gtk.extraConfig = lib.mkDefault '' active-monitor=0 ''; # Set up screen position and rotation setupCommands = lib.mkDefault '' ${pkgs.xorg.xrandr}/bin/xrandr --output DisplayPort-1 \ --primary \ --rotate normal \ --mode 2560x1440 \ --rate 165 \ --output DisplayPort-2 \ --right-of DisplayPort-1 \ --rotate left \ --output DVI-0 --off \ --output DVI-1 --off \ || echo "xrandr failed" ''; }; # Required for setting GTK theme (for preferred-color-scheme in browser) services.dbus.packages = [ pkgs.dconf ]; programs.dconf.enable = true; # TODO: can we get rid of this? # environment.sessionVariables = { # GTK_THEME = config.gtk.theme.name; # }; }; }