「fileSystems」で「config.users.users.default.home」を参照するときに無限再帰を防ぐ方法は?

「fileSystems」で「config.users.users.default.home」を参照するときに無限再帰を防ぐ方法は?

LUKS-with-LVMドライブがありますが、次のように手動でインストールしたいと思います。

  1. GNOMEにログイン
  2. ノーチラス開始
  3. そのドライブをクリックしてください。
  4. パスワード提出

/run/media/user/fooこれを行うには、デフォルトのマウント位置(tmpfsなので、起動するたびにディレクトリを作成するにはルートアクセスが必要です)を/home/user/foo次のようにユーザー制御の場所に変更する必要があります/etc/nixos/configuration.nix

fileSystems."${config.users.users.default.home}/foo" = {
  device = "/dev/mapper/luks-0179e7de-a468-4213-b932-ee2df135336d";
  options = [ "defaults" "noatime" "noauto" "user" ];
};

これにより、無限再帰に関するメッセージが生成されます。

$ sudo nixos-rebuild switch
building Nix...
building the system configuration...
error: infinite recursion encountered, at undefined position
(use '--show-trace' to show detailed location information)

ハードコーディングでこの問題を解決しましたfileSystems."/home/user/foo" = […]。しかし、ここでユーザーのホームディレクトリを参照するときに無限の再帰を防ぐことは可能ですか?

ベストアンサー1

はい、NixOS設定でユーザーホームディレクトリを参照するときに無限の繰り返しエラーを防ぐことができます。$config.users.users.default.home最上位属性を再参照する属性パスなので、属性に入れるとconfig循環依存関係が発生します。fileSystems

これを回避するには、略語を使用してユーザーのホームディレクトリを参照できます~。このショートカットは実行時にフルパスに拡張され、構成ファイルの循環依存関係を防ぎます。

以下はあなたに適した設定例です。

fileSystems."~user/foo" = {
  device = "/dev/mapper/luks-0179e7de-a468-4213-b932-ee2df135336d";
  options = [ "defaults" "noatime" "noauto" "user" ];
};

また、指定された設定では、user使用したいホームディレクトリを持つユーザーの実際のユーザー名に置き換える必要があります。はい、これがここでユーザーのホームディレクトリを参照するときに無限の再帰を回避する方法です。

おすすめ記事