{ pkgs, config, lib, ... }: let cfg = config.my.graphical; in { options.my.graphical = { qt.enable = lib.mkEnableOption null // { default = true; }; gtk = { enable = lib.mkEnableOption null // { default = true; }; emacsKeys.enable = lib.mkEnableOption null; }; }; config = lib.mkIf cfg.enable (lib.mkMerge [ (lib.mkIf cfg.qt.enable { qt = { enable = true; platformTheme.name = "gtk3"; }; }) (lib.mkIf cfg.gtk.enable { dconf.settings = { "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; gtk-key-theme = lib.mkIf (cfg.gtk.emacsKeys.enable) "Emacs"; }; "org/gnome/desktop/wm/preferences" = { button-layout = ""; }; }; gtk = { enable = true; font = { package = pkgs.inter; name = "Inter"; size = 11; }; iconTheme = { package = pkgs.catppuccin-papirus-folders.override { flavor = "mocha"; accent = "lavender"; }; name = "Papirus-Dark"; }; theme = { package = pkgs.catppuccin-gtk.override { accents = [ "lavender" ]; size = "compact"; tweaks = [ "rimless" ]; variant = "mocha"; }; name = "catppuccin-mocha-lavender-compact+rimless"; }; } // lib.optionalAttrs cfg.gtk.emacsKeys.enable { gtk2.extraConfig = '' gtk-key-theme-name = "Emacs" ''; gtk3.extraConfig = { gtk-key-theme-name = "Emacs"; }; }; }) ]); }