Восстановление из `nixos-rebuild test` без перезагрузки
Есть ли способ вернуться к предыдущей (или хотя бы "текущей") конфигурации после nixos-rebuild test
без перезагрузки?
По nixos-rebuild
руководство:
test
Build and activate the new configuration, but do not
add it to the GRUB boot menu. Thus, if you reboot
the system (or if it crashes), you will
automatically revert to the default configuration
(i.e. the configuration resulting from the last call
to nixos-rebuild switch or nixos-rebuild boot).
Ясно, что перезагрузка должна вернуть меня к работающей системе, но, похоже, в этом нет необходимости.
--rollback
Вариант выглядит многообещающе:
--rollback
Instead of building a new configuration as specified
by /etc/nixos/configuration.nix, roll back to the
previous configuration. (The previous configuration
is defined as the one before the “current”
generation of the Nix profile /nix/var/nix/profiles/
system.)
За исключением того, что я хочу активировать "текущее" поколение, а не старшее поколение.
Например. Поколение 18 - это "текущее" поколение, которое немного устарело, но приемлемо. Поколение 17 старше. я использовал nixos-rebuild test --upgrade
который сломал Chrome, поэтому я хочу вернуться к 18 без перезагрузки. (Пока я не смогу решить проблемы с обновлением.)
Обновление: я пытался nixos-rebuild test --rollback
, но документация точна: она вернулась к 17, а не к 18.
2 ответа
# List previous generations
sudo nix-env --list-generations -p /nix/var/nix/profiles/system
# Live switch to any generation
sudo nix-env --switch-generation 12345 -p /nix/var/nix/profiles/system
sudo /nix/var/nix/profiles/system/bin/switch-to-configuration switch
Прочитав источник, я нашел это решение, которое, кажется, сработало, но на самом деле кажется хакером:
# /nix/var/nix/profiles/system-18-link/bin/switch-to-configuration test
activating the configuration...
setting up /etc...
setting up tmpfiles
reloading the following units: dbus.service
Есть ли более чистый способ?