Files

170 lines
4.9 KiB
Nix

{ config
, pkgs
, lib
, ...
}:
{
dconf.settings = {
# Desktop interface settings
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
enable-hot-corners = false;
clock-show-weekday = true;
show-battery-percentage = true;
icon-theme = "Papirus-Dark";
cursor-theme = "Bibata-Modern-Classic";
};
"org/gnome/desktop/input-sources" = {
sources = [
(lib.gvariant.mkTuple [
"xkb"
"gb"
])
];
xkb-options = [ "terminate:ctrl_alt_bksp" ];
};
# Window manager preferences
"org/gnome/desktop/wm/preferences" = {
button-layout = "appmenu:minimize,maximize,close";
num-workspaces = 4;
};
# Keybindings
"org/gnome/desktop/wm/keybindings" = {
close = [ "<Super>q" ];
switch-to-workspace-1 = [ "<Super>1" ];
switch-to-workspace-2 = [ "<Super>2" ];
switch-to-workspace-3 = [ "<Super>3" ];
switch-to-workspace-4 = [ "<Super>4" ];
move-to-workspace-1 = [ "<Super><Shift>1" ];
move-to-workspace-2 = [ "<Super><Shift>2" ];
move-to-workspace-3 = [ "<Super><Shift>3" ];
move-to-workspace-4 = [ "<Super><Shift>4" ];
};
# Shell settings
"org/gnome/shell" = {
favorite-apps = [
"firefox.desktop"
"kitty.desktop"
"org.gnome.Nautilus.desktop"
"thunderbird.desktop"
"chromium-browser.desktop"
];
enabled-extensions = [
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
];
};
# Mutter (window manager) settings
"org/gnome/mutter" = {
dynamic-workspaces = false;
edge-tiling = true;
workspaces-only-on-primary = true;
};
# File manager (Nautilus) settings
"org/gnome/nautilus/preferences" = {
default-folder-viewer = "list-view";
search-filter-time-type = "last_modified";
show-hidden-files = true;
};
# Power settings
"org/gnome/settings-daemon/plugins/power" = {
sleep-inactive-ac-type = "nothing";
sleep-inactive-battery-timeout = 1800;
};
# Privacy settings
"org/gnome/desktop/privacy" = {
remember-recent-files = true;
remove-old-temp-files = true;
remove-old-trash-files = true;
};
# Session settings
"org/gnome/desktop/session" = {
idle-delay = lib.gvariant.mkUint32 900; # 15 minutes
};
# Screensaver settings
"org/gnome/desktop/screensaver" = {
lock-enabled = true;
lock-delay = lib.gvariant.mkUint32 0;
};
# Caffeine extension settings
"org/gnome/shell/extensions/caffeine" = {
enable-fullscreen = true;
restore-state = true;
show-indicator = "always";
show-notifications = false;
};
};
# GNOME-specific packages
home.packages = with pkgs; [
gnome-tweaks
gnomeExtensions.appindicator
gnomeExtensions.user-themes
gnomeExtensions.caffeine
gnomeExtensions.gsconnect
dconf-editor
catppuccin-gtk
papirus-icon-theme
bibata-cursors
];
# GTK theme configuration
gtk = {
enable = true;
gtk4.theme = config.gtk.theme;
theme = {
name = "catppuccin-frappe-blue-standard";
package = pkgs.catppuccin-gtk;
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
cursorTheme = {
name = "Bibata-Modern-Classic";
package = pkgs.bibata-cursors;
};
};
# Home Manager cursor configuration
home.pointerCursor = {
enable = true;
name = "Bibata-Modern-Classic";
package = pkgs.bibata-cursors;
gtk.enable = true;
x11.enable = true;
};
home.file."Pictures/wallpapers/tokyo-night.png".source = ../../assets/wallpapers/tokyo-night.png;
# Set initial default wallpaper on first install if user hasn't configured a custom wallpaper yet.
# If the user changes their wallpaper via GNOME Settings, dconf read detects it and leaves it untouched across reboots/updates.
home.activation.setInitialWallpaper = lib.hm.dag.entryAfter [ "dconf" ] ''
WALLPAPER="${config.home.homeDirectory}/Pictures/wallpapers/tokyo-night.png"
VAL="$(${pkgs.dconf}/bin/dconf read /org/gnome/desktop/background/picture-uri 2>/dev/null || true)"
if [ -z "$VAL" ]; then
$DRY_RUN_CMD ${pkgs.dconf}/bin/dconf write /org/gnome/desktop/background/picture-uri "'file://$WALLPAPER'"
$DRY_RUN_CMD ${pkgs.dconf}/bin/dconf write /org/gnome/desktop/background/picture-uri-dark "'file://$WALLPAPER'"
$DRY_RUN_CMD ${pkgs.dconf}/bin/dconf write /org/gnome/desktop/background/picture-options "'zoom'"
$DRY_RUN_CMD ${pkgs.dconf}/bin/dconf write /org/gnome/desktop/screensaver/picture-uri "'file://$WALLPAPER'"
$DRY_RUN_CMD ${pkgs.dconf}/bin/dconf write /org/gnome/desktop/screensaver/picture-options "'zoom'"
fi
'';
}