{ config, pkgs, lib, inputs, ... }: { config = lib.mkIf (lib.elem config.networking.hostName [ "FredOS-Gaming" "FredOS-Macbook" ]) { # Enable Gnome services.xserver.enable = true; services.displayManager.gdm.enable = true; services.desktopManager.gnome.enable = true; services.displayManager.gdm.wayland = true; boot.plymouth.enable = false; # Flatpak for ad-hoc app installs via Bazaar services.flatpak.enable = true; # Add extensions, packages, and terminal environment.systemPackages = with pkgs; [ ghostty gnomeExtensions.blur-my-shell gnomeExtensions.just-perfection gnomeExtensions.appindicator gnomeExtensions.hot-edge adwaita-icon-theme gnome-themes-extra adwaita-icon-theme-legacy papirus-icon-theme ]; # Set cursor theme environment.sessionVariables = { XCURSOR_THEME = "Adwaita"; XCURSOR_SIZE = "24"; XCURSOR_PATH = lib.mkForce [ "${pkgs.adwaita-icon-theme}/share/icons" "$HOME/.icons" "$HOME/.local/share/icons" ]; }; # mutter VRR — stylix handles theme/icon dconf entries programs.dconf.profiles.user.databases = [{ settings = { "org/gnome/desktop/interface" = { icon-theme = "WallpaperAdwaita"; }; "org/gnome/mutter" = { experimental-features = [ "variable-refresh-rate" ]; }; }; }]; qt = { enable = true; platformTheme = "gnome"; style = "adwaita-dark"; }; programs.xwayland.enable = true; programs.dconf.enable = true; # Home Manager GNOME settings home-manager.users.fred = { config, lib, pkgs, ... }: { # Minimal titlebars — stylix manages the GTK theme; we layer our # headerbar shrink on top via programs.gtk.*.extraCss. gtk = { enable = true; gtk3.extraCss = '' headerbar { min-height: 0; padding: 0; margin: 0; } headerbar .title { font-size: 0; } ''; gtk4.extraCss = '' headerbar { min-height: 0; padding: 0; margin: 0; } headerbar .title { font-size: 0; } window:backdrop { background-color: @window_bg_color; color: @window_fg_color; } window:backdrop headerbar { background-color: @headerbar_bg_color; color: @headerbar_fg_color; } ''; }; # GNOME dconf settings — stylix owns colour-scheme, gtk-theme, # cursor-theme and accent-color now. dconf.settings = { "org/gnome/desktop/interface" = { enable-hot-corners = false; }; # Wallpaper now set by stylix's gnome target. # Keyboard input sources "org/gnome/desktop/input-sources" = { sources = [ (lib.hm.gvariant.mkTuple [ "xkb" "gb" ]) (lib.hm.gvariant.mkTuple [ "xkb" "no" ]) ]; }; # Window manager keybindings "org/gnome/desktop/wm/keybindings" = { close = ["q"]; toggle-fullscreen = ["f"]; }; "org/gnome/desktop/wm/preferences" = { resize-with-right-button = lib.hm.gvariant.mkBoolean true; button-layout = ""; }; # Shell keybindings "org/gnome/shell/keybindings" = { show-screenshot-ui = ["s"]; }; # Custom keybindings "org/gnome/settings-daemon/plugins/media-keys" = { home = ["e"]; control-center = ["i"]; custom-keybindings = [ "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" ]; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { name = "Terminal"; command = "ghostty"; binding = "t"; }; # Mouse acceleration "org/gnome/desktop/peripherals/mouse" = { accel-profile = "flat"; }; # Just Perfection extension "org/gnome/shell/extensions/just-perfection" = { window-demands-attention-focus = true; }; }; }; }; }