Skip to content

feat(desktop): switch from KDE Plasma to GNOME - #40

Merged
phorcys420 merged 3 commits into
mainfrom
gnome
Jun 30, 2026
Merged

phorcys420 merged 3 commits into
mainfrom
gnome

Conversation

@phorcys420

Copy link
Copy Markdown
Member

Summary

Switches the box's desktop environment from KDE Plasma 6 / SDDM to GNOME / GDM, across the shared config, both image flavours (appliance + installer ISOs), the VM/host overrides, and the docs.

Key finding: GNOME is Wayland-only here

The pinned nixpkgs (nixos-25.11) ships GNOME 49, whose gnome-session advertises providedSessions = [ "gnome" ] — the GNOME-on-Xorg session was removed upstream. There is therefore no X11 GNOME session to select, so the old defaultSession = "plasmax11" / sddm.wayland.enable = false X11 plumbing is dropped and the box runs GNOME on Wayland (GDM defaults to Wayland). services.xserver.enable is kept so XWayland remains available for legacy X11 clients.

Changes

  • configuration.nix — services.displayManager.sddm + desktopManager.plasma6 → displayManager.gdm + desktopManager.gnome.
  • Installer ISO (nixos/_images/installer/iso.nix) — full-screen autostart terminal Konsole → gnome-terminal (--full-screen --working-directory= -- <launcher>, OnlyShowIn=GNOME); KDE kscreenlockerrc lock-disable → GNOME programs.dconf defaults (disable screensaver lock + idle blanking + AC sleep) so the installer is never locked/blanked.
  • box-turnkey.nix / hosts/qemu-arm64/local.nix — kdePackages.kate → gnome-text-editor.
  • hosts/incus-vm/incus-vm.nix — headless override now disables gdm/gnome instead of sddm/plasma6.
  • nixos/screenconnect.nix — Xauthority discovery now finds the XWayland/GDM cookie (/run/user/*/.mutter-Xwaylandauth.*, then gdm/Xauthority, with the legacy /run/sddm/ path as final fallback). Documented that under Wayland XWayland reaches DISPLAY=:0 but cannot screen-capture the GNOME compositor — see the caveat below.
  • Docs — README.md, agents.md, host READMEs, appliance ISO comment, and install.sh comment updated to GNOME/GDM/Wayland.

⚠️ Known limitation — ScreenConnect remote view

ScreenConnect (opt-in per host) relied on the Xorg session. Under GNOME/Wayland its X11 agent still connects via XWayland but cannot mirror the Wayland compositor, so the remote screen may be blank. Capturing the GNOME session needs a Wayland-aware path (PipeWire/portal, e.g. gnome-remote-desktop). This is flagged in nixos/screenconnect.nix and the agents.md troubleshooting note; it is left as follow-up since ScreenConnect is not enabled by default.

Validation

  • nix eval of system.build.{toplevel,isoImage} for _appliance_iso, _installer-iso, coder-thinkcentre, and qemu-arm64 all evaluate cleanly (derivation paths produced). Full image builds are left to CI.

@phorcys420
phorcys420 marked this pull request as draft June 30, 2026 15:15
@phorcys420
phorcys420 marked this pull request as ready for review June 30, 2026 15:16
@phorcys420 phorcys420 linked an issue Jun 30, 2026 that may be closed by this pull request
@phorcys420
phorcys420 force-pushed the gnome branch 2 times, most recently from 8486cc9 to 0832c32 Compare June 30, 2026 17:19
Replace the KDE Plasma 6 / SDDM desktop with GNOME / GDM across the shared
config, image flavours (appliance + installer ISOs), and VM/host overrides.

Key points:
- configuration.nix: SDDM+Plasma6 -> GDM+GNOME. GNOME 49 (nixpkgs 25.11) is
  Wayland-only (gnome-session providedSessions = ["gnome"], no gnome-xorg), so
  the previous plasmax11 / sddm.wayland.enable=false X11 plumbing is dropped.
- installer ISO: Konsole -> GNOME Terminal full-screen autostart; KDE
  kscreenlockerrc -> GNOME dconf (disable screensaver lock + idle blanking).
- box-turnkey / qemu-arm64: kdePackages.kate -> gnome-text-editor.
- incus-vm: disable gdm/gnome instead of sddm/plasma6.
- screenconnect: discover XWayland/GDM xauth cookie (was SDDM-only); document
  that Wayland capture is limited (XWayland reaches DISPLAY=:0 but cannot mirror
  the compositor).
- Docs (README, agents.md, host READMEs) updated to GNOME/GDM/Wayland.
On first login GNOME shows the gnome-tour "Welcome to NixOS / Take the Tour"
dialog and drops you into the Activities overview (app/window grid). Skip both
on the appliance:

- environment.gnome.excludePackages = [ pkgs.gnome-tour ] removes the welcome
  tour (GNOME Shell auto-launches its .desktop file on first login; dropping the
  package is the only way to suppress it).
- Ship the no-overview Shell extension and enable it via programs.dconf
  (org/gnome/shell enabled-extensions), since GNOME has no gsetting to disable
  the startup overview. Lands the session on the bare desktop instead.
…n login

- Pin the GNOME dash favourites to match the old KDE Plasma 6 taskbar's
  default Icons-Only Task Manager launchers (System Settings, file manager,
  web browser): org.gnome.Settings, org.gnome.Nautilus, firefox. Set via the
  user dconf profile (org/gnome/shell favorite-apps), overriding GNOME's
  NixOS default favourites (Epiphany/Geary/Calendar/Music/Nautilus), which are
  mostly apps the box doesn't install.
- Autostart Firefox on http://127.0.0.1 (the local coder-redirect -> tunnel
  URL) at GNOME session start on the INSTALLED box. A small launcher polls
  :80 (which coder-redirect only binds after discovering the tunnel URL) for
  up to ~2 min before opening so the first paint is the dashboard, not a
  connection-refused page. Disabled in the installer ISO (no Coder stack).
@phorcys420
phorcys420 merged commit a0feac8 into main Jun 30, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore: shrink size of config

1 participant