diff --git a/home/modules/gnome.nix b/home/modules/gnome.nix index 219a7c82..d578e0a9 100644 --- a/home/modules/gnome.nix +++ b/home/modules/gnome.nix @@ -9,12 +9,21 @@ in { options.modules.gnome = { enable = mkEnableOpt "Gnome Desktop"; + # TODO: Add option for dash-to-dock extensions = mkBoolOpt false "Enable Gnome shell-extensions"; # TODO: Add other themes, whitesur for example theme = { papirusIcons = mkBoolOpt false "Enable the Papirus icon theme"; numixCursor = mkBoolOpt false "Enable the Numix cursor theme"; + wallpaper = mkOption { + type = types.str; + default = "constructionsite"; + description = "What wallpaper to use"; + }; + }; + + settings = { }; }; @@ -24,6 +33,10 @@ in { assertion = nixosConfig.services.xserver.desktopManager.gnome.enable; message = "Can't enable Gnome module when Gnome is not enabled!"; } + { + assertion = nixosConfig.programs.dconf.enable; + message = "Can't enable Gnome module when programs.dconf is not enabled!"; + } ]; gtk = mkMerge [ @@ -47,20 +60,20 @@ in { }) ]; - # TODO: GSettings overrides (home-manager dconf.settings) - home.packages = with pkgs; builtins.concatLists [ [ # gnome.gnome-session # Allow to start gnome from tty (sadly this is not usable, many things don't work) gnome.gnome-boxes # VM - gnome.sushi # Gnome files previews + # gnome.sushi # Gnome files previews (use service, has to be added to dbus packages) gnome.gnome-logs # systemd log viewer gnome.gnome-tweaks # conflicts with nixos/hm gnome settings file sometimes, watch out what settings to change gnome.gnome-nettool gnome.simple-scan gnome.gnome-sound-recorder gnome.file-roller # archive manager - gnome.dconf-editor + # gnome.dconf-editor + dconf-editor-wrapped # Sets XDG_DATA_DIRS to include all gsettings-schemas + gsettings-desktop-schemas # gnome-usage # Alternative system performance monitor (gnome.gnome-system-monitor is the preinstalled one) # gnome-secrets # Alternative keepass database viewer gnome-firmware @@ -68,28 +81,280 @@ in { (optionals cfg.extensions [ gnomeExtensions.appindicator - gnomeExtensions.blur-my-shell - gnomeExtensions.sound-output-device-chooser - gnomeExtensions.vitals - gnomeExtensions.no-overview - # gnomeExtensions.switch-workspace - gnomeExtensions.maximize-to-empty-workspace - gnomeExtensions.pip-on-top - gnomeExtensions.custom-hot-corners-extended - # gnomeExtensions.dock-from-dash - gnomeExtensions.gamemode - # gnomeExtensions.gsconnect # kde connect alternative - # gnomeExtensions.quake-mode # dropdown for any application - # gnomeExtensions.systemd-manager # to quickly start nextcloud - gnomeExtensions.extensions-sync - gnomeExtensions.tweaks-in-system-menu - # gnomeExtensions.compiz-windows-effect # WobBlY wiNdoWS - gnomeExtensions.panel-scroll - gnomeExtensions.rounded-window-corners - # gnomeExtensions.easyeffects-preset-selector # Throws error com.sth could not be found, dbus problem? - gnomeExtensions.launch-new-instance gnomeExtensions.auto-activities + gnomeExtensions.blur-my-shell + gnomeExtensions.custom-hot-corners-extended + gnomeExtensions.extensions-sync + gnomeExtensions.gamemode + gnomeExtensions.launch-new-instance + gnomeExtensions.maximize-to-empty-workspace + gnomeExtensions.no-overview + gnomeExtensions.pip-on-top + gnomeExtensions.rounded-window-corners + gnomeExtensions.sound-output-device-chooser + gnomeExtensions.tweaks-in-system-menu + gnomeExtensions.vitals ]) ]; + + # TODO: Check what gnome-tweaks sets + dconf.settings = with lib.hm.gvariant; { + # TODO: Connect with audio.easyeffects settings + "com/github/wwmm/easyeffects" = { + process-all-inputs = true; + process-all-outputs = true; + shutdown-on-window-close = false; + }; + + "com/github/wwmm/easyeffects/spectrum" = { + show = false; + }; + + "org/gnome/boxes" = { + view = "list-view"; + }; + + "org/gnome/calculator" = { + accuracy = 2; + angle-units = "radians"; + base = 10; + button-mode = "programming"; + number-format = "scientific"; + show-thousands = true; + show-zeroes = false; + word-size = 64; + }; + + "org/gnome/desktop/background" = { + color-shading-type = "solid"; + picture-options = "zoom"; + picture-uri = "file://${config.home.homeDirectory}/NixFlake/config/wallpaper/${cfg.theme.wallpaper}.jpg"; + picture-uri-dark = "file://${config.home.homeDirectory}/NixFlake/config/wallpaper/${cfg.theme.wallpaper}.jpg"; + }; + + "org/gnome/desktop/calendar" = { + show-weekdate = true; + }; + + "org/gnome/desktop/datetime" = { + automatic-timezone = true; + }; + + "org/gnome/desktop/file-sharing" = { + require-password = "never"; + }; + + "org/gnome/desktop/interface" = { + clock-format = "24h"; + clock-show-date = true; + clock-show-seconds = false; + clock-show-weekday = true; + # cursor-size, cursor-theme set by home-manager + document-font-name = "Source Han Sans 11"; + enable-hot-corners = false; # TODO: Make dependent on if extended hot corners extension is installed + font-antialiasing = "rgba"; + font-hinting = "slight"; + font-name = "Source Han Sans 11"; + # gtk-theme, icon-theme set by home-manager + monospace-font-name = "VictorMono Nerd Font Mono Semi-Bold 10"; + }; + + "org/gnome/desktop/peripherals/touchpad" = { + middle-click-emulation = true; + # TODO: Check natural-scroll (I can't remember which is which) + two-finger-scrolling-enabled = true; + }; + + "org/gnome/desktop/privacy" = { + old-files-age = 7; + recent-files-max-age = 7; + remove-old-temp-files = true; + remove-old-trash-files = true; + report-technical-problems = false; + send-software-usage-stats = false; + }; + + "org/gnome/desktop/screensaver" = { + color-shading-type = "solid"; + picture-options = "zoom"; + picture-uri = "file://${config.home.homeDirectory}/NixFlake/config/wallpaper/${cfg.theme.wallpaper}.jpg"; + }; + + # TODO: "org/gnome/desktop/wm/keybindings" = {}; + + "org/gnome/desktop/wm/preferences" = { + action-middle-click-titlebar = "toggle-shade"; + button-layout = "appmenu:minimize,maximize,close"; + focus-mode = "click"; + mouse-button-modifier = ""; + resize-with-right-button = true; + # theme set by home-manager + titlebar-font = "Source Han Sans Bold 11"; + }; + + # TODO: Revisit after Gnome 43 update + "org/gnome/epiphany" = { + ask-for-default = false; + default-search-engine = "Google"; + homepage-url = "about:newtab"; + use-google-search-suggestions = true; + }; + + "org/gnome/epiphany/web" = { + remember-passwords = false; + }; + + "org/gnome/mutter" = { + attach-modal-dialogs = true; + dynamic-workspaces = true; + edge-tiling = true; + experimental-features = [ + "autoclose-xwayland" + "rt-scheduler" + "scale-monitor-framebuffer" + ]; + }; + + "org/gnome/nautilus/icon-view" = { + captions = [ "size" "date_modified" "none" ]; + default-zoom-level = "larger"; + }; + + "org/gnome/nautilus/list-view" = { + use-tree-view = true; + }; + + "org/gnome/nautilus/preferences" = { + always-use-locateion-entry = true; + click-policy = "double"; + default-folder-viewer = "list-view"; + search-view = "list-view"; + show-create-link = true; + show-delete-permanently = true; + }; + + "org/gnome/settings-daemon/plugins/color" = { + night-light-enabled = true; + night-light-temperature = 4700; + }; + + "org/gnome/settings-daemon/plugins/power" = { + power-button-action = "interactive"; + sleep-inactive-ac-type = "nothing"; + }; + + "org/gnome/shell" = { + always-show-log-out = true; + disable-user-extensions = false; + disabled-extensions = [ + "native-window-placement@gnome-shell-extensions.gcampax.github.com" + "auto-move-windows@gnome-shell-extensions.gcampax.github.com" + "places-menu@gnome-shell-extensions.gcampax.github.com" + "apps-menu@gnome-shell-extensions.gcampax.github.com" + "drive-menu@gnome-shell-extensions.gcampax.github.com" + "user-theme@gnome-shell-extensions.gcampax.github.com" + ]; + enabled-extensions = with pkgs; builtins.concatLists [ + [ + "workspace-indicator@gnome-shell-extensions.gcampax.github.com" + ] + + (optionals cfg.extensions [ + gnomeExtensions.appindicator.extensionUuid + gnomeExtensions.auto-activities.extensionUuid + gnomeExtensions.blur-my-shell.extensionUuid + gnomeExtensions.custom-hot-corners-extended.extensionUuid + gnomeExtensions.extensions-sync.extensionUuid + gnomeExtensions.gamemode.extensionUuid + gnomeExtensions.launch-new-instance.extensionUuid + gnomeExtensions.maximize-to-empty-workspace.extensionUuid + gnomeExtensions.no-overview.extensionUuid + gnomeExtensions.pip-on-top.extensionUuid + gnomeExtensions.rounded-window-corners.extensionUuid + gnomeExtensions.sound-output-device-chooser.extensionUuid + gnomeExtensions.tweaks-in-system-menu.extensionUuid + gnomeExtensions.vitals.extensionUuid + ]) + ]; + }; + + "org/gnome/shell/app-switcher" = { + current-workspace-only = true; + }; + + "org/gnome/shell/extensions/blur-my-shell" = { + brightness = 0.5; + noise-amount = 0; + sigma = 15; + }; + + "org/gnome/shell/extensions/blur-my-shell/dash-to-dock" = { + blur = true; + }; + + "org/gnome/shell/extensions/blur-my-shell/panel" = { + blur = true; + customize = false; + unblur-dynamically = true; + }; + + "org/gnome/shell/extensions/custom-hot-corners-extended/monitor-0-top-left-0" = { + action = "toggle-overview"; + }; + + "org/gnome/shell/extensions/extension-sync" = { + github-gist-id = "e6054442efa04732fe9998cb1b8fb53c"; + }; + + "org/gnome/shell/extensions/vitals" = { + fixed-widths = true; + hide-icons = false; + hide-zeros = false; + hot-sensors = [ "__network-rx_max__" ]; + position-in-panel = 2; + show-battery = false; + show-fan = false; + show-storage = false; + show-voltage = false; + use-higher-precision = false; + }; + + # TODO: "org/gnome/shell/keybindings" = {}; + + # NOTE: Some duplicates from mutter + "org/gnome/shell/overrides" = { + attach-modal-dialogs = true; + dynamic-workspaces = true; + edge-tiling = true; + }; + + "org/gnome/software" = { + allow-updates = true; + download-updates = false; + download-updates-notify = true; + }; + + "org/gnome/system/location" = { + enabled = true; + }; + + "org/gnome/TextEditor" = { + auto-indent = true; + custom-font = "Victor Mono Semi-Bold 11"; + highlight-current-line = true; + indent-style = "space"; + show-gird = false; + show-line-numbers = true; + show-map = true; + show-right-margin = false; + tab-width = 4; + use-system-font = false; + wrap-text = false; + }; + + "system/proxy" = { + mode = "none"; + }; + }; }; }