nixos/settings/gnome.nix
ediblerope ed526791f0 Polish wallpaper theming across Shell, VSCodium, Zen, and GTK4
Comprehensive GNOME Shell theme: accent variable overrides, quick
toggle states, chevrons, sliders, sub-menus, header buttons,
overview/dash/search/app-grid styling. Fix GTK4 backdrop so Nautilus
keeps palette colors when unfocused. Expand VSCodium color coverage
(diff editor, widgets, notifications, scrollbars). Add more Zen
browser CSS variables for broader UI theming.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 22:21:07 +01:00

182 lines
5.3 KiB
Nix

{ 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
gnomeExtensions.user-themes
#gnomeExtensions.rounded-window-corners-reborn
adwaita-icon-theme
gnome-themes-extra
adwaita-icon-theme-legacy
papirus-icon-theme
adw-gtk3
matugen
jq
];
# 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"
];
};
# Set icon theme via dconf
programs.dconf.profiles.user.databases = [{
settings = {
"org/gnome/desktop/interface" = {
icon-theme = "WallpaperAdwaita";
cursor-theme = "Adwaita";
};
"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, ... }: {
home.file.".local/share/backgrounds/wallpaper.png".source =
"${inputs.self}/walls/wallpaper.png";
# Minimal titlebars — hide window buttons and shrink headerbar
home.file.".config/gtk-4.0/gtk.css".force = true;
home.file.".config/gtk-4.0/gtk.css".text = ''
@import url("colors.css");
headerbar {
min-height: 0;
padding: 0;
margin: 0;
}
headerbar .title {
font-size: 0;
}
/* Keep wallpaper colors when window loses focus */
window:backdrop {
background-color: @window_bg_color;
color: @window_fg_color;
}
window:backdrop headerbar {
background-color: @headerbar_bg_color;
color: @headerbar_fg_color;
}
window:backdrop .navigation-sidebar {
background-color: @sidebar_bg_color;
color: @sidebar_fg_color;
}
'';
home.file.".config/gtk-3.0/gtk.css".force = true;
home.file.".config/gtk-3.0/gtk.css".text = ''
headerbar {
min-height: 0;
padding: 0;
margin: 0;
}
headerbar .title {
font-size: 0;
}
'';
# GNOME dconf settings
dconf.settings = {
# Interface / theme
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
gtk-theme = "adw-gtk3-dark";
enable-hot-corners = false;
accent-color = "purple";
cursor-theme = "Adwaita";
cursor-size = 24;
};
# Wallpaper settings
"org/gnome/desktop/background" = {
picture-uri = "file://${config.home.homeDirectory}/.local/share/backgrounds/wallpaper.png";
picture-uri-dark = "file://${config.home.homeDirectory}/.local/share/backgrounds/wallpaper.png";
picture-options = "zoom";
};
# 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 = ["<Super>q"];
toggle-fullscreen = ["<Super>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 = ["<Shift><Super>s"];
};
# Custom keybindings
"org/gnome/settings-daemon/plugins/media-keys" = {
home = ["<Super>e"];
control-center = ["<Super>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 = "<Super>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;
};
# User themes extension — load wallpaper shell theme
"org/gnome/shell/extensions/user-theme" = {
name = "WallpaperShell";
};
};
};
};
}