Repository navigation
feat(desktop): switch from KDE Plasma to GNOME - #40
Merged
Merged
Conversation
phorcys420
marked this pull request as draft
June 30, 2026 15:15
phorcys420
marked this pull request as ready for review
June 30, 2026 15:16
phorcys420
force-pushed
the
gnome
branch
2 times, most recently
from
June 30, 2026 17:19
8486cc9 to
0832c32
Compare
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).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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, whosegnome-sessionadvertisesprovidedSessions = [ "gnome" ]— the GNOME-on-Xorg session was removed upstream. There is therefore no X11 GNOME session to select, so the olddefaultSession = "plasmax11"/sddm.wayland.enable = falseX11 plumbing is dropped and the box runs GNOME on Wayland (GDM defaults to Wayland).services.xserver.enableis kept so XWayland remains available for legacy X11 clients.Changes
configuration.nix—services.displayManager.sddm+desktopManager.plasma6→displayManager.gdm+desktopManager.gnome.nixos/_images/installer/iso.nix) — full-screen autostart terminalKonsole→gnome-terminal(--full-screen --working-directory= -- <launcher>,OnlyShowIn=GNOME); KDEkscreenlockerrclock-disable → GNOMEprograms.dconfdefaults (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 disablesgdm/gnomeinstead ofsddm/plasma6.nixos/screenconnect.nix— Xauthority discovery now finds the XWayland/GDM cookie (/run/user/*/.mutter-Xwaylandauth.*, thengdm/Xauthority, with the legacy/run/sddm/path as final fallback). Documented that under Wayland XWayland reachesDISPLAY=:0but cannot screen-capture the GNOME compositor — see the caveat below.README.md,agents.md, host READMEs, appliance ISO comment, andinstall.shcomment updated to GNOME/GDM/Wayland.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 innixos/screenconnect.nixand theagents.mdtroubleshooting note; it is left as follow-up since ScreenConnect is not enabled by default.Validation
nix evalofsystem.build.{toplevel,isoImage}for_appliance_iso,_installer-iso,coder-thinkcentre, andqemu-arm64all evaluate cleanly (derivation paths produced). Full image builds are left to CI.