"fileSystems"에서 "config.users.users.default.home"을 참조할 때 무한 재귀를 방지하는 방법은 무엇입니까?

"fileSystems"에서 "config.users.users.default.home"을 참조할 때 무한 재귀를 방지하는 방법은 무엇입니까?

LUKS-with-LVM 드라이브가 있는데 다음과 같이 수동으로 설치하고 싶습니다.

  1. 그놈에 로그인하세요
  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사용하려는 홈 디렉토리를 가진 사용자의 실제 사용자 이름으로 대체되어야 합니다. 예, 이것이 여기서 사용자의 홈 디렉토리를 참조할 때 무한 재귀를 피하는 방법입니다.

관련 정보