{ config, pkgs, lib, inputs, ... }: { config = lib.mkIf (lib.elem config.networking.hostName [ "FredOS-Gaming" "FredOS-Macbook" ]) { # Enable Gnome services.xserver.enable = true; services.displayManager.ly.enable = true; services.displayManager.defaultSession = "hyprland"; services.desktopManager.gnome.enable = 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 ]; # Cursor theme — stylix.cursor in settings/stylix.nix owns the choice. environment.sessionVariables = { XCURSOR_THEME = "Bibata-Modern-Ice"; XCURSOR_SIZE = "24"; XCURSOR_PATH = lib.mkForce [ "${pkgs.bibata-cursors}/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.name = "adwaita"; style.name = "adwaita-dark"; }; programs.xwayland.enable = true; programs.dconf.enable = true; # Home Manager GNOME settings home-manager.users.fred = { config, lib, pkgs, ... }: { # Stylix's qt target only supports qtct; disable it to silence the warning. stylix.targets.qt.enable = false; # Minimal titlebars — stylix manages the GTK theme; we layer our # headerbar shrink on top via programs.gtk.*.extraCss. gtk.enable = true; # gtk.gtk3.extraCss / gtk4.extraCss are no-ops once stylix owns the # theme — extra CSS has to go through stylix.targets.gtk.extraCss. stylix.targets.gtk.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; }; }; }; }; }