{ config, pkgs, lib, ... }: let cfg = config.sconfig.gnome; in { options.sconfig.gnome = lib.mkEnableOption "Enable Gnome Desktop"; config = lib.mkIf cfg { services.xserver = { enable = true; libinput.enable = true; displayManager.gdm.enable = true; displayManager.gdm.autoSuspend = false; desktopManager.gnome.enable = true; displayManager.defaultSession = "gnome-xorg"; }; services.colord.enable = false; systemd.services.packagekit.enable = false; environment.systemPackages = with pkgs; [ gnome3.gnome-tweaks gnomeExtensions.appindicator gnomeExtensions.dash-to-dock gnomeExtensions.dash-to-panel gnomeExtensions.ddterm (runCommand "x-terminal-emulator" { } '' mkdir -p $out/bin ln -s ${gnome.gnome-terminal}/bin/gnome-terminal $out/bin/x-terminal-emulator '') (writeShellScriptBin "red" '' x="$(gsettings get org.gnome.settings-daemon.plugins.color night-light-enabled)" [ "$x" = "true" ] && x=false || x=true echo "Nightlight: $x" gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled $x '') ]; sconfig.user-settings = '' gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' gsettings set org.gnome.desktop.interface enable-hot-corners false gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark' gsettings set org.gnome.desktop.interface show-battery-percentage true gsettings set org.gnome.desktop.media-handling automount false gsettings set org.gnome.desktop.media-handling autorun-never true gsettings set org.gnome.desktop.notifications show-in-lock-screen false gsettings set org.gnome.desktop.privacy remove-old-temp-files true gsettings set org.gnome.desktop.privacy remove-old-trash-files true gsettings set org.gnome.desktop.search-providers disabled "['org.gnome.Epiphany.desktop']" gsettings set org.gnome.desktop.wm.keybindings maximize-vertically "['w']" gsettings set org.gnome.desktop.wm.keybindings switch-applications "['Tab']" gsettings set org.gnome.desktop.wm.keybindings switch-applications-backward "['Tab']" gsettings set org.gnome.desktop.wm.keybindings switch-windows "['Tab']" gsettings set org.gnome.desktop.wm.keybindings switch-windows-backward "['Tab']" gsettings set org.gnome.desktop.wm.keybindings toggle-fullscreen "['f']" gsettings set org.gnome.desktop.wm.preferences resize-with-right-button true gsettings set org.gnome.settings-daemon.plugins.media-keys logout '[]' gsettings set org.gnome.settings-daemon.plugins.media-keys www "['b']" gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding 'Return' gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command 'x-terminal-emulator' gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name 'Terminal' gsettings set org.gnome.settings-daemon.plugins.power power-button-action 'interactive' ''; # Moving from Terminal to Console messes up powerline glyphs and removes "Open in Remote Terminal" environment.gnome.excludePackages = [ pkgs.gnome-console ]; programs.gnome-terminal.enable = true; }; }