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
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).
In diesem Beispiel ist das '42'. Ersetzen Sie '42' durch die für Sie passende Zahl.
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 (in diesem Beispiel 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
Änderungen anwenden
sudo nixos-rebuild boot
Rechner neu starten.