# mibook: choose terminal-only vs desktop at boot ## Goal Let mibook boot to a text console by default, with KDE fully installed and launchable on demand. The user decides after boot whether they need the graphical desktop, without rebuilding the system. ## Behavior - mibook boots to a text console (`multi-user.target`). SDDM and Plasma do **not** start automatically. - KDE (SDDM + Plasma 6) remains fully installed. - Running `desktop` in the terminal starts the SDDM display manager, which presents the graphical login screen; logging in there enters a Plasma 6 session. - No reverse command. To return to a text console, stop the display manager (`sudo systemctl stop display-manager`) or reboot. - Other machines that enable the `kde-desktop` profile are unaffected; their desktop still starts on boot. ## Implementation ### `modules/environments/kde-desktop/default.nix` Add an opt-out option to the existing profile: - New option `my.profiles.kde-desktop.startOnBoot`, a boolean defaulting to `true`. The default preserves the current behavior for every consumer. - The existing `config` block (SDDM, Plasma 6, user packages) stays enabled whenever the profile is enabled, regardless of `startOnBoot`. - When `startOnBoot = false`, additionally apply: - `systemd.services.display-manager.wantedBy = lib.mkForce [ ];` so SDDM is defined but not pulled in by any boot target. - `systemd.defaultUnit = "multi-user.target";` so the boot target is the text console. - A `desktop` command provided via `pkgs.writeShellScriptBin "desktop" "exec sudo systemctl start display-manager.service"`, added to `environment.systemPackages`. ### `machines/mibook/environments.nix` Set `kde-desktop.startOnBoot = false;` alongside the existing `kde-desktop.enable = true;`. ## Testing / verification - `nix build '.#nixosConfigurations.mibook.config.system.build.toplevel'` builds without error. - After `nixos-rebuild switch` on mibook: system boots to a TTY, no SDDM; running `desktop` brings up the SDDM login and a working Plasma session. - Confirm jupiter (or any non-mibook consumer) is unchanged: its evaluated `systemd.defaultUnit` / display-manager wantedBy are not altered. ## Trade-offs - `desktop` relies on `sudo`; the user has sudo access, so no extra configuration is required. - Chose "boot to terminal, launch on demand" over a GRUB boot-menu entry because it is more robust across NixOS generations and needs no fragile static kernel entries.