{ config, pkgs, lib, username, ... }: { services.xserver = { enable = true; displayManager.gdm.enable = true; desktopManager.gnome.enable = true; }; environment = { systemPackages = (with pkgs;[ gnome-tweaks gnome-shell-extensions ]) ++ (with pkgs.gnomeExtensions;[ dash-to-dock appindicator # tray icon ]); gnome.excludePackages = (with pkgs; [ atomix # puzzle game cheese # webcam tool gnome-photos gnome-tour gnome-text-editor epiphany # web browser geary # email reader evince # document viewer gedit # text editor gnome-contacts gnome-maps gnome-weather gnome-music gnome-characters # gnome-terminal hitori # sudoku game iagno # go game simple-scan totem # video player tali # poker game yelp # help viewer ]); variables = { "GTK_IM_MODULE" = "fcitx"; "QT_IM_MODULE" = "fcitx"; "XMODIFIERS" = "@im=fcitx"; "SDL_IM_MODULE" = "fcitx"; "GLFW_IM_MODULE" = "ibus"; }; }; programs = { dconf = { enable = true; profiles = { # TODO: Investigate customizing gdm greeter. user.databases = [{ settings = with lib.gvariant; { "org/gnome/desktop/interface" = { clock-show-weekday = true; cursor-size = mkUint32 16; cursor-theme = "capitaine-cursors"; enable-hot-corners = false; icon-theme = "Papirus-Dark"; locate-pointer = false; monospace-font-name = "JetBrainsMono Nerd Font Mono 10"; overlay-scrolling = true; }; "org/gnome/mutter" = { edge-tiling = true; attach-modal-dialogs = true; experimental-features = [ "scale-monitor-framebuffer" ]; }; "org/gnome/shell" = { last-selected-power-profile = "power-saver"; }; "org/gnome/desktop/session" = { idle-delay = mkUint32 900; }; "org/gnome/settings-daemon/plugins/power" = { power-button-action = "interactive"; sleep-inactive-ac-timeout = mkUint32 7200; sleep-inactive-ac-type = "nothing"; }; "org/gtk/gtk4/settings/file-chooser" = { sort-directories-first = true; # show-hidden = true; view-type = "list"; }; "org/gnome/desktop/wm/keybindings" = { minimize = mkEmptyArray type.string; move-to-workspace-1 = [ "1" ]; move-to-workspace-2 = [ "2" ]; move-to-workspace-3 = [ "3" ]; move-to-workspace-4 = [ "4" ]; switch-to-workspace-1 = [ "1" ]; switch-to-workspace-2 = [ "2" ]; switch-to-workspace-3 = [ "3" ]; switch-to-workspace-4 = [ "4" ]; switch-to-workspace-left = [ "h" ]; switch-to-workspace-right = [ "l" ]; switch-windows = [ "Tab" ]; switch-windows-backward = [ "Tab" ]; switch-applications = [ "Tab" ]; switch-applications-backward = [ "Tab" ]; }; "org/gnome/shell/keybindings" = { # Following binds are replaced by the ones above. switch-to-application-1 = mkEmptyArray type.string; switch-to-application-2 = mkEmptyArray type.string; switch-to-application-3 = mkEmptyArray type.string; switch-to-application-4 = mkEmptyArray type.string; }; "org/gnome/shell" = { enabled-extensions = [ "appindicatorsupport@rgcjonas.gmail.com" "dash-to-dock@micxgx.gmail.com" "status-icons@gnome-shell-extensions.gcampax.github.com" "system-monitor@gnome-shell-extensions.gcampax.github.com" ]; }; "org/gnome/shell/extensions/dash-to-panel" = { apply-custom-theme = false; background-opacity = 0.8; click-action = "previews"; custom-background-color = false; custom-theme-shrink = true; dash-max-icon-size = mkUint32 40; dock-position = "BOTTOM"; extend-height = false; height-fraction = 0.9; hot-keys = false; icon-size-fixed = true; isolate-monitors = true; max-alpha = 0.8; multi-monitor = true; preview-size-scale = 0.0; running-indicator-style = "DOTS"; scroll-action = "cycle-windows"; show-mounts = false; show-mounts-only-mounted = true; transparency-mode = "DYNAMIC"; }; "org/gnome/shell/extensions/system-monitor" = { show-download = true; show-swap = false; show-upload = false; }; }; }]; }; }; }; }