NixOS - Current ändern

Situation

Im Bootmenü werden mehrere Versionen angezeigt, die gestartet werden können. Eine andere als die aktuell als 'current' markierte Version soll als 'current' markiert werden, das mit das System nach einem Reboot, diese Version startet.

Durchführung

1. Die gewünschte Generation ID finden

sudo nix-env --list-generations --profile /nix/var/nix/profiles/system

2. Die Generation dauerhaft aktivieren

sudo nix-env --profile /nix/var/nix/profiles/system --switch-generation 42

Suchen Sie in der Liste nach der Nummer (ID) des Systemzustands, den Sie beim Booten ausgewählt hatten (oft an der Generationen-Nummer oder dem Erstellungsdatum erkennbar).

sudo nix-env --profile /nix/var/nix/profiles/system --switch-generation 42

3. Den Bootloader aktualisieren (Speichern)

Damit diese Generation beim nächsten Neustart auch im Boot-Menü ganz oben steht und automatisch ausgewählt wird, müssen Sie das Boot-Menü neu schreiben lassen:

sudo /nix/var/nix/profiles/system/bin/switch-to-configuration boot

Nach diesem Befehl ist die ausgewählte Version fest als Standard (current) hinterlegt und übersteht jeden Neustart.

Um die alten Einträge (Generationen) aus der Boot-Liste zu löschen, müssen diese aus dem Nix-Speicher entfernen und den Bootloader aktualisieren.

In NixOS kann entweder gezielt eine bestimmte Generation gelöscht werden oder alle alten Generationen werden auf einmal aufgeräumt.

Option A: Nur eine ganz bestimmte Generation löschen

Wenn gezielt die alte Version (z. B. Generation Nummer 41) gelöscht werden soll, wird dieser Befehl genutzt:

sudo nix-env --profile /nix/var/nix/profiles/system --delete-generations 41

(Ersetzen Sie 41 mit der genauen Nummer des alten Eintrags, den Sie löschen wollen).

Option B: Alle alten Generationen auf einmal löschen (empfohlen)

Wenn Sie mit Ihrer aktuellen Version zufrieden sind und alle anderen, älteren Einträge aus dem Boot-Menü verschwinden sollen, bereinigen Sie das Profil mit:

sudo nix-env --profile /nix/var/nix/profiles/system --delete-generations old

Wichtig: Den Speicherplatz freigeben und Boot-Menü aufräumen

Das Löschen der Generationen entfernt die Einträge zunächst nur aus der System-Historie. Damit sie physisch von der Festplatte verschwinden und das Boot-Menü tatsächlich aktualisiert wird, müssen zwei abschließende Befehle ausgeführt werden:

1. Speicherplatz freigeben (Garbage Collection)

Dieser Befehl löscht die alten Systemdateien endgültig von der Festplatte:

sudo nix-store --gc
2. Bootloader aktualisieren

Damit die gelöschten Einträge auch wirklich aus dem sichtbaren Boot-Menü beim Hochfahren verschwinden, wird die Boot-Konfiguration neu geschrieben:

sudo nixos-rebuild boot