NixOS で 以前のシステムに戻す方法

コンフィグレーションファイル

/etc/nixos/configuration.nix

をかえたりした後

sudo nixos-rebuild --update

などとしてシステムを更新したら
再起動後 うまく動かなくなった
そのやうなときに 前のシステムに戻す必要がある

これについて 前より少し分かるやうになったので 書きとめておく

ブートローダーで
All Configuration みたいな項目から 以前の設定を持ったシステムを選択する

無事に起動できたらターミナルで 次のやうに入力する

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

これで出てくるリストが ブートローダーで表示されてゐた Configurationのリストと一致してゐる
おそらく 問題のある設定(一番最後だと思う)には (Current) と表示されてゐるはずだ
この状態だと 再起動したときに また問題のある設定をもったシステムが起動されてしまふ

そこで 現在の設定(ちゃんと操作ができるシステム) を デフォルトの設定へと切り換える
さきほどのリストには 左端に番号がついてゐるので ちゃんと操作ができる設定の番号を確認する(例として これが33番だとする)

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

これで まう一度

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

とすると (Current) の表示が 33番のところに切りかわってゐる
「Current」が取れたシステム設定は 次のやうに消すことができる (ここでは34番だとしやう)

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

そして 最後に 變更した設定を システムに反映させ grub を更新する

sudo nixos-rebuild switch

これをやらないと nix-env で設定を變えても また以前の設定で起動されてしまふ
これで再起動すれば OKだ

ちなみに

--profile /nix/var/nix/profiles/system

の部分を

--profile /nix/var/nix/profiles/per-user/root/channels

にしても同様の処理ができる(と思ふ)

--追記:
通常システム設定を變更するのに configuration.nix を書きかえた後
sudo nixos-rebuild switch --upgrade としてシステムをアップデートする
このとき私の場合 アップデート後に動作不良となってしまった(画面が映らない・キーボード・マウス反応せず)
これで前のシステムに戻す必要が生じた
おそらく 自分の使ってゐる 古いビデオカード(nvidia GeForce GTS 450) が nixOS では legacy 390 といふドライバに對應するみたいなのだが それがアップデートされたせいで生じた不具合だと思ってゐる
それだけアップデートされないやうにする方法があると思ふので 今後模索してみる