2 Commits

Author SHA1 Message Date
finn.markwitz f5f8e88966 Merge pull request 'revert(mibook): remove boot-time terminal/desktop choice feature' (#7) from revert/mibook-boot-choice into main
Reviewed-on: #7
2026-07-28 15:21:01 +02:00
finn.markwitz bf874d962a revert(mibook): remove boot-time terminal/desktop choice feature
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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S1wvPy5kbGp8pUQX61WBCY
2026-07-28 14:51:31 +02:00
3 changed files with 12 additions and 94 deletions
@@ -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.
-1
View File
@@ -6,7 +6,6 @@ in
{
my.profiles = {
kde-desktop.enable = true;
kde-desktop.startOnBoot = false;
zsh.enable = true;
apps = {
desktop_apps = true;
+2 -22
View File
@@ -11,19 +11,9 @@ 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 [
{
config = lib.mkIf cfg.enable {
services = {
displayManager.sddm.enable = true;
displayManager.sddm.wayland.enable = true;
@@ -33,15 +23,5 @@ in
# 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")
];
})
]);
};
}