#+title: GNOME #+setupfile: ../headers * GNOME GNOME is my desktop environment of choice on the hosts that don’t run a bare Wayland compositor like Hyprland or Sway on their own. I keep it around in case I break my config in either compositor. Here’s the skeleton of the =nixos.gnome= module. #+begin_src nix :tangle yes {config, ...}: let m = config.flake.modules.nixos; in { flake.modules.nixos.gnome = {...}: { imports = [m.xserver]; <> <> }; } #+end_src GNOME still needs the keyboard layout and video driver settings from [[file:xserver.org][xserver]], so this module pulls that one in directly rather than making every host import both. ** Login and Session GDM is GNOME’s own display manager, paired here with the GNOME session itself. #+name: display-manager #+begin_src nix config.services.displayManager.gdm.enable = true; config.services.desktopManager.gnome.enable = true; #+end_src ** Extra GNOME Services =gnome-browser-connector= lets browser extensions talk to the GNOME Shell’s own extension, =gnome-remote-desktop= gives me built-in RDP support, =gnome-online-accounts= handles signing into things like Nextcloud from GNOME’s own settings, and =sushi= is the quick file previewer Nautilus uses. =games= I turn off explicitly, since I have no use for GNOME’s bundled casual games. #+name: gnome-extras #+begin_src nix config.services.gnome = { gnome-browser-connector.enable = true; games.enable = false; gnome-remote-desktop.enable = true; gnome-online-accounts.enable = true; sushi.enable = true; }; #+end_src