{ inputs, ... }: { flake.modules.nixos.gnome = {pkgs, ... }: { services = { desktopManager.gnome.enable = true; displayManager.gdm = { enable = true; wayland = true; banner = "Welcome to John's NixOS implementation"; }; udev.packages = [ pkgs.gnome-settings-daemon # For gnome systray icons ]; }; }; flake.modules.homeManager.gnome = { config, pkgs, ... }: let # `gnome-extensions list` for a list extensions = with pkgs.gnomeExtensions; [ appindicator # For gnome systray icons dash-to-panel gtile space-bar switcher tactile vitals ]; enabledExtensions = map (ext: ext.extensionUuid) extensions; in { gtk = { enable = true; theme = { name = "Orchis-Dark"; package = pkgs.orchis-theme; }; gtk4.theme = config.gtk.theme; }; home.packages = [ pkgs.gnome-tweaks ] ++ extensions; dconf.settings = { "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; }; "org/gnome/shell" = { disable-user-extensions = false; enabled-extensions = enabledExtensions; }; "org/gnome/desktop/wm/preferences" = { button-layout = ":minimize,close"; }; "org/gnome/desktop/wm/keybindings" = { "switch-to-workspace-1" = ["1"]; "switch-to-workspace-2" = ["2"]; "switch-to-workspace-3" = ["3"]; "switch-to-workspace-4" = ["4"]; "move-to-workspace-1" = ["1"]; "move-to-workspace-2" = ["2"]; "move-to-workspace-3" = ["3"]; "move-to-workspace-4" = ["4"]; }; "org/gnome/settings-daemon/plugins/media-keys" = { custom-keybindings = [ "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/edit-nix/" "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch-browser/" "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/ad-dev/" "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/shutdown/" ]; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/edit-nix" = { binding = "n"; command = "code /etc/nixos"; name = "Edit Nix config"; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch-browser" = { binding = "b"; command = "brave"; name = "Launch Brave browser"; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/ad-dev" = { binding = "d"; command = ''code --file-uri "vscode-remote://ssh-remote+ad-nix/etc/nixos/ad-nix.code-workspace"''; name = "Launch AppDaemon Development over Tailscale"; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/ws1" = { binding = "1"; command = "wmctrl -s 0"; name = "Switch to workspace 1"; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/shutdown" = { binding = "p"; command = "gnome-session-quit --power-off --force"; name = "Shutdown immediately"; }; }; }; }