From bf874d962a7ac478850438d63e9d0d572b6193bf Mon Sep 17 00:00:00 2001 From: "Finn@MiBook" Date: Tue, 28 Jul 2026 14:51:31 +0200 Subject: [PATCH] revert(mibook): remove boot-time terminal/desktop choice feature MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Back out the entire "choose terminal-only vs KDE at boot" work. The first attempt (default multi-user.target + on-demand desktop) locked mibook out — it is WiFi-only with credentials in KWallet, so a headless boot has no network and no SSH. The follow-up specialisation redesign is no longer wanted either. mibook returns to plain always-KDE boot (the pre-feature baseline): - machines/mibook/configuration.nix: drop specialisation.terminal and the NetworkManager-wait-online override. - machines/mibook/environments.nix: drop kde-desktop.startOnBoot. - modules/environments/kde-desktop/default.nix: drop the startOnBoot option. - remove the boot-desktop-choice design spec. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01S1wvPy5kbGp8pUQX61WBCY --- ...07-27-mibook-boot-desktop-choice-design.md | 61 ------------------- machines/mibook/environments.nix | 1 - modules/environments/kde-desktop/default.nix | 44 ++++--------- 3 files changed, 12 insertions(+), 94 deletions(-) delete mode 100644 docs/superpowers/specs/2026-07-27-mibook-boot-desktop-choice-design.md diff --git a/docs/superpowers/specs/2026-07-27-mibook-boot-desktop-choice-design.md b/docs/superpowers/specs/2026-07-27-mibook-boot-desktop-choice-design.md deleted file mode 100644 index d12d7fb..0000000 --- a/docs/superpowers/specs/2026-07-27-mibook-boot-desktop-choice-design.md +++ /dev/null @@ -1,61 +0,0 @@ -# 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. diff --git a/machines/mibook/environments.nix b/machines/mibook/environments.nix index 51108b8..8581e93 100644 --- a/machines/mibook/environments.nix +++ b/machines/mibook/environments.nix @@ -6,7 +6,6 @@ in { my.profiles = { kde-desktop.enable = true; - kde-desktop.startOnBoot = false; zsh.enable = true; apps = { desktop_apps = true; diff --git a/modules/environments/kde-desktop/default.nix b/modules/environments/kde-desktop/default.nix index 1598ad7..ee7b9db 100644 --- a/modules/environments/kde-desktop/default.nix +++ b/modules/environments/kde-desktop/default.nix @@ -11,37 +11,17 @@ in { options.my.profiles.kde-desktop = with lib; { enable = mkEnableOption "KDE Desktop Environment"; - startOnBoot = mkOption { - type = types.bool; - default = true; - description = '' - Whether the display manager (SDDM) starts automatically at boot. - When false, the system boots to a text console and KDE can be - launched on demand with the `desktop` command. - ''; - }; }; - config = lib.mkIf cfg.enable (lib.mkMerge [ - { - services = { - displayManager.sddm.enable = true; - displayManager.sddm.wayland.enable = true; - desktopManager.plasma6.enable = true; - }; - users.users.finn.packages = with pkgs; [ - # Programms can be added here... - numix-icon-theme - ]; - } - (lib.mkIf (!cfg.startOnBoot) { - # Boot to a text console; SDDM stays installed but is not pulled in - # by any boot target. Launch KDE on demand with `desktop`. - systemd.services.display-manager.wantedBy = lib.mkForce [ ]; - systemd.defaultUnit = lib.mkForce "multi-user.target"; - environment.systemPackages = [ - (pkgs.writeShellScriptBin "desktop" "exec sudo systemctl start display-manager.service") - ]; - }) - ]); -} \ No newline at end of file + config = lib.mkIf cfg.enable { + services = { + displayManager.sddm.enable = true; + displayManager.sddm.wayland.enable = true; + desktopManager.plasma6.enable = true; + }; + users.users.finn.packages = with pkgs; [ + # Programms can be added here... + numix-icon-theme + ]; + }; +}